From c3d78730d173deef3145f9a2730e2a2a9d2baeae Mon Sep 17 00:00:00 2001 From: Antoine Pilote Date: Sat, 12 Jun 2021 15:17:44 -0400 Subject: [PATCH] removed glfw --- Nuake/dependencies/GLFW/lib-vc2019/glfw3.dll | Bin 226304 -> 0 bytes Nuake/dependencies/GLFW/lib-vc2019/glfw3.lib | Bin 650328 -> 0 bytes .../dependencies/GLFW/lib-vc2019/glfw3_mt.lib | Bin 649750 -> 0 bytes .../dependencies/GLFW/lib-vc2019/glfw3dll.lib | Bin 30306 -> 0 bytes .../GLFW/x64/include/GLFW/glfw3.h | 5874 ----------------- .../GLFW/x64/include/GLFW/glfw3native.h | 525 -- .../GLFW/x64/lib-vc2019/glfw3.dll | Bin 225792 -> 0 bytes .../GLFW/x64/lib-vc2019/glfw3.lib | Bin 648436 -> 0 bytes .../GLFW/x64/lib-vc2019/glfw3dll.lib | Bin 30306 -> 0 bytes .../GLFW/x86/include/GLFW/glfw3.h | 5637 ---------------- .../GLFW/x86/include/GLFW/glfw3native.h | 525 -- .../GLFW/x86/include/GLFW/x64/glfw3.h | 5874 ----------------- .../GLFW/x86/include/GLFW/x64/glfw3native.h | 525 -- .../GLFW/x86/lib-vc2019/glfw3.lib | Bin 512338 -> 0 bytes 14 files changed, 18960 deletions(-) delete mode 100644 Nuake/dependencies/GLFW/lib-vc2019/glfw3.dll delete mode 100644 Nuake/dependencies/GLFW/lib-vc2019/glfw3.lib delete mode 100644 Nuake/dependencies/GLFW/lib-vc2019/glfw3_mt.lib delete mode 100644 Nuake/dependencies/GLFW/lib-vc2019/glfw3dll.lib delete mode 100644 Nuake/dependencies/GLFW/x64/include/GLFW/glfw3.h delete mode 100644 Nuake/dependencies/GLFW/x64/include/GLFW/glfw3native.h delete mode 100644 Nuake/dependencies/GLFW/x64/lib-vc2019/glfw3.dll delete mode 100644 Nuake/dependencies/GLFW/x64/lib-vc2019/glfw3.lib delete mode 100644 Nuake/dependencies/GLFW/x64/lib-vc2019/glfw3dll.lib delete mode 100644 Nuake/dependencies/GLFW/x86/include/GLFW/glfw3.h delete mode 100644 Nuake/dependencies/GLFW/x86/include/GLFW/glfw3native.h delete mode 100644 Nuake/dependencies/GLFW/x86/include/GLFW/x64/glfw3.h delete mode 100644 Nuake/dependencies/GLFW/x86/include/GLFW/x64/glfw3native.h delete mode 100644 Nuake/dependencies/GLFW/x86/lib-vc2019/glfw3.lib diff --git a/Nuake/dependencies/GLFW/lib-vc2019/glfw3.dll b/Nuake/dependencies/GLFW/lib-vc2019/glfw3.dll deleted file mode 100644 index 0359bb4f39246e5d496f0451e1a911986de9b766..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 226304 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ⅇx=*6xP#eRZfMJJ4)d}edU zC;$Mvfevk(R2XGxWh1p2tT6KLAuW;>%}WzpFSr-h7x|zoLO-Fb*aS6Ca?#w;FnQmk zm01CVoQRGnZv*r)N=IZNE_x#()>BEm*dE6Vil;h@=8y57>?|6$^xI%X$7oxj@($vL zY-fi}Dt2r%&9w8=aP1*}v%jn!Ef;J8`37q##S6KyNB>NJ6@n9`KD5T8Mq zM0wr{i4;gLTnpyYp9X*VLm0FzVl{y0@a)15KXxw(v%O8j;8DxrkXN^ znj-xFiKftU?hf2@J<0%dKSX}>icSouKz-=FoG5{*7s6w?c-)J}>EaQ`;7rxxaW}5{ z`Urn}_!0x(0-PO&Gh`ofxIz_X=iYMdL^AHGD%U$9APZ7q@pQ43n$!3{SBhIzIO-1ER6#&xk@T8K+AWfXa?(X2X`4v;qe$9^ zH`q~&qz6ROb0X<=P8uhYZW2j5Mba)#8YYt3MA9=N>2Xf_=Xi$39FeqHB>kL|UJyye zBI!|)bUP=l6-lRvq+f`n4oUtSb15A(~D;^o);LZ%(4-~oPlP`vz@U+$w9(i_}~2Ur@zhqdV+H&DZI%_#0= zKqk<$kx9y>GZYtDHwOoWB;QB)3T{jy92=}_<<7kI>j5z-LFbahlMiVc@KjD?WV^;*k1~ssrDe!`U86Gk1KB(So;W*O?kTiZiT1hR2ZMQ^%T9M24qThWGKHxgJA?P4HUjSaY&S|Ak6_ zj?*_GeH$uBb*vdDGTfjt{Dw1ZLx%0hkmgu(n#j#Xtiy?gdwY zo3j2G`sQFtrjzr+A;l24<}NA6HDP2O^jn}h+k!lRhYBd@=YbKTiL{vZ)CdjPnoiqB zK0X&1@RVnQ_=(87T0n4CEbqH$C#};@G4#)^eOIuP&k@;6pSyx+%#-*<9!ijTz<6So ziae7z&#y!tO5i-Y-as`$|2|V!)SbfR?xu1evd0NULC9ogVRN|P;J6lDWuU6!5Z0W# zU}O045$07l;fw6T*7DW|pNF*@ue%?|yxl2J!Im*-y79ea+yxahHKoHDKE2EEmoj`q zhS{*brF5?hACqB*S;RNV@G%*_Aj1!2c=kwbC)p%6ATN&iPUbG;f%C|@vX8phGUZ1Mqf zbg6r?(n;uN+o)clPceBgU=e-FTSqdfBVrn-PkB0$27L+*G)Q;EX|<^DclCz)ZjUZw zIud#Yy^P4e!kB-4B!ArZr$y56ea6!0??>Q+Mad0)4&|uO0@P5tDN;-S&UJ*$qtOTe z$P>0ag?F$84}Yedr8_W`yvCuC(BS-OBrkLqA)7D`qgCRMcti2i!WK;w_v*#ZFc$v- z7bm4qaVz&5RsQUUx>6|8-eCGzWC&e`H20+4Ub1#E8>_;F+!$&xGeQ5`Wp&V~Oh+RG zmSFEoOMj4(!sAL1%l15UKgJ%K9k64sMI4DG;zqwpZI>N}Xn@PhE^TUtD`lz`e`E1C zrhOu>478v7)+n_I{sHq68kXPj`XV(fZf(u|4BZnx#CI!UH{9`ee9WOu9?1(LR$zEa zoje+$)1j4&C7JycWFR>=?N|;;w59hFs2?bFLnI-EKt@F|>pF%ZZWiQ3)?ASCgESYj z@)5Cam?%+YN9fYrY49eL>>J|n<5-UO4A``2WNTuB{tyi+8No`1h)x0uXx2%Dx1azF zfvB@*P-j_e-*W_ab~`cwLZpBrx2IGcVsL-p^W6pht6(EUrLy%>KNqD)eeFW8*HRZ9 z+RTyCz53J3X;AzGF`A(yzmCz%Hgj2$Uro=Gz!vbAP`;ok{{{>_JOPNeZ-}=l@wSA5 zfPap7yIQ=>6K|kul(qnYAf?)k>_MA!!(k@qc{s~7b!d?-!mzU-3UAK0-Ch%>Yzu-(*-$o&ni87Io<#q@f4udo#wcV#Htk{Yy~|P7#WG zUVSIppTp)obYyMAdCh@z0KtI#iV59^Y$dk*!9Q2vsvbf+cGgN(E>-Z0a1B%9Qvs=u z6uAtYmbfx(N0Yz)s>t22vEIPpmzp{a+gWmn5P&)c?U7imH%jju9>n_f`%BQN$ol!S zVLh*(S|knY7Y{-7`V|MSZ&B3=;8iN>88E!smg?}@3*JUx*1n+$fqw|##rOw0N(Z*h z9S;E4XfWZIALbpQmU{@n{Q~vC46+9T=Om3V&o_eXPbO)P;Mx04rUUm9_Sc~x-zn#= zqk7B_LZrG930#(nfc#N~&Hz^v;0ovrj$=(Ssn|4)$AIje+@PJHK*s=;el=Wy=9M(G z$xm(@z*&LzUHL7{6ngLa>+M*@Y5XfS2L!vP%C%=h>FAI^7dfaU)h-Pz^q(C5*Kun0 zNyok<-0bzNcN7+*w92}w)DL%8q&$oBO%V&ufMU9`ycH+T!BPqRy&~Dp=C7Wz>;vo?(4DAm#j|q7t@v##MR#; zsnZn13#}ia8b1fdWVycn(1L#K=ER-`Wz z=`EDL1?iopLR5-xB$ecbZ+JR%&k#Iygni!(y@4l^viybEMgum5y1AL&F)&SDM+MlM zQVQFDxDeU1mE7>L zW;&TE)wSu0N&|`JZVhh_n9`6C`UZN)kg@uUSAuaHw4EHpnm<4I@ZUd|eJ;5@v z>1y#|?-42w?#aVv$?uInoZ>6dzj$WU7rm#W$qw1%p}{%H7y(=NXq7i?Db`!wJ=p#V zrHadt7GnTQ$OSB|W)Xa*!LwqeqKm!Wqn$2O=m$ViT_lKI1bf4kQUKB;GDuix=b@fq?jcwSUQ2)AJgT@N)v6+CzwAa8iGsV*(84ecpC3-# z2@dS5wgl83{*;cUmOo4ee0Fg#nmkpIV&hy&L0^m9{(9Vq#NI2&C)&IUQmcXM#_&<( zBHk*o<2E&H%Hf_26bpCy!-JOoh6YbwBF%}jNzI3mBmA9>Mz7Dk@3rxFX5llFw)(to zzh?}-QaJ{8sGy^6%>@OaYb5weylI=9~Z0Pnmn3>x{_lfA#+)dp>LR9}l$^1e3 z9tb&feMHE=C+bsmX~@^H$w!5b3M~^aLqa}0biW-{K2(R8(53j1k&$_(eA&y%_AwDA z%(t%48W1#4iKF3W!FME+0k?*mIy=LbE5=ZNXJyR60$(L(VH1&JFYukG;x3eBIJI#l zus{i>yFq8ELtRfJE;RYyq+-I1-pW}4SlQ3D^1bUJJczk$e$2hQMUR{NNUMa+@AHfr* zO8h1>#KE#t$C5(-!4LDTSn4*fsk{)DuSKTc{q^&(Z?U^BJ%k4=q(7k`<*D|fDi>I< zxof}YjLs;Z^en6erjDqXw7GSd zHaRV2bH$`htsrb$GP_^H$x$pegejx_S7jt!Lr=qimxB=wVl*8i{C`<*csaBlptU~- zxD4-j1r7^WS*`*R6QERZY(Y%Y4KI6BJD&562o0hI^y$ziD5pA1I2JTLfNWd+=?b zy@oCShs zQNUHN*iMO{d{yoMA5o!(aHM0+9rRVE`zx-ecK#flb8Dgm7Up@7$*VwAN=Q#aI14{i zBf&y^1lN>EAt|Z^Tl9P33WT2B^wHlS1AVO|Z22`Ffqo+Z`m~@sCA5LpR<&;< zn8BNz&fi$w!4uXG#_$A-A3@L!&vxvu1&5}e;ce`#Y3@m{wRVY_O7l~U1J8Jry;+pK zKBnv~y_6lP%akx+g~!qRa4O1We+4&IINJ9%dp%8#_V>y>%|560oVM2v!|Bpw*YNG; z`yB1>H#U391F0FV;ZI>9NrmH5ti0GD8sUR$qV!j0K#eeN?>EEd;!W^@;LR+ahgNw{ zE?z{zai)hp{uI2C^~wx4i>(A&xA{k#+eSMzQzkSq4%pr}1Ev%3*gXVsqw%nYxI$;p z{mG=gOHZS=;_FV0xQ|rzZS%UT>YR8z*Dv-iNF zH2p!OmIO}t2?82bSjiIcwPAveWCvvSO+}`Ak%;AjSStNrc-(h@+u?Dy@-NM|@VGnp z_xt>N7yrJXe>Oc7TQ~v#&f0H==Z~VNCe|PZjL->6t+3-2}-H3b?dtaW&5S2de zIMiN3PLlz;f80=6LNw=+u6j@lT+XdWTSGGua|i?rDbu=6u7^Z|UNP)#<>Db&Oza15{z<3QFJ+GfOKND}^Ad;tw3 zSbZ7ZE5k=+_>2r+mEqem{8WY`FBIi7WH?cV6*BCQ`P9dcs}}ilWq6JZD`a?~4C`gs zD#Pn!c#910kzv!NqP~C36ye$O{WKYll;H=Li1a-&d`5=9mf?3~xJ-uiGOUu}Ao;x= z@;kqk;TSqQ0>*JX3}fWmqA@3uU-KhF8h(HW~h0 zhMQ#gj0|_n@J$(hB*U~h;=5yHc%}@`k>OO?z6<616SGDBW%B(N8S;fa0M7mL{SlR4 zhP!3>whaFx!!(JnN6RoEWVlj>UKw60!wMM|$Z)I-Q)L*M zCHnKK3}2ApV=_EZem6;mZ_9F1Rlnr>6B1wlB*S-Q__++n%KFZh;dB{ZD#IojE|%d9 zGQ3Zv%kL@tdqm>n1{rRb;d3&4RfZqPP?fvqBGF&L$nXXkE|;Nd|NSxV*6$}Rr)5}$wo{Y& zy(%VDZ$QIwlrHERpnOO;&HaZIs6GdUsI!}*&CY* z^_8q=#v)I1S%viqPiq_1GOqE=ag9_#O!}hMmWIYAPxKc=PfBGwWQI0tO{>S+(%iJf zTJLE9Csl84Xlb>^e8qlduC=DQ-da=Ja)n3KqkgBfv|d@$T0g$7W#J-pthTYK(YwUj z*w&9aZP9hcwBJ=7(?yl8;Mm$y>ud8id)nHp3tQ?V9gWN9Y4X&xd91ab1vOVRqH7Z7 zvWKqf@uihkbSCP(!thQn_&2|)%;PP`7|!>!UZLKry{(PS^Euts>}_3QUDVQu!E5y( z-h*)`IMlYbT;^$3^{a7fsA*4#w#)7&%XN_3ms(Bx}dz;CTBO;mJ# zQz;OuHL0|wxfxwuSaX@jTIXwRrOA6`qj!O|20?Ru%avB|f*P-NK~0;rxkbS$GQ-e& z`3cz`Szp_gHH)mZzJ>DP_t^b9LQc8hc?Rg zVeonOKvP-P$;R0Y&ADC&cAuFKVjs zg2FDGcs^rCTeci`6{zpoa&zS;iqxk#%r2bV=&f(DPIpz?ZPu#Rmh75|wK>_f6KieR zwKa8@;l-9+zX*ueJaK{T%sf0(!|1sX&)g(>$;FFr5k2K_gWG@%P4%AEiM0jd-P_2O z+4&9BYCZ_x#M(lBP0-Cq`3a)8ZL)$q@v7HQq=Ut-gC#G!&0EvzMcZ?-7f-Cs%U&|E z)}9zt3O>0udm#hF2p-$l@Db>eW6SLoKGjo7fj?!KdsQ{{iExOpCNii3Df$@qeh;ET zc7$p?YizcBYPmhvt`MI)qQ>(=PisqbbAj!Q_c17+g()U6emth4Lij9x2ELC+dTh^l zPDHvo!HA4@LdLwr$QafB!Umg%8k}Qjz0H>Gs9WeE_!=5aQ}F<%Xr5t;3W}pou>8KK zXn}ExN=l{IAZIW}J2FLc6;z67hUWG-L)CcN^Kvkx7|#NnbBg+x?P$OPG`|T8V^y`? zO6(|B)Fw}>j)S?9jtv+_^L>r=9w0^R2=@xDejv6a--@9146R(9pxF)3vh@h92>#dE za(HFQvF95wD0^~^*9!@v!DF4;vV_|}kSZYbpCBO>+hKtay-wB~)j+#WaPt%5xEjxb z+MGNwjQKoI)sSY_HqNj0G+P(7*%#H+V{P_$z?ENl;28gv9nGF`pU9dHuY!gN3?l=y zKo2Ij`Y@gqkRzJwXMux0aJ)Ctvo8$Wd!h}!VS5BV^@TZtpQ=@uB*N^;v!_gPRLrnW zt}d&}DX`^Ot342=+N=bpe8PIW;&X`79{>>*tc;q~F+{Ww_g! z_~a=RWTC*8Z=|QCAbOXzSRK=Bg|!4Dkk81%IA9w3CE-#}l#>@TZ3eoQyLAN}V_ z^deGnz&aL%9?R6i)sMbM_rJz&E1-Vo<~DGsU_kwEX`OF9?@YUOrf*>_bY{^E@qRNS z{hvr#;Ib%puj{oDNgyUMRwz)7SB#ngRyvw6%ho$tCQ$J|HJ>IFN&1|lVg$spojxcJ zCbulMo?l*m;PghV@`C(Em~cUVRsX<$_X#1%wCY79#0(HIvSob}7eGYyKCeO0mt1?T z)CfewW0sJQt@iPa&Ess;&1Dc0H5lbO7LOSEDwD~O^iLT_;}*Qx=N-9#`jVoUFApPW4re6iKr8VExQWBI=+ zq!fbI7$kP#LMYWid~e}* z%vwFGymXrNyhBbk^r2H)BVAM6nvAw z+^R8PW?cR^-1yHxdpj~6(O5g?z)4;a?8#cxu=>Q zxhK81y)sL^cTk_H;z9LS=|gSxcEgTIcA2BnRpoG6?bcbdXHK3GN0|=tOjY9fS82_Q z2AP5vwDn@;Q))Ij2N*vfkAM&)qc2~Wqv1W>hdGE zzuMcfNHKqLGkCxQo~XZH;xPBl7%KSW<>yGb!7v?c*)VE_f~$`C<7f@<7q(yUMX-N8 z!$`qLmmlmg`Wtu6!WwIJT}vwjhXlw!K%Io5{{KA;ax}5Pvx1l6|MFt@KixInHea*H zTG@D+&sx2pB}SEVU~=hyANUl!pl=rRwXndbA9Oc*Nt@xSZ)CHqQttv^(*j@Cp+hyH z3Dc>q)N(}_jaWrSfnqfJLyqI{BR_^JXS-Wk8?6b1syu5ZL{Qd-9!eb1``v%CqZjF0 zNFTU70ll%|U+?hA`@-Ne0HvUU5BR(TP~=EDqvnfFUkuOzKW@YyA#_!eka-9NkwZ9T zV*6VVhYvGmmJ`4F1=Nr#Na2^=>Ns>u^jBA1s;}?RB1q0J$Dkp~ zcF%NF<-+bQ0BOY@C_&D!Ph7+r;Rp{BM{ozc{i1U%tmo@_ zt3}aYr7y^_8@5+KPkfD28zBL};4y}kHS|EAC|NMP?A-z^-rzAtXK56Gdu}_StZKh* z&k)ORH5v>Wa&39ipdoGy^d1}xv&|TFM~@ny$dF6sst0li(~EfC!l>f!9Zqt3$HB`e z4P*U?gICpI4KRgYg?3>dSzr{830|-guW4#YG(!w_!Mdh&;4>snM$t(->jrt`d$40s z?XS(ZF`a@GW|-jF<&{;A(plEY6^_zr`kYWUKGH@<*Esh|nEP*H&=ZnJ1dNEWh0*Yl zd8C|P3{q6@3Zy+~ZXR|-qyA-=PoFxQRQE0+gjMq{4V}690yY4ZqyVj849VMXRle$P zUQv!%k3iv~x@*fWU*wrzW34J1Uu4T=5y7C?`tLVZXXNkOKDeM>z$GWA&ZvK=Xqn&W z_0%oE;?`QsDHio_e;|6 z9Jn@2F^mRlN?i!pAN`JwFFAH2zi6Ca3SV*$F}h3;3J}5D9DD=0M4EY{^xQKCpd@Dz z#^GO1VZY&b2+>dQlZqZ233|`=ClT#~k}%}}^oOAD7y9Y?2Oa-xJ>lOhS1yq#u`Y7Y z4xH`mT|28Y)BRro^&%1eJ7UDUKNuE=U$&m`OTZ`ZOMuS+=$V4g!BXeP<4=A(KUGKU zl%ut-27W1cr=4;mKFL=@GQ*9eB_xGjd>w{3m;*UM{yb0)gFYr0UWM1fx6jJP; zanykUC>B0B3E;!*c=eR>^91&YHBhRD4ooA^6a9%%2Z+_M*E0o@U`K(nFSzt<0~Ec& z#lol1R%q0pRXUudj#(F4tEZf2m}3G;j;2Kmplzx?giGC_!J+=HW(qz^A8gMt9-svO zxwxUR)ib%N<|ur3R#c?fqhI7C!Q6!-h z!ye71GFk{O)rb=VfSSa9sZc$*FjV-X@29GWIQ*vrSrT6C^9y!i^BbFSxUZTN_SH3B zUu!cvCyMxIkc-cL;8p~Lf=H-Nt9`{tdc0ye8jJeSwnz43)%^Dq8UYZQKj$|#T1!C* z+F*QZJnm}PHq*84wK%jbHwee?Id?ZQP? zSOpC=zu>W?2l@i|%x0@|A~aDD(vc?9S>6n{TL-};&PZ!}-Q?>(==Oh&>5auz@B>pK z;FjYtp68ejcVdb5Vh@(Jf|8W=JyG4#g2^mnK`$rfRr_n}g{PXFe4~L)_H^;b6rT6!%yy+k$ArvlewJQUwI%oM)a3nU+D zkVasyGGq1y4nEtG2+L^2U>7B|bl{Ta1eS@2TPj*I#M)7)FC7w(^yzKDD*+JINpza3 z>|lc<)g-ds0-NdxpWt1=VBwfum4^-OR``je zWhBwoB(J3d^5Y^`*;v^mPKXsfkAfseDCmLxj^-?SBl=MtR`{U!EA=kfD_eF|V{1(_ zWYEQMg(N(G#ZbnBz&)v@&B%fFM=FsBpel%!zvP?(Mn%xUXaLhAVU{pb@Tix^EDE6Q zQLv#fyQ<|%PpgB;vTJc1qpovX{WXG99M^yAfgS}fg-;Xm4cke8SG6^B=IQ$EfpZ_= z6MMb;Z-JFWG9cA{sHPQsJktKH2o8{p_*AV7TkBey;a(RmmTTa}g)qx7@dkY2-N?ZR z%B$whA)I&#VAO{RZ4`BiqQ^Ra8VxO)f7Lna9H{|51IDH=2|oKvm}2OY&c7R{8^I^{ zzZyPLK8Vx5^hLO1;G_GAij|*fOU%em_lQP>Qq1#6V$RENtn=A^5pZF<7PWE@knd5( zYkCbjdl8v5RvVQrdAdo5glvgM1a|?|Iy1=JcctK%6F4~lhtFD^@L!x-Z33w9F zf`UYFhYY1+fa4h{N6lq>265<*+srd|U!cKLsD9 zk1+H!FD6dl6lM;N;*YHXVFR(%K*Qm`h zoFuEJ%?~TFPX{i%8Hu&fbi~o1IFI^qDj>axzQ=|ov7alrqDQL#IR*XdKTdVT_n$R8 z`=iN-J$@Gli5N{rk0iM7HAnR~H#e8{HSmb3hML3da~;zsJFL!`Gp4(&j+vznr^`BZ z#s%zb>c9uQf6I^J$$A`UP}lyhIjX<<_~xpWR?-83-^%lfwF(z~P(KgGR#$?hGrHM* zD<3gc_4Z4D>NrhgwD*f?|G9ZH9aE?S>?;{=!VgSU5Tm#SSZL1b6HXv%uL?*hujxhf zIm+7=eX1E%|8;!L%{54DM4xJFtTSrc8tWTzcZf8*ii{`N?@C+{bf|GRF(WYm3nNuQ ztV%8-sU+Yr``%fPgC9;|MNjy?;g^>fe!LsHKg4c8{`tRjPE5hio|~iePDc36gq=;R z)xD&?wI+&gh-s%Ex$LhtGtq)55u+c1oRK9x*q)>X-=N^3{DT-*OUNrTU5*O1a8%8l zapoa(3u4$Bky5ZuXL>r~*z-J#rp-O>2E_Ki&>+1~|2;6FkW>hJkC2}Z_^?{cHzuCo}?F`g*VCSHai#l}N25p%vkeba;J@Uju@d z!FdQ6gE;z~XFaci9fo}IY8Y@&i3OjYDOSH|xQ;w{h^6QHwQG_|GQtD&{0nusOZ-5u z+;zMp$PnAVy*7eNEIjh1l&E;dxb^M4!+U{?gI8bl`hN^wMzgIR*(QC;DR?RS!+8Et zH#-}E%OCxkL%In=ZJp4?8oYNhUY=0`5Bna!M65HTtO;q z=y0Z5=K&#=vp^neuFwx|O&6Sb&xIk~v)hR{c&qj{7}X!duST_3Sov{ORZFY)OK7%& zuYTWH4p#Q4e`xO&Eloc5)fsQv_r`PXOD0r#+Tx@m&dch{&*ZhsveCA!{mys;HBoD ztfGEjqoYqVO9H!YUOz$1NV$2=)a`> z`h6_9G50xESBx*n&(9xUJ(=CL8qS9u{QXWf5=w>B>*)2q|0#7os38H7>-Qa3YJAms z4I^}Dd>45<^%Zn%vKo!Q3?5+S@Bt`t?MeIxPi0WO{jy#`RG551p$pMnDMgsavqH zrM9uD(YwStr(nFj@Vq!g88Dw^M3i2q(U-g+DrhKuRZf1){ll{swEEh-3v1fo_rkzn zMVCu=xiH*e)F`<#=SC?-TykK5#(9mZa;57v&Q`@{PtqTR@_-tYv z*apm%_KWWlw-D&GcHr=nP||CND7O;843#q(7T;`n1BIWs2f^AYf>(W!l%tL2$F}TQS2i~DSs-}vViI;Rmqo!6sD2$nz$9QX z`{kZPr(eoHWkEr{0Ycfco2NCmTzL>&pnrvQ4LVQNe|y#fJ1Ib6y)MrM3vL1YH@P)B zud%kZhPMcHJK)U8mF%eIU}96Re8X3R{nqhG-*2yt@%M9{rx_d7F=o?5j0~EY0drWr zW0$^YDZRSd8dLtD^bGp0ci*VNT!5l4dHKR01+JqouK#mfGv??!p+cA~7@t6v9dM5a zz*Bw^xY4iE1rdF4&IEDOcwS!2ea&+kYg#HBV^=MmNm8p77>of5YZ60pV>cR%G}>-F zaL|7tP7!%2_A7*{NyH}UY94X&m!;YsY%3Ig(Y@uQxud(wqyJ^kVW(IzM;H%GOQPmd zETjzd$G9akaMv&~TQa!cTv?Ju)-s(=_gh_}(;tX+f-jPO4FNNuA1<8S=!Lf_T<>MK zkyj9%^Z;fowG14yj5G1j;u9SEC^#izyZIz}9{JLVl3OZk>Z~)Wt#h(Lu@pYpbi+dl zAh|1({WW}edga)pJ~e_r9IxP0J*5=*L%cQ2t?0%(p8tuEDG_$`s#esOAVD2^8_mdg z!VH=D6ML@o4_#=)_X|DnOD3D!3o#w|U0rc2YE1KEiCZ)>M&VphpXSRK=B zg|#|(zX%P(7qMu@+AqccCkj5f1>#(>@{<9nkNNa$7{)*mQ&v+y-{a*0F7?$$yHAW7 z>;W#Agt+=LCTM@Jcq=hMFA|~XQIu+#I!T$3r1#u^wcnSUEA3x$1SO;Xx3tcO;fpZPORoCX60%O)BC71Sc@ zZR9H>*d-Z=+W55)4OQ4mw! z4f5a!3%vV;f}Dc-f_x~=a|-y}E5oar;6;Fw+oJ~d>VJ)Kj{;5<{ZZ##qV9JW{FL#2 z?$VZpxJs@b6zL1PzgnTu0L(n~B8gaYU9Z&lR0DJ(>#q)@R#`@2jQzyT!c&xP}mfD1twSm&vek+A(hRfnS0j?G1j1(@~jz!q4b^ z7WzAeUzukiS%HeJgfE_P7y$87oJXvV{9w?sMEF(^N6#={v3dSQ(RbBfBd7J%0hr>q z6#bXGGBh_O{f~y%p{MtW;WYs2uPTT^Fm(n1yzTxk1_{>7D0oHa8R6FyI3lg8m|boC zuO(s!1!M}pl>Lt~XMuH##IGLjt7o@=N>a|zZKbj>fRc|NkHh+kkI&*~Z10Viy1dBg zHCQdPOcE8NOC)ehgpJ+;(l|wVfsYVlz5Vg`iHr7s1@9A&v_8V$Dg8vx_o359Q11Ae z#f@#&!tu2}ueYT+T4vx?Md=u&j!@r)=!bNzGhPX=K#y*+&O1cY^91)D3;lt9AN1jL z-*E(73O^IThxc)^zlIOfG zOL6n9U-yfD4KE$P8v1kJxHVI33$h7*ct1Pc5TbPn|&npIupME%h$&H7)QRn%#9ZZJ;BFQ6k9Mqi4_!2l~0Sz%*F( z55&TFKVE^m{k0+`#9T**n?3KQ;Ucr-hznF^(b73rcbqU ze-_k9C+O70=>E~YqiXjfZsp5Y_dmwc>VBMy&^0-c!`V^C+YBvM<6+Mi_rvGr)WrB- z;)6C{+5sEYz6AU{V@!5+OY;);<{%D{!+kxUA~zTj{tw?>V;Ib+^-;kqN?z;%Uiv;9 zyVz=JjpH&7Bj`o=i+qo;uPF4$3)AE*&aU>71E2F6TfMl%lxHvY_8-QK zi~&R+b^QMy?!WRk)qnq7_A~$YJ#@u#Ba!t~!Rvp|KbKC7dp!bzwJm`|uAbplTQB(W zoP1qfCg#_ymW3XVm1SWPA4*%Aai2$1lZW}X#NKWOeyDu^rFuml60~3Np95)sBF3nX z!@bcvn0+cAqWEP1SMFbPGxZ<#PsM^-vpH{~Y8Xxt>3pz&Ss}qJXF?A^Q}a7cK9Vyg`*1(c zF1=6H732!JC@(_52}Id*YFidt>C8XL-Ssg@b$IEjiK@inlgDnnpj^OfM)Uu-_bz}@ z9oOCXtR%3E!4?K=WRSEmXHLJEnqDPP#nk7O1nZEq}}!I3WVdtO5(cI zO%o+e`;kY}MF@}tP8G*#Na8d~>NqrUQzda*nxy@d#LY+hxryr1@9(Bb{r{agGxxQ- zLgHmRuyFL7J9qBfnR92(oOzuIUg4J%!ft*AU?@jbJqcI%<(z~};aA`azcQGnN?X3L z{WwkeGRF*^>Ze0|nHwIbsuk%mk2ks5GpEk(E?=14W_}g1y&$fSQ{k7jLv*?f<4Fx` zxXiIU7CMMsX@a#Dx|~#tP#qb)6WOIi=qbPSIz)PldKS;z{0jQdwR}x$h;>S3>rFS< zny!7+^>Nze>+-6PZu^!v4vPEF7u&uiEH=yDoH?F9S#4A!-RDyqRgcb58_hZRv(-jR z|H5d4Joy()(iSI}Uk_H-Zgb-^eDkkE(f!3M_ARXrB2GW) z?jhrrHhJZ?Z>h(Nwf)A+$^NH?0>4-=B{j$38qVg$?P9$etFfgDjCa@aS<3eb%74$=zP^HHFfC_=;jbjdXuC!zG?ZS`GxK@k88Th zm&1OlIpq%pUfbYJm*=yzQ+hx#tr1+6MxDMi_FcKXQJ?RPPTyO`o~!NKOZlthOG^4B zcQO8?_R%Wkov&stsp)w(oT`o~XO ztzTKu02@`AY=fG8#A$Y^Rnutd@Qy;kOAK{hr_xfYudX`OYDcLVf$Cpp5cqQ5(7iUr zVvt#%)Oj?e)_G$rPg^56?!nj4WF#Vn4|`1`;XT0^su-1p^wWh?-NT(>z`dAALkb2L8y##y!)Q%AcUBD5c&KJ{rL?OU7j^oo6J2h+5?NwdCL zm6vz;>Z=7 zJ-60+i7WQn^*&J-f0Vq@^#`>^uaD;XW7_{G!*p#$t{QYfX3)|r=Sur@s%LL_mqyng z&98zYH@}oTZd$bw3n$VY0B|vSelW&rSJtM@CR9y_t~U8032D#baF#2#zGm{Po#nEr zuj%&d((((7tj>#HwD$j^Fie-Pb}yeF*j9jrYRoKEA0v@KYcPQxQ7g{nFzONk+4MUn zwlBkm%{AVDQACzw)^c~nznFgyOzx6clg8<=P>xzSTkFQ-GwFqrZpx<7j+>8|yWG;+ zD^k@*e}8Si83&8d=ck`ee=r!Xh==?}b!V^*YiYxwwzyGT(S!Xf1%>wq_gQ(%++{wu z?xAA<-dTYzXt&wY0!<56wuwQT+2}MP$IU-pl`NU(=ATrb>D${^$~qdfY0ndqOtFR; zChbm7VO@i^fW_-8C+SY7VVEpqnTKJtcsBdfW_eTk0GKr;eqG3JhNFDBhaaXtF5@14 zNH>;g7O=B)Gc10o@oLs5OVgbH(_rjMIr(Rr=Hn(EwA9O7oGtz|1d@)x&7ZRm&rGE} zDXSU&KtRsR2iseDejXdINQkYh2?b&iocYrxPa*5daP-(^Ge)lEmA1F%Ei0AlvCQ$D znoxoi$rTtEU*oI1-KYrrJ0rV{Es=nnQ*gEPs^qY6c1t3&C7SwBp81H`c=5I?x5Y|R z66^f5twRp*YxkDO8e`?>zDn8n8k;M&RO8?VYNRfi(4Bh5FIFYd{L$xs0QHaSM@J+U zGI@eE`*MDB+6|E^2TF)q1worHRqZua&g(H-bMChlDx{6b!)KM#(YOli>G)ka>d?2__7mFY2)LuXgG&R!%^_@h=sPK`eo-=?_E>@*~h z`AE8n=IM$Y%^%zOraT|7&KFuK&!eP~fa)fru{+ipF|2LRC^)kDy%-~QZ_*Jc%`dZk zODRwG^T{rL{nC2a8_?T1d*y>*PT`m8|5)|U&aaDK-_rAI8nsVH;OZS-wDw=lK9Rzx z`-h5O+qR}!SG)}Bp)OB)JjOh~O^?T@S-EK#m!o~k)HdOyHf#5??f5p{r)%{QQW|cj zYMgoP3h60k`d#O@pXS4ZT3EmUcZIC;>BwVOWO&H{G~;3NlCbphA%>a^=*;x z`D;?s7%sdNJ=duSJpFxJOK=!CRa+bYBhmc6T~U9VG-N4<28+(M2RjYkT#BJo$(w@I zJp`H`*hi;E2Gszn=0|N9Q#BQB31f4Fw2azSYbk)SVpC{WM}m$prkMz%&c83xosilp zIJO?$bFF!tRjYJcPcStkIZKx*-MUYq(~r{4>Bp(&j_-M2<*MyPr3FP>j8#Szwt%-K zYQxd)ggF4^_{tb>xS-m#YK(X;M(c&s?~J)jB(_efc=J?4CcbHY;Umg(F|=IMxbi+a zBC0Xi)*+4j>EXKi?ylC(Ae|XZQp3TsX^-u^MQR3@FwL)4KlfDCFfi2)ZVya;g(Dc( z+-I)CaxFBtkn;>F9o4hevDCpLIr)p;UZ$y+Os%Bmhn^1y7qq~T6;Gc3cV(G{7Eh)= z;Xa?utZ(LdiItI9K%URWb&Z6r?8%*9?|&MV?M=}{>(XTMtCY|GGy5YZzb>cqTP+PQ zBY$*zeT6@={Wr@`K$V|jUQUtee9}zkNB*{V*;2|=kog4*Q<9H1ewEnIbG^bZUY}E- z&f83tPn*`-`Bf#g&I>S{`xX=EDdkI_=c@W$w({lR*Ol_6%2$b!Un%n46!g_SiC7SQ zup(3i=)XM2l3jDCe%Pc*07^?3ie?lMeoO2h28a-o^Dl(?3^o6AfcJq^>se_C_- zmaaoev^gqK#^W`mWc(06tS;sLmw8@q;GaBwBO9AIU1)~?rxsAtVG)m!d9aTH3DbpKh-U zFmO-5RQ_BkSyV4IzqGt6C@YipE6n~X+kL6S7~9P)cjV; z?|p?|S}3^rW!jTB^RBu`Bj*yJ`%t76dEhGH(Z|lQmX_5yv@_=52zi0vUFj8?3M`56UJ5@TZ1^w!FOjN z;?9$5|1PO1KzTe*rhb)Mo+JCp&RtM)$m}m{t!`@MM}}B$%avsv>>1mEw?l&_VOhb&}Wgr>fkmbk9D5EXD66 zJ8zx*)8)-XHEw8?Kk!eVa&}=#T>4>}H;`jfDRH`ehtyT;omuW!@+K08QI)QU5iTxq zEa9bf+UXR@a~m9(y3#;ZG)Tp=~)Xw=}&W_aJmLx^AEfFF$6}P z(zR0Hnd9|achpwZR=8I0sscC7hD?tK^5AlYs_D{;rmz>lxzX9J7o{7PHizxcKIx_T zQ(OYeVD#hRda9OEqOIKej{CP^KYYF1-E@9yQ#F6y1ft(LI55dZ63rj2FG5>X4W{DH zw$6Ydhf>qkwcmb)TDONqrOFPzY6rn3EcN95GM|y4f+{}PEdK7PjW|?X1ku)MLU-bTpQZ?=f?kN6L`HYSJ zL;~$;CNfi#N{9+OPG!i`!UIl$LROV%3KR zx6M*mt)-K2_0B|d%Nk}mw9KT_apgi7vX8?Ov)GiFoJC6=(On0ncsUG9PUXNXt*R-R z>+UHi1qCuQ%{qc2c}jPQJOVeJ_%zr5x%mUdMAe5B{-p06T&%v-^cxiz9+`&eO{*85 zoEc8r94S_s>Xxd{6SNlslHuG zdE{4CdnWBkPA-uAkeqt=}k<9s+{ViP|VGdDR^fSi;eGOOmW!InF<*SXyQEmFT zn_ubm@u~LR^&sJNM(f{To!rK*l>UoVA5DGp3cqX&bL$V9UpD>x3cu|9%2*$-$b0LQ zWQ$=bu;EM=NsMTM|rDSxsWSmzgT`Kqs|y>I*F*xA?oX)8sIqhE0e*FSAPg89?n zZ^bFiG|Xm732jWntaa1uvA)%69t$naFRMJMby8ZsDt-lHd;Fbm2(PBSLJISn&iS_U zSt6xJ(^B|TS|m@>Sb4egN6$xUc~s=(6GoinXJ@E0(B_{+ZvVDcHeJ8;en8gVhtx%J(13C z(g)Kl8^82Z`ET^ly~(e3ue4`g5ae=a@hbuY8t4y$#)BvwYJ0f*B5Kp5-W(xlDYjg~++a(^1{tJVnRRpEt`-E0-Us z8Q_mu-`1`3I=1(uD?zk~ep;1n55XOF2_Moc%0>@ zuF}v&iH?YH390i_q^8cca~NaGtPNOfo2oRo=5yM-JRVuL)-9icv5>!W4G!XNjre1M zHCrOx@!%S}oetD#T7RsEl8bdAL*3NtkEw#{F-bUStD<}UUP&n>mAFc#3UJ=H2m>Ul z4{r@Tmnr*PDgq^i%orx!pI9PS9m`%08l-5aKLHi7Ykj&AcU`{pdG>_`ZL(Zh<*UOV z-U+j;n?sRA5UMAwM{+Atrr^?JO4HtRH}w)W{l-r(mz)~!q`r{3gQ)ohbwKW~)8i$U z{ECG4fk}mA)WX1);tr#s%O6XifEoUPKZ?U&nWXFGnOf(h zHBxKpjJmzk-@o{+E^pl5U+rsk$D*LJf9ih0w7Of_6IUP6u^Bq=6LoP}`eY8AKJ){3&kdep#WnRhBTbztPwc>y9V7 z{BdZ?MxhZ38wEyHBe6)f%I7>bIgK916lP$jY|JB#&OGTlAUA&sN+#nEpAi=JcSd#@ z#g`3_>=M__ufihcms#H&NT(iIHyS_-n)ZOv{{IpdK`_jKL`Fv8~)Ihlvc%=SJ|rsn_G zwmIkj8zT`q7Suqmugs|I2z5nadVGyKJHpWsPd^W9N{A_}ZcQCTwJ*(;xkzh-Kv#aC z{vKeyvWG}jUw#brJ@!Inp)WyWfE5`={LXWH^pYug)(E^g<2A+cQIkKa|A1@e53$D9 zOGsZr&u!l8P0SXv1nKhQULVCp2;(<4{z%;AwkA`Tyg(!RZ}_LlWP4D55BK;gq!pLfCNhBTl&TJ? z^jkh0osmDfK40MvRU6ZOcfmS7#}8h%@z+qwc} zUvTXeex;kCb=N=t`SWY4jq6mpX>Yn6HW~SKr9P%z0U(7J$*;1~!qWD&I2^L5sHl_< zA1GN{iW%;e=CMgrkzp{Eqzzokm2lK&$M6d2B`G79UTv_Ajhc;xoVW)aweYEs4dWek>Xc&>%qU0@&0)hiW;6!4uUr z$}~N4&Ra^fzNzIs7B%zyUJu-=c;T?XLaR8E@NkzOLFrIy93XIUj;O0 zFs&7Gs&o}7h230^>Qvy_;>vuh1&V`uy>k;L5w=7O1w0`WYx4(!RHCFcGi}J!6kgmQsdcq6(w)htWk@Ur-o$--*uOgVpuhe0AF!3}3N* z+~)kIOth47&t6VeYu@OcIV@*Ni%W}&ilHGD6s;>Q!N1bd;-a;+4M@2#pjhZ!G4W`oh zbX6o&4Oy?uDAKX6ST1i^OZI#wuRq0s;?mM}_Aw3fga$eEv2x3%kWt-3N2Ub>c7;$) zikz2n;f2cUS@J$vvmM&jAPqa~_Bvhuxd(3L-!^}FVY1DF(d=xSVlSgT(@cG?baTrogtj%w>NI<&ZFH> z+N)E4RPBw`z-glhrok>XFv%^Rv-M&%JdLXD=x4fyN!)`T>gWoL$6K>JxS-L}^kX(C zqYnPq%B7n>J3E5G&dZKFF8-*s2bwp8y8KkgKDyCBANMk3lah8WezAoPJG)GNZR!l| z>PTGSm!tlvy&iUk>GDQiA68_j_#vHf&<`rai_L%jp zD%Ra)+#gC@ZX9at2pZI+8=axnm_N492*r(XB!PVZuo>y^3_ThQNZEyOu^`_x+PY&g z7)dnRA~?#oCn4|GhGD-g6fpd;UEO3sQQCS5hQZXRKL(qM*j?ZVhtS=S8|`QvQ6-cQ@Q{a{XN5-6Q2BBT?2LTD65ho6|~;8S&d{kHn` z#`dlEZ{4w$7KnLO~b>v(kS(5&@+YV_$Q ze%6qL5H$GCzT}p7fTW7iHO0*FtKNq7yv>6`Q921JtuhvPNQ8&(YbZTcX#RzyR@)T` z1f2}l_fZDoC=4k9>iv7+iD_p1l}5C{R;n-Y?r0PizwqtxRT3TWjqgK|?b7+v@$L@p zGnR#fnGTLieNEiZ;ne%1k+`(oYAkEVe?+G5<6DFSu%|$kkrJv)iN62t2wqRR7PffP z`{vBzl<513P*;#+?7df~QHXK4m!7_6_1ul@H(vR={QdHAA$q??e(L&l9S=%hm*3#p zObK-Qqvl7AIE08y10KIuy#Dy+*I$49@jcz0yZzV>vO3V&N%8KG*XxbC2&QsklBMmD z?y#zbLhRYSIhd#oQ?}cJ*u&LU5eSe(aXlA^U}-abk6;gd4kOcJh_4#LDH!u7f;v{& z%O;V5=wZe!5emkw_%}h`;NvDDkVYteL2NLXY7~?`Go4mEkZB}tRhE!o^zo&@YD2yg z>rs!V_gq{)vg7{d`)lf(5NoFLR{3lPX*Q-`9H1DvEC5M&-Z?*BwS`)ZE&mdY^BO-)zeFI{wAEO3P^fcwK(PYK4IG1 zmZFbn9w7W)f3&T`kJfp)=YLxF=RN3lmK zL&IZ=MEMFUJyZUv8y)3A=}Gv+`YS=F45Mzb zsP!8=b~iA)A=FkuYc4%( z$M(AWE4CVzCZ^jJ)*H-^B+Czp6|;_Tb7QtuXM2uH9c}WHyi(amo@7ZS_O*3}sFsqV z8;1nOEz-`Lw{C0Z4C?k(J*wK)9%|y{&vidVgG_fnjs^{iqgEl(#nT0Sv}Sg z|5Yez1EIMz>ZXtuC>9l35u|_K9SZGrFhN=mn(QiHZN*-HOtq|)vc@A8sLfk&7jMYa1S9=bRr-X>oPNgRVeIjP~0$vTvjQCFNf@r;R>3IRY-kZkJRUW`udVA z41eNXfqyIgUt&C~>(GDv)!)qh+PA8z8ybc9iR=2OuIn?d>;H6J|IBs$vg`U)*R_E> zECgkNd?4Llo#@Q&CAp-gU*z-xF7>s2IGwz;zkS%)?r#o{N>3|14+~n?dKe7fPwk+Q z>(Q-+iRSaIu%==2-X7i^M#tSy>8+AVHUigfZkCV8FKU;Qs+?)vD&;=4eo7feYwjnl z8d_6ox#C`n3fbnY{CM+Z@yam~>fxsgM`KsAd#F>P6ik_$H1R@lk@dmsc+*KD)P8d@ z*X#b4c?&U~Q`kd;kao8olvL51=ltm~Q$a7PbV_~|pD~gYR9!;(3j4URPLEClBd5e_ z*er(FWxC>y?5olfI9C;`uXqg>U7Pt{T^y%)mnqcmqA(a$*oc9JP2{37pADk=FcXvm znhl~h`Dze;y>_Y+wW0wvr%qIeci@IDhg#PoeUnFGNPUeTp{8+Z%%+Xetn~;I0s)CXH4JK}`?Tml%BI@S5x_ zq3&rdKjnK;z1R~91kvq5$<@OI`nzMM9K$izuuB&jYw9-?mXr!nRP>z+Ax1aSdsE_7 zUFM+CSl595LmPB)|6R*G$6 zt9mfad#IF{O)xqJILyh?f8*#Dwz24vF{C`N-s>7COwEt^-FJ0HS}_0teG>KoV{uSUg`nocD*%^abd-Mt_;@9`lb}Wjxr4wa;5&gkfe!)S2~@vcjnIKGTc8@(Xs8E^4AgLi)%7t) zGVqWLZwVcI=SqJ&stt`d(Cj4*Cb(bYPEVJAHx0$f-iw~6lB{&a+tx{mfKYKyWKnV5)oJz6 zT+hkgojVM@VDGL@E;ytUao0({7yeb)ikt|h`lG*~2eN4-mVXFO{RmE2RVBr1UEAV- z{}$v`1(fe^=s>Tq4nl+Ca;2ME4Lk2-{SI_@b?wvKQtx*?r%HKhNLM(?cSk7ATt~jD z^&oe=LDul34x^&-BTp$R{k7du+T*Kkm|9e}!sCvP<%Bet6*Ej3?Uc+0`ZaQ5YFTKt zIZh|jahB(hzLZBNeU1h|&BjcB0JCbyFD9RtN#Yk7bw5Bgbqfy^_|2LjClWrG%gZUEf~ zS_sMq-2{3YXc6c(&=Szipj$w^NAFWdpFdCo64gOfVnmrq<4HrG?zSQDDbNYqlREeFtRI5YfB7Ei@|f&1y3l` ztX~vrFVARDtX7ClG;|yvl2oZ$d~@}QS(IfjTuxA9aSA0K4L&BA>7%4$Kc$c3YY*+R z7PDlIPRf7G(@+CJG2*dqE4Mt~q16mM)1#)SFb+!tvEUX>P|;WNtMRs#s;yShf-{hI z=xHG+uRgJ+apY_VF;@LJ{Z(qlW(xe!lRHQ|O}t=8QAZ__<5P<8*%+cTsQG~JM#aI- zbsc$yS|@}|(+nc|GMM~De)v zSwAzl`PDEPfUiU4m1l>HuzW^wm0zg->iD4lV?=$L@tLg{e|M<5otV^>)6lXb4s98S z@nHfDlX=K6>50e)roGi(Si`4eQlSXMYz>7=)?`_l{fTGa>hx|&vc>3Ga3equesHwI&v?vk?w z@_HkRf|^~F*Ojt^Sn1UB@mv*uT~$|P>@vLacRqmd91j;X^C9><^m<&AUb|5W7-UFY zYdx2)AE1RKtWV4PY5NtDpH_L0{TMYD88A@muoNX4!62d58(radL7#$`p`?XXB3$8g zF~*7?d1sj|KDjW38&FFhMyNFY&8B{;@9*lwGd5M!^baPQQPfCXYHRjmO%PPyAYQ8P zt74j>kK+D%Im;?rJZm+f^tbrr?tkJoz9WRZ`n>cWyWZJK{Z-YxS2tK}nj{b+c z43+xK@u+Ytc=Rl_Ex6cRSKY9upt*93s$!@=To*V z@sIO7SnnS(^7=#TFNOQc`bZ1m98h@{{w&MJ1qi<~YfMdEU#LF|AK~=4<7+AL$a%Y{ zLic?+!I9#5={-7B`g#=hDjfM_`g~2A!aVdj=6S?wQfQWTNd?ka;=zopF#VQda%u>_>8-*XTs?yRZ!;Qhu`%C0KMtQ(Zlszhge7*G1 zM;{HeQe#oRJe%_oOSCPmt&s86IQ$-z@%ik2jU2AY;m6@x;MX!A@9E+9j^33mPF{!W zAYbplKU+*tTA8&fwmoQ>!k^L2Fbj4UxDkSlyQ3GrS~6#Q5$z<9Uc>>M$>7&D1(f0|i@pTIqP9G+P@ zVix>n70!%$a&tuP#LV%W(JbHMTXV&&iL1oCz)W#%@eDEJrCgDR!cYkMv3$31T<5X30Fjqs;5+WqsrIpS8&?~A$KJRik}OR+d7OXMVePn6#RUVsuSzz^~ZJSDH+ z2fzK~hj-I``?cd4%0Kurqwy-?TZ$PBkW35tt2C0|v!F2*pZnVWoag45;^v+#v7jSc z%#7hX*5ryBHYAU%H26ZD?^nIa$M@LH6^8I9LS z|7UUULn;jv&bo%YKs*BR2zNY4uRUHVms*iuN@quw=)DVbdmyor@&=x}{5*NtA`gB! z`Wci%U!@SA0(s>#CWWA5!y}|W@&UhztH-YzT}<^XF$;C~YUDjv zj4s1m_S+%zWt_+l?g`uzu6t76C8%C`ME=`niUpn$F>^F0n(fV!vZW95dhsnY#Vu!w z#k`mA#`oJG#y1JkT`Rs{Kg-MIVy^J+ z6yk%RvQ^++UXI91TrYAP^Q7MZ{Hw_SR>;2nkd-|%1o^!HY9fEI+<6V&<9UkDd=_Ec z*YHh?c%6B3UZa-?TkoOslxnkwJgjfd}SLw4~b9s8dKnohpZsGDYk&X9|94PJ;eSVB( zw_zN64d=~yjrY33aNCSBUO&^fcy12rIm$ZnpKKB0>!3~<51xa+(@!|AWjv@0h)1ZNj^_?BGs?2B9QB3e z;T@(tlzuYohdpyVPkGF+5HI<`IU<7b?&fFu6m+ut|pD!1Afokx!N|d8t{uxk*mw9Wy&WEm^ z^9_z0ui)=qJX?%@5N+lYBnSB!`*r>eS>h_sTq)m?Rk8TqS>oO^dBXeh0GTf%#$<;>bZ96Hj8k<98uK3pgG2 z>-?oxiR%Lk#P!8^r{{WcjpBPR(v-h$uDG*jwpiXVM=VJ!6H5Y1#ggJBVu@#wSU7RR z`24Z!NAna<2PqF%XNjx#Un6=y1YUg@ZGn29{W^aE^v{p6-d02JfGoT&FbDD&kuKZk)e`bYP@bc~An&vlg7YG!jlN}~NM0N8dzt*M&k@(3xkKbWf2SZnFX%NL zwqw4${s#PJ7jxd|zWv(q4AMjIGULXz{rw&)yRV|{l=?ufDF3n$kAm#-%jt(U#2!XI zH&cv%PKfKDQF;~icc9}_f5YJ~;FreVbJHww6J+g8kij>h4Y~=>-BftPILqm)WFIR3 zM#TAyl>hR(gRLSzpZZvH#H`p%S$|Megsf-Z&yv>^X7T(Sv~8rv%@M{oA(uckCCoSb zwY`3pQ#?1L{rlJ~`7XXjTk4r7t{R^)M&(Y%y<#?G<{Yv3`D>vwU5EOd2R&o1ls#k5 zqU{4E<-1T=5KbVRz0*mXj)v>dXWCb;7vZ{ zYVPxMg%3M!zxH)}j#AFI{aWgsA3zX_+&Xp_ zpW<3E3;Bnvet90+jC`~iHzNNx$or2YOj5rOZu_-84*vGn;oDz}Z$Ag$ezv&jWBB$n z(a%HqrZ$dsq%1M^9U=Y&l(&}iVZY8_K1<|#ZWVJTt{K02?5a`C5&Bl+NPqs@P$xTP zh^u}|y=UfAIpwQ97keS_{m#sWUOESQ={#Y4TZsEWE%H6|?a;tVJ^otPJ=7~(SXqW* zEaUMCRX(pV%V!z+#b;vw`*kR{d1BTxGh1|7Qhg7lN6ZqVe=kJyDLhcdd9`1wGA_$z z2gSK0S1j<{EUun#<{Q@Ed+Be-8au zy~}-Ve=h%yYs8}BrDBoiCXqLB?fC4mS)+D&K1%8NK#uqTz9-r{Sr2O{9a2ur7Gu9a zS(t$Aqj%9*z{}T(8TjtxHw+qAX>ecLpX0V$H_zRI>Z$H~j8Yq6 zz@GDmHU)Byw6i6C^3{8z7=m@|HjZ!xu(FU=OSo}VLT zpgbB^VT=>>icA}11nvpkv-{^im@OWJewl;%OXWzuTk404(Izc2+oUn@h1*!@8pW)0 zda^vSej_%cxT)1nDWvJA5CE*Ijo#X^QZpKlo`RH_avxz6vFc z{NJzWG{#h4xf|oC_hyUnmH1W|o1#9-1o}JC0NQtqF-3!rt2cq#@esxJ|u%V&Eq zhUyWcpgg2Kiu*KXL1PEyjc5-r+CB0xWEG9Bu0>x9L}NcRj?;^=o-vSbJ;H!S5q<(> zY)5!dA7~Vmw*zz+h^3}j%tjSv1_q+=9r8jmnAR^tOjk&Yy&5BJAF6Tias zFx(*D-@%PEMj@Dzpb3x>foO$Tx_u*aQ-FPR+2kM1i6xatE zfqMevy$AO|QP2p{z3>Nlm%@#3)DNc(9Nu!oxe;MOeV|_Wje^GD&Z~q!XaeDVWKg6N zyae@vMnU5sqYFF&O@PY7cpqp4Gy%$szz@_5@}e~OKv9tQW+12>X`!(vqXqH7f1K_; z0>1>}0R0-}V@^f3cspn<)B}17bP)78&`Hogfqn_{Y|Iw(K+8adpjyyFpeX45 zppSu`27MiL3iJv{RA!6$pf#ZNpjyyFpuM1{K!-tJ1bq*58uS|InyPHE6toUh4|)&i zqo4uM3!v|VPJ@00y1F`B+yYtyssJ^Bc7fgl`Y@;;^c?61pwpn=fUez?Eey~)Pz~ro zP#Y);dJ^gw#hs3+Y!=hQV2tRE5v|&GJP_$!*Xa{zOzFX`T zo!B=T#vakActpgodo&@s#UAV!?STcLN5y-@W8%Hyed2M^D|U6Z@8w;(-^P&@X?EmEFXKW z5Dl+7Qnxo*3(Fg@5>m&kOr37Us&khYZ(vqW%Y9z;Sgx)E$sN{PXhV<+p{?53*CVJ~ z+EQ^v4_3;!{5DFvQYqe>x7Sv=gVy-5TFCXdJ>B{>+p*={M{A3MToAyC`-A)RlW^J} z!X-AS^VTL6x7raczezYj+tpqp6MXGHp9MbL_Mo-$aR0t(Dub7Dzwf3?|DkI-ATvbi^0N1Y@bS*<;y0L zXc>x%v7Sv&1a!$TD~lOIS}9PW$sOAymjH*`%&#SVcaZHi9qSHW9PYYw)~X$}U(sGT zO%LHmbf~XIh3Y_89lP{%q-MWq~R`?3b<(@f}$o?WKjiQ(uNUg(Nd8&}f8;j4;@^poqF zc%h<_Y|0x}Iv{jxZ}LStJFCe+6Mqq8CQ;oLP3)6?@*!A0lcjx&w0q_huvE0L`jO)U z-w_WjBqr9^!yk)yZLey8n8mvIN-W!xmgOjv@lJ(+X#uU9$*aSD@3c5~i$z?l?KPy;i0VAzSeD zx2V=Q-=ykM`rup0LJi7(hP%r8hANYsJbQIF^KL6p94bwL;v4mBiYEOF8>A6($s1=T zOzC01k$f^lf;)A{m8!hv6OEySYAa2zl!DL^*~`h~*W1<_OCI35mTDDN+sgpf;%K_P zomTqrfOWC&rX@)}^gUVNW~jgxEs5IsZ;H zpkIQ4`=+gyU*|i}FDpQwyw37_5aTek2F+^=HweEZ!kzM2;pV>+eICq@k6>Mt{&hTr z{!ocW9I*L41;1SQ88*LR`1Rr0Je%LQ;nxelahu;O@blr>a+}|^@5&Y<2M|{ISAU6#iOa9`OXfr3%+8tW)@e3MT{M&rRSp{R$P{qp(il zg9-x*V+uc@uutJ<6m~w$@%?K(;|6v8c7=Hg&wvl~8&~+E!p|!Fn8Nod3@G#|%u?_B zu6oZi3J)m!fWl6N4=UWGuvDR;Fi+wCsBg7HrIXgu*?)T!9|H>aEBs@HI&9Mpey&5| z`xJg$;Sq(;D11TT_Z9wB;TeUwJ2}2Z3Rf#!udq(xg9QkbjC>kSH5 zDlAu6uW*A(#|icRL4^ktKB+LF@L`2@3QH9(QkbLgbR*~I#|mFk_?*I9)O&@(SJZR& z>3pf{7gTxup~7D%{2zsjRD2s0ZdLfO!cK)f3ZGKgukWk(>GJoiDvy7m@T9`;EBvv- zGYa){pMk8j|L#-QA6MAux0XTKP0^^o5&_P1$3l%3I zE%|PNK@_ozo~!di$L5Vl@1tudzuld|8fkw6qoGfGu%;gy)|FK^_`I6Eg?6cL+?NP8 zMs}j_Kx(v@GgCVoBj$bK%aPlHd@%Y$vB1P@C7G2)7yN;gJGNe4wzV0m6837yBx!@% z6%0Htk@QSaVrYmB$ zD9zq1ZIkdrHR@`6m`sphN2$85lUH}EEBT-Z%s_OFa(`uYPq3|v%F?00Z7=myH>pQqj-^ATbr`Bznn|3dCy zCnFw&dxc<2gKCfqY)xSAYMc@+vQRR*yIgnR?@8w`pZE>z5}HqNn&Laf@6&r#KZeu( zKlX6yPFx(Muhq6&c3`-Fx?ettu@0C&l-(4uAiDt@eXTF`bQbh;TV48xY*Ih<$36O$jG#LXQ_!%7md&ol2;ULnpR)Otn_zuW4zXemfY_~~gi?X{WqQ7t<-^E>bc)kf zTI*oG7`f@T@~3=ObN*29$-|e3A=Hj6YTG#Oo#Jy^R>=Dk zj94T-f)Xx`TT*fr|36RfF{Kj~rB}>aW_nArPjRump}Jm6>|*tXs>+?>G1byQOo=_z zlCnfWNr{WS*0nVfBO;Vv4rTMbUB$UknKf%r*Tl8@U19OKdJmT}nzpT!TY;-;H|jh>e5V--S_>J2D^v&bhdq~@8+snmDv@dD(2rM+jH1vVIs5i40@_%AS{1T*OIAim88at>VM<#&8>^EAsf+Pz2j~@s@D&o_HMN{g`3CQ9#*{TERlmPR%}M)Z}~YVR1@C zIMFViqWIe4nB4sc$Bcykq0AM{_ueG%S!7fJ@=L%>JHE>!n8Hbj*F`k47jJt~#()H2 zmm2aA!kA^O3t!Z9HwQ7>)*KIZG{Z0tZZ^|F1q%i3T$VN-g3V!=rjP7xhPi<~kO%xE zADN0bKVxg8r!ew)+jpCyciw>_J>HK%0V@-F=gU zfcDy9zwLfU3>qnhe(XVhkOK?1O2$KHmQ!p$B)_^yWOsLTQ+HU}sDLU;JCA=tca#>i zJq+fc{d#W3_AnRKKy?pQ0O)+E1El(j_mDoA@%GImDaqc$LJv-z?*3QsXXzT8TY(ozwpsw&l&PMaRyKss3sEQE*; z;JsBaMzsqT=k@z^KjjL(F&yZ-i}(AA4UER!jOF(*PAD9?m#;_5m45|e-$vzM$v9rc zn74`1yP45fqp+5-_ddqH`x!^-7)Q4-PHbf~e2jSyFp7G0U*T8-Uyn8_|Lu$;I~d1y zD*q-%<3UE>I~mI#Vr+RAWADR^(PqYE3*(rdQM54{0mcc1BSF3%Z)eQwU>s988sh7b zcPszhj1!%Vd0|FxgwYpe?0tlBB*vJGGma-1jXjJldl`Fs7?b-LM;~Pze-ER0FQf53 z#`4FNf3L##EB_BD{2*h?6O75R zkFn*WjJ+RY9Qi}Wv5zxO{1M~$A2a41U@ZRxWAu{>KgHPcX-40lFy?(m;h!r1BxBz} z#$><3LyThsjN%BR_b6k_AY*ihv3HnpY&pT$_a(-WFEfsRg;9K!aa3XNU+{JEYm8%~3ct=c@eRhj=NZet z$=Le>^mNHH(V>FgC`c^1^g?+ax|2vewLhnkxHdZl~uV!pn!`SOpSim?^ zsO}dr_7yXZmZ%eI8AS!7v60bNsjjOS%c~jl zHZh9L%D;xOx0W$_A7kJBj3af7<69W>wlS9b7+W4-H0l}06^cf_&fCs7rcmtUYi|={ z`8yb+4>Bg-$vFBDCyZe#2VFpdNn$J-gP7g^Sa@(`o<-RgQb zqpy=O+QrxxW*mz!PDB}v7-M;yF`8g(=~nmmF#7f~_VzH2>|-2%lriry#`5Jc!JUR9met}8C!mrF}k0z_xBi+Pce@DK4ag97)Sm<`G1%Z!*Y^8 z#zz^;KgQVdhm5@+XB_z>#_>O9%saqX{t3qDCmEBUVjTN4qxcM?_fHvHl8k)^8AtmS z9%76RFeVQ(jvZl~ILc@YF_sTAwj5*ZJ+AzpW*k@8_gTIk{WHdi5k~P0qxbWSEzdIc zeStCg=Zs@tWE5Xw^nRJKx{l{sO!H}*Uzi#Z!#ud zU>yAxkJ0!(qxT1lzLyxIf6JKsJI1lU zXB7Xy==~vM%a0iQe#|)fkBs7fGaBQJzMn99f6CbMGsfu4jD7#iIP!DGvH!y;{)KT| zVc!4c>+)9={u|?j!qH!-@V{gf|IX-rm9gbN7<0m^{3n$EY?r^t<@obl{&~uOzRTZG{tGks)7Augdb}#U0slNo zzxrwar5XHJWbj|<@>kJe9XIxQ+Tz##1sVJcGx!%}@Gs8bUy{MUG=u-z4F0qyDP8*4 zW$?!~m9*ip{UohFwvMFr$5xTF{@5~-)*o9)()yQY@W-@Q+VI$3lGYzX%4z+pGWb_# z@ZXfde{%-^nhgH68T{|d;D3Jx|GEtRTQc}>&EUVy<^R|3GQQvb((A7m_W$oypSTk< z3kP_A70Hq;&>91O==T}}`M;Hab{kM+3+lDGuzj!`dvbu;*JF?W3fOxA-VVV7xgd%u(mBl_-oK#cu=q0!bzX_UvoAxC>gvNs2Yqy0(cCuaqJ&Uvv{seRqZo=PyeoSdb zW1{V15q=Q#3j7KG7f9TZEpb4(2}eQm;ZLY-RT18b2I%APC%h9h2shy-&~tFpUP*0B zi|~2SQuq^o4^##>;lF|E;HG_*+J+Y4Hqb-xCwwO;3OC^%&=YXe9?Y+Uh!3GksiVc&^X+L*W8Wm?Qqln%LItxp?#M_%1!$&f2Q2D|8mJa9ESE^9#U@Fhj|bU zsDW=p`!Rn8qIhUu=8|%Ddx5zdSw_*m%t{c2p}m=ZsobqvPBis_<_Q6g2Ey?~D*#{%kcEAYVgGO^D{0YAdDuJ{8}TTXV{Ph>Wjp!X+3j3?5PsSw7NNGGMR-pW(tu|P z+d%u_Cj2_+0NjKxfsVsX_-oK}aMRx1$3WDU(VpGUgD7p|Ky81D@Mh2fg=Rvb!w~6*;4?oP`k@i+EYUcFNp6D-v z=v&jC=o?#Do*TfeAWCNv_;nE3kRr_UqfLREuo%<_H{rdY0l52sH?`p%a1$;GAROF; z_kwERCcGci1UF&3@~6Gy{vf|M3aoAC^dx~D9qdp0uk*3jn$kx5u(v5U?ZX~YZrV5f zGZ2Nr22N1~B6m43uH3!A&nx#ha9)>+6WE~KG-rMYM9+=@f2Q2DS2_+Nf7&N~0z~Z~ z?S(!CBL4~Cce^3Gkw?3|EV8BbBxn@=gr5Mt1a}hn>Aga%fPJVWu&M|0A8sFT@jjF% zgt6PIA{$n#AHz3A7{Y&fFZd7l1n}qYQ)vMHtQYcu{DEKjAbTs6_~4w;x4z zrIH^(9f3dLeSJt9+& z1Ah#82sh#PK;%CT{O1G61LB_mZv6!7cs}3_pF|oE#tZz>r%=a>5FR-EY49KZBf#1} zLE7N<0e=aajW83yfzP0*!ELw8ME08Ap9J6FPk0ja5Zq(H!G7eQ!UO;5FiZkc+JH-r zARMIu_!x+6QW4&K6z_nW@OjV)xb1e2>^70?_LA(jl*p#isv+nD#n}?O;4Xuk@NYpi za1%Z;jJgRoA=yFbfSd3|a)bY57va~+Esnt-^ep8IxbQfK@dBHby9M|Jh`wDP@O#QV z4xIfo`{w}*mAe=CMdcm^c72w45(V!4GcFIkzz0T9#!6AHfH!|m$u!^&5WTAf_yZ87 z*>1Oq>^jweP9R@|Pl8^AoA6tpm*E}*-uroeS2^%cLB%EbUcjtp`Ca9}4}mEDKH#^N zzul%0*-TpY=im>XC0qykG2DdPK(E0~7y#uVFND7fS_*d`@HZgJi})hy2xvaSCxO~# z5uvt4M7ZWlco&`}Tnjn{H{tg|r{T8Sx+1$+UjX$Yzl3YP0^JgB!mY|p_zut@{9Ay} zgD5>?z?ILj+Y9Ul5g&Si*L_vsCfW$#XFz>O^9b-?K|M&r1aR}$P=*kv-F6e%bSnKz z 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

S!T^q}ekWbPx6FW!Ix$X< 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


Z(Sc{+ar<*B*__ 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%0D(%yZ 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

D?~6+@KaY?dSBbofvARZmgsz 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

?-Cg~82AGfYb><}XNAL15DcBV7k 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 Ic>EIgf8 - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would - * be appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not - * be misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - * - *************************************************************************/ - -#ifndef _glfw3_h_ -#define _glfw3_h_ - -#ifdef __cplusplus -extern "C" { -#endif - - -/************************************************************************* - * Doxygen documentation - *************************************************************************/ - -/*! @file glfw3.h - * @brief The header of the GLFW 3 API. - * - * This is the header file of the GLFW 3 API. It defines all its types and - * declares all its functions. - * - * For more information about how to use this file, see @ref build_include. - */ -/*! @defgroup context Context reference - * @brief Functions and types related to OpenGL and OpenGL ES contexts. - * - * This is the reference documentation for OpenGL and OpenGL ES context related - * functions. For more task-oriented information, see the @ref context_guide. - */ -/*! @defgroup vulkan Vulkan reference - * @brief Functions and types related to Vulkan. - * - * This is the reference documentation for Vulkan related functions and types. - * For more task-oriented information, see the @ref vulkan_guide. - */ -/*! @defgroup init Initialization, version and error reference - * @brief Functions and types related to initialization and error handling. - * - * This is the reference documentation for initialization and termination of - * the library, version management and error handling. For more task-oriented - * information, see the @ref intro_guide. - */ -/*! @defgroup input Input reference - * @brief Functions and types related to input handling. - * - * This is the reference documentation for input related functions and types. - * For more task-oriented information, see the @ref input_guide. - */ -/*! @defgroup monitor Monitor reference - * @brief Functions and types related to monitors. - * - * This is the reference documentation for monitor related functions and types. - * For more task-oriented information, see the @ref monitor_guide. - */ -/*! @defgroup window Window reference - * @brief Functions and types related to windows. - * - * This is the reference documentation for window related functions and types, - * including creation, deletion and event polling. For more task-oriented - * information, see the @ref window_guide. - */ - - -/************************************************************************* - * Compiler- and platform-specific preprocessor work - *************************************************************************/ - -/* If we are we on Windows, we want a single define for it. - */ -#if !defined(_WIN32) && (defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__)) - #define _WIN32 -#endif /* _WIN32 */ - -/* Include because most Windows GLU headers need wchar_t and - * the macOS OpenGL header blocks the definition of ptrdiff_t by glext.h. - * Include it unconditionally to avoid surprising side-effects. - */ -#include - -/* Include because it is needed by Vulkan and related functions. - * Include it unconditionally to avoid surprising side-effects. - */ -#include - -#if defined(GLFW_INCLUDE_VULKAN) - #include -#endif /* Vulkan header */ - -/* The Vulkan header may have indirectly included windows.h (because of - * VK_USE_PLATFORM_WIN32_KHR) so we offer our replacement symbols after it. - */ - -/* It is customary to use APIENTRY for OpenGL function pointer declarations on - * all platforms. Additionally, the Windows OpenGL header needs APIENTRY. - */ -#if !defined(APIENTRY) - #if defined(_WIN32) - #define APIENTRY __stdcall - #else - #define APIENTRY - #endif - #define GLFW_APIENTRY_DEFINED -#endif /* APIENTRY */ - -/* Some Windows OpenGL headers need this. - */ -#if !defined(WINGDIAPI) && defined(_WIN32) - #define WINGDIAPI __declspec(dllimport) - #define GLFW_WINGDIAPI_DEFINED -#endif /* WINGDIAPI */ - -/* Some Windows GLU headers need this. - */ -#if !defined(CALLBACK) && defined(_WIN32) - #define CALLBACK __stdcall - #define GLFW_CALLBACK_DEFINED -#endif /* CALLBACK */ - -/* Include the chosen OpenGL or OpenGL ES headers. - */ -#if defined(GLFW_INCLUDE_ES1) - - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif - -#elif defined(GLFW_INCLUDE_ES2) - - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif - -#elif defined(GLFW_INCLUDE_ES3) - - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif - -#elif defined(GLFW_INCLUDE_ES31) - - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif - -#elif defined(GLFW_INCLUDE_ES32) - - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif - -#elif defined(GLFW_INCLUDE_GLCOREARB) - - #if defined(__APPLE__) - - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif /*GLFW_INCLUDE_GLEXT*/ - - #else /*__APPLE__*/ - - #include - - #endif /*__APPLE__*/ - -#elif !defined(GLFW_INCLUDE_NONE) - - #if defined(__APPLE__) - - #if !defined(GLFW_INCLUDE_GLEXT) - #define GL_GLEXT_LEGACY - #endif - #include - #if defined(GLFW_INCLUDE_GLU) - #include - #endif - - #else /*__APPLE__*/ - - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif - #if defined(GLFW_INCLUDE_GLU) - #include - #endif - - #endif /*__APPLE__*/ - -#endif /* OpenGL and OpenGL ES headers */ - -#if defined(GLFW_DLL) && defined(_GLFW_BUILD_DLL) - /* GLFW_DLL must be defined by applications that are linking against the DLL - * version of the GLFW library. _GLFW_BUILD_DLL is defined by the GLFW - * configuration header when compiling the DLL version of the library. - */ - #error "You must not have both GLFW_DLL and _GLFW_BUILD_DLL defined" -#endif - -/* GLFWAPI is used to declare public API functions for export - * from the DLL / shared library / dynamic library. - */ -#if defined(_WIN32) && defined(_GLFW_BUILD_DLL) - /* We are building GLFW as a Win32 DLL */ - #define GLFWAPI __declspec(dllexport) -#elif defined(_WIN32) && defined(GLFW_DLL) - /* We are calling GLFW as a Win32 DLL */ - #define GLFWAPI __declspec(dllimport) -#elif defined(__GNUC__) && defined(_GLFW_BUILD_DLL) - /* We are building GLFW as a shared / dynamic library */ - #define GLFWAPI __attribute__((visibility("default"))) -#else - /* We are building or calling GLFW as a static library */ - #define GLFWAPI -#endif - - -/************************************************************************* - * GLFW API tokens - *************************************************************************/ - -/*! @name GLFW version macros - * @{ */ -/*! @brief The major version number of the GLFW library. - * - * This is incremented when the API is changed in non-compatible ways. - * @ingroup init - */ -#define GLFW_VERSION_MAJOR 3 -/*! @brief The minor version number of the GLFW library. - * - * This is incremented when features are added to the API but it remains - * backward-compatible. - * @ingroup init - */ -#define GLFW_VERSION_MINOR 3 -/*! @brief The revision number of the GLFW library. - * - * This is incremented when a bug fix release is made that does not contain any - * API changes. - * @ingroup init - */ -#define GLFW_VERSION_REVISION 2 -/*! @} */ - -/*! @brief One. - * - * This is only semantic sugar for the number 1. You can instead use `1` or - * `true` or `_True` or `GL_TRUE` or `VK_TRUE` or anything else that is equal - * to one. - * - * @ingroup init - */ -#define GLFW_TRUE 1 -/*! @brief Zero. - * - * This is only semantic sugar for the number 0. You can instead use `0` or - * `false` or `_False` or `GL_FALSE` or `VK_FALSE` or anything else that is - * equal to zero. - * - * @ingroup init - */ -#define GLFW_FALSE 0 - -/*! @name Key and button actions - * @{ */ -/*! @brief The key or mouse button was released. - * - * The key or mouse button was released. - * - * @ingroup input - */ -#define GLFW_RELEASE 0 -/*! @brief The key or mouse button was pressed. - * - * The key or mouse button was pressed. - * - * @ingroup input - */ -#define GLFW_PRESS 1 -/*! @brief The key was held down until it repeated. - * - * The key was held down until it repeated. - * - * @ingroup input - */ -#define GLFW_REPEAT 2 -/*! @} */ - -/*! @defgroup hat_state Joystick hat states - * @brief Joystick hat states. - * - * See [joystick hat input](@ref joystick_hat) for how these are used. - * - * @ingroup input - * @{ */ -#define GLFW_HAT_CENTERED 0 -#define GLFW_HAT_UP 1 -#define GLFW_HAT_RIGHT 2 -#define GLFW_HAT_DOWN 4 -#define GLFW_HAT_LEFT 8 -#define GLFW_HAT_RIGHT_UP (GLFW_HAT_RIGHT | GLFW_HAT_UP) -#define GLFW_HAT_RIGHT_DOWN (GLFW_HAT_RIGHT | GLFW_HAT_DOWN) -#define GLFW_HAT_LEFT_UP (GLFW_HAT_LEFT | GLFW_HAT_UP) -#define GLFW_HAT_LEFT_DOWN (GLFW_HAT_LEFT | GLFW_HAT_DOWN) -/*! @} */ - -/*! @defgroup keys Keyboard keys - * @brief Keyboard key IDs. - * - * See [key input](@ref input_key) for how these are used. - * - * These key codes are inspired by the _USB HID Usage Tables v1.12_ (p. 53-60), - * but re-arranged to map to 7-bit ASCII for printable keys (function keys are - * put in the 256+ range). - * - * The naming of the key codes follow these rules: - * - The US keyboard layout is used - * - Names of printable alpha-numeric characters are used (e.g. "A", "R", - * "3", etc.) - * - For non-alphanumeric characters, Unicode:ish names are used (e.g. - * "COMMA", "LEFT_SQUARE_BRACKET", etc.). Note that some names do not - * correspond to the Unicode standard (usually for brevity) - * - Keys that lack a clear US mapping are named "WORLD_x" - * - For non-printable keys, custom names are used (e.g. "F4", - * "BACKSPACE", etc.) - * - * @ingroup input - * @{ - */ - -/* The unknown key */ -#define GLFW_KEY_UNKNOWN -1 - -/* Printable keys */ -#define GLFW_KEY_SPACE 32 -#define GLFW_KEY_APOSTROPHE 39 /* ' */ -#define GLFW_KEY_COMMA 44 /* , */ -#define GLFW_KEY_MINUS 45 /* - */ -#define GLFW_KEY_PERIOD 46 /* . */ -#define GLFW_KEY_SLASH 47 /* / */ -#define GLFW_KEY_0 48 -#define GLFW_KEY_1 49 -#define GLFW_KEY_2 50 -#define GLFW_KEY_3 51 -#define GLFW_KEY_4 52 -#define GLFW_KEY_5 53 -#define GLFW_KEY_6 54 -#define GLFW_KEY_7 55 -#define GLFW_KEY_8 56 -#define GLFW_KEY_9 57 -#define GLFW_KEY_SEMICOLON 59 /* ; */ -#define GLFW_KEY_EQUAL 61 /* = */ -#define GLFW_KEY_A 65 -#define GLFW_KEY_B 66 -#define GLFW_KEY_C 67 -#define GLFW_KEY_D 68 -#define GLFW_KEY_E 69 -#define GLFW_KEY_F 70 -#define GLFW_KEY_G 71 -#define GLFW_KEY_H 72 -#define GLFW_KEY_I 73 -#define GLFW_KEY_J 74 -#define GLFW_KEY_K 75 -#define GLFW_KEY_L 76 -#define GLFW_KEY_M 77 -#define GLFW_KEY_N 78 -#define GLFW_KEY_O 79 -#define GLFW_KEY_P 80 -#define GLFW_KEY_Q 81 -#define GLFW_KEY_R 82 -#define GLFW_KEY_S 83 -#define GLFW_KEY_T 84 -#define GLFW_KEY_U 85 -#define GLFW_KEY_V 86 -#define GLFW_KEY_W 87 -#define GLFW_KEY_X 88 -#define GLFW_KEY_Y 89 -#define GLFW_KEY_Z 90 -#define GLFW_KEY_LEFT_BRACKET 91 /* [ */ -#define GLFW_KEY_BACKSLASH 92 /* \ */ -#define GLFW_KEY_RIGHT_BRACKET 93 /* ] */ -#define GLFW_KEY_GRAVE_ACCENT 96 /* ` */ -#define GLFW_KEY_WORLD_1 161 /* non-US #1 */ -#define GLFW_KEY_WORLD_2 162 /* non-US #2 */ - -/* Function keys */ -#define GLFW_KEY_ESCAPE 256 -#define GLFW_KEY_ENTER 257 -#define GLFW_KEY_TAB 258 -#define GLFW_KEY_BACKSPACE 259 -#define GLFW_KEY_INSERT 260 -#define GLFW_KEY_DELETE 261 -#define GLFW_KEY_RIGHT 262 -#define GLFW_KEY_LEFT 263 -#define GLFW_KEY_DOWN 264 -#define GLFW_KEY_UP 265 -#define GLFW_KEY_PAGE_UP 266 -#define GLFW_KEY_PAGE_DOWN 267 -#define GLFW_KEY_HOME 268 -#define GLFW_KEY_END 269 -#define GLFW_KEY_CAPS_LOCK 280 -#define GLFW_KEY_SCROLL_LOCK 281 -#define GLFW_KEY_NUM_LOCK 282 -#define GLFW_KEY_PRINT_SCREEN 283 -#define GLFW_KEY_PAUSE 284 -#define GLFW_KEY_F1 290 -#define GLFW_KEY_F2 291 -#define GLFW_KEY_F3 292 -#define GLFW_KEY_F4 293 -#define GLFW_KEY_F5 294 -#define GLFW_KEY_F6 295 -#define GLFW_KEY_F7 296 -#define GLFW_KEY_F8 297 -#define GLFW_KEY_F9 298 -#define GLFW_KEY_F10 299 -#define GLFW_KEY_F11 300 -#define GLFW_KEY_F12 301 -#define GLFW_KEY_F13 302 -#define GLFW_KEY_F14 303 -#define GLFW_KEY_F15 304 -#define GLFW_KEY_F16 305 -#define GLFW_KEY_F17 306 -#define GLFW_KEY_F18 307 -#define GLFW_KEY_F19 308 -#define GLFW_KEY_F20 309 -#define GLFW_KEY_F21 310 -#define GLFW_KEY_F22 311 -#define GLFW_KEY_F23 312 -#define GLFW_KEY_F24 313 -#define GLFW_KEY_F25 314 -#define GLFW_KEY_KP_0 320 -#define GLFW_KEY_KP_1 321 -#define GLFW_KEY_KP_2 322 -#define GLFW_KEY_KP_3 323 -#define GLFW_KEY_KP_4 324 -#define GLFW_KEY_KP_5 325 -#define GLFW_KEY_KP_6 326 -#define GLFW_KEY_KP_7 327 -#define GLFW_KEY_KP_8 328 -#define GLFW_KEY_KP_9 329 -#define GLFW_KEY_KP_DECIMAL 330 -#define GLFW_KEY_KP_DIVIDE 331 -#define GLFW_KEY_KP_MULTIPLY 332 -#define GLFW_KEY_KP_SUBTRACT 333 -#define GLFW_KEY_KP_ADD 334 -#define GLFW_KEY_KP_ENTER 335 -#define GLFW_KEY_KP_EQUAL 336 -#define GLFW_KEY_LEFT_SHIFT 340 -#define GLFW_KEY_LEFT_CONTROL 341 -#define GLFW_KEY_LEFT_ALT 342 -#define GLFW_KEY_LEFT_SUPER 343 -#define GLFW_KEY_RIGHT_SHIFT 344 -#define GLFW_KEY_RIGHT_CONTROL 345 -#define GLFW_KEY_RIGHT_ALT 346 -#define GLFW_KEY_RIGHT_SUPER 347 -#define GLFW_KEY_MENU 348 - -#define GLFW_KEY_LAST GLFW_KEY_MENU - -/*! @} */ - -/*! @defgroup mods Modifier key flags - * @brief Modifier key flags. - * - * See [key input](@ref input_key) for how these are used. - * - * @ingroup input - * @{ */ - -/*! @brief If this bit is set one or more Shift keys were held down. - * - * If this bit is set one or more Shift keys were held down. - */ -#define GLFW_MOD_SHIFT 0x0001 -/*! @brief If this bit is set one or more Control keys were held down. - * - * If this bit is set one or more Control keys were held down. - */ -#define GLFW_MOD_CONTROL 0x0002 -/*! @brief If this bit is set one or more Alt keys were held down. - * - * If this bit is set one or more Alt keys were held down. - */ -#define GLFW_MOD_ALT 0x0004 -/*! @brief If this bit is set one or more Super keys were held down. - * - * If this bit is set one or more Super keys were held down. - */ -#define GLFW_MOD_SUPER 0x0008 -/*! @brief If this bit is set the Caps Lock key is enabled. - * - * If this bit is set the Caps Lock key is enabled and the @ref - * GLFW_LOCK_KEY_MODS input mode is set. - */ -#define GLFW_MOD_CAPS_LOCK 0x0010 -/*! @brief If this bit is set the Num Lock key is enabled. - * - * If this bit is set the Num Lock key is enabled and the @ref - * GLFW_LOCK_KEY_MODS input mode is set. - */ -#define GLFW_MOD_NUM_LOCK 0x0020 - -/*! @} */ - -/*! @defgroup buttons Mouse buttons - * @brief Mouse button IDs. - * - * See [mouse button input](@ref input_mouse_button) for how these are used. - * - * @ingroup input - * @{ */ -#define GLFW_MOUSE_BUTTON_1 0 -#define GLFW_MOUSE_BUTTON_2 1 -#define GLFW_MOUSE_BUTTON_3 2 -#define GLFW_MOUSE_BUTTON_4 3 -#define GLFW_MOUSE_BUTTON_5 4 -#define GLFW_MOUSE_BUTTON_6 5 -#define GLFW_MOUSE_BUTTON_7 6 -#define GLFW_MOUSE_BUTTON_8 7 -#define GLFW_MOUSE_BUTTON_LAST GLFW_MOUSE_BUTTON_8 -#define GLFW_MOUSE_BUTTON_LEFT GLFW_MOUSE_BUTTON_1 -#define GLFW_MOUSE_BUTTON_RIGHT GLFW_MOUSE_BUTTON_2 -#define GLFW_MOUSE_BUTTON_MIDDLE GLFW_MOUSE_BUTTON_3 -/*! @} */ - -/*! @defgroup joysticks Joysticks - * @brief Joystick IDs. - * - * See [joystick input](@ref joystick) for how these are used. - * - * @ingroup input - * @{ */ -#define GLFW_JOYSTICK_1 0 -#define GLFW_JOYSTICK_2 1 -#define GLFW_JOYSTICK_3 2 -#define GLFW_JOYSTICK_4 3 -#define GLFW_JOYSTICK_5 4 -#define GLFW_JOYSTICK_6 5 -#define GLFW_JOYSTICK_7 6 -#define GLFW_JOYSTICK_8 7 -#define GLFW_JOYSTICK_9 8 -#define GLFW_JOYSTICK_10 9 -#define GLFW_JOYSTICK_11 10 -#define GLFW_JOYSTICK_12 11 -#define GLFW_JOYSTICK_13 12 -#define GLFW_JOYSTICK_14 13 -#define GLFW_JOYSTICK_15 14 -#define GLFW_JOYSTICK_16 15 -#define GLFW_JOYSTICK_LAST GLFW_JOYSTICK_16 -/*! @} */ - -/*! @defgroup gamepad_buttons Gamepad buttons - * @brief Gamepad buttons. - * - * See @ref gamepad for how these are used. - * - * @ingroup input - * @{ */ -#define GLFW_GAMEPAD_BUTTON_A 0 -#define GLFW_GAMEPAD_BUTTON_B 1 -#define GLFW_GAMEPAD_BUTTON_X 2 -#define GLFW_GAMEPAD_BUTTON_Y 3 -#define GLFW_GAMEPAD_BUTTON_LEFT_BUMPER 4 -#define GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER 5 -#define GLFW_GAMEPAD_BUTTON_BACK 6 -#define GLFW_GAMEPAD_BUTTON_START 7 -#define GLFW_GAMEPAD_BUTTON_GUIDE 8 -#define GLFW_GAMEPAD_BUTTON_LEFT_THUMB 9 -#define GLFW_GAMEPAD_BUTTON_RIGHT_THUMB 10 -#define GLFW_GAMEPAD_BUTTON_DPAD_UP 11 -#define GLFW_GAMEPAD_BUTTON_DPAD_RIGHT 12 -#define GLFW_GAMEPAD_BUTTON_DPAD_DOWN 13 -#define GLFW_GAMEPAD_BUTTON_DPAD_LEFT 14 -#define GLFW_GAMEPAD_BUTTON_LAST GLFW_GAMEPAD_BUTTON_DPAD_LEFT - -#define GLFW_GAMEPAD_BUTTON_CROSS GLFW_GAMEPAD_BUTTON_A -#define GLFW_GAMEPAD_BUTTON_CIRCLE GLFW_GAMEPAD_BUTTON_B -#define GLFW_GAMEPAD_BUTTON_SQUARE GLFW_GAMEPAD_BUTTON_X -#define GLFW_GAMEPAD_BUTTON_TRIANGLE GLFW_GAMEPAD_BUTTON_Y -/*! @} */ - -/*! @defgroup gamepad_axes Gamepad axes - * @brief Gamepad axes. - * - * See @ref gamepad for how these are used. - * - * @ingroup input - * @{ */ -#define GLFW_GAMEPAD_AXIS_LEFT_X 0 -#define GLFW_GAMEPAD_AXIS_LEFT_Y 1 -#define GLFW_GAMEPAD_AXIS_RIGHT_X 2 -#define GLFW_GAMEPAD_AXIS_RIGHT_Y 3 -#define GLFW_GAMEPAD_AXIS_LEFT_TRIGGER 4 -#define GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER 5 -#define GLFW_GAMEPAD_AXIS_LAST GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER -/*! @} */ - -/*! @defgroup errors Error codes - * @brief Error codes. - * - * See [error handling](@ref error_handling) for how these are used. - * - * @ingroup init - * @{ */ -/*! @brief No error has occurred. - * - * No error has occurred. - * - * @analysis Yay. - */ -#define GLFW_NO_ERROR 0 -/*! @brief GLFW has not been initialized. - * - * This occurs if a GLFW function was called that must not be called unless the - * library is [initialized](@ref intro_init). - * - * @analysis Application programmer error. Initialize GLFW before calling any - * function that requires initialization. - */ -#define GLFW_NOT_INITIALIZED 0x00010001 -/*! @brief No context is current for this thread. - * - * This occurs if a GLFW function was called that needs and operates on the - * current OpenGL or OpenGL ES context but no context is current on the calling - * thread. One such function is @ref glfwSwapInterval. - * - * @analysis Application programmer error. Ensure a context is current before - * calling functions that require a current context. - */ -#define GLFW_NO_CURRENT_CONTEXT 0x00010002 -/*! @brief One of the arguments to the function was an invalid enum value. - * - * One of the arguments to the function was an invalid enum value, for example - * requesting @ref GLFW_RED_BITS with @ref glfwGetWindowAttrib. - * - * @analysis Application programmer error. Fix the offending call. - */ -#define GLFW_INVALID_ENUM 0x00010003 -/*! @brief One of the arguments to the function was an invalid value. - * - * One of the arguments to the function was an invalid value, for example - * requesting a non-existent OpenGL or OpenGL ES version like 2.7. - * - * Requesting a valid but unavailable OpenGL or OpenGL ES version will instead - * result in a @ref GLFW_VERSION_UNAVAILABLE error. - * - * @analysis Application programmer error. Fix the offending call. - */ -#define GLFW_INVALID_VALUE 0x00010004 -/*! @brief A memory allocation failed. - * - * A memory allocation failed. - * - * @analysis A bug in GLFW or the underlying operating system. Report the bug - * to our [issue tracker](https://github.com/glfw/glfw/issues). - */ -#define GLFW_OUT_OF_MEMORY 0x00010005 -/*! @brief GLFW could not find support for the requested API on the system. - * - * GLFW could not find support for the requested API on the system. - * - * @analysis The installed graphics driver does not support the requested - * API, or does not support it via the chosen context creation backend. - * Below are a few examples. - * - * @par - * Some pre-installed Windows graphics drivers do not support OpenGL. AMD only - * supports OpenGL ES via EGL, while Nvidia and Intel only support it via - * a WGL or GLX extension. macOS does not provide OpenGL ES at all. The Mesa - * EGL, OpenGL and OpenGL ES libraries do not interface with the Nvidia binary - * driver. Older graphics drivers do not support Vulkan. - */ -#define GLFW_API_UNAVAILABLE 0x00010006 -/*! @brief The requested OpenGL or OpenGL ES version is not available. - * - * The requested OpenGL or OpenGL ES version (including any requested context - * or framebuffer hints) is not available on this machine. - * - * @analysis The machine does not support your requirements. If your - * application is sufficiently flexible, downgrade your requirements and try - * again. Otherwise, inform the user that their machine does not match your - * requirements. - * - * @par - * Future invalid OpenGL and OpenGL ES versions, for example OpenGL 4.8 if 5.0 - * comes out before the 4.x series gets that far, also fail with this error and - * not @ref GLFW_INVALID_VALUE, because GLFW cannot know what future versions - * will exist. - */ -#define GLFW_VERSION_UNAVAILABLE 0x00010007 -/*! @brief A platform-specific error occurred that does not match any of the - * more specific categories. - * - * A platform-specific error occurred that does not match any of the more - * specific categories. - * - * @analysis A bug or configuration error in GLFW, the underlying operating - * system or its drivers, or a lack of required resources. Report the issue to - * our [issue tracker](https://github.com/glfw/glfw/issues). - */ -#define GLFW_PLATFORM_ERROR 0x00010008 -/*! @brief The requested format is not supported or available. - * - * If emitted during window creation, the requested pixel format is not - * supported. - * - * If emitted when querying the clipboard, the contents of the clipboard could - * not be converted to the requested format. - * - * @analysis If emitted during window creation, one or more - * [hard constraints](@ref window_hints_hard) did not match any of the - * available pixel formats. If your application is sufficiently flexible, - * downgrade your requirements and try again. Otherwise, inform the user that - * their machine does not match your requirements. - * - * @par - * If emitted when querying the clipboard, ignore the error or report it to - * the user, as appropriate. - */ -#define GLFW_FORMAT_UNAVAILABLE 0x00010009 -/*! @brief The specified window does not have an OpenGL or OpenGL ES context. - * - * A window that does not have an OpenGL or OpenGL ES context was passed to - * a function that requires it to have one. - * - * @analysis Application programmer error. Fix the offending call. - */ -#define GLFW_NO_WINDOW_CONTEXT 0x0001000A -/*! @} */ - -/*! @addtogroup window - * @{ */ -/*! @brief Input focus window hint and attribute - * - * Input focus [window hint](@ref GLFW_FOCUSED_hint) or - * [window attribute](@ref GLFW_FOCUSED_attrib). - */ -#define GLFW_FOCUSED 0x00020001 -/*! @brief Window iconification window attribute - * - * Window iconification [window attribute](@ref GLFW_ICONIFIED_attrib). - */ -#define GLFW_ICONIFIED 0x00020002 -/*! @brief Window resize-ability window hint and attribute - * - * Window resize-ability [window hint](@ref GLFW_RESIZABLE_hint) and - * [window attribute](@ref GLFW_RESIZABLE_attrib). - */ -#define GLFW_RESIZABLE 0x00020003 -/*! @brief Window visibility window hint and attribute - * - * Window visibility [window hint](@ref GLFW_VISIBLE_hint) and - * [window attribute](@ref GLFW_VISIBLE_attrib). - */ -#define GLFW_VISIBLE 0x00020004 -/*! @brief Window decoration window hint and attribute - * - * Window decoration [window hint](@ref GLFW_DECORATED_hint) and - * [window attribute](@ref GLFW_DECORATED_attrib). - */ -#define GLFW_DECORATED 0x00020005 -/*! @brief Window auto-iconification window hint and attribute - * - * Window auto-iconification [window hint](@ref GLFW_AUTO_ICONIFY_hint) and - * [window attribute](@ref GLFW_AUTO_ICONIFY_attrib). - */ -#define GLFW_AUTO_ICONIFY 0x00020006 -/*! @brief Window decoration window hint and attribute - * - * Window decoration [window hint](@ref GLFW_FLOATING_hint) and - * [window attribute](@ref GLFW_FLOATING_attrib). - */ -#define GLFW_FLOATING 0x00020007 -/*! @brief Window maximization window hint and attribute - * - * Window maximization [window hint](@ref GLFW_MAXIMIZED_hint) and - * [window attribute](@ref GLFW_MAXIMIZED_attrib). - */ -#define GLFW_MAXIMIZED 0x00020008 -/*! @brief Cursor centering window hint - * - * Cursor centering [window hint](@ref GLFW_CENTER_CURSOR_hint). - */ -#define GLFW_CENTER_CURSOR 0x00020009 -/*! @brief Window framebuffer transparency hint and attribute - * - * Window framebuffer transparency - * [window hint](@ref GLFW_TRANSPARENT_FRAMEBUFFER_hint) and - * [window attribute](@ref GLFW_TRANSPARENT_FRAMEBUFFER_attrib). - */ -#define GLFW_TRANSPARENT_FRAMEBUFFER 0x0002000A -/*! @brief Mouse cursor hover window attribute. - * - * Mouse cursor hover [window attribute](@ref GLFW_HOVERED_attrib). - */ -#define GLFW_HOVERED 0x0002000B -/*! @brief Input focus on calling show window hint and attribute - * - * Input focus [window hint](@ref GLFW_FOCUS_ON_SHOW_hint) or - * [window attribute](@ref GLFW_FOCUS_ON_SHOW_attrib). - */ -#define GLFW_FOCUS_ON_SHOW 0x0002000C - -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_RED_BITS). - */ -#define GLFW_RED_BITS 0x00021001 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_GREEN_BITS). - */ -#define GLFW_GREEN_BITS 0x00021002 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_BLUE_BITS). - */ -#define GLFW_BLUE_BITS 0x00021003 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_ALPHA_BITS). - */ -#define GLFW_ALPHA_BITS 0x00021004 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_DEPTH_BITS). - */ -#define GLFW_DEPTH_BITS 0x00021005 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_STENCIL_BITS). - */ -#define GLFW_STENCIL_BITS 0x00021006 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_ACCUM_RED_BITS). - */ -#define GLFW_ACCUM_RED_BITS 0x00021007 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_ACCUM_GREEN_BITS). - */ -#define GLFW_ACCUM_GREEN_BITS 0x00021008 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_ACCUM_BLUE_BITS). - */ -#define GLFW_ACCUM_BLUE_BITS 0x00021009 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_ACCUM_ALPHA_BITS). - */ -#define GLFW_ACCUM_ALPHA_BITS 0x0002100A -/*! @brief Framebuffer auxiliary buffer hint. - * - * Framebuffer auxiliary buffer [hint](@ref GLFW_AUX_BUFFERS). - */ -#define GLFW_AUX_BUFFERS 0x0002100B -/*! @brief OpenGL stereoscopic rendering hint. - * - * OpenGL stereoscopic rendering [hint](@ref GLFW_STEREO). - */ -#define GLFW_STEREO 0x0002100C -/*! @brief Framebuffer MSAA samples hint. - * - * Framebuffer MSAA samples [hint](@ref GLFW_SAMPLES). - */ -#define GLFW_SAMPLES 0x0002100D -/*! @brief Framebuffer sRGB hint. - * - * Framebuffer sRGB [hint](@ref GLFW_SRGB_CAPABLE). - */ -#define GLFW_SRGB_CAPABLE 0x0002100E -/*! @brief Monitor refresh rate hint. - * - * Monitor refresh rate [hint](@ref GLFW_REFRESH_RATE). - */ -#define GLFW_REFRESH_RATE 0x0002100F -/*! @brief Framebuffer double buffering hint. - * - * Framebuffer double buffering [hint](@ref GLFW_DOUBLEBUFFER). - */ -#define GLFW_DOUBLEBUFFER 0x00021010 - -/*! @brief Context client API hint and attribute. - * - * Context client API [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). - */ -#define GLFW_CLIENT_API 0x00022001 -/*! @brief Context client API major version hint and attribute. - * - * Context client API major version [hint](@ref GLFW_CONTEXT_VERSION_MAJOR_hint) - * and [attribute](@ref GLFW_CONTEXT_VERSION_MAJOR_attrib). - */ -#define GLFW_CONTEXT_VERSION_MAJOR 0x00022002 -/*! @brief Context client API minor version hint and attribute. - * - * Context client API minor version [hint](@ref GLFW_CONTEXT_VERSION_MINOR_hint) - * and [attribute](@ref GLFW_CONTEXT_VERSION_MINOR_attrib). - */ -#define GLFW_CONTEXT_VERSION_MINOR 0x00022003 -/*! @brief Context client API revision number hint and attribute. - * - * Context client API revision number - * [attribute](@ref GLFW_CONTEXT_REVISION_attrib). - */ -#define GLFW_CONTEXT_REVISION 0x00022004 -/*! @brief Context robustness hint and attribute. - * - * Context client API revision number [hint](@ref GLFW_CONTEXT_ROBUSTNESS_hint) - * and [attribute](@ref GLFW_CONTEXT_ROBUSTNESS_attrib). - */ -#define GLFW_CONTEXT_ROBUSTNESS 0x00022005 -/*! @brief OpenGL forward-compatibility hint and attribute. - * - * OpenGL forward-compatibility [hint](@ref GLFW_OPENGL_FORWARD_COMPAT_hint) - * and [attribute](@ref GLFW_OPENGL_FORWARD_COMPAT_attrib). - */ -#define GLFW_OPENGL_FORWARD_COMPAT 0x00022006 -/*! @brief OpenGL debug context hint and attribute. - * - * OpenGL debug context [hint](@ref GLFW_OPENGL_DEBUG_CONTEXT_hint) and - * [attribute](@ref GLFW_OPENGL_DEBUG_CONTEXT_attrib). - */ -#define GLFW_OPENGL_DEBUG_CONTEXT 0x00022007 -/*! @brief OpenGL profile hint and attribute. - * - * OpenGL profile [hint](@ref GLFW_OPENGL_PROFILE_hint) and - * [attribute](@ref GLFW_OPENGL_PROFILE_attrib). - */ -#define GLFW_OPENGL_PROFILE 0x00022008 -/*! @brief Context flush-on-release hint and attribute. - * - * Context flush-on-release [hint](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint) and - * [attribute](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_attrib). - */ -#define GLFW_CONTEXT_RELEASE_BEHAVIOR 0x00022009 -/*! @brief Context error suppression hint and attribute. - * - * Context error suppression [hint](@ref GLFW_CONTEXT_NO_ERROR_hint) and - * [attribute](@ref GLFW_CONTEXT_NO_ERROR_attrib). - */ -#define GLFW_CONTEXT_NO_ERROR 0x0002200A -/*! @brief Context creation API hint and attribute. - * - * Context creation API [hint](@ref GLFW_CONTEXT_CREATION_API_hint) and - * [attribute](@ref GLFW_CONTEXT_CREATION_API_attrib). - */ -#define GLFW_CONTEXT_CREATION_API 0x0002200B -/*! @brief Window content area scaling window - * [window hint](@ref GLFW_SCALE_TO_MONITOR). - */ -#define GLFW_SCALE_TO_MONITOR 0x0002200C -/*! @brief macOS specific - * [window hint](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint). - */ -#define GLFW_COCOA_RETINA_FRAMEBUFFER 0x00023001 -/*! @brief macOS specific - * [window hint](@ref GLFW_COCOA_FRAME_NAME_hint). - */ -#define GLFW_COCOA_FRAME_NAME 0x00023002 -/*! @brief macOS specific - * [window hint](@ref GLFW_COCOA_GRAPHICS_SWITCHING_hint). - */ -#define GLFW_COCOA_GRAPHICS_SWITCHING 0x00023003 -/*! @brief X11 specific - * [window hint](@ref GLFW_X11_CLASS_NAME_hint). - */ -#define GLFW_X11_CLASS_NAME 0x00024001 -/*! @brief X11 specific - * [window hint](@ref GLFW_X11_CLASS_NAME_hint). - */ -#define GLFW_X11_INSTANCE_NAME 0x00024002 -/*! @} */ - -#define GLFW_NO_API 0 -#define GLFW_OPENGL_API 0x00030001 -#define GLFW_OPENGL_ES_API 0x00030002 - -#define GLFW_NO_ROBUSTNESS 0 -#define GLFW_NO_RESET_NOTIFICATION 0x00031001 -#define GLFW_LOSE_CONTEXT_ON_RESET 0x00031002 - -#define GLFW_OPENGL_ANY_PROFILE 0 -#define GLFW_OPENGL_CORE_PROFILE 0x00032001 -#define GLFW_OPENGL_COMPAT_PROFILE 0x00032002 - -#define GLFW_CURSOR 0x00033001 -#define GLFW_STICKY_KEYS 0x00033002 -#define GLFW_STICKY_MOUSE_BUTTONS 0x00033003 -#define GLFW_LOCK_KEY_MODS 0x00033004 -#define GLFW_RAW_MOUSE_MOTION 0x00033005 - -#define GLFW_CURSOR_NORMAL 0x00034001 -#define GLFW_CURSOR_HIDDEN 0x00034002 -#define GLFW_CURSOR_DISABLED 0x00034003 - -#define GLFW_ANY_RELEASE_BEHAVIOR 0 -#define GLFW_RELEASE_BEHAVIOR_FLUSH 0x00035001 -#define GLFW_RELEASE_BEHAVIOR_NONE 0x00035002 - -#define GLFW_NATIVE_CONTEXT_API 0x00036001 -#define GLFW_EGL_CONTEXT_API 0x00036002 -#define GLFW_OSMESA_CONTEXT_API 0x00036003 - -/*! @defgroup shapes Standard cursor shapes - * @brief Standard system cursor shapes. - * - * See [standard cursor creation](@ref cursor_standard) for how these are used. - * - * @ingroup input - * @{ */ - -/*! @brief The regular arrow cursor shape. - * - * The regular arrow cursor. - */ -#define GLFW_ARROW_CURSOR 0x00036001 -/*! @brief The text input I-beam cursor shape. - * - * The text input I-beam cursor shape. - */ -#define GLFW_IBEAM_CURSOR 0x00036002 -/*! @brief The crosshair shape. - * - * The crosshair shape. - */ -#define GLFW_CROSSHAIR_CURSOR 0x00036003 -/*! @brief The hand shape. - * - * The hand shape. - */ -#define GLFW_HAND_CURSOR 0x00036004 -/*! @brief The horizontal resize arrow shape. - * - * The horizontal resize arrow shape. - */ -#define GLFW_HRESIZE_CURSOR 0x00036005 -/*! @brief The vertical resize arrow shape. - * - * The vertical resize arrow shape. - */ -#define GLFW_VRESIZE_CURSOR 0x00036006 -/*! @} */ - -#define GLFW_CONNECTED 0x00040001 -#define GLFW_DISCONNECTED 0x00040002 - -/*! @addtogroup init - * @{ */ -/*! @brief Joystick hat buttons init hint. - * - * Joystick hat buttons [init hint](@ref GLFW_JOYSTICK_HAT_BUTTONS). - */ -#define GLFW_JOYSTICK_HAT_BUTTONS 0x00050001 -/*! @brief macOS specific init hint. - * - * macOS specific [init hint](@ref GLFW_COCOA_CHDIR_RESOURCES_hint). - */ -#define GLFW_COCOA_CHDIR_RESOURCES 0x00051001 -/*! @brief macOS specific init hint. - * - * macOS specific [init hint](@ref GLFW_COCOA_MENUBAR_hint). - */ -#define GLFW_COCOA_MENUBAR 0x00051002 -/*! @} */ - -#define GLFW_DONT_CARE -1 - - -/************************************************************************* - * GLFW API types - *************************************************************************/ - -/*! @brief Client API function pointer type. - * - * Generic function pointer used for returning client API function pointers - * without forcing a cast from a regular pointer. - * - * @sa @ref context_glext - * @sa @ref glfwGetProcAddress - * - * @since Added in version 3.0. - * - * @ingroup context - */ -typedef void (*GLFWglproc)(void); - -/*! @brief Vulkan API function pointer type. - * - * Generic function pointer used for returning Vulkan API function pointers - * without forcing a cast from a regular pointer. - * - * @sa @ref vulkan_proc - * @sa @ref glfwGetInstanceProcAddress - * - * @since Added in version 3.2. - * - * @ingroup vulkan - */ -typedef void (*GLFWvkproc)(void); - -/*! @brief Opaque monitor object. - * - * Opaque monitor object. - * - * @see @ref monitor_object - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -typedef struct GLFWmonitor GLFWmonitor; - -/*! @brief Opaque window object. - * - * Opaque window object. - * - * @see @ref window_object - * - * @since Added in version 3.0. - * - * @ingroup window - */ -typedef struct GLFWwindow GLFWwindow; - -/*! @brief Opaque cursor object. - * - * Opaque cursor object. - * - * @see @ref cursor_object - * - * @since Added in version 3.1. - * - * @ingroup input - */ -typedef struct GLFWcursor GLFWcursor; - -/*! @brief The function pointer type for error callbacks. - * - * This is the function pointer type for error callbacks. An error callback - * function has the following signature: - * @code - * void callback_name(int error_code, const char* description) - * @endcode - * - * @param[in] error_code An [error code](@ref errors). Future releases may add - * more error codes. - * @param[in] description A UTF-8 encoded string describing the error. - * - * @pointer_lifetime The error description string is valid until the callback - * function returns. - * - * @sa @ref error_handling - * @sa @ref glfwSetErrorCallback - * - * @since Added in version 3.0. - * - * @ingroup init - */ -typedef void (* GLFWerrorfun)(int,const char*); - -/*! @brief The function pointer type for window position callbacks. - * - * This is the function pointer type for window position callbacks. A window - * position callback function has the following signature: - * @code - * void callback_name(GLFWwindow* window, int xpos, int ypos) - * @endcode - * - * @param[in] window The window that was moved. - * @param[in] xpos The new x-coordinate, in screen coordinates, of the - * upper-left corner of the content area of the window. - * @param[in] ypos The new y-coordinate, in screen coordinates, of the - * upper-left corner of the content area of the window. - * - * @sa @ref window_pos - * @sa @ref glfwSetWindowPosCallback - * - * @since Added in version 3.0. - * - * @ingroup window - */ -typedef void (* GLFWwindowposfun)(GLFWwindow*,int,int); - -/*! @brief The function pointer type for window size callbacks. - * - * This is the function pointer type for window size callbacks. A window size - * callback function has the following signature: - * @code - * void callback_name(GLFWwindow* window, int width, int height) - * @endcode - * - * @param[in] window The window that was resized. - * @param[in] width The new width, in screen coordinates, of the window. - * @param[in] height The new height, in screen coordinates, of the window. - * - * @sa @ref window_size - * @sa @ref glfwSetWindowSizeCallback - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -typedef void (* GLFWwindowsizefun)(GLFWwindow*,int,int); - -/*! @brief The function pointer type for window close callbacks. - * - * This is the function pointer type for window close callbacks. A window - * close callback function has the following signature: - * @code - * void function_name(GLFWwindow* window) - * @endcode - * - * @param[in] window The window that the user attempted to close. - * - * @sa @ref window_close - * @sa @ref glfwSetWindowCloseCallback - * - * @since Added in version 2.5. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -typedef void (* GLFWwindowclosefun)(GLFWwindow*); - -/*! @brief The function pointer type for window content refresh callbacks. - * - * This is the function pointer type for window content refresh callbacks. - * A window content refresh callback function has the following signature: - * @code - * void function_name(GLFWwindow* window); - * @endcode - * - * @param[in] window The window whose content needs to be refreshed. - * - * @sa @ref window_refresh - * @sa @ref glfwSetWindowRefreshCallback - * - * @since Added in version 2.5. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -typedef void (* GLFWwindowrefreshfun)(GLFWwindow*); - -/*! @brief The function pointer type for window focus callbacks. - * - * This is the function pointer type for window focus callbacks. A window - * focus callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, int focused) - * @endcode - * - * @param[in] window The window that gained or lost input focus. - * @param[in] focused `GLFW_TRUE` if the window was given input focus, or - * `GLFW_FALSE` if it lost it. - * - * @sa @ref window_focus - * @sa @ref glfwSetWindowFocusCallback - * - * @since Added in version 3.0. - * - * @ingroup window - */ -typedef void (* GLFWwindowfocusfun)(GLFWwindow*,int); - -/*! @brief The function pointer type for window iconify callbacks. - * - * This is the function pointer type for window iconify callbacks. A window - * iconify callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, int iconified) - * @endcode - * - * @param[in] window The window that was iconified or restored. - * @param[in] iconified `GLFW_TRUE` if the window was iconified, or - * `GLFW_FALSE` if it was restored. - * - * @sa @ref window_iconify - * @sa @ref glfwSetWindowIconifyCallback - * - * @since Added in version 3.0. - * - * @ingroup window - */ -typedef void (* GLFWwindowiconifyfun)(GLFWwindow*,int); - -/*! @brief The function pointer type for window maximize callbacks. - * - * This is the function pointer type for window maximize callbacks. A window - * maximize callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, int maximized) - * @endcode - * - * @param[in] window The window that was maximized or restored. - * @param[in] iconified `GLFW_TRUE` if the window was maximized, or - * `GLFW_FALSE` if it was restored. - * - * @sa @ref window_maximize - * @sa glfwSetWindowMaximizeCallback - * - * @since Added in version 3.3. - * - * @ingroup window - */ -typedef void (* GLFWwindowmaximizefun)(GLFWwindow*,int); - -/*! @brief The function pointer type for framebuffer size callbacks. - * - * This is the function pointer type for framebuffer size callbacks. - * A framebuffer size callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, int width, int height) - * @endcode - * - * @param[in] window The window whose framebuffer was resized. - * @param[in] width The new width, in pixels, of the framebuffer. - * @param[in] height The new height, in pixels, of the framebuffer. - * - * @sa @ref window_fbsize - * @sa @ref glfwSetFramebufferSizeCallback - * - * @since Added in version 3.0. - * - * @ingroup window - */ -typedef void (* GLFWframebuffersizefun)(GLFWwindow*,int,int); - -/*! @brief The function pointer type for window content scale callbacks. - * - * This is the function pointer type for window content scale callbacks. - * A window content scale callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, float xscale, float yscale) - * @endcode - * - * @param[in] window The window whose content scale changed. - * @param[in] xscale The new x-axis content scale of the window. - * @param[in] yscale The new y-axis content scale of the window. - * - * @sa @ref window_scale - * @sa @ref glfwSetWindowContentScaleCallback - * - * @since Added in version 3.3. - * - * @ingroup window - */ -typedef void (* GLFWwindowcontentscalefun)(GLFWwindow*,float,float); - -/*! @brief The function pointer type for mouse button callbacks. - * - * This is the function pointer type for mouse button callback functions. - * A mouse button callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, int button, int action, int mods) - * @endcode - * - * @param[in] window The window that received the event. - * @param[in] button The [mouse button](@ref buttons) that was pressed or - * released. - * @param[in] action One of `GLFW_PRESS` or `GLFW_RELEASE`. Future releases - * may add more actions. - * @param[in] mods Bit field describing which [modifier keys](@ref mods) were - * held down. - * - * @sa @ref input_mouse_button - * @sa @ref glfwSetMouseButtonCallback - * - * @since Added in version 1.0. - * @glfw3 Added window handle and modifier mask parameters. - * - * @ingroup input - */ -typedef void (* GLFWmousebuttonfun)(GLFWwindow*,int,int,int); - -/*! @brief The function pointer type for cursor position callbacks. - * - * This is the function pointer type for cursor position callbacks. A cursor - * position callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, double xpos, double ypos); - * @endcode - * - * @param[in] window The window that received the event. - * @param[in] xpos The new cursor x-coordinate, relative to the left edge of - * the content area. - * @param[in] ypos The new cursor y-coordinate, relative to the top edge of the - * content area. - * - * @sa @ref cursor_pos - * @sa @ref glfwSetCursorPosCallback - * - * @since Added in version 3.0. Replaces `GLFWmouseposfun`. - * - * @ingroup input - */ -typedef void (* GLFWcursorposfun)(GLFWwindow*,double,double); - -/*! @brief The function pointer type for cursor enter/leave callbacks. - * - * This is the function pointer type for cursor enter/leave callbacks. - * A cursor enter/leave callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, int entered) - * @endcode - * - * @param[in] window The window that received the event. - * @param[in] entered `GLFW_TRUE` if the cursor entered the window's content - * area, or `GLFW_FALSE` if it left it. - * - * @sa @ref cursor_enter - * @sa @ref glfwSetCursorEnterCallback - * - * @since Added in version 3.0. - * - * @ingroup input - */ -typedef void (* GLFWcursorenterfun)(GLFWwindow*,int); - -/*! @brief The function pointer type for scroll callbacks. - * - * This is the function pointer type for scroll callbacks. A scroll callback - * function has the following signature: - * @code - * void function_name(GLFWwindow* window, double xoffset, double yoffset) - * @endcode - * - * @param[in] window The window that received the event. - * @param[in] xoffset The scroll offset along the x-axis. - * @param[in] yoffset The scroll offset along the y-axis. - * - * @sa @ref scrolling - * @sa @ref glfwSetScrollCallback - * - * @since Added in version 3.0. Replaces `GLFWmousewheelfun`. - * - * @ingroup input - */ -typedef void (* GLFWscrollfun)(GLFWwindow*,double,double); - -/*! @brief The function pointer type for keyboard key callbacks. - * - * This is the function pointer type for keyboard key callbacks. A keyboard - * key callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, int key, int scancode, int action, int mods) - * @endcode - * - * @param[in] window The window that received the event. - * @param[in] key The [keyboard key](@ref keys) that was pressed or released. - * @param[in] scancode The system-specific scancode of the key. - * @param[in] action `GLFW_PRESS`, `GLFW_RELEASE` or `GLFW_REPEAT`. Future - * releases may add more actions. - * @param[in] mods Bit field describing which [modifier keys](@ref mods) were - * held down. - * - * @sa @ref input_key - * @sa @ref glfwSetKeyCallback - * - * @since Added in version 1.0. - * @glfw3 Added window handle, scancode and modifier mask parameters. - * - * @ingroup input - */ -typedef void (* GLFWkeyfun)(GLFWwindow*,int,int,int,int); - -/*! @brief The function pointer type for Unicode character callbacks. - * - * This is the function pointer type for Unicode character callbacks. - * A Unicode character callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, unsigned int codepoint) - * @endcode - * - * @param[in] window The window that received the event. - * @param[in] codepoint The Unicode code point of the character. - * - * @sa @ref input_char - * @sa @ref glfwSetCharCallback - * - * @since Added in version 2.4. - * @glfw3 Added window handle parameter. - * - * @ingroup input - */ -typedef void (* GLFWcharfun)(GLFWwindow*,unsigned int); - -/*! @brief The function pointer type for Unicode character with modifiers - * callbacks. - * - * This is the function pointer type for Unicode character with modifiers - * callbacks. It is called for each input character, regardless of what - * modifier keys are held down. A Unicode character with modifiers callback - * function has the following signature: - * @code - * void function_name(GLFWwindow* window, unsigned int codepoint, int mods) - * @endcode - * - * @param[in] window The window that received the event. - * @param[in] codepoint The Unicode code point of the character. - * @param[in] mods Bit field describing which [modifier keys](@ref mods) were - * held down. - * - * @sa @ref input_char - * @sa @ref glfwSetCharModsCallback - * - * @deprecated Scheduled for removal in version 4.0. - * - * @since Added in version 3.1. - * - * @ingroup input - */ -typedef void (* GLFWcharmodsfun)(GLFWwindow*,unsigned int,int); - -/*! @brief The function pointer type for path drop callbacks. - * - * This is the function pointer type for path drop callbacks. A path drop - * callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, int path_count, const char* paths[]) - * @endcode - * - * @param[in] window The window that received the event. - * @param[in] path_count The number of dropped paths. - * @param[in] paths The UTF-8 encoded file and/or directory path names. - * - * @pointer_lifetime The path array and its strings are valid until the - * callback function returns. - * - * @sa @ref path_drop - * @sa @ref glfwSetDropCallback - * - * @since Added in version 3.1. - * - * @ingroup input - */ -typedef void (* GLFWdropfun)(GLFWwindow*,int,const char*[]); - -/*! @brief The function pointer type for monitor configuration callbacks. - * - * This is the function pointer type for monitor configuration callbacks. - * A monitor callback function has the following signature: - * @code - * void function_name(GLFWmonitor* monitor, int event) - * @endcode - * - * @param[in] monitor The monitor that was connected or disconnected. - * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Future - * releases may add more events. - * - * @sa @ref monitor_event - * @sa @ref glfwSetMonitorCallback - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -typedef void (* GLFWmonitorfun)(GLFWmonitor*,int); - -/*! @brief The function pointer type for joystick configuration callbacks. - * - * This is the function pointer type for joystick configuration callbacks. - * A joystick configuration callback function has the following signature: - * @code - * void function_name(int jid, int event) - * @endcode - * - * @param[in] jid The joystick that was connected or disconnected. - * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Future - * releases may add more events. - * - * @sa @ref joystick_event - * @sa @ref glfwSetJoystickCallback - * - * @since Added in version 3.2. - * - * @ingroup input - */ -typedef void (* GLFWjoystickfun)(int,int); - -/*! @brief Video mode type. - * - * This describes a single video mode. - * - * @sa @ref monitor_modes - * @sa @ref glfwGetVideoMode - * @sa @ref glfwGetVideoModes - * - * @since Added in version 1.0. - * @glfw3 Added refresh rate member. - * - * @ingroup monitor - */ -typedef struct GLFWvidmode -{ - /*! The width, in screen coordinates, of the video mode. - */ - int width; - /*! The height, in screen coordinates, of the video mode. - */ - int height; - /*! The bit depth of the red channel of the video mode. - */ - int redBits; - /*! The bit depth of the green channel of the video mode. - */ - int greenBits; - /*! The bit depth of the blue channel of the video mode. - */ - int blueBits; - /*! The refresh rate, in Hz, of the video mode. - */ - int refreshRate; -} GLFWvidmode; - -/*! @brief Gamma ramp. - * - * This describes the gamma ramp for a monitor. - * - * @sa @ref monitor_gamma - * @sa @ref glfwGetGammaRamp - * @sa @ref glfwSetGammaRamp - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -typedef struct GLFWgammaramp -{ - /*! An array of value describing the response of the red channel. - */ - unsigned short* red; - /*! An array of value describing the response of the green channel. - */ - unsigned short* green; - /*! An array of value describing the response of the blue channel. - */ - unsigned short* blue; - /*! The number of elements in each array. - */ - unsigned int size; -} GLFWgammaramp; - -/*! @brief Image data. - * - * This describes a single 2D image. See the documentation for each related - * function what the expected pixel format is. - * - * @sa @ref cursor_custom - * @sa @ref window_icon - * - * @since Added in version 2.1. - * @glfw3 Removed format and bytes-per-pixel members. - * - * @ingroup window - */ -typedef struct GLFWimage -{ - /*! The width, in pixels, of this image. - */ - int width; - /*! The height, in pixels, of this image. - */ - int height; - /*! The pixel data of this image, arranged left-to-right, top-to-bottom. - */ - unsigned char* pixels; -} GLFWimage; - -/*! @brief Gamepad input state - * - * This describes the input state of a gamepad. - * - * @sa @ref gamepad - * @sa @ref glfwGetGamepadState - * - * @since Added in version 3.3. - * - * @ingroup input - */ -typedef struct GLFWgamepadstate -{ - /*! The states of each [gamepad button](@ref gamepad_buttons), `GLFW_PRESS` - * or `GLFW_RELEASE`. - */ - unsigned char buttons[15]; - /*! The states of each [gamepad axis](@ref gamepad_axes), in the range -1.0 - * to 1.0 inclusive. - */ - float axes[6]; -} GLFWgamepadstate; - - -/************************************************************************* - * GLFW API functions - *************************************************************************/ - -/*! @brief Initializes the GLFW library. - * - * This function initializes the GLFW library. Before most GLFW functions can - * be used, GLFW must be initialized, and before an application terminates GLFW - * should be terminated in order to free any resources allocated during or - * after initialization. - * - * If this function fails, it calls @ref glfwTerminate before returning. If it - * succeeds, you should call @ref glfwTerminate before the application exits. - * - * Additional calls to this function after successful initialization but before - * termination will return `GLFW_TRUE` immediately. - * - * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_PLATFORM_ERROR. - * - * @remark @macos This function will change the current directory of the - * application to the `Contents/Resources` subdirectory of the application's - * bundle, if present. This can be disabled with the @ref - * GLFW_COCOA_CHDIR_RESOURCES init hint. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref intro_init - * @sa @ref glfwTerminate - * - * @since Added in version 1.0. - * - * @ingroup init - */ -GLFWAPI int glfwInit(void); - -/*! @brief Terminates the GLFW library. - * - * This function destroys all remaining windows and cursors, restores any - * modified gamma ramps and frees any other allocated resources. Once this - * function is called, you must again call @ref glfwInit successfully before - * you will be able to use most GLFW functions. - * - * If GLFW has been successfully initialized, this function should be called - * before the application exits. If initialization fails, there is no need to - * call this function, as it is called by @ref glfwInit before it returns - * failure. - * - * @errors Possible errors include @ref GLFW_PLATFORM_ERROR. - * - * @remark This function may be called before @ref glfwInit. - * - * @warning The contexts of any remaining windows must not be current on any - * other thread when this function is called. - * - * @reentrancy This function must not be called from a callback. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref intro_init - * @sa @ref glfwInit - * - * @since Added in version 1.0. - * - * @ingroup init - */ -GLFWAPI void glfwTerminate(void); - -/*! @brief Sets the specified init hint to the desired value. - * - * This function sets hints for the next initialization of GLFW. - * - * The values you set hints to are never reset by GLFW, but they only take - * effect during initialization. Once GLFW has been initialized, any values - * you set will be ignored until the library is terminated and initialized - * again. - * - * Some hints are platform specific. These may be set on any platform but they - * will only affect their specific platform. Other platforms will ignore them. - * Setting these hints requires no platform specific headers or functions. - * - * @param[in] hint The [init hint](@ref init_hints) to set. - * @param[in] value The new value of the init hint. - * - * @errors Possible errors include @ref GLFW_INVALID_ENUM and @ref - * GLFW_INVALID_VALUE. - * - * @remarks This function may be called before @ref glfwInit. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa init_hints - * @sa glfwInit - * - * @since Added in version 3.3. - * - * @ingroup init - */ -GLFWAPI void glfwInitHint(int hint, int value); - -/*! @brief Retrieves the version of the GLFW library. - * - * This function retrieves the major, minor and revision numbers of the GLFW - * library. It is intended for when you are using GLFW as a shared library and - * want to ensure that you are using the minimum required version. - * - * Any or all of the version arguments may be `NULL`. - * - * @param[out] major Where to store the major version number, or `NULL`. - * @param[out] minor Where to store the minor version number, or `NULL`. - * @param[out] rev Where to store the revision number, or `NULL`. - * - * @errors None. - * - * @remark This function may be called before @ref glfwInit. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref intro_version - * @sa @ref glfwGetVersionString - * - * @since Added in version 1.0. - * - * @ingroup init - */ -GLFWAPI void glfwGetVersion(int* major, int* minor, int* rev); - -/*! @brief Returns a string describing the compile-time configuration. - * - * This function returns the compile-time generated - * [version string](@ref intro_version_string) of the GLFW library binary. It - * describes the version, platform, compiler and any platform-specific - * compile-time options. It should not be confused with the OpenGL or OpenGL - * ES version string, queried with `glGetString`. - * - * __Do not use the version string__ to parse the GLFW library version. The - * @ref glfwGetVersion function provides the version of the running library - * binary in numerical format. - * - * @return The ASCII encoded GLFW version string. - * - * @errors None. - * - * @remark This function may be called before @ref glfwInit. - * - * @pointer_lifetime The returned string is static and compile-time generated. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref intro_version - * @sa @ref glfwGetVersion - * - * @since Added in version 3.0. - * - * @ingroup init - */ -GLFWAPI const char* glfwGetVersionString(void); - -/*! @brief Returns and clears the last error for the calling thread. - * - * This function returns and clears the [error code](@ref errors) of the last - * error that occurred on the calling thread, and optionally a UTF-8 encoded - * human-readable description of it. If no error has occurred since the last - * call, it returns @ref GLFW_NO_ERROR (zero) and the description pointer is - * set to `NULL`. - * - * @param[in] description Where to store the error description pointer, or `NULL`. - * @return The last error code for the calling thread, or @ref GLFW_NO_ERROR - * (zero). - * - * @errors None. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is guaranteed to be valid only until the - * next error occurs or the library is terminated. - * - * @remark This function may be called before @ref glfwInit. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref error_handling - * @sa @ref glfwSetErrorCallback - * - * @since Added in version 3.3. - * - * @ingroup init - */ -GLFWAPI int glfwGetError(const char** description); - -/*! @brief Sets the error callback. - * - * This function sets the error callback, which is called with an error code - * and a human-readable description each time a GLFW error occurs. - * - * The error code is set before the callback is called. Calling @ref - * glfwGetError from the error callback will return the same value as the error - * code argument. - * - * The error callback is called on the thread where the error occurred. If you - * are using GLFW from multiple threads, your error callback needs to be - * written accordingly. - * - * Because the description string may have been generated specifically for that - * error, it is not guaranteed to be valid after the callback has returned. If - * you wish to use it after the callback returns, you need to make a copy. - * - * Once set, the error callback remains set even after the library has been - * terminated. - * - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set. - * - * @callback_signature - * @code - * void callback_name(int error_code, const char* description) - * @endcode - * For more information about the callback parameters, see the - * [callback pointer type](@ref GLFWerrorfun). - * - * @errors None. - * - * @remark This function may be called before @ref glfwInit. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref error_handling - * @sa @ref glfwGetError - * - * @since Added in version 3.0. - * - * @ingroup init - */ -GLFWAPI GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun callback); - -/*! @brief Returns the currently connected monitors. - * - * This function returns an array of handles for all currently connected - * monitors. The primary monitor is always first in the returned array. If no - * monitors were found, this function returns `NULL`. - * - * @param[out] count Where to store the number of monitors in the returned - * array. This is set to zero if an error occurred. - * @return An array of monitor handles, or `NULL` if no monitors were found or - * if an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is guaranteed to be valid only until the - * monitor configuration changes or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_monitors - * @sa @ref monitor_event - * @sa @ref glfwGetPrimaryMonitor - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI GLFWmonitor** glfwGetMonitors(int* count); - -/*! @brief Returns the primary monitor. - * - * This function returns the primary monitor. This is usually the monitor - * where elements like the task bar or global menu bar are located. - * - * @return The primary monitor, or `NULL` if no monitors were found or if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @remark The primary monitor is always first in the array returned by @ref - * glfwGetMonitors. - * - * @sa @ref monitor_monitors - * @sa @ref glfwGetMonitors - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI GLFWmonitor* glfwGetPrimaryMonitor(void); - -/*! @brief Returns the position of the monitor's viewport on the virtual screen. - * - * This function returns the position, in screen coordinates, of the upper-left - * corner of the specified monitor. - * - * Any or all of the position arguments may be `NULL`. If an error occurs, all - * non-`NULL` position arguments will be set to zero. - * - * @param[in] monitor The monitor to query. - * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`. - * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_properties - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos); - -/*! @brief Retrieves the work area of the monitor. - * - * This function returns the position, in screen coordinates, of the upper-left - * corner of the work area of the specified monitor along with the work area - * size in screen coordinates. The work area is defined as the area of the - * monitor not occluded by the operating system task bar where present. If no - * task bar exists then the work area is the monitor resolution in screen - * coordinates. - * - * Any or all of the position and size arguments may be `NULL`. If an error - * occurs, all non-`NULL` position and size arguments will be set to zero. - * - * @param[in] monitor The monitor to query. - * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`. - * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`. - * @param[out] width Where to store the monitor width, or `NULL`. - * @param[out] height Where to store the monitor height, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_workarea - * - * @since Added in version 3.3. - * - * @ingroup monitor - */ -GLFWAPI void glfwGetMonitorWorkarea(GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height); - -/*! @brief Returns the physical size of the monitor. - * - * This function returns the size, in millimetres, of the display area of the - * specified monitor. - * - * Some systems do not provide accurate monitor size information, either - * because the monitor - * [EDID](https://en.wikipedia.org/wiki/Extended_display_identification_data) - * data is incorrect or because the driver does not report it accurately. - * - * Any or all of the size arguments may be `NULL`. If an error occurs, all - * non-`NULL` size arguments will be set to zero. - * - * @param[in] monitor The monitor to query. - * @param[out] widthMM Where to store the width, in millimetres, of the - * monitor's display area, or `NULL`. - * @param[out] heightMM Where to store the height, in millimetres, of the - * monitor's display area, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @remark @win32 calculates the returned physical size from the - * current resolution and system DPI instead of querying the monitor EDID data. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_properties - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI void glfwGetMonitorPhysicalSize(GLFWmonitor* monitor, int* widthMM, int* heightMM); - -/*! @brief Retrieves the content scale for the specified monitor. - * - * This function retrieves the content scale for the specified monitor. The - * content scale is the ratio between the current DPI and the platform's - * default DPI. This is especially important for text and any UI elements. If - * the pixel dimensions of your UI scaled by this look appropriate on your - * machine then it should appear at a reasonable size on other machines - * regardless of their DPI and scaling settings. This relies on the system DPI - * and scaling settings being somewhat correct. - * - * The content scale may depend on both the monitor resolution and pixel - * density and on user settings. It may be very different from the raw DPI - * calculated from the physical size and current resolution. - * - * @param[in] monitor The monitor to query. - * @param[out] xscale Where to store the x-axis content scale, or `NULL`. - * @param[out] yscale Where to store the y-axis content scale, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_scale - * @sa @ref glfwGetWindowContentScale - * - * @since Added in version 3.3. - * - * @ingroup monitor - */ -GLFWAPI void glfwGetMonitorContentScale(GLFWmonitor* monitor, float* xscale, float* yscale); - -/*! @brief Returns the name of the specified monitor. - * - * This function returns a human-readable name, encoded as UTF-8, of the - * specified monitor. The name typically reflects the make and model of the - * monitor and is not guaranteed to be unique among the connected monitors. - * - * @param[in] monitor The monitor to query. - * @return The UTF-8 encoded name of the monitor, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified monitor is - * disconnected or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_properties - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI const char* glfwGetMonitorName(GLFWmonitor* monitor); - -/*! @brief Sets the user pointer of the specified monitor. - * - * This function sets the user-defined pointer of the specified monitor. The - * current value is retained until the monitor is disconnected. The initial - * value is `NULL`. - * - * This function may be called from the monitor callback, even for a monitor - * that is being disconnected. - * - * @param[in] monitor The monitor whose pointer to set. - * @param[in] pointer The new value. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref monitor_userptr - * @sa @ref glfwGetMonitorUserPointer - * - * @since Added in version 3.3. - * - * @ingroup monitor - */ -GLFWAPI void glfwSetMonitorUserPointer(GLFWmonitor* monitor, void* pointer); - -/*! @brief Returns the user pointer of the specified monitor. - * - * This function returns the current value of the user-defined pointer of the - * specified monitor. The initial value is `NULL`. - * - * This function may be called from the monitor callback, even for a monitor - * that is being disconnected. - * - * @param[in] monitor The monitor whose pointer to return. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref monitor_userptr - * @sa @ref glfwSetMonitorUserPointer - * - * @since Added in version 3.3. - * - * @ingroup monitor - */ -GLFWAPI void* glfwGetMonitorUserPointer(GLFWmonitor* monitor); - -/*! @brief Sets the monitor configuration callback. - * - * This function sets the monitor configuration callback, or removes the - * currently set callback. This is called when a monitor is connected to or - * disconnected from the system. - * - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWmonitor* monitor, int event) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWmonitorfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_event - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun callback); - -/*! @brief Returns the available video modes for the specified monitor. - * - * This function returns an array of all video modes supported by the specified - * monitor. The returned array is sorted in ascending order, first by color - * bit depth (the sum of all channel depths) and then by resolution area (the - * product of width and height). - * - * @param[in] monitor The monitor to query. - * @param[out] count Where to store the number of video modes in the returned - * array. This is set to zero if an error occurred. - * @return An array of video modes, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified monitor is - * disconnected, this function is called again for that monitor or the library - * is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_modes - * @sa @ref glfwGetVideoMode - * - * @since Added in version 1.0. - * @glfw3 Changed to return an array of modes for a specific monitor. - * - * @ingroup monitor - */ -GLFWAPI const GLFWvidmode* glfwGetVideoModes(GLFWmonitor* monitor, int* count); - -/*! @brief Returns the current mode of the specified monitor. - * - * This function returns the current video mode of the specified monitor. If - * you have created a full screen window for that monitor, the return value - * will depend on whether that window is iconified. - * - * @param[in] monitor The monitor to query. - * @return The current mode of the monitor, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified monitor is - * disconnected or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_modes - * @sa @ref glfwGetVideoModes - * - * @since Added in version 3.0. Replaces `glfwGetDesktopMode`. - * - * @ingroup monitor - */ -GLFWAPI const GLFWvidmode* glfwGetVideoMode(GLFWmonitor* monitor); - -/*! @brief Generates a gamma ramp and sets it for the specified monitor. - * - * This function generates an appropriately sized gamma ramp from the specified - * exponent and then calls @ref glfwSetGammaRamp with it. The value must be - * a finite number greater than zero. - * - * The software controlled gamma ramp is applied _in addition_ to the hardware - * gamma correction, which today is usually an approximation of sRGB gamma. - * This means that setting a perfectly linear ramp, or gamma 1.0, will produce - * the default (usually sRGB-like) behavior. - * - * For gamma correct rendering with OpenGL or OpenGL ES, see the @ref - * GLFW_SRGB_CAPABLE hint. - * - * @param[in] monitor The monitor whose gamma ramp to set. - * @param[in] gamma The desired exponent. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. - * - * @remark @wayland Gamma handling is a privileged protocol, this function - * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_gamma - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI void glfwSetGamma(GLFWmonitor* monitor, float gamma); - -/*! @brief Returns the current gamma ramp for the specified monitor. - * - * This function returns the current gamma ramp of the specified monitor. - * - * @param[in] monitor The monitor to query. - * @return The current gamma ramp, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @wayland Gamma handling is a privileged protocol, this function - * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR while - * returning `NULL`. - * - * @pointer_lifetime The returned structure and its arrays are allocated and - * freed by GLFW. You should not free them yourself. They are valid until the - * specified monitor is disconnected, this function is called again for that - * monitor or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_gamma - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI const GLFWgammaramp* glfwGetGammaRamp(GLFWmonitor* monitor); - -/*! @brief Sets the current gamma ramp for the specified monitor. - * - * This function sets the current gamma ramp for the specified monitor. The - * original gamma ramp for that monitor is saved by GLFW the first time this - * function is called and is restored by @ref glfwTerminate. - * - * The software controlled gamma ramp is applied _in addition_ to the hardware - * gamma correction, which today is usually an approximation of sRGB gamma. - * This means that setting a perfectly linear ramp, or gamma 1.0, will produce - * the default (usually sRGB-like) behavior. - * - * For gamma correct rendering with OpenGL or OpenGL ES, see the @ref - * GLFW_SRGB_CAPABLE hint. - * - * @param[in] monitor The monitor whose gamma ramp to set. - * @param[in] ramp The gamma ramp to use. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark The size of the specified gamma ramp should match the size of the - * current ramp for that monitor. - * - * @remark @win32 The gamma ramp size must be 256. - * - * @remark @wayland Gamma handling is a privileged protocol, this function - * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The specified gamma ramp is copied before this function - * returns. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_gamma - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI void glfwSetGammaRamp(GLFWmonitor* monitor, const GLFWgammaramp* ramp); - -/*! @brief Resets all window hints to their default values. - * - * This function resets all window hints to their - * [default values](@ref window_hints_values). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_hints - * @sa @ref glfwWindowHint - * @sa @ref glfwWindowHintString - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwDefaultWindowHints(void); - -/*! @brief Sets the specified window hint to the desired value. - * - * This function sets hints for the next call to @ref glfwCreateWindow. The - * hints, once set, retain their values until changed by a call to this - * function or @ref glfwDefaultWindowHints, or until the library is terminated. - * - * Only integer value hints can be set with this function. String value hints - * are set with @ref glfwWindowHintString. - * - * This function does not check whether the specified hint values are valid. - * If you set hints to invalid values this will instead be reported by the next - * call to @ref glfwCreateWindow. - * - * Some hints are platform specific. These may be set on any platform but they - * will only affect their specific platform. Other platforms will ignore them. - * Setting these hints requires no platform specific headers or functions. - * - * @param[in] hint The [window hint](@ref window_hints) to set. - * @param[in] value The new value of the window hint. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_hints - * @sa @ref glfwWindowHintString - * @sa @ref glfwDefaultWindowHints - * - * @since Added in version 3.0. Replaces `glfwOpenWindowHint`. - * - * @ingroup window - */ -GLFWAPI void glfwWindowHint(int hint, int value); - -/*! @brief Sets the specified window hint to the desired value. - * - * This function sets hints for the next call to @ref glfwCreateWindow. The - * hints, once set, retain their values until changed by a call to this - * function or @ref glfwDefaultWindowHints, or until the library is terminated. - * - * Only string type hints can be set with this function. Integer value hints - * are set with @ref glfwWindowHint. - * - * This function does not check whether the specified hint values are valid. - * If you set hints to invalid values this will instead be reported by the next - * call to @ref glfwCreateWindow. - * - * Some hints are platform specific. These may be set on any platform but they - * will only affect their specific platform. Other platforms will ignore them. - * Setting these hints requires no platform specific headers or functions. - * - * @param[in] hint The [window hint](@ref window_hints) to set. - * @param[in] value The new value of the window hint. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @pointer_lifetime The specified string is copied before this function - * returns. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_hints - * @sa @ref glfwWindowHint - * @sa @ref glfwDefaultWindowHints - * - * @since Added in version 3.3. - * - * @ingroup window - */ -GLFWAPI void glfwWindowHintString(int hint, const char* value); - -/*! @brief Creates a window and its associated context. - * - * This function creates a window and its associated OpenGL or OpenGL ES - * context. Most of the options controlling how the window and its context - * should be created are specified with [window hints](@ref window_hints). - * - * Successful creation does not change which context is current. Before you - * can use the newly created context, you need to - * [make it current](@ref context_current). For information about the `share` - * parameter, see @ref context_sharing. - * - * The created window, framebuffer and context may differ from what you - * requested, as not all parameters and hints are - * [hard constraints](@ref window_hints_hard). This includes the size of the - * window, especially for full screen windows. To query the actual attributes - * of the created window, framebuffer and context, see @ref - * glfwGetWindowAttrib, @ref glfwGetWindowSize and @ref glfwGetFramebufferSize. - * - * To create a full screen window, you need to specify the monitor the window - * will cover. If no monitor is specified, the window will be windowed mode. - * Unless you have a way for the user to choose a specific monitor, it is - * recommended that you pick the primary monitor. For more information on how - * to query connected monitors, see @ref monitor_monitors. - * - * For full screen windows, the specified size becomes the resolution of the - * window's _desired video mode_. As long as a full screen window is not - * iconified, the supported video mode most closely matching the desired video - * mode is set for the specified monitor. For more information about full - * screen windows, including the creation of so called _windowed full screen_ - * or _borderless full screen_ windows, see @ref window_windowed_full_screen. - * - * Once you have created the window, you can switch it between windowed and - * full screen mode with @ref glfwSetWindowMonitor. This will not affect its - * OpenGL or OpenGL ES context. - * - * By default, newly created windows use the placement recommended by the - * window system. To create the window at a specific position, make it - * initially invisible using the [GLFW_VISIBLE](@ref GLFW_VISIBLE_hint) window - * hint, set its [position](@ref window_pos) and then [show](@ref window_hide) - * it. - * - * As long as at least one full screen window is not iconified, the screensaver - * is prohibited from starting. - * - * Window systems put limits on window sizes. Very large or very small window - * dimensions may be overridden by the window system on creation. Check the - * actual [size](@ref window_size) after creation. - * - * The [swap interval](@ref buffer_swap) is not set during window creation and - * the initial value may vary depending on driver settings and defaults. - * - * @param[in] width The desired width, in screen coordinates, of the window. - * This must be greater than zero. - * @param[in] height The desired height, in screen coordinates, of the window. - * This must be greater than zero. - * @param[in] title The initial, UTF-8 encoded window title. - * @param[in] monitor The monitor to use for full screen mode, or `NULL` for - * windowed mode. - * @param[in] share The window whose context to share resources with, or `NULL` - * to not share resources. - * @return The handle of the created window, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE, @ref GLFW_API_UNAVAILABLE, @ref - * GLFW_VERSION_UNAVAILABLE, @ref GLFW_FORMAT_UNAVAILABLE and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @win32 Window creation will fail if the Microsoft GDI software - * OpenGL implementation is the only one available. - * - * @remark @win32 If the executable has an icon resource named `GLFW_ICON,` it - * will be set as the initial icon for the window. If no such icon is present, - * the `IDI_APPLICATION` icon will be used instead. To set a different icon, - * see @ref glfwSetWindowIcon. - * - * @remark @win32 The context to share resources with must not be current on - * any other thread. - * - * @remark @macos The OS only supports forward-compatible core profile contexts - * for OpenGL versions 3.2 and later. Before creating an OpenGL context of - * version 3.2 or later you must set the - * [GLFW_OPENGL_FORWARD_COMPAT](@ref GLFW_OPENGL_FORWARD_COMPAT_hint) and - * [GLFW_OPENGL_PROFILE](@ref GLFW_OPENGL_PROFILE_hint) hints accordingly. - * OpenGL 3.0 and 3.1 contexts are not supported at all on macOS. - * - * @remark @macos The GLFW window has no icon, as it is not a document - * window, but the dock icon will be the same as the application bundle's icon. - * For more information on bundles, see the - * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/) - * in the Mac Developer Library. - * - * @remark @macos The first time a window is created the menu bar is created. - * If GLFW finds a `MainMenu.nib` it is loaded and assumed to contain a menu - * bar. Otherwise a minimal menu bar is created manually with common commands - * like Hide, Quit and About. The About entry opens a minimal about dialog - * with information from the application's bundle. Menu bar creation can be - * disabled entirely with the @ref GLFW_COCOA_MENUBAR init hint. - * - * @remark @macos On OS X 10.10 and later the window frame will not be rendered - * at full resolution on Retina displays unless the - * [GLFW_COCOA_RETINA_FRAMEBUFFER](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint) - * hint is `GLFW_TRUE` and the `NSHighResolutionCapable` key is enabled in the - * application bundle's `Info.plist`. For more information, see - * [High Resolution Guidelines for OS X](https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Explained/Explained.html) - * in the Mac Developer Library. The GLFW test and example programs use - * a custom `Info.plist` template for this, which can be found as - * `CMake/MacOSXBundleInfo.plist.in` in the source tree. - * - * @remark @macos When activating frame autosaving with - * [GLFW_COCOA_FRAME_NAME](@ref GLFW_COCOA_FRAME_NAME_hint), the specified - * window size and position may be overridden by previously saved values. - * - * @remark @x11 Some window managers will not respect the placement of - * initially hidden windows. - * - * @remark @x11 Due to the asynchronous nature of X11, it may take a moment for - * a window to reach its requested state. This means you may not be able to - * query the final size, position or other attributes directly after window - * creation. - * - * @remark @x11 The class part of the `WM_CLASS` window property will by - * default be set to the window title passed to this function. The instance - * part will use the contents of the `RESOURCE_NAME` environment variable, if - * present and not empty, or fall back to the window title. Set the - * [GLFW_X11_CLASS_NAME](@ref GLFW_X11_CLASS_NAME_hint) and - * [GLFW_X11_INSTANCE_NAME](@ref GLFW_X11_INSTANCE_NAME_hint) window hints to - * override this. - * - * @remark @wayland Compositors should implement the xdg-decoration protocol - * for GLFW to decorate the window properly. If this protocol isn't - * supported, or if the compositor prefers client-side decorations, a very - * simple fallback frame will be drawn using the wp_viewporter protocol. A - * compositor can still emit close, maximize or fullscreen events, using for - * instance a keybind mechanism. If neither of these protocols is supported, - * the window won't be decorated. - * - * @remark @wayland A full screen window will not attempt to change the mode, - * no matter what the requested size or refresh rate. - * - * @remark @wayland Screensaver inhibition requires the idle-inhibit protocol - * to be implemented in the user's compositor. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_creation - * @sa @ref glfwDestroyWindow - * - * @since Added in version 3.0. Replaces `glfwOpenWindow`. - * - * @ingroup window - */ -GLFWAPI GLFWwindow* glfwCreateWindow(int width, int height, const char* title, GLFWmonitor* monitor, GLFWwindow* share); - -/*! @brief Destroys the specified window and its context. - * - * This function destroys the specified window and its context. On calling - * this function, no further callbacks will be called for that window. - * - * If the context of the specified window is current on the main thread, it is - * detached before being destroyed. - * - * @param[in] window The window to destroy. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @note The context of the specified window must not be current on any other - * thread when this function is called. - * - * @reentrancy This function must not be called from a callback. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_creation - * @sa @ref glfwCreateWindow - * - * @since Added in version 3.0. Replaces `glfwCloseWindow`. - * - * @ingroup window - */ -GLFWAPI void glfwDestroyWindow(GLFWwindow* window); - -/*! @brief Checks the close flag of the specified window. - * - * This function returns the value of the close flag of the specified window. - * - * @param[in] window The window to query. - * @return The value of the close flag. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref window_close - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI int glfwWindowShouldClose(GLFWwindow* window); - -/*! @brief Sets the close flag of the specified window. - * - * This function sets the value of the close flag of the specified window. - * This can be used to override the user's attempt to close the window, or - * to signal that it should be closed. - * - * @param[in] window The window whose flag to change. - * @param[in] value The new value. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref window_close - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowShouldClose(GLFWwindow* window, int value); - -/*! @brief Sets the title of the specified window. - * - * This function sets the window title, encoded as UTF-8, of the specified - * window. - * - * @param[in] window The window whose title to change. - * @param[in] title The UTF-8 encoded window title. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @macos The window title will not be updated until the next time you - * process events. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_title - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowTitle(GLFWwindow* window, const char* title); - -/*! @brief Sets the icon for the specified window. - * - * This function sets the icon of the specified window. If passed an array of - * candidate images, those of or closest to the sizes desired by the system are - * selected. If no images are specified, the window reverts to its default - * icon. - * - * The pixels are 32-bit, little-endian, non-premultiplied RGBA, i.e. eight - * bits per channel with the red channel first. They are arranged canonically - * as packed sequential rows, starting from the top-left corner. - * - * The desired image sizes varies depending on platform and system settings. - * The selected images will be rescaled as needed. Good sizes include 16x16, - * 32x32 and 48x48. - * - * @param[in] window The window whose icon to set. - * @param[in] count The number of images in the specified array, or zero to - * revert to the default window icon. - * @param[in] images The images to create the icon from. This is ignored if - * count is zero. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The specified image data is copied before this function - * returns. - * - * @remark @macos The GLFW window has no icon, as it is not a document - * window, so this function does nothing. The dock icon will be the same as - * the application bundle's icon. For more information on bundles, see the - * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/) - * in the Mac Developer Library. - * - * @remark @wayland There is no existing protocol to change an icon, the - * window will thus inherit the one defined in the application's desktop file. - * This function always emits @ref GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_icon - * - * @since Added in version 3.2. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowIcon(GLFWwindow* window, int count, const GLFWimage* images); - -/*! @brief Retrieves the position of the content area of the specified window. - * - * This function retrieves the position, in screen coordinates, of the - * upper-left corner of the content area of the specified window. - * - * Any or all of the position arguments may be `NULL`. If an error occurs, all - * non-`NULL` position arguments will be set to zero. - * - * @param[in] window The window to query. - * @param[out] xpos Where to store the x-coordinate of the upper-left corner of - * the content area, or `NULL`. - * @param[out] ypos Where to store the y-coordinate of the upper-left corner of - * the content area, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @wayland There is no way for an application to retrieve the global - * position of its windows, this function will always emit @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_pos - * @sa @ref glfwSetWindowPos - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwGetWindowPos(GLFWwindow* window, int* xpos, int* ypos); - -/*! @brief Sets the position of the content area of the specified window. - * - * This function sets the position, in screen coordinates, of the upper-left - * corner of the content area of the specified windowed mode window. If the - * window is a full screen window, this function does nothing. - * - * __Do not use this function__ to move an already visible window unless you - * have very good reasons for doing so, as it will confuse and annoy the user. - * - * The window manager may put limits on what positions are allowed. GLFW - * cannot and should not override these limits. - * - * @param[in] window The window to query. - * @param[in] xpos The x-coordinate of the upper-left corner of the content area. - * @param[in] ypos The y-coordinate of the upper-left corner of the content area. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @wayland There is no way for an application to set the global - * position of its windows, this function will always emit @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_pos - * @sa @ref glfwGetWindowPos - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos); - -/*! @brief Retrieves the size of the content area of the specified window. - * - * This function retrieves the size, in screen coordinates, of the content area - * of the specified window. If you wish to retrieve the size of the - * framebuffer of the window in pixels, see @ref glfwGetFramebufferSize. - * - * Any or all of the size arguments may be `NULL`. If an error occurs, all - * non-`NULL` size arguments will be set to zero. - * - * @param[in] window The window whose size to retrieve. - * @param[out] width Where to store the width, in screen coordinates, of the - * content area, or `NULL`. - * @param[out] height Where to store the height, in screen coordinates, of the - * content area, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_size - * @sa @ref glfwSetWindowSize - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwGetWindowSize(GLFWwindow* window, int* width, int* height); - -/*! @brief Sets the size limits of the specified window. - * - * This function sets the size limits of the content area of the specified - * window. If the window is full screen, the size limits only take effect - * once it is made windowed. If the window is not resizable, this function - * does nothing. - * - * The size limits are applied immediately to a windowed mode window and may - * cause it to be resized. - * - * The maximum dimensions must be greater than or equal to the minimum - * dimensions and all must be greater than or equal to zero. - * - * @param[in] window The window to set limits for. - * @param[in] minwidth The minimum width, in screen coordinates, of the content - * area, or `GLFW_DONT_CARE`. - * @param[in] minheight The minimum height, in screen coordinates, of the - * content area, or `GLFW_DONT_CARE`. - * @param[in] maxwidth The maximum width, in screen coordinates, of the content - * area, or `GLFW_DONT_CARE`. - * @param[in] maxheight The maximum height, in screen coordinates, of the - * content area, or `GLFW_DONT_CARE`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. - * - * @remark If you set size limits and an aspect ratio that conflict, the - * results are undefined. - * - * @remark @wayland The size limits will not be applied until the window is - * actually resized, either by the user or by the compositor. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_sizelimits - * @sa @ref glfwSetWindowAspectRatio - * - * @since Added in version 3.2. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowSizeLimits(GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight); - -/*! @brief Sets the aspect ratio of the specified window. - * - * This function sets the required aspect ratio of the content area of the - * specified window. If the window is full screen, the aspect ratio only takes - * effect once it is made windowed. If the window is not resizable, this - * function does nothing. - * - * The aspect ratio is specified as a numerator and a denominator and both - * values must be greater than zero. For example, the common 16:9 aspect ratio - * is specified as 16 and 9, respectively. - * - * If the numerator and denominator is set to `GLFW_DONT_CARE` then the aspect - * ratio limit is disabled. - * - * The aspect ratio is applied immediately to a windowed mode window and may - * cause it to be resized. - * - * @param[in] window The window to set limits for. - * @param[in] numer The numerator of the desired aspect ratio, or - * `GLFW_DONT_CARE`. - * @param[in] denom The denominator of the desired aspect ratio, or - * `GLFW_DONT_CARE`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. - * - * @remark If you set size limits and an aspect ratio that conflict, the - * results are undefined. - * - * @remark @wayland The aspect ratio will not be applied until the window is - * actually resized, either by the user or by the compositor. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_sizelimits - * @sa @ref glfwSetWindowSizeLimits - * - * @since Added in version 3.2. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowAspectRatio(GLFWwindow* window, int numer, int denom); - -/*! @brief Sets the size of the content area of the specified window. - * - * This function sets the size, in screen coordinates, of the content area of - * the specified window. - * - * For full screen windows, this function updates the resolution of its desired - * video mode and switches to the video mode closest to it, without affecting - * the window's context. As the context is unaffected, the bit depths of the - * framebuffer remain unchanged. - * - * If you wish to update the refresh rate of the desired video mode in addition - * to its resolution, see @ref glfwSetWindowMonitor. - * - * The window manager may put limits on what sizes are allowed. GLFW cannot - * and should not override these limits. - * - * @param[in] window The window to resize. - * @param[in] width The desired width, in screen coordinates, of the window - * content area. - * @param[in] height The desired height, in screen coordinates, of the window - * content area. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @wayland A full screen window will not attempt to change the mode, - * no matter what the requested size. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_size - * @sa @ref glfwGetWindowSize - * @sa @ref glfwSetWindowMonitor - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowSize(GLFWwindow* window, int width, int height); - -/*! @brief Retrieves the size of the framebuffer of the specified window. - * - * This function retrieves the size, in pixels, of the framebuffer of the - * specified window. If you wish to retrieve the size of the window in screen - * coordinates, see @ref glfwGetWindowSize. - * - * Any or all of the size arguments may be `NULL`. If an error occurs, all - * non-`NULL` size arguments will be set to zero. - * - * @param[in] window The window whose framebuffer to query. - * @param[out] width Where to store the width, in pixels, of the framebuffer, - * or `NULL`. - * @param[out] height Where to store the height, in pixels, of the framebuffer, - * or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_fbsize - * @sa @ref glfwSetFramebufferSizeCallback - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwGetFramebufferSize(GLFWwindow* window, int* width, int* height); - -/*! @brief Retrieves the size of the frame of the window. - * - * This function retrieves the size, in screen coordinates, of each edge of the - * frame of the specified window. This size includes the title bar, if the - * window has one. The size of the frame may vary depending on the - * [window-related hints](@ref window_hints_wnd) used to create it. - * - * Because this function retrieves the size of each window frame edge and not - * the offset along a particular coordinate axis, the retrieved values will - * always be zero or positive. - * - * Any or all of the size arguments may be `NULL`. If an error occurs, all - * non-`NULL` size arguments will be set to zero. - * - * @param[in] window The window whose frame size to query. - * @param[out] left Where to store the size, in screen coordinates, of the left - * edge of the window frame, or `NULL`. - * @param[out] top Where to store the size, in screen coordinates, of the top - * edge of the window frame, or `NULL`. - * @param[out] right Where to store the size, in screen coordinates, of the - * right edge of the window frame, or `NULL`. - * @param[out] bottom Where to store the size, in screen coordinates, of the - * bottom edge of the window frame, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_size - * - * @since Added in version 3.1. - * - * @ingroup window - */ -GLFWAPI void glfwGetWindowFrameSize(GLFWwindow* window, int* left, int* top, int* right, int* bottom); - -/*! @brief Retrieves the content scale for the specified window. - * - * This function retrieves the content scale for the specified window. The - * content scale is the ratio between the current DPI and the platform's - * default DPI. This is especially important for text and any UI elements. If - * the pixel dimensions of your UI scaled by this look appropriate on your - * machine then it should appear at a reasonable size on other machines - * regardless of their DPI and scaling settings. This relies on the system DPI - * and scaling settings being somewhat correct. - * - * On systems where each monitors can have its own content scale, the window - * content scale will depend on which monitor the system considers the window - * to be on. - * - * @param[in] window The window to query. - * @param[out] xscale Where to store the x-axis content scale, or `NULL`. - * @param[out] yscale Where to store the y-axis content scale, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_scale - * @sa @ref glfwSetWindowContentScaleCallback - * @sa @ref glfwGetMonitorContentScale - * - * @since Added in version 3.3. - * - * @ingroup window - */ -GLFWAPI void glfwGetWindowContentScale(GLFWwindow* window, float* xscale, float* yscale); - -/*! @brief Returns the opacity of the whole window. - * - * This function returns the opacity of the window, including any decorations. - * - * The opacity (or alpha) value is a positive finite number between zero and - * one, where zero is fully transparent and one is fully opaque. If the system - * does not support whole window transparency, this function always returns one. - * - * The initial opacity value for newly created windows is one. - * - * @param[in] window The window to query. - * @return The opacity value of the specified window. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_transparency - * @sa @ref glfwSetWindowOpacity - * - * @since Added in version 3.3. - * - * @ingroup window - */ -GLFWAPI float glfwGetWindowOpacity(GLFWwindow* window); - -/*! @brief Sets the opacity of the whole window. - * - * This function sets the opacity of the window, including any decorations. - * - * The opacity (or alpha) value is a positive finite number between zero and - * one, where zero is fully transparent and one is fully opaque. - * - * The initial opacity value for newly created windows is one. - * - * A window created with framebuffer transparency may not use whole window - * transparency. The results of doing this are undefined. - * - * @param[in] window The window to set the opacity for. - * @param[in] opacity The desired opacity of the specified window. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_transparency - * @sa @ref glfwGetWindowOpacity - * - * @since Added in version 3.3. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowOpacity(GLFWwindow* window, float opacity); - -/*! @brief Iconifies the specified window. - * - * This function iconifies (minimizes) the specified window if it was - * previously restored. If the window is already iconified, this function does - * nothing. - * - * If the specified window is a full screen window, the original monitor - * resolution is restored until the window is restored. - * - * @param[in] window The window to iconify. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @wayland There is no concept of iconification in wl_shell, this - * function will emit @ref GLFW_PLATFORM_ERROR when using this deprecated - * protocol. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_iconify - * @sa @ref glfwRestoreWindow - * @sa @ref glfwMaximizeWindow - * - * @since Added in version 2.1. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwIconifyWindow(GLFWwindow* window); - -/*! @brief Restores the specified window. - * - * This function restores the specified window if it was previously iconified - * (minimized) or maximized. If the window is already restored, this function - * does nothing. - * - * If the specified window is a full screen window, the resolution chosen for - * the window is restored on the selected monitor. - * - * @param[in] window The window to restore. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_iconify - * @sa @ref glfwIconifyWindow - * @sa @ref glfwMaximizeWindow - * - * @since Added in version 2.1. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwRestoreWindow(GLFWwindow* window); - -/*! @brief Maximizes the specified window. - * - * This function maximizes the specified window if it was previously not - * maximized. If the window is already maximized, this function does nothing. - * - * If the specified window is a full screen window, this function does nothing. - * - * @param[in] window The window to maximize. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_iconify - * @sa @ref glfwIconifyWindow - * @sa @ref glfwRestoreWindow - * - * @since Added in GLFW 3.2. - * - * @ingroup window - */ -GLFWAPI void glfwMaximizeWindow(GLFWwindow* window); - -/*! @brief Makes the specified window visible. - * - * This function makes the specified window visible if it was previously - * hidden. If the window is already visible or is in full screen mode, this - * function does nothing. - * - * By default, windowed mode windows are focused when shown - * Set the [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) window hint - * to change this behavior for all newly created windows, or change the - * behavior for an existing window with @ref glfwSetWindowAttrib. - * - * @param[in] window The window to make visible. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_hide - * @sa @ref glfwHideWindow - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwShowWindow(GLFWwindow* window); - -/*! @brief Hides the specified window. - * - * This function hides the specified window if it was previously visible. If - * the window is already hidden or is in full screen mode, this function does - * nothing. - * - * @param[in] window The window to hide. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_hide - * @sa @ref glfwShowWindow - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwHideWindow(GLFWwindow* window); - -/*! @brief Brings the specified window to front and sets input focus. - * - * This function brings the specified window to front and sets input focus. - * The window should already be visible and not iconified. - * - * By default, both windowed and full screen mode windows are focused when - * initially created. Set the [GLFW_FOCUSED](@ref GLFW_FOCUSED_hint) to - * disable this behavior. - * - * Also by default, windowed mode windows are focused when shown - * with @ref glfwShowWindow. Set the - * [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) to disable this behavior. - * - * __Do not use this function__ to steal focus from other applications unless - * you are certain that is what the user wants. Focus stealing can be - * extremely disruptive. - * - * For a less disruptive way of getting the user's attention, see - * [attention requests](@ref window_attention). - * - * @param[in] window The window to give input focus. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @wayland It is not possible for an application to bring its windows - * to front, this function will always emit @ref GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_focus - * @sa @ref window_attention - * - * @since Added in version 3.2. - * - * @ingroup window - */ -GLFWAPI void glfwFocusWindow(GLFWwindow* window); - -/*! @brief Requests user attention to the specified window. - * - * This function requests user attention to the specified window. On - * platforms where this is not supported, attention is requested to the - * application as a whole. - * - * Once the user has given attention, usually by focusing the window or - * application, the system will end the request automatically. - * - * @param[in] window The window to request attention to. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @macos Attention is requested to the application as a whole, not the - * specific window. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_attention - * - * @since Added in version 3.3. - * - * @ingroup window - */ -GLFWAPI void glfwRequestWindowAttention(GLFWwindow* window); - -/*! @brief Returns the monitor that the window uses for full screen mode. - * - * This function returns the handle of the monitor that the specified window is - * in full screen on. - * - * @param[in] window The window to query. - * @return The monitor, or `NULL` if the window is in windowed mode or an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_monitor - * @sa @ref glfwSetWindowMonitor - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI GLFWmonitor* glfwGetWindowMonitor(GLFWwindow* window); - -/*! @brief Sets the mode, monitor, video mode and placement of a window. - * - * This function sets the monitor that the window uses for full screen mode or, - * if the monitor is `NULL`, makes it windowed mode. - * - * When setting a monitor, this function updates the width, height and refresh - * rate of the desired video mode and switches to the video mode closest to it. - * The window position is ignored when setting a monitor. - * - * When the monitor is `NULL`, the position, width and height are used to - * place the window content area. The refresh rate is ignored when no monitor - * is specified. - * - * If you only wish to update the resolution of a full screen window or the - * size of a windowed mode window, see @ref glfwSetWindowSize. - * - * When a window transitions from full screen to windowed mode, this function - * restores any previous window settings such as whether it is decorated, - * floating, resizable, has size or aspect ratio limits, etc. - * - * @param[in] window The window whose monitor, size or video mode to set. - * @param[in] monitor The desired monitor, or `NULL` to set windowed mode. - * @param[in] xpos The desired x-coordinate of the upper-left corner of the - * content area. - * @param[in] ypos The desired y-coordinate of the upper-left corner of the - * content area. - * @param[in] width The desired with, in screen coordinates, of the content - * area or video mode. - * @param[in] height The desired height, in screen coordinates, of the content - * area or video mode. - * @param[in] refreshRate The desired refresh rate, in Hz, of the video mode, - * or `GLFW_DONT_CARE`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark The OpenGL or OpenGL ES context will not be destroyed or otherwise - * affected by any resizing or mode switching, although you may need to update - * your viewport if the framebuffer size has changed. - * - * @remark @wayland The desired window position is ignored, as there is no way - * for an application to set this property. - * - * @remark @wayland Setting the window to full screen will not attempt to - * change the mode, no matter what the requested size or refresh rate. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_monitor - * @sa @ref window_full_screen - * @sa @ref glfwGetWindowMonitor - * @sa @ref glfwSetWindowSize - * - * @since Added in version 3.2. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowMonitor(GLFWwindow* window, GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate); - -/*! @brief Returns an attribute of the specified window. - * - * This function returns the value of an attribute of the specified window or - * its OpenGL or OpenGL ES context. - * - * @param[in] window The window to query. - * @param[in] attrib The [window attribute](@ref window_attribs) whose value to - * return. - * @return The value of the attribute, or zero if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @remark Framebuffer related hints are not window attributes. See @ref - * window_attribs_fb for more information. - * - * @remark Zero is a valid value for many window and context related - * attributes so you cannot use a return value of zero as an indication of - * errors. However, this function should not fail as long as it is passed - * valid arguments and the library has been [initialized](@ref intro_init). - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_attribs - * @sa @ref glfwSetWindowAttrib - * - * @since Added in version 3.0. Replaces `glfwGetWindowParam` and - * `glfwGetGLVersion`. - * - * @ingroup window - */ -GLFWAPI int glfwGetWindowAttrib(GLFWwindow* window, int attrib); - -/*! @brief Sets an attribute of the specified window. - * - * This function sets the value of an attribute of the specified window. - * - * The supported attributes are [GLFW_DECORATED](@ref GLFW_DECORATED_attrib), - * [GLFW_RESIZABLE](@ref GLFW_RESIZABLE_attrib), - * [GLFW_FLOATING](@ref GLFW_FLOATING_attrib), - * [GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_attrib) and - * [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_attrib). - * - * Some of these attributes are ignored for full screen windows. The new - * value will take effect if the window is later made windowed. - * - * Some of these attributes are ignored for windowed mode windows. The new - * value will take effect if the window is later made full screen. - * - * @param[in] window The window to set the attribute for. - * @param[in] attrib A supported window attribute. - * @param[in] value `GLFW_TRUE` or `GLFW_FALSE`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. - * - * @remark Calling @ref glfwGetWindowAttrib will always return the latest - * value, even if that value is ignored by the current mode of the window. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_attribs - * @sa @ref glfwGetWindowAttrib - * - * @since Added in version 3.3. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowAttrib(GLFWwindow* window, int attrib, int value); - -/*! @brief Sets the user pointer of the specified window. - * - * This function sets the user-defined pointer of the specified window. The - * current value is retained until the window is destroyed. The initial value - * is `NULL`. - * - * @param[in] window The window whose pointer to set. - * @param[in] pointer The new value. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref window_userptr - * @sa @ref glfwGetWindowUserPointer - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowUserPointer(GLFWwindow* window, void* pointer); - -/*! @brief Returns the user pointer of the specified window. - * - * This function returns the current value of the user-defined pointer of the - * specified window. The initial value is `NULL`. - * - * @param[in] window The window whose pointer to return. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref window_userptr - * @sa @ref glfwSetWindowUserPointer - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI void* glfwGetWindowUserPointer(GLFWwindow* window); - -/*! @brief Sets the position callback for the specified window. - * - * This function sets the position callback of the specified window, which is - * called when the window is moved. The callback is provided with the - * position, in screen coordinates, of the upper-left corner of the content - * area of the window. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int xpos, int ypos) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWwindowposfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @remark @wayland This callback will never be called, as there is no way for - * an application to know its global position. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_pos - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow* window, GLFWwindowposfun callback); - -/*! @brief Sets the size callback for the specified window. - * - * This function sets the size callback of the specified window, which is - * called when the window is resized. The callback is provided with the size, - * in screen coordinates, of the content area of the window. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int width, int height) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWwindowsizefun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_size - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter and return value. - * - * @ingroup window - */ -GLFWAPI GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwindowsizefun callback); - -/*! @brief Sets the close callback for the specified window. - * - * This function sets the close callback of the specified window, which is - * called when the user attempts to close the window, for example by clicking - * the close widget in the title bar. - * - * The close flag is set before this callback is called, but you can modify it - * at any time with @ref glfwSetWindowShouldClose. - * - * The close callback is not triggered by @ref glfwDestroyWindow. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWwindowclosefun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @remark @macos Selecting Quit from the application menu will trigger the - * close callback for all windows. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_close - * - * @since Added in version 2.5. - * @glfw3 Added window handle parameter and return value. - * - * @ingroup window - */ -GLFWAPI GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwindowclosefun callback); - -/*! @brief Sets the refresh callback for the specified window. - * - * This function sets the refresh callback of the specified window, which is - * called when the content area of the window needs to be redrawn, for example - * if the window has been exposed after having been covered by another window. - * - * On compositing window systems such as Aero, Compiz, Aqua or Wayland, where - * the window contents are saved off-screen, this callback may be called only - * very infrequently or never at all. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window); - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWwindowrefreshfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_refresh - * - * @since Added in version 2.5. - * @glfw3 Added window handle parameter and return value. - * - * @ingroup window - */ -GLFWAPI GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow* window, GLFWwindowrefreshfun callback); - -/*! @brief Sets the focus callback for the specified window. - * - * This function sets the focus callback of the specified window, which is - * called when the window gains or loses input focus. - * - * After the focus callback is called for a window that lost input focus, - * synthetic key and mouse button release events will be generated for all such - * that had been pressed. For more information, see @ref glfwSetKeyCallback - * and @ref glfwSetMouseButtonCallback. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int focused) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWwindowfocusfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_focus - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* window, GLFWwindowfocusfun callback); - -/*! @brief Sets the iconify callback for the specified window. - * - * This function sets the iconification callback of the specified window, which - * is called when the window is iconified or restored. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int iconified) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWwindowiconifyfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @remark @wayland The wl_shell protocol has no concept of iconification, - * this callback will never be called when using this deprecated protocol. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_iconify - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow* window, GLFWwindowiconifyfun callback); - -/*! @brief Sets the maximize callback for the specified window. - * - * This function sets the maximization callback of the specified window, which - * is called when the window is maximized or restored. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int maximized) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWwindowmaximizefun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_maximize - * - * @since Added in version 3.3. - * - * @ingroup window - */ -GLFWAPI GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow* window, GLFWwindowmaximizefun callback); - -/*! @brief Sets the framebuffer resize callback for the specified window. - * - * This function sets the framebuffer resize callback of the specified window, - * which is called when the framebuffer of the specified window is resized. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int width, int height) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWframebuffersizefun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_fbsize - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow* window, GLFWframebuffersizefun callback); - -/*! @brief Sets the window content scale callback for the specified window. - * - * This function sets the window content scale callback of the specified window, - * which is called when the content scale of the specified window changes. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, float xscale, float yscale) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWwindowcontentscalefun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_scale - * @sa @ref glfwGetWindowContentScale - * - * @since Added in version 3.3. - * - * @ingroup window - */ -GLFWAPI GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow* window, GLFWwindowcontentscalefun callback); - -/*! @brief Processes all pending events. - * - * This function processes only those events that are already in the event - * queue and then returns immediately. Processing events will cause the window - * and input callbacks associated with those events to be called. - * - * On some platforms, a window move, resize or menu operation will cause event - * processing to block. This is due to how event processing is designed on - * those platforms. You can use the - * [window refresh callback](@ref window_refresh) to redraw the contents of - * your window when necessary during such operations. - * - * Do not assume that callbacks you set will _only_ be called in response to - * event processing functions like this one. While it is necessary to poll for - * events, window systems that require GLFW to register callbacks of its own - * can pass events to GLFW in response to many window system function calls. - * GLFW will pass those events on to the application callbacks before - * returning. - * - * Event processing is not required for joystick input to work. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @reentrancy This function must not be called from a callback. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref events - * @sa @ref glfwWaitEvents - * @sa @ref glfwWaitEventsTimeout - * - * @since Added in version 1.0. - * - * @ingroup window - */ -GLFWAPI void glfwPollEvents(void); - -/*! @brief Waits until events are queued and processes them. - * - * This function puts the calling thread to sleep until at least one event is - * available in the event queue. Once one or more events are available, - * it behaves exactly like @ref glfwPollEvents, i.e. the events in the queue - * are processed and the function then returns immediately. Processing events - * will cause the window and input callbacks associated with those events to be - * called. - * - * Since not all events are associated with callbacks, this function may return - * without a callback having been called even if you are monitoring all - * callbacks. - * - * On some platforms, a window move, resize or menu operation will cause event - * processing to block. This is due to how event processing is designed on - * those platforms. You can use the - * [window refresh callback](@ref window_refresh) to redraw the contents of - * your window when necessary during such operations. - * - * Do not assume that callbacks you set will _only_ be called in response to - * event processing functions like this one. While it is necessary to poll for - * events, window systems that require GLFW to register callbacks of its own - * can pass events to GLFW in response to many window system function calls. - * GLFW will pass those events on to the application callbacks before - * returning. - * - * Event processing is not required for joystick input to work. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @reentrancy This function must not be called from a callback. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref events - * @sa @ref glfwPollEvents - * @sa @ref glfwWaitEventsTimeout - * - * @since Added in version 2.5. - * - * @ingroup window - */ -GLFWAPI void glfwWaitEvents(void); - -/*! @brief Waits with timeout until events are queued and processes them. - * - * This function puts the calling thread to sleep until at least one event is - * available in the event queue, or until the specified timeout is reached. If - * one or more events are available, it behaves exactly like @ref - * glfwPollEvents, i.e. the events in the queue are processed and the function - * then returns immediately. Processing events will cause the window and input - * callbacks associated with those events to be called. - * - * The timeout value must be a positive finite number. - * - * Since not all events are associated with callbacks, this function may return - * without a callback having been called even if you are monitoring all - * callbacks. - * - * On some platforms, a window move, resize or menu operation will cause event - * processing to block. This is due to how event processing is designed on - * those platforms. You can use the - * [window refresh callback](@ref window_refresh) to redraw the contents of - * your window when necessary during such operations. - * - * Do not assume that callbacks you set will _only_ be called in response to - * event processing functions like this one. While it is necessary to poll for - * events, window systems that require GLFW to register callbacks of its own - * can pass events to GLFW in response to many window system function calls. - * GLFW will pass those events on to the application callbacks before - * returning. - * - * Event processing is not required for joystick input to work. - * - * @param[in] timeout The maximum amount of time, in seconds, to wait. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. - * - * @reentrancy This function must not be called from a callback. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref events - * @sa @ref glfwPollEvents - * @sa @ref glfwWaitEvents - * - * @since Added in version 3.2. - * - * @ingroup window - */ -GLFWAPI void glfwWaitEventsTimeout(double timeout); - -/*! @brief Posts an empty event to the event queue. - * - * This function posts an empty event from the current thread to the event - * queue, causing @ref glfwWaitEvents or @ref glfwWaitEventsTimeout to return. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref events - * @sa @ref glfwWaitEvents - * @sa @ref glfwWaitEventsTimeout - * - * @since Added in version 3.1. - * - * @ingroup window - */ -GLFWAPI void glfwPostEmptyEvent(void); - -/*! @brief Returns the value of an input option for the specified window. - * - * This function returns the value of an input option for the specified window. - * The mode must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS, - * @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or - * @ref GLFW_RAW_MOUSE_MOTION. - * - * @param[in] window The window to query. - * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`, - * `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or - * `GLFW_RAW_MOUSE_MOTION`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref glfwSetInputMode - * - * @since Added in version 3.0. - * - * @ingroup input - */ -GLFWAPI int glfwGetInputMode(GLFWwindow* window, int mode); - -/*! @brief Sets an input option for the specified window. - * - * This function sets an input mode option for the specified window. The mode - * must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS, - * @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or - * @ref GLFW_RAW_MOUSE_MOTION. - * - * If the mode is `GLFW_CURSOR`, the value must be one of the following cursor - * modes: - * - `GLFW_CURSOR_NORMAL` makes the cursor visible and behaving normally. - * - `GLFW_CURSOR_HIDDEN` makes the cursor invisible when it is over the - * content area of the window but does not restrict the cursor from leaving. - * - `GLFW_CURSOR_DISABLED` hides and grabs the cursor, providing virtual - * and unlimited cursor movement. This is useful for implementing for - * example 3D camera controls. - * - * If the mode is `GLFW_STICKY_KEYS`, the value must be either `GLFW_TRUE` to - * enable sticky keys, or `GLFW_FALSE` to disable it. If sticky keys are - * enabled, a key press will ensure that @ref glfwGetKey returns `GLFW_PRESS` - * the next time it is called even if the key had been released before the - * call. This is useful when you are only interested in whether keys have been - * pressed but not when or in which order. - * - * If the mode is `GLFW_STICKY_MOUSE_BUTTONS`, the value must be either - * `GLFW_TRUE` to enable sticky mouse buttons, or `GLFW_FALSE` to disable it. - * If sticky mouse buttons are enabled, a mouse button press will ensure that - * @ref glfwGetMouseButton returns `GLFW_PRESS` the next time it is called even - * if the mouse button had been released before the call. This is useful when - * you are only interested in whether mouse buttons have been pressed but not - * when or in which order. - * - * If the mode is `GLFW_LOCK_KEY_MODS`, the value must be either `GLFW_TRUE` to - * enable lock key modifier bits, or `GLFW_FALSE` to disable them. If enabled, - * callbacks that receive modifier bits will also have the @ref - * GLFW_MOD_CAPS_LOCK bit set when the event was generated with Caps Lock on, - * and the @ref GLFW_MOD_NUM_LOCK bit when Num Lock was on. - * - * If the mode is `GLFW_RAW_MOUSE_MOTION`, the value must be either `GLFW_TRUE` - * to enable raw (unscaled and unaccelerated) mouse motion when the cursor is - * disabled, or `GLFW_FALSE` to disable it. If raw motion is not supported, - * attempting to set this will emit @ref GLFW_PLATFORM_ERROR. Call @ref - * glfwRawMouseMotionSupported to check for support. - * - * @param[in] window The window whose input mode to set. - * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`, - * `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or - * `GLFW_RAW_MOUSE_MOTION`. - * @param[in] value The new value of the specified input mode. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref glfwGetInputMode - * - * @since Added in version 3.0. Replaces `glfwEnable` and `glfwDisable`. - * - * @ingroup input - */ -GLFWAPI void glfwSetInputMode(GLFWwindow* window, int mode, int value); - -/*! @brief Returns whether raw mouse motion is supported. - * - * This function returns whether raw mouse motion is supported on the current - * system. This status does not change after GLFW has been initialized so you - * only need to check this once. If you attempt to enable raw motion on - * a system that does not support it, @ref GLFW_PLATFORM_ERROR will be emitted. - * - * Raw mouse motion is closer to the actual motion of the mouse across - * a surface. It is not affected by the scaling and acceleration applied to - * the motion of the desktop cursor. That processing is suitable for a cursor - * while raw motion is better for controlling for example a 3D camera. Because - * of this, raw mouse motion is only provided when the cursor is disabled. - * - * @return `GLFW_TRUE` if raw mouse motion is supported on the current machine, - * or `GLFW_FALSE` otherwise. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref raw_mouse_motion - * @sa @ref glfwSetInputMode - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI int glfwRawMouseMotionSupported(void); - -/*! @brief Returns the layout-specific name of the specified printable key. - * - * This function returns the name of the specified printable key, encoded as - * UTF-8. This is typically the character that key would produce without any - * modifier keys, intended for displaying key bindings to the user. For dead - * keys, it is typically the diacritic it would add to a character. - * - * __Do not use this function__ for [text input](@ref input_char). You will - * break text input for many languages even if it happens to work for yours. - * - * If the key is `GLFW_KEY_UNKNOWN`, the scancode is used to identify the key, - * otherwise the scancode is ignored. If you specify a non-printable key, or - * `GLFW_KEY_UNKNOWN` and a scancode that maps to a non-printable key, this - * function returns `NULL` but does not emit an error. - * - * This behavior allows you to always pass in the arguments in the - * [key callback](@ref input_key) without modification. - * - * The printable keys are: - * - `GLFW_KEY_APOSTROPHE` - * - `GLFW_KEY_COMMA` - * - `GLFW_KEY_MINUS` - * - `GLFW_KEY_PERIOD` - * - `GLFW_KEY_SLASH` - * - `GLFW_KEY_SEMICOLON` - * - `GLFW_KEY_EQUAL` - * - `GLFW_KEY_LEFT_BRACKET` - * - `GLFW_KEY_RIGHT_BRACKET` - * - `GLFW_KEY_BACKSLASH` - * - `GLFW_KEY_WORLD_1` - * - `GLFW_KEY_WORLD_2` - * - `GLFW_KEY_0` to `GLFW_KEY_9` - * - `GLFW_KEY_A` to `GLFW_KEY_Z` - * - `GLFW_KEY_KP_0` to `GLFW_KEY_KP_9` - * - `GLFW_KEY_KP_DECIMAL` - * - `GLFW_KEY_KP_DIVIDE` - * - `GLFW_KEY_KP_MULTIPLY` - * - `GLFW_KEY_KP_SUBTRACT` - * - `GLFW_KEY_KP_ADD` - * - `GLFW_KEY_KP_EQUAL` - * - * Names for printable keys depend on keyboard layout, while names for - * non-printable keys are the same across layouts but depend on the application - * language and should be localized along with other user interface text. - * - * @param[in] key The key to query, or `GLFW_KEY_UNKNOWN`. - * @param[in] scancode The scancode of the key to query. - * @return The UTF-8 encoded, layout-specific name of the key, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark The contents of the returned string may change when a keyboard - * layout change event is received. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_key_name - * - * @since Added in version 3.2. - * - * @ingroup input - */ -GLFWAPI const char* glfwGetKeyName(int key, int scancode); - -/*! @brief Returns the platform-specific scancode of the specified key. - * - * This function returns the platform-specific scancode of the specified key. - * - * If the key is `GLFW_KEY_UNKNOWN` or does not exist on the keyboard this - * method will return `-1`. - * - * @param[in] key Any [named key](@ref keys). - * @return The platform-specific scancode for the key, or `-1` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref input_key - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI int glfwGetKeyScancode(int key); - -/*! @brief Returns the last reported state of a keyboard key for the specified - * window. - * - * This function returns the last state reported for the specified key to the - * specified window. The returned state is one of `GLFW_PRESS` or - * `GLFW_RELEASE`. The higher-level action `GLFW_REPEAT` is only reported to - * the key callback. - * - * If the @ref GLFW_STICKY_KEYS input mode is enabled, this function returns - * `GLFW_PRESS` the first time you call it for a key that was pressed, even if - * that key has already been released. - * - * The key functions deal with physical keys, with [key tokens](@ref keys) - * named after their use on the standard US keyboard layout. If you want to - * input text, use the Unicode character callback instead. - * - * The [modifier key bit masks](@ref mods) are not key tokens and cannot be - * used with this function. - * - * __Do not use this function__ to implement [text input](@ref input_char). - * - * @param[in] window The desired window. - * @param[in] key The desired [keyboard key](@ref keys). `GLFW_KEY_UNKNOWN` is - * not a valid key for this function. - * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_key - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup input - */ -GLFWAPI int glfwGetKey(GLFWwindow* window, int key); - -/*! @brief Returns the last reported state of a mouse button for the specified - * window. - * - * This function returns the last state reported for the specified mouse button - * to the specified window. The returned state is one of `GLFW_PRESS` or - * `GLFW_RELEASE`. - * - * If the @ref GLFW_STICKY_MOUSE_BUTTONS input mode is enabled, this function - * returns `GLFW_PRESS` the first time you call it for a mouse button that was - * pressed, even if that mouse button has already been released. - * - * @param[in] window The desired window. - * @param[in] button The desired [mouse button](@ref buttons). - * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_mouse_button - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup input - */ -GLFWAPI int glfwGetMouseButton(GLFWwindow* window, int button); - -/*! @brief Retrieves the position of the cursor relative to the content area of - * the window. - * - * This function returns the position of the cursor, in screen coordinates, - * relative to the upper-left corner of the content area of the specified - * window. - * - * If the cursor is disabled (with `GLFW_CURSOR_DISABLED`) then the cursor - * position is unbounded and limited only by the minimum and maximum values of - * a `double`. - * - * The coordinate can be converted to their integer equivalents with the - * `floor` function. Casting directly to an integer type works for positive - * coordinates, but fails for negative ones. - * - * Any or all of the position arguments may be `NULL`. If an error occurs, all - * non-`NULL` position arguments will be set to zero. - * - * @param[in] window The desired window. - * @param[out] xpos Where to store the cursor x-coordinate, relative to the - * left edge of the content area, or `NULL`. - * @param[out] ypos Where to store the cursor y-coordinate, relative to the to - * top edge of the content area, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_pos - * @sa @ref glfwSetCursorPos - * - * @since Added in version 3.0. Replaces `glfwGetMousePos`. - * - * @ingroup input - */ -GLFWAPI void glfwGetCursorPos(GLFWwindow* window, double* xpos, double* ypos); - -/*! @brief Sets the position of the cursor, relative to the content area of the - * window. - * - * This function sets the position, in screen coordinates, of the cursor - * relative to the upper-left corner of the content area of the specified - * window. The window must have input focus. If the window does not have - * input focus when this function is called, it fails silently. - * - * __Do not use this function__ to implement things like camera controls. GLFW - * already provides the `GLFW_CURSOR_DISABLED` cursor mode that hides the - * cursor, transparently re-centers it and provides unconstrained cursor - * motion. See @ref glfwSetInputMode for more information. - * - * If the cursor mode is `GLFW_CURSOR_DISABLED` then the cursor position is - * unconstrained and limited only by the minimum and maximum values of - * a `double`. - * - * @param[in] window The desired window. - * @param[in] xpos The desired x-coordinate, relative to the left edge of the - * content area. - * @param[in] ypos The desired y-coordinate, relative to the top edge of the - * content area. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @wayland This function will only work when the cursor mode is - * `GLFW_CURSOR_DISABLED`, otherwise it will do nothing. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_pos - * @sa @ref glfwGetCursorPos - * - * @since Added in version 3.0. Replaces `glfwSetMousePos`. - * - * @ingroup input - */ -GLFWAPI void glfwSetCursorPos(GLFWwindow* window, double xpos, double ypos); - -/*! @brief Creates a custom cursor. - * - * Creates a new custom cursor image that can be set for a window with @ref - * glfwSetCursor. The cursor can be destroyed with @ref glfwDestroyCursor. - * Any remaining cursors are destroyed by @ref glfwTerminate. - * - * The pixels are 32-bit, little-endian, non-premultiplied RGBA, i.e. eight - * bits per channel with the red channel first. They are arranged canonically - * as packed sequential rows, starting from the top-left corner. - * - * The cursor hotspot is specified in pixels, relative to the upper-left corner - * of the cursor image. Like all other coordinate systems in GLFW, the X-axis - * points to the right and the Y-axis points down. - * - * @param[in] image The desired cursor image. - * @param[in] xhot The desired x-coordinate, in pixels, of the cursor hotspot. - * @param[in] yhot The desired y-coordinate, in pixels, of the cursor hotspot. - * @return The handle of the created cursor, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The specified image data is copied before this function - * returns. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_object - * @sa @ref glfwDestroyCursor - * @sa @ref glfwCreateStandardCursor - * - * @since Added in version 3.1. - * - * @ingroup input - */ -GLFWAPI GLFWcursor* glfwCreateCursor(const GLFWimage* image, int xhot, int yhot); - -/*! @brief Creates a cursor with a standard shape. - * - * Returns a cursor with a [standard shape](@ref shapes), that can be set for - * a window with @ref glfwSetCursor. - * - * @param[in] shape One of the [standard shapes](@ref shapes). - * @return A new cursor ready to use or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_object - * @sa @ref glfwCreateCursor - * - * @since Added in version 3.1. - * - * @ingroup input - */ -GLFWAPI GLFWcursor* glfwCreateStandardCursor(int shape); - -/*! @brief Destroys a cursor. - * - * This function destroys a cursor previously created with @ref - * glfwCreateCursor. Any remaining cursors will be destroyed by @ref - * glfwTerminate. - * - * If the specified cursor is current for any window, that window will be - * reverted to the default cursor. This does not affect the cursor mode. - * - * @param[in] cursor The cursor object to destroy. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @reentrancy This function must not be called from a callback. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_object - * @sa @ref glfwCreateCursor - * - * @since Added in version 3.1. - * - * @ingroup input - */ -GLFWAPI void glfwDestroyCursor(GLFWcursor* cursor); - -/*! @brief Sets the cursor for the window. - * - * This function sets the cursor image to be used when the cursor is over the - * content area of the specified window. The set cursor will only be visible - * when the [cursor mode](@ref cursor_mode) of the window is - * `GLFW_CURSOR_NORMAL`. - * - * On some platforms, the set cursor may not be visible unless the window also - * has input focus. - * - * @param[in] window The window to set the cursor for. - * @param[in] cursor The cursor to set, or `NULL` to switch back to the default - * arrow cursor. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_object - * - * @since Added in version 3.1. - * - * @ingroup input - */ -GLFWAPI void glfwSetCursor(GLFWwindow* window, GLFWcursor* cursor); - -/*! @brief Sets the key callback. - * - * This function sets the key callback of the specified window, which is called - * when a key is pressed, repeated or released. - * - * The key functions deal with physical keys, with layout independent - * [key tokens](@ref keys) named after their values in the standard US keyboard - * layout. If you want to input text, use the - * [character callback](@ref glfwSetCharCallback) instead. - * - * When a window loses input focus, it will generate synthetic key release - * events for all pressed keys. You can tell these events from user-generated - * events by the fact that the synthetic ones are generated after the focus - * loss event has been processed, i.e. after the - * [window focus callback](@ref glfwSetWindowFocusCallback) has been called. - * - * The scancode of a key is specific to that platform or sometimes even to that - * machine. Scancodes are intended to allow users to bind keys that don't have - * a GLFW key token. Such keys have `key` set to `GLFW_KEY_UNKNOWN`, their - * state is not saved and so it cannot be queried with @ref glfwGetKey. - * - * Sometimes GLFW needs to generate synthetic key events, in which case the - * scancode may be zero. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new key callback, or `NULL` to remove the currently - * set callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int key, int scancode, int action, int mods) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWkeyfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_key - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter and return value. - * - * @ingroup input - */ -GLFWAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun callback); - -/*! @brief Sets the Unicode character callback. - * - * This function sets the character callback of the specified window, which is - * called when a Unicode character is input. - * - * The character callback is intended for Unicode text input. As it deals with - * characters, it is keyboard layout dependent, whereas the - * [key callback](@ref glfwSetKeyCallback) is not. Characters do not map 1:1 - * to physical keys, as a key may produce zero, one or more characters. If you - * want to know whether a specific physical key was pressed or released, see - * the key callback instead. - * - * The character callback behaves as system text input normally does and will - * not be called if modifier keys are held down that would prevent normal text - * input on that platform, for example a Super (Command) key on macOS or Alt key - * on Windows. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, unsigned int codepoint) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWcharfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_char - * - * @since Added in version 2.4. - * @glfw3 Added window handle parameter and return value. - * - * @ingroup input - */ -GLFWAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun callback); - -/*! @brief Sets the Unicode character with modifiers callback. - * - * This function sets the character with modifiers callback of the specified - * window, which is called when a Unicode character is input regardless of what - * modifier keys are used. - * - * The character with modifiers callback is intended for implementing custom - * Unicode character input. For regular Unicode text input, see the - * [character callback](@ref glfwSetCharCallback). Like the character - * callback, the character with modifiers callback deals with characters and is - * keyboard layout dependent. Characters do not map 1:1 to physical keys, as - * a key may produce zero, one or more characters. If you want to know whether - * a specific physical key was pressed or released, see the - * [key callback](@ref glfwSetKeyCallback) instead. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or an - * [error](@ref error_handling) occurred. - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, unsigned int codepoint, int mods) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWcharmodsfun). - * - * @deprecated Scheduled for removal in version 4.0. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_char - * - * @since Added in version 3.1. - * - * @ingroup input - */ -GLFWAPI GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow* window, GLFWcharmodsfun callback); - -/*! @brief Sets the mouse button callback. - * - * This function sets the mouse button callback of the specified window, which - * is called when a mouse button is pressed or released. - * - * When a window loses input focus, it will generate synthetic mouse button - * release events for all pressed mouse buttons. You can tell these events - * from user-generated events by the fact that the synthetic ones are generated - * after the focus loss event has been processed, i.e. after the - * [window focus callback](@ref glfwSetWindowFocusCallback) has been called. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int button, int action, int mods) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWmousebuttonfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_mouse_button - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter and return value. - * - * @ingroup input - */ -GLFWAPI GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow* window, GLFWmousebuttonfun callback); - -/*! @brief Sets the cursor position callback. - * - * This function sets the cursor position callback of the specified window, - * which is called when the cursor is moved. The callback is provided with the - * position, in screen coordinates, relative to the upper-left corner of the - * content area of the window. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, double xpos, double ypos); - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWcursorposfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_pos - * - * @since Added in version 3.0. Replaces `glfwSetMousePosCallback`. - * - * @ingroup input - */ -GLFWAPI GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow* window, GLFWcursorposfun callback); - -/*! @brief Sets the cursor enter/leave callback. - * - * This function sets the cursor boundary crossing callback of the specified - * window, which is called when the cursor enters or leaves the content area of - * the window. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int entered) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWcursorenterfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_enter - * - * @since Added in version 3.0. - * - * @ingroup input - */ -GLFWAPI GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* window, GLFWcursorenterfun callback); - -/*! @brief Sets the scroll callback. - * - * This function sets the scroll callback of the specified window, which is - * called when a scrolling device is used, such as a mouse wheel or scrolling - * area of a touchpad. - * - * The scroll callback receives all scrolling input, like that from a mouse - * wheel or a touchpad scrolling area. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new scroll callback, or `NULL` to remove the - * currently set callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, double xoffset, double yoffset) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWscrollfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref scrolling - * - * @since Added in version 3.0. Replaces `glfwSetMouseWheelCallback`. - * - * @ingroup input - */ -GLFWAPI GLFWscrollfun glfwSetScrollCallback(GLFWwindow* window, GLFWscrollfun callback); - -/*! @brief Sets the path drop callback. - * - * This function sets the path drop callback of the specified window, which is - * called when one or more dragged paths are dropped on the window. - * - * Because the path array and its strings may have been generated specifically - * for that event, they are not guaranteed to be valid after the callback has - * returned. If you wish to use them after the callback returns, you need to - * make a deep copy. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new file drop callback, or `NULL` to remove the - * currently set callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int path_count, const char* paths[]) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWdropfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @remark @wayland File drop is currently unimplemented. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref path_drop - * - * @since Added in version 3.1. - * - * @ingroup input - */ -GLFWAPI GLFWdropfun glfwSetDropCallback(GLFWwindow* window, GLFWdropfun callback); - -/*! @brief Returns whether the specified joystick is present. - * - * This function returns whether the specified joystick is present. - * - * There is no need to call this function before other functions that accept - * a joystick ID, as they all check for presence before performing any other - * work. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @return `GLFW_TRUE` if the joystick is present, or `GLFW_FALSE` otherwise. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref joystick - * - * @since Added in version 3.0. Replaces `glfwGetJoystickParam`. - * - * @ingroup input - */ -GLFWAPI int glfwJoystickPresent(int jid); - -/*! @brief Returns the values of all axes of the specified joystick. - * - * This function returns the values of all axes of the specified joystick. - * Each element in the array is a value between -1.0 and 1.0. - * - * If the specified joystick is not present this function will return `NULL` - * but will not generate an error. This can be used instead of first calling - * @ref glfwJoystickPresent. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @param[out] count Where to store the number of axis values in the returned - * array. This is set to zero if the joystick is not present or an error - * occurred. - * @return An array of axis values, or `NULL` if the joystick is not present or - * an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified joystick is - * disconnected or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref joystick_axis - * - * @since Added in version 3.0. Replaces `glfwGetJoystickPos`. - * - * @ingroup input - */ -GLFWAPI const float* glfwGetJoystickAxes(int jid, int* count); - -/*! @brief Returns the state of all buttons of the specified joystick. - * - * This function returns the state of all buttons of the specified joystick. - * Each element in the array is either `GLFW_PRESS` or `GLFW_RELEASE`. - * - * For backward compatibility with earlier versions that did not have @ref - * glfwGetJoystickHats, the button array also includes all hats, each - * represented as four buttons. The hats are in the same order as returned by - * __glfwGetJoystickHats__ and are in the order _up_, _right_, _down_ and - * _left_. To disable these extra buttons, set the @ref - * GLFW_JOYSTICK_HAT_BUTTONS init hint before initialization. - * - * If the specified joystick is not present this function will return `NULL` - * but will not generate an error. This can be used instead of first calling - * @ref glfwJoystickPresent. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @param[out] count Where to store the number of button states in the returned - * array. This is set to zero if the joystick is not present or an error - * occurred. - * @return An array of button states, or `NULL` if the joystick is not present - * or an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified joystick is - * disconnected or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref joystick_button - * - * @since Added in version 2.2. - * @glfw3 Changed to return a dynamic array. - * - * @ingroup input - */ -GLFWAPI const unsigned char* glfwGetJoystickButtons(int jid, int* count); - -/*! @brief Returns the state of all hats of the specified joystick. - * - * This function returns the state of all hats of the specified joystick. - * Each element in the array is one of the following values: - * - * Name | Value - * ---- | ----- - * `GLFW_HAT_CENTERED` | 0 - * `GLFW_HAT_UP` | 1 - * `GLFW_HAT_RIGHT` | 2 - * `GLFW_HAT_DOWN` | 4 - * `GLFW_HAT_LEFT` | 8 - * `GLFW_HAT_RIGHT_UP` | `GLFW_HAT_RIGHT` \| `GLFW_HAT_UP` - * `GLFW_HAT_RIGHT_DOWN` | `GLFW_HAT_RIGHT` \| `GLFW_HAT_DOWN` - * `GLFW_HAT_LEFT_UP` | `GLFW_HAT_LEFT` \| `GLFW_HAT_UP` - * `GLFW_HAT_LEFT_DOWN` | `GLFW_HAT_LEFT` \| `GLFW_HAT_DOWN` - * - * The diagonal directions are bitwise combinations of the primary (up, right, - * down and left) directions and you can test for these individually by ANDing - * it with the corresponding direction. - * - * @code - * if (hats[2] & GLFW_HAT_RIGHT) - * { - * // State of hat 2 could be right-up, right or right-down - * } - * @endcode - * - * If the specified joystick is not present this function will return `NULL` - * but will not generate an error. This can be used instead of first calling - * @ref glfwJoystickPresent. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @param[out] count Where to store the number of hat states in the returned - * array. This is set to zero if the joystick is not present or an error - * occurred. - * @return An array of hat states, or `NULL` if the joystick is not present - * or an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified joystick is - * disconnected, this function is called again for that joystick or the library - * is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref joystick_hat - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI const unsigned char* glfwGetJoystickHats(int jid, int* count); - -/*! @brief Returns the name of the specified joystick. - * - * This function returns the name, encoded as UTF-8, of the specified joystick. - * The returned string is allocated and freed by GLFW. You should not free it - * yourself. - * - * If the specified joystick is not present this function will return `NULL` - * but will not generate an error. This can be used instead of first calling - * @ref glfwJoystickPresent. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @return The UTF-8 encoded name of the joystick, or `NULL` if the joystick - * is not present or an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified joystick is - * disconnected or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref joystick_name - * - * @since Added in version 3.0. - * - * @ingroup input - */ -GLFWAPI const char* glfwGetJoystickName(int jid); - -/*! @brief Returns the SDL compatible GUID of the specified joystick. - * - * This function returns the SDL compatible GUID, as a UTF-8 encoded - * hexadecimal string, of the specified joystick. The returned string is - * allocated and freed by GLFW. You should not free it yourself. - * - * The GUID is what connects a joystick to a gamepad mapping. A connected - * joystick will always have a GUID even if there is no gamepad mapping - * assigned to it. - * - * If the specified joystick is not present this function will return `NULL` - * but will not generate an error. This can be used instead of first calling - * @ref glfwJoystickPresent. - * - * The GUID uses the format introduced in SDL 2.0.5. This GUID tries to - * uniquely identify the make and model of a joystick but does not identify - * a specific unit, e.g. all wired Xbox 360 controllers will have the same - * GUID on that platform. The GUID for a unit may vary between platforms - * depending on what hardware information the platform specific APIs provide. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @return The UTF-8 encoded GUID of the joystick, or `NULL` if the joystick - * is not present or an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified joystick is - * disconnected or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref gamepad - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI const char* glfwGetJoystickGUID(int jid); - -/*! @brief Sets the user pointer of the specified joystick. - * - * This function sets the user-defined pointer of the specified joystick. The - * current value is retained until the joystick is disconnected. The initial - * value is `NULL`. - * - * This function may be called from the joystick callback, even for a joystick - * that is being disconnected. - * - * @param[in] jid The joystick whose pointer to set. - * @param[in] pointer The new value. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref joystick_userptr - * @sa @ref glfwGetJoystickUserPointer - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI void glfwSetJoystickUserPointer(int jid, void* pointer); - -/*! @brief Returns the user pointer of the specified joystick. - * - * This function returns the current value of the user-defined pointer of the - * specified joystick. The initial value is `NULL`. - * - * This function may be called from the joystick callback, even for a joystick - * that is being disconnected. - * - * @param[in] jid The joystick whose pointer to return. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref joystick_userptr - * @sa @ref glfwSetJoystickUserPointer - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI void* glfwGetJoystickUserPointer(int jid); - -/*! @brief Returns whether the specified joystick has a gamepad mapping. - * - * This function returns whether the specified joystick is both present and has - * a gamepad mapping. - * - * If the specified joystick is present but does not have a gamepad mapping - * this function will return `GLFW_FALSE` but will not generate an error. Call - * @ref glfwJoystickPresent to check if a joystick is present regardless of - * whether it has a mapping. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @return `GLFW_TRUE` if a joystick is both present and has a gamepad mapping, - * or `GLFW_FALSE` otherwise. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref gamepad - * @sa @ref glfwGetGamepadState - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI int glfwJoystickIsGamepad(int jid); - -/*! @brief Sets the joystick configuration callback. - * - * This function sets the joystick configuration callback, or removes the - * currently set callback. This is called when a joystick is connected to or - * disconnected from the system. - * - * For joystick connection and disconnection events to be delivered on all - * platforms, you need to call one of the [event processing](@ref events) - * functions. Joystick disconnection may also be detected and the callback - * called by joystick functions. The function will then return whatever it - * returns if the joystick is not present. - * - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(int jid, int event) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWjoystickfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref joystick_event - * - * @since Added in version 3.2. - * - * @ingroup input - */ -GLFWAPI GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun callback); - -/*! @brief Adds the specified SDL_GameControllerDB gamepad mappings. - * - * This function parses the specified ASCII encoded string and updates the - * internal list with any gamepad mappings it finds. This string may - * contain either a single gamepad mapping or many mappings separated by - * newlines. The parser supports the full format of the `gamecontrollerdb.txt` - * source file including empty lines and comments. - * - * See @ref gamepad_mapping for a description of the format. - * - * If there is already a gamepad mapping for a given GUID in the internal list, - * it will be replaced by the one passed to this function. If the library is - * terminated and re-initialized the internal list will revert to the built-in - * default. - * - * @param[in] string The string containing the gamepad mappings. - * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_VALUE. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref gamepad - * @sa @ref glfwJoystickIsGamepad - * @sa @ref glfwGetGamepadName - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI int glfwUpdateGamepadMappings(const char* string); - -/*! @brief Returns the human-readable gamepad name for the specified joystick. - * - * This function returns the human-readable name of the gamepad from the - * gamepad mapping assigned to the specified joystick. - * - * If the specified joystick is not present or does not have a gamepad mapping - * this function will return `NULL` but will not generate an error. Call - * @ref glfwJoystickPresent to check whether it is present regardless of - * whether it has a mapping. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @return The UTF-8 encoded name of the gamepad, or `NULL` if the - * joystick is not present, does not have a mapping or an - * [error](@ref error_handling) occurred. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified joystick is - * disconnected, the gamepad mappings are updated or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref gamepad - * @sa @ref glfwJoystickIsGamepad - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI const char* glfwGetGamepadName(int jid); - -/*! @brief Retrieves the state of the specified joystick remapped as a gamepad. - * - * This function retrieves the state of the specified joystick remapped to - * an Xbox-like gamepad. - * - * If the specified joystick is not present or does not have a gamepad mapping - * this function will return `GLFW_FALSE` but will not generate an error. Call - * @ref glfwJoystickPresent to check whether it is present regardless of - * whether it has a mapping. - * - * The Guide button may not be available for input as it is often hooked by the - * system or the Steam client. - * - * Not all devices have all the buttons or axes provided by @ref - * GLFWgamepadstate. Unavailable buttons and axes will always report - * `GLFW_RELEASE` and 0.0 respectively. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @param[out] state The gamepad input state of the joystick. - * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if no joystick is - * connected, it has no gamepad mapping or an [error](@ref error_handling) - * occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref gamepad - * @sa @ref glfwUpdateGamepadMappings - * @sa @ref glfwJoystickIsGamepad - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI int glfwGetGamepadState(int jid, GLFWgamepadstate* state); - -/*! @brief Sets the clipboard to the specified string. - * - * This function sets the system clipboard to the specified, UTF-8 encoded - * string. - * - * @param[in] window Deprecated. Any valid window or `NULL`. - * @param[in] string A UTF-8 encoded string. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The specified string is copied before this function - * returns. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref clipboard - * @sa @ref glfwGetClipboardString - * - * @since Added in version 3.0. - * - * @ingroup input - */ -GLFWAPI void glfwSetClipboardString(GLFWwindow* window, const char* string); - -/*! @brief Returns the contents of the clipboard as a string. - * - * This function returns the contents of the system clipboard, if it contains - * or is convertible to a UTF-8 encoded string. If the clipboard is empty or - * if its contents cannot be converted, `NULL` is returned and a @ref - * GLFW_FORMAT_UNAVAILABLE error is generated. - * - * @param[in] window Deprecated. Any valid window or `NULL`. - * @return The contents of the clipboard as a UTF-8 encoded string, or `NULL` - * if an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the next call to @ref - * glfwGetClipboardString or @ref glfwSetClipboardString, or until the library - * is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref clipboard - * @sa @ref glfwSetClipboardString - * - * @since Added in version 3.0. - * - * @ingroup input - */ -GLFWAPI const char* glfwGetClipboardString(GLFWwindow* window); - -/*! @brief Returns the GLFW time. - * - * This function returns the current GLFW time, in seconds. Unless the time - * has been set using @ref glfwSetTime it measures time elapsed since GLFW was - * initialized. - * - * This function and @ref glfwSetTime are helper functions on top of @ref - * glfwGetTimerFrequency and @ref glfwGetTimerValue. - * - * The resolution of the timer is system dependent, but is usually on the order - * of a few micro- or nanoseconds. It uses the highest-resolution monotonic - * time source on each supported platform. - * - * @return The current time, in seconds, or zero if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Reading and - * writing of the internal base time is not atomic, so it needs to be - * externally synchronized with calls to @ref glfwSetTime. - * - * @sa @ref time - * - * @since Added in version 1.0. - * - * @ingroup input - */ -GLFWAPI double glfwGetTime(void); - -/*! @brief Sets the GLFW time. - * - * This function sets the current GLFW time, in seconds. The value must be - * a positive finite number less than or equal to 18446744073.0, which is - * approximately 584.5 years. - * - * This function and @ref glfwGetTime are helper functions on top of @ref - * glfwGetTimerFrequency and @ref glfwGetTimerValue. - * - * @param[in] time The new value, in seconds. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_VALUE. - * - * @remark The upper limit of GLFW time is calculated as - * floor((264 - 1) / 109) and is due to implementations - * storing nanoseconds in 64 bits. The limit may be increased in the future. - * - * @thread_safety This function may be called from any thread. Reading and - * writing of the internal base time is not atomic, so it needs to be - * externally synchronized with calls to @ref glfwGetTime. - * - * @sa @ref time - * - * @since Added in version 2.2. - * - * @ingroup input - */ -GLFWAPI void glfwSetTime(double time); - -/*! @brief Returns the current value of the raw timer. - * - * This function returns the current value of the raw timer, measured in - * 1 / frequency seconds. To get the frequency, call @ref - * glfwGetTimerFrequency. - * - * @return The value of the timer, or zero if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref time - * @sa @ref glfwGetTimerFrequency - * - * @since Added in version 3.2. - * - * @ingroup input - */ -GLFWAPI uint64_t glfwGetTimerValue(void); - -/*! @brief Returns the frequency, in Hz, of the raw timer. - * - * This function returns the frequency, in Hz, of the raw timer. - * - * @return The frequency of the timer, in Hz, or zero if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref time - * @sa @ref glfwGetTimerValue - * - * @since Added in version 3.2. - * - * @ingroup input - */ -GLFWAPI uint64_t glfwGetTimerFrequency(void); - -/*! @brief Makes the context of the specified window current for the calling - * thread. - * - * This function makes the OpenGL or OpenGL ES context of the specified window - * current on the calling thread. A context must only be made current on - * a single thread at a time and each thread can have only a single current - * context at a time. - * - * When moving a context between threads, you must make it non-current on the - * old thread before making it current on the new one. - * - * By default, making a context non-current implicitly forces a pipeline flush. - * On machines that support `GL_KHR_context_flush_control`, you can control - * whether a context performs this flush by setting the - * [GLFW_CONTEXT_RELEASE_BEHAVIOR](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint) - * hint. - * - * The specified window must have an OpenGL or OpenGL ES context. Specifying - * a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT - * error. - * - * @param[in] window The window whose context to make current, or `NULL` to - * detach the current context. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref context_current - * @sa @ref glfwGetCurrentContext - * - * @since Added in version 3.0. - * - * @ingroup context - */ -GLFWAPI void glfwMakeContextCurrent(GLFWwindow* window); - -/*! @brief Returns the window whose context is current on the calling thread. - * - * This function returns the window whose OpenGL or OpenGL ES context is - * current on the calling thread. - * - * @return The window whose context is current, or `NULL` if no window's - * context is current. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref context_current - * @sa @ref glfwMakeContextCurrent - * - * @since Added in version 3.0. - * - * @ingroup context - */ -GLFWAPI GLFWwindow* glfwGetCurrentContext(void); - -/*! @brief Swaps the front and back buffers of the specified window. - * - * This function swaps the front and back buffers of the specified window when - * rendering with OpenGL or OpenGL ES. If the swap interval is greater than - * zero, the GPU driver waits the specified number of screen updates before - * swapping the buffers. - * - * The specified window must have an OpenGL or OpenGL ES context. Specifying - * a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT - * error. - * - * This function does not apply to Vulkan. If you are rendering with Vulkan, - * see `vkQueuePresentKHR` instead. - * - * @param[in] window The window whose buffers to swap. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR. - * - * @remark __EGL:__ The context of the specified window must be current on the - * calling thread. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref buffer_swap - * @sa @ref glfwSwapInterval - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwSwapBuffers(GLFWwindow* window); - -/*! @brief Sets the swap interval for the current context. - * - * This function sets the swap interval for the current OpenGL or OpenGL ES - * context, i.e. the number of screen updates to wait from the time @ref - * glfwSwapBuffers was called before swapping the buffers and returning. This - * is sometimes called _vertical synchronization_, _vertical retrace - * synchronization_ or just _vsync_. - * - * A context that supports either of the `WGL_EXT_swap_control_tear` and - * `GLX_EXT_swap_control_tear` extensions also accepts _negative_ swap - * intervals, which allows the driver to swap immediately even if a frame - * arrives a little bit late. You can check for these extensions with @ref - * glfwExtensionSupported. - * - * A context must be current on the calling thread. Calling this function - * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. - * - * This function does not apply to Vulkan. If you are rendering with Vulkan, - * see the present mode of your swapchain instead. - * - * @param[in] interval The minimum number of screen updates to wait for - * until the buffers are swapped by @ref glfwSwapBuffers. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR. - * - * @remark This function is not called during context creation, leaving the - * swap interval set to whatever is the default on that platform. This is done - * because some swap interval extensions used by GLFW do not allow the swap - * interval to be reset to zero once it has been set to a non-zero value. - * - * @remark Some GPU drivers do not honor the requested swap interval, either - * because of a user setting that overrides the application's request or due to - * bugs in the driver. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref buffer_swap - * @sa @ref glfwSwapBuffers - * - * @since Added in version 1.0. - * - * @ingroup context - */ -GLFWAPI void glfwSwapInterval(int interval); - -/*! @brief Returns whether the specified extension is available. - * - * This function returns whether the specified - * [API extension](@ref context_glext) is supported by the current OpenGL or - * OpenGL ES context. It searches both for client API extension and context - * creation API extensions. - * - * A context must be current on the calling thread. Calling this function - * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. - * - * As this functions retrieves and searches one or more extension strings each - * call, it is recommended that you cache its results if it is going to be used - * frequently. The extension strings will not change during the lifetime of - * a context, so there is no danger in doing this. - * - * This function does not apply to Vulkan. If you are using Vulkan, see @ref - * glfwGetRequiredInstanceExtensions, `vkEnumerateInstanceExtensionProperties` - * and `vkEnumerateDeviceExtensionProperties` instead. - * - * @param[in] extension The ASCII encoded name of the extension. - * @return `GLFW_TRUE` if the extension is available, or `GLFW_FALSE` - * otherwise. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_NO_CURRENT_CONTEXT, @ref GLFW_INVALID_VALUE and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref context_glext - * @sa @ref glfwGetProcAddress - * - * @since Added in version 1.0. - * - * @ingroup context - */ -GLFWAPI int glfwExtensionSupported(const char* extension); - -/*! @brief Returns the address of the specified function for the current - * context. - * - * This function returns the address of the specified OpenGL or OpenGL ES - * [core or extension function](@ref context_glext), if it is supported - * by the current context. - * - * A context must be current on the calling thread. Calling this function - * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. - * - * This function does not apply to Vulkan. If you are rendering with Vulkan, - * see @ref glfwGetInstanceProcAddress, `vkGetInstanceProcAddr` and - * `vkGetDeviceProcAddr` instead. - * - * @param[in] procname The ASCII encoded name of the function. - * @return The address of the function, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR. - * - * @remark The address of a given function is not guaranteed to be the same - * between contexts. - * - * @remark This function may return a non-`NULL` address despite the - * associated version or extension not being available. Always check the - * context version or extension string first. - * - * @pointer_lifetime The returned function pointer is valid until the context - * is destroyed or the library is terminated. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref context_glext - * @sa @ref glfwExtensionSupported - * - * @since Added in version 1.0. - * - * @ingroup context - */ -GLFWAPI GLFWglproc glfwGetProcAddress(const char* procname); - -/*! @brief Returns whether the Vulkan loader and an ICD have been found. - * - * This function returns whether the Vulkan loader and any minimally functional - * ICD have been found. - * - * The availability of a Vulkan loader and even an ICD does not by itself - * guarantee that surface creation or even instance creation is possible. - * For example, on Fermi systems Nvidia will install an ICD that provides no - * actual Vulkan support. Call @ref glfwGetRequiredInstanceExtensions to check - * whether the extensions necessary for Vulkan surface creation are available - * and @ref glfwGetPhysicalDevicePresentationSupport to check whether a queue - * family of a physical device supports image presentation. - * - * @return `GLFW_TRUE` if Vulkan is minimally available, or `GLFW_FALSE` - * otherwise. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref vulkan_support - * - * @since Added in version 3.2. - * - * @ingroup vulkan - */ -GLFWAPI int glfwVulkanSupported(void); - -/*! @brief Returns the Vulkan instance extensions required by GLFW. - * - * This function returns an array of names of Vulkan instance extensions required - * by GLFW for creating Vulkan surfaces for GLFW windows. If successful, the - * list will always contain `VK_KHR_surface`, so if you don't require any - * additional extensions you can pass this list directly to the - * `VkInstanceCreateInfo` struct. - * - * If Vulkan is not available on the machine, this function returns `NULL` and - * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported - * to check whether Vulkan is at least minimally available. - * - * If Vulkan is available but no set of extensions allowing window surface - * creation was found, this function returns `NULL`. You may still use Vulkan - * for off-screen rendering and compute work. - * - * @param[out] count Where to store the number of extensions in the returned - * array. This is set to zero if an error occurred. - * @return An array of ASCII encoded extension names, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_API_UNAVAILABLE. - * - * @remark Additional extensions may be required by future versions of GLFW. - * You should check if any extensions you wish to enable are already in the - * returned array, as it is an error to specify an extension more than once in - * the `VkInstanceCreateInfo` struct. - * - * @remark @macos This function currently supports either the - * `VK_MVK_macos_surface` extension from MoltenVK or `VK_EXT_metal_surface` - * extension. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is guaranteed to be valid only until the - * library is terminated. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref vulkan_ext - * @sa @ref glfwCreateWindowSurface - * - * @since Added in version 3.2. - * - * @ingroup vulkan - */ -GLFWAPI const char** glfwGetRequiredInstanceExtensions(uint32_t* count); - -#if defined(VK_VERSION_1_0) - -/*! @brief Returns the address of the specified Vulkan instance function. - * - * This function returns the address of the specified Vulkan core or extension - * function for the specified instance. If instance is set to `NULL` it can - * return any function exported from the Vulkan loader, including at least the - * following functions: - * - * - `vkEnumerateInstanceExtensionProperties` - * - `vkEnumerateInstanceLayerProperties` - * - `vkCreateInstance` - * - `vkGetInstanceProcAddr` - * - * If Vulkan is not available on the machine, this function returns `NULL` and - * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported - * to check whether Vulkan is at least minimally available. - * - * This function is equivalent to calling `vkGetInstanceProcAddr` with - * a platform-specific query of the Vulkan loader as a fallback. - * - * @param[in] instance The Vulkan instance to query, or `NULL` to retrieve - * functions related to instance creation. - * @param[in] procname The ASCII encoded name of the function. - * @return The address of the function, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_API_UNAVAILABLE. - * - * @pointer_lifetime The returned function pointer is valid until the library - * is terminated. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref vulkan_proc - * - * @since Added in version 3.2. - * - * @ingroup vulkan - */ -GLFWAPI GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char* procname); - -/*! @brief Returns whether the specified queue family can present images. - * - * This function returns whether the specified queue family of the specified - * physical device supports presentation to the platform GLFW was built for. - * - * If Vulkan or the required window surface creation instance extensions are - * not available on the machine, or if the specified instance was not created - * with the required extensions, this function returns `GLFW_FALSE` and - * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported - * to check whether Vulkan is at least minimally available and @ref - * glfwGetRequiredInstanceExtensions to check what instance extensions are - * required. - * - * @param[in] instance The instance that the physical device belongs to. - * @param[in] device The physical device that the queue family belongs to. - * @param[in] queuefamily The index of the queue family to query. - * @return `GLFW_TRUE` if the queue family supports presentation, or - * `GLFW_FALSE` otherwise. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_API_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR. - * - * @remark @macos This function currently always returns `GLFW_TRUE`, as the - * `VK_MVK_macos_surface` extension does not provide - * a `vkGetPhysicalDevice*PresentationSupport` type function. - * - * @thread_safety This function may be called from any thread. For - * synchronization details of Vulkan objects, see the Vulkan specification. - * - * @sa @ref vulkan_present - * - * @since Added in version 3.2. - * - * @ingroup vulkan - */ -GLFWAPI int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily); - -/*! @brief Creates a Vulkan surface for the specified window. - * - * This function creates a Vulkan surface for the specified window. - * - * If the Vulkan loader or at least one minimally functional ICD were not found, - * this function returns `VK_ERROR_INITIALIZATION_FAILED` and generates a @ref - * GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported to check whether - * Vulkan is at least minimally available. - * - * If the required window surface creation instance extensions are not - * available or if the specified instance was not created with these extensions - * enabled, this function returns `VK_ERROR_EXTENSION_NOT_PRESENT` and - * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref - * glfwGetRequiredInstanceExtensions to check what instance extensions are - * required. - * - * The window surface cannot be shared with another API so the window must - * have been created with the [client api hint](@ref GLFW_CLIENT_API_attrib) - * set to `GLFW_NO_API` otherwise it generates a @ref GLFW_INVALID_VALUE error - * and returns `VK_ERROR_NATIVE_WINDOW_IN_USE_KHR`. - * - * The window surface must be destroyed before the specified Vulkan instance. - * It is the responsibility of the caller to destroy the window surface. GLFW - * does not destroy it for you. Call `vkDestroySurfaceKHR` to destroy the - * surface. - * - * @param[in] instance The Vulkan instance to create the surface in. - * @param[in] window The window to create the surface for. - * @param[in] allocator The allocator to use, or `NULL` to use the default - * allocator. - * @param[out] surface Where to store the handle of the surface. This is set - * to `VK_NULL_HANDLE` if an error occurred. - * @return `VK_SUCCESS` if successful, or a Vulkan error code if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_API_UNAVAILABLE, @ref GLFW_PLATFORM_ERROR and @ref GLFW_INVALID_VALUE - * - * @remark If an error occurs before the creation call is made, GLFW returns - * the Vulkan error code most appropriate for the error. Appropriate use of - * @ref glfwVulkanSupported and @ref glfwGetRequiredInstanceExtensions should - * eliminate almost all occurrences of these errors. - * - * @remark @macos This function currently only supports the - * `VK_MVK_macos_surface` extension from MoltenVK. - * - * @remark @macos This function creates and sets a `CAMetalLayer` instance for - * the window content view, which is required for MoltenVK to function. - * - * @thread_safety This function may be called from any thread. For - * synchronization details of Vulkan objects, see the Vulkan specification. - * - * @sa @ref vulkan_surface - * @sa @ref glfwGetRequiredInstanceExtensions - * - * @since Added in version 3.2. - * - * @ingroup vulkan - */ -GLFWAPI VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow* window, const VkAllocationCallbacks* allocator, VkSurfaceKHR* surface); - -#endif /*VK_VERSION_1_0*/ - - -/************************************************************************* - * Global definition cleanup - *************************************************************************/ - -/* ------------------- BEGIN SYSTEM/COMPILER SPECIFIC -------------------- */ - -#ifdef GLFW_WINGDIAPI_DEFINED - #undef WINGDIAPI - #undef GLFW_WINGDIAPI_DEFINED -#endif - -#ifdef GLFW_CALLBACK_DEFINED - #undef CALLBACK - #undef GLFW_CALLBACK_DEFINED -#endif - -/* Some OpenGL related headers need GLAPIENTRY, but it is unconditionally - * defined by some gl.h variants (OpenBSD) so define it after if needed. - */ -#ifndef GLAPIENTRY - #define GLAPIENTRY APIENTRY -#endif - -/* -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- */ - - -#ifdef __cplusplus -} -#endif - -#endif /* _glfw3_h_ */ - diff --git a/Nuake/dependencies/GLFW/x64/include/GLFW/glfw3native.h b/Nuake/dependencies/GLFW/x64/include/GLFW/glfw3native.h deleted file mode 100644 index 267e75ca..00000000 --- a/Nuake/dependencies/GLFW/x64/include/GLFW/glfw3native.h +++ /dev/null @@ -1,525 +0,0 @@ -/************************************************************************* - * GLFW 3.3 - www.glfw.org - * A library for OpenGL, window and input - *------------------------------------------------------------------------ - * Copyright (c) 2002-2006 Marcus Geelnard - * Copyright (c) 2006-2018 Camilla Löwy - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would - * be appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not - * be misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - * - *************************************************************************/ - -#ifndef _glfw3_native_h_ -#define _glfw3_native_h_ - -#ifdef __cplusplus -extern "C" { -#endif - - -/************************************************************************* - * Doxygen documentation - *************************************************************************/ - -/*! @file glfw3native.h - * @brief The header of the native access functions. - * - * This is the header file of the native access functions. See @ref native for - * more information. - */ -/*! @defgroup native Native access - * @brief Functions related to accessing native handles. - * - * **By using the native access functions you assert that you know what you're - * doing and how to fix problems caused by using them. If you don't, you - * shouldn't be using them.** - * - * Before the inclusion of @ref glfw3native.h, you may define zero or more - * window system API macro and zero or more context creation API macros. - * - * The chosen backends must match those the library was compiled for. Failure - * to do this will cause a link-time error. - * - * The available window API macros are: - * * `GLFW_EXPOSE_NATIVE_WIN32` - * * `GLFW_EXPOSE_NATIVE_COCOA` - * * `GLFW_EXPOSE_NATIVE_X11` - * * `GLFW_EXPOSE_NATIVE_WAYLAND` - * - * The available context API macros are: - * * `GLFW_EXPOSE_NATIVE_WGL` - * * `GLFW_EXPOSE_NATIVE_NSGL` - * * `GLFW_EXPOSE_NATIVE_GLX` - * * `GLFW_EXPOSE_NATIVE_EGL` - * * `GLFW_EXPOSE_NATIVE_OSMESA` - * - * These macros select which of the native access functions that are declared - * and which platform-specific headers to include. It is then up your (by - * definition platform-specific) code to handle which of these should be - * defined. - */ - - -/************************************************************************* - * System headers and types - *************************************************************************/ - -#if defined(GLFW_EXPOSE_NATIVE_WIN32) || defined(GLFW_EXPOSE_NATIVE_WGL) - // This is a workaround for the fact that glfw3.h needs to export APIENTRY (for - // example to allow applications to correctly declare a GL_ARB_debug_output - // callback) but windows.h assumes no one will define APIENTRY before it does - #if defined(GLFW_APIENTRY_DEFINED) - #undef APIENTRY - #undef GLFW_APIENTRY_DEFINED - #endif - #include -#elif defined(GLFW_EXPOSE_NATIVE_COCOA) || defined(GLFW_EXPOSE_NATIVE_NSGL) - #if defined(__OBJC__) - #import - #else - #include - typedef void* id; - #endif -#elif defined(GLFW_EXPOSE_NATIVE_X11) || defined(GLFW_EXPOSE_NATIVE_GLX) - #include - #include -#elif defined(GLFW_EXPOSE_NATIVE_WAYLAND) - #include -#endif - -#if defined(GLFW_EXPOSE_NATIVE_WGL) - /* WGL is declared by windows.h */ -#endif -#if defined(GLFW_EXPOSE_NATIVE_NSGL) - /* NSGL is declared by Cocoa.h */ -#endif -#if defined(GLFW_EXPOSE_NATIVE_GLX) - #include -#endif -#if defined(GLFW_EXPOSE_NATIVE_EGL) - #include -#endif -#if defined(GLFW_EXPOSE_NATIVE_OSMESA) - #include -#endif - - -/************************************************************************* - * Functions - *************************************************************************/ - -#if defined(GLFW_EXPOSE_NATIVE_WIN32) -/*! @brief Returns the adapter device name of the specified monitor. - * - * @return The UTF-8 encoded adapter device name (for example `\\.\DISPLAY1`) - * of the specified monitor, or `NULL` if an [error](@ref error_handling) - * occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.1. - * - * @ingroup native - */ -GLFWAPI const char* glfwGetWin32Adapter(GLFWmonitor* monitor); - -/*! @brief Returns the display device name of the specified monitor. - * - * @return The UTF-8 encoded display device name (for example - * `\\.\DISPLAY1\Monitor0`) of the specified monitor, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.1. - * - * @ingroup native - */ -GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor); - -/*! @brief Returns the `HWND` of the specified window. - * - * @return The `HWND` of the specified window, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI HWND glfwGetWin32Window(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_WGL) -/*! @brief Returns the `HGLRC` of the specified window. - * - * @return The `HGLRC` of the specified window, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI HGLRC glfwGetWGLContext(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_COCOA) -/*! @brief Returns the `CGDirectDisplayID` of the specified monitor. - * - * @return The `CGDirectDisplayID` of the specified monitor, or - * `kCGNullDirectDisplay` if an [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.1. - * - * @ingroup native - */ -GLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor); - -/*! @brief Returns the `NSWindow` of the specified window. - * - * @return The `NSWindow` of the specified window, or `nil` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI id glfwGetCocoaWindow(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_NSGL) -/*! @brief Returns the `NSOpenGLContext` of the specified window. - * - * @return The `NSOpenGLContext` of the specified window, or `nil` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI id glfwGetNSGLContext(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_X11) -/*! @brief Returns the `Display` used by GLFW. - * - * @return The `Display` used by GLFW, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI Display* glfwGetX11Display(void); - -/*! @brief Returns the `RRCrtc` of the specified monitor. - * - * @return The `RRCrtc` of the specified monitor, or `None` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.1. - * - * @ingroup native - */ -GLFWAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor); - -/*! @brief Returns the `RROutput` of the specified monitor. - * - * @return The `RROutput` of the specified monitor, or `None` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.1. - * - * @ingroup native - */ -GLFWAPI RROutput glfwGetX11Monitor(GLFWmonitor* monitor); - -/*! @brief Returns the `Window` of the specified window. - * - * @return The `Window` of the specified window, or `None` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI Window glfwGetX11Window(GLFWwindow* window); - -/*! @brief Sets the current primary selection to the specified string. - * - * @param[in] string A UTF-8 encoded string. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The specified string is copied before this function - * returns. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref clipboard - * @sa glfwGetX11SelectionString - * @sa glfwSetClipboardString - * - * @since Added in version 3.3. - * - * @ingroup native - */ -GLFWAPI void glfwSetX11SelectionString(const char* string); - -/*! @brief Returns the contents of the current primary selection as a string. - * - * If the selection is empty or if its contents cannot be converted, `NULL` - * is returned and a @ref GLFW_FORMAT_UNAVAILABLE error is generated. - * - * @return The contents of the selection as a UTF-8 encoded string, or `NULL` - * if an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the next call to @ref - * glfwGetX11SelectionString or @ref glfwSetX11SelectionString, or until the - * library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref clipboard - * @sa glfwSetX11SelectionString - * @sa glfwGetClipboardString - * - * @since Added in version 3.3. - * - * @ingroup native - */ -GLFWAPI const char* glfwGetX11SelectionString(void); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_GLX) -/*! @brief Returns the `GLXContext` of the specified window. - * - * @return The `GLXContext` of the specified window, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* window); - -/*! @brief Returns the `GLXWindow` of the specified window. - * - * @return The `GLXWindow` of the specified window, or `None` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.2. - * - * @ingroup native - */ -GLFWAPI GLXWindow glfwGetGLXWindow(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_WAYLAND) -/*! @brief Returns the `struct wl_display*` used by GLFW. - * - * @return The `struct wl_display*` used by GLFW, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.2. - * - * @ingroup native - */ -GLFWAPI struct wl_display* glfwGetWaylandDisplay(void); - -/*! @brief Returns the `struct wl_output*` of the specified monitor. - * - * @return The `struct wl_output*` of the specified monitor, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.2. - * - * @ingroup native - */ -GLFWAPI struct wl_output* glfwGetWaylandMonitor(GLFWmonitor* monitor); - -/*! @brief Returns the main `struct wl_surface*` of the specified window. - * - * @return The main `struct wl_surface*` of the specified window, or `NULL` if - * an [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.2. - * - * @ingroup native - */ -GLFWAPI struct wl_surface* glfwGetWaylandWindow(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_EGL) -/*! @brief Returns the `EGLDisplay` used by GLFW. - * - * @return The `EGLDisplay` used by GLFW, or `EGL_NO_DISPLAY` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI EGLDisplay glfwGetEGLDisplay(void); - -/*! @brief Returns the `EGLContext` of the specified window. - * - * @return The `EGLContext` of the specified window, or `EGL_NO_CONTEXT` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI EGLContext glfwGetEGLContext(GLFWwindow* window); - -/*! @brief Returns the `EGLSurface` of the specified window. - * - * @return The `EGLSurface` of the specified window, or `EGL_NO_SURFACE` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI EGLSurface glfwGetEGLSurface(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_OSMESA) -/*! @brief Retrieves the color buffer associated with the specified window. - * - * @param[in] window The window whose color buffer to retrieve. - * @param[out] width Where to store the width of the color buffer, or `NULL`. - * @param[out] height Where to store the height of the color buffer, or `NULL`. - * @param[out] format Where to store the OSMesa pixel format of the color - * buffer, or `NULL`. - * @param[out] buffer Where to store the address of the color buffer, or - * `NULL`. - * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.3. - * - * @ingroup native - */ -GLFWAPI int glfwGetOSMesaColorBuffer(GLFWwindow* window, int* width, int* height, int* format, void** buffer); - -/*! @brief Retrieves the depth buffer associated with the specified window. - * - * @param[in] window The window whose depth buffer to retrieve. - * @param[out] width Where to store the width of the depth buffer, or `NULL`. - * @param[out] height Where to store the height of the depth buffer, or `NULL`. - * @param[out] bytesPerValue Where to store the number of bytes per depth - * buffer element, or `NULL`. - * @param[out] buffer Where to store the address of the depth buffer, or - * `NULL`. - * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.3. - * - * @ingroup native - */ -GLFWAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* window, int* width, int* height, int* bytesPerValue, void** buffer); - -/*! @brief Returns the `OSMesaContext` of the specified window. - * - * @return The `OSMesaContext` of the specified window, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.3. - * - * @ingroup native - */ -GLFWAPI OSMesaContext glfwGetOSMesaContext(GLFWwindow* window); -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* _glfw3_native_h_ */ - diff --git a/Nuake/dependencies/GLFW/x64/lib-vc2019/glfw3.dll b/Nuake/dependencies/GLFW/x64/lib-vc2019/glfw3.dll deleted file mode 100644 index cce448e6409a39db7a706ed0de9e2e383c67b368..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225792 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�$R^o35?=RWV#At9MM1>u%B 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

i^LsC6z0mg4-UxpBcusK~y28HD(s> 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 z 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 diff --git a/Nuake/dependencies/GLFW/x64/lib-vc2019/glfw3.lib b/Nuake/dependencies/GLFW/x64/lib-vc2019/glfw3.lib deleted file mode 100644 index b3444dff3eb8b0aa1bc0515b112071cd73419f24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 648436 zcmeFa&2J=0lGw|c>Dk?x-JJn+)JYEzbd;F&S;dcx2n%yJH#avoGdKIc z{_$#e{o()q^*{Q1{jb^a>G{#=`Pu1d|N4IS@pym#r3^zZk6VZQ(Kzux=BALILf z{*S$1{0;m5>YIPH_qX=@zy6E8uim~#H2CE|_`7?5H0ZZKR$m5UT$yKJO9BfD;LEwNZf&4B@ZvFJ+zp-hSb(mDqR)+WmNO{IGq#IKJJ!Jlwcel=CWI#Bphx z+k5%q`FXdwa*Ymyc^NfX7UZTaf*@IK?$$RK$Ish~<7?G6eyd(sJRuD#;vkP(zh%wi z`XMbZjvsg1TVC;Was2YI`hmAOxNIISlORkZL(U<>dxq7Zqk9fApC?7M%+k;!h2PTM zn!c@n0QiOh_u=YAQ7-G{Yh84J*D!zstmj1*hgsE{0hOkjF2?UJjyH5rje+Xp%7<*@ zASJpRI@8beh+wfJb%MGH z!m=*pMXyb1WK&a@Mbu{U6eO9H5aB!zvt{bN=-tcic6GgW=%RVGh|}eA5qB>_D%@_~ z>v`)QOXq2`ST564QRQ-(ea(1X3j6M!9(ym$V2vQjleQN6sVDW6=IN1Ks-h}Pf=IPc z)8o6%!_D^NsF~TkPU=Nj=IX6q6iV5=jq;{gE?YH-Oru4c_vQ{f?Rr&um1Le@?m2kpGgkjHsp8|I6RD@MbLAR2w~_rt^ihYMtK z5;v_T^Tb$RK5Q@7yWQ5UgJC$2nmkUT$PmKEw_*NoR(G3!4k0@_S)v1(HuU zGno_QwAKf$^Ps4jdX#GO%%8FGM<8kyd8(!Y@QzPRzF@GI;_#Wh!7@4 zIEhw^y`_9prKzg>4bGSvJK9{T24&c>Q1@Q9aVSWWlV$`8OYg zqK}Vvn`>6q?E^%9d1Cx;wC=_|H=m;#I7C1lHF_{_Jw1s@z2z0W4Xtqdvh##`9L>{3 z5ock#m@mMf#f<2L{$Sp0Whh||+s-(iCqcz5DT4U|2}J{cSZjg&&5w^gP5{^k%fn?> zw;5m>UDQnmk9Q`~)yr^^rz~O?UAy^ozk2*Ex^f-_3&b2ci|ZY0)@0{ADG=B5FwfIy z5m;HLMx$Go%t*+b(&O)X2>q8yUSw&iP`*6u*4Nwj56CGd(MsvKFESJ|X;zM)39DtB z#%TrzbWQD6w#l|ye4uHfJWTT}(F|kx@ky`WV7f(J7GAoB5iDRi595H%NRrIcGJf~N zL0^9<=W!{Ecom7pBLcRk-jwsKXu`Y&D@sMcR|En|V+bNx5tm9eBqh-UCd^1Pw{4G@=RWmB4!-OBRbbL;a%lQ~hh^OBSTM zh!(p0v&*pRcd?l_RUH?>vgumUt-lsYJCEX^X)@gk(c|>~%&mGYRHBvTGLl#Plb7}G z$9HT59^QNJs1{KYlzCtpI%)^YZruhgQbAtQ+gXk^WCqHq$M%CIv0Ul&U;d;+GSj^) z9ihD|9TOToI6!%=mSGgqrH@LR47L1Ydtjdl=4n=;n&z!Mqm{J|m;X?cF7l$T8+j;N z->vO7(>)ZqV z>0nc2b(E{e7GDRK_b+$Po2S+Nqpt`i^K21BZBQ+`rgelEbu^jRZM1B2v;u?o30@hi zWNhWqlpSxP8z`6`H=ovbm$%#9y(cOHG~BR=slfi=1;`mE;g9_5$wq6x|(tqrY) zPt#Y|j1rAJVr!cw^6nn{bT)$CaXiWqU9L7oAzG3bqsIyJ1l-@}?Vg8O;6|P3XJ9Ji(e$FRMn-h;Het zM_OyxV#auXcc`Sb!^Tc9Ni*b?8|DGF-S!IQ;lXQRG*6l;so194(H_98pAJ;V93EEv zIBmnFoCnE z=JTQs!fcTzKc%_xI|o@HirDXDh|&oPJ;}b~3Hf@h^my9rAeorUB8iGp&G=z+^?155 zdG@%cnn!8D3ZF((I6te9v-B>?CaX}gy5|1w;roZ}NAy8MP&Iiwb;-51mDM1q#DF@{ zPe)wy77NKDUsmlhWR3XiLWb;<%Q%!Jyu%soP<0tOtEI}O;qh_1gUrpN!-?G`$rfeC z(%wNT74l{bj*ib(!iUVUNi4$R_3<=a?5_-1i|V$*q?o9cLB{i^wl+omtlOd}ZEJnm z<7nF^k>Xs}+9ecX>BSao`uRDW&mSCQHBUm6KoqQr;aorHjoj0Rm1s;C#~&>qn~yTB z7K@gBzE4_tRMcE8%sm_EwF6}nh@G}gQ;XCH0I`~i)wA30UcE4$-=!8Z!GeKZW|<{w z*$~@8kYs*WKl-?)R$uecpd;-Ce%XzYjX(2M4{!4vxCpU7KhvUkCfMTdn7YzJCH{ zaN4i^V6|Vl(rLf^*(qvP`w8YKniyd)spk)vFE;Ggp0J5rZ*QF3!zB|oVHHP7Gyis} z%ve|s4i7H7-Ig7^AfM-Tg&`>~=0AL|Tgm?T@SszuF^jrqYxW5lIyJ^I^~_KZo8@ui zFO1mZf+SE*22iivPlv|+UMZdNj~}JxWzodg%rf-e3Nj(q|Cm% z&EwS;pMXV(KPC+UD`ipq972>)X2#XVhitMai(AoArXaCve1CEL{%(7C zdCTgQrx+S0Aq`3IS5Lgb$B9*XfhY`_c9W31^?NbdvI2Y*!n(%h_^aZKZO9i;K0U7< zZajG(7TCedXn_g$HH^l4v|D{dtT~jJ#gaJ6VcXXr@3-Q0(r^!MbqcXFVT#Lh{`f*K zhd9f5S=4d7jM*SfjftV`w=Z|!uV4t*+IpU(3)IK(H8$Tqu(Bd{H4iyJ7XBtE>abie zm&Akd;m0S8V(c1!*j$U*>F}V%wB?)8aTJInFGxgfoNA^siYfN7$S|N`hgpOH!(stV zUp5aic-K($e)IICmL&_=&hxkqn<|WqWEjYV*?AGP%RDUd`NiK~EK>PV%8x{Td}m%X z3s~Opz=jR#=hTC8?NWZ^@*|WVjr^$X8*m2%br}Xt`05J|1!8}WtVMv{%@1#ta2J8E zJ|FELEBUOXEkE4#vs)#RyBqfUfs*>}xx>?2d4&6Bo!OrqYaIJ4CCmBTy=gUgOf4My z`^Wl~oG;MGj<346b+74~u)jb2tk;0{ZuKlXXDxf#og>Vq?!42}@#gg>U;_l`6s*2u zY$VDYW6&CR+yvh4*3@g0?e)vk_Ay1^qTLGeRSM^)7sTUp1%QK8@}q z4#7K&m81L1^^fnm)o^sLKOeiPsBG5nv}Qbl__}j1=iP*I27%F|25XJkVsulJN-gCN z&pdhe+9RralO5BqXmCw#o_~A=!4$zX-1wE*=BBfR_g|K?cyDfhoEqF}^=Wet(WmaU z+q=8?2gZ6ZWHjkHzJGlFQQhpL`g--T+P*xktF8DAx-nSa3?91Qa|xeCFvH z$Ieu{-hF}DS|DxIzZB0D*o( zf|cbNx&8{cjNvP{Dn=Jty>fSwy)4$L4(s-Oy?)yKbJ+;J^4>A~*_X<#61EyLj(y;p z&GYEJAGRN-2K&3!=6Q+<-Suxa_v`J;Kp=HA6`3}qxW1L4oe*Tw@0`A+r^{ygrkOC4 zkl${eBo0Nt^y^Mr(=QG0R!<^c57}hMPT+TVXS6mqx^FfL^02;Xb_(dTRh-AmB4_*g zdDY^Zl1(N0T5o003sQv_=+o4VZ|(*&y<09O0J=LP2o{3TwGvf%;uUbi=+WOjh+geI zEFKma;GIW0v(5=Fxs|BB^TYL6gsR)$ia*#;kjRxNAVws?1Z4MGtY}Dh6lgvV8xS)P7GN53b?>q%Uf(aY-Y+s)eB z1QEm(v)#xO3_R?>84MJ9bjatGD4?V0r=Y@T6)a>sJ@*YGA9ovZ=1DY~=A_+^u1!R8 zU{MJc_$7wTSC011Y~%%UpgYEC9Jh(T`AApy_bbui?;qKbGOK;}qs0bS67hg`DYn@u zu6zADN~>;JKO=h5u?>X0uz5#XgxjQT731k=H6EN&A5mp3SKeGRet zlWY3juRSx8$PWCw?e2S&uhj_jTcPcESp(AE8O&@Z->|i;_Fcz(ImI#{>#%)~M-tvK zxa>==#m(vw*0yF3VGKjKE-v*jTO>hK=Zt=OX_lr-vq%h%FHF0o7idB-TMN<#E2p}Uhlh@Q3~7ycsVEMo7o57s7R;SnL`Lo!Vs7(+vWW9?Bx7peY$^oe0n6v_76VUos|B= z;Y;TQk+f-=zhYldGDUX~YyBtBGC`uo$Cr{jB)SHMN-6RftI#vzSj-dgpbr`_o-<@XL9!EZRJ8UNQT4_@&tnuw;>v zK#0XF+5i@135Yg*b+%}{5-=P=qRh2P8lh}zd&uv%tY!`+{*N-O3rv6XmE-mD)$iG7 zKG}v7LLApglP0;HMBjZ_ubp|BVD=&|+N6o*$NNX;M@Ppe^3%S6bt8$=I%df=Q!17C zD;Ds}ONltTyL@`S*=+G4!jHF?+eg`8AOelaLATs|K03HHCIfAPIJxD^nI5j)XKPX* zwSaz!Sh3ZYvLf@>tg{t#m(RQ3##Eq93;X*=T8c;L9oNr=BJ=h4NV*3;(pXQ<_8%co zg3%d2C7P0XjW58Bwj{ebbHBfU{O*xiux2?}Kdx@l-{q0M{f!B0Hc;JLpEOa8Ms*Su z7=l}|_Yig|mSFXV9jmi8uIeBsnkV{rpGZiky>%W2*)mxY2=H<9aDRW%i}N`r3@0f9 zd^-=%gl+e4!nbLbF3J>3@~4f6|MSb)<^JfQGELiHhwOKP;!JDZ?rq7u#L3$d zYB2x$`R?2Gj=ecQC4?b=xOHaT0MA$%Fj45OW^-B?t{zucn>*r;`~caE#U?4kkW&_3 z10Of4fe*bHa6%}Hwk!hX4g-=ui4MAb;(gnPSUJADb&&wZ0CQmy5>a;Zd%XCXdSAn$ z@h6B0NnN)H%fQuC#Za3U>vsirFS}s<0h$l#zMK=R${enVl~!o$?E@wxOaZ)9%qf1X z5;|}brfnH9O5umq!~4!Iz=4;i)%$g_xnt3Zop+h2wWN zqSx%%ItF5bPgzy7tRO@`!#g*%-e^d61G{1Dgs9v_yIj=q{P5z4{|ET})GKiRNj$gw z(8mZaj@es!0ir2}+9EHO^%qRxAJ%t|vcIsy#3C0H_+B@~D~pB|{ZIXPG0gSIWCE1y zSDY}f0haTqN+M=PI)D0r4P@P)r6syoNECcq%x^vtRk<17CaeL@&hxn=p<5{k28dgX z+wJ_BtswJ5wtTj;uua|IrNEtiqol-H|K+$b%LT!RP*F>f+2tS@Q6dHsXoUyWJi$2i zkCBu$qDrQodE#jJM8lFvU{PwHnDw8)%MgZfk>ORg6CLBQi+Y$5on0ZMiiGi#eaz5= zFV{r!E*AIlV=X_P?2ncF_1@ml4}O%-%wJP5mv-*|t8ne{^IB7E@c zqSh7*PQJMZck5eB2OngQF8Zk~y*-hQbMeQF}jtq z#VV3)usEnL`X?R;k3o_VVvXO-5Zq9OgIt??*+yz>hbE6}a5%36yog{PgX&&tscC!L z17#cr~0}rgbDGP7UVd6nXt9zF75sY$8jjncHjnQ>up&j4w z%{CrZYjN?eDeJbFGmHRIemJ=ht#4OEkK19%5|6ZyL7~; zXD>l~DK*7VtM|0?D)lZK3rp{!aRKx$O0RntY?qOBx<$W3XKA-;N3S0B{7VAacPq&i zLwXIaU_2+1JONhUcO;iOPO(Jjyg~Yw?*x)7Xtx6*hPczOR@dJvY~1eN zLC$a~+Vsg~8O0)yE3dr7xq^BP*B+qWr6IS0-*|-NIp^?Et#Kbk;}idndPps9GAjok zyH(pg%TZ4z4+4zUD;xmR+gsS6e{QHvb&+p@y~oj$;Q<+N?|(=4jlD4{R| zs6y40vmKb#j{>3^2c&d#=lm(S2(l$dt%;`+zz;|PTmfs2?qQ$m;$hf;N+1=~_RWU` zL?;Ujk0pm##nWMx@2DF+33)tD)fx8)yKF_%LaZg@lWR(!bla3h|Nf?9OjEtyjENUc%=PJl@?drPQzL#JqeWdKM3ypFHM++!X(0Lxop3^b4Z({8_ z+XXo}xM)uHh^P!XEI1hbE>7Df8&DoC2Z*mM%(FPj2#M0sU`!*u0(cC6Eqem^t_Mdn zGEvN>2WO_A7k9n>q{FU#$mJrcNjH#tkUyo59MoLK#H3@&`bOw}zj|OCG>b77_6*&# zI^F0+8gfpE6Pw|JL=^+-bd%8%=aD^vf7FwschZGx%M7s8iE&vJ1Pfx8*PL@>&R(*qC))K&!~g@s>7?rqtBnIp z@GX`_8FBDSnra`ADenXoXOyl#h_}@{)tJrkk5tPt*MR0oqUswskZ|DL!1zxu*X*C1 z$09*shtaY|q@t;J2mCt9C^-O(5da)>wtYmH26(d&s9LOHr$8NJGBe}YRTW_3`7oQdfTgoKDgysh0%RJ5`&dW9_Y3~nuYMdK$gbEgr zt**L`>kmcO-|q@J^gXRy+g)yVQI=O_l9@-Z4my8ubtXq;q!ae(;{@}5%c4G4@h9$jR^~)nbN&4b zb~$&wB5Ok%Hud~&ef#YCa$HA6P({m1U3dLHA>&V3N5tRXu#nt3`Fs*L!LlkyaIh2i zxd*|~rJ$974|T(#IN|hF8<*%1H;-(M-5PP4lxVq4z2t_1v8_EVBRue}9G=wHKzrv5 z*Hf6_&YnMZ!MgU=c_rtjD}3?NV7#9mxlrcYEG`x-4o)uozH{DP9Os-+>O_JOJo&tB z3Q2;4&(av1?j=H!MepVLS#;h3#F9g(9CpAl;2<_S!a)Zhjm=>J);Go~su^{QWCX_kMgW79kuYrwdqC&0EGT#f}}d zbsD4`{L8s3#A^ZLrldE~eAwp$&X1ML47Wt9m;_JBdv;6~m>dozCr6XC)xhKX zsC!{a+?eJuwbS2B;n1httnr4Px|38mAUE^FuElYAG|$;%?bu2ff~fiWBpPZq-=TW-hyr* zoH{go$u;QvG`c=GAYopiL)Ckq6t9oq)q`fh1-ZE}d{U;t@LGS^fi}GzK4`8F#|aQd zWB9Z;8pB(91`My-vFb&gbcU8EqXiLlFeg_J2Oi7R2376f?5i-Hnekz0&xVz{;tb-v zG)e#15SvJ>)nON?gWFO+uYP+#LgXts8b^r0dO(s?fK>%+m<2M; z>&^^y$ofESQZ&_qxINRn)AN}+g$gDUKQzEZ5&}uVvg91BXoV8XO+PIREs>V}5OmnMe?L|V$Oj&SsLK=Qi>#IeI9E{Vf5 zK!y+pCNfGv`alxDRdQHdBIdfD9G>7*mM=3(_>KAGVPdQBqx@i6lsKIk($i_L8?9*O#szRl_!Na-7Szm z1$&sHd9WnnkPsGw$P(}9OmoqY;t-nimTB#c5(gXgxx)h+G}s?nV4|ST@|<82gNXPF zMY}Z&p*y2~x`_c$j2$pZBM0PKClMSIOe8?ds9^^b&QE3xxrAHvnb+lPl|C&&DC z48Nc9y?=Oi*y|H<-R+V%bt@qVZ9bw&xAOaNbwV>wM09#U@w_1ULy}-THB#^B^cZ<^ zatfhuPB?AKZ{d(05ZmW=S&%f>^l8Yhd>*h7$Arp~0})HNW_+2ASZG?3UPgo+8cggD z)X<#lcL!)kOirSkrbOsrS2I8-H=4_5vuj`Od3|EjlBPwoDBR*{SKNbFR$NZMEQ^wG zL;|1;CbQ6(1H)qhMyO?3SER;#og>E76PHsNFOqlylTtvY=95_QlZ@a`r+SR2r`g;i zghW$w04B$p@LHcVjL#7OEt7`LspAMsh^~2KAYz9W9D1s}wcTh&v(>H9CIrrF9zYEl zOUM#uo5$49anDC~J`H$}G@^(varAwrOCuQ0PbF>O$(4yNjex*IZgD48ZqBWI?I@sr z^?F49P;3FMTQSVUFjKOF>;aXDWYfXlV!DLPS2R1EbtlF(ln2CF0)ieZ@;O+b;lvno z9zY~8t_gg%K-cG5-M!sERv5=TP9}zEfmRv1Dfm;Gw+!N_#V2Di8EwV%aZCupfjLdX zc>|i)v5XdAN1qX3oNfqkZA2syG;cOS`AmeL`|_v9uATfn_7|fqupRg!# zFpWGEPWv|s!P&Y~2!zFZQ;=ks9Ff9=Q&VgLPwufnrJt5-%Cv$l<&%&r$ zG~_WigfP@QIXQlX%O&47XBUgqoyRg_@5JmPM=Nf{E-kJ(998trQ(28tlUsgzyjPR> zofA>1ck=7(eAb;{xz+nY4cG(X++`k9CBXK{im)@iwvVZY>9Z&@d~F`X8inBGb)X1Y zNm4*JH6}P>)TfBlvvC!h_t$&!8GJOfH;6#Hw3M`+PvAgd2x-yBoMJ|)Lv&H(1e(1 zUXmnj(~#fP0NKGc<1__CR>OpRK^AB@2{jk>NuG*T26vAIg1)_7+7ug+kTeKFwxD(r z4#tUhjK+y$h9#o8?oW-5&%36L*eD}Y){?Zo784k|W&KDA0Akn2KpX~&L-N5{>UEkC zGuPl7HIKZUSuBAb28iJ@CM}Iax3R~t73UvFVd?>y!9Cp9R;m$DLk1!OQIx4<$Por; zG`Q5mC~Lf8#5SAenU#=TipDX4NgbO(jkQ2-66!9E#WKe$3CPXqqcb+_4W__ z#iR5E`mShqfYdSjb5agUPBZeU^1Vn3sZR5r>$F9neTpDpWn7kZ4Rv zE&Ms4{@8*kB5{S}t#GZ|?@}%vDIOp3128$te;a#DG-TIFATV)M-F3-Qyi+_z6bI8X zqAXGA5pRTv^GE>p=&;1u-g271Cm#BmwczT(lz8+JUv4s)tu)KV^frUmRfPCaRL5yJ zwo7KYJsNN;KokTadcm9PLm-+a%4M&4WH;wHt0$2sfMmFOKy4JDkyBvBjI9Maf5nU= z=>#M(weM}YS!*l)?X})+bX@CU3dq??)_Hb|{982K-8X`=Cieu^@JfieardcwmxG(~;m?nTq(lN8J zkAWOOMB|Pjvjl{?W0L{&JRaI7(I8lBI;qAco?G9~`?*02S2aBYtWG z#Shi5DUwTaj5>*3pDerT@evM^FK;$+@R}_U zW9wLN-5J5oF%RqK$3O%ZEn;S&C4}K|Xx4G?P=MjpK^-8ayrZ65*tOM>K^lw`_Nxl`k3* z5*CxuJ34#nge;Q6Xyi_z(#HsB-H+4h^+|wGjT|A2h&VX7H9HfbMGuI)E(E=M8(h0~ zo@@DfFx)TDr#j#eCKY@}%~PHaP>cl&KoO#-;b^HDC&LjlP6kW6_!^PCk^Cy9r+L`s z9b54~0%{u$N8mKDn0TVM?bOJ8Lg42k5l|=<>rC_PB(#D>fqB#e2xn|8$p(5_gyHWF z4ZnIoA+c;(M#N+f$O!&dfXGi%)uckO&BHXO`}CT7kidEBEG-CzcOL5M@Jsl{p$ne0fS4B-;jDn?g<=UJ)mXKq@=WS)BWbG3ySDlRC_>VBf_m; zx|w^uukBf9r+OhA^B#vuLR4N7%edxs+l<-qD;pXPE(Iy)9YSJD3?Z)14)khajFuyY zC7)DEGN;C~$e8K=>NW#R&mEA}gfpl19t>>H*=94XT{z2!qM?$%(KL^++Q{ z1sKlh7$7qVHN7pa9ww@dki5g2xdxLr-3OQ`MNCN*%s69A#^~1J@-QWoYAvXy<~eCB z$=ymg!jxe24oOdB`(%OKIE{c({4FFba|~;i8azpc<|82X3k%5ZIKlv(&${)AY#H>c z*C$kn0*9>Q2m?fxYU42&1Ca;^m%HnevB?+_Hl`kFgz|V%A(7@pG_X@w@eJhlI3$8X zJ`wFe#t-g!&7+*mA`0Tri#r(Z2x;4(c^rxjNw&}VP)l;VBfLc*%a{Jy!<4b5!Pe`5 z5M4@j<5@MlV_8lTg@{@%RNtB(ADx~`UbzE2q{oLxIE9W@xX8{=4~Y&r@AoNRQbjiQ zOeI#rUTgOq7^Q)|<`p3tY|ZgqGc`^Q*(mTu$`i9T%EvxXMApuw=g_dc=c|YVAnL@V zcz@kOZGg^tZstCwQoPKBC)wuNJ~?Z|s88&su>^(Xn3MC5{(vkgp!5Wl$14 zlF6zVC!L_@ZnfCRKcQyGO0K!>GC1^Op2o}s9 zz9#E6kFy+A!(nwQ)*2uq!mLMow0|N#B*8u$iIt#xufg=X2m`1or~zD$h2@PAmLrvb z(&!Yms;K{FG1;lnO?N#^{x|^?$N2U$2W0xRURkj`7+mUakfn_?T23q*AVY|g165|G zM?EURQO3@TUbIugtxp3?1v!9FBgiplCm|UUua9QO=Lqm4ejgDhcYCz<`vg!$WM%7d zxgojdofyc70_tJkYbeuf#>w=_u1}*yjd~)Gp{U59Fa)}}d5wAiMFB-?J@daIL@zwB zH=h7XN^y*hdCzi$9$k;*#Mf}V4yDQs?$87@<_O|zsN`A)o>(5PPXLXmC&}ajAV-A2 zY+_dT(cmIrv9ZWFbzjG4L}1>Y5{D-OP#}+4?D~T%Vcryaw1}8h+V|rR7{q1SGn1i-y$*UbV`Tl!CmrR7`clWagkTM~nq5Klr5BKeN7_0U^jjNDcTP@EF4OsWZ!uF%kVk!UoPyJ6UOL z7?55t$j<>Ls@||lb4JnuO+=oJfU>F}ZjbDmrcWnVv(7}IiJdfwG8YdQ7?*;)Sm<;}MXvAn0uA8P7&| z1ait)qk4c+TKj`5L)N(Zs`o$SF*!wt0rbXKOV$6T~A^eo7>3;DxH0 zKAEWws4V&3AOXZVV?rFcd=BZ;>o+qa#4@o|r>ZIhv43;npEha0*k6u$mIWLQgCMD9t0=eet81|{= zp$BlJoKjUI;o3=vF-H*S5oRPL5&f&vUM=-*Uvrca=s}z^rV__{W)4zK(2STM^Ja!r z9z!4Jl*Sm-T4U;tk@SGFw#qrP<5tcg!;bqzphuVogq=Ayva5_E#DMpRq#)R_^rG>H z5@HGwreOq&cf!CD@1~0lJW|51*QJIO(L_l)iwp)mJ+a(btWoP4(khjO7v^U%nPJk$ zzxtSJN>*1M8OG7>{ZS&Z5$QD(a(g*JZgtmg@{i~M5GMsf3JW_Rv&^tRn_kWU%7TKB zLJsU0&KvUh6ee;kpdWe@!!+;6=R2SCz*I5SiGXEU@4lQG>W6xJ>ys3?#_E`pebZ3SklgIh zPKWka$sMpH;jwQXo*;Rj^#EE{nBzk-Z5T`r$P!`%M9Do#pW!&d0G-Wxn;^%pU?Mhz zU6X7e2ZTU0Y3VdUh?YvSM0vaEHAIBq9wzcc$LX?Nc${}|(3Q*7=BSQ%J`lQph`+cXv|M1D-R zyx$G8V`4X@a2Cgk8!yjxmn4j;o|K9omkX;<-!pQm0YVBlmz7eb!jW>BlDTnEae#2C z1(lF9d^y9kZ)|pTYMPgaaSqN%(pLv))+(``NndnvE*Wn(x0`E~c~jcCy}o{NIcda` z9mgff2U3ks_x)~jwOdIRPMa)H=((XVtI5Rx;4;F$Anq+o^wsV?MRBBGiX>8^rX!3G z*A%3^k~7`9Fq&?lr_Ah%Y$FMO1}_=}dw~ zEf9cy+XxZI5*BfE-zpP`Ftr}Omh*tD0Avv)g_N9V>l6@-@mfSU?Xrgl7!qfY4@~yq z9gHzzU@9`=r4NIem=k(H?dQ++NBU%GK$<8Lqp}0=4kk~utq%i#rwG5?+k~HAb!{?2 zY+%?UzB_8$1W&0`EDf!1)hG#yKCOYN%e>}Dq=UKA!N2>Q=rB-y8sJDH*DG}<-0FUH zqj_hhgBKMdemEN7HNi)UhpV0+-5i~qocqc?`X#KC!AmIfr^Vu#vb$#NRJ<(-btJ2)SPgt63_^zs$(jC%Uu?0ixl zuvie}f-v^NhHpF9`q3+AJAvU~3Tv(B%Apr}uFcj8AD?^t1`G-H3N$vy2W-i@o|wrn zfDtcUv?T6{dD=ZWk|9(Mp^uIR_;J!aQD?S{d>giHL^sOiu^$oNqm>6nY3)cLNcwn| zQYc1L6sJitv-N(*SkyHl*ETeUrj`^GueMC5#ql8|(js6hY+*(e7-HdEa7rL}?49r$ z!3?R!5n6h}xn;Lv4Jk09S~*98l5BuX3Z_59nJ}Unvy?pr$)X*eq12gxsmd%Z8_#Gu zlm;Uh&OKs^3l_C=mkrxC>QBP~OER#RUii@v&jbvH@GPPv*{d`Frq4N8?>Jq9^Vzj+ zNP`KOFi0!3ZzthT&D!>gWtMcIHR5d{IXBJtjQTU+H)4=E)`f=UolTl(n~=fsC@^K4 z5e(!6m32f(VITM9gHVGk%cwDCn>I0ddSn9)mQ_MHJh$nPMTa|iTqvY1!T#&z!ypVz zPtw!tNv92l*b)N`l_EW5r%M#ZhTeSj+lIfsS;S2vaTT4Qns6YdKv@fCohQwk-IyiY~V2;T2 zD0mc4`%S~>OW88=|G2f(!0dkphLc=%mB2b3**qAnO$Jc&uZsx5u5GcrZ%|wBnROy5vZW#beoee`W&r1f3mHwh1YrsnjlX1~l8YSB8{s z5LmNl#eLbWf@Vms*Vn!|$Dzqc(2*?~Lgg)t307XuIzkTAO3cYYgi$8&maDUw?uNCR zDB8L1P%4>%h$%YNypeLalB-;oJFrbbgat5U%6_;Xb#51Q{Z5}s91)adbCIJGm@ZTI zOX>FqC)!2TK{-4e$KYT-xq{ugVPYn5oB5_P2Sc2?;PDh(WBJqW;fbat?RAX zX_|4Y9IU6En}p~j*j}(ZI7TseY)TuA$~BF2dTq8`vZ*j=tYp5LHi>`+3sgZpK_@aT z8lM|Iek6>l#o$a4Ehn1ox#%Nr7SThWXIb^ll=3Smmhtn^{Xr9p?h z5Me!SQ3~CjKoI#b4ZdgGd7iv5qPdf0s%1V5NijGtN*Q%W0~k%~(I=f;(m)OmHkT}B zgGi=j)8k>=hB6bQOG(C|kaT7i#*7aUQEEvW(Ey7Lvl!AjJZ5}+BY2Mn^_(FkudinY z_sm>f_th`gAN-l5e*O{><$)H^b>q|iDR7!JkmOc zhjR^7wxAY|>rVGxHf=q9-N7U%t9Ym*?@+U0H@ab{-NyqA=RILJH?@s$vnOkYG@!Cf zl2Lq^x(k!rYKO_Sjd1FMEEu7867EnP=9BQ1u0I;ihiQn4j<6Y7wjR-72t#Zt+2YuN zIl(*8pFRz;Ie`aZoj1xUw%`awTi2qEj>iPV9ey;OL>z|RX zJ7+WHx>VDu_N9L4^7el9sjD}^-XH)RQLULH-7WDOxHhsiJ9)wMMD`eiQV8L9fA z?#dswwifw-)oXeQer-VzV>~|1sk_l)exJX;3-8uap}WhBe?~3KB`WAb6^_2SP!-|L zFZ&epGAt=*fZmmsm+@bHbGh4IQHZ!-(-;XudYK|(5#*`G*TLjd@f-(cn-NlHp1N6I zy}ZAqco+qw9ZE6fROH|!Ord+5l)<3_jHbi1UV^J_M*Wj9;r7#uvxRgg?%I z&+^HH=6nvRL@iA7xPFjQzt%pjvbbxCY+So)A{@y%9FrG-b}h57FFT*Y<*k&}R-Z^Z z?f@iMWtr6h_7YQiz@U2EZErVs6d@Qlk=K{RQIb-K^jQzj;v0CBB7mw?)NZrJ6{79$ zSG(=^UR5E1OL9pCIe{;J_oeRPX29Uq5=lof1Jm5DgZKx!N==rqwwLIO%c`QXCIL;h z#1>V3RQ2L zG1ZUpsSg=!L>&hPmtiwbsaNqObZSg}K%AOXy5oen!Pgu0K28gV%O91B1J&$ArMM48 zL&Za6USa#|&k3(y3i@@NB*Y@&DxU!FwV->2MNL()gzyATs1RVP-E;7|o*7bbN&I-* zhdU;~&HC0WN`*hQX0af(Trm&3vFj?Bd9~L*Zk{RIz_fArFy3;Sn>;)mx9H%Wq^g^g zwPH?5g#$IaG^h_3QbUl6EO=bDJBrTVT%7l0lAe%VTYb1P#XG?8S_9(`d?mUnmUMU_BV->Az{c|wm` zhss}MgoaQNPn>g?XH|Iy#;f6b0haZ;V1ou2lu?{^>N z-l6*YpZ@x{dwYBT;a~o2@8ABHpY46~cYeP24?q2U@8RG4V(;Jor(f*->;L?Vz5nq) zf3f$kzWHkJU;Njv_Wtfa_~qVzzxn0fKmKpO+}rz)f3jEpyI<`cezmvvm)^fW+xxlq z=`Z(wWk1RF-}0@0|B5?u@8^5J*!wg7`nCG`o4qgnlc#^q^Irk?rDy+U-~Tz(_*1@r zvG+52^z*;vz4@C#>t8`l`TqZkn!;^=#u)vEG5W3Ixu5aZpMvAh!6G9ky!&%L{e}Ad zGyW2emht>cc={`@{w1IPls9O;{RL0Rm`f{v&A*@V*PrstZ}|H!`SceG{x@9vd57mW zJTDN!@$%MRsg}rJa!uYUZ~F>(dG6<2k+%JYYd_=nuel=alldio%WwT=c}D0YZ~1d@ z369_F{gO{V5X?vb=#dZ+OVMtMTFK|@I&e4LWd50}`f2?Z z`CI1JszYNoVLbyQ2?aO>A{g&|(N@>p1ZxXB`C!}98-a=F1L)|vb zFTeV0v`erEw2YBR;eLC^pS}W{aPwC@DdQ;LUjg|Q|Ac>K^yTxP!NGq4m&so;12o^s zJ7`IxkAv=$%wg%tIzG7hxoVks3(}%(FyPJC z@9$(sV0Hi&bHFnd)txzSGXJPHcipZ7yMUQEJVT|GbP?c!{Hv?&r;B6RZ%BPTuVx|- zrTC1?l=RA8)0q=#_7^+AK%B)oN2Rf+Iq2wc2EAywz$`{P0$*t&eNDj{+)m5zFT*ugb%WGzg9g?_PGd ztLwG*A~|XDR@aVPjc;}BM3_Q{x4L$U5M)Dnt7`{CkU#0IuAQR8TV1n1WQ{%0!T{ktzlKfWJPK4!KUAvAWBzeeNT{}2}Sem!Gb}}_cuJ=~gP6+W<*RGQh zI2=V>9H3W63r_r3NNX- z+C`WUKtpmQo$knc*;{2kJ$K$J^Idd=c&p6U5h5gg-CJcoky>w+`St_S(!W*a6aAYa zdvBHbpaZVqsv*%K^pJ&E(&^s6+&yoeR`-v0-s(?|?nMxlWbw7fn;%Ro-U)?NX)WC4b7{!R6C1oE29Zw35;hU5ITzx1x_a%gO~|D^zh%VYaj} z6g6nv#=J&+QPIaeI2mk9it~&d{3Q9Ar@PhThs`w!JnzXcK<&O2Ie@*)1_^ahNFv`N z8NYtM`*ywC-2TYVr_J^uf4FtoY-wCAxnw9jGhdK^cKw4Y1t?|po;L3vR)d$;ZM1B2 zD&-lyPO^!P(-qTW4w5t!qPBeZxcRicyVOPhd>T=`fx=9cq0wuh)aaWjnMFDOJ^$Uq z_Yd2TwAE&FS^u!{1CA+2Sq61Np_`6Jh48D#l}h@&S-U(u0coKdVy{!O<&X?Wjr#jL zx--^Q@f%_fr($I^|KWSymp?o`OF{`VPOeL2h9zS(wavU#((hOI_hd>XU*^j=KTSs0 zNRb~x15ZPL+$asbpBoCE2GX%RaU8GgV&o|Clo!Qn4U_@L}sYc zl(SR`l~s;pzsYSxmV46Ho5xj_ZuO|Cv+2n<5=3Wlv8YK=ZnJaze*5E-$hM2)JkmLX zT$X+x|E%QJnLw0W` zlQFf=n`~KHs^9L&POVe^UOs&dx7&P76dmDFQUrIUOP?Uhn%qbrKmyQ5P zf9L$g2f`GIO2S9 z^LsMNYi|6S-D&)ZEKcNd^4s4;IJF`c4kN-oN1Qfot74fJ^KW17z9*r#@a2|uk(#Vi zZ25)j^>r%?qwIODVlqu`|bKlC4?p@ ziqt0wc#p?u`6+mEso{By(cp9b8vg!(a68YrV``O|=H+3#~NgB~o7zj?l76(e-oleL1g5uS2GG#Dkh4_4XlD`S}^$ch{s*et7S{zlqae zK|S@kOsyAE6-)YfB=%0_zW--0@S(R@Qdl@bq7_tJv3*c^$IR+FPOZ-Y`@e26Vv^xU z$hZoH$6_&*dbQ>;KnzP%Q$W`Ok%Ie4ssihkf1+*Wyvi3;2(}7EPxg1|q#e0XJ1DY2 z-F1heTd)utWHa|hzXwERn_NynExHQAOly^BeM8nG77hf-gSX0*5SgO1EhU8D#;F$d z*zpf4-JCP(0lE3-iBg9yj-Sc1|8chwc`bkL*6(T7&MW*Nhrye+E$D{G7Us9)%I8mQ zi=s=r_4CW_!Dkm>+M=McG?gp{YM2rVPbT}eqZVn;!?dNy2psug_3(bJ=PHM*veW-QDFQ=HtuN%?+{?{lEu_ zt1zS7p(jE_KfaOr22wIW$*T!TMeV{xLrq`m8k-HO9#x~z3Q8$&;^RVJp*lFpAwSC% z8fzbpN)HKn<30;_GuTbE=#EX6<%N|HJ`Y~8LfR4+@TaVFjxZc`3kwRhH{Fg&HsFK) zJ!~)6yWQ4R(*Y)q3aTt(&6#ZI9SVr5x-iV{31q@vDu_`gCLy;J4`Dd&Hjh_ZM#jx$8>HoTdj?|U08==cFU4wa$XKfoKt`M1w z*2U4$lN5LI|8~Wmw8dGH#TH4x+EvXLEQs1Bpi6Z;uwLA45$UYRX6xZ78&Lf$jq7E_ zB-HDR&pmo5Wmw+dA>T+w>qC;}7sZ@Rso#8n_&ZloMeTKDi~jO3g^^NBWCG5Re^XLZ z<3zvTjWL$&*)yo*sbzk1jlk8?(KVIR&A|#78n9kF5&E%HH&;)O zDDQNcN=;B#MrLzy=)*=0J8ah9Zq4=^xuLYx28B>G*6y|snKt>diP+aofcE?MEbEOA znng7;v(AMD*vfBiqkELm_syB1H@*7(RZHOG7psv<6QG?K#?VRp`=ImoBVL3sep13=vB+r0E z)LO4mBqziO)yzKE(`X(BNu4cG!B5Xl&QI2-`=`gJs*>3L!KZFMnqRK5fHhPDXLB&s zT9z%%1IIU;r$>g#XCh&qIBpZ_-r0GQYCDau_TIChyf~J6PCiz2Gxj`nJU_fR;{UJWckZH)uRf^SON^BWc$9e$~uH2TM(=OSv z4$`<)6Z6AX#!FYrMIhhZZLhm&`e8-0{YetDw`%gRkj74-R0W-W*xamBsxcdxs7-(zPpxYykEr-tm&&?!_I7IAp+r!1ZZQd{bQr5o(o5Ia zKeRX=mi1)8B2uzZ?`aXY=u0nB7|l*+*|_=$@gPu-oxJH2eY{yeU85HQt}OfTpo65W zY8E%-TvsTyLj9RJ*$1TbTuP?bt~#bIP-bTI_UiXaH&C45L#9Imu&ZM1%rR4bE#_$Bj<6O!{1QG4IeY4s9olp|wOK@3sODJ@Fvvn?NGQB> zyH**rMb>o1=ep_0{Q6OrTAy7xO;U!fQM4S73H0^$<&H_MmJs0}Sw?)MRTVZ%N;Ift z%hps}sUixhRnRew2;c{p#`2w@$JeCk2KOXzGlgz5?r*^#+foYvvzVu2Nj#L6~6;otnmmMU8ll z-}wlai;Njn($WWpNrvuzD-y%4Jj$g-m;GQedRS78n_#jp$kon7;A5;R94`%amB|U! zn~JF4JxGjrDO^6K>kMX7PfN<@^`a=3HNNjJjfXe}9ZKv0xZ>)jcx7p2iK65s(?YA- zK46+tmldPabT1tP>{b}xJ%K}d+XV|2I`-69D(XDpV7XRxH<8Oe&MYd}Oakfin&=El zfFK!NJf9Et2i7{JNU9VpB_;lAeZ1d_Jk~vY@Rl7Q+o&xwg2^YeR*H8rr&h8D-#m+} z%$KUTj+!J+QVKf`^#HYHwiQUVHsE)&%1VSWb*3k9nmJ;W5MQ4!NJ(DAaa>I9ML(wq z09kQnAjD2*>Qu`{m)%bHOLjY>E3VB{lMP$Ukl5TN+N^i^A}7VwAScqU%*@0HD;eP8P3-k#4Cq3dptVW;rj5I*ym<%hM=3 zZL;%Sdg@0d(G;k@DK^xx`uf>9MqTb@o>8H@)T^vGM@0PZ*j*oglr7ft7XAF`o}GoL zTCTbO3+0HDbiuBYnCa<$8bPZqn?A-rsE#qG7V@k}t03z(B6r*O8+?p<1$_MQ!TKnl<-$|kD_-spzX#>W`N zyxRgPL#_jCB~@ThNeI;h54bhRyrl=(!02JQ(6KOWN0CTb&eagLcnEy&AECzYW=zygQHBc zxAY-%B4HL`@w!G}22inq5Ba}TteaZj%d%J$&C*w!h9#|KeMa&*MGc!R5noXmQn7om z9rbqVj#93@{|nW@Desenc@`&GeAIti29gZwFcOFUj%p^+vkW=iD8Ph}!@-Ka1@A~uOBbCxspD5H&QEAevZ z%|%gK?(-Y!Bte@*YV+(MrTj*W?779@KJwGE5g~NS zur6>Kp#2aN)<*hQY%P zqZ|$_XKr6Bwb?!IV?-VGh;VblSANPIe|B~GSTAX7PN-w3l~ZQ&9qWh|D%#47O-1s^ zvYa|U5WCqVT;S=NoZxE}48wB!VWrLaE>tVR-(KU_u8ABI1+fbe)qxO>7a+{`W#@%Y z@_3t)9#&4hTRt)>L?>n$%=^vLlX4(fqQ-bD!bQ1ESvIF-wPPhQT{u7r9K{5nG&!ee zjd9r72~|wV_Tdh?+^o?}e7JN`#F-SEm%v4OX~EqN)lO3fhm|_0@Ng80ZED8ghb|!F z8^x$SU>__Gms#Bkw`p`y=T`7G#FOaCv|6C*qv2_7OG$Sbvrar>q40DAr{ZDlt(V~< zPf5ZHpX!#jn@`vjKHE}+NQJMviHHSUJt%3~t&^TDxj2`Z17%gvEkh?$u^U7mu1woDSu_@% zX(mM>0eakmbBvCdNYwi*D4301_aqJ(6RoaNuO$zg#E(kEJAA~?1qBA8MQH&$(}2!? ztWl}`rGPrXa*n5xpa@nw$7!5Z6V3NMTWD#e9eHmZKr0JTe4+)FX}VpS8hcq2)u21~ z5=IHE#SSI2mVzBcmJ-$ox4k@Y+;02+0l%hffSprbtTLV@BxVbXaj8vHD=>To)U%wi zlfrG4I*c4iEZDJQf6)@kIL#y&6r5Kgm=HBk`ufAln}-SBcm(;9unfcC24y#kdv@n5 zi;cV9w>FVHcf|NxWQEXJEg>8|jSk4)b-T(T7=v_|xNU}NcAJwwV zHK1AfmAt1@c=73|Y%QN&u8H(@P7NTdFj^8poU<40Jj|W&mSt`Qj4@4P-gHeRj*VKq z*!=5}O~RTZB%Mfm7=u|*cQlc@h~b@^F~}x z2R#>8ckB*tTqGRl9`H?-NkoXHlin-V@@ zn8V}Qfj}M1R#zHY{d6!5a-xhE4TEi9uJ<*D+2OH*?cf{?2b&jFl{cviFWKL})sG!o zEd90-5kM?IQIQa@(}Gs}`me)-LybrG%i>ugV#|c+Gr|cB%xwSQOkwC~!QVYRz@Uvr z802dUbA6@<>CnIqVMtD$CrOQk!O~!&KZ4e^jX;nHOIpF%2Sc}sw)J6{%PB{S^SH7w z=T}{S4Bcjf{%{(EWh25TZedK@ZZ*9GN1q1i9QCU%qtd}#9qk{to${EX>cf% zOT2cbKUX)JcV@?$#|4NlM+2Pg?8u2mujfZMM<*xeN2e#Vlbe&{(|vv)?K|%2!621_ z6lKrgndna+PcbjsI8AbId?w~XAEsh!+eSq~NT9*<#qnYO;09)mhIhL0n4nt^534Iw zqgFJ|&N6=YgNkf&)0mQ67@||0L-U;+9aG0JEHSuSB@xHW)A`efYjHR9YIK(z?vWEa z)V?MjLDtm4Z47A~3~7t`%}3Ov&G2@L3LbKX%IsPP(0CC!ij(Ja7a-*~JS&<|jCFGK zB|tV}R`wds0i}#MUzS56x~=Ei5(Hbpg`ZX9l5jgBhW$97FQyWL;Qa~%l; z3I9D>W4Vvps1aX`fkEDBNi@^HMtFz=Z;0*mR=c!o1!L^Whr5Qyp7DH=mrJONXc z8T%k_M29kR1j7jvY@)$}Q!|DJ!?un3gRUNNIM-@pv^}vz^_UE>#ovBC0v58*{vpBd(6EC&(tGaIeJf+_Lw=@@Gc$;CNrtVAg3T zns`14M^3Yh)0_@wJgzPH#H()G0E3Jh<_jMcgzkc)E4t_>|bpbF`V;)1wm<;R9F}vFB(&;k1}D zpNIqtbF=Q~b*$G0)f*qCVRS3f6NlsOoSi6jY1AE@7a8HvQHVh7n)XFBz_dxR@I|$O zIXZZyX`D|WnmQ@iMOads?tBKOjX4aOz&gXW9cbloM1q!0R80JR?Ksr5jeW=DMxde; z7asj|;jzxijb27($Jd%}17QFRhxgNELIOk6AIsMJvs2B{>Zcu2EEpx8f+TIVwl5D%mQG56S`n(V59R6FG`5eYAuU9KKxP@y^0KpIT6#2S=$yO?%S6*7 z$6AHF{=t6$UnNnunP}l%+)PiEW=Z78#1dPS;IJkWH|#u6E!q7xSOc88d>*1UduZZ1 z$rXo=HPAO0gkH<|;9&mK^ePhj1D;AqzGnMCpA}i_7eCupwc)pDY$}#*C#m zQ(G2JUnU$sjS03eSqD-HKyfU_6IoNHWD{_)3b%Kw_kKH;3l5csSaeJ~2pzxi>>HS1 zIMz}ZI6YM(W|v_#e4-3nOl<^n>aEj|(>YyMGqRFQz#usqzJhc1WM@DxY{UX6rWPGs z>5&~)Ps5x8an_mKKcs}nuIji5@JeV7!tjnc)bDJAdxry`scpw#Qp0=!Vjs(R)(iPJ zj6WrdngC%_){C5dgn91ZL@&z+CrC2)sGhzL4}*F@jsFa#7=EbWK~`%+${5V6CS+>Vv5F4h`l=1~bPaYMW;8oEaTW zx6OxP1G-!i6JvT~Rn4oJ59EWin9Vp*<`ff)=C$sKjeVJOT-hl=SI7J6X;cln>*{p} z8#h61i-kzZ?uo;r89NBRj&C*WU`1;1#3dCSqNJjM5iLZ%&YY=4KDz#}d2d9o_tbhL zTK7ARK>+x2Fcrt_gPiOsjs`SQZ=_GU)qf0w(-^y1;D&VAwxMRykOH+zND~4-nEsgY zIXcqg!#jG47BDUA1f+9#%=q-SgMNSNIYY|2jI+()IXE~_T#aE<_hi@~Bq6CJYCOFb z#^5pi8uh1{7c9@|B6DMU(rs`LjygSNh^L*SjF)Uw99tirY2G<_#4NKaAJBv&hY7Kga<3gw2abgOcFbv~@@^da# z%)4h_JHf15u!>1g2a@ieysURW4t5_HapO8{a1WTwL7f@fb`DK#5hVfpU9-N71Usip z365E|thn}k$M`jPLxRqm>^DZXtjDKMs!COeAFr8&1{8ogo6bb}2v9yF&S^ zksq~v1JU&r=M{>C_zbx-^#&0ei^aYCSj&$m`(q`4y|*{?gCFIy6*4na*?_Pb0s&q{ za3~N$w9DpEB3MXPv)z%&Vtz5ZxVXHOLw9$VPtP}-EoT|=;on|v^>g$2`TYE+fIVHW z9tKdKd+%QVW)GTs_&V?Ahux;jeb&;$eO7kcjwAN>&Gn=Gv` zKRD<;rumTDs;B%`9RN&tME4YhZU2xq$xt4$u{wkpqPmG!`p}N)?BIM~%%L;3MKeVB zj6K*)^g$0#_Ua?k-9U#%^t|c5Mh%)V+G`r)T_=-NXJ>Z7-R)L8OO&^>^PSXUT4R{~d_6 z(n&nVAwwy2(0JS}c~AhnN22xZigcgdQOd4;(fXMKLWW4R^MQ|u@E)B12*#o7si%_N zdOaEexoF<4+bLIi^v5^QeO5$zc$WNK5`SlU#sfM6*G z+-nK%NnC=ycSLx3kDCroTv~A0aN=^HPRLB$$X3tZ)#ds}?^ADtR5!XSw3G;--jle- z$-Q>{y?625^=^B2=UvcX;T==yYn`}cd{biJy3rrqj8^xk6Qj$?_WH%|vqqD{pX4_k zJzYu8i9R_sz__>idVe7GHE%qgzLl&WifcbT^9zethf~-OGCj@qgO|a{8bkk1MLM2OQ#aVVs-#PrFQ=aP=B}e(|Bbr+Qve+mbf{ea z0h6qCqMhBXiH3G}M(yaXPc=l1`s58aZNAy99;h!M2k!fg9LXQkal{O4tWzQRGRD8( zpWfb`$qDP-SAy|t(&zOX15V~00*@4VW*zaMCgkD>zI(>9>KOdH?e2RB(XD6R{r*9n z?u?EKVtl7l){T(K+?4}_qx0nhCZb=aQ#A*lNAFSMmysa6_u;yms9wX=Z6?>t1muuk zWp&Uq=#@dU3-YKH_RhHVn!Ef3X#}kwQ3LN}g4YRsztK4_UxA()H4Qg@WyY$n@AY5S zNxR8gtaSZ{OR{uKOhO|Wr(V(`$zw?aJ)n|Y@2^It^YrRDzJGlFQGxXvz!9oS($!Y# z_*BPd>zlztdWq1jAr~OX(MX2RJfXr(QsmtiX0qI$kWu!s)9Fl)?5)v&ap#q}&7FQ{ z|6lIj13apteH%Z^ZXnbRB?8hG2u%b637yDpb~n45Y>IRh2_Xp(rQ}VaD7=D6l(%Ij94Svy9|`Pg1B&pH$VxPR8|!c?%aiodBkdb@^!PSp1gpz zuZhwzCYNJd0h-p*<_*5d0guX?iZ6wt^$kN$Lm9rR2&1vt0lSQaS0GQcA0NYGn2pBb z-MuWjr{0gFGO_binNb1gy`rYgbL9zqQ)@A&LD$2cE~4L0V4J0~Su>_K?s-L(Dv@FR26$^qX%vb&;lfGXfWfFib`es ze(Yzed+80#wWKsc$8W77)NGs(A?tM9Y(?PA>DFSYcXvn#^G6k?9^Nh$U63 z(qz~}_c;AbR>W6OQ8vG*VyQ^5q+=gj7vIKKSDj*}D}thtT}Ow_XHAF-K8+O`F;mrP z>cmyY$j3_I3R#dCt-^W~8*W`CMdhY;!*pReWja1s=!xKGe5hA-EDrsSTqK60jajdv zj*JXf3Vp_)AWhARhiGnkToc~TO!Hp~N}cvH4b66S!H+J)PV|lys1&1xq7^qiOvhfI z@(=MahOs+G3QfPJ@>DUTX-Z58WX3$-C6zk!Gp4!BFZ%43dzmM-q`}3Lo;To{YRnELL#zgRy!J8u272!yFtQD?fV|KVQZ0rvAW`nbyEp?)0!eI9-eCP@%@n>D(S~)r(0lek7Omlis5yFGb zvh*V0I`*V2JWSzbdQKJ{!LH!Zz1X~8iCy%g=y1L5$M6-8(UtJb-CgEg@9t(r^f2`a zXjpsaS)a(3x3RKOi%X6kG6K>>kAZx|?SztWeixyrA{v5mSHW<`3KE_ioCl~^VHY%} zn4~XmWoOF0gnS530r4rRI!YL~5R7b`>UR`G>UaD#> zh755i4zIBAmD=c0BS$J~N2)kYA301&Gh0v$gGmaa5Zq)GJfWA90-wRwq z44fbOl(w2S4?l9T@a3Tw0uxJ4+{)O#>PDs4Yvdj zUW#-k$^+sPz`Y=_R4&e>ROeuNKx4wSg8p@2J{CAi2g8MhN9q1cU?4IVE4&0m-j)&o z7c0C@@EZb*PvB0KzH@=O@HF93`Ysh1ikDoh^wj`&O&sAp6lZu(0Jr-z;Zd{uIL`3C z1@4bH!t0#OvMCR-@;d;y;Q|}0KB)XA#u?rPz|9E{uR?8C{SaPVM0if;;4oYp;2w+v zN5j<9ap2AbZeJX@j=+5!2d)cnKgWS1NZT`TFga&ZWPWM5=o<%)!W$JQE;mlxtT=Fk z5bxqRad*Xm8;0;+jRThgoRuoYavo-_zI?1T{*@<=AOrpoT_ZJr+FpNsZOUPY zxuL^pjls}!{?NPLP1uD4MZU7-m{{`zGp zj>hEvC?kJ;4V4&5uR2*TUQ>+6&+|9%imI=15>B4^m9qlnY?^X5Q#qT9v#oS}_lH)q zdiSRtWOeBe-I|g}mAP{75qKBwp^M}l_}Mfsj%%2dk7Iu(&ByT~CJh7WdM1s7#C_*N zx{2v3q;3r)&bSNG&CGYR^xXz&0MqSS+3Vj!9mkpW zzP*PNg?6Bk^#Ol<0)cBP(u4+@Fb)5!(ov2S9l8=E3SFymK%&63sxu%FSF38p z1_D-+$5ZvfNYwj~Uu3TCg{rn9Py1Oxf{M|^A3{m{L*W%bw-tBbXVd7~MQtcS>yBeN z)Ahlzl1V`vc{?bD)Qjon;mBKE9i&A}cMXobo!$azDbvxdUQZ@HfFox-25A}7ZIim4 zkT~vnsXGMeGW=}X8&dZkB#!$;>ZqSxj-O5YR_cC&#BqO0oz;Tr8pE}K#M6=liQ_s- zU3W;U7>?Q)#|?zklj*2ma@}Z1A*ORmT^6LCOqVNk3EE`oJ45QICsQa18uer@EtAr9 zkgjH-+zN@8>7ByYrcv*9FkiY#5I0df1WESQ{-(7!{#8 zC!)tYaLMwA>iIaz8WuHF|9&>I0*YQ6+KM5j+DRZ6F+h}l__0Uu2Zgx(E=e)WgGukN1q8b&gCd87tC%^#{t znTgCe3-{>BY{0-2#API%jYC14qOVL!DQHZl{=^0qajlhIhxZO8u)3eCnuc(}t8ePB zYh+?-eKUXE`%Fx)w^C0kr(7puh{B*&Z(->X!<h@tdrb?^X_A9DcV}316r9poF&`MTQBsUeYBxp3K^04W;FJk%ME^8XG z{y$gN8<2lBhULNPF#l@TKPBr{>~3iZitC8s55hRh{WUjXOPKL)5sdTj9h% zHuN~;s`199rx?U-G@11mQ#kgA5A%_jafyOC2?gk>XTj970C1&rxVBn4u+GHlF9aH0 z22g+RLTo~YR_hZ1fSey#AM$s=`MO`}I=x}z>` z1y|F!ln7}Y(^+g5&6Wufj#8;RnqP7Tmxw_ytJb+kg4Q~{r`FoiRclHYB)G%)CE;hp zP7nBWM-xyU7MCb2Khs&7Hqn|+Xp%}udQ_!5nip{fmxz(abc`{KGXgps|7l*t8C)X9 zB&M_2n`-uwR+>G%rDm^a$x{3Vd~`?iV9w+cG0$hZ(=n;cIg?AooXMG{QuRZlyU`Fh zgGu0cA?(ilq*=his(?b`0+GXlpiyccP=LlI2mipjqlzxWK`Klwh%$ z?I2^jO}#uhw^A;o(bFP=*LN>=7#2E9jZm3!YO0}PR(N`tQ2_dm$$+4Q9DIMlEuLA8~K!`;YIR^kDV94L#OQ>3ib?V{X~@SlgFhs#`oG z_53CSu4(#`#ky5i4)&F^3N*$|5x>oTem;_mgU3zEggEbow#q%syQe7|8V3r_dmwp*ql5yd;f8Vw9maow zd8cnDo!`9nxs5%?IF?;9>*M;31E1=b`_SW`eDunpTbj@8GHT<_pYL`jjl8VO15YmB zoYSwa^02e`%okhTU0(Xe`72X@*u47d=Hq|6_tj+|eErp)2j=E4ZRp{D|4`SSck7+j zN$qEFS;@@{Y?j7G>cCDizBV{D^;(Ozf@{q0OK9A+S}xS-^1u0A35||c%P#4s3+DG9 zG>ls&6^z45}ViFjJ26qbaP|wGAM`D^X3=OE1 zvKf_6zZHq0iK*4XFD{za(Bo;$>BG}Q1De%BNbG;Qqx6fT1(9!p=l#EPN8WgHRlOUb7**J(5)7^ zmQoWEnif*CL1>J8J*sF@f_eC6kvr-aO*Lp}_QD*sHKxHgm)uby1W^V=_)E?F(CeL@;il`z|2 zeIi&4qr^om%W9#vOzzdu`|JraE_Me3EyE~r(fDD+_3Fi)#~Z93u_|%3XRJ;* zQgY6J_8Y5J#x+#17)FVU%E5?hQs#tq25W*~F^m!y-3=M}swr->y_JlsLa-P{iR%m{ zu3IKwai_srD_9Jp#6@?$MqGDpdiTesGOjIx#V|@-R1QYIo`3hX5eDn9U@?pm7u~p9 zEmV)>@;-my-R3f`6N1GsN?i07$%yOAB~vdqSgm>I)EGvIi{2HfakZ3j4H7JdQR1SJ zNsY^3~kJi!dtdY{t^BR4uRCoo%rG zEm(w6Srm)aLiI@QqZbmF8LVD3eS;&6%A#3@)k5u)+)s~};5w$4#`%Ip7?m{y8mooM zmfW$0tDZMlYXyriDk~KlgLQW43S1oYxDE;yVYtpllSJVVj_G~pP-v}|RTkY>|9=J; zg@tAF%L|LK+;CyBIGK$v)P+bNi;5dyp$WU^1WN1E_&&gDu#aYt$TWMAA5 zn?3Zet`J$+>RBGT?vK@u@*6U?QkH)-K{xs$RI!j*1U^T(VHU~~Ze>VK2HDUMn_~$W zY4pX7LWLDr+>owZxv0m37q&<{KQrIV)0ET$EKUErcnL;)}6HaN)&erCLh$0$K`~!b;Ut^eJp{P^8)n53drX%cwxwoJsZ<^WlF^sfq?>7 z9=3MU%?K;a0iRwO(4aFn;PQHd`MU9M1uCAQ8F1{=nV*Bb-?619Z*}T(H3R5&`eC;# z3tKO9oas@U0m^dv{XtiDPNp6jx~Hkfnt_=G1wmMG&@%*}sd~-8Kwh?=_H!5U0%&?n zCxI|N@?YAx#QwkkomoxKe`%%AjcSKY_<*;-T>ttOwEDw6GRnlB9vWH9#O_}CFh>{A z3oYEPdog?B$BiPEE-{GzwH50B)S9??Nacg+kTfjkHM!HR{2exYWZF=MrR(X?;*_h=HnK14BeQ)VR{yIMd~@2 z35~)H)gro$fD7RlZRM&P`p8BG<_ zADWOw!(~E03z)kE4#7voeGdI|z}!QVPB@y2MGMaZ{YgwQ(`mv8hhmC~^Fu!!n7afn zR=hNWd=8jzPJ^THS^+$X2yn5&yAOU9z;qGQUAm8omJdv3wR?g2PT*qI2Q`&Jn0jW= z^b?L|g)BVNlNHj_J@vW3lnER)(^xA_D}lL8;3yvq7ZzS3^tTBNMCM|JcQH7_s1e!R*#Y!JN8|f`D42VOl^o<10eVXvPf?ov8@^D;~mDslcb8k2< zto*1x_5t%@I4(+fe*n{rru=ZR@=Nv6M_?EbhgkU?1l;I2!kZdrc!j`S97lNdafY`B zxZC0g@0mEm+XLJyafJ7EoZJI@}2~s&n#+wH}wj@+w z=$|vGAR>Kk=x>Y&FA|pn+`Dn$W&@W(7iW`;7B5}5u8IS9E^sf$furYGJFb*8m$FewZZGpQo4qQ9n*2RgtKMow#@Af!wcHmx* z6ZdHxxFm%4T^u-y*D?|ZlZ)0~s9cibz|m9TUUA@h0~d?~hg%tKVH~)Qz^#b`=KyX~ z9Jn)pI}its-m82R2aew3{1peTBXC_t;b3yn>Vw9$VR7K7{4R(CNBLMD2adwKH4Yr5 z@7XwTG#-2v2aek5PjTRAJh17nv>}s=R(=$(Jq{eT({9mlrYH0)4ovv47r5$L;2!S( z#urJCAli!m3tuFKfBF7D`5ehPdE%6*u1T&buBrZpc_}CHT@o#EH-Eh0)x2q+=Y~$Y zLLc};zxzjbD@QN#hraWM{*3-D(o|d}<+n(|(AH~l7fp+09f8nW{?IE&sdlhjResvj zT$2m6k97fe<#_g;)5vWbaA(k%d>GLIUf7tt6;kK`;|D{#^wqBN6Ayd_^#SUC+eS03 ze>}9iK^xtzmV&q2Yulp$yrF}x(B755S#V2IJuu`;3gvhG<()3OYK}C4(g9_n3oFd= z{ZpHjzp)RXn!2_jpPDDM%T;s0GPLtGByl$5(^oITV z=SC;5KvM7tTu6AJh&PCQwGM=)|DEV>+>h|8w+2VwLmtN0a;9ELU(3 z&_DRP+OM1yC}-1@vzf}-TsjNo;$unirQFKBG*r0?T{B$M3ujz#;T~Gqa6VKvwxIl8 zoY^!tj$@dP?kxr}T@{Y#Mew~0#|-9M4~hHU35jzblG5XlQ2k&$i=&e<4nX3J_aJe` z=TbTji8FqJdg?BBmUhXJ_1dxI-|jd z(MSE@jlL7Yr!NKm(8u(p(X`Mn#>X4=2`n&-Jbm=f4jZ4Rf#`#XtJ1L=q|jgdvhWZc zFcduK;C(Ojitwr1WxsxReQWB07-J}W4iF~-g%1HY#P-@0+v}0oURz^(?TYPnAhy@x z*k13%_Bs;V>u78*8h&FG)UUC<=#!Titi;$}NruX(CGM|#&0c#B_oQOB*U}$!$_FoXv zUTAy`St>^W)R+gJcJ9RHV#n?PHQ11_jA)?)XsAmdH6~LQ|ASC2pp@{7>(i4lG&Lqu z3Xu+c1RlZ#tu=Z%|K7cB7yEXux(Uq?*pz`0>Jw-N_g~Of{dY8)J^UB3U3(f@RRT>^ zwE7I1QL&63_lnNHP0k@izUiyN){V*3e*EdFP`R>kj`MZc2d^~636wBy1tM) zGu$AlOOrV4d?CVfLF&qIG>_zQ(0I$kn=EzHAyLiRv|_0%leluJTP&qoDXo#x9a7pX zCA#_H@g9)Un^O8zO5aN9PboFWEQxc^kWz0crAjGVO0i~a)K+bpF=ML+V*qQXDCVVrr=N88OH@kr^RFqb+DDUo#tt{Va!PY6w& zNtdVvaqr&AUq2}&X)=5A6FPzCJ}cmr8~QcakUJ`fr#p1LVAs~P*BX;I(FLa1I|`R` zhkh+G-SJ_w5@OS>*oBxh-dsP(OdrcDzppduo(o#Px_ChK%cxM0@RTtdPVb zkKD&yTWJFnnVyjMafG{71mfD-n|r$IeZTU!Lf)+aY?pvu67Z)E*bcxh3FxTu}__jZ%74`WjCGj!9pdjc^8CQ@J!kN?s|^Jv8^F z`2m-fNvT0f#?yk$QfFMxUy(YxV)IbwI?bgf@+y=hrQTAa+Y*lRNQu7m;JQ*NJp_q{ z6q`m*B>FMwbt#!Q0-@(a%J@}78gl;7TK=@`HJaM94$zoPH#gWUgggX>9)sZi$%Hw| zG33E8HTs?*e1M~;1U$X;KAcPENvTjuGL`JML8d^z-8hqOH$pG5hKKgnlFh-fbprM$ z!Jx?gx0PYhn<5?)l?A_otlX^~Zfvait&RQ4tD*E4?-pZbX!Yed*ZkHO8$S`xCHDNk z`ftb0)&IaHgL@v@mQCvl$%&tpefM%dBpaJoJj5h=S@Z~#oH)`Q0Jew1@ku5X;JA%R z({QA_0-H7y$DK@?i{o=lD#vjjla}CkfJrNGe2Gb`aD16b*W&mplh)x#_YpR21CDPq zX%mhv{H)r8IA$`5(&lCoJ>&B*X)BIiCQ*ufOxlHG7L)ek=w}k8BfzACIOZ_vFpjxQ zqS*78^bU?eCVhY-jVxB}2#)zolC2T9xU@;fQE1UcR_Xnx4Z9>TB`&`h_FiIb5PRa# zqX*s|Tfv*RLTZ@<@w2fpD}_m8r0@T5#~9WlY4XujgvfV{;p5~`=(u#cSn!OF-Kxe4 ziFz~7&FMlq%?>wgl!+CKkzS()Fx~R|Lu-f^4AoP1*;agFh@uB8sDjd1k45P2oYe84#<9DLW7Ub0~NONkzw^1>PoDHT8d(ECFsO~8>?iZKw* zfsQl&AtmZooO?N>Bly|aUUQs#3(h&?Zb)Y{U!%~>&35cN*o4fqXOg)%_@K{AMQ_6N zcq&@s?S?o$WARXIJQYSWrjE$d6M9t?Gr9vk-Aa%?MyQ=_C*OT_1d83uqVsC3Lp$a1ooX(^&;rI?xq7-r_p`Jyj&|S1R z=EKv9M@PsA;?NKWIX!%;70yy);^9-+v?N}4(Za8Ur&TlWxO1Nl$Nyo>mkNX^>V@Ia$Gy7S@;E)gTdbY@1C4#$6b zxxpD+BE}k~Gq*tM8@i(gz!_X3#!XCTX83hD{-4WysjRp}jN6zl7Gr{BaETaqGTp@L z;$kv*1RG5HCOFtzrg&lXyb`t}&a6@g?HOMNW2cwE>=?m{ix$v+Kt+t`C}Ml;;4?yO zvQtr7xv;vTxRk+W%bji5_m!}uCjBe1nNWqJYA$JD1(I9gUb+{pw&=J(|mrhbFS9w18!Q($aDhTvljB>1-4PHdN9p zbphjuGLvCUW#%LP!!US#XjF?udWGJDD$z40 zOvs-w#xXfBCog|$9&2z+MO|i$BX6N-tY|WoAXZgZEa1J)yt5U3AgV{9x27?UKCBa) zam6sofxgT)`_c&pkhMkL#CZHA(j774s8ClyfJEgR zN>YfgBy}ruhQ=+rxFqprVFH>yoTQK@8sA3ir}~G{bbfAiX~j}ue+8%N*N?o8jXl{; zu|pYa4F+;fX%%ZKqMsUdXh8Hfc1bBAbwpu~e?lSu&QQ0hLaB(NE?ls%u(YCLVTJT( zW?1lzFf1waA)T?1ltMJ|LVWmGTv){Irj@d$#{=aBS~z=Nb>&J4gox(NOC+*O7-7{RluFP>LMmm&mF0kd?PzC+uM!!OMp zcH`g8x39eU*41YfZ5+Gk%&(tFPM*1O+_PnypDAg##ec`#Czf7Gzc0}C{%SS(^uex#Znnxdg=#3XIIF>PRU-8@5evx_0 z9jo#tKK4@TjZYlBW>f29NiV!}V8qGnK}9FeZgz5bv(L|4H{j3m{XO5d-}j@wqgu@^ z7k#IFQ-0<2Ywxukd$Q|y-`C%o>`JhI(P8`iSC%@Sx$(*SKc08rZ!eEnv3C9EZ7!^7 zJN@C!-wnU+{)Z_&>!e~i27OKs&LJ$=i*xnoWD7hb$wKi7AF3qQZ{ z$lae7m%p%POaFl%Ke=hk9Zz|C|JUnsLEtl^MR?Ms2d16D8u`32&Qd&N_U{!g)BTuwgdU0dw^Oo-y zfBK!J=!LbD4qvmq(_3{vKHV&PUi%$Gzi)GB?Ym!m`^&fUrarl4$!E3qyUn2Y`w#XE-?;OR z*BbKf2#!9n`0fKY+4eUrI_E8W?bz3P_B(ig&$Il)UU{o!L2%y2s}`pR+7DUWXU#KD zCQhh+dDfIiC#KKa`)1CFy85S^zS*fyj;+nQ6TiRM@cs5}Rr#An-Oyx3!?XRm49YEe zDs#%EEsMUK^n*9azk2yKJ722&D0jjcFI-o;_xPBD7i}&0V~BNB>%;x7Ouk^MuULC? z^57!Z+N9}2a(=t>@W4OXudB#@b@zSe|J>K{TFKLOu2vJz`)lKvOXhZ%`S3XzUyu7~ z*~KS%4EV>vPe-(Jv|d?|{q6XaJ)`aJIhS_7V8^rH^vkYaRD9Xh2}jevXkO8$zS+y~ zSM=ZU{^Y5nU%wvnSmvDnYdh=F(EHjx17+MFM%h`9ZdK{_ zp={^O^CK~IA8WO^aipg-Lw{&;VIJFW4TUEoG0hl;Zb~S`=N2rpM`Gv( zz-pnJBTD_=3kG;2G0hp~a~yl(H~s-H?%=}n)q-K@mWggh>bKmmD-zR^Vdw^i;(BoC zQ~!*_(CwwwLbpYP`Q^N8yGCN@hSX}&!+Ct|!hMk#x+%6==*E(yWxaario~EefT3GS zD$NP54?l~<&`mDi{i+G1&Lwx_nE>UT9OYDZ=0H*97%b{O1~a z)T2ADDG{f}o_+ringq=uST#ap?AiA(JrId`C_=M4Li1{b=9>sj6Hy4w5i->jY%>Xs zv5Q}d(6o^lT7f~%E;Rw6Ns=0RCQZ)RA8?`2(4Kufu9ZU5OlsB&O)F@4iQO$U#@>HV z2@UNk$T2SnjV3kpMv^iN4<(`QV9S@sbiX9Lm_R#kM$iE4o=u= z8`3ZgJ$qme#-xTtMQW*`X9pTR!jhU%q(LV&G^|18nli3l$7KUMW>H zG-}OPH0e02Ry35l<%)(9U8iU$(G7}*5`BYNL%}dd{ar0p8YNUsYo;;pjo20%tA!qG zQFTq-_9PYrP;HR=UeqANDEq{Vab5bYQ`Ic#xTmBbnO|7#z}JO-iTcU zi(!K}mA;&OET%Dn{S}>He z9Z`HTU=c=T(JBdJ zKhWiO_TFN!+KDU^MrF~p*J{bYk=!r)&&V@aIf6wPl||QQs|8TzDo36DlfkMHEW)TP zx`y*R1)}wCk$juMdPcAaqq68aZ?)tQ1#a~G_tD(Mz^MHoScFkoG#9X1W)lT&yXQ#^ zQ9A2vnn1%5Mr93$#%l49CtUBmYvvoQQo$mO%Az@i)p9OT;JUW|CmNI<*KLAD7?nly z4r9mC8~V1v#6f4hDOiM2Su{5>_Luy#Y{8QTt0~<=!4XDf(WJ}B*WDcxkqJGn@q$Gd zl{H3T?OFQyvj%ICU=c=Tv6qV$I+DBXsmmuBtcL`Pd{x#sXsi~xs*)RX`OGH_))#_B z7?nlsmS3rf^~yhHzGJY?5Z#V2D(f7^qH&4bnuo4_*I;D}7GYEtdnsz6af#gXW50A7 ztXjb$jLHHCDa^%@+*xV<)duTX!E(Y!Wx1d+_S-$&|Fw?|)~|v^7?qXDSi)O->i$dL zGguvIat%iqmF0%U*l%~l%xk6@tYLyh7?nkR#A*?Pkv8^T`*V| zcS)!-Soa7PVN_N=W6>O*T*FnjnXW_!1&c5$s{k6S#ZDBs4VDkzG~)V2un42FXsk9^ zJG%_Sgj#PKom)~!{3W%@ngFe_xA^+P_Y(}(SivHU%9_YndJ3PJx(bo&aTN*{VN@0d zO;Z_q?;QW7!CEO;gi%?O8S5+@$yNSZHo#!rD_De4SyP~~T6z-&ZrD8A~sXw+6N~jq}F@i!dq+AX8kO%Wa2^xcVZsSJ;1h z_M*}0wOk}vgi%?=j3vCa#KKos7_3`_nlLJ>gt7Eq`LC}!A2nDz1dA{#tCX=sm(a5Q zDt^RZ9T6R6GmmtVJy8@96PdyFky1)XY&d z=Do$|vXGrt{8QXgF!<)+l~olBiszUAPj(cKwMRK^)=aO%@n(_VJju7=Qlq>Fms))T zalD+C8;I+=7@LZ-y|wvk?Z5);Uo3Y1uA*f!JaYHkg$pZ7voggCTf8MkeC)NocpF~K z08k1<Pi#VPi+mK&2Zo!AJQDU}*Cqg4+xC8A2rv`9}u4KI8_iclBNEh<}(lAaRb!S_;+ z;=viiV=nYp>{{G33Jn^XB(!tulTVnX~MKU^*egeZxgJf|)o(*~Sm2HD@fVMtnhMW~R&M%gWC&@vwv?DsB95Nksbc zJps2b;LmbmVHV1fFWVYFypk^yL=tBsyUYt2mPD`D8F1(L^9uZ#dW>R(iyEcmWo0_O z1wOCO?+NNW(Ev`(%f!y^fj}@2%*%GlC4EF;bzLkM^~s3b0cVcOpO+I1x}8|)$BUYl z`kCY5i~U$Il8Bt;<+xn|UxDB08b3UI>7SX7iZIi%GIMkD1KB7Loo1}|i$y~*`0|1< z1d!|I6<}K6H-0#+@I!s`C4LCPDF4iCXO1V!<@b1VoNOf@?eZ>`_l+OU`Ug|X^kwEc zbNu-Q1=%P-@&-H)jhMGETK7lIm@oX39F$=$2)=^60-eLx67dc|!==8BJd%l~V=%Lw zd70T>uQ%Hhjmee>ni^a2Ldo>zIo*MP&*MT4MLK!Iow6Y{e1T)|)7xy^V}4V z3_sK3%yoHvIXNz`ldr+UU?^7`N?5)#KR3^totcxbpejv(%-rm(U{1bE07So%fLv!m zfyYrg?K zCi;jkkeL<8Dqwvi%2G}Vb-Q4?BFmd!ki&+JC{VfTQ*ttWPG7!@x-aXWe9h-PtmM>J zf*QyIr`v-|U0z-m<(?y>t`0RQ`OW~Y;<-L_S)GDQ2CcGJSBx4Azq7y-$j{Eqy0DAkFnkxI5dKUEnDQ`rUkP0=T&@X@x09Z@Q@RHKwL=b-SH;fy``NIHJ`hEhrs7 zoUb`WolK;J$XGMcB38<@OmV(52Q4En+v9S|^{nbpT!2B;la(0^WYXX&*0`#WpwsQm zgi)BREFQ=()jQwm&vLoEe#{_62#dlHZjUqDgR4O{u5aQJV=gz|^Y|*+@xu`YE^CE_ zf%!#qN;8YFmOj#aNsA#PMmx+-+AmSfnmC50rj8f^-LMg_7?3a{jo*zc$y8yPCEFJlkr9gk8Gv{!f|2YQB$4+%;Iodl<;l<=8kY&l<;-} zL$*%Hohp4_14Fh>6kJ$%UE$er2v*?YNA6VhkpWCV;AFgE;Zga`0p_we!m9`7hSP-S zKzLh#c|9B#rTo4F=C5#ESo)|wx}Y-+qz(lq^ARPy05G&Kn}Q1qFA<)V0>hE9+w-Ns zT^UDscgGptL%?l2O?cGb-UjA)I4(+ln-9fmIsC}UatX_C68y;4h&vn?CA=bF=7;0L z!lUvd`ygf)YdlyB-1<1ei?j~{dj(O_w+~^x8b^5F3XGn{Sn2x(I4j=ql8aS-l;55L z!+oa^#<;* zIB>mybBw^jho^BXE)FBi!~laR=kX(P|g7b4Ib3M)97A zh6}TELWT+c48v(H(5L_ZWanft`*NH;)f>EU)(}v;F!Ve& z>(XtUgih9BUv1h*)gQWsNMuUF;o3@#I)ptgsWBiJWxu4Oq&#+|nd3=ugx)$8`aGaR z?L!F#7!6nc&i0-hTXSiWR+Vf{Bw4~ZHUQ9?OS@`S<7zS{(coE~re}ir)Bd!S=%0{U zfw0#eWhc`JZm%Vq1BB>_|7kCz?ea97+eAcqR>++cn#jzgxOzVarNgShHc3Okay%Kk zV6FU}?4)?@o)?e9R*DUwg$~!eXc?W;!R|R6ayvYs=djz}$kDB*Bc`e$hRu{oMVA{k zQ`*Bk$D|2RxI!;NESN$fET)9qDPX&6GD;|&Rb#jnk~2cP8+XH0N5M@FGV!sx0Dju> zF5C`Dgy%Yd8h6)R+DWVGQIj!~1tdYj?n(hY5@_5Vn#e7$)Lhz1tLmr6vIYT!++=vA zpmBG@xiEjSy5KtKV0WdUAscpAc2%|4vDZWIsRy8OH`!y6`o3#OA0&NfH<`^T5Us}_ zdecu?LHuZosYo5#B5R+hk2-2Nypd$w;Apn1ddSML)Dpz*f}T)LD^by&kUP4-w6=XG!Mm9_Csw5i?S2 zG#E*t^F?gvnTQOc{kGTJr`-Dd_&l)}Jl~hG{u(EmqO|L94Q&f;oE0c% z)0DHB%Gq3;9hb40H@6L~<|Bk|cLW=Yj-oMS@z(18&kK zXx$+3Eu4o-U8a<1LvYUhx75+*+MG)t!*SoQAkiZ*oAw7JzWH)f3<-SW=1wFr-+_?$ zM$2wUd;{eoNc4fOO`8u1Ti`;v3=$9dI_Y~WB%a^Lr0)($PR5|krn&E7NHmSHX`ex& zdqbP{9VEIdv1yHvX!2syT4N-k8JkTbBO^37vS|Y$@$IRHL*i-nL857ljT;I&u z-!Lh~VQ-6T6Si!|IPB<;zL2&HQVPxOus1K2s*@0@v!U&;b!u2*;dEvT3<%RTP}%~M zy&T58j-f@cfTq)i(QF7|I{+J&!_4R>30*&rHkiilzm3V1aewG2wq0ZbuF5Y5Lnn~} zKCTRks5NGtjCK+RfEhrd0!K3F9geJfDrq^oBsf@+sJi}9bTn8uCabulD7sG2u^E7f zqCUYHq47j${1F-F#a`9W^<34^bywBQjL?jV(2R@F1a%Ecv_65Z$9}d$GZSD~ ziprHNcTipNotja>v}ZH=MMSr0j@HD7)=rT4fJHAYcvq(5KK#(BaiqIs8{4my4>}WZ zet_vN#E}mx^B{5VQb;c`-z#xM;=sKcN6x(g(#uSDtJH0T#BnrebKE14Ud0cVh@@@@ zB#zrFbrjPZ_}R4Ar0yL^9QU!*;j;p1f*jOH%{u@kWMgNw$#xDpL3@|`j+|5 zkh&5nT@2}a=360kG@0Vu%OL&4e6NtY)lymu=~w1^v(&AJ#4kwqK%$wGO?y!KJ}P~; zLi(He(q@-Dwms69_SB}DwP}Z?FWHvhA%6gg+YTWs6P!zzZ0`FFByKU}N9hZbeZm)W zL18C^F6f-wQeH&cLE_dy=pxU3yGh>^NJ%VJXGz~7(su+Tnuyr6anjc%ed*4L+yBUu zz7wVI`H;BPkD1c9RQl2v<~%KnrL;mycS7Pl8C$^ei}4HC9KMmRKiVF63NAfs#fXFS z!Pun>1`qrV52kc##GdmjPaH+M%@cvTT>yI1z9!RPFiTKRcWvIZpFN`o(V&J~L$aLU zC(8*=do48qKPKp@xW1)p4xGTVKQ{|W`gH93>%s=L&^j8EX>7-AA?lUx?WUOXj~?U% z#P#eM2zIu8A)B4xKRrUn`DNY}hVnA+2GdFIwPx5ZU~?bY?>*cODcbLSqb>ebwchW2 zCli9}*^UT}&)utgAxgTMR5yn}7m=!ST%qS(jnD7*)UCJ==;MRoLF0Q>AH#!;B(nQC z7jAI84KA2oM3A_}NlEn=!*Co+iYmrl zOJ+l0>CoZj(~bUQw4%YgLMd^3Z8HR%w#!@hbJe7k%j#AnIgp_i{>EMYv3r(%bKF_8 ztj>Y39!6Mcy9i)W0X+oZY6)mhfbMz-5fh1HB|st|$3WohbyFD6-or_{6;|SQiOI$0 zU?BD(Vl5d;;VDWcQn#3-v|Yz-Ay1v7z8Qyij1%s&aeU`^@rfMYC0=|hj_(yOK8fRd z$BXa4@!jLacjEXS@#4F3ydz$`gX4R~i%;SBlz8#|Ii7mG+K4* znhY9g(7J~qc%B^^YEIRiXo4g9;9sEb_tCAVcI-PGYBFeeLTI1k$U~#?$<)0cq5eeX zTU~M{e{Q|61N|?q_jRKG zCH20p^uM&;=b-wPKozYOM5e%{?g*5A*&EhMx0@E2o%-si9PIRlM*$I`gD`mNs^ z8@+gPavqyKdqevIp||-o9+#V*`shSPmXBxZXY$7BczS4>GZ1=(7eHvw@gb2A`A|qc z6p@6qUBM6^+5I6t()&YvoF z*Fe`3Ser(Z-9Aj(DsTy!F?Br;SDuHMZ!sjEsvD$^rh!~XQ#p=%L+WTc#&uS!j-yAi zT$d(w^h8(0A$9dqw^r)5Ngd61c)Z7??gy#sj4KHbuQw!)3rO8Wsaq;_HBxt<)NPTv zcctz#sY}LHmdDWp5|3jzBr4|wZL;(&l)lTQ?-f$oByo>P+#AxjE9ObOj*de@r$%l4 z0%<#w60pi{3zO`ScnZ2f>dSQ4bw?N-876(lLfXcBy^#2GqC7~PaTz2&!8B|ggzD)g zL726n8(EmFAq_cZ(_jxxuz1@NteOmZB!G_aE}8P;k0lN?CX@0wY#s3<5FSZ#sLvYHHt7{=SDy|&GQ5rvI2EP?&^oW>RhD>vO1hmj9n z==6A$OES$=#yw$+gYo!G9D@{+f?S*>2C3u8X|KU%sjij-l^ovEU<)eJjD}Ha0}$^{ z{A?QCL-CSyLVAwrvT@|iXbL3mI}_3%{7|}NZ`k3lS?WaH{#HFJ?KMn48?u|SGC@V2 zOVj^`f+h{wHm0H(GOGbxc2XOYuSMgj+qGn14eSqVRVkq>SD+dFi{4X>3cZu|-oW>& zS~e!H1E}V>rTQnbgpL~$_8N&Qt58%Nji6_-_Wewy{+6lvC^C zQUN5MhhiZmXjM|z`Er|fc}W|s>2=(ihaWzz@EeUE20gfkF>>o}ECg;DflG-vcQRei zgeF=-Ix!6f`EnfTxkPDo;%8;y8k;=o{ul%WlGs@c*|UXBYw|3=->Vs_opynxpom#BPaFkR<dFY~B2zn{L57FLB?_yA>3TX6HOG%*v`%}+YDrb&w8RoO^qQu#DSe#N zNlINIaWETjFjkIuy+6NDp!lVWEx{DTWIXqQsD8$v>FbF)y zT%sH=Vme`Wgy?LmPx?CBfHT%vqj&2(maEcwvrjxGzU5XNY&x^KZ5yE99$yC%}i%zoDGfcMnd3maETZjm@bw*78)-(gGbZ$#`XZ7r6X)XF=^!kjM3i?WtUj0vgV|Imsh&Td8ERpsX~HtXzxZ;T62pp6LCAvS zdGhM}dsOnRJG|2-iM)jSxF%$hk5W?HrbnglGJm*fgai96rSq~_v*z%!MTAFY3h}>i ze)YVnvdW_QONUIlm;HsL;Sj;XH@lbGK-ldhp z6i8&ig%t~D;p6ZHWJD=O9MZA|`BNmcRfV*Tp(~9qEM+*X@(YcA#!4sZ_mV_0+rN+_ zfyd2S4gUl%CaNII!(f$Y;>Bdi$=vM1S=1~~0d!GFi;F5s&`;-=!$1z1@({*4^qwpC zcz_X^Do6BUBg0133*;xBJQX4wQESFXc#3fJ`a4y4-ih%AWoiylgY$$9f$G5L!0=cJ z3s;UlWrO>a@eG}YfrR}BBx3UY89x(0dg9#`zh3zD#;+TG^whZreh&P4;+KM-ZhNJ$!g|yVF`S&eu@%NM?7d??OxVY+S-|Y|2%URxg{;%a1&wTCH ztN#3}-HeA`{P(yGH(j>mhBKF@9t!3z%$xF6;Er8~R=xMYmE-Q3KfPxET|2dZmP(r{ zO;`6Fy(1$p^WI-}UbAA>lIzzO9AEUnfhX4Aas9>9?E88?{L11Vy1jStd*1zf#@xHe z_sq#2&a>~^WGm{Y+hi&8_UQHe!}q?TpJ#8~Gwht9YnSQg-LAQ;yLa2CE%ozQHd|8u z@loNGbDo;{b&+>KkEgYx3)=>J4SwfX?^wNK)X=pV2TKa>`Rds%N!Pvl=jV64_`<4pui3g| z{>N`T_VjtRYfI*n;FQoa1rIUmjK@=Q+oPf0mr-(H^= z`0>8x>E)9@ePa2A-!8m9eZ~3(7vB6v&WjC0vL65VYx|7)^s}D2sprMk3*PVBV*VFT zbZhvk-Iix-Gk$vXo2}!%NZGQ!dg>F6cYJWxiSng&x1VwKH<^o{?6B&-S=MFmeb~_c zhSJiktdkGbb-8@{#?_CsekrRV)Vd^R|Mx{_Iv+2uob^gOZPITiewqH+XFD&s@RhZ1 zUD?6^`i)uLzisG~cju#BUw&=+%5`ZYrhN2OhZkPXzjI~#Ki7JjWxR6xOXK!kJLCAl zKVF=BQTIQ3Kep(`&t7?J+=!fWrVZUZVO5~r*zfAEn=$`~{x=>ScG2p-^LI5}d(r4+ zH_f`I+4=XTF4=U=m^&YAwPfuB!{68%#J>7|>xM@x#QM`G~A5||D+Ho@=aJ{|EujqXIv;WT9!y20~6y1(jn+*yQU z=yr?SGa;WR^N0T{5<`=ItA%b>DAw86KbRAVp=XCy3*Da3z52P@#*LAf77XJTn8J4F zHAZ6S38B?ef+MBOSGx%JPvL2%TS2R(4o6DQT@&XAA~CHQhHl9yoWu67FX0%R;DM0g zsPr%z8wysQnnus1%+A; ztV#$?E2;TFXvi)K$D9xvJX8@HvOQ0(xzuzJ8p8%lU!iFM3>QZU4X&|56Hqj;uQHS# z4v?c(!|i_1V-j+d7S$36weY6OZuD&k$NH%S(&lCEPYjzLMItVSQFf!ZGZt&-kgosx z%r_0zBEe!9B`$g}!sDWpmHn~lN`rNkU@?pm7X~1(^tfKQA?tU8wL!2LMv1E(W6{GZ zifjEvpLz_|lY+%CN?h%gxOzS~zsz7A6fA~O;-XQG@4`!Q^|`FA+hEZ;C2|a-#FY%K zk*{RW6L%V{Uj>U{l(^1dEM7{QwxmPuJcHGSqK9J`B`z92jJOV6dd_@#>2@}F37fyB?hIceuCMle_PD{CCgNfkC9X3Wi$bHgUO2Gi z7Q=o>wO}!flCLgGT>GDz{*}SHMz9!0iK{DPIp~OAvb#Gr(%18~Nw643iK`o9>FqH0 z_bDdJEo`wB{24}xt2<-q^)>LqmNSgFJ`!;;j1pH5C9Y$Ae(!IveiJN)QQ~qi7F`X= zku?>=9z_RnQE|WrHdstwzxO1K>|d_UcT6%^!vu?Al(>2^mL6Byv4qPFI~)0e#V|@- zy_L8&{`Gt}gEd>Q7)FUJg|T=KLOa|O#H$XyzLp6V!zgj}QR4dUnTN6s*7btLFiKo~ z8B4FPypC(`GFT4^7Q-lU^;6<{^ZNT=H&}ZGi(!%G0bT!w+v(9P+rKL7di*CZgH8=J{I8+M%}ZSy*jW^ zUdZiOe`UVG>O>Q8IKrqbOlpy4$_u$$W;Hx&uqFr=VN@1-F<|M#IC!<+^A3F<8}tMHrPehOua#PcE_Fz?Tiy!-7Q^l{FR`tA)l} za@%`+^^w6kELen5S>vFwTG|o??$F^^&ox*r!~jDWm4)gtv2I=4>9D~XB3Oh`S#+Oa z*i!iDdjBDVHA%1tqq4>`RuYcnnqTpy-C$iJScFkoPH3zangx-2{H3F&GQ3@|obXXu zE@%u}3jZ838kM8B!~KFq7?qXDSZ#15XLSt<8mwc2MHrRkCai3|m#uUzG*~T~Q%Kkw z2S1hNfyQWuEB|PXZlR~pBUpq{SzgAXQJUPAZxU7-tbYm?VN_NYG*%1Eoyg^smlhbT zt%5}umF0uRV0C*t(NyxE3l?EimY=a`#zk(xtj91F)$`S^1=kWrWd)$IT4-KP?#}%K z9x_-i!6J;xLWc*7W?banxUSVr25YWh5k_U<(EwO9mmrtjdCv)h^)JC9jLJe&0E=d= zpLo z);WSj7?m}dvGmbqz=!Lm8LSe)B8~YUxW9xUc^8 zJxV~YubqNL7?p(tfkjtCa$8!~)ETVb1&c5$>pW--D;A+&yMAJ@(pytVm`~uRvd)Lb zYPpa+;lA&*AXtP^Sr2ARyjLIri zSfBOk35Cu&Dp-V3S+f<^W9RI}u&1-^N$`XtjLMn=jgi9Y+deVPkwyp>VN}*!g>~SJ zch?$mT_{+D0n4;QNf~3&mtU%@1%ul&!IFnyQDqg|==y(b)Wpq9f|wQqh!C++HCtyA z=>zj5QIvR_o>@J6HeRk8sl@sVp5kI=9YCDSt|-N}vAX3Hymt<>oFX-Dw(G8&Z%r(< zfl9vPb>$TPA~(On$8Z%;rw!8sF0bb0V^ZqoRZx8YYbIB?%?@+%&`J-H1+glHazcv_ zL~-e-`qtWX9%&MTwAjkpWMYLhVlRAC5ef4t@DxfEx^JStXhF%m(hB$7(&CGus4T^1 z@nuy@3yVpCMGy-wE-Teigp~@VYJ`CbRmbg(3{6qB?72`%xRztnqGH3fy5*B-;iiX$ zpxZo&h8-S;HD@fMQJHfX=_#m@^(tslJoFq#@#004CJeQhn+a5At1pTdXX$od6fcpy z=#5MyF@~q0hP6b&3D@$}rKW`IdD0^F96vM$K2mQ=jJY3}QlqE^JbE_~q!^xp8rhcw zEsBSrM0PeoiQ=Kh!mY=cdZQjogoiNr;>M=nu3)}D7nUDDqn*aZLd5aI%W1{d_~Cph z5_V80!zpqzad&|;D=Q~6H|X)}M7~CZTc^<1A{n7brpM(B<`(3*^9wTnL#8{+nePiC zR=+D66Xn7#A<^Q5QGhJJE9ei%II$`Q#y!~D9g|TPWRtC6l&Qs@@*ZC{>^=BA(c(Pi z=JH-=me*I{&cUYrqHN7YMExX|0S|1hpA&F-3bJH!&CF96@W_LOfgD$MKFmif6pJ6# z4cgtA&a9x%o0pTDA1zUQ`*kx_mPBTz)925H*@!@aGkgJ{8Iih z7_H3tiYhchTII=Fgu%>lX6IyQd9s61dl_#+2Cu4AGBb0WexD~Z!19X{4qwKJC5dKi zc7A3s+n1-8VmKO0APsa7))_qh+yY+~m6UP~GZumxaE~(($U|p`)e9Dr=MjwBMAQYNMz~%ykNj+Zo+m(s8or3sz-7avO)h!_FMNgzUq5OF=fkpsANgZ} z(!$NyU>L4(XM1vkxjvZ!UYGg;R3qF1XSORp(}N<80o7M5N($^GWaZ~(<-#DBOo|$M zp}sQF;JBTcSw25(+;Gk*R<0Txm(!gcbOrKZ&qOcBuz2*ftdf(N<;*Mak*ifYtAV@F>fdCRIW?>gLkU;1l0Rl-V8j2yIiI@;t7=x&& zhz0B&tRO|YbOAvrqJpRh2B}I_^S|fZJ2N{w8$b?)Z6 z;(K;a^x$9^BMlR+hl)_U-ra>p%g7z>eB?G*LtXFqZcdy&;py4ai0d7X66uPQO_Gx7 zv=+Zr&*-LHUAd?8I^e_A9fxK0O777k(QhMch+-ox%j(g@5gi^U&iC-35%kmWb4#IZ zrsXz6mqZ5iO75MMgtNUgNgQV-_tsL=plz;|$C4O=IQ0bwO!f41TaI(oJ?!dAba$n*cw{QY z##U2zDtE(DbPP#ypQK*S9^JU&P-M$0*%LO=k|ZW3mBnWESluQL7EA1&p<4owL*)(-QV#KuZ|(~r;E?l(s*mkn!Sv+ZX+Md zI3czOh}&qTWviIh5niFRlU?p>71t()@pQ7wT>*5mORHBErLtYDZTLIc<%4MPOuzd% z*<~{xmT#^jnDBS9%YAsVn{f9EYydv|opkac_@Th8kvLj>@rR@T5cC}|KeQ0~Dwcrz z2K?bI@k`7 z3Yfq2{tkW{VCuvQT-6eA6Tv?YjE7$AB9x?$Ryk9ESub%V#gCTnjstU6;!4VwzQA1p z#wC|z$*ugQBMSUXV3w4EO9XBMFd>wY2qo#GwcHqB9+J3{(n~u4X93feUJN6Y=c+$JHU{uiR>Y-?bCgmT^%iDWCDeN*OOP48+Z!K8oLD;O0r}ozk%w znAc0e(SP6i5SSgEg;mN=e|FQsAN_!$?7>AL5SKq3y{GsGn8EQN5GY;#a8!Sn#G{Vj zqEJ%4Jc(z2#^WcYPC|+O!v6Fv!n3WwBzIw0iSeU&&jx0`#FdnPRQyi?v$qu7ASn0_ znC32FmtJf5iyu|QFM#>NBXIPF(;w~?@L$2}-i}mJ5Q1^}!_mKFoej)KJsDOaj?#M# znA;LpQhKN3K_D8BSxG`)XbE-;z&{Pl!@UF!$?_XNC-~0*^R2{{RDa2zuK*L+Tj(n( zeuQ%X(@5gV;k&_6k@OmsFm#0{r+WXgg7_Gn`@kZzTNbyMo7m0&|i&CWMm4O-u1?WGYS?!$qN_`tcc_ zH5`ey0~dvo>UlJt)fvSQ{pK%zG(_wMT$aR^!*_qUiQvxz=5L8B$?hY-bx6Z$3AiYf z)Q(egaTb`i=?p6|z0_U}14hjdxRU&o+M%1kWQ`HHFnst+hs&WTe*n{Bs=z&^;ryJa zb!?`_m1a5FC`Y3)= z%BXJ^a0|r&JrU5sn4EkOxqrUfmTV0Ais$buhQQs-x&X=OE8uW!e4!_4mLCM!XV4a^K*oF9ElfqBCh=SSaGV2=3W{OJ3OFuAx8^mO>>qxxGv7wr%(3Ode@ zzQkPAUtAP)oR2=Pzqt(2ZzZ)avw&MDu_fuF{CfwO4Zb)(@%tW_Grl;V_|;UDn%dp>3?O^ z7djiiKEg#o&ljKgk-jz(!$90hieEf%iKXbH@_49>`ep;Ss1$t^zYof&?+f6zm!gmS z?=&#iBrf0%=~eR4F5se2QvQ*?dw}UIad*<^0j9si*&xUH>{A}(FIm9Mmbg3VdjgoH z5@#zxAC<>yVD|gs{P^>EU~c&0{KT)u9Q;c{Toi1$O7a&MFv-3+Kl&yBGfU#`l->ov zEGdJ&Pk`B427UX0IaZ23D&K3sgwjL=;ZE_Z226y+>G|T5UeebYn7(DumjcY#QuIYZ z-#lPe`r`bQ?>=CT`Qm)yR~P!O0aIlj2n0PHe)Pov)6o~_qmTUWL140caenkI2IeJS zoR2=rzjeUu_r>|qcOIA(D#$Xh?JCE9%q2NQU-nDwCLm&N-E!)z(q=IN%=?d z>rzI2J%Afn27TFO)Hf5j1*PaCe}1cs`aS_}V=4Nm{{8^WC5gL}|J?#6XrajHlJbxA zMFP{_7w5-c1_Cq67w6+IkozqmTUgJTU+G;{52Vt)edBqEJ$L zNuLXt{=PUr`m%tT<%{!)ANk))5<_+=l;qEE0QXTD^zARBz9Yb$E=3>tpYjCVj8Ibi z!howOu_fgnwO8%RsIM1r50;`Y4Em;(QQsWk7MG%r{COoXTYYhU%J&p7=Y4TL|K0%RBVU}4J}Qs>!2INk^P}${U_zdxRCuMs zM<3PSyCsH!xRq2tS^#%{Df%dWgMk?NrFRD~-}~bH_}>j+?6i=LP*Qrs@vIRrt$lHR^d$q6;*0aiKhiftV#qFqlG3{n zxaZ2C?=xVwOWd8xcRw)Sm!gl#wm6YDrz;!M~ zAGKF0z)X|4JEeCvFpEmjNB;Z)Fx!1`e#-YWFc*Are#$rO8LZdgqM+xCAAR=&)6Ey> zqmSa34$MqnoF9G5fO*Ro=SSamV1Dq$`O$X^n4l$`3?m&r`pBOnfobE5^P{gXFvERu zKKf{UIun=`5_hNaeGiz`rRXF7`&ME^N=o*>AAmdSt1l~kWcEl+5@`h)^sMonsQB>s z_!fR}_mlxw5AwarfNKEU!)3rl1GlgYxMsk8UItt!a6gp+NBYi|0appQ%Fp5E75wEN zrME#DaMgh8Tn1cI;QE#UR~fkJWxz!Nx3CPjcEEj71|0d-*)rfFfTRCC;2r$s-@O1d zF9Xg2+>kQhsslH+47irSJyr%>XW%|41CH9iKgxh3zc05GH?QC?U+j2(uLT!lslU{2 zw6fr=^_*~VWx$bLrv+!VOE`BKaMbQ5Sa8XfbP#Sx8FAzM;k~2p14vL?<+3_sSp%;g@ zP#f3_9iTi!1}D57&$|_nYEyE8*C}{cT9lA?tDN{6Kwt0AyJZt!ZS*xd@0MMBEugP; z^KJ!-uXE^Y#k^ZV^tJQ4x%i4`(5cb!xfByn5iqUbw8?Tf><2-{EvJ^{v@$-7C}!w3 zI=YL_oB=r#)Ja@8*$emYFaokG)UsV?9-X)oLZ@Wu{TauSlP9_Ng}Nj~@F zKcHk!SG(IgaboY)_*D|s9Uk>44vUtYoc=J6lX{Rd**LC;>3KiF2fuCWG@Xy=98_ zbmAUfq+cwZ& z#97k~_w!7R#r;pFX5fB-sRg)SWNI1imzY|E`-evr_!kDDVP}*^7%HFqDKVM4SMwyw)XIaY=tY=0}L%}CIhi_{P!%hz0SA|1BmhzXLFGgd!I*jJUfsh z?NRf`mP68zjzCJ%K^!=C17#gsjMGm&4%bc`>`vdMbBRN@L@NEcRl$1BC{;~H+z1?` zqv)SonmAMqxCT(3J;*7gL4e4IPCAtgYBQ&FAgFz~>`EH$A22l&cag+JI%OOYrWR0i z^e9-qkbUilvnr4m4%q;daLCr6ghTS-W@{%wo08qi_XMm6kLk#+%HpW2P_2oH+9ppx zs{!f1aoPF!K#@>Vj5F8T!&^l>;jjMA07g`!w&8ynA`?-TI3ElYO63^&cVo@(=nzLP zR_!s6(l!d0YmD}UD@K$is5`9o7m>6n5@UpqaKjH1C@aWUz25)M}-Q}){%l> z#8xDjlCTz+9UT(Nj!U)?DAC%|F8vMsl>Gl^e%e=mIvCVCeoEcc3rywVeu8ndaxJvb zdVs*a3rg5s1&X3A4r2d{sV(}`ouFuxU{}7zUC4f`KlSMYJnH2HR;F}FCo(rCv7914Baac1)sN9AD8+!K?%y#*QHY=# z9PfP|H65xfoE#D1_6ZR)Ob6kJ)u;kCNo4Z^n8M+5`eB=Bo5sSi;zw+wQn6#$V&~rx z?Prrz^G0yJ^rUUUad3mHVvF@AyK`F*9!T#s+7H*D5=+L@Tu%Z0H#aTDS@8t|Z2$mZUzRXbVNs3{To6Qxu4fjY#NoSG#+l_Txw=yBF_7ZJ>)9Lq*KeGQdt|< zUQ{g@?G?X?Vuji;0*!r6U|g?i*_AhifJJS8@Or@K71ht56{ciY&7T#bfN>z`3;b*( z$l*Fx6o{{(^JFzDu09Qm4KDZxwXQHq=cKELi>v2?U6lC0R_~>ev{4GEv6@CF)8_J* zmm(MAGimOx*`cU4G1red3+$1JYI@`(56;mo4_=$=#|qpK`yg@wBa5>ufZIMA_1swy zoCtMelW?9miFb5Hf8{I)qKcQSSG>IKR7P~l?KYagi<(FMo2Yp?ppFrrM$O7KrVimQ zoQga^Q1`)IsZ{OC+n_{U)qB5n=jjZ4?=H}>?o`#uon==}ryI9Vq~qyh4~bkrp*6gQ zRFuoEO~(w!pxxT+7`pkYW4NeT)LCx3>InDxb{C9)&k<;c`%0z;;BMolBn{McQM=&j zV*G40SEww7{m~fFxtF@bd(dD~Qx#*hT5YJ+qSGyTut04AHOyj6^Z#9oDDpM-kUVFT zhFTwrXo)B5sF9QpseLj(M5b6DqU7?`t0=nU-0_Epg0s`Y48N&O5)7TVCh4!-AHD#B2hPZxzE#f!Y7{+zdDEx}}O&IJ|} zwWeT0e9!KP?*)mGsV@|$^jzv8 z5vl~Kh;4cSBc;~U;te4lM;P6k3Ii z7*LxT*9{c?*v-yk`A$qN!(HG$1|{0I;Bs08t`3T{V>k>-jx@wj7zN0^jI2P&F{y{T z*0)%ON7v{bx#L_1_1+bV$`37sd|2N6P*z24N>3wX^>U)R1%(iW3QeA~_T0bp>fKW; z9Xss?`SnrKgYFoOS-i(~Xf0x`PcC>Mj)?$Q1fBp=qZLn+J`Y;1m=WA>(-cco6^xC_ zOLS2@rm|7awP>!3X?9N$!1>7(1qs%rd?pIoImgC?lZN?byD|$kO^107A--umQ#`jt zAysE^*_8y`pJ!???#ECHcI6RJ*O@m1cQFK?2TBaV-v%XQsRXEYiQ%?z0&=Rg%%l1y zhW^y834OGtu#BHx#+|Tsr5JY_GvGW1l&~0<>m3}|1$0`8d5>lX#M_jdwjQ;ohsGJ< zJQYTNp-t|1`H4@0hB6vXc|F5Qme)6?x6xaK{;+80L&PbLcBK>UKQfhwyWl;jQ+lkh zrbTh7D>FAPpQZ#k?WkbLjBtZEZc=hW4VIReie?~*Y@;!;sG!Y2_0{7gaMRtu_rz7CrZML+=NI94F!vD7v%Z{tzemjz^Pogb0jXAbXoW67DJT6IzTeZk zrf}Mk740#ihKL46L?cNu3aSlB>mlAOX-qKh1Nt{ycBKpM>)30l#DtfT|B9zGL4Cjb6?~yG(B@1PyP+gZ94N$z^!efPKsMpZ24WI{b+4=D3-dx&K@%>}wQG`YF z$=*eJ2QUPQzzmgJNHnK&55Z~-ITJb~7nO_SS^kVbbL%Ng{!cG)&$d=TeS%9a9eFU? z_g!|2NK!AUf1v4{d&n^-57@O~xCtF=D}dByqAqoBf_eli$m-XeHEUbrA;t<4N~TJJ zI@eNSL{~r)#bd0%#6^2|gSkabwf6oBwWM-H!ZY%9KY^iJl=F*qxlo`|TZZuPQLz2u>{0XIDzwmRmvg}i6(q3pVzxE?hf zb6-Yga5-oLu5&6lYSKj8{(_tX1xZKMq^VBZepf-x;ewq^>vS zj2nICj1l>dW6oGT|8Y5IbV6oNkkjG%NuM=7Dc1MItZ~1mFzEowkSdryX-xV*=y$1_ zN^RDtCY``MSWPG-NTS)*Z|D97_gp~h+lw(*F z<3H7T&`i@F#`3PteFeml-Ft9LqUCjv`D_$I_bxPo5bs^6-4RO=G=LXlj$d^u78!aF-|Wh0P@>Do0VNjn zb3xI0barI}?%y*m2vvZl5_Y93C}AxM)Gy3S0VTA&2ueu&21-aMXi`L6sIH5+4A-d@ zphR3~rA=tL0Lp7&Bt~DqP>*Zf1+9}fnq@~uIHE2)TJD(ALu>NI`!s&M?rc?bVB*15 z$B?#&tAe?Lc)@nnNVp%Fl$#rNg1oxdiy zK39RNdKExjGcViuHozFr__n}u+3tU#o~wk=s5QVeu5!gBVR2|3AtOMTdpt-O(sP_y|hS z6MHBcNu=Vdf%@*ZBcV|ge4E}{K;BqR<=iT-mnPL9(XPubFC%J1H_&SVHj4y4Z=Sr&OH3J&LC$LBP=(fn9On-W>S~9hgX7 zaSY)sg)79;EG1$S)|p~=UrBT{*VYy>J!BPR>R&YKcBK)h?W`vY~spmBD2Gc?*z~>b0#j z+PC_|N#9?WdQC!GL?q=4lcb3pu|%Z)IR1t1?nU&JCFASwHM#tW8P8R4>0a$ zP-4Ok=ZP}bbq?YM9UjrXo+w#dZ#KOQZ$Rpzldkoi{4Br4Q>@iF*unZON$)8?R$q6kEB-P9) z>=(s)_zPZqk~8WaOogGZ|&h-8d4E_DzjiNw&4V{O|!d)J} z0f>=#CZk7giL7?3`_-c;kcuwa1teby%DpD&8QK@Ri?QC)5xq-HG?ugIg4@Qsh~5>wr=X|3sJ=w_JhpYU+qM>T4WqtGU+JNNU^0AR+OVP9 z$O*-GgeuH6`o<@Y!yJscw zCN`&I)y+h8k9ryJRA}7@6SJ;%r@Gg%%H}B?8lI$XO;W#!-uXi8*66Ly4%=Lg#A6+{ zBsr1}Cgg7k_vBv)$iXrUHp5XbTr)x4I%1nxJ?KyGo}GiVHG~^b?A=Ye@lteL2uc>i zHMB47F_)e1DR5t>k*T{l_L>^tCQ5awr&Xstb~m2Cef=24I0odJ0{4^ncz&mQ{!Aza zxpSxcnE)k%$fG;m&!hGb`TI`yDl~Y?PWPv@biC8O26ud{$6c-nL1PrX`i!AfV0=MC ziT7y(=3{M1tGtI}cPFZHYK^zJez)VCtAPAg2ie6^lbX=mQwxOlfOi=gB zHe>U--H4PL4D*gv-R*NX&+6x)CBlS4cYtHH2YVRe?F&Mk#hV?glm8))iCNGG50Y<7 zx*X{LB#rl@kW?L>{H=D!s@`@FhKMn)4qIlf#!#a@t*OQ%&uJ-@)cpmU&(F!MNp!RcOa{2Fm6}sgZh}C(&DLj+6vSw{B$R%Q%oJ!d35-= zczPBT&RT|+o1oS(^&cpqr6QVrImF||FgP>0@;B(ok3pr$mG44Fkyzl~iI)uV9`yo%2 z*$dn!SSfox7Rh8=8V>)6NQH#CIfb>Ou4uM+!WEr?1*={mES`vsmS}>fYuzsmOsYd1 z&3|I#VA^Ft1BoQ{D-{U=%R{$#r-~)O^vL$)gfRd_sqXdokQFCE{n}H&Z%nj`#B*@! zOKN(%AV(l}^SMowm)IktZ95|KNS5ff#STYAQQI1eZhBoT3L5)_1B$Dsq8pbJcsy_x z_UTaqKf#MnTW!^DZ3^QTHVX&_TVL=Hwi^ff4ZY=uG#}4dt|4#D|v`R&2=qljz zc3ihM*;tR~Bo!uWTb0#aC~72Oz$Q)=It}+x+>%b9BX$hkjnxMCCft&+^`be}1CQck z3yM(cA+Ip!RpEf6g2ArAI*|uWBwp;QL7986k3xVq)l@O~s#Ic_`CVvrguBrLh+-)m z@Vl$vv5QEX%@hZI9jkGYcIHp-sAN~s-i++br)`wTIE7!~(lQlQ1zM(}s)3f|F0W-O zs(sXsa4S+1UqmZHBgGJ)?OeOdGes{RMW<=UchNyo0f`Q>2`Dje_AqWAC^1$$2TIrtfSU=bmQH1YI?WO@ zLH)zj=b*%!wH-Qj5R^#A&!B{s>pE2d)` zG{BG$?UtBBh$$>yPaNl0Z=%fLE<>qniSVerpI4S-hn+btn#N*T+t=m5)QVer26`Zk z(;te^2T4RxIeOoYF`8b;7)cDq2*|Vxu`yC}Sfma2BTP}}MN5!&WjO94*Cy#yE-30p z>E-u6^q+C&U&$hf!bhtQA%xR z6kba?wAkkOeea21FN8sp@R7Sfi9EX()OWbVD}3>^kB*xHO3cRcK^&;G zR>ttkx*}yf`CL4{1XAu(A7a`=gN$G4rO@rZTY zaAb{uKJgBVD!X{wWAxEfdB^IN7fWwLx0Q!&(Js3|{X*ZAJlsEFY7y>6`{VUnnziA0 zA{^YY=GfZG__n1;dc1mjqmqj~Z3oJ&tpfh&#ycFY+p>~2-mx|XJoS41emhnt9Ior) z!P=qVLX-HW{7Ox(TUkpT|ZNdcu9O?!23{_Y53@(!99 z@uQ{@{BmS7B=xK2@7i>Fu)z}q?6>8i}zmOmY%#47pILueuC zK+rm|j=pspzJ<=iF17Pf`JDj7#)_)g2NZz5l6!Hqn^@PtP+RP-AUX&jayqf6S?ns- zmcVGm`8X{$=M2ohmsTMHa@wo~K3Ak!A13Lm8#UDGa%qE~C3vl7#2(@ph=mPp-2$<} zavBZ!L=+l>dJ&ghX^p$+5j)DKc7ldSL5xn(Xc4G70Pr`HGAvSgP@M$vMXb7mu`#_ z%9}3s9L1u}@tz|G^#W8ta^cBOyP`efW<~qb5Nbs|Zvjfweabb#OVBBiL-d;CIEtsR zM-Z0?ZA+uwc+`bp61TV>ty4J`d@A~ZnPf~*sqpNe?nA-&GiPxu&+$f-?(#y3iMS!$kfuck;RIWB>NijaaoM>87xkVd5`v^S|gEgYZ)NT1^XJrq~KWoeG)M+U!Xc*7W2pXxUH|Pw)n#hu#KN}tRGg00 zbEw~`|^LVzL4IkZMOHTOc{NjM@(4F(rp#zD6=OnGt;vh01 z5&Nv!HuhbUZ6Ge{ZFJuDV_;zkNh}|U!LhoZlbXMglqxwNnf1AcpAI8 z=uP<`Cq!d<@@Jv@t(iY7oF}4UQy8T}M1@*aP5N9q)=Ry<4!~D7doB)?JN8-vQs!3A zI2}v2gDjU_$rZPnmS3_fB+-u-oEtg0acy~Lq#grT+*@NA?&Z}wDig`J(u?%lIR;lSaxhW zN|qt#a%|enIqRppa@lKz z-@VBt_wS*Z!I}iV?saNw`@EpaD-+t<{(zm>Y_vCez$RC;dz;!Vnf7B=%b(RBKeNNy zdiR=Yul`Qku7cim)oz33vlRI(LhY5p&m!sPM~=C3%ahXxSAgegu7Fjn0h2*MR4W`-rAojydn) zOJZTta_XmRB6`R_nxmogv{(j)p#I0XmrrSl-)}0Qg}19o%bkS-u>uAmEW043f%H&y zFE3z;BCORjhqM>Cm$O#QimshrcI!W^)_*^Gt{NwV#jnNJ3~;HFB3)`~6lzKIYTAA5 zihhfB9glW8CQv<~&;6KX9}+X|!Ozh$?G?x1MW^t|4(JLHase!N?z7v)#d)_eLq;n_ z3nh*@KLc5qkM;fH{2Nsq^Pd6Wj!jj9y0gh8G;^MN>3=k!l?w))e>OfFyRmP?IOg_+ z0`_0WobDh|j>JJx&*W(fF+U9PW7uM#ZX+}em91JFZG&^IW53< z&;2zg3XM*9P9u1fTiu5qJOW#rkn(l33!PKt{Bkf!HUh4BPF=zk_WsTQI@RwOhV~Th z2OX&0&w~jaGzj2l=eFGB{6mv;ks_GCF%`M3;OiySinnvRd$gbDCvBn%gOz#b2CC4B z*mvqG$k>MJOZ7u!0eSw;d87gH(mM^8n)9~SY4nm+&N0^m!}%L|fddW=7nwxkmfRUMyK+$#^6;%Se)Lkxhr&oswQSnnSAs^-}-k~Y@)0zKY@GRL)6z2aeqV1T!9BC8{>J!(w z7IR;Z#FGoK71Yp2@QBjq7_{5z*hC#Lm8U4j;oMAW$nHAwkb&GqC40p&ocA6$2Jwd` zPy+&Tz~Y#D{hD4Dj=6u}i{=XFe#93YcF-HP%^S9wV6#%;86Pl}4(c^fiIh!xnLTa?&c_O{cEqB3RE}bzgh@w~ zh|#&4h@RLAvJNe4ae~%B3jpYF0MVfGWM0mjK!ugVxllPHd zah9QKqPd}dVD5=oGo0!*cj4%Ai6|-g4qsSR59%h>T?rUx7H`qsYO4dDcNO*wKyMF- z*DoQoy@v-93S56{;{%u}-cgKqP0uHExHc0p%Hf7p9kxmx@HSrPX&FF~smVV*?Wrbe z(h0>o5<6U-`6piGiB#!vLPZPt3qJV;z5h|N^~MPNOIN8M{a=KzfUt75Fb?)Wd;|%a z@4+EqVdcHPmr90~im(DIVCvx;0+7A{n+<;=lw0hJDE&Ls(jVH+3gs$Pu-PjF2306I z*zCb2Km32?Nyz_2Yk3HVQlBgqjhlnoj6Aa|9YF0RJ};P`V~UoK|6pnv?qWXwHYhQl zUkU0aKi!1;J514n{9mk(I{CS{Z2Yot9#iqS3tS2)F`uW`f3%a`t~`&s_=VjEp!zXy zFYX_*=I=lW+^?X-k85dsaD$&lV$>mG)dG}w1<(aldm!w}Ku~c^O#;=9smDOk>qxso zyWJmT>NQY9n0gP?V5aEhpwLWXUZMF6s5bmG1ZfrdQVW#8bpVyfPwDqa;wjBi#Z&4P z#M;LZP^UTew?X~FR15Ul_p|H}P{~Y<2PI@*1@$ZA-qv}a>eO0L)MVL}9iV<^ibgR) z_P9=+)~RApzcQ`@R)4o47IvjND6yK|5R{M|1Io#9c@2~(-}ga14W3Q;6x1_JRmZ$u z{1EwWQ1pt|uJqP<4}sdk)~16Z%{Ju)P;W5rQ&6un)daHw@gwF$of@lCt3j<`+&)lU z*v2VPBBss|EvC7kL`(}nk#E_Qr$8-bY6B?YYr`-X-OBn#ffBKw42paez5!|*KivgN zSo;&yEzYYepdMh{U7;GUKB$VwSG&>}lz5s5O8E0+P{QsqP~z8w>p=-Gxd}?7!;Th6 z_)r~Cf)}Url6BsPpkNArU+C1ApoG4wpv3xFKp4)A+$}e3c<4}gF!vP zR0^mCOr?S>Sd_Dg8mc&eUK~uQ8PZO4to3Urs51rCba$Sox1`GNdvN1+NGS?yS7aya0QE zV(%hg4JDdBM(PrRB8gQ(!V#o6(t{O88+^8|Fp1C;=_bP{T~bga`MHqvvgOv`_)OC! z1Vs|-g+x#}C8)JXPl}gBx-KColGtL{7$u-jdP!vH5`rR$ofaGSc}a}cB?LthUmFsA zMXWyblAu**8&xkwP$Y5KkdWy}_mUW^O9+Z2jtdE|yh`+v7^h1JiX=`73H-;0(Dd?3 zXx|_%6HFoW@Q^MgD3bb(c?|>0DS>V1J9-kn(~EKZ=YD>Q$||XFP(p%GIk>doPj`{f zO^ZMOBi*F;qNW(1{&ZjdU+N~kl_0AHf4Z+r-2$WK2bHKmn{!6w2kER;ir#-&uXkN* ztwjT$5A##9A}F$AL)O_8Q99`A5HtyTDsWUff}+w95`-FyOAG#VqmdxpA$BDs8&*+| zDQNo5T7^8#vxI)q{T9Jx@TcD)^ixgvAL}RG)XQkWpMLsxBsL|$PdgOsRSubYt_q6s zt&WhSnu1h^wiY$zWz85q$LmspBB_RcrJP<;6Lcv-kyKM5RXbFvon2n3ogSjp?jNkw zhTYn&Yn&os8a-%XqOL(uq~TsKyTN*FduSr~oTN($ilk`Yq)n-H7fSaN`y^YcXs43# zgi3ZeOMp;Xcv*i$*CQy>6DRc4qP(i8gl37niop}Jo)M%>hAdr=ph(XHLJtZp=uo*y z1f;mo6C*B3#Fk;Qu0v3SbhD0z)$B^O^f0tn=#UXKDTJIP zF0+nB#FimP*C8lE4ih^5M`bxh*CQy>lP2S0M@w2&2|g8gkc?7!nth@Pv1OR5>k$;` z8OM4WMujO+e^pc(Zm*=&%XVN?5w3*vudLYHRAE_7OI>^uvJpBJ2})=o)BxDffY2;a1jtLqUI>DkSC8itg^_=ws7oUO!n(dr5uX%rOsfRG^6 zNr|Knf4UC{-BF=v`Kl-pzv92WZ?C0~PXf!aSoMSv0-2t{*TE%>wb zov;Oncg)Cz1e($+C`ygcOFEw~Mehk+FU0h`DM_!$8`9Yta$4{gU)n^Eah;bhR@LD6 z%!39|;)0^s|87W(63~`j60>y)L6O9tLc*s->gy$yuS*Gvq^=4n9?Ll}maBxZTt$rK z!j#%ii?Q4{UK-};8U#feZVC-SHYKPHu1Nx3%S$Rrml7076|)r20@6VuXcF{P;Hc~b zMV=@m2sIj)7X0ZBL>q-!fP`pzsT2+Sh6SOQbjql+oIkx4SZ}SSp_mmlP%2)kaH{;l z;LYAG@+ruYcN;abiAWsl?4{>}peUu4h0Z#GO4!&yCHS;0S*zXgcuMIublrn*TIj9o z5)|pWOQgGRh|)J35X+vN%y;Oz*P3aXBd5O?VI#-pVw;Aj8u8B#) z1mBbOTon{qX~`0`Xq2BN$|eR}dSaB!BP=a$eRLgyB4k@(m3lAP;{WO;LF=HR{tJpE zXzd&=hL^+@FNuD-grG>mDdNc^;R^b!rahie4jFM>fp1#quj>&M>FF-?Ob${eW8@mz zCR_>qBq)_6l5v?m(tDObBT118L6NQ`BNa05x{x9nXzf!-2#O^7u>`jZ*`bWnB=|5{54`L;IWH7P1z zfu-^l6zLaIgd%U%f=^<%^IaRBeLXLI1OQzIex`qq$zE)6p- zZQ_Iy6{O{4O`e!#eVmmsX58fLjI4;Pky9haO_-FE9g&_fWn5Z@Kj`?0Q!=c;?)V8y zH)RmgX^DMSMt0V?471S4?2(El63hQa)*>b|W-6cCq=QG`|L%5GdMmyBTaxJzLJ?`1 zBPUN*5++O;nK>>!VshHZ32774{Ul17nw&jyLi)(8^oWx3X=G;R#55|cF_{xbjm(S~ z3w&lq#OR4xFg0${sEH7^rXMm7neCQODNWy-@{*{Rt=KM^f2 ztrp*xW@KFNk7z=_2h4o{H-zEw{1N{oJ~yLhe7x%lFsMm<6`$1E48H1E2o)gT#X^8@6jz?%j4b9*FwqQcQ%+xMz z{#!ONuj-b%e>D5o6@GQF(q;UEPc@7fcKBl7^Y?z*pjY`J)4T0?dCAj%RJb}KrCVn8 z;hSHW-S6#RTJ5QI)%E=9gT3F48!$fl#El_aYwliLrQU~*y5FXRZA@)f>y4kkcy87C zS3hfU>%x0yi;gw@=IZ#FOTxBnOsMzYueRrtYy7@(unhqf^}2eX!+KK{hn`}Ylb<(HNwd=zn0}_AA9KCwekdX^s9{bX~Cig3c=G5&!@Y5m9vi`0(;?dM@ ze}404(f5rPH(hk}-Msb%!#`f`?_DtFQqv$F>G>+VlEv4hgE1KD%Dg{2uoX8rXi~x#+6fE}m}G=bc>{PxNVVq;t}V6T3fH z-|k)Qd5w?f1ZL*-KKbvZ^a`5_{u=e=!cQ0eaU!;-_B`l`yW_s>)T@i8zg4$@`5l&| z9gp0+$n&oAv5=OpUnqaql^^=H5C8A+zwf${cK*eT`F+CT)-HS69yBF7q{3exzL0pP z+yi^G@7p~Kr{`_zy8QmO|2{hQ$PX`8_bli=WzY9(HT|*8AOEt=BSps>Z<^7hcK1oc zdW{K7SP=PZWS?67o9*25YucGl)27z@d&QA=8f-XOcdv4PpQgti-Qs!1q2)(|)|D&% z`9)gOICn~9;^A+98oufIZX3_vF4VqHeYf+tYRwmRnHIMGgF1zOAAdh}T}axSv4h9W z+_1XPKJVL4r_BCk*u77jvG*F;u*QTF;TxI`-IV!S^YY)mIi$|QmtRe4RrT)ayZUs= z=r{JOk?UqGj!3Nf?fZ>xwmen0RmZmZp7cKW50uW|w-sLb>a915(pL2NxX+eXZr{`4 zvqzs>RO4D?$J9qh{Pok4`>Tw2tJXa&M--huu`B-G4jykx92+ z|NYHfv*Skp^71DavL{{bJ+1DPz=chpT=aB&vxt9|eg9X(b4%Zyap8@7S84g7m7iAL zhx@mww6#&_&b2dAR;*5aBdy#UIkAV5EA4sgc1%TOQl~$<&+oQAEG6w~#^VbL&+LmR z%=x+d^}Z8r!!`Nrafc^N8Q(okD^Fj4%q<$wEhv2Qd&e`^tT@>7??amXdIS3XkbGfq z*Oh++R6hKr^S25S>+We>WA&Mfzx_G;tH@{aCdPh$`-zO>&+pvWyx;bv!~0a)YrA}S zygmHC_f`}RpLz1xW#?y{Ui{tL6JMKoPp32Aowvud`80V=o9k^xlH{d*4dU-x{4B{qfmKpVsUe^3cNcnPI`rGpDYKpL^_V!x~Grdz$|F?=vywdhh>i zVU@d&hVA|1yZs|tCRBOmeCmdW*N3+6@lc1b14W%2``*i&wr0g^oigjx{W3K(ZNK0~+-TOWQ@2-duZcLktns9(_QCDkr^dEeocp;Jf6d<>U%#U$O0DdQ*k7e6 z%u}#StG`>{Tzh4D$M*}g@2}ea+i;}cH?Dx9dzvqwmzUu_y2^d&_qZD6`@g?I`Rf=@MYSVcY0m^edn+54qG_jcgg^iBfh!ld|_`6KqnLp-_ z9g(Bn2&o^oc-Q64tuog9_~R=3mxE4q-}sZ#m=3N}tNz?l^VHb~KCE-9((tt| z=j^K;X8sr--uKM5s!s*~n|9ECuJ}^his3Wge5z^CbBC7h8~gH813nLF;AmRDVc!#} zSy|VbE*w$guTGDi`%W9c#HZoV(H7&_6dA*pHE zQ!+?~hCa4{VVb!9*&;n-RL+>le#9t;%NDSiNKPcQ)FWTS|6s+? zOxYGd8zyM^^3$ldkmVFJ@BE?Jt}TETFG$bOo2~rBhjPUhFoN#5%HR9BA6v9|X$zn^ zE?MYY=d}l|w&#<_$Fot4Id3fQ?gO6J=bs0mogTiakOLki^Fz*$g!BfV;ZGH2nz6n$B z`S*&gm89gfuwoiB=1JVC=C_|du%i_d$(TjBQ+)m&SRX>Z@oB;sdQMMPzPTL?U(DT%A%CVP zw>@7yWyLgQ49zg9Ha5Ic{WB|uYL*SVIx5kd?l+nlXl6s8YJZzIJW3V(wuK zE$b5I>FL$pw_>6hbLVt5XACWZQ;Sxl_K3CWxtB2oxKkZ`YU(5;&o|C37~`Znu2C_-ZH)83UaRLdx=$XNH1 z730DaTL9HEC{Q-6ZkA`oxEV7McPfh!?pyV(m~M2=a5*R~m0_Ai6$>{^F80u|p0ko+86sV$AoS!|I14SDS1p_`ES&uo&S?whs)bWcM1rFv$hH~*jO5&> zXqx9rPJ5m6rbTL(g;QkVIA{oBigT=mcaNYe=p zTIobsIQL6V16}Gt$*G`oW=Kw;&RHTkAv%ZVm=s#*oV}9MROg(Loa#D<2SAXzN9WY0 zArV3iozqrwn(G|;xh92sbIj1D2i_R&M9H-8?Avtk6Czuv-5!^bbhUE0n zISnPJlg^R94^mvbMinwx4I-FkJ6)0*;y!acZHkB+IKabjB$0HHZ9#%Kve|K-bx z)Hs@AUO{20SWPvp-7!Z?mO=$-=Fm_;*wTzeX&haOa+fiBj#2l_9L*GO$24oc+k$DP zabmSd)4IA@it^ITpWM-Z!2V=j%gK#oKE%D z(<%P$Vj04`B_QY8U2h%aFs4TuPb720knS)6GYv#aMi%^pu zs2*VAv_jfvnm822cg!3}(WccNh?gjfHi!>xH}&EmS6h3Rpzd`pmTECAoi;gg=!v^6 zfLaC$DZ_{Dy^r5p(6>oc)esn?w3uW_C4y_C{|drA)U=?V|1hMUlTwUPylo}1lxFLj zxUU@TbzAGD6k|-bdYNqP8ude4L+TeP#Tb*V-YgZ4JB7FNdjE+Z3X3mFC^aewj4|0t z2G>Z}U7zeNZ%8$lQj9U#>cdjr>1w3gN|I8HG1=;CvQ@C}v5|(ldXOxTd%)! z{I7<(t;JG`F(zC6&9=@IlryA0l~Rl`*&1N7)#~vD_chjSeJ7@ z|41pum~0I)*`jpWbX$$8;UNNJOtuDtYm`^|gCW>`t(CG%N-@S{YY0ne<&~dSX@gyt z%8*iwG1+?1WNX+JPb)*}Nh!q`ldYj9Ta>N{-PRXUiZLcz^rq5CmviN-{SB$3Qi?Gq zTfTRT8dCpCDaM#=JRW@4`a_#+Ynn zf@{>TXRFq|ZAc|aDaM#=jc2KvbjQ`8(}7`z)D$Vj7?Z6DCR_jhHM5H$wOmRu#$;=v z$(H)ghno$lT~dlMCR>wCwsJfDRNs)gETtG@vh@f{k#A6-zA{iRuiBJc1jd+bWr1tt z;fLiu`M{9sD5V%3;kF~(#oTbH7ok9c+NXNFX+lwyp@R*o(O zf^D_XZM`O?7-Os%V@$SY=u(ufCO-}P!jMXqQj9U#dX%N8 zeqlhVw7<4_%00TRN2C;EOtxmSl-5Qad{pgWNIfH^7-O>an90_gkE~o)L$~#rlwyp@ z)-02)hkg!v!jL*Dr5Izf^*BqB&r`Z?cA9-pbKTZWDa9C*tz4GU($(?k(oYPjy0!5T zAs3g;WGjz20ptXf^XDFTFWQjmETtG@vNfBfG+WPAd!W7{HA+e`#$+p>r6^rw>tLq? z6%46)Qi?GqTXRgdnm%7p)sT8mN-@S{Yp!mK@^H~4XV$%X9`2V?j4|1oXR>wqmFz@A z>bjI-jLFt~lP%lAs_#VVwi?vILj=Z{Y%KuSXrsC2r8J)>Kdh+R z%92uyG1*#ZvPFJqNG+36j4|0#O}2jCvizs2x~(lziZLczPnc}A&V24;L+YHAVvNaF zAxlNk9as37O%n{M@Va0jFvetS5x7Pk{`X+x4u({mlwyp@){`tnkIB}@3AJ7^q((_8 z#+Ym^Hrcw-Wp0=urAjHrm~1`8Qd<4$nVa z3`>!3P`VEHo3qi73aSSd0%J_JmVj&I;jKx3E;FQBN-4&eY(2|TT3!BW-j)zUYOs`I zjLFt>CR^`*QuSLyDo;u=#$@YxT?z#El~r^2oT$8Rt5`}g#$;=m$=0n0U+Zc}MbyVb1jd+by$G%?fQpmas1srPMn>tj;-wU0 zOtxNPDXs18{CfXa45`sliZLczFSC^9hpF9Wy<|wKQi?GqTd$aGZJYV;6hrD0Da9C* zt>rAG`Np9HTT?^oxRhdy$<_*!t=hi^?lGizQ5nw}W3u%sOL>=9YdsH}Ho!v!#+Yoq z2Cm`rpJ&{hYDo2vQj9U#dYz>-TQqkF)oo=;DaM#=y9)2>DaM#=y=AiX(B~I=8dB$^6k|-b-Zt5KYSlxp+^yTH6oH2bj4|1I2VAc_MEx?P z+D4F!_?Ot`@y5I03MqPCShP8%nQm)n1o80iUU5OnYfbMx;^=F7+ujPj-;m0Sz(WMa zn9}t=xMB`V^((XU$?3IqTW>{xg}@k-tq;I8Y`uNt+7Ux)M+C_z3S&&RJ_Og8FSpyh z* z(%Ov??Of#yDUXz5jLFu=ETz@uFOJTsVn~gXQj9U#`ov_b;tLm(4XK4viZLczpPFp- z?D*!+1k~v%@sqc zVk106V2sJu8gPwuY+9>qrQ2#Qr5Izf^#x05<#lV)zz9RCpOj*Z$<|t33Iz9+4&Byt zDa9C*t#!H-dDQy9Y-E`c`3yhldTQF8a_XJ%9=ff zRQ1NJN@0x2)|a{zA@*K+=tFp(xnt*Otv<&lvZASX0@GfNKKbgj4|2T!ctoOI=}h#?+vL%Qi?GqTU$-GrVW1J zVMFS5Da9C*t!*q7fqMY1&Cd;)(oxUDFQgP>Ot!YOl$NeKkCngMklHJy7-O>a6-$wC zkgXQaj&FCrZtF)W#Tb*V9VT0^%vwFxkh&(N7-O=vlcgf)jw|n@u9pp|O4LjuFvetS z7r2HW&aHek){u&lQj9U#+RajR>5gkvqf3#7R2M157?Z6%CR=ZR@^v#qDn&{$#$;$ciTDaM#=eQUCHU)5e; z8d5!^6k|-bzGEqBqbLvmsdDV?&bqDPQi?GqTSrW`p7=fKJws}Slwyp@)=`$y>T=_u zTNftiww{$zj4|0dX0qkT8(ZCw`bbJK#$@X_OKEwS)}-qkk8W#^lwyp@*7qh`i@*Bf zVMFSYlwyp@)(Mu<+WEIG#a1w+s^5)=2#hh=`T<a8@R@pjcmDfTg{~uV@$Tru#}dE^p4(;>MEre zW3u%-OHrRfb@_!?Uh36Dw>3mcF~(%;tjX5wl&X0^giLX+uNmX(`1RldU3_(tLix>T2PJ)LT-DF(zB*O}3to{Pr(HYMqo~ zjLFuYETyGu?XK6?8B+VD6k|-bE|_eE%)eQ~kUA};7-O<^(PV4luxnw4)HNx^7?Z6_ zCR@#ZYm{P0g+}2a0%J_JE`w_e(DLxt@hevuQuU=2V@$TLu$1P9Z$!Vh#*k_)r5Izf zb(N*4DNiBsFwz(}{-EA5w}iW~rMjRS$OxQ^JoG8d8zX1eY*osaxRK@K0$)sJr@uM+~V4 z{~zYw1U`x?Yag!A4TQCW0)h)P&??9lNWv584vNm8D1tiVd(OSL)~-(a|Gn>jzVH6hl~dkqlMIG?;l;JN&QMl5ymL>Gm{e0Qt3~4cmxO@UK4D>7^VKh zqNJy5ZLQdbtSh$03Ms-ErP`TPUmPjC`@lVqX;Mpt6k&`~ z)Qq(<+%|S~vnF-BkRpsxDuqeWs(?b5yyZSkYM+oIj8Uo!lMkXQO4*r|XmHYX8O8T&QuRWLFh;4aOlp#_RdnN045Esy zhlLbjj8fg0l+sh~?Q(6sCiSV1B8*Y0JCkw>TYrCX?{k_IZWXdX7^74wlNu|eqIay+ z^{=@?iZDj09!$z1q^75xenhjiQAiQSDAkim4G>Zntvs+%lfsQt76@aM>cynS3#n;0 zWcxL#_kCk!v2vjvCvMm_zR9-5aa%)0*3_Z1mDUoNBwW0V?Tkh(GUAd;`Ngd!nD7^Boc zgH&zv*D+1%Y9U3KE>cNFRkX1oQqEJw^pq{TvSCstW1PkGJfl>P0+Q~9j*^nf>beqm zyUedGZ>);Q%thy1h0XkSddQ8Zfit^?oOBvkAu}VVJ`xd#qDZuO8C+bJ2bv;fjm&o@ zTxcq>-1()K`*P*U;jCG3)ii5qjZor`R7IkZ!X;OLD_9)n4|ubvt*z6j`v#gIiu`29Y!rd%m2AUK$&pp?oas3gv zIjvpE*}_=Svf32}2C@<=T^Xs5lykNx3fHJh8l#a0MWQo64idP`pfewSZVe37IzLB& z2(_>)SXHHEk!r1SG^{Bi*uVwmR5nyDsZvTk*bsz=*Gi>PddaUV#}(HW*VYMZ!G_Cg zYpc;Ic(W*k&sd-8c2+dBs@jH#nTf=xEI&Pz&ap_m6+2K}7hS1F2rN|O)Rr~s^6fzj zH5CvP&Wx-q(shOW(z-d7_0h)CDnuytOvx#&i#FCPxu1oeP>N(5nE4G$sg>o_*5@}? zMJwy7L|4%zp=c$X7FXw!d*L#L%@T@MS6|y$BN~I2UB6Gz!lLfH9IlUfiEBAVQ?64I zjlAhkXGO>jvYrFOqQ>A!O(%ttM6;l-ucdK=^1uh+s{5WxZCuyj6rt z>r1OKzScJcYbt6Lp?q|*Xl*^^m#0o>N5Vvu9u4lS(iK7Shpp>2%IKv=F>lIB`(usO zyD}OnuAN(19`P+Jtrs@ncv+ivD%fN~mv(+6vMicci?&=@cBQYjrUs`N`;oqkiTvu% z2*Ci4Ovj^w$lBc85EtR418wBjPvsIMUKSELSf9%rPuE*vCZu~CE33*a zF;vBY`ubYE;B2~WAHld)fQCe)wo)D8+NvtiTJ&u6kvYguE!G`0Zz$+ln7?Z4BUVvb zt78>a6D>j;(aVN0y~DY9HT4^F%mU1px-yLD5u$fnMXC8QT0;S#Y?$|Us*SivnsyZL?uKM)MI2W^ zh*B%XsE`t&%&WY48sn)tI*L~sH!X*ZlBUIszEEHktp*asl~Gz3SjO=IQ6Gi0aIv`j zsS4v_RGFg6s}ou3Bq~%{T^Yrgr%#G%(9=+dF>Dq&l{X?_IERMiC5;sok@|QOYQh+* zgLr*^F`8iOs0wwts865hiM+UsQu(D#$k5g5dQUH=Uu^36GCI4Ju33?*8qw!@6c(bG z{n=7pFU!_aR>Eo-iUG!$OfJEM&Ha%_@!VHhN2*IseM-2Tl7CYt=aDj2I#^j7lcK9f zT%Oe6nxmere)YQ5>MX1)Evt;KG-^<@ih8NMx|A)3_0np*KT=j(kD=I<0yRFTsuoQR zA40Hhjh4n~3}+WprZ!AV&W`zXtyJ5H#hgB^=weZ}ZWb44`Z$yVH3=+H%7fxV3IXL) z2`1}+8o$wC@p%TLVf|1ezO=vrY}KM`FL7LTRL~){9>yRlNg?|vPfN&WE-TV%A`>gU5UA-Y*{VJ zn60j*GPZzX^Gs=7UDZncSl-B1L?ZF5vIGZ{A-f(ZuWX=x%n?$gMt4%iRtm-}b7@{& zEF}#RXXzTAHn^0nq;#Wxv7l*?Dk`JJSZcB5yi{7o`j>KA&#xzy(-rEzgveb1h70x5 zl`0d(j#Ok!RBEmyw}|f>)%%u3*uGE$_Ic_tgq4&Lqol01_R7kL-LZYnkiZC`pT}>(rVzywmN(!2T5tAqt zrnRn>E=sH!R<^9Pvc{Fp8@`e-D_o&09qDeVvVLkv;tZcqJHsY*~yFmD;35I zI;);xLRcw5pWrhOzx1=xVup06hRxm`YT*bgB`7e z(<&<_gq0H2OhP3l1aEZ{jP2Nj;Z3+>4A&Ds`tWkor>0{}r4=m;|uHiZ)zWTD3*Bz>P>NrTVQFD^-SgD+Ov#Qm!Yg zw8VpWktG@^Ou9OSaczl)3zN1^VOH4`EuC)iVW-6^k0ykb5?!~~F5IG)+7dyn)T-63 z?B!S`FCJv2O06h$*T_nj1*$`39i>avrGl(f={BUS5~PpjZNao$)&ndTZh8RMU>fc8 z0L$S}58xV1qnjSUHFN;r8cd^EyoL?{R>i2>zq2YveRRj-$~IreT2z#kGBn7}ck`_D zCnsoSQomqTwgas!SmK02{cezuHL#TCXJ9H#&cNiz2`&SZBTY=jw6^)ASk`d_C~jLy zK;!w`eugVPh9|-*hRb9ol(CB8GFb^_tYSoF;8MWL%x z7}qu-Ic=T7L^hXd8=E2>dX4}Ywmb#Q$P+-*cBp`wxdLq3EEQlgSAbV&Td4x5=O{&^ z=PBJ?&*Qj>ELAcPzyR0#(iza_5Hg z3W7lpmN~=|TkH$;*;)0aE3&h6Im~nCLZ77tGLu1vbVVW^ z#plhDbLGNdp><}Iisn5-k(=NRxI_M&d|#pLNocBsOaBRnY5o=g&mpd%`*HV9oN<^0tOoI{g^Kb8k-&f)_WC<%hYkF(5LM8h z>-OdPL*AU61cL0LDct_P zu60q=;<-xnIc0lQGg;uy$@S!heZE9prnUxm%A<;`Dj0SL0|maqe4pPvXJ*Mvc~*(| z)V+%E=D2-@zWjhcr%-{Q8Zsuv0bx3)(3@A_3whkjuZ&wLvc4s58mr3vh3;@}z~l3x zsWSi#FZ?zmdYZT;ot;%(+0cNy=-FASpf~6a7UX;L@`HIW=3~PlQy`X>$cc(Y#}4Hc z1OhVyLCuKO7^WC@N%~I!6T1z+TTD2&l;+ic!j^C@{4T|#{f+ohz;pMKGcCN> zjPrnh9WZSIN2;xG^k&IFfa%#41VSQx!x7gXm`R=BdIIMLCa)7*FW`!SDd_}9`YM5G z=mbalegVvSGfwC98xZ!Q;XE#bMUUI=NQTj#-3e!}9nF|`~%NTAPo@`zq9#&rft(Xy_?8TFDwM(v$ zrb!p~la{~%B|bzwNV=njK1j{~=U3uMmxkJksB`43QO?4;C_UYV!QJV@C&lpy2;O}| z1s2K8UpeL2A-Q>5YCC&_jD2Wu7rm$_$;~^Q^S9I6Xan)HYiN#a@!6YCwl@xzxo_xa zQ_+`?04Qa&aY?R)DdY_5GiNhZbPOURjEcw(BTN=Q$%rpE4L>K> zM6Wasj+g2Y3)*?&kcJi;$DRosy|QYT5G%Kz4-zi@`KK%G$mF(E!NjP_zTImEo(p~) zkX~l9ODWyDNZlrONymvqBcKxKMG{jPPcK2^tr9K*!6i6F64{K$=JaV!K3hAZwN7QxrInjV4O;T0y zKO?{S`z_;^{NbtK(3h9~yr;OmSN&z{`ZfIW@UEKED^Aa@cK)k<&YiUj=iG3gt^S_X zzpJ|Rsw)=XQJK>1hP-$BW{fqTAH6Ye?A$q1YF9jTNoD^rzw|2SciP%M_``2bIh6BH zV!f)R94V@tulm=$w+z|y%H7M#n;zaa`|k&o+_}rpvd2}H-%(>vX~!G1HpyKPDUFUx zPv4j#t>zs4Y)MVrmO}HTG3aMXdZEph(q;tUOh5b4NN7u;njwv2-YFQyDLsZ-f-Qww z2%$rt`B4Fc)?+ZZ0z>shF>SkU|93ow+N~{x+6`fv`kwK6JcgRFEd@g#!<<-o54yV9 z7S+5hh594KJih#+8{;uO7^Y)A6l7ZYqafF{jX7<FTU#oI7Yz z5h2Ae23HO=Q}K}mg!JI2uV1S40ZF<+ND&6F)aq70G#By@Y?G80+91K-52H7FDskO@ zb;O4!7%TCLiSg}H_E4*JR47uqJb@H{d(~R3xT-<_iY-oYp*p9us*$eq=WDpYYknO^d8CP7hC%~>Vpd^`$86&GupGyO?KmD+n~zsU@#-BV!lc+DhTagi zVDop0d4%BsQAMMc1FN}eAm`0fgGT1 zQ|1SPfth(hpY`T|vf#+h!is}!|Bat8IbC<5?Ck7HdBW7mQ?x7Pp6p6F4-@Zj(IxbA zKe1@$|AQD~1O%5i@mI>vBQizwJ_ToWr7R=z1>m~U(2PLivDFnY&ApR>Q9egaNwC6= z2R{g0lh8;17|!B~@HYYj2n&g>Fz*KLPda^xuHbejsc$cE@0<1M#wJQk7{4D)`u=NI zW{<)6RsX#!GrSq{Kff-+HQ7kHHRMX?mon?xqUXplzbjpC>3Rf{;jXTSaims*>zk3= z`6XplpJFkwo`3!Jf)?11{sv1 z19XYv2_pOL0|w#hD%QqK(mI6%yRwh`(JH~tuHd<{6nJv6d%;AY-l7CPf6^M6Q`AG~ zViZ?PItl6zO5k%RNpOlJD3dnzDrIoRWu;RFKkB)l{>iDQH$J?lZt>qQ`sSv*cO4(^ zo^yECkr&6VUwUlh@w>m@_};z^o7$fIn{xiumo=-O{^{xsilzU1R~0m_7=!+5fU3Zj zLZw9G$i+Pl#Nt=z{HlWTPOV|b-A}$7k0EJW3Y8sc9P`G56FCMa7AtgRtfW{z)x&aQT&41B8p;I)a-XHG%QkW*bWr;BduIG9 zhp$5=Y2KkG3^9~f3XkxAShF)J-FQh>wACEh($;0WgcQRVZ1F20#TL0Q)}+1^QVhe_ z4T3}ej4L&MwM65gF_6O?zAR#I_k<($^vW+@c8&Pp!+^bT#1>8FSge=uqG1hggR}XU zmU;9zivAU5WyL{@Ac_(zF8%UGiPE$g)+{Ei`Xz%o%4)TsXy=CY($+~EKQUeGck{Wt zvsr)Qgo#u6);aBu&tbFv6%!{v#94YS!Ng+`SkcmpZsY zYI9bzIrRkXv&|f9g?kw3ejK{y(@=gu5MaPXLog7Y+zCW?0$1 z2mE?q`qAYC0;Sgq_Z0Z!f%!z>60LI1!tgNwgZP-UNE_epwbFMG`TYYht7tn9f%=gZ zE)5BK2bj-kHx7a32P>Qp{AVyB{e&L{Y6e!gO^E1tBxR4 zV!LAy_Zcw#TnxrWPb+%bi9L?1PiAAsp~0SE-jN22tN0w&9hGvzl8@2m;cj=&|#uM;|^ z0&|%eXK_Dj1u)HKoJINF3(ON{oQ1wOfqBo2GwGxHJq65wQ6LaH%I{EMMhje`{8D`c zfhkQw-<80u=tLj&-&=usC<%Rk0p_Jn^ildg0OtE7^tA)i>mmpsbd=vwz<30%qw<>x z%-l}&QGOeNX))t0>h}R){$j?N>X-D9tIf~MI17EY(URoAk3vWJ9ScmrjI+>J228CP zXOX^EVD2^JEcCqu%&TUcNgs`WUjTE;jI+>p7AC_HG$A4+$}j2j0CTAsXQ8ham}|^9 zi}c+N%tL0Jg}zqGn2rP-K->Vbm#lhByhAmyfO*g2;go`0%r&A$v7OILowAG;hwg_nRfLa$GUi{ z3HM*y)q4_&jQ-bl^{Tm#iU0Y=o+P&{aHYyEQI~TrJ$Mm}os?tW2Joyx?2xB5Y-`Q4 z9YM|{?D(A(!Umu_V}GdC@0udVUTq&h7d1zxW$fXbf^uy4)_H)+v4fnkm2R8@*aEx) zc`IWNPTlJ;uJhraa?v>)OOslXxni|zi#rnb{63_MRb>A3$XbZ zi@IcbprT|uHMuGH*`fq1Wv$D}I6nq5_QL+1!Zf)Rg@Q~d z$xZ{sv(nFl3?T9Skcl)Tz8^A?hQ#+nCeo1je#k@`65kJ*NJHZLArombG7vl_H-Cu? zw0cwI7}8Hgp7EL}w!2(mI$yJc>ZW8n4f~^6y-fr~Ub5}14P1aTyA;Hc)^m1g7LK&S zw@W2B<}vCwKwruzR^eLvmt(iD2Or&l^?`4#`oI+42hjfhkNSYvJC|d;4~Q;d?gQzj zrmpq@bLU`vz^&^8ltm$0#mdX5@9h8caMGLpn?8vKo8mJ=t?9u`pX&>1xU5_KLP1k(oT*v0_(d zKE^4Vr)6L)gaHskQ<41IGWG{z-+5wRd1BwO6jQdt752hmtH-2w0ASTdm?c1jhUG;IyG5yf0y1>-?!%!5x!1F8yX(`lF z?sBpTrPviVCA!fEk=Gl~ZT@<-9D749Lyzn4mbZOu6D`vr$BsGDkm6QP3M#a08yR-= zv%m4JBMme5w~l_HH`0Q!4?~nLl%HrVyr^34VkPB?y<@WKSaddc%HH{Z48H)YEMM;-qkGMACf8&K)2O$Tod0&Vg9@`s?y^cvxG@cMyGzzj~8I=c$Zs=en0L5kR0mWtC z1(nHSkAU(r3Xe%Doo>xnQ)pr_G((zt)?7V^DjzdwD7G&;D(mH#UiWZi_%r}_Vt6$_v6 zgRQ@!eu~9a@~bKu#`!YMx*B>yAs?7%3Ur|+?NSz~9Q^F;SzkUJ(Y`xhKHLH70v7u) zDB2#eOHYB~%ZJxM#SPP*Vh_!gdr`y22Gj;lsB8u_NEs($rvsQTMg?PUw$2exHHXT& zQXE#za%{j!>@~=-lfi9=`EpxsdBk;$RH7NVu-s^Q%5@T_o@e|3`eUE7u7$#)$x8-{ zjrJM)GxngHYh&HdNU&q5pCq1gmE**7VrPnD?W06(`xn~i23Hiqo*&-H*w0manmTIdV+J^#v7aSLv++3!Y2%5tuBVU}=)MJ~{@6RA*c-_3wPDfX^J4ZlWsHF1 z<*qc*gs^ZV!=ce_7&DPR$Cfm&V@q#o^uESaxw);&x;>3wt=k{%<7t06*uE_^{nb@3 z9JS}QWWE`geqhxExpfmy7xghd$k521g=__4JGbJ7K9wqq@Vp2nrU5mptN`2p)%MNhTFX{Ymmg}iRQfKSnYB3mKg`cCUZ!eJqP6B+h(Z@t)V@Pay}tH6 zvA-)>6refVEXrzcovjwryUcmr}3qy8$3Sd=7Qop>OGuV2#OZw zeB~y_Yn-Pu-eDX$kIoo15CQi7kg> zx&0AC3!GN(H)>9sPo_F@_sM)|FObSog=bwx!=Xg2YisPyivcIn(W}Mfar4O^8+(LW z*~RqH;^vb-YiBvlCr@i?1OK5*=d#L3PE?R`qH1j-L*|EkHY`xZAAy$VNA=qkBcOA#JLHa-g+Xjgp;0=MA zMeLydq8S&-82E>=%?^&)iV*}EdDR~~$r=9G;iD_Cu%=>VJ4lXEPq7uJW9|vs4mx(+ zaT)bbv5Hr=l`0%HZIF_XbjN(!GCFqL?-+C1T8O|p)aQpY&KH%7rQqi)uCmSqUgIy}nDZa}1 zT5fGl15C!1@sv<(7yVDq*pIp*B9t!8!4OS?zd(KHDAvnT*%W? zDSWcX05usuJKj`NdfBf)@kKi&h%d_?1a$#^c5I|6dmMBzJCgCJUvi4jG)CH4pX9vh zD$fIo^Og{g$<~3Qog%xm3KX9Nz5_)mvrCK7bvRW6D#UpAgPO>wHc-5W@+T6(#Kq8= z8T+42K_MNXGxP>}9#L*x!|I-BYWy^*b!Cr>@V=geJk=x9Whsw6n>3nVHbc2_h@e)8 z9S@qcmVu-lOYBgxEe?$Iv|0(q4zXBr?oIG=!@UD|>pFX_Qe zeWa#OKa?tq{~--5|415`c^D(_yOQHrpSE6gfFaO|#fkr6{IJMGpa*r7Pz-{^*a z%i+1?6y@U@#!GQ@lN{weBu6IxPvqsl6ERAl%XluyDUw{nc!P&^htw#{n8T&iy6%g+ zQ2|pxO8euVR^GQWHb2b6Kdz5cr0+(?(^8VErsNea#EzFS6qOXGNV1jj1`qBk_56Le z!}dDcVxD(2M#NCfXsMt_(Ud@UHFzpGMY?{?c!P(b98yM0se8NCbzN*vCyDqLG>q6H z(5@`k#VOK7IYuoHPL&3KH&Pn#=_sk!j*BFFF^xJ{C$J+gB`z}v98R4JN=Sp+i?URL zl^x2H)|wQ(R7P4_I7RK1>m{A^7@ZQV^xlt1n>5(fT{@%uLg|dm3$Pj*E-Ae;zJ{Mt zl;QsZCQE7H6qU!rjK_QDE9jj&)!ykuPdC;RUA8NME-`r7a*A|4!FYo!>{3PMPN{p! zE(Rt<-<;59;*LIK=gEiuBNkggmkl<1D19znZ3vh%u(=HE@(beU|Iu6zO__@dgj+ zidk!n)b%jhAteMMzU}DyWj+vG7pF+qcE)3)PbP0KiUh@S9OaZ#luj-|C}9+o5>NG@ z>E44gv=5T6#l2Uh!W~o^$M2sos@-#|t zDMEcKko3<=|J&e;v@h$=Qlm&DN;{Vz)Iwcbu+se=*Nx+1{1m;${Bb$T2iHqFf7glL zkAUX=Q(uCK^zyPGon3YP(<;6HRQ2lXFp*wfhotkVPV|1Q>IK2t2mMc^cRS*2Oea0g zssyX_9%o4XYZqe_IR4W;J>CmAMfG`#@e)ZaRwXz^677uV$6BxmEiWW_*gP@2=E|Dd z6*bNXeS}LYUKVjSu#fvW;f=Jx>Bk2I=Tt^kNWue=v!beWX@itoUs|^epZ;@J;}ciT zn%bzdp|P&6ww^u}qag8J8hmhwo}xFRD@x%8p&}+Yj*d& zzAd)tg-x&Z>+$}O8@{~u-k)=yy!ya5_V2E4`{Y-dlP2HvfoImTC(_oBJp0!lX8Js* zmls!jJa@(4Z-_1W>(|Ey9Y1umZg+7r(@Z^(G?^!;-QAH#e3#sqFW>#wmFN7lX+yB()Z_>6cy#+uuaEuDvGQIowS2dv`OYi8 zk^WV8<0SVJ4~$u`=E_Bf&Mdn0KmDgQXXl)I)wSone~#V$@~z=ldmg{P$9IL!>cfvc z^NY=A%?{ptXy4g`4z2ii#?a5My=nQ(-^|@qSnc@D=%pvhrri4K58qBYb9vi+1OJ^i z@J~-WUMPQIU|_@3XB~dL=}GTxjz?bnaQyr4?CtZ;o})ProcH9uH&!qH=-Gxn)l<`7 z`g_HOuHO%taY>K07aYp{Zr9My|M1;_)Z4dyI%@ws&%*1DG~YX6?6Ff%-@o&!Ya4sr z{Q0&aB{Q}@q@=%Pob&Bx`(DuW${Rz<(%*aLvAzSpyutO{s;=SBB5w@2aZ=%wn;x&4 zm2>yO^Dl`^TXMml-dT9TLsy?$y{`1HH!r_?VQJB2-uLP*Zy#@4TGj0jH=OZfu=kzE zTVH$djtP4UpUAmy%7TYmPQBRF@W+t_%g(>$%SZ1TcjLY%D&9ML_0yj$-Eg~e?RO7+ zdav?!lH&WoeE#h(5AN7j-G1M*Q-+>@OTmrd`(9lh*mR)$fnLAOIDEnM^5%@I+%+>A zZtw0H^+NuZpT~Z^=CWfWj&95x@W?eE-JNrKaOS6{g5KU+^ZxVQ;|E)>d35n}zFV7q z`s0=VDLml4#ec&f``7KqvihX0y8jmRTo&AA|6lrApk;4&`~sz^xJgALyZ+578U$@A zHXJF8^N#*iJcf41Y$>#WAw5U`HUhJ=Sr67Jz|g{$Ff%{D4L3H-7>co_&~lBe9$Iq@ zs~b8uJ<1u7G!xWzV^5S^R84U9p9r1fNx7$M; zgA-Oe^q&G*;Y)f(;J`T}lv9;6IgUe%10`^&O63&)Ij1p>vo4PFhd9nlah&(#I49yb zv>mDhZvBEdjysN%AIF&&$Ei>`PLZ#cI1b(0qR?AXFgpaNugZB(aQdj66M|z?Im$(j zUFD?n%%JBfnr8}5HIH@YjdDk7v9#$b!mrsZqf zE6;RZQ$naYQC-!QVe6TjHzV-Amrj z(xh616vG&7UC5-Ibj0t@<7K&;)WbrGVGOotoYC@?{pD$03f~k`3}di0ib*N`%e6kX zL9=ySNHL7T)ZRsun~-7{gROKXrR3|pikllWsZWFy!x(H$U{XrHe%?IooikKhb}@7@ zjKS7KgRQ1nJ;rKM=L#u?G1#IxQ=3!HS@7ax4%JqMkYX5vtxSV08V@z8ppar1gDsj^ zZP=2<5x;wF8y?oA76~baG1!`9u(k6y@13DZH3}()G1#JsUbD62l_!Fl)CM8NFa}#w z47RrXxbZ7Z>OLXGFa}#wnH1F*<*SQlz>}KPRw2bO23yk%wz97~_f}16pO9i0gRSXI zN-4vUyJR>M5QC?5L`X4=!PdnFTO)t>ahoR9E~FU7U~2}GQpSz9Zk;(slNv}%Dg=fx z*t!HK@No^KV3}dk6H`uCuzT1nM z)D|JdFa}!zCMBwqc}Gc8+r}G0ieU`4atyY}|C}cErI2D6gRR^+Tm4j9U1-&mVh8liDey2xFAWXHqnK zQaJy%fqONnBSMNWMyUdDY$>#-L81NDf9Y(U(~ENnW0Wcc$Cg6Z3lu7gE*YiS@(L-! z7^TAC@cEsjY`5QYN|UM!@yVK}csaKHekq@pUyzMe*>2+*v1Z*mSewiJ4E(iobcgZuyC&iDL2 z_2b_7j&(HR_lamY)A2`^SHdq)X&t;DGN(W)kKJdOh1(1w0zM8o*c?F;ibmmCT0QqI zE3H`?@mDs~Rh6!UhA3P{Hw2oL^aN@et4)y|L|Mx5G&LwLxi_$Akgqd4ge`P6h8W*poJ6^pS6(^)? zbb4n~C?Qh}bMg!8a3S3cLRb|v0 z4olViv~uLOWKg_ScS8YOnoL3~ zbd2G8OkYz+O~vc!7}Hs%j9sd#G)k`Z^mZhJw>w=0YvWXcV$lJtQh_d_L+~;&49`Y@ zP+=aAgzY%CfE$M^0X8v}j&EWs{oTY?y19w1^llSdX$~f~(gI9urP57oj?Q$M*c_c@ zW^;5Lo1-ULqvO~dJ=q!^$L8oM*6294s2cq|q0Akkf-Ivf#FXj9LQIL`{*@jLR`tOi4VL51lk;;>2nBJP`QttsG~XS> zxAeSTZ;qQk0>nSG#~uRWr1BV$CNtAr7=TbP$LCfa4Z>&V__IMo@P~s`yf5Gm&Md?S z=)wioPOlpx$nA1kG4lLtl74p}HxLNt=s(uRMictXU3DGG2#*p$2+tDXqkf>=SoqRP z*PS_`Y)J-!daivC%lrYX@e?y9J9VK`Uz-yrrE9)63z@IYyRc0+lD1C~tbA=&>8_6$ zD1oodJtmx+zD1?G&L>%1^hqs!;LlB5?vq)!|!wjS@sjjQ>%My5b}2v+*80KdTrziRkVpiO8i+y?MRAn}h;1`y~rffX(U z{!w5i4<{6^S@E;N(LTd$fgv0PE8GRx%)A1)jTdqZHYF@^^x)$~h#WtfFYeBxlUJ&}IToU<;d=Hp^nsFBC>pB+C z#^6VxBYhdbWSemo`V@a)Tw~(&RYTXxB=r3jmqkzd0xJ3D-;im|grDmK(e%AqWiy3FiFO}b8z`SI}S?K!!m@mvY z3w_;@>9Z)~2p#2j7%*c6E>V7aL&r>kVG40b)ZgX;SJsI>8jsf`sjmgNTRYK5cZdE0 z%&P*|QGVYB=A%yZ(LB%&%!PC#5TPS|6M&f^aBBIP=F2|NF<)SqLL97o+)=w)mLzUf z61aZQw=oG^U*PUd0+$BdV@cp>KmVm9aHQ{G5;#od(vc)^w8MNl4j1oRkEZc16LHW5 ztNNgJFf0iiO_RYSa2EgO66eocj z0o?K=aFo8=lfY3wdN~Q)FyP)y0!QuTSR5|Cy%6rZBylH`#QmHkj=7V7eI>AQ*EGIR zKeA^k2>#!l7LM~NNx1%2INiMwl5WC6&Sk>=*L+I;1qo>Uulba`q83-tm1S4{&z(w6 zSiSP4Y4Y#$|8)Dp@~rq(ylcKd}Y|#lwU6cP4%`xoN@H-oDzzVh?Rw@o5^j;?r`$icihYir+s0 zpFQ+pkseweTIq3upGJ67pyjR=pN4lUK9!UeKOOwu7W!$%vEtK+YsIIYZ^fq`XT{G- zz{eH8C7yJqh^U1bklt zzCQt<9_z45Cq1}f#ivIztoU*QelP()F9CmM0)8j~KR*G#AOXM7g5LwY6gHmFlM*S+ zolq}Ev0O1~F^)7vr$|jW(xNg&+K8irQ4gwA8z>qJQlx__bxftmy9|$&x$_+M6|CKe zx5GKd`*8TM9<<)!1Dt8f%`>LZ)4qI3ywAu-h+^FK-OVSvub3m>7Ta(G zi?+Sd{*mw)bTmgHW++6aLX1|3;R-SMgx@u>i#Q`EI7i{ul8PUmkEo8w`vr~dSS}cU=Dy9B7e4tko>)c^Atw&Ns93N0@UZ=I(@@ z_en>t$;H+LIi@%!68_l`FL_!owYP_z>)KZKvv5@uLaizOFxKo?5BzpYP=|rC$Gr#9 z9Iy+&u55iol%0J-xi7M8XZ~(EZ#H5Mv)DUubMv-?e<^h|zP~j~ByMw4s?)P~$k*()Z=RwDz-qQRW>lTi+v_O+% zy{O*dZ8oKS<8IDiyqu^Bfb8I6|+qwxF*J#Ix|njD*XOgIl}jZqp|LuVe};J!;`$ZNK<);#?m zj+@eflHrtPH6>OwLh|!QV-eG9Orw z&v=iVE8a$$TE{Yl@OrhGowA{jd@WMxU^t{IC!biW+35@%bxvN%*W%9q)&RMVY|FOS z|Ca{HH~;qrNKrZ%7+I5ogRISzRCo|%MNIyn*!h2bfTV$+w^!POq4wI9efNTAX72{& zVZ5h7@qR~xA%_K5F@&4%sMN@`N@`IvTJ&(I8SX|b}z<)!vHx( z)$MkSYI;V$q6uJhIu!d>IPbsWgQa)5y^qun3-r$2_{zm_9!Kt8T36kAz!Q7>2uXO_ z|8{gLu?E}-l&9@Tcet_>F}scqh3~s!7UP(|A6`O_JLbIuZ+Qw}2Tw0NVav@sQ~lHb zvKks48)jf$_+k$-9%CNe*%Y)ZZ~*I3=dQqel3QB6EAS!KtzC8nK5>G(EAUV7FdWk? zg_YGnK2xP4K`bR1ZC|Vw#n^!Vj+fy14xTF=qt?0}he5#Ly)R7^K+Rqx^|;3|Z!Z!$ z0MXo?n&YLw8Z6it8ktH6YNm=Jl^ucBZMAg_qusHkTkJr^I=>5^^F)xJw^UEZa+z2~YA{qQ00^2GKuf0W{J zJiRTpulbcOE;N9rw>kX#@aYIo^KQGVi{IgY8NA)A_oOYjj2erhi&1lNq^noEbQLHXWbM+gKv5Tg|5;FcIQj`xF5}T4#5GR?#WiPx z;u0mG&I8sim8-n9Dy~K4J*49Ptnyv~brzG|52`<-4ydu@^p(f{q{d>r5_ZoA#Z&(a zP&`LBff9pc5q$SysA27vtryvc1`a7#Jk8sdvr zqEm>lCSd+{KzRQ49w;MT1LuJ1$@1U=mCwp<8je&)b~dH-VX-t62N-WLjy%2kwJyH) zVqDfbhNAtl#q9rhU3u-(a!j4^yRq>Wi&OEfmHD}piIzqR_2*3%``=M z8Fe|1d=je$#U+?~UXnI8<|5X&ZwYwyVoWzn_K)p@;V$^tUw1O8c(q zrySSQTz0gZ=OySs%0+hJ9NV$(OjdKOrG{FsvEz!J`eI#>Ji+41Y7nj~1`0EpZ{aUK zAahV(C!!d39%dM8n@VUMng_E}Oj(mwFI~ zeExdADB8Ff=Cm=$l(Vcd>7~d9iGNH&o`u{CO&`HM7m}v}e$RHpkj} zl%0$jQJxM}*oQh7C%ti!N+*t(cTlT+-5}6kyorMz*k2Fqj&Ap76W}a8pyxA4v-HI; zO&FsRc9nIsGO?9sdPDxG+yQ_F%%d0T0FHHk<2IE{@m=g^sFk#IW6QLd2UB@Zc2z(- zQj}Z#cabV|J{p(CplJ{GKw+i_ z??siOl>-&NUHVX^XmLTKJF2R! zd_@ZFHyw>tZjDmrPO;$&j?1ZWkCb<9$MDxKqY|7jgAoi4$}zL!8zXyC_}qdqQr?d8 zNT&}F4F`tG!p>IJent%**ae#;{XoO%7=F~$^YEi0=Nv}hFc&}WiIP)^Yu(#n>An08x%48pT|&SjZ>8SYZ!0v;4ZjcNmPOt z0;7Z_Ab1IKigc`DykVnzN~1r;-a~YNG@!h{)DtCW7bU1@pc3SARDzsxg5nwoMe7VD zSlPM}ky;5VdMQs@dN@TT$n`RvT@AfG3C}$|__ABnoTLy=;Y5BfFQGovu{CK`OMaYL4 zFJ&OU=rQYzx_*n((!pTc!1SL&1%6zLQzS*BpzxqRky{Rdql8=#T!K?1v4!yl4*Kyurb~Qt-Pgq`;?FO4D{!Ng2_4X=M3T z(wQmMQrC1lYYA?Ypc80KH$4cigdhl>PEL{T?Tj~%y#VW+yDSo^lEjIpzN{1;Zj0!d zA%&MyRk?Io)X4Lf)|5q@;nH#il-pPd&$Y^#zrL~BIkPef-?a63wY;IhId4gAlapRM ztjFu7c)QhnuDInD>ELf~OTpX{#l5ZOKbOD05xle>sV{|ZU!F8)?UE}Z zWl;-#WwkZSBXIMpJe}pNf#+cI2#goT$4-&bGtyZ&KYd~o{pdtb^VsxsDLspmN@Ozs zAr@B@qC_ie@ZNDnX<0;?JY~|SYgSW4Av8!? z>6ueAGqWbqQOnx6%mz|)zWA>wr&gOSNvrW|_e$;UIr!22Vl-j?s8=`qr;b9y6gA}@ z_$gkE8+zwlb9C9G3o9JIzi@Nv@aqr%V~N|gx%hY9m&PBt-J7w0`P0Ln`)lI`wQuLF z9CGW%?p+?+(Q-%0!{@Ji^6sbPb6>q{=eFyIe3JR%f2LNwI{BRMuQ@YtPy5R^js4zz zvaYS7=*AbF?hlT)zhgi7^=<#Wdh)vLabr@uU-jMKH~Q@O__NpEJot3^Yqtz}A@9v6 z&U$~v-n$-i54-q}?>)2A*BE|o^@%>e?E2v349DSrrv78m&YIrOl)bt4?>$@YTe|1` z3*Y-Fdv%}NUO!R0D7>u4jPR@l1-~Efe`4?HA6owL#(}`@rxv_pyYbR#=~8)<=d;m= z+793J#_xvRAFHYUr1!t(%zZZcM)QY%@N{|fcxcto^EPHJ*wJM~b@UfKZl87F_APhZ zz3lq|EoUEfeg63Qk9XaE-5;;nJEZE`$;~%z+#7BjJ+fp;=JN+;RxaPyyvmu`{r6{j z|2${jo_?!$%%3!I&e0q5#?GBHrB?C6{9?u}Z}xxS$0s-3>>m^CccP}x@!jLz=ysF$ z-uqYfiHv=2am&v?emHva>H*!J`(X0rH^2Y*tvgD4xeLGFbYkg&lXtJbrzZco@h|`T z{Gs3dy6+`lF50{4%E6Ov>v8w6uRoo2_~~7h2O|^C{PvT=eb0P*?FYC0>ytk|KCgA+ z;J^6`i|2j$!GmY@KiKcrIWKuX{QS1>m;ZFDE3#KAe&}B}m25gXB`7c3cim$P?$7?u zkhd3Z{B7EfTe>d1W!a=37oPR;U3qt1-Zr#)_fz2u$5tO+KfU|uz`3hOTsQjRiFeF7 zn7?K5PZM3Mn?5Q_J9PIv-z?vu(}(*mde-l`{`fryihue~bM~ZxAOE>}QO=BBH*X1l zlYQ+=({CO(deCngcK+p-{WmUaI%DlpG&vUBW&cI*#JXoO352>d`o~sq8dx(B0Uzw}zpa#cjYW!5MKiOcZB}4V)WrR%hVchO^ZwNB;&L zrPP+<#6RlG*Ihc8c4|dTMIM$?7JM*O&S{Tp^P*V$5NETGbOD?Hf4M+!ZLMhzS8 zYw>sLrkpvfoTK%a?hHfAG}4uO_QRXwF%)AEI8d&4&4Z&pm_uC!V`)MZAJ4i!J(eW$;>#;%s39+CgVYox;l>Y z%Q(*O;y8~9j^>^CH5DTvJq>mBSPWD!Q@B7ADg07k`hY|24fW6ep$97*hu}C=j!SU* zs+AVRIWev^N(t zaA@F}W#CK(XTE_$3;1#aXDT?=dQQd!aIVvHu;Af=QpnOXfvi)Y-px1}r1>zU*ce5* zm_V8juy}!)m`)f2hirXe;7r8Xw+2oI&S+neG;5_{7q&Qu($mMlp}Y^(b27;~1yxU$ z!lBWN>B*$@P@vI|ag>a*%_YX6jIxl1qtO#`KXACWTNsvRZ~yn7G@q*rMB88(gGV?T zhcu6H8*d3eqDie1QVe78K6fUQa?ugL^S*rzE*+KYr8|Wb!x(JQ#k^+g*w!O=Xj0D$ zDTXoF8o;C|zXVxzP4@ws)CWR}VGOotk6p7>T-6rVq)rPdhB4SWOSJ_;dSFfA*P6f3 zp)`>qFpR<0AaFHXw{F~I*QESHieU`4FkL~4@ZM+sV{{T z!x(IhU{bsO^LMw1#Sl1CV$6s=ZlVpAViFH^?cuSvOu6k&`~G|_9`N(*Pz zKdebD6;gyTO3|8&_goOtyZdjtSCeWHQiL%|(b`1wr`mr@_-;+=F(E}5qZBPXG+XEW z_1guS)IWq2VT@9=3bUoqJWHX=nfaxfl#P}-2!t_8O#?^s>RI{vmw(oz#tSLJ7^QG2 z1t}WsDYSjQ_$o~*AfyOml)4xk-oi<$@0f1yYEr)tQiL%|&0td0qba;L?9@h0O7Ra& z7^BoB;NS|8L=bj&$vv$}eIslU#wbPm3bqs)b0~aN;_zrvxckEbVT@94aBL~m%P3s^ z)w%05sd6FZMvPGksv$KBM+$kZv+^~m-w7$g7^S@6*ixv?P`LE+^K@GaZRQkJ!Dm^$-cq=54nHkq_g4J4!IQ)8?}+qh4B?;`I|nuN z`61PbF?{AWRz>8}n)0fM;szLg8fTTRVD~NfjVJOE?9pV5k)g_lsEGSN_Y!;MX`s&IW+()vC^utecnJR`GYBe~8_h9ahl*t<*aHEXdP4Otj z10^|!RSfZTDKWFjJx>JQ;39RUZ-k2JsvZ~q!l_~MNcs$Oh`0eFP_4NOpLtcxT7p@mYLBur-7k3RQe3T}Z z?*PCxWVsTWVBVNq9RP&qNTwiBBh}|4Ax5vr*jmjETCc7Xq@jd5!Sbw%!s-NTD7Q|q zh9c|)o461xx@_WdumbBZyn}jsyZ^VhX6`Fd-zY;|zl8P+|~Kx!EO!d_*gPYxmNn5qI_kxMJ;K zQ<$3*bn^!*va{IZ9&QET4Y+eWUVkWWrmQ0PGa%Vn>>&_6 zQuY=U352+DQ)bMrzu1>OS9U#*f#KYQ>*RhS`ra=e8FLHMD~Em67Nu)9#s%MIlO!$=h# zJ;~0<&eA)8<>3kQRRIo6WuvmxBBD(Lr6rG;jC zP{)=gv1Xx1WU{laU@Ih5(3j^f$oF}|J`}L>oJ_XMmxIS-#6NnJB#xuX`(?DLg1lV0 z5c1;j86&!bGgXVv=g!ad`||Q;dJ`m{x%bb`5|7kqf_}Hpn^Pdq49|4yAF|PK;34fN#;<_kEZg2!s-Qy4=z&zxAn5bF7)3IsffB;?DqbF=T@ zl9HzCYPT>xN&KHE{)^|N(kDQX4mMRp^F*Ylmx=RCY5c^=8BSg3+!OKC$rBiUanJG_ z<}gphA7V3WYzn_}vhqZ{R=Ma_F0L#*5kHT(k4!i>c_NNRnxd}i8b$OUAb!^u58cwu zcLdt3vhq~B2mDuo*(5G06XAXa4o}=lhv{Y-LJ$0`^!)++X=g~%Kk%bK8;w@Dec-!r zv+R4iVTORDL6&k328W$B#ls`HcW`mB1w`Kg#dTz}%OFzDI$1wiA7nz5~Gg|J9>1 zjW6U;SsxO$mj{6Ri@+u-KN?2K>+(ke*HL{O1?GoN^ih2bz|AJ|zDz;2Yti3wfg$h9 z2ArwAQ2MR{W{nwVq3<4G9ya4l`g%j(9)V$oaY$5tZv*#{S)cCdM3SfUwVU-x?l_N~ zw88G6L0%WEJhD0wKR5{-?qCu)dS>HD5;!X76uMcd3s&_;<ShLXfxo&;_n z^d;lr+5z0PN$8_?+L{E8=A+w^z|nf|@g#86{+>+&N9lVj3EWx0{UZrnKj6Mk0!QOU zw~09Df>ryYXRFeZz|s76eiArpFZoH}=sxNEByhB>T9X8B6mX9ufur^J+i|#fkIy53 zdp`~rKR#1GYLCNNdtP>A0IUn{1Rk1)TH#C{n(5n><4rhvkPw$*{0od?7%ihQ(Gojc{_%(nND9wk196PAImfJWa z&I&x`@YsyDqc)k|<%I#WVY)p}s|h=MIsR;zw=?Hu7c*WIN1C(j(qCF5qE zI=CD!6eJ-^gfuNv7;9>|U;D%mQa07ST!Ie#;xPZ9g zg1B52QN&$b;Qu|Rs;j%ECy;x8@4f%~yn^(cKK1>cQ(awMUA>+1;b=j47Yw|=2HPNI zR*VlC=vgCckH48`Kp^_5&Hhc4A6y1=_(fh{THkc^Bx*^hdy6!JtOgOc#YbOy(^en` zoK6!pY~O2wPBCnJ^jWwFRMN1M%M)xsp=le`m-DM*DrvoLJ8kTgZPeFw=ca`lJTm4( znv$|1oryn>L3K&D2|UIYEJbtM1xW<5!Ydu}bMvnt5#M7Vun}q$ro(C!n&_vth^mXl z<`3|1YzG~E+1{1V5Mt;|7ylt|fq#R0+1M6l2u)sdAqJ3aZj_10Fmg4kVe_)F2$+lS z>5rcLG764w;;-LEZ3neLw#{0=)?@XeZKwjd^~sQeT<-I+?8?$qB~>VCKBPzR=P{@y zi7ln>0pTZ(v9;3ZG`g2onge@>=K zyyixFbd{T9^32wBIm^vk=77UoH(K57IGH3V3S5NL|d!^`$jU0D4l9kc$6 zFW!cu#jGwF>k?t|*wnHcHiLp~2{ta;4vBVcbjL-n;U`f4;79mrFR8VAcpNQq{a6=mJ_t$ZXmAk6xbaGNkdji zqzhbxQpHkOnG1>T=y{9d1| zGSU{x`GJ@`bOacsY(UG`Mk#ARq`^Y=n&XZhLKw(n?640ejyZNv0|$=bCkGCT;71G` zX3s zWVHrGH&0d+`k(fl6%+V#{}jKB0!#;m=-_=s!Ji14E}GCdrK7qLx;aYf2cx39&VVGk z>vAQng*2G$?S_=b5;d^abmi?unA%CvxO+|G0^9_!T{&Xtc^q`(in9; zBtJr`H%4uQl!Vy6jZydt3KxwNAgzKFKp?@!sJW0*5QM!kYBi)Z?3u=>e?m&fosY(- zHIOn8Kdmw9E=XC%Xh_dO%Eta^j9LOI4|8WUM%6+(AF;w3qvk^zhdDqRqc%Xg5D~o^ zqt-*}V@!qg0Oh(SL#l){5HWijqc%etggw|8bq%D84VSAi%7a?F!x#W51fAQ}0@7co z1&=EV(if1ry4peNfLgrBH5t^Di+IOuHndg38*aB1d?Fw4A+H_mP5*QT>$A17#Ts!Vm{j5~LVd7h#+Q<3fd_u1V;slyrrX zmMG~)CEcNtu>r|@N2HlVl5_QNz z@+ygVLPuBVLOM@LK_$`G^&*!pT!d7tq)H`Srlf^Rx<*N>lyrxZ9#GPgO4_WX9ZGsz zNqdz2xK7PnkuB0_m!cEKt-_Ed~jrsbA8l^c7tB(@nsLeIK9Jd+if+h`Y16T-5feq)|yr9`l!AD%6g$WXR;8FQrz27m4#6N>0_0GqIH^%aAT6r zfI+%+vzrxzV!Bdp2z-Q*>NdIz-Fsk&qXcsNtSZiDFL=-@oLQMv>-AArQwA;>vm@B! zJY{dWWv`*Vp0&!#s*hUZa8)0*UV4dCYR*$$HrP#Vj9_ZBG!R%rZU zEJK&APvH+?fJw(vPb|fOIv5glnI8UtQ(T@=XPw468uL8I(#2SMS)vi;W|n9yD6Cux zNm#B`x`mLo;m>2xz+G6r6_T)gFQk_^m&)d4iJnRbdoMzIg>`g?KvmVQ&YM<5+y9R)KIjJA*j?j)r{h*RSy z#&v_#ou#u??r=!IvW_}?!A(=SIgk!>?s%oUNa3a_T?wSW7+0xuvlMQg(k+B^lyMZ^ zN0eoS%B285w2wW;J&;6M9#pxHLyF?uXOxaYT?^dHO1BddwGWT+4y5kv?IV@@HKewj z`vWAw{axj@ahq-2)y8AADLlbwGp1!FOz=cO^h+rnf8ntx$Fi67>~QzY9LAd_N}qL}}YZL&*8qM0Juo`Oub;VNrwlnrfzc%O*%Ij*gW z_em|+Oc@ZwRtt%?i>^!&)wElb(SGP)1mNj!h}tqZSP^YyDkHGqDWm9@QYQX{Eg_LD z>XBgU3^zvC{S6VRRM??+cyc%IQ?=($D@*D#~gp^p2aceUT#Hc#-^piOxpTIHmdcFmLn zLD&`&*`CL`(_%b`g6cOsyIQcNePHR^dx>cTzq!ouD2ePWU|n~7?K>@$YV`g2Jj44% zqS0l$&*)H?f>_Q0X*z!l_P3UNVMg2D+w*86Bt_sj`AqS+6xbg3|>-A2pd8o z*W%BrDYGOx#_}NSl1+PzVv(E&-Tr7(h6LZZ@;f4A}I__MMre%RUZ>Q{}99r0X!c1d|z*`UJG zQiH!=u}79It;jF*TKS=pvLbw8JPtobO?6RK{E%bNY=E&vp}eY!0z}UZv2;=O_Dyod~5Oz5;#)L{I6jhZJ&%v@9e(9TWjPtT^3{6CjR)#*l8vpX~XtD_Fv++2x z91k%oxNkIZ@qA+$#nEFE%YeKyib^Yss;DVpe>>Zm{6@-)Z``q)y~R}(Wio=W)1Ztv zETJmYaIfl7-d@#4{Gj+jL%huLPE5=4rrZO@3)IZf_644eOzp+G3b7 z+!%qryr(P1)yvh})yLJ>)z3A^HP{vFigOKd#k+>O5?p3b-i2R1)ceV`hsHlO@3RAw zw*I}s{piZ^Q--e_as4}?)1Ex9{WmZ6ZMSaS=vD*$`!~tzw^RZ_kMF>(OdCPl?;72X7e?{d;RlTpY!cEgC5$S z^jz$ne_`dJ+aA9pW%wo69bUZZqi(my zw|(@j*Z=*`A2a5C_s#5n_kOx^!rxVE?+A4XR9tuY;k*A{ot8H5(tWAZFPc#P$m0AR z4?cI@@P(a6w3+l*n*ks0zH;1Gj~v+lNb1a+Pk8R9C;nP@&Gc{ML(tnP8{lRYb3!JP@;o&Rt@WCg0_P$&B!sFKj-sKNd`gbUhW;{3W9}o7wE^pzT2kyEj{`!pX$A16XGduiW zr=D9C`s1!Sy>1zM)t`^u)^GKSdv^CUuD*TB@T{?mS6#U?H9vc9!MGcK?)Ki8ch6gO z(c~S&fB4~*Q#;QYPs2}6K8gu2sHE_ga*qqsW249S6&K})2F1oMchRIDq_KbQh2aM7 zf6^7Ao(2^bO{c2(F%>O=GLA2rxSzCfE^kWlC(8B>r*F&#u;uGoyUEU zPJ8^>^-fHC#?T0XZobB+EjvSCu!1WdD~Z9tS(bvX9+2W3nq-HDESpKND$G^<3e8mx z%}ox?Lk`W04h>yvn@L#y!(7F$(9kPsW)hlshbGOTp@$!4608{x4NcZ$CV{!xp?S=q zdEKG;z@hoK(s<=o{O!=tZCH^^4A0NQDpPZw14Gl+>MXj|N{Mda3-NZTaVyPMscEG& zUrLP?0+_CTDMcwvH>qi>G$W*ju6BfhEQh8*YEDp?8mVccG)twXwbI<@u*0*UqCD+^ z5t%PbOgp7{-@)3iX`DfL5t?>5ZzdLW#Bfkor6IBi1#4ocC($+3|L7X(wOA83Ow#Bm z7Z~a{C{a%$Fs3u=H}n9qCqiQdOq_mk`xiVaw5UrS-i*Dl#G+$lTj5=bmK9DTNXuditUl5FkkEVa%R(05tb`%n0G+!q}YXwXkRCp7*SP3@b zq`(->*D1{Ef~5<8NqxuvVudliNU|8C`8rkeb=9n=c37;%lEoO!7kLr;i+q*be`dKA zp7l}5VvOeNG|ktn{jCs%RDzAYQecec>vU$B+x6VL@B9*_SSL{PM`DcT3#TGm9Y(pf zueVseC5thdFFI#h0WQBdeA%^D=-wpBVvOeNOwHGsU9Nl2ViiahV>DlMKD6raj_sd( zXoXB&AX$vje09@&Q9x3Qb*p4CM)T!mR$p4;@29=H##pQ;C5thdukOs^kpQF_4`2JX z#iF-ZDKSR#)dN})QjL6dY5V74i}kH!F-G&%lUb&(1&=J+Xt7#Rw}-?S%~uSxV$?+W zZ;pI1+6o2RL$Vm7`Rc_i)7R@~dPZ6-zhp5+^VOSK)C*CYFI{xi*7m9$PLV9eXukSr zzApYT7-z9+B#SYcFWyrw(K8svn&18?uvkkZOYF@-w$D@hX}%^M_E%c0wUWgc%~yYB ziQX0W?z?om+G1^#EXHWtb++c~`&G9uwOBhPi!qw70g45|==J&qy{r(oUrH8ZG+zT1 zi&|7LW9$ZtbwsilBO;oSX_@q3e}ka4g8ij@TXC+5!>7cph0GXZknQ8!!OWubBc-oj zj|NK)SByBxB8=`U786tQ^TAjLxDFv31U^SYNc*VqGm+gwa_;m_=uK zO8+Wd@VmvjN3sZ`v*Mv~yXg3()cS!lezaIGN)};s)=+5NE;`du8nC}+hQ&H6S%lG9 z3DCG*)N@kWK6>A+7OOW6Mvw@jvuOO{c2VC>sl$N0B^GOfWD!PZ(TK+FGOsoceG(hA zSPLbKFgj}lv*;+Gl>OV;w*B>_WD!PZjfBPuo;%_C*!L`7A4nEqbk-xGCJYccsTC6YxLot4L|ev;L=_BWfanX3})%CT4}c57D2w5t57<45DA=U)E8!YVwbk_NNzOii-Qz`P>xuY3$PAI7g z;TcS3(Hzs#*f}U-Szdk>g7c!R)%5Ji%*(DR4V5I#2^Ed2FvAl|Q|9Wp3Wbq5cuj*@9%;2wjCLSaSGb#=&9xDlrS;=C{lS}if?E#Rj3XYs_)^1_ZSbp-A ziU(hqIdcTi@k4|I0U;%2(uNDD4U$eSv45)N^Sj)tG=7jt&p}Ny3KJKbR8vw~7!gBH zMY*Bdh$8SP_E-+~kbT=IbT2&#wtJz_tn&Gy9cso)C5qT8Q==+WSL2|Q+afkrZ}wN}f?vK!>swjgJ&l3MwjQmJ}H=GJq-X?qlx^ z8Pv2nND(VmhLdfU)#hP^-610GakK0;59_Rirkb0x5}HKXjjF~Mxq;fP9uFGPY~(f_ z(QFe?&1~3VpxFt}vlAm7Dt2oUvXYb2(|zLAnlQIXzF;sTJuM@c899)v zaBESO;iP~sB_};OCoe18XM1@>zNuruvVFP9X?X}Tlk7`w`t2PHpXtlVOhH`aoE%@1 zZ}eE`Twhi&J1Z$SE7M*G=UYA&12L7;((+OQxj`S!7xp)QEKG(kJIU`)OHEGmHT5=- z0%QAfa#I578M!|Bf{V|TC znf}z=jO1XBLd5HcB)=~$nC8z)OASZ}zj364a(!u8XqZVk>B`KIa6~Qw1P1~ruvwHi z9g&pgOUX(?U~PC*FDBVvS5ljm=SxjaPRR%+CtE;%gGnK>5P&;5HzPAI!zW&93Uih2 zLxAP1j3k7~ZsJWRWokrTN_I|CdUk-2{O*&=O3L&Fv$Hd^Q?T2cd>=}ovwVTp4GFE0@AMSA7Rv=T>=v*9Nr6(OP%W6*qQkwuGCT1=!xVgfD8Xi-FqYPHBGX}Zb~ zz}d83qC6mCc~VYRa#C(`lMdpE5o3jP#65v^E|cHWdY2yy=ygU@;NRJ0&AM zDI+JX38on!8`l(g`^zF`_)=2SQ*&^n{Aa{rfs9~odLC_Ca%wddlm*K$I=r-uyi9*i ziVp`K{trPkc@7tzfT4b30!H_V3F57>!~}Y6jABJwBSrb3Ed3 z#}CCH;yK47wlgMDm9V%WBV*%+jKJS;{0+lj0{({LFCKpw>x;0@aj*~v3vsXz2MclW zarlb`q!@oiMw`L$u?b#VI$qpoz=y>#p5i`V!Ev8E`EY?OFNWPVGG2Not-wYhzW-#v-N%xWL5w1fsaJK{J1?~lj zb<=u>ys7pViO3Dv`?wkQ2=`qxa8bbh-3%PrYhm6wg-ofb@=>50dy0g67yG>jaKFoY zo%Ap^67C1+TjCz&Z}L7RJs^&R!+kg72N>BQpEA(R&`3Bk6LTiwH{g#_Q}x^*d6R+p z=W%c^yA0zlU`pw!D-u0!jO3T>z3nxOBlx4#lwZ1a+O<2P^x%(DQ#iUcR|m{}5=Vzo zB)@~9e;%0cB+k>m(55q{rAEl=J67FJP79R&k<+~f0HzckF)+3dViuD;V?w$~k zn(|BgtvfKIkAow77XWkFad2dB6)=xB1Gfv9Z<>K?jh)|v8UT_Tf04GA{Q7{o@Hn`5 z;A(-nU*ejozYBnS0hlhmARy849Leup&}RU1P~zw&Z6qA|9g2I*)8&2Uru-7_a$p{6 z25u`bzZ?fg^>RWVJmkk8rKakS{Q7|jN!+o@cQr8290ykidpm*2>q}mnj<-)Y@oxm? zGl^@7^+@$c?e8o!{zN(ekdCz-7X!0g;*PZ)cLDR>ad6Zx9stHe2Pjfg_NaVafEg)q z$12}MV3r)m-dfnZ4Hz@tek-g;su$Y7i|`cUcKIZtDZhk!4w&~OuBq(^0!MN5;|D-M z^5Cy2zZU^RG3_Ze<(D3TTnEf&64%uJ^}xVc196_J+k1Cw{HOFc6ET;)%}(ZmGo5_A)Na9-VgY17@qlxlA12yTFP} z?eO~=Fz+A7UT5Hb1*T1cAS%BR?DYj^XgDscd^Fw|1I)B=Tm*abfms@k3$sV%yAPP> z!*LPpeFV(c;kYn+RKAwO4C561Q99Q44h6;+jtjF#`}Y!wVS`vSwSS9&t7?Y5<;}FW z3b?zPVQ*_Q?d<^W-DcSPxtaF<0^<2`d(Q*6qZ#(TZl=9M!2Q(>d#8^y_k{Rus(=pQBw61!Copb zW5RJ^_UQak3C#R(Tm*Z!0drqC&i0BTmFIN)y(}@bPAO9Se!9;7tQoi-!2R7!T({BW z%}SB{l0APjaRtr5(e^HC2F?rI?ajbZdwHQ5INERTH3LWE(XSjh=ez-Q-ap{L`5g1Q zkl&vixXAMcxao~PTk0|zYs!W?ikhNGzVQ<#`X_KWZ-hCfaNanc?4h|9kgO%newL?wA$hMb>7P5p=#J^jq23VP(Z2@ko3XwD>$|YN z8SDG7z6lH4nm8R{b~x#)84Dirg4J7QlxJs%~dz~^*vjViST6r)}N!MmxFFc}5K@Ad|ljibm|tq~lHa_ejR z)>jTd)J#C?gRu?E?qXqR!?N`(jA&?2-^)8j&8gYQWOWp_yBqj$7Ls-#|U9v zNS7GHCUqsOG)B$G5+xwZ zjZsU@m5xz;AtK_Xr3gZVaXz>^Mo|aQ$ROH#reQKm>y1%#yQnow)ESb4#wcpo)Fu&p zRO&cHGW9c5sZkslSyVz#sq=97YEk8M=RrtGO3HxrJGdUiFEw)~LfVHvk1++yKRLGq zlHgWIskJdzNsCqPGNq#;3dZe9vKrO{3bzpw#rg6Wn-%UQmAgwxv|VJcHAff|5~k}w zd|J7)gAIFXI$HbNdlB#O;Gz$s7p?;r`zL;LbVoiv;D%*8IPmO7773+Z+Ic?>dp z7faOg?qlgXEJelNq9i(IsS*&cTAbTz+R2*YO5z2oK>DO{k??s6Bysd14CSKTp%(Qm zvS|?FuQx{069FTFolZ~-|J@-8JG~)2hChylsgBODGb%Ucx<6dr7Dn{7*8?5BZ~>Of zt~z@3@1qNTZyUY%BveUom7GVw->`5#vW;~2=A--60p1*;!QX{_DQttkH7gqY?c{G~ z`P)JK*3mJ-;0?TbIy^W=?_YtHs*xn^reuY1r*RT|RDJpFT{JD(~ zmK5vXZPa2(vnRO?3RFl9$8F5VvI|QTvzDSxyN#={JdLHLSaxCwVML7HEM1Q!1zmI- ztFY|M(rPSEW@!zU6u7}{+=b;?EUm|~8%qyh>1AmHmfcx;9LpXoZN#!COV45%!_sCf zd$F_~%dRZ_&yTw&xGqx={T&CeJ5YZTAHga09kMZJfIFqWBO;k1I4T|1f%*=Ck=%&% z=I5a&;NdLj;Py00OsKN%7Y6pnvz2OIo8ZkLf-kNv!TntiPO69%_1FWNoPxx0#F z;!L1^K(%=|!ufVC)Bn5zAN*fr=V7*E-^@rIAnM55WF1B9y@Lzp_|R9vy0Hy?f}<1f z3f9do4C8*%3@ z_~U4(w;xj$g}jS)UlEnEX!Dh)rZl|F7Xaw^WuMPS1n-dg^QQ*t{e?Ac7R+gFL@z@5 zA~%ZR$oP~Gm2)7819=>zNAcIh9*f@$@6k7GuKS}U&S^ECdVhy)b$_@?K4ql8b*M}f zz~8#2pkWu6sP2y_ncFUuD|6e`q^R6hGPiRmPUd#5>7#PnNiSWtg`MHpcEqMmUD1oY z1^HOM#L|^mHnMaJmg3w&LsGHL&DeJ|R1DUy;Gd@UT{Fz!G(l$g=YL>kpC}FgG-W1Y zOX6CK)IZQ5kH+K8>A%H2nEDlbE2b&;&8Q3-aHBH#rztaXD^eQXOlf#uKOqI^lodc+ z^jI{>D^gQ11Arf@5et4la%E@SpOS|KA0@oqIDw4_P_XX+oyu^8^i65l7N}1jkkYWD z-hU2b93-oUi}6sJdDAr2_3MAjI+7g*Lw?`5oc_@nnP!b%yj9DLXv z=iKoSn{38T-7I!0|1`Bzn_-6US=O)MpQg-2+?e|FyGHC4ngCNX7|`TVL1T#x&E0ao z$ymRFe~wdRG-tgnYdw4|_3(3=>fx!?`w2goP6+)|7VWM*ana`5Hi6N*=SKNQZ=QE* z0N0kH^`zjcfbJ5BrcFbH`t$R!#p43?=TEBlPp*lkGeqbFHMFx;U1w~!=pIKw`j8t^ zqSDQTw3l^sAu4dIAw7b>CQcnq)-v@ybT_^UUa+F-T z*&5)*(@LP$LNu)T|~wGnRiD5q*vLkAItApmkCMiqKHR9-Cnzj@Jaj0EbVXvnZltyOAk)HmR7V>IsEu^i{Z4L`b zSGU{hPwqlL*b*;o2_3W13-82oS>2KE=~Df~=*1bRi^!Mi^(S`~M!e!DM*Q>@KLf;1 ztoRu!enyC&bHtC2epC$vw6#0|32MqLp`@F6DEk`vLD^%e?EgYm^g_CuhO+Z*hBncQ zufb~MvMaCG3zK&Vlk3IL1L9{h{V3!HZS8SwZKEL2>~|>Gb}ered8j+=MlnM;!EP~I zCf#@7_NqMWA|BBHSEfkk&(SEUxXX|X=`;MfjqzBD%iIDbU8*D+QHosib|>cPQ@VSV zL{|p_M`KbUy`>~NDupfzty7esJ*4lTck_J;kxO?Ighclwgfvh|LzOgINl8jdS5lsm zX!a~&rASHDN}_pvL@wPK5z@6vx=~46Ac-=+0_krqGo2^|<1;1gSJELR(F6|yN7Fh8 zsgshrE2*!N1}o`YCFMbS2bMg>g^)xaH(lkHLi&gd? zNI$Uj0HhyT+5qV%mL7-nGfNvG{le0-kbY%}hE>0@v>np#EYX1D50+ko^e0QZApOPC z+mH^kL}Mu&so0K>Ah}rD2T7Fv3rH_w>3{~O*Jg#g{ z_u39%a_si2Vc5Ts9Lf9SKyb^6;y{OD?^8GZJ{TUJHB{*Q66e7rY-U>zhyv709C0`?!3ne5V}C}xUO=IsBX%w&_k88TBOyJOj|t7QwLLaxUee?&qFo4y7*iaK!8S%a#SjuPsQ1R{*H)^ajX`G; z;X_EonCbA*&&D`WF@!{nOC5}tp)pe*#SjuPW;+;mAAJ==NW`E3#n=v8UB#OY@Y_!@ zghY%5$7J+Z3?UJt{+Nuj6+=kGpmSc+r5d0ZLL$Zu$7IkMTkH=Z5#wLSWDHUaArWKk zF&TpuLrBC}cT7gCVhD*C4<3^drx-#a28EACUD0$xm|zFf3FSd)bf<+(LljF$#M;EV z?j1cw#}I;Y7Lv|lQNJay)Ncu?GbG7^REa+`MY8{buy5ethJ8wAiO7>+=w5_vvP%PM zGexrfqO>hArd{d-1X}kX?2^sfO`{5_b6#b;>E*L99SBcMg4f5q)g_k|d3%-A_9`*L zaxg(g$QxVRD|W=Bh*{!;<0cSz&#k1artBEz%kpcFgUGM0#2a$nDvG*WM+p9Rdg!v(S4n3_VR1{vmsv^WSs-8hsX}cAVf<}-X122}*YY<0|et)Hl8s1d= z$%>_4`ycHH`=2@2MT<#;S3NT1!}UqGrf)yxrsOY2?wXbJ%h}QGrx@KRR_ny5O`?6{mgw#PzK&?6>sG zbHBLmR^Ll2pDJ8!u0OnJ_UU)r)Ar6=?|(IY@Ht%@-kEpS@^2fujx+Pk-xo(bu{L^H z!zCY1S@VzN?=Q?W?S`+L`taX=zx}?p_xREK-tb<#v^MR@Z-zJCJEvcpt{c~8jXe6& zjtl>|YSZQCU-0!SJ7;eBefDEB>Jv@=rlG4}oPXNxQTI1=s=Tq$-DAK9!{3O1;?wUs zFPn13gl9t|O#l7=Y=30NtosI@c|yJGNK~NU{B30u+oz_T^vE+qx-WcY`6qqXeKK_9 zqtWH}y;pl@+?ls_HSOQ|);TZsZ!>s_JNsYNkN-Nq(9}N~zhcMBPyE#~?bAC_{`P*k z;+gSJS3lft%GN{wimP2UX66xdj*bKE=ihhISASIw`S`sX&%V6hid$0;U$p7N-+c3C zy?$ZB%~$q2<+MF(UXQ=>)tNsP^_~3EFxSA|L#AK+jQh8femM8~*oqt1v@I{#{QQL9 z_nP@xOET{Do-t?lfyEgECr%hqaq|xMuFd)Ve>45nl_We@FlF9QbN$#_2b`bSDNc-&)(8^dH05g%=Pg6v!dF*(ej%~pPBjpf2~jL zmG#xs>oN}%jJV;|-+mm{DQfP&?t1>nkN3WR>Z;o5hw3)HU-|eydv{1V;g=Wdzx`t6 z*11ofx^F}6qe-hCOn-LCsZX6#cHQEKzy0BhzwYSVdCO-#GcUjTgnNJMeP`QcS3mG+ zzb;R_cks~(2X@ZNzVXG$EsepUw$D6UaN3M+lU}?3-F;7Ae#_pBEg$@qv1CR~i!EP$ zzwG%P4`dy!{e9nwmuw37ulniZ)W6@nsk)o*-N$Z!`J0^9`DfJ6`}plG=YLkV<;8za z95|y|b_d4)zPUm+nl99@{gZl(<#8cJr!GoA)K%Ui`XxJtx_&Em<@I^%Pjh0T7-QO* znij-!1?u1Ic3Nr}&yEvuK^2Z^#TYvMP{~I8@bVldhWbgX%xCwReUcMHCsGTudQ3I0 zG{b$hVGNa=(j!$Hr#mrikz?6;?1eVCb`7^fCua+@xAcUyP7FObal2>$e+Hx}AKyRM zi8+xmbYX@HHvV3{x2F?>>rvRDVLff(zK^$dcVcKSh`7O2hm|ic#U_TAxg%rx(-ME{ z>hD4`3CEyXVTT6NF_3l)*dAfOcVf)3?a*+@?MkC1{x0~(1GrNd?u)Li-7Xq}(>2c4 zPmbWKI2=Rw;N32|+@KaY_2;xNoEUll=Ej_b!dK+&>e37h?E$Mit9G^7?eujzW4cRU zTgTM>;l$A1KHk3Q+6+7Nl;?PM&T0mxTQe};W?*=$U339N`>Uh39qvel@2?(g=K?J0 z7;E>#-ynr!(8RG_cVS6K{>r#$+~5z#Q0sFmU#q@2;b|wPmxf8Z=+9gyrniQY0sbw&B~wtrRy`#I~RNaczzhb2i(_!jgK= zc0c?P>%vpzo0i9r#8 zG0T&C*5C+jBTn<>y}Q>4r=1~;S&JpLjr;4SyPO!>qT?MGLluU~{Bo#08YWC>=cWY4 z1hJ&PrKDmbDn1-Dj4{V<8^alc#>e~Xp@g=$nhLjrO+}gML;8u3y1aMIS|?^CV+ygP zv)%srcT90&Mlpt3BW;)asaLKO7_9JC(C>+cmvhB=hcqLUhT0#ckxG*&6gneWit=Fn_%Xx?>besE|`q*IYr!hQ}-wnH=1p=oev?ssS~ z6;+t8uN@jbJ!s|WLMIGOGu)vW>(ES>npUdK&y$+AO0z<0+9{1WyNX+BHcL#D(tIp6 zt(E2%sX0MuPNa(&q?St4OKLnylO#25l;%RIv5wOj4$VA=W|>2?-l5s*(0uC9{HSRn z&TU773Qlxo$Mel4(AcOH9R`m949tHQM-q+i=$A1=Xl!($rlFD03{6Aho>`iPMmY;L z4Y^;bX=ntqM$^!E4tT ze`y*ja~tX1n)k4arlDHxt!b!M2ii5HFfud^Z3QK|n<3^;q;01ZjX%-Cc@+y9o$8uX zObxdU!qFD%n3GKn*H|UC>m+En4hhU7X3{W=TisNwDGggLv1_P$j4Hc^TixY$4YxWv zc9b1%bxSqP5UkyxX=vMT)iktE@76R_Xj~pzmWPo0HTLa_qeB1Nj^RGxkftFPZavxT z(7vG89aNdQ-{`1msLWk84VAf%rlB&^5og(1tHhPm|uzjOHtuS)HY?5u0XyXtDN57GpGD0nJxs zdixxU^@n6JM)Q@ztjOEdnQkE?F-G&13az!jZtnkg8_U-q$zqJ=D~(xl2xZ*4e$UU* zsvQO;i!qw7pyq3M*_hKT)-=gtjOHs{^F{MZj#9oZmn_C;zA`jlpU=6jzs0&)vKXWJ z%5?ZTMfrMCvKXWJ%F=xOQ8~eDvEGs_#%R8>HD6SR3Ch>^lEoO!SB~au(w^EsELKZu zo=A+*e9^riz27)l`RXcJjM04MF^jV4NSQZh2li!qw7$qru@>lw*njOOcNhp*ns*C&$27|quu z4qq0l#fiv7VvObsH%7ybufEDxjASuJ^EH)O)ClPKqWxvD(j|*Any-9j+4omJ<*Q7x z7^C@`#w@!pi*=o3F-G%M;PBO5`PwL1jM01*I(%8IPb7;mny(^7^C?r zhE{Kf7HhC%F-G$>U9rgOlVA4eZq2woNwOHD`I@0vw7*`S_ECbxnk89`(R|UBfZIjm zC}RD#<&{q@)^(D_7|qu|m}Ty-RxP&=wpfo!7GpGDGnr+MH|l%*yUb#}DOrrse3fdx zj*gyxt;ISdS&Y$ql`+d4Z^T^Pu+(B9?hz-(XuirdU*~n3bF;-7Bw36RvwR6NywvCZ zt6)2)%lr-3UV7M&&lnJkO4=ce&Z=bA8Isjz?fYmNE#%rl$s&x-x|CTxB<}GIb79zI zZIUd)=&UM@^}(UWMvL{cWD!PZRcov}D}S15u?BZUCK6$ERtOrm%PisBS8ZHtvHl@h zgwa_w%rfgR`_suQEY>}eMHrnmi&~dcU0Q$X#yCf9K!005Z4z3CSXi?tQMtihBA(T$Grs zk0gsQI%}TBI`Babx@VK+?u1Mv!n81^6qklD0Tgw_oM6WmcJK=5+%9^}UQhjDgF^fT zii-0wBO@kC!CRL>yjoe!YHK}gRZiVURCBUAVoF-WCYb&Z^urd&yp>`1VZ8By7otBS@A8E5x232|F9By!t zv&M+GZ6jxL6-CaHyCia^xi7+V!=t=o=9h#buF|ZX6*VEQ z98^{)rK~bEhmowx&YxMtK59eBHC0uxhuMi}0#_We)L-$&x)s zWUjpn(GYMP)&%q-tAbfwNI2iwMsyQ;SD~@>K10hg8?5Xev^-lcqUmkjiKcI&AJH)O zzDLVYJI(A=v|Ld-Gj;x6ctp^#{gj^Q2D8t`Z0u=)taD3bZ+ZQv_eg^ zI+Z5$X78e9hjlYr9%^A+sXR7$ieKAa6h*da)v;>RS%)GkZ8aa3)6}tHvn3A?hhMV+ zI5GnHW%<+9EYp}kSvsL1jBM!+j@EYBIl4+4D!T%swB*tfnz@+T3q#}#iZd?~QI7v2@yx79H2X*} z5?9N&8BiT0Iu$jLvKfe+AISjqGsm=`10tEwhoF&45r&9l#OxT%;cp}}4ooCN`oK1l znJ`2oBeE|&X2m!#kqnug?=dYoLAt51(?S!rnndZwoM)0I>>UdzOzLO&J%yo643mXk!-N%#5_;>|D%&EI-=h zDY0>XATgmDN0XSdwWOA2ZY@zWwJ`E6Nh<{53E; zZ+yJhmX0?&Z``ohAqkA9*?CiVcHU3Aix?<$6E4#1ydSmEZ_gP`%+5PfK2SE%z6i7P z&TzpOa2LpjWBmb+G+Q3M6#h3JoId%qbtIvl@i25taw9`hM7WJ;0hF9!P9X5e}QH?A4D ziNIavz&YE&K;YhV;GFG%{2plrZUk^KU9qsGNZU*MZE`bkG#*&c4BTYk);n;{?HvxB z=S(bYDN_03kw3Z_I1H(b@@C-10e7tf=PV!Xx6hk_%LQ)KSyuxru5F^ze^)E5az+D2|1r8kQ#rF7^y!FL^@2N1{|8uj}&8jJ#nP2`t zpS5nm;a{%2Bs8w>aI3aO+e3l6!)g8TJGAa_=OOrwsXKf$0l%H=4jaRYwns1e7WErk zMk7{ZTXTQw4j*{^meFR=*E>L6u%*p{!_m=;ZzF33W}MQ7rB{*NpnJ#BPn&D|{}gUH zmF$0#hJpMJ{yfHcSboYwy0mY&A)A(pmc`3OrpuzZ{)vi}rIA7DvX4+mF$j-_v~+|1ICSZ-tK z4=i6|iM~C4g{3x-USsJbNIO|N9n$+O^?>vhOMM}YhU7LVAloRGD5M#kaNWjGNOVeY z8zUf5=j%4kfkZXu=5L;;qi`Ga_3}`b=&KCseBDMCq#-QjL823>+ZYFlPFZea5~M*a z(HBpHS(*xo1}tu)5K(eaEm*+i7=YGV- zkNO=*%*s;Jcfp@6q8FV2xEU(5r6Fe_%))$&UNO}VTM^WTmz9k!7!Z+-QykR&_mCG6 zdo%u(qr2d+g9LYSfDg>Y6pl3WU67!dDW(U?R5QKd<*%u%SysG#Rk8ya2+kjT+JjQd z!U#67Sq+Ddo=m=A2jR+_G?Cu$hNL#M7j^MUsHM>8+l{E`!564DVQ^ZozBI;{-mte} zU<_>zYBaCmQ1NoPN#=xlsFK$8=X!xSaJnNaI`DnHVApM<4G5n7Tg?kJwPjwgfsLEx z!d`=g`g3WY%FV$3XlSHBq1YdE(O-wZD5E=;3-RaS_H#N*)Ve4ap+~W#<50}O=4EL* zmP=Tw#F9qH9)6chFcx5a8S7~2W$9)tsVnjDgkS=<0qfVXj*dSsOLXM)Wa%?3Z)AzO zUN1|3V@cyH4^OBhtk8G=g3${S`SBPOV9?7F9Z_^T_85tf>R8Hv)P<#LrCR`LHR~E6 z^sYr7lJN1K(tWI?&mhrQ1vP24lvXlMEPt3@$GO;7vQ$A# zV~PnSOJh1v1L;DCrZ>G2W^fhMa9D<~O>a09yc4<9!&4vY;qP0$EM1A^cP!Oo>1AmxmNcG0-BF!z zO~~!%jXzwYO~r&>fJ?CzT=JbqPd2-p4(85ic*{JDX?vL24jx50yF>D_f9juU zO&kxDYi*CmpaG;f3go^E#dNS2*5B}cu;Gtj!w)rQ*{6;&%Zr0|gmA4DdY{^FJstba zNewh$LQYJ4`-a>zrp^5*8$w{1o74}I7k?i9G)Zhyp31!tlGrhYki7Ww@F98@OJZ6B z(GoGAq1+QSox`>Xm3YxMZA-o}wCeOGG*P&7v0jJ2 zC?i`+*ax;rG$YMYwaEo2^>e)OEtLg219|Z$=A9Jw?V(-iTxq7h5JX5+A+^T3pLO=2 zwsa|CCaPM&5E3!cSm$cxHd-aQD@Ax-OrvH}@Y|me9wiZrwiKb05q~`D3(Bz=lq(q2 zN`=$`l3XLpT^dE0DU$6Akon)(Cc7oau{}lD?&L8#6}B;= z#G{eufG};Vl zSxM+plY-xK@F&`hkZ2!Y$~sqcOC!3ll@UD@zeCzG^Csk&iH;4y6cRCKv(DAIwb2LL&A&)`@GZfpLQhOG}Lje8Dx!n^lotSXAXLuLyaI zD{9IMjaf7CUO{?!bqFsR7Ufk{6!;4ZtHR-h6-Cv|DXOiks0w)_lV;6KDX%FjqSvTQ zgDJIm#kCr*xWaN}QB|m_I#9LC0Sh~~8@pdz;*_1V?WK&JmSyNT+&9AD;p97E8sNxE5bs1i0 zz&@{H`v`uE*U(X*8F+WqiwGDMs6Kuf)hbvq?;l_ai)NKz^FIRpS>;h~;esx88wJ{ELQCcy*q#(bP zDz|dRoNAV3k*NNr6%~~OQynt0^D8Uyik_F8o28XSAfVcwD)ACFDz`L$4h{xXDjg4% zs1&MW_|Zy?H~$KG=UF_feMxS0O(h)|VX)$&eC&xL(}4w|&9bcF%||*!sNCW(br8JM z=J0MStSSMRN(jFdXed>)OR8ZX?+2Gvq6+E##&Ou$W%=cEWbFf2%-qnN$|5v49A){X zsNTXkqUH)9JIY;ARhG|GEfx;qa@L0L;#> zPeG|_~)FQ-GUsH&=>%19YACU?vz@A#a|oZN{y z-U;KgGW|JT)~fDTyeOk;liLBcLe;j#Q6bI}=INs;5;f)$96ww&a&xf_+}vnC7nGLJ zp@q_WtI;JQD=jN^;*^}+DYQXm#OxI<#++64?hRGXtzNa`fq5Ss>|QXq-2FuCvf0~z z4o&Ql+&$}Hug&)l`eyo$m$zrGNWEhFCtKdUy6%iW*Ka=f-NdVJ*#F!ommLY-pMJ$` zGotbBZ3c9^^2dL4F(W45?;dye{wqG~?P|H}`;OOK*K6{atNL8Cx9anY=2VY9XKvf) zZW-2d*NS^;UwSWY##Im0T-oy`->`YnnZIr@*BeLg@Z8n$iL$*5ubx*NIQyL$jeoxs z^Wbl9NB2MLrClfN88hnhXD;r4;>Q<_Oqm>$_14>a6IM;QD&wr8Ed@Jwz1^n%&go~2 znt#;~{*8N|>Gb7G_b%8x;L<;L-ZA#mi7TJIX6}J4d9BZAcgvrPIz`p(tLZ%Ks@wWJ zw(|V7_q|;B{P2^mT=~HLiyz7SV%3rdH~&5I`hiz(`0erXC4a^KR{0G$XXF zS8eXd>M1weH*nVe%G4Y8-ThfX&cI1WNbdU#u14NJiCP)o;9btom@hQ;*F9)Z=XPBz+1AgXLVQ;=J%$F+G=c_Zqm?P8 zLG)U1Oj$Xty6MkFFM80}u-$nxdpILH(iqe2qH!dR-&^(Q_O%le#TXjVlGl~HGco9= zGTMF7b&lIbBfJyv*KXg+SDlzvjG@sdq355vW{nd=<3P8I#+iivXinJ{Cx$$@U3B$B zCEGIUg*HwMRKU%@bs60D04c*Uv zPt%~`7@uewD)d*HhN|OxO+$tLP18`JaqwFuXo2KPr?r+#%Nz{w}aOD%D%AjuWv0DMHHjN7|mCE zXf0n9;RI8cFjh>sNFrl2U${SP^YzIepHHz^r;39L5oLkVeBt(uWI-@Kiv8$PkMiY{ zEXHWQ&~4d#4Jo}5K`qS^PLeFfXujwUkrl0|vY?=Y#j21j#%R7y(tO?9BK~cQb+u$M zM)TE4^Yu~uhH(~atzG+(D{zCL*L;JFqnPqG-J`J(3mqJ$8PUaw!!%ZhJMB3X>le9`@S zYrB4aBCyzEEtM?BXui&57Ht=$b#=MlwN|b7A<1Hl=8JBgTE4!1E~S^n`b4rAqxtH_ zENU~97AF_{+*0|9mZwj~XuiC_TD~fF3`?_EgC&bG;?pLe&D6peWP9DKJJfC$^%a!5 ze>Sw%kY`*(JCb$?qqBNIBjSV;>$I7#?Xy^wl0_Ju)e{;wy`RbHoXd{%wpeQ=i!eGX z1{$}^JPF=%=7Wz~tXCzAFgmLjv-)63>5RbTNfs+gc0`2HStt;E0m^CG?MtxfE#%rr z$s&x-A}>}6@BN@G)nZji7GZQ&UuMN(N$K~hqb)7g{gOo(oz)K-w~P8)N~1d*dB9?Q zE?I=pSu`efyQqhu)PK%<%Pm$E{IV7copm-e)>-ED`4eVZtU;1R7@akMS!T^Y_xY7* z@@5?dC5tdRYap}C)9WVhwyP}G0?8tb&f+nr+OCA|!~S8ho|P=Z=&Zr)i~2xHzrHai z$6|dgS%lG9w5QxIDmkV1V<)2_o7;6tE1@Nf&Z1F|+ePh@((Zn%zPDI;l0_JuMI$4( zt2a@QdOZ~MS*&`=B8<+W(UTafLolwn;+eZF)>g?PjLxDFmfJ;jOR49*`=7U1e@GT# zbQT?tRtcx9oZ+)r@ibgQB8<)&294Wg4yzh3UgWn}Ws*f0okgQLx2q49ls?bMtg={U zjAFv*Eb`)Z^&$#Vk9!B6XR-E5Uxd+F)B@eE$wWbV=h=1G;pSdGm4@3$gwa`}pmDpX z43xe*yueoTxspW~oyBj8@XQy)8q_5RhD~4fl0_Ju#m^30)F)FK6utf0BBqx7kvDQfzVRRN65PbEJtoHX^_`1dVM6w8@vyzxa=Y2}6yU^SU zW^Ht7E3|~sS;^2?{rpw0zxTMs%91R?=&S&L98{SrfkFmo;eCoV`wD*6|BX zz({3{v3=+mzUOS;fjY8mv}4z=&B$?p`uCBlw)8I}Ew%WnG1mMp(aPYDHSis|{M^yX z2>TAw$`B0o1*DZB7(<<=1S3L*U<_-D5g|h`hBw8CkfGOoq-LR4dPIb7HB3^ROrX?fWhnQ0k5(Ml8J z6BER<ZX%@<5cP7kCc2YeA94l86J)t8!*my?m2mKDJ?J!X*(#G~fK z1jS4a`T{w@w3NK;6!mMjLZ|{CSjuP5i3wy=5mC%c ze;_9{IkhPwKj=+NC=t(`Eu!C-m7X5R%}8#-VG}%j9GjApoSTgbl#iO_b1r2$Db<&p zo1C2zNX<1Nc+z4$jaI%@eLs>B3Y zDm+t@)sH9Fi3tT2iW3}S~-wW4iQ<54Ai)8lfn z>$ndPPs|k&tt%%bEhQ<=3 zbJ9|?b42CXsPdt@*k;j(DPADxOUXSov;NU)XoujbB^G#QPL04~ z27I}>nSre2lt9=v;>`*?*bXbHt;HqzQZiDL@=#VH%46Gv({80_=V%A=;kojdn&L~( z%E$_2qGKSU`NWzIQ;Q~_siVXeG3ZN8&&$rtN*6@&fLS(aoFD1AIsBvD(UWs{R?L(< zUv5S^^)tDmTIGZB!~}W*pO`QWb(L=`iXx`w`0_H6k~7f#IQEBlC@eNuJ_T32nN^rB#oh*Cs~ zCI9Dr&zYG$v$JIH{l4G#Kflc6o%cM?`<^yu&dltb1b+GJn-R1y4J)rOtd`bJ8sX-CDJYP;VXrebruQ!dZRQJ`$$fcpCo?dLobDz-IN8 zH~HNKOwDS95;rShwH>(I z>k14#$+E(=f<6V9B8dxBE>Xa31?D4(qdQM4d-RBczMgGL&+HKb;mB_nV8%;aAiphv zTL{diGVJvMZVxaa^wb|Aki9z)7YWS066d7jhymk$U#SzH9tJH2W_KAldf@RjFp={4 zK_I_Ffx8o!Rb}8Rp}<}S=FLVRAW-wNO5c3wpTwJh8j%nX0@ZH};s!+G8#HVb0_B&A zcWb20_AWLGf$D7m;!a1}Y{Qxm%EzA1%TLnNGqr^hL&p>XeI@@OaF0qXm0zG)8eR(0 z-Y($Y3BumjLE8HXxZi`YSEDIsQ{M&3Zv)_>B=%PM?H#1Odw{#Q413{7)!ZQMEdg#t z5cXaS(%x?14hCWG+aT>-1n$o=>{0h!uNfYRVxyp!GvDzF9qp-Hl7Sgv#+lkPx>DP0 zU>-K(EbMIqW|tXfVeeC5elg=L?1eYSM?%;rIIvlrA9RWC0!(i+&cfa#U^2`&Q~Id< z9tP%VGtR=^K49KA<4pD_eLn$n(~PsQR|n7On`5JJtNiu^W{??YVJ`!i`DUCcebf&A zAu;S2yFlmf^T53lguUZI+WR+fKbB#S`qOgSJ0O|BKM7WUo;=9C#{vPb#-U1GE>2g+|n3<7J>KoB8Ne!~#gNn#j? zT_Ahif%BAMkMf%qq`ld|EiS_zrEf!!_BI3eS`hY525Ike;Jy#So|6XUJ|R%~g#%Yd zVguC&)o&MI?l$8r+RGGRvdlP(_VOq&&zo@;_TB;JxEbg3GZ)Gt-D>?JF?3A9YPJp< z{)e{aXnkjeb0Rj<4;Sq>OA_Il2Z@Uc64%BG=kv0V5*~|+iZi4B6&bJs!~b}i5YzX(-pd~E z4ey8ii$3w)FpK!;wy?bExKEhRhsA|+>dv7W*{5#meVhA4<6Y)+o4K}d85DI}{; z!1-(M-87{Gf8Of$Ue_F4EF2M0IJbtU;6hdvkN1NgVFn*em-EmE+ZJDGQ(tR1Ou>=U z7C(6Cu;K2Z?qT$4?H+s+UWyNv6TDZvS3KU5#Fz_g6Y~~TNkhK9*#NM`lvgaqxE+itt^)qu*qr?F zzmVvLMo6B5Bd#U6IMi&5y7l(;=pF{>(g+_9y*zL+!sG2bMUT$VrMbSqDFDs|P@CGr zTS>#cCk6gUn;z2j!{+3v4n*o`;3lMKT}sp?`k{x29jQw*bZL$*6H9C(M=}_M{y46m~yaasdg-`zr*#Tm|PKd%O*4SstFP zBj$Hc!53Nc(p-%bpoyCopFKIbD4{tD@I6n_W6hTV&Mq+P$K1r2BbdJ-8k3V0CNz(V zIq6-(@qpqul3{?5*+{Yx&o+iMPvDpYSRjp8Q+T}f;X2#vtx1JYaB^V+O<};9-S29g z3&%)LY*u*bK~Mg^ux^*?BB&Id-b9%h9EO=+Yrb!>~Dd0-_Ntg~8`=mg+*H=Xg$DR$2I<<&=dqR+nZ% z65i(Nx)&gcGwC%*;tY99mk#R^O(7y;f6%2%x>PPii*@NzBVF^+%(BhtNx zZUA--8#;7of-CW~``UT$f&D)=b{uyXR&^IfxC^TlIR_=QK860+KHuRkwLu8Uh7eNB zSD^&2J0jWpd4j_oj=l~5!VawHa3^`LKzqK*oY5eacr4mP#CJ=EiJ3TdD#&dNAQ zqR@Lm8h}j{`XN+2o{IONy-l4>M+|m~#Ra0!?(vH222}$+B@#`hJ|tl`O6r_Et(Ndw z)>I|%i|*W(h1q=MrHdynv8-mT-wWl5nu4=W=WrxWmNqySWVg*NKQds!w?%RWVMFQY zlkOZs&q5c7oBFwV`W92~upd;5u3XZBqjH$Q>$k4sq zaJ9^8KHe2|DZ94sBr~okXpw=8amB87zq=mVf-0neRr`ak{Iw*vr?c1QT8fW5k&Aye z&&APy*<%#!b1msYW(vM=EolqE+qVu6`aOl)#Pz)JwdN~eUtF*fyuIqgT<~}=CK7QW z^sbikn-93+ir@xz#WnVC$eg?cS4&*uuOzr4LIJb!kOH~zzUvx(#9ibmz2b4TIzqdB zVC{EBiOcR4*T{pes1L8WT_g5!L6gTTt~Q6$3d3iVzU%JxW9IGzR}?I}qTtx$)l!LJ z28}hMXcwJ;6C@T%%+{w<(`S4-e}{H1RPinI^Ud-Xjkje-c#4L5v>^cMxH3(=hWgdU z1lsIlUQs9>uPA)q8XJC6PG@w*b?>Kdkl(Z<*TUnR86R92%0x62YWJd{BtaUEI&kus zTXe-Up%W5a$A$DTB+)(Zg+wf;?cdlBWG;E4N%EZhdEh-PHNt)h<7o0Q8YN)F38^o~ zF2Y`gL5UD1WNJ&=Yl_Z>(gEhUgV*qpXMu@_d1Gb_Q{vkuPwtQ}2M4>n6rAVa3$5|vLfOH^*6=6$D@x&vA*q(cxB?+7Uj$Maa{%ZSzB z_cvFCz*XEzsyz_z)5?ma@*5(Ncrs|1^#zA3`EV5$k*zG0$oxO#_)}oWs=In_>ggeDQ-qTqwSVAJ! zde+%%I&C$ll(UsP8InOzIuo@(3c(T*v7TdHlduq5Sf>aEY7B}MIJ&wEi4cN8sIAzv zAmXXKghXtL#{^jTJT+ocHCxz_s+<~)rCJp%dO9jtwEqa37Od>Qj7ZpT?6fsrhL0oX zhB8-U1+p(#grfdW3s&}DMB0Nl4VPK4G2tyrSQJXdx4VXzM~E))%bf3F}@F ze(3f=3$q{yhLDJHj&)5cJ8hMRRI-J3s={E6MYS%lR7XOh7A#nVT8B*wR`!2DBx;MM zw!<`Tz6|m%7^)Y+AiHyYYRt;^1z{U|U%OO}0>!Jspz6GQ~+ z9kf8B5Wx@mDW?6LgFx(W7}R|`%KA3CJx z^tnHtKXv1Yu~Kk`|SmD>OK8@rDq&p<$V5dg|pwq?7UGucKHiE{xLtL>5BfJpWC&ydc^gm zJwM;pdfC}OHoNM_&A)Ns#XSSl>wI2i$<9LOupyK42M)e-X4U799f_!$RI#Hry;b{X zeyLFV^1laZ#~+P)=k0&K_V=sWab9}oy(!}sbkdGn+7}8jQbI6r&q;T`K&yz%CeE)PfiJ>sY5Zx9?gx{K6~ll*2FwbulBCH&%XI+NUOU$J=gHv#hoLLz4^5L9WA}x8}$Er>OWd9sB8r$i_S3f`3x!-S@-CC49``zijRsZbTzhW!z zckSM*{Bg>~6UP$2TkahAbiDyrZo10tTGZ~XNBI)dmhZ~Q0vR3BM zRny}0r|xh0gjPP~A8Gky)dz~^-|Q7VFTLZerH6{|*fhJ(o{RZE{W>5g@{LN`^j>d0 zdgGPeJ)U)+y)i6v`Bw*jnbu*-?mw?Q^@=tf*wzPM`0asVmqu#SlYKO#QA67db?kPO1#djXG;fJT|Jb1KfUgB*FYSwa)#t z?#r)Vb-bt9*u{7K-Ca8^|Nl;}MSU$^gxI!z`N~=UX{hK5A*S-8f!V-^Uvc|mLK#C> z7yQ}Az1d`sKc*aG2uYY1pL?f;KZg2Dhn;$IO3(5=*YJgs7i0!abdMI3Y?(>@d7#giO>~2Qj^X{M1cKc(fKX=%*Ye}6M zkKgW(smvI<7EvjD^2>WK`(tRN=&-koFznp(Q1qFt!!=o%V3QmCwJqNJv-u8ETx!clqRH@bcr-#c`H z8Rv(Ys%x}TUE-%%@24sD)6m_j2%4S0{WNt%A^_7c9sM-Pews8tO`e}dn@r2F{IPTga=C;jEVZXN==x~@<@$C*Nl~#^15c0)Ktx;ADu%y?Oaz4LH!SF zI%^v0X;lsNhpL9oYt;_*KPra$7}j*8-i-qFKdjLdJf)nfq5g+8Fa0f0 z;;SK~9sMiUFj${T7Go@?>7sN}AYV0gUl$|`7XzfbozL$RBS~Y|d>!^g4KrAks2fFy z#HLQU*Mu~7UtccW7iL)Fz!=3>Q)X$tzR6kD%3$@9EXFALYUbywn(k|iWHCnZ)m-tl zASdp7gSAMq7^C>Y1>Tgedb+O-lEoOs*KLZgbwheqGFWd*7Go4&7~IH`hrrXt)z*ET zku1h2zM^y%Rq4}z9c*Z@u1OYS6kjy<5VZ`!mb#+~7NDh8PeHu%!(BaOwQcaIMsFMa z-F;RVtd^24Mn1mNOtvOF%p&U<*Uo)eNB8BHEXFAL!tg?}C|@mp+wz6M8YWqcQS#N6 zSv)R+RQhm_KMdA=lEoOsS3AYmZL=Crb z7V6y?Yp{NiEXF9ls2eo$b#us|b_UByLp=n>D8A^TU`#W)Woz|9gH=zm7^C>2ZrSkV z*t>d*!HSkF#wfn%l4RuT=$h4`2CKJZF-Gx4mlDHQz2bUZ4AyALVvOPo19~4{M;iS- z(O_jt7Go4&G?F)bZE|FEGFZzbi!q8Xx*riN2)5n@ZF4H?=hr&PVvOR8MzV&l77y)M zWUyYBEXF9ldgv_jMN?YV)qNe4EXF9l_|8J_H@;d@`iH^NrmqusAHMwt9)BT)+BN0X z%h4&uAYVdg=DRgW&n2=Um|>zA7}cI{mL=TEh=4OWa~F-Gy# zlUbUtW{$3(7_56Fi!n+W_F|USN8P*S%S#3;U9uRX_)1WGtvcRjw82^;S&UJ9B{EAp zmyeZ!M^aM)8%T$1TbD_M+DeD!0N)(%fSyzMcA^?+nCM)7rz;;V0^kAF2-Pf8YJ6kq+B zrL~QFYOj3OVC|GF#wfl9D8A-wA75gyK9(%TD82?Vi`qN|nljdyK=-m_F-Gw<2w0jvABNwva5wD87a$zN)SH}qJVvOQzIJ0D7*=P!FV`AWylEoOs*9gVe z&3m8jWw2h9EXF9lMk>B4hy3+rxSp@0lEoOs*S(6bDl2b}H(1|F7Go4&qZD71uLioW zza)z>im%a%uVE8s-!NFUDG{7Znu|jXRx9ri!q9?vCPu?`5|j>lrva; zC5thNuW^d6C+2*7pTSC#EXF9l#w)(IzWUK#gOw*)j45N9K2#v#DpC}0PUM)Cpus)D1!lt9}1TKZLpe37GYFYn!;MvEf=Rz2y_%WN)};4Y~#|VW$~Ik z9LIKizEYbEEuN-2WTgJDCv3?WXBw1aC%|( zu!$2=rfP&?>621t_M15=RZqOG(Y*Dc7o8fO4+i1wrV`5vF;yp$Zl0HuXZl1r_(a@4 z3#(D7lWNjbpjyfDERNc2o0vh;r-%bYDJ2&Gqt}NyUe7Y-8>OoE@vKMr#TX@_a8T5N zW5g^@)KU}dN(8}bysX`UMes#zYE)O@Y_9lr0^HUDan3kT^bHD(Ru5nn6WKwp9JV?Vw zn`t&)AxlX{W-4ZWoi#;I?kt<{)TTzmfu5g>H8-EwCb;PYS4rkbpSdm#PkfrHJXt~_ z#**ZFx>|A-fR71_^V)}R73)JrqJ0ZaDInj702EV^>I|g{w6nn%Z0N)+sL@<2hE^oR ztQFXfmRPe^U^`i2&02x&Y>72%1-6SN)~prSu9jG{R$yZ-v1YAW8%9^-Q}3u)AH5Gj zD`W1ieF&;v61Y3??KZSJw1^NH=%7t!>(lv2FP2e)rO&|Y&$5gXteC*QETaTVpS#!J zmt~Y-bq?&yGRn6A&Hbq?56ix`xo{`TDgZN3tl-KL3&0H&>ziPuQ}<1+8sSUv?e%>b zir$ytcUACZ`A7Ov&6f^ereB;S`d>FB%OXNjEG{gfTe64{B_G|~B1-GZETXjfvWOC_ zjur;x1j#);@jbCFVPbE$2a~n(bd+~>o=n3u%o0pLNV}`^UCn#-PSfXx?3oe@9e4HzxHYZ@J=rP>S&*a~$JoF3I}#ge%R*p2^2A@8#IsYA(s-Hu`{F2o)o2zRTv3au>EOCY;q= zlIgg8n1ELaN9hqiLKSRQbKu<#{jg}8Z38w6beCj>qvvUdfvG}|@ex9?S>dKaA1^V4 zqhN)jXA)b3z{LZ%CkPzb`y&WkPv9!yr9wY?v4B8#Syt(*4E+R&AshuO9Nl%#2m&`9 zxCes3Ee7s~AaL}wH=SN{_ynu;QMtSj1a2O1yMgQ6Nf-=NE;kUJ1WZqQ?ST-e9jrrK z7BJQ5MF#>sDz!@Av(S$K=1+;E2P#&$BhU}S>yO5<5D@5Q-wM|f`g~xvNgSPSRycZA zb`+RK^qK=95H1gK-GSLFapiDqW$!r@#0_B9(IbC^KEGwp_SPeM z4luPm0vE_0wLcFq_e)%$c15^HfZ0_B&I{b9z)VOIe#_yXRX!#`zZMufb?69zaOAfK zFliDOD1FprECJ?qi3`*p5bix-{w@R85V&f6@ymK_6ax8egt&gdOf3UPehYzlQ{n=p z?-Fpwf!Uu70U->VRr!&k&c>=AARFy1n7r|h`a12czSQ6N;p7Rc{+z|vmT@vDf$&|Q2J7tpePbBLzxH69X-+e$&*}7-+9w2>b1fUVJc*_9W1Pue zIP~j-w6_(w*UPX+>H8!|duM5Cgr2qOft=N^x9 z6B~tF*_%3^A^I+my;;C5lGt0>TPrb|!9ez&1McNA>_x!HF^Pf5A&|YV#^YLpjY6RG z)j(W@2@KJ9f$TK|uBF5VvPbpNCrEq!fg4qZJxX5=Fhyn@-;n7^<}cH>0`s~VXF5N~ z-Y3A6m~j^N%1^{EsIgJFRen22j6lls(!yRGaEWEuqx7W!Gsldxu(ukRjb@xhe%}V> zBQwsz-X&oEGUH74sQuMXvDsQ;JymN-d{o53&kL&Dh*^19N5^eMf%!H3qAnkns-02|fT?^7)DR7liMJeB^K3YmlS@qEYxE?{+8x^Fz6yRnC zVXr7id#i!lScX07U)~1hBQwsT{apg)FEh^6p2=SQG>nU}QP9iT!d^dMMw)RZd(^+s zFW{G&aTfNT1LkEj&Sa1JgJTjy>7x*+Kllu|Z_2Po`L*Mwt0p!Ix5{q}Fn5`8ru31$ zF~Hn!##!X|5n!G&<1FmG0n7(xoQ1vfz+5xqO!lZgYEHp#5wTIYRepN`)8C9U*$ab> z=@P>Ru?tim*}&zMVUNmhJut7DaTfVK0n8aQ&Xhi~_XjYpbdkDS<+m*`ab}#!9+ls4 zU?!V!7U?ShW~CWtvKIz>+a*S%FmU<34qR~=_9(ySfVpbMS){M}eRzI_je=e-ru31$ z9>5GV<1FmW1ZJKYXR=4-w+5IkW}Jn+L%@7w#+mF<`CXD2h#Ug7zZ<}XP8FD2<+m9y zUClU)^bG}Of*EH@AC=!CU{;xN7WQ5SX0I7%vPb3j1u*B$I176frr})2Mj=pssr+Ij zhJn}xD!*>P^$EgWYLND(1D8{VJu1H^fZ1xsS>*Q!FrS!lrt%|uSAZ!$UF23T7YlnW zfazeyne0)0^ao~~8E0W{0WgJToXH;5$0mspDGXd6+kx9thCRyfX<#l$oE^u3>h~Hj zjv2zMUM{Bek-a9sbT;EG@;exqab}!_y#>ImG~+DnZ3kwL8E3Lb^>G@Q5;M-iUiq20 zAH+r>P=3i?2VmT0oQ1t{z)UscOzETgEtDAYOCeBwtORat8TP0?_5gFtjI&7J1z>KN zai;W9erso7jWKK#^m4JVmk7*2GtOj>@;g&v*dTU+@;e8({4(q{0DmJed(AkD^nC%$ z4`!SxePl26eza+96mFH@yMXCy#+mFzz(zVSIcA(i`knyh88gmgkJ7gvm@{Uag}pz3 zDW6HX@X3eC9;L4ZFrCdf3wwis8E3|s>{0zLkQnkyAyEAm0Jky-d)tGw_d0OJW!R(h z;~X$o%{YtvR-c9O5H<>WJ22&!?DYU$@puQf1T%{Y@iD!-u;BP<3kzcIk22Vrk% zkoFz{?x`~D(fRvEkoMjM?nD{(D8Ii3Y3~|vjya-K^l~{0zr2d2=Bv#8%qz`Sb4nbJq?`2;ZM%s2~srNC60d+YpC`dR{$XvSICO95u48E28c zB4E~ zxfJ^0{OgVSjfeek{`n{m+~a;Ye|v;m8w8H}zi0h${(h;PUkU<8^}E*(=bt{p6$gQ% zd>jc9cRUCjogbeCfus63?T7O(mwLdR3j#;qnEeq1t^;tj9>C5gSoIq&#P93HXup(BvV>Nj>jq znw_0Ksok{niA{r2_ZvK{*PtOLZ2#nhd))mJ2RDtROkBeD0=8-Y2W!ox(CLnzm!YK-mm+mTu;D)OhutDA!Aq{U>PndyjDcq<`G!YDyvgm zR94%#&6|zmNxPBbgNdmPqu8(o}~a)8z*h^Iv&Jf8H6WEHN%$TgAr#^*%z>&Oec5geyjsGe}A&~gCuVWP3w@z^R>E%WQXCfTkpv8 z6}#J|9I>F4r}Tg)f4|d{f3wQM!@|awupuo(85Uyt73EPjcv%d&7z7t}$zarV0Q1!h z^Pvm3mfQwpKr`WpjD&-_=mN2Nl`cJ{OD{q?ip^=;hyAlGozkVBbSWIQOax@=>yVVoAIx z5gT*Ty^GHStnr33WmE~w*yu|59NVj_OU-nttuFP1^bt0>nhu>;5qx?V^*rnLUP|;H z_TEIs^RJJc9hP@<1CW^=Jl;I|_?cEXs^ZQ+dn`XE!0T&(WF3rr$`SRu=sS4Tn|p3<|$mt7HgXHhk2u6Fw$sFoc;$3KeW0}q5`H3mKc z_{*-Ug#^R@l@!fOED;~^@xJzwy`j-4fCTT!WbYALovFR-Ba&Mm_Ux)$934)7N!Loy z0aSH+PkQ#>z%oGlJ^O#W%i}nl1dFgHn+#Q_XgnS-mV-(`HCL^%0xsQkaFDRfDc2$M zy0HYu=|tCC#}kUeS5S1n6ddk6?9M%BPh1x6Nc0{ht=oHae@O^*?h_>x<=+33qxZ7p zI(B#N*I2=+SDl_X2qD3fa7N+$g(u}eB07$W z390*2jvIQTgYNx$_^$u(=X(fK@T0lDtQgO25IHnkTV58hYsR zb2_;JqUt9;Ef5p-iX$P;J&m0lcP|@K5sT*Kg~_@pM@22FE7G^Rc(oboz9SO6HK|Xf zWe2@C60wM2FD!0I{VMgP-b2ahr>HCSXkBSBcctj2tUA(~=tvX09i9IUT}4oO)RRV_ z-mp(9a@J>EF`cBMc4-JFBx9k>{QY9Fnq=>Bv^Cd~?Z8mlidH;Lk{1gbCQvVVcWLeo z?r1}(qwN)azE189?rB51^@==SDHk<@ZWjj;3vN%s!jQP^CFNhQvhdxcqKAC?*>LcqaPYg5%(zE<8s%-tA1gb7_GO33%xUkhgwOc`>8We%D)l1@VO)}dUje= zCJ2KlXWIwZoVG`?7ro;@A&K7c8%UyeyrAo7NDx7NMjh@ms5VXZ&0 za8S&?^Eg3JtriQ(R)u-0(okEJp5lIx#5H4xjCIk>Uq{}(o=Z6WsgEGdirc>}EZ zSCm(}{?F3<>!Gt7BzO;LRffs!MT$k0jVlhEW9libvszQjD(6wNr01DSG7KpdIi=oS z)K?cs^O1X8QFPrXNFw(WA&KUW$GuX@fkanVr>y{ci`?U+%&w{}??jIIQiD}DT}z$- zgR4?ojTF5|cWN22Sduhuo+rC$%*nXU0AVFOtPd>91(Sf|qE$FcoMv(fQCu!)DPn!e zE^ZMhQmTJZ&)tq?)zsD$#j=Cm6VyPu9m+CrF|Y z?$M=t_1GzpUc%<&>HX>4ciNUhs8CdN2jeRB;m0?q|NNH ztc2&^aLsXhQub2~M|#pv5lb6(J5J?yvt?oZJFT7KdRqb4ELy5HJA}@9;?PoC3An_{ z&P+Ws#Hx{^0aIrulGhcIDC;ChJFq!<>8C~9sOf34z{S&|(D7KAE(S{%iFt|gc7j~53{F1ja#76^=X?+T-smh+oOV(q-U zy-OI1!T)kzS&FU?BYV5vddx<>ErfsCXt;~`$87(AaJP4P43=!NrMX=*4$$r+*Qk@O zQCN0wWQ~FS&KAA2}Eq!b)iHU|S zTvzs&IC1-7Z+i6i{jRJQ0^Nu%Ty;5R!t;`tNT3PlUY7K?l63lr%}DwN9C6auLtuC7 zApG}9FIAE*Yz0m_&^}4m&^}2oRg%6DNu#8X;8K59OZqcf(&_U4-z9y3`=H%^{%$Jt zC@uwI$~xuE7~GJ`ybhPS1~w92K}q*>GToxJ&{@buzDY~>^Z#|askI>CKCMOAvQ9X) z7NC8KTtgcvPqHgX-=ZXao0jygTGHuh$bVPll=KiK>B3gvqyz1fbPes3^boAJULz@g zf2b$_SFE^x_n)Pu+6tMTqJ{mE|_OaM6ee>&@v5#ZVLWvU__mqcmaywVLMjgTVt*@<#bv3!uIX?pT z^=*92SZ6iV6?O1@TUXSf^HCTpMghNEy4BC>Fu2;!UC9V^C!-JI=BB(S{}7%8{DORU zMCNFf&d8$Pc3Sx|T0D2a5PCfI>I0H-p`L=S9sMcBVLt@y-w|IQITM|EOGpQ?Ic;>Q z6*?Muhz|Zf^foj@ztc7w(lVC5hx9%(eu4BJOOK$>6&Hdvkc2&-t5~vkzx7hNNApVT zxIN7pmS1Ae^3d)M+O@%5Q&#;1?}0by$|SE+T-H3`iYj({b1%~Mm9ArMZ+wO(Ow$A^ z2abYO2-F@ZZ=pONxkz6!boX(N20{`#F}gIbUu(UvG+l)U$m>(Ip{~my5{$wYpN})9+vO*_Khy8v8=E*@>$0xpWeZde!BnlyiY_TL`73S zB1(aVaehtGvOQ9j_P*u7s(~`Fs^Tf?<)J)?5fw|ag$Arh-^N%|Pnp%|>V7>3^K{&Q zT90Kl&=6Sm87ZQHMsov=@~OE0^-8j8pgz6D|5DX>d*QC-|FCMx$^o^jqRKpaP2Wd@ zh5YVewydwQJb4)1fm^qW+kg}2w~zTi-6Cl}zig;pl(+BiQrw(Z znH^T-#-q%6b53*Dj+;g#i0_XK&-98;c%h!|6>Lr$-5tKnl24grYYQE-tzEcOmU8}z z+_Fq6=+^(kQ?sM)xH}|~`QDKHG9Rc~=+Rtru94)hxl|nyJr5?>=KhcCVmJ~po9kk< zZ*pR_rJt2ME!>cy0Ah>j4k(h#2zTkO;lF!YS3ZR&O>@g%#?s-J&g1dM{`_-x&xs#B zmG+bB;$_!}-wpge+(yo=MG^ZhyT)F`kcLJg)cwU4gG5xpL-YuLh*7ad*LOP-|2j4& z&qXg9J7sMb>wK%Yy5Fs1RIy&GR;FA0@0k%PEGsp10qJ|o3rG{?0#Y4Ui#XhyQ$OWe zO*MoZ(ZT=TRfO)$#dRG3F#5Sg$@1H*kt;Nel=DrP<9q^0oFD9H;SHo!nSQwgUx;H}iCxnEh+v;3Q5UHt@*5rM&mvLevD~_-2X;O5IEn)UL3FSOT}umb0I4(n+2$V%SD1ZAk$Zjj(AhD$_;JCF(AlkJ9&vKZ7p#s`7OIj*$&h$A zV?ezZJw1?9n=3y9(HMjkCF2KRyRIT1T(-%0MO(DIc_eYYABo~FdW??`F6l&S*aU@R z=tT)F5uPA^HpQ>_d(f+W`~+cP68~0eN%IY$$lptOik9Z$Nd8{R@(q7Qe#8IX`~&AJ zBo)=T1Mk7IUNy?7Lahy}? zim-c%3dt|tB)KAzR=BF(9pQ>_Z@??1NF2X}<7gb?MN`js93RK=034si@pw=EPr1-t zgzh2?2@4U@LZq}1EiJ@L3j?Hu@npg4&M54efnQx^E$f-(aeV38SqZgV&=hyC92Jh6g&5xF6>p|&b^B`JHy*EOFXBeri~2%i@x;6@>MQRZ zYKNn^8-I$MX+sc2vu_VcG}sxC7IW+zNE@&@ZF#!xAxO`#ZjG*c8qx;V6=N@cVe~1a zldQXl{V|qGu@@&w1vCyJ&Cn&f(m&5Qx>ShRd|kQ|Cxp-?>e5I^A2Q=XNGDi|A3Aur zdx)oKTXXtBB2K-{FyVXZ6|4Xb_Z-;cbQ*$QtT3T@bTVD|gzgZ2{v{$4@Z$yV4Gb4H zGByFf#nX5R_@Q1=-g8nv!bd+I`YlpF#Ydk3J@pynZmzCR%!QgdG*4mTGDEup+Py;i zq@mpa?S7%%Y-nGCmL6EZ!Y)I*4_dkfg7&bXJr3==LVL>4o`v>^(Eey>FGBl)&|WvR zHfX7&VK>asMnL@_<9J(})|>xwEqM<;bIk9_ zMR+Zf7TA=~+q{d~FZ6SEt?6tb)w{aiAVOVGWmBJ6-C(sMqc`xI9JyBLwvmMZ$ukYSfo{}UkdcrEMQ3YA(=A>h;XP*Mp+LZ&11?A}* zBULCUR8+wzbl8~ATKgfeYv&`ma8=}fyL;%I3c33um+>*wc_uX-L%rCfremn{O=>!Z zdWlI*$50oT)N~B>gC;c{L%r0bremn-l<-YA9YbAcQqwWibRqCX(=pUulbVj9UT#v; zG1NsSH626!ut`nFP(NZ)(=pU^8v3S$j-g&@QqwWikDAnU4D~9LnvS7<%%rAcs8^fR zbPP3(fPGWKBjTNpJYiDPG0;z%)N~9rT~~dL&@t3>0{N=x7;5_Qh_9NCq5h{yO~+8L zHL2+sYWfX@uMs+S?R#?TAo!?=-f+Vr2yoj+a&&cvXkC8VY}Go7{`kZ8GVr)>fxx^;5eav-&4 zi7K=mOIsjyVCij0omis2j26~*+Rj6|gC#ps(1RsfBAp&#IBjhq^#L~-E$KpMr;6-bjk zKw&$D{A+>gMX-cKtWd;*<>QCifEH*dDHuW`MkPPSAPtWHpXm%C5u>UfW1tV?l+F+m zF{q8Gsmk^`d*#(yi@Zoizi z@nO&}b41w)iSp9NFQ*!VVg-(JDkRFOU=XSYHZ54$?q}GZRNm&x2xMC@$S(DKTClP` zSeBwqu}kNtK&u{vU9!1BGpZw14)ul(TN8=W%0k5m4^%3mEH*$oA{q40D!t>_uJ2hN z7>E&|3{r6 zBx2CD6K%<-7tt6LD{$0`ghc0-U=S(`n-)YowLu|;LE0#6`}88g*(SSrnql3dYI~Ek zEnu2m6(dqYsTXM`n`;Gu_f~2C7u&T5D8Ul&M41bTa`~!ANq`a*I7)+%s00Or(wvV? z3s$!AXqRdyKnVu6O?GKes|73D^o0Mvu}yZL)ePgmmF;(>Z2|MG9f78DGg2?ggKX{- z1m0WOeUI%1s-2&}6SX5G@^V6?BtY#59Mz7HsCEQ{(wv1&3s$y2yJZOmwoP{PG{g9B zWt&E=Mj!86f&xu>GdzeilTF|DZDscxw(Hx+NBN|LM&_afg~atFQoZAu9aROyP_<}CM_$Y1*`N9 zWxKvL9HqhWpYC2o4GW3Nhd#Lv+%E|nv-SwJb{I|0G4BNIxIBXHH?VKp!eSKJ0A&cA!iSn~Wq=>JZ zXb}h+gJK1aaw{attzZ!9C^juv+1@T}ONeHdT7lu;@F47x&7U=+I#T8A5IGI-wDNbb zL@tFy`Pg$y#xQ7w!&5za!Y7~XO+~C0u0s&MghWjGya;0#E>SxJr)zNh zzky9KghY%F3}5I);OAn6v*q_8!nTxlGTg*}!4wiPKVoJRdU}~v(N=L%1@v{KH<(mo z0$)RysIL=DvQPKQTCnnQTKJ&l_u#_@AGZI<2iZ@D4J}yt_)3(3xC@UaWN!_Q|9@Z; zITsS;@H;=o-9C&zb%v0Lab7U!$#@n$LlxPc=fnCyX9tw6` zZ4X=6r0z`6m}F1jseXk-^(&Z!DlE?g-dXu@ASuS3r)HPVI3pcGqJBWwC7aKcVYh;` zi*|#w+mLqKf0TBzzoiTxuKyzKWRsTS(}Go*)MUGI4d%#+*;!dLXGEsYh{WQ}sTmU{ zMNXfPk&!-Qa%78Hkx?yXwX|u-33JnD-3pg6Z9-Ps%*^Sw3ATy&L?p*HaYD*e+pMe! znOU~UnD#8yHZ3(RYu1#R+0!PaX4*2-Cr>esI4Ub01fgefQbu-$ZBhnn@PE?GIWzE& zplm7&5tB7b+5yGR<>(w?YOeT~gXh-6(`UfOEImg&pIPMenUhi@qvy7Wjvb-Lq-1B# znwhCY4Vo|q$Jw(|vCm4UBAXRCV`f(5tn7@8nVDIslOmzZngZ>toLO0^({)=@Q*$C) zr0a*mhAeg;y>yu|b5=T=Z;=++B28zZ7-vkHkU1$*!c6JCZzg=A^dgfI$XDfxIx#DK zdMX*R*>dj^t>P^HH~+CxyQ)3qaWDG4M``J=i-38X#nN9(rw#cb_3@8aw#ywn@w){^>n~SpHrdnkl?R?W_HXyz{8ddpyIAX~DffOerS|bUy}Mq0Y8rxG|ue&RI@2hE1sA5we7n-^Z?4U56*;D+rZ1N?Gx6cUu_q_L@Yjw}eL8;g=Z&7X zUw--Gp>IZ?{4(P5>s8`cH~sXF)ViBn4y^pb?hnR(J@WY>YwaVN{V_W>!@ITqi#Jcy z`+VwW@16~hdGwQtKfM0=_AwEZ<(!6p)jO29E~HMgwg=w+;RomZ z59{`L|NLgpy0gw135sy6o>ZM$sp#i%Rmt{!P|`xoc#%B>uiIJ$ZA zM<0I~wr2OYEl-YcYw<1Zi;rLaYvZHZ@fUeNpL=I`>UQmT!EyWHNAGv<*N%6-@YS>} zH$Lp59UuPc@gD6ae;u~+M2*COHD_KpUpe=MYCrs$vF?eaHI46SzT?H8>{UP7>;7)j zwYMM1ojCU~&EDwt6`l!ytNEs<7VREXT&4KXl-KLlo&Sq-Ue1t(|F~_=La&CO|I5ae zjgA~$mwKbsCCA#9=c5qTYg*I-X8b#)bf`U z(ka{dVD%mwp39rG;On%HKDw8MmO**>4^^)wg2XQ-dDuIw5-Duuk{>R^0pf`(J9c@9_ks$-l=`-zCK)k(rsFLE^Ti7-o5Kx ze`)E-`Tfmq@$VMZ(D+(=+4y_sgsue>cb4DY;qTZn_x?5M*W`nXKKi4|o;F)&ZyTQT z+Pp`1J=)|*qn16Y4Ey8ld%8cde*TsgE80)|pfK(2nvOevyy<*4_GE=?qc_hTv$f@! zlS3ZS?3>H$m-NR5Mm2hRww9jSkEO+KU7h`8^!FD$%arA8 zb-=R8W5e5RdG4nv+qODF$~BF6E$*H7zyJEf7f$ZaiFx7pj=p!VK4qUV^@(Qx_{q6? z!H(}!L%L3GGG|lyt4I2DxcAbLd5)>87WXYlKD?wTG1BbMe4KLZ_{S9spPAh1=a=fv z%KT~ewkw@mU3$ai$vr=`ce#jJFD!2NOvi#3cXj-2%Yyq49^Y7FNlHS!8;%!`G<@)@ z>xnV*de68&?f1_vc{9HqcJ*AF(YDa@OYd$wd|2$v8i&H$PHYghPdk2f_Tq2Gv|avv zts(cXYgpyGaA)?-rNtkI>+uI}j*eYwd%I2AD{bCb`fH*!>nHhF8{T`um#uOoPN3C6XR{Wp4r!6|Av;ob(zu_T=V+NkKO{4*M=WP7~T?rOwT2 zK79rqW6%u@-78js6t`|v17X`2L-!>PUJ;(8`#=5nYyKE|h~%)-9VAJiXOocvN~5nG z+?4>M-OG0z_QBi!7`jPt*y#?7!etzU+_p?frko%R&k|Mt-qe+*f0*rziB??ImE zKieNeHQ=x>mYA{5&Y$>WT#Ru`jC)1FMSl#Ho>7LY!@J-{*<3zV8AEsCl=qiw+=0h; zW=u84(7iX+Y1PN?e$gLOoiXdMr<$ugJ0Fj8%y#H5*5r+$nB~~hc~PsRe5yaDK4aEmPrjDlTJI=Cb8;un^_bjOC@wXGn7&q;)<=^o!9wVC5(}XdZ*i+u8 z+s5K9&5UWvm_ZT~`fN*!^Q#$S24YWbY~1Kq)BWu^~bbljFz6#dY^sZ zkBMdsy?LUZdfoR`(M-(c(?PMb`Su2=HZ!K9g4z9IZHwy#rNm*U-`Y}7y>9dri!^uA z?NIw!`~6cEW!RZ9>=Dva;b+iz&FSf)+o8JnaQ)xa{4re>Ohj7rQh!XWf?4x)=g<8y zag6yH`wG~qG#!sjnA39yV^$$C)H8ND@h^+Mw;N;V*&DU91D~gr3OhL9vx)xKvqf_2 z!m^`uh!CS|=$xU@O4sxh3R_cMLuW6AX1a#jJ%uK^W~NZsn(LayQd3*ktdg2&UGuEe zRM#~-q^5?h!NrY3O(K>Kgj?ltM>c^Ssow)HS=MroOKEP-+_Jn(w5hk*>KRHH~#mWonuT4RuWusp+h1 zx=T%@t{E;hQM!iS4^rr)YYL?14qdZeYU=2kSEQz{t~n?*ZFS8Vsi~!Fev_IOx`r=2 z@E)gY!s$|kaJ#N)BsI6`8u|u83&LbiKg|F?4Sl1a1;Lu?r%6QOG^N{vg`gwn+uAxzicrv)6!>zejbQ$g3< zDK!;!%|NNCq-&-~O}MVflbXu9<_W2>>6%Sag&UHVH6TQC( zTKkERnyRoPnp*>@site%N=-LibBCXuzKUjg>hzS19A971%+i*Y6gh34d`}0u%2J^5 zb2%F{o#~25fv)C4!-v?>7>P9{&w>O%6@4S2fKwO$QpCP@w;+ zo$8uKw?lU>jOj=zqd-?k*3f`~1C0t)4UO4U4UN!L4JBUHQ2ta6jkQz_m6NKWvSf{( zX1dO^MlUhC2N4=A7j(y=VrbN-Y8v}#X!OV!z2qY`jqZ!a#*ER+heltl>7=P>+#-Bw zEuoI4iPf@ESJP-D9^)`egV2Ohn+^j6i&pw>#E21Cv=n|&mG3t+W9O@*aNZRc>;M|z2Y&a z!J02wj8S~usk0#1T6{3FMU3u?zHpFrPradytVEs$77^C=#XO?fiTIs&t zl`O_6zTAqh1vzow8>|w^VvORer=PE;y037V1jZ=7dMUp4{N|`_u$oC0V-#Nre!iON zzTzZ{F^aE5#n*@{%hwpJA(F)y#aC}XUrlshGbD>KimyJ3uM3Z7|6;K6B#SYMFOQ$E z=DM#{lEoOsSCZoE=`HO(H&`!97Go4&cQY#jdkTYkhYX0;eI1r8#wfn}0&BFxk8A9Y zF<9p$i!q9?WM)w>P2s^WCwr^wzHUesV-#QgfHiy-KVR_ z#gv3DuA%#CC0UG7eDzm+QQI(BeI<)Aimw68qI^*gaA%tebq&^3$zqJ+i|)gWeAV3A z;U0rkBw376d<{~3Jv#sMF$Qb9WHCnZHCXZW(1+js%V3?5EXF9lhA_*w3~TCTctx@p zqxc%C_^LbS^os@yKPlkA7{%8xW@%-(X!GcH2J1G-VvOQzxZ>-R<5wI8%Pm=qQGAV1 zd|j(}c7?$jEm@3Fe2r9m4cxmX&S1@vEXF9l?qwF8U(`0@?s#^$!Fp7(7^CelEoOs*H~t0ZG*0rUG%o` zw`4I!@ik8IwQfkyN(QSgJrY7-jN)rNwCZ)aweBlMvKXWIn!v1Z+G8VM2CKhhF-Gw< zky*a^YNPwQPqG-J_)78fWw0KSEXF9lCi(g5s{7g^S&UJ9rTY0YSno>~V-#O$e!e>B zzJ8G`#wflf`}s0hE-G3C#wfm~K&#eQd)-%i$zqJ+E1g-s^<}UINfu)iU-$X>iq(D5 z54R~WM)5TjTBGl!wqdXyl`O_6zNRtDw{3LPeQlR4#wfm~`}s0h?@1P86kjv^e6`el zeJ@#zQGC&JJ0oB27dH+uSRph_MqrHMD+5}izUW$6U-#8evKXWIx}RB;6gt0_j#+9q zSaFiY7{ym6v$THx+~SZtgEd657^C=_rTD7)Xy>~O*8P&j7{ynX;;Y}u6Ym@rweC5thNui4Df`uVA^ANOG$mMq37zUC;twlDsnzv1gU$zqJ+Yc8|2 zc1ZQrK(DWmDu_g2jN&T?TBB`HeHpAKlEoOs*8|M*tuKRhmt-+U@ikBJ)$@_3jvB0S zlEoOs*L=kn)tA9qBw376d@WFXUAHypXt35x7Go4&3vc1;ZOLMc;%kxO>$}DAT?}7e zNfu)iU%AZkZ5sxwRI(VO_{vj!4LCf^r@k7y5Q)GT#n)nJ)pNO#-Zt)%EXF9l@|op( zE*q>-lEoOs*Aiy=whe&td}HW>#tGQ$`M)Bok zmR4Wi3Z+#i8*CdNEimx?_ zFRCwtbwaWjqxkvAqql zi!q9?waoH8mkriH$zqJ+YaO$E+lIlKAz6%3e63e}^>O_3Zi7`MS&UJ9ZBTqs+b~$$ zB#SYMuZ@bY9}YT~8m#vui!q9?r4WST9HxV-#Oo6kng7Z4_&;K9DTND861$d_}c78)2|6 zN)}@jUt1Ml4SxLXoWZJ2g@nKu#n(1y#V_S3Uw2eY$}?D9B#SYMuYWO1tFPU!pL)Vz zjg&0LD861)e8q2DzsX?Dmn_C8zP2mAW@hGXFj(s)i!q9?mzd?-N7d2W#sSGvq%Lc2x zWHCnZwL|f>E&1;e2CJ`RF-GyVlUZ6BK9LpmYhAqzCrcJ%6ko3^zNnu!SoxC07{%8v zW;LKawl#hKK4q}hNfu)iUvDVB9&?A=4AvgWVvOQzx8m#f3ya4ZtW%Q37{%8f#n+JX zFRwIMS0#%vimx}BrPbHmt)t#BSk-DF5`i&_uf5P3W1H=Te>X5#?Invbim$hrrIlgz zGYcvjtYpbzjN5|15#n(P&Y57_oHGZ_gdQh?$qxjmd_?my$w(bV& z8OdUd;_Cpjw0212!&-Vf+$UL#QG69EzUW<>!TL(F7^C=lNAcBR(Xy`pkG<;vjH5c* zCwEN1COBYPSilg2W&65LCSY}+WHlt&2r$?u>0}+2bmDY!gAfx+>=+XhN(`Ymz)ws` zVn_&(0wxq22t5!JN=!)TBn}W_Li=atmEE_uce|(J5@{38pLXZ%?wg%AZ{ECl^NyC! z`ka>{8s%9JE6>`}^m0Hiwcmko5e}kJp7jWv9iAifM)S9?TBw(r#7hy4@~q8NO6cD3 z{)?9CrSf?xqEVi;MS0d!(<_eBOI7nyM58?GQRP{a&)oJWy;L(VMKsE@9+Ra2xDGw` z+n41_9xmmjh(>wVq#mlWd3CT`X}^KkMdGPqde;=Ugf2TMtRoLRLUsx z-;g}~ke4DF7`0| zDWXxH^+zg&JjCNC=heJFN(5k5==tx~#3AfYJnIWyifEK)y`((roTGogNiTKqL2wZc zqEVjpGMpU_UNZQF|Gxj-(;@Y+cvg^?A{ymcuTUu=8;k097`Rc#OA(FotXHX&_+B?| zc=4l=@>!j{6wxTp`it_cGavuppL(g4ycE$W&)SyqtP%2AKjx)~MtRn2%CnAs_4Ir6 zQd@W_qEVjpS6K>xYtC7*d-s#i`UfvXG|IDHm!**NkF1&TFTK>TgYix-7ttus`Wu|p z+cNU-tMXZ2ll=xneag(;`rKa&xM58?G4Jw5KmjnO(^&jDvj+f6Wuu#(cfR-F(R!&1c`2e% zp7jou!nTZ@uPxkAu9x}|FGV!Uv))ynb@>nHf2fzbgO?&2Wx$1I7csaD=&pKYN?NuQb+Ig z_{n;y`*DfPvNZ-B^)CqK(eA&pw(ZPvZrI1D~1)m2>3C_>EVdZkY)Ngqyq)|(K zNu@+TSUGLs1A3|Fcqyb&OQ8}To--QG5Y1C4~s1)`Wc-+5w4Ro;LS%>pdNTZe-PNl?G{_1a!dPy&JA}@tBYAHy#1#c)M z>WkkaldkHUvG-|2QN~y2D zy((9K)=zjTq)|(ap;CftKU?I<*Gp~UrI1D~wHK8VvhnGcZ3cb#JTHYbYN@eQimP~6 zUSrT8z5nE;kVY-FH>B&QULAU= zclc?fQA>@dQitMcqMYHgFt5cit)*Je|Xzb2Nw&19NLuG+Ex+)sw7( zTv>FY-h2YmV^v{xtSU;5RWFiaiPE#9%c>#2nBmX*=16C=xEQkG-N{6JnctTb>f~GU)5e$Nr$7LbQecbQV_i*gNTOB`$>KT}iWf|Cx&acWiC2;s zxQ93~H`3lCg_+KjC8B5bL_3?8x#rK0b#%=KDQoWT>eT=0Z0_hX{sjxTB&AN+41yPL z=2u!1(I|%?--Zit^CYCvV?&`@o_7!4P0E*gMM^lf9~wT1GV%&FZ1W|xO{*oYWv_ zr3PcZu|b?HFB#+to3!|FP#u=dus*gNWW;!hoiB?wle(u%q`OhU>VKg|GyKW4jNt@n zF{m|UWHc0#TG)J!RF{Dg^^@UGl{@r0;#47|m9(Jb>R*43pa=D2ATLcM;=CS(*gymo zBLU_`)icGQ8$riXJ<2z=j3?$d$K#7)QP-rN&Lwcy zNnBy;-RvY&8szu%QN~3&vMBU1CDa-r01CmGaQbnl7Y(Q;Hvsh3iVDaK`LQT4J~+#vhXj8gAlNul0ES`%q*VR7B+ z2GliVyoHHEy@|>GRcm3ss1{X>WVN7r$xuvm7s8G<6ic~eCMXCb z@_uUehHA^}tbF?GtbD+xeERFw%%c&OHRsr+G;A}LOA#Mq$rK?lmP~VzJu^iJj3v`t zw63IuaUfaksC5`1$Drqd4 zQV(OvG#ArU(pWO3lI)^&C5$)lwhMR~Fu8;8z z!s4=#YZjMTX~s8;%Z5sWJs=3u^m?h64aJoqqx5tb_?Cvi$h$NoM*gKCVRvDMR~iy_ zmy9IFFOl&s>|>=NF@BLWB*w3jhQz>H=mCtbA_Gs&SB%UwUo&#ie9g!{^ED&i%-1Ym zk~yy|-;!T4@>##7Qcmg!#UnO}m6RQqdXc?pnv1MtP;`k_CDUAFB}17?rn$&U=4UFI z=Az12vlmC@ZOT=(FgXF$66_RvJE_Kvbf%MxQhpL6rRk*M(V$O^gy<)br;Lx5CyfFs zPcll@YUN3zNXnCjM}th^qq(~?weI4AMG@U^Wl_v^@6cTdgqq0ddfmS`w3n&gUPOP323|G$zR;yo?tj(FROs z*?moCXU?2oTrl5VJi8!VSy@;zYj$w~-z{fmpo!+MW(H!NGXo3R49Cns2YLq!T%ufg zK}l`(tfEX2+^j=R#R7R9qA;E~}`RT_E<{k(WGG#Z`rs;hI?m5&c|EMNM^0 zX>nOWlYXwOqN=c{rnaVFseZ1su)4Ciwz9ThnLOvOC@Zdp%2gHMbeKFHC@Y**RvWIE zRnU$5`{?JxmF1v z>FmncRkKQ2dEDzpUaKr930GFnsx7JFg_W!R(vq^W*|RHa3UE6iStzfpvT}A|P4#Rz zO^=jUf|VuV+S1C3Vz`1^4(S(4i{LpWvn$~O)%`Tr^TU=93rSx1%jnD zMYF3aDoWS|y@aPcTof*!HM^!@rdz&NUS&yTS#|BK>H@wmlDtwhyP&qDxU8t6cD62; zF`WMe35F@#nF06GnUjjkV8r=60rps$8Q_~N$*0v8)Xpv}nq6CIXgG_a%Vq}fwe$v7R9;Y9Q&C-6 zQDS&0{tVGRO(kjyDvE21OG-)$Q>!8NW@3+N<^RZ+Dyl6gttt+eg~MUJEVK{WxM^lU zFvEg(;ey(5X+>dmh2f!R@(JCUf$|b_y}Y%>n^M0?#1MU!&STMHbq8D;X zKAd#M%X!0GH}S|gS%r z;C}U;Mk?$2V(`nk5OiidtnPO-&|TGKq_Vyr1_|AFmOULl_xXf99R|&AS0v5)xktkN z-b~ux55pMuT5M1Eb)eg4i9H>LU`|uEvIh-N#r7XI&4Q3-*rY8S!qxA9*`_uWlx9SqvdF|53_@OGZPv?c_PQ%XCa9GKo2j~`DZy*Agj_%U+_H-C5{QDm}qkA5W6T@Nk zT$F>iZZr@9w4y^jIqd)J>G1syyV;%&<;DFIdpZp4t=V8tw+TqvZn3BP07xd^YEKu0 z=N^2UJ>3oVI>FO z0J@Spja1h1f&ui4eqm4dS0Fj(m-cih2WQ-6Plx@-l3&@=p}lt1-S%{Nzq@fzV>qn% zf}#H};zuzY>FC}?(4G$Mm+Ky~r+XhrzW1;_9g66ZN9^fPA57V7PxnpW z-%(ra=};fcf7G517fxOCm^~dXH~aD9_H@S}-5;FMZGOTT-TO~Equc*!dpaDKR+&@!!Gb62Xxb*9@qTI{(jSe?y;@* zbf{lGdC{H@^~=PU?CJ2i?w9T9a2z%N6??kLK)2#mdpf+|hQBzYdvu#U9on()yk<{_ z?Px3xmJNrM-bKHZ`)>v!fL3(a1y=pt8Qriq?CH?HzuN&FwvRuc6Txs;y&vko4{@+! zIIQT98^d8mhyC0ng)hQo>u?Yfz$^bLm<9k!z$984JwD>{_t z8*$KJIIQTfeLTC}Km^c=?ogn6=U?`8C|9FCw5P*Qmiv)C9ojkjW9Mo(tlkg(j)9L2 zL;$VmaQxf!AA36dz89g;7!IrZA>B=%7>EE`(V;2+`~TY0p=s6msXZNjw_`uEr^6}~ zer`{P{LBBso(|;-w?#A_R`o@BxdJaMY;)S zoEQ!(I+T}LqwMLhoi7^gjBYKi)ixYf&&B@ZE?k{$IIQS4!Sz?rm@phxblC4-iz~1V zhZP+TwNAq|*M`H24*Qv}?Bk3s7uQuAj&%2{9A{5=9FVl*+G)dKbw8xL5|z2(u%bhK zx(NqKh9e!_KX9;YIIQT^heH=`5Aa9Gjdknw7C!Wa%KIzNy!pi(d#R&@Btm1uMr4l6p8zZ+2b8jf^y zzei)ya9Gh{JO3-*)NrJu8-<;c;Yde!91cbeM>@J{e7NDTqC=J>P{|k$D>}3%zmJ`; z;jp5^`)x$y$#7WFq3h}iR7QrwiVlb7i*eG&a9Gh{{}I5(X*jIt&}47H$v?wkMTf4d znYs3K=sJDR0Uf^DD(nmmht+dKK=KPz9)`n;4x7fiSZTvyMTe%)C{!MX!-@_~oc}tc z+m6m)!(nwlG)dmT&d_kAquYj!*l<|Up{V>h;EZlqo;@AP)p5vd!(sK@o8kJ~4(PDy zem~#-e&_HV!+@o(@gKQSn(XPY{od8=jPAu2d%6ig z@_E#r4)wu)3+?I9m3=~+Jsp1Ey<_%tIAt*DOnW+XNxkcU4o#957unwr>Gtlhr$g7( z37z(I*v_ZMozWF_+0&sMoP3r&9m@0B31@WIcH7h85bFM57UXyC5n z>9F7W)3=?`eYC=!4*9a*cbw4`oNrHuL&5k3_H_8%D=)OCdkVhq!x!1pAzv>4u00*< zt26&^`Q3VZI@IG2{n(xkT^48G;Ee9}8|~?i z0+Ls5vZq6NcHL}Ghki%jPweTi|E=0!PlxR?c8fjTzCd!$tZP) z-rqZ;`}2eLbU2m#=|lE(Hv!!T58KnB9d_j-_H?N4f4AA5?(0DEmo4^mC|939YEOsl zaNND*Y5V)3opa+e_H<)` zF|Dke$Ji_?cLGO+tXn^roLcLmjfiH{K=jU`;Sw%+S8%^a_)=vbl9KY@@IQG z=NjPBUKI-}d+fDYUF=GUFw z@2$Vt)1my`{dar1i9qto8}@YAPyhQ(dpeYt32)oeVgH-=jy;_pNEWhRt zT?k0-d*7Z8_1ee(u&2WiJ2?r0!Me(a3ys{h#2p}gF;!=4VG`{pP1ba=n7d}>eU29m&M_H?NKqMzH- zp#kuS4f z&YpWPl(V`Y)?>}#!(7k6e|X^it?0(V`Qh3y*H_^`Jn+|wZeKWm4AA&(=-S}@!a%d} z2zEcLKizMsnm_{OVBez{4L~{y#=8rqQH~;U2Ko+w2LRoXoEF3a;){XKbiavs9%vfP zbQbqp3^d;{(^=eaJx*vYuzj7LYbfo(p?*QG$4(>PM7-#Zw zD9}yjwCVVV?V}86&M?zi)b|{qS!t#-)few~Gtk^;rn9);%Ruv%na*@S{2rseG0b%U z{D+6EhsFK;KvQ6*v$)?GK+|cav$)^IK(o$FXUbzU3Et^foQ7TyehS7Hq~x(V6wd$I z0Uh4&V+VA2zk?^6IM@EJiLR@`Iurj^#bB$Z?s#ibn_PFS zR?`J}w_?j-qam$0-q96}nhmIi*3~^wH14A4b;=m9GhBz?9fguhIabSo8dpZZu zi6;KTy5OKX$AzvP9Gd00&`E)gtsEFMLD(cA4SsPjn&X-bzlRZW!>>jt1iv^$&T$pM z?=ghJ@QcIi99J#;<`Qaz-|2)Fz^|838~mc%JIB=pzj&t{*HZXBp3n;TJ(18#_$?%~ z7Jf?zt%KiLgx14v1)&Y_TSaIi{Nl57C@pY3p-u2Rm(UjYJ%!NI@H>ytR`^AicaCct z{KCi)&|B~uCA1xW+X(G|U(AvVT!jC_xDx&u1L!P5IGL3sgwx?m2x)+p6PgU@TZC{j za0MZpMn0cV0icTrg#oQ1R14^0LXCjFPiO(49}q%U^c94<03k}1^*0#M4E)g0D6WH&J+ES&_qBu)tKYb0R5Q| zdP80z2ME6`@DI?Z zgjN8;d>J{em4I^Kg>zhM0gWKE4$x>q>j7cVPmXH?pnV8!1T>z|J%DiPGRL(E&;f+D z06K`!(|~Y-4EP5Kr4hQ0*Vk?3#f(AIzS5vtp{`_p$&jK2yFz^Md%(t-Gnv)T1;pQpk;)f z26PUgt$@BwXd9sK5PA#Hg@m>PT1jXJpw)z2;GDXI&=^3M5*iQaazYaU{g4nkv92aG z8PK(a+3`~kvf z%^cSXK=%<^3FrYrYXLn(XdNJo4$N__2lN=B4S=2?v=I=tO=!P>o+Gpg&fbJ%w z0s1we$$)-G$PH){p%9=42^9c(gisjJql9V!{ee&;pr;5e0Q4-OHbBo4>H>rs9NI6S zmk6x@^eUm1fLj2Fnv>s3ep$&kl2yFyZOXwaz^@KJ7noDR4pi>Av4QL*rt$^ke+6JhJ z&|83_gth}}BeVn1B0{dc!2TmN2GCiA#sf+cnh0nKAq~)SLX!b~i;x@83PK@3=MyRb zbP=I2pjCuw0bNX}5zzMuEdcZbLT!MqAk+nD9igRwene;mpz8>&1oUGepnnot0O$ikZGiqws0$EU2GD*1eM)Erpf3om1e62)9`ql8Mi5#DXf&bq zfW{Kq0B9dV8v%_cbPu5Y32g#&0HG~_4kGk4phF351#~!}ZGes>^cJ9_32g^7na~bE zQwX{C2K$fD7(gCE;{o{zO$3xjNCPy3&}2X-5OM=5AQS>rOsD`*8KE$sazeF$DhV|L zsv)!hP#vK*KywIn0cs?)6wqmeRscGK&`LlNLTdrF5LyRlA))nv&Lp$}PzRxnfVv3X z1E`zOCP0e`Z2`25(9?j5Pb*z_J+;PcH4p1*ZZG!8vcP z*y(Hr->fRvC7$5+dijm>jSq0=hKgdzmbg}3TJLjfwTXCcWJZ%Gw`oR`I~O-IgFoE4 zY>TfMZSHA)!1yYNLxAZe@DDHi(bI*E-iS{kr)L{OnJ8hkVHhpJaqTmo{93$9Zy>&S>)IE}PNh%fKA3+s8I~Qh77P z926Cg+nbR&^<~8%Ik>}VZKTCYdW?J7330Ib;@N$^h}#{&H}!daLdfw?`T0(bCgR2y z1j!~DH;MNYXh2-Lr$R#$!aapB$o5pYZmx^658sTYJXP>~D0u!1f){Fa(+*)C<-Os} z3!6Kl$V=r_vBBY9d%bLkex)HYO(L67z`h{{)rQD5kh}wLr|@O*83n*q%)a_w?nLm6gMwdR#~%%c3=c)Fn`*N z%wj4nqYQJcEVNd7W_hL7@+r)6+cB%z?V;Yn;|nO#lUo!?CL`^!)~F`-c11P?QRwqH zo6NOk!jQ2-9`SZQsZs+OBsVv{UQq_H{*Cx|4}$G}#$l z(sxSJl@}lks#4!B)mwLLO!p zH3|7)|K=9WDJv_itkH_i~%L7_j_4u%3UNo>GUJ@ zt?mpOC=hj%1`0*ps(#eF4{dT|QB9);-HlcjPiWj|J~l-e1^XsLN;`94@v40Xmmty4 zf)OGtf4x~rgE!AnKkE&;$M9yA&2l!5{<7R^R63bA9WP<3?gqZb?t1T`P(&)lM!i z@4G4yeKk|3`cRMQQ&A(ZoNal+jZRsF^GM-=YFF9n4Sy@s8(v=%ADuHfVLWI6rZ0px z;+q=loa#YV&|rBd$Os=u_d!I!{1d7}Z$tsnhMY-=FwtRHsH%?A#?q6tx-xA}eGzF6 zu2cvoJyg;5` zwG-IKWG$P9JX%9(eM%3IwK*+5q1j$w%1_i!ScYjO67# z`^z%sl~Zk>NLt%R);6Q5YL*Uu-9jTQG?et{pC zDbY|+^~Hr_N%Sg|w#1ULc&ApJZ0l)n>zOievc+6aQl)aYl5R4X9ST8VGC0$@!s-i{ zG;eM=o``7{BObpt8ODd?avVtEkQH{WUt|&cF|%WvAAGXPk(n+2oyL|d+;4&{V4?Nd znIfdcG%|LZ*uus`RXFS$z`?>!Y8k;45vZvvM_Y3zwS--0mN;%ELB%}{9)PfsM+4t1 zta+40BM~<+`KbG|%|z455xPfGy(3whw7XGfD~GMw^+A3%bt)CEkRqQ}IB@;z?(dI; zu{^ihJc?^3H(Xa(>(#&tsjZ)0Uq8J%=*IvG^kXM!gr~t=Au>*xM$IRWt8PD}Xwj^v zFr>vn?ljx!3NeQF_>|cS&>20kiWpey5ZPz4LX`^0hA{O6PMB6XMwJwghL zY6mTkLOvG$7gPtU$fKUt)<}EYstqV1uF@fyeH%y_KuBdxE;#zYnSwW(0&dbmFg{Y+ zZ*F;2ZDDbPR#aJ7JX^}Wh-%?cDbkUfQR_ONZBHl2`UpS|IZ#9U$h7ffh{g!=NJp<9 zW)2NUZh3XZ9Q1^jve8jJO>wkBG{#PtHWRiyIO9y3te2i~@eTd?9@fWz?lM%?om<`& zT^P}7XHCs_d&!np97}tCs5QxZrij;I3*(5#1F6IeM{Z?&VJsPKZiBum(b696?#6JO zg)onb!mn_tk4m5S*esmf)LlCm9m6+bvchh_C(@-PSv3_u3*$;3oG+OYOve<8zbI@* zCkgVSZ?1yf%v)pr;p~;-Onw{g26J4#z=yaffc-JIuU>aigN5qECFCJOSnUH`>cd*sDuX% zxzkBlL#Y?F4(sZuDt$L3Gy6!TP3*i=lSOnhT8~uitqi%-$q-|Se;2SM3$-Lz(jUHa z*{lMohEOxwL4}FtNK4ef5QyK>>UVN)W$Q6b9h}?w*&HhzpLs;fHu!fB1`m*x5Ok`LG#vM0(8?&cVEv5lG>&i05#B=3q;G!K%?BiqjfFk4$ zsm`pb!jj^`hEuirvbjoIVvH$l?`i|*PyGP)R0AV1S$0OkA?x#~%l5!PT-q8-M2p%Z z%cDl`SMTD6vT}kt?}J1)@1&PjyChq=kyB3|zNB6sSS@R9k94;Qp&@y(=$}>3gldR5 zSuVrfx3Vp$6E*={avaRy#LeRqXMVp&iBX3S%ikX(V=dND>@xs;@(pf&z7@Gw0mueScwVm4b1>nC6M93lOSH8yl=wCIjwHymouxuTsidlWgj7Fep z!PvfkUX)EKyYm%?v0H!t`X#X>Ojcp=zuJxm#_ZkYvTAGF_(4CBn)j%2N4eFf%&yT2 z%j?Q2X&p)b@W-Ut@s>6Xh(=9Z*_kXY?4`t@N{xUU& z*q6$O2G!Gn7#+0n82G-FD!7eb7jaGrJ78ll#Y7@XGuZ<-loiHL? z3R!Six+jyG>jzs$^iHak=wz(Gzp=Q1c{s#d3kZ$=#nqS)TP@qd7Xt*r#lkH_`X{$G zz9gC`B;{JVR2oOX9Mw2-8uTR$q&;t)i4dK) zUVC_>Jn$v7!FboEFrP8fMX1hORbC%S41{$va59&CpLtn~miMwe7+E%{;<1q=uM+ z(3n{S19MEWB?2|2#|MlCVYuZ1VhjQY1T)+G(rn{8McN*GdR8bIHNS_0^d}-s5Wj)h z!J%hQwa_t?e#}E&L9n&bhp!2@hpL51%lI^mT&r)3H!sSleH{tVF48p?oN<=vLYVk! z6b<7`&^<+4?3os%{5XnPo3#qg+^%FpV3M_zB@Z=OxT!O0Sy{NEeSj6Gc>JM#_)RKg zAgd}GiP{r8@rWuzKO9Xd27iA{y$TjJ`_)!5#3GrZTC%8FEYM*_%Mgnsi@<2%Yh_sO zS7FuVo)qaUiip`GShZA-a|0S0JAEHMscM(`5mK~DN@nsDzltm(C!L^gbCNJfRN51C zRB2dXkXmVSmh{F~U|!#qQhleI)LEC|^?J!00!a$Rx21n`Pb#b~D%48qYN|`M!n)$Z zl2War<`haH)b}s!tOpSWRN5~KdNQkSLw;DV=qY)FXVNV4Z)mmcJ>6Kz{+Izu@ocM} zVSE1_Pf-o4Sk%Zg(>tH!uPZFWm!@pAkbJpst_zdD6Ig+*QZ^|jl^Gp)e8eP+$W}-m zeOou36ilyI89AZmX^LnyP2I7USftaSf~Ys9kh7|I3yr;Ze&3%($c!)^OnrZU#8XS& z!I~dqtG4HzU$f*LO$zo#n`M>eeD^S%d|r=m?x@VGgCLTG7GBnph!~UuYiDvnU+>%) zim%+kAWJnL2OwduNED%VfH0D%D=n-P{XuPA&9ni`51}xH4@;#sNwk_e-vT{c+?`y#lik0eO?`vxib_MGAUp&xUx5c#0>^O&qyvQ-t^svOS^|c5nKum z$x;TNj^xsiEIHtkl1Ku&_!PbD*XCAI@`znx16hwz(rcn#>1MgX6gP2H9)ND%shLil zx{YNIru&I4{C&=X1x1?)@FASA^-_ANxkKF)@FrlVfd9wXq>eOgCmlrOT&m3{L#MLH z?IJgB!+iq8`~z+~KobyC`6?!TXm2x4ww+ayjw;1yCtCypzaac`T64UEMS;P(TWPhy zXqg7e=BauI_LUsa(zFG!H&Y@4@q(?Y?*UCp!wa&&G&)rqPb7E2d&-TJJfL0-2fXLv zczX|}O-zkK+xgwh?qS@CG$Wp=ZozJe_!!sfFx^Vjx z*@BSpp3ZM{exoH3Tik!18@}vROl@+35mtz4KxOaI60us|zC9ratBtc?fI>5xlk zHnYOkM_?HRDbq&2vZdj+wT43ql0W3mBte6xr8T9Ip#1z)0m_;yqFI@(_}yQCq$bk& zLxLm)2>3%GO|l1t8Jsbw?sn3`EPvx^dJ6FuJTa~<6~)ohN{&&ZtJ zqB8@vL&l;vl&?5AK!k8r<9xpCalUt&v8Ab9HtS<#m%}QZv6JS?Qx?h6(#>z;%Tg3O z7dn&O`K9GH6<*U`boG@}gMmO`YJCx<&Qz8h_5akM;JI+3Wc*I5ac(jV#E=H=V9^C; zxu=h^+!DWJS2WsEi7W2v;f)tTmXAhSV1v09(Pp4#3VN(}feNbpW^AQd8&DaBFh&c? z=(V=>Pqnr(znagKH#xU{ZfUjFI2AI|OQr}r9DQh6&AO{hF*Rxj^UCH%Z56F6$07k4 zOqI!mY>n{Dq2$R*!jWs1AG}$J@k|!5cQBIQnl%R|j!ERwV%W3H*Q$m-y z(N37r<*|5zNvL%c-$>RLQ)YRRJ(B3K#O#vD?IQ`~^sqBw@CR600!ZMm_UVnKHH~r# zkqtD1Q!U1sSywa*({N`9f^8(cCy#Ay?Dv~Ck8O-a;#DzoKO{{Z(f{;%Nru<#tyk5q zPYsQCKFku`5f6P3k`u8qcBFd+#-^}_g@&7%q787%Wb~Ecw#mjLw~=xinHI_Q&0!&0 zjG0Y}ZeeVZb!0t!Mw2kJ=R)tZ^}b2!UuT{R7=SUK1`6>!(eS|$PVW11Ah7^5oEtku+Ojk$8^ms`fyarW>D zj@%*ckf3n?r7k6tu z=ZXb*awU9_B>DddCwBAp*o_nrVOo39I;VnY{Y8kW_CDZ z%w(zxm))DCMQOpT7M>5+)2e7G+K(MPLtR=?(Nx%}L~HZ~-I*)`!^j;|LSp6kXkCol z9cPE+EMu)m%0|}KfXPuE(S^&x8lVxp*}OEci%&uMA?XoV-+4h#uq7A(ceN)-D=r7$ z_Votdh_OfuizqT|GtEq;LAA|v2EOR2X}$J zE82n4jRU!bxiZ2{U834YD{z$~%+C8giAnlC z=oU;Gc(rY3qK(fh%p2Wh}49DUqT zC!PEb#=WvxS?(B@j5Y=EpyW|MAYV=Gf_|KpA|?mUt$ zFzt5Hn0KGHVCVhtV3sWrF=N;~nwekf-mN&Yg#=84Zu96=wWTvm=DoFH*dQOsiHI7* zu4;l|+3c$3G>lI=79IE^&3=8|7s);RDe1=TJs=`m^x)kjE49rC5r8gCS+=2U9OitN zEE>OtcyNRd2d#ZrwgBT_niFS>Vg2glT9Y?*2$qsM1Oj&0D45^E6kr2OkL2tcM<7-( zbmpElUr=A!U`Rur%Egut7~60(N1GKtcWza&R-A0>X>aQpn7L`uq+m2}8t(IEA_?S- zyF}ETFrGAW|EwpeEm(e+#Vak(RX2Mmau0#O``XJjWC{>z7Zt$SK z0|V`)-&XOQktkY0wG_5AxoJTgUL3OO3u#-TlugpGSU zW@L~feXENhIWoynDBr{9Hd~d_--=wD;eZ-E9rT;^qd@PhaD9uS>YgbZ;G*WhP;{9J8+xUanYbRb*7Pd zO<;hUGR&1TjWo71XCO$`lPNDM#&-JN$h%L1&(znqNKDCF=}=-yi(WD0@zByAIW8u< z6!UWEJKm#GBPo=bCYmVvfJgWm*XGIyUsG1aCey;6)V1CzAqlBTNcgA~wwVz7^91!I z*r}4x#HTnx8A*kWwKGnn;WAhy3V$0|99?w1}FePOU+Ay(?k`T}g9YOg0^ zO3y<}M0V}c5NTfOCOC;nZhgFS8RZRNYnLINI4xdQqUryKcLhoPjDk~!0bLqS$;m8A zycAEQSPp}VZ-FQaM+imv4pY3v=GG@M0nFT3A_*Hd()2q_Y4yzjwdz54#{~!6`z8Xz zAWNsZwG*%=+Fl<`#G>6=b*!VwYBwt5#_X7eQmn+lFfj-X<7!!t17mJ;=@)jO=u%zD z^b92~Tsj=Vdk(7G-s6~3XM;HOL!C3**qLg7uDvJSqWb4LtFvt1`+WYW|7E7#MF_ZU}_1C+u^Dp{*E26}%%TXC9mHl^~ZsfAh3o`7^) zv6j>j?}$b<8n0qNuakYlvtPj6=OMSn>ocn{o7cB8Yit&m8m9s69Rt8oKIuy@Cx0k; z5e=k_qm(qk>Q1Fktqs@>bb`&)^Gq93gi>>9qzoou|8q74&hNkpH0mm5Llb4 zj8`G#l_$@VS=>HP8M^R>kvquOOLO)#2fb|A;@5REawxa4DZW(0CFM90ZZWB5#SbI9 zt|sT=#FyEbM>f0hI8Vq?)TeH;%otVE869F2YgvL(EuJApWz5YZ8PzhxC`XKf<@sv* zLDEsuQ>XTMii(np@toQ>!UeILXTwT0wS`c@1To{4&rNAVn3{6JD}Ci+w#;I)2D(mH zLO{X3Fd9OT>;wPIXd&>ihgeT*G7!X6nzemkonb9KzoL=e%GMz3{zMzhTCN698#L!Q zg#C5caCe|{9D;>U<1jh@oT&wJ=W<_KARmh_bgAea3%-Va8d z?7j4CdArs7?J;>gP2WA`y@{*fDB|DUF8^p>Kf5{2sCYfzgvA!VK5lEl;DHx zuaSlA@g*t#8QRL1hLGUBkrOf^(R6RkRkH(FF)WzVRJb^K;+KrV&l{{5193mNyo27J zEm9_0rsFj6jekYASamB^U*Vz{jO4nsV%V@H-qDSj-Gc5Z+G5YNU{E$|F?&UhzpPdZ zW}Lnf)$8lZI8j%wx*&lr58i@2?Qn<;%o&WW8RArORHi5bvn%q_ndcl$Ofjb~h8D${^1qb6*i>nA?qaDg zhjJI2IAsyv%f;iA+Pc#E`dt*;YkEr&PA~SggI8p4S(1n>jCa<>x}#coXY({|R7l!v%@TtAO^m`T1@iB(Zi zQHCw~@H!O?Dby=2~ZcG|hCO!$$YxBsEk9T%-nO?W_quAaJ+7w^6+D!U&B&%C+GUJh9!Y%zsR`84k zZ!S;Fh#3J91&D0Y$=fnHM(drIR`_OAsQB2*aHmk6zw6?GWyPKV+N}X3*w5k4U5_}LO zHm-nw#lf0HTRahy%z*Ip-tGC$KYvOzu^0&RE*FBtg@G`$7GW2J?aT47yrVM!_O z;W}-u&teeLJL@845-O$BupZ;fMyF~JhxHYEuj%y#MQFX37IuLHzN3$BI4OX`|NAlW2-- z`kLE87PTPyW3eBWE;xgBKddzRRqXR*&7pyBN}>ZXxm1OL#$BzLxtXs3l?Ixy*w_j~ zaBiqR)jqc~DMMm!bupQR`_6%>uGLhhrqUZEQ9;53B6q(M9uPifl|_azTp^1N9@ytf zUpH&m{EDp<)rW2=rmWh{+QcN7x4i;`osBo-#!(ipPGd?KmC+bPe&POHXl}WSlxVTs zqXH|F{dwMCEB@ z8{=>bw$Y$}<=5=!iZoNILh`x!dOLp1f*lUlD+$rH)>sC1r1MLXW#CC0(Y=*tU<7gk0Pt8LDZE{&`VOtWnXhl!HRvB3q?@5wH2@IP7V`Cxl$cBub zGxK_UY0!{h+q^c2F?(&kalLGl6~$BM_<|l^l{Qr?fmO!M$@0#wo}~2kDBl*w`2A|< zbD?E3rNVm4eq>}ygJ<~27EVOwp|@cdd^*~PK(I;tn_Cg>?$#Qj&25y@O*qEtdODig zqqs*ZY6pd7d%Bz6hEYusHhAP-R@4nl*Gooq#=&*COa>a6+^+rUu1^^|+BPX}-bl&Q z2UF>^gH6{b=7@m_LOqaYmA2R$3NrwOXx_p~wk)}cTyZ?nLR(m|R)xxx##kn=bC!xI zi(Y0o=yWBQ#8!l&SxGJprmY%H7D)q%qxwdeQ{% z&-p@iE`E1ddLd;g%Gd=7iO|S(8`u>v?rAy1E)pjX-+)khG-T5&%QLd8gpA34aG>s? z>Raq;$;VCxsZ!W9BvnkR0$gXMD0C@arAw2ED2$_g`Yf(Kgh~^#z$d0@L<8v%hjHeSxs!<*eT!1&$dDb7^Jm1MHkFkwrzbP%pBG z?y#}&^kt(@Lhg_wb_{&`5Ov!n^WIWA{6114X%t31+ETE~l~z9m*QED-N+ff4Bv`U* zCB)AcHKa5c>Ty(-40srpV973(5)Vw4p{W9Pib+wje5Epdsk+cZiM{M!rO6GK-OtY; z8kR4_SeDwiq-B{lxxTD?E{&lT&SgEbAR3u1JlTCqWwkJ>j4Kk9;xgZk|mdz zQV_D_356&Tf*fB$7fxmhWQf3}BTS;0VhV*kp+TXheOWQZH{eWR8p*VpabVgQP1U8h z{KP7Izn|??ZxEYht?iNSHkzTPWznj><`XY`gvk<$uE2X`1;-P)}+Q3n__No7>^9_P-M65Rn2?~dc9<}=2i{y$(Wi^@JXfvmo}`4 zPnbe|NS@r1Pdv|jiac>XX^RJK^sf-9P(bEv1|{w}XzDW+{GY)yvH9F+bVy`xNPW@ov5O;aE zuw{qtNDE(@MiPWF6kiy@r6z`cEldBlDkzFqd#9#-qb*Ww20u`1p3p2xjFHAlb!lS* z+n7l;$V{dRXH7rE$_9leF{6>fznm1XxMS{z$qqc5ybm}9b79Pmb6j$^i1tXAX5{G(3hhWr6Y{)7kf zbYrt46_s0k%Iq3gVO>XSarzdADLAtmC~tL0ZsR=>)*RS!yu0JPscCP~$T?}%sQxz% zT&|vdL7wHC_hY~qCN4E|PAO!|9aOu8R5a$FWt;h7QeW(HppVj5B{e}mB=%hvvcg-9 zwTe+)GfwP&wH29tPyDJWkOS08y7UC;xZxX=+~ECEYb&T#IDCBd8vMaz1ANo85Jr^@ zYm3%t=xGLHA0(@fR!#N`s%)HlVvRtMJN1AuoHZr2T2UmKgcpuQL8}bnjOapq{3+s7 z?=^MMCecx4K~)X|?ziLjT5w|_1&=1U< z!gQiv+VZSsx@ExyU0ABB)H?}z6l;H(H^gkqb6W$nqD7#E53MfP_Xzg^O>fPcnFD49 zm-`gvSljXgHPp$z&wyI03!$w$4IY-G52h`c!}X;|RSOP%Hm4_*LJD*KXY4O&n>v}% zF-wofGbBAOu@u$J9O!t{HLabgcOrcFmobu7#E5duWo}uZA*reLO7rl>WoD0ONb~61 zcBL>UgXS4LeHNcLHZvzp!_p=fwf97m@p!V0t#uhZjN+r8fZN~f_XP3-z5v7*z<>Gv zRzIXp$c6AggTXe$C?QeJexbajs`eWgHPEp-!cJ6&M^0ij)X}rh-onFY2;I;P#jG4H zf^_groLAZHM7YJx${&CHK!u%pckvbLk04y%RxB^#gkF14l243bSunu>#* zK_+`h=pchFJ;)hkmLS>0hLp6j*Q;3v4Jm2UB$Hr}-irL zIy07|$;+l1B!f_X-WjFe z0A$Wy^!27+0UyfuumQ9O(xt)S74ge;k>!wnzov6}L@S1n^KRJ7t+XYUjIp$Oin%JM zP8GK=P7ZRPI5?Ng5iaIWqfEE&ev5)6o80Ny)DZ7UbVA5RCuQ0jY#j1=A?+X?B;$I{ zcP2=6h2<4<2JcY0IS3644}X9)Gm$cYai>1g1e?U7Q%WiTkvKs%t}MrbdsqY0#fOLd z2wlk;6iqCSwC@t;WF71S^Ly%)Q}3gFc#BG5PS8ht4df1L=I~xsGRNm;8!)Jnb8@V` zr8$y8CI4@?E3uS}8D2Em#B7kdC9E`TrNj6iUw;_v`o@-3sAuWCGa-B;o zUx!(wYQ2zmfzk$0{@wnRDDx@-9=^tc&CCMDq%C9A2#?xLr-!WKvE%}Ba2(k0CMS87 z&lQm{6NE%T?gi|2$)_Y^nw^S`8l|YTuH8;pn)n8_W(MTvyOo6{R^oyo-dVM$42&^L zN!HECJXf8j9r36=%GqbrTL~fYgj#7(1zi>Et%Q(N7Ha}xzB-fc>6<;|oK?M;luh5U z>nbNJ4c+W!F2PWqS@%Q}u}J%L*bulW9!a!JuZs6{N2ePzGeCRAP+8%)^$VGTwkJYm zu>lIVAV6IAW}da?8i;Eg*5p!EGFt=(=_dGaTX*w@cp5f-1Fm7@9WpL<3s8V84NO1? zyV7h{FSgJ2dYVa!bZKgfbe;?uF=xf%$tc*27*k_5f}}1IE}pE{b2*o%onk234CA0f zht3KP?#-aF2>j&M$2*q+hrF1_K!XLSZCZUtB#{Jx(jqO9F4&|ag;jmjQai0L(<5qR z=&YVuH2rqdV(F5|CITCi5Yuw&yQ0w+8m%|Lc1tCC&!29M;2?1uni(dRd@+W>G}I!k zv9zXM zFq83Mzo20Dtm<%wrmT*K?>fJSR>%BxynA+aOkbz9IeTHt(!w6lrY6Q?=E(}H@t8Cp zoh(fj;_KhTm5cd%^JS7Iqkpwt;@k1y2xgOx>IA7hbhS&9S^ ziyEN0ECg}#O^tO<^&q2mmfK>0hMDSYp^b+}$Pz3@$k5cvVB^H@WIWNq9AdTcC2W+b zw7RTEnNE6Ya3^5n6ecdjWZ|C~U8knzXIgM)aEe(pKXAf`ObF>C)FjVBG&hJEoQ%y} zMY!sEI<;!8BoSL2l>^T~D_!~7a%ynT5;nCktKY-oo>08FgvC3eQ5JiE8IbikLX<4# zMl?^2^+Vb;RioHAu3AET>O8MmojPxb$8q074gAC*t+*}L(WTWEPv`0NmGQFmOs3QU z&K={jh>Y%ZvQ`~f&GXe^(+3U2P)x~WAqjneq*C)fEd{~R_s$d4zV?N|n<4Dy2$QxrbnM39uRx!$-jjm#b%+b@`u@8S94@`jky zF~hWkM=&YUcP2UQIh_oucE6P(DU2FwatU3UNGpL}3I)Bv);!qi&gb(5F?D+&F9?&w zxpMCqC%Op|%jsUB6_k9#xR9{WzI~VG2wIyqx^Y6 zPp~Bz$a4olg)>Hpsm#d`hmq*+ia^L*3y#tg{g9o!7p>2MM?;O410Mx_C^5LPOi7W| zRG?^mkk5qW{`9ff1I91h3&4qB_11dgaZkI0aAlmS;l{RL7A$G&1G6BTT<_+!Jly)0 zk(jDA&JyxU(QqJKrbt7+>_*-p<1!pjAmA<|hd}y>e}BN;j1AN4_Ny*NiZKwavA%L@ zFc1h%Et=im!xcqWabXkH8z2{~Y<)DMPB&cP0_Dl`(k^p;zmLpJ2vX(dW-Jn~im~YD z48|r@sdu8}HHVO86eZRLWc0k+h!S_qDw)otYsrx)i6FbEhlfRp==nzQ-B-mm{tuh_ zNHj-Uq9{z1tV$%Jlv;{)dA#>C#@Av0NYiE>(fgT$d)a(iMpnprkxHQnoeVw|FKZ$2 z*+B(^=_9IjYH3|fZRMPLt=4b!t@Lezg7;A{1i{LuQM;ygvMbk_1pPsu&kqKV$Cn=r z!2g0lzb_B|_JhB}7xbs>$dbBgRF>^S<%<$nY1&+a>6VO=0Gy=mnuiYXFiW9;491Re zIs&w+S!)z_wj|=QmRwiR19i{$d4LlhUjR4&NzH>nAN&RX^8!EmG0*$1=LC0tS(<&4 zCH`n22pQQhD;qe@K~`E(r{ZtWljjfS4?>ne3xT!)QURjj3k4x>9sK8kvmh~(3>DZFD9I%SIGh(Pv8U_pxIA%=XtvMq^#V-b<$-b3R9WrYI%JQyYiqcB_!1bluk zD2NEChWtDqs)nF1w?Rzn7=!Y?h+ow(_ZI37fnQ`Vp^cUHQx_7`#?7 zXmV=D%Pdhc)xqwQGYOJQ(3@g^g4zOpsApk~BjkfIv@giUf=(zBGg*ygO zG;`yeQ=;_dA$C87LJ>fMYU2r@&9DbGp z9O0^5{c`!L`ten(iYHdBnhil_OSV z3$Om~>KDToKAWs6U)B9qc+Fia;KEyY@ACFvb6l?TKFx9ExO$EpH-4Y-aBlTT4SvUsrx#dN zGO2dlv6Yhw-u?wq4nxYXuO2y3AqjuL%f9_xq8jete$7NV!sdQ?L^Tqrj$J)+3_KMc zCEhGF?(UIafm5yUmf!qf+B$HHClnHrp@XK;ROpweTobS}IHUgpok*Qtd&9Z9F?W#LYB#Kw2y=Y6^t zmN`5lx8Dt)_vu&%WJkc04W9y^EWZW3EPOY5|MO3PS8=(L^TTWQxqM$CGpl!mFWl5q z_v`T^T&^|Y93dc2bE5F-9Za^??6W~HGjbcq4N%~z@T$?_RVUyHB7Aprcnv)$yasr- zYW|q;lpQ3K;|?!yjr-NGl_dv$CA_9C=YmZ={}S@O`nQw9@OXHUw_H4@z@(fxqVqpOcd^sGd0 z0J?y#z9-R#5{(0)`Yv5PK%yfh3IO^ZT|GgfutW<1Ve22^>XfKQq8|WSOINRwXuU*t zNc1$I%ZTnz61^_bI}(i;=5k$0bYmsjPogP+uA-|Ri9!-p0J?^*o+Qy362$?H0gjAx zE#qi}>s&-s;&MP=!bck6x=vob8PHyI^{4XOoq)bV=kAr~Hc9lDL{9EfT1IFX z$i#9&-vBg`(70)vmX94b?a}39#!Y`<$?$QLA9&DsY70A6P#-@3JuM8%bMpgV!V&)R zffe7}+tu?Q0KW#_xpdi|^4z$?L0I=*`IUpiYfj6#;L)BB!skDvo%Y~SNJcf(?{?v% z$cmtPcVo=K1#I|4)+lSo&t{~;=!ZDi*k&__xFD3T|$sZj)|ADWBSMANn4umU= z(MNDJ!gUNHs_^lE7(2r7^ii90fE93~X8|IATvd3#!p$z=n(M*0;Rm#c%Qc+J0uv^S z_Z)isdqw;XLwCbEm8ocrZI77`)C|;q4_ak+@Y9#g< zL~!AzaTjcWKe%>~=PqaGq~bxk73|zKLb1SGcZJumF3P~b&GbU}rgS%W!L6c%&>&Fq zNZ(6B^Q_*&ADcWPyt?EsW5QoPh+p8%@M@?btMY2B7uK8I5-$J;dyeN_Vr7CZj9@9fJV|?9+GsA0{WCB_h~?T!+#@OuS$fP?+dy*9{79!l`UEQ zK;e0By~!Wq|tDC6u??FERvI?6cQXgjop zaVLXdw@(V8aa1sFzmb#2VN2PRoDk+x!s$>z-UIv=lrdlD=X&1ry`Mi7_~u&u?{mY{ zT&R7l{v68fz;de(9i6{uK@vK+`fzyl<8R>$ihsX+Bz*qnF~RKWD{O2juiTtSzX8V_I9s9ex3xf_KP) zR)d7{F;wcpM|=JT4OKQkz_NiF8!%`ErnU<2S%6vr8V-H)(Qt3%{Rr0~5={p58Psuv zYq~s#`ijwo0ewzaYvj3k5@9#a=vD$6LE^F&&^SWap|h($m*_4)AffQI-^z0jN`yks zN<0OK(Y+wgy)4mdfY6{E;lhS6jL`e?>JEvp<7f9f6cD@LQS#h$iTr>@(_N02=L+Px zS@K*ZpuLH1jy%@_h$)wx5jn0AsA1qZi2Xyq2SbVB@UAWwL- zsKE46Xdg3LXv7?$N@u0;-e}y2!|MLWu>0dv;r_0y?vM9A+UEYbbpM=D!(5}h!`%2L z^Tq4HzlX>gGlVtv(z%1&BV32)tak0^9$$+E;7=FU_CUHyXYhv~hsygfg!c*2xg)@4 z8j)N@bo6*Yc$LxN9T`IYu@XpiBK#)~t9zfQ-@D~|E@O#w_hu#VzN^KJ;a{tJm#}-o zRpWh8Dj2o;1a@D%=l-At#9?*c3VC0o!h7S9?!Jr{c+Y^%eQW8y#xGpLZcV?3(N%m3 zL-_V{SqVcc0M#cC)by+sFoY%M(YYhWj&O}_8RHt+fcgo#9r|T*!Dz?B8HTVGuu@3X z!YT0|tNSi(=0-urgEF+Z&C-^T6_6vq1^R~R+cks*8*yD#1oJ8f}T z-M3TT7pVk4(%qNw1Mk^pbKfN0x1lYn;WUKS9&1WO63et$x7Ha?!a{x610m8LTOMt3 z0Zk&xE@;g?i3DW+*P7#<$>`FgtGpBPmB(7NNMd0RZV5n{PotgSBkGDIV3Pn?_AhCG zvL{Le`n4LE4~e&G9np?>Vi`V3OGMA=fu+kZ8CO_aj!*6Bj4Y1C+9OTvQ40cy0`A7# zz9zy#O-z_h?e2;;$68@uhiD=J$!z1zR0pb-;bD;Hwj%=dPJJFP4=)6>&M>*5wMCFe zk_Dx8bv1P}v^mwYt7}fKX56H6vf{{0tt|%JaW6gE9cpy7H@q3W@{gBJ>v|#Y?pI#C z^~d7-U-7di?)UugvcFtCYtDo>4sKoc#GlWYbX`^M#@Tx>STkbB6Au)h{nUw@p1pO; zZ;n3o)yFQ;YDt4X|m(>-0E9=)*jwNDbwuRn0jUsiqXH`_-%dDD~g zE`I%I6E=PP%Z6X)z2p7h&AiILymIrhe+~cE=pRkH{oJ(+^KXr>x$4Hu-7xjQ3#xv3z=LCdf8wDdANcFPPk(Jf?zNAw*9|b$-dQKm{;khS2_~e3TUb$@3iLc*v%+fo5Rdw+L7rrxV z=jE(-}YU0U3A{F@1Onh z$ir54#%KO>`yaQSa`XN7X)8a-{mG@XePyLbto7gi=J8d_UI-QKbI4WQ1zYA{zvPC4 zpPRSuSJ7Y8nX zZOvX!ANI4!Yp34ywXfCPJ^H~PmHcge`QlG<&;9(Qn{M2+>XXfTZ-48^-z=Vc+Kcsv zzP9&~Kl)(i^FL|WeATEY{yF-pc{j~y`q#Womwxb#jbAys?ic@f{CD4cW&5L_Y_9lI zMfllwO4_&V_0HN?M!Y!prC>7t%_B!%a@$SE9e+yvv)4APxqip$mxfoKdFMmdZeMGXAy`{_lwI{qlxMSFe6$`Pn~S`EldktB<{I_?ParC&snQ zr+)V4)z9vI%f8Rw`}qUEd#7RJn(fiZ$~RjloH+A@+dFQXv+bjG*B$Z45&I`EJMpa2 z!!DXR`@3)6`r<=3eLVfX_bN`hqU0CfdF#xWdtx$_|M-)E^;1HTlm76;m0OQ2uHEOE z>VHqYvg4<%-)fE&oqP7ildl?g!?-O)BWkZ7b>er&U#p$|&;KkQcicrsmAv}xx*JD7 z`PPpH7P(oiO&fqh2`w{M#2laAEDsldfL#++*ina?MF?GcLOJ+6Rsseev?o zzBTIXH!f~};eyTAKHjnPj}s35;MMQ``k=ZOPIo>3-6dxoFy`2O8}3>8-1)zn?7nWo znnVBo%)O_&zO{T?d`e_2}JK-dwqUnjais1qcLO2T7zPUN)oA*RMMiwQj#oLB1@D~(k79}5=r^L-shfk&pn^d%OX4BNQp?{yfr?|NCKgAUf zwfOn7v^}3cS;JCvSc8?5e)! zY$uwGZnUFCyXsel{ph^(bn)^g-<DE#EKU{vPvUNlA z3BNl(2~V2V^PszD+D+brCH?!3+h4U?-=@u<8riPe`Fg(=whlbgZ&AIP%>%auSNC$f zku%>uVc6J)E7n-L-_UI1;k(YZv7`)rZDr+#_x<+Il7-Q=rCB4-j@o^0>6LbmA0AP6 zZu*ISP1=mT<;GuU?i+L{<(_%T_cpongTyD_ZsiU)%)O&q#ars#U8CQH9r(c)B?(REgNA~xxudSKZs-P4#>RaA_MawT| z^gc4LPX2>!wmmWNOqXY#`S`vEirU;gG`p}>pOd$2fA`EompdNa@pXeXw?9?mhrO#N z%umBh6-V8f_2<3TY2Ws{yKVNefjjr#)a%|GD)!jutH0;h#jnji*?i~K`F)q}|MX(7 zfmz#HMIL!=(%=bGwp>l!zsq4?Q0Mr$lf!R6{myxBy;W}qpO}8(Xu|$08+vbR+^*g1 zS394W_VoM-J(sO%zRH@{>-VlxpX+hc-%nP*_HX-+e^+bP{Do>`db^)ro7t`7?z}&` zecG$Xu#EGEw@*7#+H&@TwZF+)@%#J|OZz)^-JIX6SI1_%i&w0C|I_<28~)P#t1*dV ze*4{a>WuA;Z}&X<_sL5;FJJJr&U|5iN1yxCn#-0qIsI2|Nk#+rySs?|aZMNst_`c=*=kBljYv-<~THf39)P;3N zu08#td+m%1dH-EIRkh0cDFYt+ZBLs~PdvLmH)Bu7lZ{5ZJGGrUI(grJ-}Zj=;^(8P zJp1|6_s`hyW4l*>8}$3~LwA2#;fGh}Y##LS$%#WwnRjHpW=Vg4->NR%JAJcg_p*l{ z`6i(_>BR=;Mo(#Tw8ESL>FMj9|F{0FNegc3*Teb8z~_ceY-pa=A==}};Y%lmzGtsD ziuzH-%sc3eg0kg@wP|1*Zpi?r>h^$`M%4wzY_2C|NPOeD(j9sIr-tM4}IVD zkp{27*=^E2Bj(MYQuDKIcXz$ke(z7YZ$#g`y?5x~q1T(=eZ!8nb>|JZe{rRUZhhnx zr~9LGua7_6ao)YN7M;Ja@9Yh$H>59K{B4~D^?uF&>bHa)pFQ#Ju$Iw|T^bF!BX`k( z)9o&o6zRY(OHw8>Hgl~4as+U_iVh-pwZ@qm8RO>FQ|25;FG&*?0DyqWXBy{ zK3_6vXYN&PBWir|3^yp!rIN-y>+F@qOOmgnetv@MysWTug!Vlr6&?< zKVR>sTip*PEZ+FtSM^p`s9Nvpy8egn4&1%C>4bhKnjH0ScHeil`faUVNgOb;(^Oym zC$?PuVO!OQJRfbo|5NAN2d*rB=+VSKst@izc}f0#U7QUIO5YzaaN_30J8rCd|E0&@ zo&4^biMP0KzW?PeYkkkBy|pA^EQf@_{>doE|Z_`|$hvy)d9|JAW=7_~ppabsreq{ozLU z?HGMx_0Er;e5`q&F0F4I(Z>GGywI-v)!(doyxp7&-R@lb=)yVuCYOBqUHFETm4{fa zeShxJ4#%fln%i{U;kG~h)_ckHbvx7yNBslG$&?it77snz^P~h0_V&9UHi7bcZ1u z-|Nt%=Z=3Po%an`v?J@u{=Ht?vS!-2imx^E?Huy_x|87(KaDFq)NEbmg87vuZs;_5 zZPF7Ht>GHqc76Acil0=>Y*P2B-h<~gKK#eM#gG2yc>Z|)9sf))&3t@9B@u)?e>D zX?_3cZ5tQ-_Rr~-ORPt4Z#nVv9)G%$>-)bv(d?Vv$4XmXOgnbh8y)WIPperkH{+}B>Nb9%%C>(#d& zzpc*sEkB;z@kRdrR;wB+mA!0HGVR3Zq|-@J(?8N{jk=$2ZwkTIWlkC z^>Ooic5X7)pFBG8;MfP3Jb7%(Maw^94yAnCX4iq>)&>8r&+YM-uWsiz$M=5ell$MU zaCYXa-~8U-{SzOo={n&+tF6NpHtIAyZR3?S7fKH``DkC-=;zM3(!W2M6#4XySMQj3 zVM4oEPye?tb?mw2H~BZ69yfSy@@K)_PZ#We@60=id5(q~cioZM#FCH~IUXee3F6eSd>(|0`ogAFuJptMjd|*ZpAG>ER#W{%5y$#xL#g zZlBwB?QPJe&cd$q=5PIb=A;fwXI-7WxMH))^=`O-%X=*be_3SrUbyG9^QW|nm)bA7 zwBPsOqrQa4tG?3ba@DT(4)3SiKfe3KGxp>I_vM({jNVY~yQG5~yDu+p+Ofx(13zqj zq}|1P`)z45$1~7+bDhzLrwnd9K4|~tsgD1B+V#Y#!>#t8A35o+pT7F^?7=s)o36e6 zp~9c)*D2XkI;Zo!H-{e|c%h-?%v+;IS8aB=`KatY?H?U_w)OevE?ya2vbkMOyVZFM z_Kj+vcl^Xtr^e*%x#_;;g?H?I>LbhU-3u+Dex@2L_MCde-@Z@pjDp14Ehp^gX3y>W z@C8%T!CQAVnm4tvYyFSamsSZp_4#Yd{@XY8>&4+yThixkskY+Qeoq{qn0aVH>pwm` z(0N7ZrInqAZ;xb7ncBU{Z{J>N-X-~;b+>=@^V*w7ZrbwlT57`uCk2;UP4 z+XpOLGxKB9gwn5nxiUScMrfC3ZPlGORGZbmQR0pNuCDzwPq3S?h_9z20K)$>|4<i-QIIwEfz|3;b$rVcq-MOoa3=0+^$pE1p{7y(((?%gx|1pcFQ z1GYnqo#SsQqUmjY`qn zmZVBLy!?Ws9>O_tq){oFL9&=%q?2%MKkad|q}FJjY~E9)Xl2D>{(zrfbLq=bk~+zK zNuyG8R9eip@vByE)cZe4-Nz}?s1$ChA%r_RJv&8G^EpKtmAZvdm+(n$ zglR!*Np0g4X;i8vN=T>m8#3A3fxxH)H)+1wTM%sQ7Kx1x0n++m3=y}KvH`+MH-c& zeK;0#8%`asT=j&cD)5SfG%7`PgT?$SKFOVF`CMa3rE`ijDpemol1iA^9tBjS{BTZ@ zMx|(_&SL%vpX5Tf{n$@Z&vS}2D%B7^7V|NDl3TK);dhccz$wzGR3rFU%s&tUH>v8U z+a*QI+~i23QiwdL7Ca5xblf&yQXM%(8kNGjBq&iw{cCA+R8j?;B8^HlWt1q(&G&`Q zO6ny}kw&GOF{%jDaUbBZ)7)q+vK;gj6)3wr{R8pkQpsMMYCk+n@@_aIbb!q)4YB8^J5RH%DrOodWV z$2dhAm1@PP-|M4-RH}_awfgSCUXq%^ zDblD^TSkeRZPG8sn(bXqkw&H3F-qi(3A=i4m9|cBiZm*97o*VdGq-EWMKp{eH5ygX zd`Y8HXd00kA8Myfr+W85BP^(HoFa`%bzl^&Ta%0AegZ^LGdM*WmAV@~vQ%y;{tLxj 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 diff --git a/Nuake/dependencies/GLFW/x64/lib-vc2019/glfw3dll.lib b/Nuake/dependencies/GLFW/x64/lib-vc2019/glfw3dll.lib deleted file mode 100644 index e0ac6f80eaeccf6d242a9268bac5b7006e2e359c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30306 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 - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would - * be appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not - * be misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - * - *************************************************************************/ - -#ifndef _glfw3_h_ -#define _glfw3_h_ - -#ifdef __cplusplus -extern "C" { -#endif - - -/************************************************************************* - * Doxygen documentation - *************************************************************************/ - -/*! @file glfw3.h - * @brief The header of the GLFW 3 API. - * - * This is the header file of the GLFW 3 API. It defines all its types and - * declares all its functions. - * - * For more information about how to use this file, see @ref build_include. - */ -/*! @defgroup context Context reference - * @brief Functions and types related to OpenGL and OpenGL ES contexts. - * - * This is the reference documentation for OpenGL and OpenGL ES context related - * functions. For more task-oriented information, see the @ref context_guide. - */ -/*! @defgroup vulkan Vulkan reference - * @brief Functions and types related to Vulkan. - * - * This is the reference documentation for Vulkan related functions and types. - * For more task-oriented information, see the @ref vulkan_guide. - */ -/*! @defgroup init Initialization, version and error reference - * @brief Functions and types related to initialization and error handling. - * - * This is the reference documentation for initialization and termination of - * the library, version management and error handling. For more task-oriented - * information, see the @ref intro_guide. - */ -/*! @defgroup input Input reference - * @brief Functions and types related to input handling. - * - * This is the reference documentation for input related functions and types. - * For more task-oriented information, see the @ref input_guide. - */ -/*! @defgroup monitor Monitor reference - * @brief Functions and types related to monitors. - * - * This is the reference documentation for monitor related functions and types. - * For more task-oriented information, see the @ref monitor_guide. - */ -/*! @defgroup window Window reference - * @brief Functions and types related to windows. - * - * This is the reference documentation for window related functions and types, - * including creation, deletion and event polling. For more task-oriented - * information, see the @ref window_guide. - */ - - -/************************************************************************* - * Compiler- and platform-specific preprocessor work - *************************************************************************/ - -/* If we are we on Windows, we want a single define for it. - */ -#if !defined(_WIN32) && (defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__)) - #define _WIN32 -#endif /* _WIN32 */ - -/* It is customary to use APIENTRY for OpenGL function pointer declarations on - * all platforms. Additionally, the Windows OpenGL header needs APIENTRY. - */ -#ifndef APIENTRY - #ifdef _WIN32 - #define APIENTRY __stdcall - #else - #define APIENTRY - #endif - #define GLFW_APIENTRY_DEFINED -#endif /* APIENTRY */ - -/* Some Windows OpenGL headers need this. - */ -#if !defined(WINGDIAPI) && defined(_WIN32) - #define WINGDIAPI __declspec(dllimport) - #define GLFW_WINGDIAPI_DEFINED -#endif /* WINGDIAPI */ - -/* Some Windows GLU headers need this. - */ -#if !defined(CALLBACK) && defined(_WIN32) - #define CALLBACK __stdcall - #define GLFW_CALLBACK_DEFINED -#endif /* CALLBACK */ - -/* Include because most Windows GLU headers need wchar_t and - * the macOS OpenGL header blocks the definition of ptrdiff_t by glext.h. - * Include it unconditionally to avoid surprising side-effects. - */ -#include - -/* Include because it is needed by Vulkan and related functions. - * Include it unconditionally to avoid surprising side-effects. - */ -#include - -/* Include the chosen OpenGL or OpenGL ES headers. - */ -#if defined(GLFW_INCLUDE_ES1) - - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif - -#elif defined(GLFW_INCLUDE_ES2) - - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif - -#elif defined(GLFW_INCLUDE_ES3) - - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif - -#elif defined(GLFW_INCLUDE_ES31) - - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif - -#elif defined(GLFW_INCLUDE_ES32) - - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif - -#elif defined(GLFW_INCLUDE_GLCOREARB) - - #if defined(__APPLE__) - - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif /*GLFW_INCLUDE_GLEXT*/ - - #else /*__APPLE__*/ - - #include - - #endif /*__APPLE__*/ - -#elif !defined(GLFW_INCLUDE_NONE) - - #if defined(__APPLE__) - - #if !defined(GLFW_INCLUDE_GLEXT) - #define GL_GLEXT_LEGACY - #endif - #include - #if defined(GLFW_INCLUDE_GLU) - #include - #endif - - #else /*__APPLE__*/ - - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif - #if defined(GLFW_INCLUDE_GLU) - #include - #endif - - #endif /*__APPLE__*/ - -#endif /* OpenGL and OpenGL ES headers */ - -#if defined(GLFW_INCLUDE_VULKAN) - #include -#endif /* Vulkan header */ - -#if defined(GLFW_DLL) && defined(_GLFW_BUILD_DLL) - /* GLFW_DLL must be defined by applications that are linking against the DLL - * version of the GLFW library. _GLFW_BUILD_DLL is defined by the GLFW - * configuration header when compiling the DLL version of the library. - */ - #error "You must not have both GLFW_DLL and _GLFW_BUILD_DLL defined" -#endif - -/* GLFWAPI is used to declare public API functions for export - * from the DLL / shared library / dynamic library. - */ -#if defined(_WIN32) && defined(_GLFW_BUILD_DLL) - /* We are building GLFW as a Win32 DLL */ - #define GLFWAPI __declspec(dllexport) -#elif defined(_WIN32) && defined(GLFW_DLL) - /* We are calling GLFW as a Win32 DLL */ - #define GLFWAPI __declspec(dllimport) -#elif defined(__GNUC__) && defined(_GLFW_BUILD_DLL) - /* We are building GLFW as a shared / dynamic library */ - #define GLFWAPI __attribute__((visibility("default"))) -#else - /* We are building or calling GLFW as a static library */ - #define GLFWAPI -#endif - - -/************************************************************************* - * GLFW API tokens - *************************************************************************/ - -/*! @name GLFW version macros - * @{ */ -/*! @brief The major version number of the GLFW library. - * - * This is incremented when the API is changed in non-compatible ways. - * @ingroup init - */ -#define GLFW_VERSION_MAJOR 3 -/*! @brief The minor version number of the GLFW library. - * - * This is incremented when features are added to the API but it remains - * backward-compatible. - * @ingroup init - */ -#define GLFW_VERSION_MINOR 3 -/*! @brief The revision number of the GLFW library. - * - * This is incremented when a bug fix release is made that does not contain any - * API changes. - * @ingroup init - */ -#define GLFW_VERSION_REVISION 0 -/*! @} */ - -/*! @brief One. - * - * This is only semantic sugar for the number 1. You can instead use `1` or - * `true` or `_True` or `GL_TRUE` or `VK_TRUE` or anything else that is equal - * to one. - * - * @ingroup init - */ -#define GLFW_TRUE 1 -/*! @brief Zero. - * - * This is only semantic sugar for the number 0. You can instead use `0` or - * `false` or `_False` or `GL_FALSE` or `VK_FALSE` or anything else that is - * equal to zero. - * - * @ingroup init - */ -#define GLFW_FALSE 0 - -/*! @name Key and button actions - * @{ */ -/*! @brief The key or mouse button was released. - * - * The key or mouse button was released. - * - * @ingroup input - */ -#define GLFW_RELEASE 0 -/*! @brief The key or mouse button was pressed. - * - * The key or mouse button was pressed. - * - * @ingroup input - */ -#define GLFW_PRESS 1 -/*! @brief The key was held down until it repeated. - * - * The key was held down until it repeated. - * - * @ingroup input - */ -#define GLFW_REPEAT 2 -/*! @} */ - -/*! @defgroup hat_state Joystick hat states - * @brief Joystick hat states. - * - * See [joystick hat input](@ref joystick_hat) for how these are used. - * - * @ingroup input - * @{ */ -#define GLFW_HAT_CENTERED 0 -#define GLFW_HAT_UP 1 -#define GLFW_HAT_RIGHT 2 -#define GLFW_HAT_DOWN 4 -#define GLFW_HAT_LEFT 8 -#define GLFW_HAT_RIGHT_UP (GLFW_HAT_RIGHT | GLFW_HAT_UP) -#define GLFW_HAT_RIGHT_DOWN (GLFW_HAT_RIGHT | GLFW_HAT_DOWN) -#define GLFW_HAT_LEFT_UP (GLFW_HAT_LEFT | GLFW_HAT_UP) -#define GLFW_HAT_LEFT_DOWN (GLFW_HAT_LEFT | GLFW_HAT_DOWN) -/*! @} */ - -/*! @defgroup keys Keyboard keys - * @brief Keyboard key IDs. - * - * See [key input](@ref input_key) for how these are used. - * - * These key codes are inspired by the _USB HID Usage Tables v1.12_ (p. 53-60), - * but re-arranged to map to 7-bit ASCII for printable keys (function keys are - * put in the 256+ range). - * - * The naming of the key codes follow these rules: - * - The US keyboard layout is used - * - Names of printable alpha-numeric characters are used (e.g. "A", "R", - * "3", etc.) - * - For non-alphanumeric characters, Unicode:ish names are used (e.g. - * "COMMA", "LEFT_SQUARE_BRACKET", etc.). Note that some names do not - * correspond to the Unicode standard (usually for brevity) - * - Keys that lack a clear US mapping are named "WORLD_x" - * - For non-printable keys, custom names are used (e.g. "F4", - * "BACKSPACE", etc.) - * - * @ingroup input - * @{ - */ - -/* The unknown key */ -#define GLFW_KEY_UNKNOWN -1 - -/* Printable keys */ -#define GLFW_KEY_SPACE 32 -#define GLFW_KEY_APOSTROPHE 39 /* ' */ -#define GLFW_KEY_COMMA 44 /* , */ -#define GLFW_KEY_MINUS 45 /* - */ -#define GLFW_KEY_PERIOD 46 /* . */ -#define GLFW_KEY_SLASH 47 /* / */ -#define GLFW_KEY_0 48 -#define GLFW_KEY_1 49 -#define GLFW_KEY_2 50 -#define GLFW_KEY_3 51 -#define GLFW_KEY_4 52 -#define GLFW_KEY_5 53 -#define GLFW_KEY_6 54 -#define GLFW_KEY_7 55 -#define GLFW_KEY_8 56 -#define GLFW_KEY_9 57 -#define GLFW_KEY_SEMICOLON 59 /* ; */ -#define GLFW_KEY_EQUAL 61 /* = */ -#define GLFW_KEY_A 65 -#define GLFW_KEY_B 66 -#define GLFW_KEY_C 67 -#define GLFW_KEY_D 68 -#define GLFW_KEY_E 69 -#define GLFW_KEY_F 70 -#define GLFW_KEY_G 71 -#define GLFW_KEY_H 72 -#define GLFW_KEY_I 73 -#define GLFW_KEY_J 74 -#define GLFW_KEY_K 75 -#define GLFW_KEY_L 76 -#define GLFW_KEY_M 77 -#define GLFW_KEY_N 78 -#define GLFW_KEY_O 79 -#define GLFW_KEY_P 80 -#define GLFW_KEY_Q 81 -#define GLFW_KEY_R 82 -#define GLFW_KEY_S 83 -#define GLFW_KEY_T 84 -#define GLFW_KEY_U 85 -#define GLFW_KEY_V 86 -#define GLFW_KEY_W 87 -#define GLFW_KEY_X 88 -#define GLFW_KEY_Y 89 -#define GLFW_KEY_Z 90 -#define GLFW_KEY_LEFT_BRACKET 91 /* [ */ -#define GLFW_KEY_BACKSLASH 92 /* \ */ -#define GLFW_KEY_RIGHT_BRACKET 93 /* ] */ -#define GLFW_KEY_GRAVE_ACCENT 96 /* ` */ -#define GLFW_KEY_WORLD_1 161 /* non-US #1 */ -#define GLFW_KEY_WORLD_2 162 /* non-US #2 */ - -/* Function keys */ -#define GLFW_KEY_ESCAPE 256 -#define GLFW_KEY_ENTER 257 -#define GLFW_KEY_TAB 258 -#define GLFW_KEY_BACKSPACE 259 -#define GLFW_KEY_INSERT 260 -#define GLFW_KEY_DELETE 261 -#define GLFW_KEY_RIGHT 262 -#define GLFW_KEY_LEFT 263 -#define GLFW_KEY_DOWN 264 -#define GLFW_KEY_UP 265 -#define GLFW_KEY_PAGE_UP 266 -#define GLFW_KEY_PAGE_DOWN 267 -#define GLFW_KEY_HOME 268 -#define GLFW_KEY_END 269 -#define GLFW_KEY_CAPS_LOCK 280 -#define GLFW_KEY_SCROLL_LOCK 281 -#define GLFW_KEY_NUM_LOCK 282 -#define GLFW_KEY_PRINT_SCREEN 283 -#define GLFW_KEY_PAUSE 284 -#define GLFW_KEY_F1 290 -#define GLFW_KEY_F2 291 -#define GLFW_KEY_F3 292 -#define GLFW_KEY_F4 293 -#define GLFW_KEY_F5 294 -#define GLFW_KEY_F6 295 -#define GLFW_KEY_F7 296 -#define GLFW_KEY_F8 297 -#define GLFW_KEY_F9 298 -#define GLFW_KEY_F10 299 -#define GLFW_KEY_F11 300 -#define GLFW_KEY_F12 301 -#define GLFW_KEY_F13 302 -#define GLFW_KEY_F14 303 -#define GLFW_KEY_F15 304 -#define GLFW_KEY_F16 305 -#define GLFW_KEY_F17 306 -#define GLFW_KEY_F18 307 -#define GLFW_KEY_F19 308 -#define GLFW_KEY_F20 309 -#define GLFW_KEY_F21 310 -#define GLFW_KEY_F22 311 -#define GLFW_KEY_F23 312 -#define GLFW_KEY_F24 313 -#define GLFW_KEY_F25 314 -#define GLFW_KEY_KP_0 320 -#define GLFW_KEY_KP_1 321 -#define GLFW_KEY_KP_2 322 -#define GLFW_KEY_KP_3 323 -#define GLFW_KEY_KP_4 324 -#define GLFW_KEY_KP_5 325 -#define GLFW_KEY_KP_6 326 -#define GLFW_KEY_KP_7 327 -#define GLFW_KEY_KP_8 328 -#define GLFW_KEY_KP_9 329 -#define GLFW_KEY_KP_DECIMAL 330 -#define GLFW_KEY_KP_DIVIDE 331 -#define GLFW_KEY_KP_MULTIPLY 332 -#define GLFW_KEY_KP_SUBTRACT 333 -#define GLFW_KEY_KP_ADD 334 -#define GLFW_KEY_KP_ENTER 335 -#define GLFW_KEY_KP_EQUAL 336 -#define GLFW_KEY_LEFT_SHIFT 340 -#define GLFW_KEY_LEFT_CONTROL 341 -#define GLFW_KEY_LEFT_ALT 342 -#define GLFW_KEY_LEFT_SUPER 343 -#define GLFW_KEY_RIGHT_SHIFT 344 -#define GLFW_KEY_RIGHT_CONTROL 345 -#define GLFW_KEY_RIGHT_ALT 346 -#define GLFW_KEY_RIGHT_SUPER 347 -#define GLFW_KEY_MENU 348 - -#define GLFW_KEY_LAST GLFW_KEY_MENU - -/*! @} */ - -/*! @defgroup mods Modifier key flags - * @brief Modifier key flags. - * - * See [key input](@ref input_key) for how these are used. - * - * @ingroup input - * @{ */ - -/*! @brief If this bit is set one or more Shift keys were held down. - * - * If this bit is set one or more Shift keys were held down. - */ -#define GLFW_MOD_SHIFT 0x0001 -/*! @brief If this bit is set one or more Control keys were held down. - * - * If this bit is set one or more Control keys were held down. - */ -#define GLFW_MOD_CONTROL 0x0002 -/*! @brief If this bit is set one or more Alt keys were held down. - * - * If this bit is set one or more Alt keys were held down. - */ -#define GLFW_MOD_ALT 0x0004 -/*! @brief If this bit is set one or more Super keys were held down. - * - * If this bit is set one or more Super keys were held down. - */ -#define GLFW_MOD_SUPER 0x0008 -/*! @brief If this bit is set the Caps Lock key is enabled. - * - * If this bit is set the Caps Lock key is enabled and the @ref - * GLFW_LOCK_KEY_MODS input mode is set. - */ -#define GLFW_MOD_CAPS_LOCK 0x0010 -/*! @brief If this bit is set the Num Lock key is enabled. - * - * If this bit is set the Num Lock key is enabled and the @ref - * GLFW_LOCK_KEY_MODS input mode is set. - */ -#define GLFW_MOD_NUM_LOCK 0x0020 - -/*! @} */ - -/*! @defgroup buttons Mouse buttons - * @brief Mouse button IDs. - * - * See [mouse button input](@ref input_mouse_button) for how these are used. - * - * @ingroup input - * @{ */ -#define GLFW_MOUSE_BUTTON_1 0 -#define GLFW_MOUSE_BUTTON_2 1 -#define GLFW_MOUSE_BUTTON_3 2 -#define GLFW_MOUSE_BUTTON_4 3 -#define GLFW_MOUSE_BUTTON_5 4 -#define GLFW_MOUSE_BUTTON_6 5 -#define GLFW_MOUSE_BUTTON_7 6 -#define GLFW_MOUSE_BUTTON_8 7 -#define GLFW_MOUSE_BUTTON_LAST GLFW_MOUSE_BUTTON_8 -#define GLFW_MOUSE_BUTTON_LEFT GLFW_MOUSE_BUTTON_1 -#define GLFW_MOUSE_BUTTON_RIGHT GLFW_MOUSE_BUTTON_2 -#define GLFW_MOUSE_BUTTON_MIDDLE GLFW_MOUSE_BUTTON_3 -/*! @} */ - -/*! @defgroup joysticks Joysticks - * @brief Joystick IDs. - * - * See [joystick input](@ref joystick) for how these are used. - * - * @ingroup input - * @{ */ -#define GLFW_JOYSTICK_1 0 -#define GLFW_JOYSTICK_2 1 -#define GLFW_JOYSTICK_3 2 -#define GLFW_JOYSTICK_4 3 -#define GLFW_JOYSTICK_5 4 -#define GLFW_JOYSTICK_6 5 -#define GLFW_JOYSTICK_7 6 -#define GLFW_JOYSTICK_8 7 -#define GLFW_JOYSTICK_9 8 -#define GLFW_JOYSTICK_10 9 -#define GLFW_JOYSTICK_11 10 -#define GLFW_JOYSTICK_12 11 -#define GLFW_JOYSTICK_13 12 -#define GLFW_JOYSTICK_14 13 -#define GLFW_JOYSTICK_15 14 -#define GLFW_JOYSTICK_16 15 -#define GLFW_JOYSTICK_LAST GLFW_JOYSTICK_16 -/*! @} */ - -/*! @defgroup gamepad_buttons Gamepad buttons - * @brief Gamepad buttons. - * - * See @ref gamepad for how these are used. - * - * @ingroup input - * @{ */ -#define GLFW_GAMEPAD_BUTTON_A 0 -#define GLFW_GAMEPAD_BUTTON_B 1 -#define GLFW_GAMEPAD_BUTTON_X 2 -#define GLFW_GAMEPAD_BUTTON_Y 3 -#define GLFW_GAMEPAD_BUTTON_LEFT_BUMPER 4 -#define GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER 5 -#define GLFW_GAMEPAD_BUTTON_BACK 6 -#define GLFW_GAMEPAD_BUTTON_START 7 -#define GLFW_GAMEPAD_BUTTON_GUIDE 8 -#define GLFW_GAMEPAD_BUTTON_LEFT_THUMB 9 -#define GLFW_GAMEPAD_BUTTON_RIGHT_THUMB 10 -#define GLFW_GAMEPAD_BUTTON_DPAD_UP 11 -#define GLFW_GAMEPAD_BUTTON_DPAD_RIGHT 12 -#define GLFW_GAMEPAD_BUTTON_DPAD_DOWN 13 -#define GLFW_GAMEPAD_BUTTON_DPAD_LEFT 14 -#define GLFW_GAMEPAD_BUTTON_LAST GLFW_GAMEPAD_BUTTON_DPAD_LEFT - -#define GLFW_GAMEPAD_BUTTON_CROSS GLFW_GAMEPAD_BUTTON_A -#define GLFW_GAMEPAD_BUTTON_CIRCLE GLFW_GAMEPAD_BUTTON_B -#define GLFW_GAMEPAD_BUTTON_SQUARE GLFW_GAMEPAD_BUTTON_X -#define GLFW_GAMEPAD_BUTTON_TRIANGLE GLFW_GAMEPAD_BUTTON_Y -/*! @} */ - -/*! @defgroup gamepad_axes Gamepad axes - * @brief Gamepad axes. - * - * See @ref gamepad for how these are used. - * - * @ingroup input - * @{ */ -#define GLFW_GAMEPAD_AXIS_LEFT_X 0 -#define GLFW_GAMEPAD_AXIS_LEFT_Y 1 -#define GLFW_GAMEPAD_AXIS_RIGHT_X 2 -#define GLFW_GAMEPAD_AXIS_RIGHT_Y 3 -#define GLFW_GAMEPAD_AXIS_LEFT_TRIGGER 4 -#define GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER 5 -#define GLFW_GAMEPAD_AXIS_LAST GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER -/*! @} */ - -/*! @defgroup errors Error codes - * @brief Error codes. - * - * See [error handling](@ref error_handling) for how these are used. - * - * @ingroup init - * @{ */ -/*! @brief No error has occurred. - * - * No error has occurred. - * - * @analysis Yay. - */ -#define GLFW_NO_ERROR 0 -/*! @brief GLFW has not been initialized. - * - * This occurs if a GLFW function was called that must not be called unless the - * library is [initialized](@ref intro_init). - * - * @analysis Application programmer error. Initialize GLFW before calling any - * function that requires initialization. - */ -#define GLFW_NOT_INITIALIZED 0x00010001 -/*! @brief No context is current for this thread. - * - * This occurs if a GLFW function was called that needs and operates on the - * current OpenGL or OpenGL ES context but no context is current on the calling - * thread. One such function is @ref glfwSwapInterval. - * - * @analysis Application programmer error. Ensure a context is current before - * calling functions that require a current context. - */ -#define GLFW_NO_CURRENT_CONTEXT 0x00010002 -/*! @brief One of the arguments to the function was an invalid enum value. - * - * One of the arguments to the function was an invalid enum value, for example - * requesting @ref GLFW_RED_BITS with @ref glfwGetWindowAttrib. - * - * @analysis Application programmer error. Fix the offending call. - */ -#define GLFW_INVALID_ENUM 0x00010003 -/*! @brief One of the arguments to the function was an invalid value. - * - * One of the arguments to the function was an invalid value, for example - * requesting a non-existent OpenGL or OpenGL ES version like 2.7. - * - * Requesting a valid but unavailable OpenGL or OpenGL ES version will instead - * result in a @ref GLFW_VERSION_UNAVAILABLE error. - * - * @analysis Application programmer error. Fix the offending call. - */ -#define GLFW_INVALID_VALUE 0x00010004 -/*! @brief A memory allocation failed. - * - * A memory allocation failed. - * - * @analysis A bug in GLFW or the underlying operating system. Report the bug - * to our [issue tracker](https://github.com/glfw/glfw/issues). - */ -#define GLFW_OUT_OF_MEMORY 0x00010005 -/*! @brief GLFW could not find support for the requested API on the system. - * - * GLFW could not find support for the requested API on the system. - * - * @analysis The installed graphics driver does not support the requested - * API, or does not support it via the chosen context creation backend. - * Below are a few examples. - * - * @par - * Some pre-installed Windows graphics drivers do not support OpenGL. AMD only - * supports OpenGL ES via EGL, while Nvidia and Intel only support it via - * a WGL or GLX extension. macOS does not provide OpenGL ES at all. The Mesa - * EGL, OpenGL and OpenGL ES libraries do not interface with the Nvidia binary - * driver. Older graphics drivers do not support Vulkan. - */ -#define GLFW_API_UNAVAILABLE 0x00010006 -/*! @brief The requested OpenGL or OpenGL ES version is not available. - * - * The requested OpenGL or OpenGL ES version (including any requested context - * or framebuffer hints) is not available on this machine. - * - * @analysis The machine does not support your requirements. If your - * application is sufficiently flexible, downgrade your requirements and try - * again. Otherwise, inform the user that their machine does not match your - * requirements. - * - * @par - * Future invalid OpenGL and OpenGL ES versions, for example OpenGL 4.8 if 5.0 - * comes out before the 4.x series gets that far, also fail with this error and - * not @ref GLFW_INVALID_VALUE, because GLFW cannot know what future versions - * will exist. - */ -#define GLFW_VERSION_UNAVAILABLE 0x00010007 -/*! @brief A platform-specific error occurred that does not match any of the - * more specific categories. - * - * A platform-specific error occurred that does not match any of the more - * specific categories. - * - * @analysis A bug or configuration error in GLFW, the underlying operating - * system or its drivers, or a lack of required resources. Report the issue to - * our [issue tracker](https://github.com/glfw/glfw/issues). - */ -#define GLFW_PLATFORM_ERROR 0x00010008 -/*! @brief The requested format is not supported or available. - * - * If emitted during window creation, the requested pixel format is not - * supported. - * - * If emitted when querying the clipboard, the contents of the clipboard could - * not be converted to the requested format. - * - * @analysis If emitted during window creation, one or more - * [hard constraints](@ref window_hints_hard) did not match any of the - * available pixel formats. If your application is sufficiently flexible, - * downgrade your requirements and try again. Otherwise, inform the user that - * their machine does not match your requirements. - * - * @par - * If emitted when querying the clipboard, ignore the error or report it to - * the user, as appropriate. - */ -#define GLFW_FORMAT_UNAVAILABLE 0x00010009 -/*! @brief The specified window does not have an OpenGL or OpenGL ES context. - * - * A window that does not have an OpenGL or OpenGL ES context was passed to - * a function that requires it to have one. - * - * @analysis Application programmer error. Fix the offending call. - */ -#define GLFW_NO_WINDOW_CONTEXT 0x0001000A -/*! @} */ - -/*! @addtogroup window - * @{ */ -/*! @brief Input focus window hint and attribute - * - * Input focus [window hint](@ref GLFW_FOCUSED_hint) or - * [window attribute](@ref GLFW_FOCUSED_attrib). - */ -#define GLFW_FOCUSED 0x00020001 -/*! @brief Window iconification window attribute - * - * Window iconification [window attribute](@ref GLFW_ICONIFIED_attrib). - */ -#define GLFW_ICONIFIED 0x00020002 -/*! @brief Window resize-ability window hint and attribute - * - * Window resize-ability [window hint](@ref GLFW_RESIZABLE_hint) and - * [window attribute](@ref GLFW_RESIZABLE_attrib). - */ -#define GLFW_RESIZABLE 0x00020003 -/*! @brief Window visibility window hint and attribute - * - * Window visibility [window hint](@ref GLFW_VISIBLE_hint) and - * [window attribute](@ref GLFW_VISIBLE_attrib). - */ -#define GLFW_VISIBLE 0x00020004 -/*! @brief Window decoration window hint and attribute - * - * Window decoration [window hint](@ref GLFW_DECORATED_hint) and - * [window attribute](@ref GLFW_DECORATED_attrib). - */ -#define GLFW_DECORATED 0x00020005 -/*! @brief Window auto-iconification window hint and attribute - * - * Window auto-iconification [window hint](@ref GLFW_AUTO_ICONIFY_hint) and - * [window attribute](@ref GLFW_AUTO_ICONIFY_attrib). - */ -#define GLFW_AUTO_ICONIFY 0x00020006 -/*! @brief Window decoration window hint and attribute - * - * Window decoration [window hint](@ref GLFW_FLOATING_hint) and - * [window attribute](@ref GLFW_FLOATING_attrib). - */ -#define GLFW_FLOATING 0x00020007 -/*! @brief Window maximization window hint and attribute - * - * Window maximization [window hint](@ref GLFW_MAXIMIZED_hint) and - * [window attribute](@ref GLFW_MAXIMIZED_attrib). - */ -#define GLFW_MAXIMIZED 0x00020008 -/*! @brief Cursor centering window hint - * - * Cursor centering [window hint](@ref GLFW_CENTER_CURSOR_hint). - */ -#define GLFW_CENTER_CURSOR 0x00020009 -/*! @brief Window framebuffer transparency hint and attribute - * - * Window framebuffer transparency - * [window hint](@ref GLFW_TRANSPARENT_FRAMEBUFFER_hint) and - * [window attribute](@ref GLFW_TRANSPARENT_FRAMEBUFFER_attrib). - */ -#define GLFW_TRANSPARENT_FRAMEBUFFER 0x0002000A -/*! @brief Mouse cursor hover window attribute. - * - * Mouse cursor hover [window attribute](@ref GLFW_HOVERED_attrib). - */ -#define GLFW_HOVERED 0x0002000B -/*! @brief Input focus on calling show window hint and attribute - * - * Input focus [window hint](@ref GLFW_FOCUS_ON_SHOW_hint) or - * [window attribute](@ref GLFW_FOCUS_ON_SHOW_attrib). - */ -#define GLFW_FOCUS_ON_SHOW 0x0002000C - -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_RED_BITS). - */ -#define GLFW_RED_BITS 0x00021001 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_GREEN_BITS). - */ -#define GLFW_GREEN_BITS 0x00021002 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_BLUE_BITS). - */ -#define GLFW_BLUE_BITS 0x00021003 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_ALPHA_BITS). - */ -#define GLFW_ALPHA_BITS 0x00021004 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_DEPTH_BITS). - */ -#define GLFW_DEPTH_BITS 0x00021005 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_STENCIL_BITS). - */ -#define GLFW_STENCIL_BITS 0x00021006 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_ACCUM_RED_BITS). - */ -#define GLFW_ACCUM_RED_BITS 0x00021007 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_ACCUM_GREEN_BITS). - */ -#define GLFW_ACCUM_GREEN_BITS 0x00021008 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_ACCUM_BLUE_BITS). - */ -#define GLFW_ACCUM_BLUE_BITS 0x00021009 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_ACCUM_ALPHA_BITS). - */ -#define GLFW_ACCUM_ALPHA_BITS 0x0002100A -/*! @brief Framebuffer auxiliary buffer hint. - * - * Framebuffer auxiliary buffer [hint](@ref GLFW_AUX_BUFFERS). - */ -#define GLFW_AUX_BUFFERS 0x0002100B -/*! @brief OpenGL stereoscopic rendering hint. - * - * OpenGL stereoscopic rendering [hint](@ref GLFW_STEREO). - */ -#define GLFW_STEREO 0x0002100C -/*! @brief Framebuffer MSAA samples hint. - * - * Framebuffer MSAA samples [hint](@ref GLFW_SAMPLES). - */ -#define GLFW_SAMPLES 0x0002100D -/*! @brief Framebuffer sRGB hint. - * - * Framebuffer sRGB [hint](@ref GLFW_SRGB_CAPABLE). - */ -#define GLFW_SRGB_CAPABLE 0x0002100E -/*! @brief Monitor refresh rate hint. - * - * Monitor refresh rate [hint](@ref GLFW_REFRESH_RATE). - */ -#define GLFW_REFRESH_RATE 0x0002100F -/*! @brief Framebuffer double buffering hint. - * - * Framebuffer double buffering [hint](@ref GLFW_DOUBLEBUFFER). - */ -#define GLFW_DOUBLEBUFFER 0x00021010 - -/*! @brief Context client API hint and attribute. - * - * Context client API [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). - */ -#define GLFW_CLIENT_API 0x00022001 -/*! @brief Context client API major version hint and attribute. - * - * Context client API major version [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). - */ -#define GLFW_CONTEXT_VERSION_MAJOR 0x00022002 -/*! @brief Context client API minor version hint and attribute. - * - * Context client API minor version [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). - */ -#define GLFW_CONTEXT_VERSION_MINOR 0x00022003 -/*! @brief Context client API revision number hint and attribute. - * - * Context client API revision number [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). - */ -#define GLFW_CONTEXT_REVISION 0x00022004 -/*! @brief Context robustness hint and attribute. - * - * Context client API revision number [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). - */ -#define GLFW_CONTEXT_ROBUSTNESS 0x00022005 -/*! @brief OpenGL forward-compatibility hint and attribute. - * - * OpenGL forward-compatibility [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). - */ -#define GLFW_OPENGL_FORWARD_COMPAT 0x00022006 -/*! @brief OpenGL debug context hint and attribute. - * - * OpenGL debug context [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). - */ -#define GLFW_OPENGL_DEBUG_CONTEXT 0x00022007 -/*! @brief OpenGL profile hint and attribute. - * - * OpenGL profile [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). - */ -#define GLFW_OPENGL_PROFILE 0x00022008 -/*! @brief Context flush-on-release hint and attribute. - * - * Context flush-on-release [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). - */ -#define GLFW_CONTEXT_RELEASE_BEHAVIOR 0x00022009 -/*! @brief Context error suppression hint and attribute. - * - * Context error suppression [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). - */ -#define GLFW_CONTEXT_NO_ERROR 0x0002200A -/*! @brief Context creation API hint and attribute. - * - * Context creation API [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). - */ -#define GLFW_CONTEXT_CREATION_API 0x0002200B -/*! @brief Window content area scaling window - * [window hint](@ref GLFW_SCALE_TO_MONITOR). - */ -#define GLFW_SCALE_TO_MONITOR 0x0002200C -/*! @brief macOS specific - * [window hint](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint). - */ -#define GLFW_COCOA_RETINA_FRAMEBUFFER 0x00023001 -/*! @brief macOS specific - * [window hint](@ref GLFW_COCOA_FRAME_NAME_hint). - */ -#define GLFW_COCOA_FRAME_NAME 0x00023002 -/*! @brief macOS specific - * [window hint](@ref GLFW_COCOA_GRAPHICS_SWITCHING_hint). - */ -#define GLFW_COCOA_GRAPHICS_SWITCHING 0x00023003 -/*! @brief X11 specific - * [window hint](@ref GLFW_X11_CLASS_NAME_hint). - */ -#define GLFW_X11_CLASS_NAME 0x00024001 -/*! @brief X11 specific - * [window hint](@ref GLFW_X11_CLASS_NAME_hint). - */ -#define GLFW_X11_INSTANCE_NAME 0x00024002 -/*! @} */ - -#define GLFW_NO_API 0 -#define GLFW_OPENGL_API 0x00030001 -#define GLFW_OPENGL_ES_API 0x00030002 - -#define GLFW_NO_ROBUSTNESS 0 -#define GLFW_NO_RESET_NOTIFICATION 0x00031001 -#define GLFW_LOSE_CONTEXT_ON_RESET 0x00031002 - -#define GLFW_OPENGL_ANY_PROFILE 0 -#define GLFW_OPENGL_CORE_PROFILE 0x00032001 -#define GLFW_OPENGL_COMPAT_PROFILE 0x00032002 - -#define GLFW_CURSOR 0x00033001 -#define GLFW_STICKY_KEYS 0x00033002 -#define GLFW_STICKY_MOUSE_BUTTONS 0x00033003 -#define GLFW_LOCK_KEY_MODS 0x00033004 -#define GLFW_RAW_MOUSE_MOTION 0x00033005 - -#define GLFW_CURSOR_NORMAL 0x00034001 -#define GLFW_CURSOR_HIDDEN 0x00034002 -#define GLFW_CURSOR_DISABLED 0x00034003 - -#define GLFW_ANY_RELEASE_BEHAVIOR 0 -#define GLFW_RELEASE_BEHAVIOR_FLUSH 0x00035001 -#define GLFW_RELEASE_BEHAVIOR_NONE 0x00035002 - -#define GLFW_NATIVE_CONTEXT_API 0x00036001 -#define GLFW_EGL_CONTEXT_API 0x00036002 -#define GLFW_OSMESA_CONTEXT_API 0x00036003 - -/*! @defgroup shapes Standard cursor shapes - * @brief Standard system cursor shapes. - * - * See [standard cursor creation](@ref cursor_standard) for how these are used. - * - * @ingroup input - * @{ */ - -/*! @brief The regular arrow cursor shape. - * - * The regular arrow cursor. - */ -#define GLFW_ARROW_CURSOR 0x00036001 -/*! @brief The text input I-beam cursor shape. - * - * The text input I-beam cursor shape. - */ -#define GLFW_IBEAM_CURSOR 0x00036002 -/*! @brief The crosshair shape. - * - * The crosshair shape. - */ -#define GLFW_CROSSHAIR_CURSOR 0x00036003 -/*! @brief The hand shape. - * - * The hand shape. - */ -#define GLFW_HAND_CURSOR 0x00036004 -/*! @brief The horizontal resize arrow shape. - * - * The horizontal resize arrow shape. - */ -#define GLFW_HRESIZE_CURSOR 0x00036005 -/*! @brief The vertical resize arrow shape. - * - * The vertical resize arrow shape. - */ -#define GLFW_VRESIZE_CURSOR 0x00036006 -/*! @} */ - -#define GLFW_CONNECTED 0x00040001 -#define GLFW_DISCONNECTED 0x00040002 - -/*! @addtogroup init - * @{ */ -/*! @brief Joystick hat buttons init hint. - * - * Joystick hat buttons [init hint](@ref GLFW_JOYSTICK_HAT_BUTTONS). - */ -#define GLFW_JOYSTICK_HAT_BUTTONS 0x00050001 -/*! @brief macOS specific init hint. - * - * macOS specific [init hint](@ref GLFW_COCOA_CHDIR_RESOURCES_hint). - */ -#define GLFW_COCOA_CHDIR_RESOURCES 0x00051001 -/*! @brief macOS specific init hint. - * - * macOS specific [init hint](@ref GLFW_COCOA_MENUBAR_hint). - */ -#define GLFW_COCOA_MENUBAR 0x00051002 -/*! @} */ - -#define GLFW_DONT_CARE -1 - - -/************************************************************************* - * GLFW API types - *************************************************************************/ - -/*! @brief Client API function pointer type. - * - * Generic function pointer used for returning client API function pointers - * without forcing a cast from a regular pointer. - * - * @sa @ref context_glext - * @sa @ref glfwGetProcAddress - * - * @since Added in version 3.0. - * - * @ingroup context - */ -typedef void (*GLFWglproc)(void); - -/*! @brief Vulkan API function pointer type. - * - * Generic function pointer used for returning Vulkan API function pointers - * without forcing a cast from a regular pointer. - * - * @sa @ref vulkan_proc - * @sa @ref glfwGetInstanceProcAddress - * - * @since Added in version 3.2. - * - * @ingroup vulkan - */ -typedef void (*GLFWvkproc)(void); - -/*! @brief Opaque monitor object. - * - * Opaque monitor object. - * - * @see @ref monitor_object - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -typedef struct GLFWmonitor GLFWmonitor; - -/*! @brief Opaque window object. - * - * Opaque window object. - * - * @see @ref window_object - * - * @since Added in version 3.0. - * - * @ingroup window - */ -typedef struct GLFWwindow GLFWwindow; - -/*! @brief Opaque cursor object. - * - * Opaque cursor object. - * - * @see @ref cursor_object - * - * @since Added in version 3.1. - * - * @ingroup input - */ -typedef struct GLFWcursor GLFWcursor; - -/*! @brief The function signature for error callbacks. - * - * This is the function signature for error callback functions. - * - * @param[in] error An [error code](@ref errors). - * @param[in] description A UTF-8 encoded string describing the error. - * - * @sa @ref error_handling - * @sa @ref glfwSetErrorCallback - * - * @since Added in version 3.0. - * - * @ingroup init - */ -typedef void (* GLFWerrorfun)(int,const char*); - -/*! @brief The function signature for window position callbacks. - * - * This is the function signature for window position callback functions. - * - * @param[in] window The window that was moved. - * @param[in] xpos The new x-coordinate, in screen coordinates, of the - * upper-left corner of the content area of the window. - * @param[in] ypos The new y-coordinate, in screen coordinates, of the - * upper-left corner of the content area of the window. - * - * @sa @ref window_pos - * @sa @ref glfwSetWindowPosCallback - * - * @since Added in version 3.0. - * - * @ingroup window - */ -typedef void (* GLFWwindowposfun)(GLFWwindow*,int,int); - -/*! @brief The function signature for window resize callbacks. - * - * This is the function signature for window size callback functions. - * - * @param[in] window The window that was resized. - * @param[in] width The new width, in screen coordinates, of the window. - * @param[in] height The new height, in screen coordinates, of the window. - * - * @sa @ref window_size - * @sa @ref glfwSetWindowSizeCallback - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -typedef void (* GLFWwindowsizefun)(GLFWwindow*,int,int); - -/*! @brief The function signature for window close callbacks. - * - * This is the function signature for window close callback functions. - * - * @param[in] window The window that the user attempted to close. - * - * @sa @ref window_close - * @sa @ref glfwSetWindowCloseCallback - * - * @since Added in version 2.5. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -typedef void (* GLFWwindowclosefun)(GLFWwindow*); - -/*! @brief The function signature for window content refresh callbacks. - * - * This is the function signature for window refresh callback functions. - * - * @param[in] window The window whose content needs to be refreshed. - * - * @sa @ref window_refresh - * @sa @ref glfwSetWindowRefreshCallback - * - * @since Added in version 2.5. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -typedef void (* GLFWwindowrefreshfun)(GLFWwindow*); - -/*! @brief The function signature for window focus/defocus callbacks. - * - * This is the function signature for window focus callback functions. - * - * @param[in] window The window that gained or lost input focus. - * @param[in] focused `GLFW_TRUE` if the window was given input focus, or - * `GLFW_FALSE` if it lost it. - * - * @sa @ref window_focus - * @sa @ref glfwSetWindowFocusCallback - * - * @since Added in version 3.0. - * - * @ingroup window - */ -typedef void (* GLFWwindowfocusfun)(GLFWwindow*,int); - -/*! @brief The function signature for window iconify/restore callbacks. - * - * This is the function signature for window iconify/restore callback - * functions. - * - * @param[in] window The window that was iconified or restored. - * @param[in] iconified `GLFW_TRUE` if the window was iconified, or - * `GLFW_FALSE` if it was restored. - * - * @sa @ref window_iconify - * @sa @ref glfwSetWindowIconifyCallback - * - * @since Added in version 3.0. - * - * @ingroup window - */ -typedef void (* GLFWwindowiconifyfun)(GLFWwindow*,int); - -/*! @brief The function signature for window maximize/restore callbacks. - * - * This is the function signature for window maximize/restore callback - * functions. - * - * @param[in] window The window that was maximized or restored. - * @param[in] iconified `GLFW_TRUE` if the window was maximized, or - * `GLFW_FALSE` if it was restored. - * - * @sa @ref window_maximize - * @sa glfwSetWindowMaximizeCallback - * - * @since Added in version 3.3. - * - * @ingroup window - */ -typedef void (* GLFWwindowmaximizefun)(GLFWwindow*,int); - -/*! @brief The function signature for framebuffer resize callbacks. - * - * This is the function signature for framebuffer resize callback - * functions. - * - * @param[in] window The window whose framebuffer was resized. - * @param[in] width The new width, in pixels, of the framebuffer. - * @param[in] height The new height, in pixels, of the framebuffer. - * - * @sa @ref window_fbsize - * @sa @ref glfwSetFramebufferSizeCallback - * - * @since Added in version 3.0. - * - * @ingroup window - */ -typedef void (* GLFWframebuffersizefun)(GLFWwindow*,int,int); - -/*! @brief The function signature for window content scale callbacks. - * - * This is the function signature for window content scale callback - * functions. - * - * @param[in] window The window whose content scale changed. - * @param[in] xscale The new x-axis content scale of the window. - * @param[in] yscale The new y-axis content scale of the window. - * - * @sa @ref window_scale - * @sa @ref glfwSetWindowContentScaleCallback - * - * @since Added in version 3.3. - * - * @ingroup window - */ -typedef void (* GLFWwindowcontentscalefun)(GLFWwindow*,float,float); - -/*! @brief The function signature for mouse button callbacks. - * - * This is the function signature for mouse button callback functions. - * - * @param[in] window The window that received the event. - * @param[in] button The [mouse button](@ref buttons) that was pressed or - * released. - * @param[in] action One of `GLFW_PRESS` or `GLFW_RELEASE`. - * @param[in] mods Bit field describing which [modifier keys](@ref mods) were - * held down. - * - * @sa @ref input_mouse_button - * @sa @ref glfwSetMouseButtonCallback - * - * @since Added in version 1.0. - * @glfw3 Added window handle and modifier mask parameters. - * - * @ingroup input - */ -typedef void (* GLFWmousebuttonfun)(GLFWwindow*,int,int,int); - -/*! @brief The function signature for cursor position callbacks. - * - * This is the function signature for cursor position callback functions. - * - * @param[in] window The window that received the event. - * @param[in] xpos The new cursor x-coordinate, relative to the left edge of - * the content area. - * @param[in] ypos The new cursor y-coordinate, relative to the top edge of the - * content area. - * - * @sa @ref cursor_pos - * @sa @ref glfwSetCursorPosCallback - * - * @since Added in version 3.0. Replaces `GLFWmouseposfun`. - * - * @ingroup input - */ -typedef void (* GLFWcursorposfun)(GLFWwindow*,double,double); - -/*! @brief The function signature for cursor enter/leave callbacks. - * - * This is the function signature for cursor enter/leave callback functions. - * - * @param[in] window The window that received the event. - * @param[in] entered `GLFW_TRUE` if the cursor entered the window's content - * area, or `GLFW_FALSE` if it left it. - * - * @sa @ref cursor_enter - * @sa @ref glfwSetCursorEnterCallback - * - * @since Added in version 3.0. - * - * @ingroup input - */ -typedef void (* GLFWcursorenterfun)(GLFWwindow*,int); - -/*! @brief The function signature for scroll callbacks. - * - * This is the function signature for scroll callback functions. - * - * @param[in] window The window that received the event. - * @param[in] xoffset The scroll offset along the x-axis. - * @param[in] yoffset The scroll offset along the y-axis. - * - * @sa @ref scrolling - * @sa @ref glfwSetScrollCallback - * - * @since Added in version 3.0. Replaces `GLFWmousewheelfun`. - * - * @ingroup input - */ -typedef void (* GLFWscrollfun)(GLFWwindow*,double,double); - -/*! @brief The function signature for keyboard key callbacks. - * - * This is the function signature for keyboard key callback functions. - * - * @param[in] window The window that received the event. - * @param[in] key The [keyboard key](@ref keys) that was pressed or released. - * @param[in] scancode The system-specific scancode of the key. - * @param[in] action `GLFW_PRESS`, `GLFW_RELEASE` or `GLFW_REPEAT`. - * @param[in] mods Bit field describing which [modifier keys](@ref mods) were - * held down. - * - * @sa @ref input_key - * @sa @ref glfwSetKeyCallback - * - * @since Added in version 1.0. - * @glfw3 Added window handle, scancode and modifier mask parameters. - * - * @ingroup input - */ -typedef void (* GLFWkeyfun)(GLFWwindow*,int,int,int,int); - -/*! @brief The function signature for Unicode character callbacks. - * - * This is the function signature for Unicode character callback functions. - * - * @param[in] window The window that received the event. - * @param[in] codepoint The Unicode code point of the character. - * - * @sa @ref input_char - * @sa @ref glfwSetCharCallback - * - * @since Added in version 2.4. - * @glfw3 Added window handle parameter. - * - * @ingroup input - */ -typedef void (* GLFWcharfun)(GLFWwindow*,unsigned int); - -/*! @brief The function signature for Unicode character with modifiers - * callbacks. - * - * This is the function signature for Unicode character with modifiers callback - * functions. It is called for each input character, regardless of what - * modifier keys are held down. - * - * @param[in] window The window that received the event. - * @param[in] codepoint The Unicode code point of the character. - * @param[in] mods Bit field describing which [modifier keys](@ref mods) were - * held down. - * - * @sa @ref input_char - * @sa @ref glfwSetCharModsCallback - * - * @deprecated Scheduled for removal in version 4.0. - * - * @since Added in version 3.1. - * - * @ingroup input - */ -typedef void (* GLFWcharmodsfun)(GLFWwindow*,unsigned int,int); - -/*! @brief The function signature for file drop callbacks. - * - * This is the function signature for file drop callbacks. - * - * @param[in] window The window that received the event. - * @param[in] count The number of dropped files. - * @param[in] paths The UTF-8 encoded file and/or directory path names. - * - * @sa @ref path_drop - * @sa @ref glfwSetDropCallback - * - * @since Added in version 3.1. - * - * @ingroup input - */ -typedef void (* GLFWdropfun)(GLFWwindow*,int,const char**); - -/*! @brief The function signature for monitor configuration callbacks. - * - * This is the function signature for monitor configuration callback functions. - * - * @param[in] monitor The monitor that was connected or disconnected. - * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Remaining - * values reserved for future use. - * - * @sa @ref monitor_event - * @sa @ref glfwSetMonitorCallback - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -typedef void (* GLFWmonitorfun)(GLFWmonitor*,int); - -/*! @brief The function signature for joystick configuration callbacks. - * - * This is the function signature for joystick configuration callback - * functions. - * - * @param[in] jid The joystick that was connected or disconnected. - * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Remaining - * values reserved for future use. - * - * @sa @ref joystick_event - * @sa @ref glfwSetJoystickCallback - * - * @since Added in version 3.2. - * - * @ingroup input - */ -typedef void (* GLFWjoystickfun)(int,int); - -/*! @brief Video mode type. - * - * This describes a single video mode. - * - * @sa @ref monitor_modes - * @sa @ref glfwGetVideoMode - * @sa @ref glfwGetVideoModes - * - * @since Added in version 1.0. - * @glfw3 Added refresh rate member. - * - * @ingroup monitor - */ -typedef struct GLFWvidmode -{ - /*! The width, in screen coordinates, of the video mode. - */ - int width; - /*! The height, in screen coordinates, of the video mode. - */ - int height; - /*! The bit depth of the red channel of the video mode. - */ - int redBits; - /*! The bit depth of the green channel of the video mode. - */ - int greenBits; - /*! The bit depth of the blue channel of the video mode. - */ - int blueBits; - /*! The refresh rate, in Hz, of the video mode. - */ - int refreshRate; -} GLFWvidmode; - -/*! @brief Gamma ramp. - * - * This describes the gamma ramp for a monitor. - * - * @sa @ref monitor_gamma - * @sa @ref glfwGetGammaRamp - * @sa @ref glfwSetGammaRamp - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -typedef struct GLFWgammaramp -{ - /*! An array of value describing the response of the red channel. - */ - unsigned short* red; - /*! An array of value describing the response of the green channel. - */ - unsigned short* green; - /*! An array of value describing the response of the blue channel. - */ - unsigned short* blue; - /*! The number of elements in each array. - */ - unsigned int size; -} GLFWgammaramp; - -/*! @brief Image data. - * - * This describes a single 2D image. See the documentation for each related - * function what the expected pixel format is. - * - * @sa @ref cursor_custom - * @sa @ref window_icon - * - * @since Added in version 2.1. - * @glfw3 Removed format and bytes-per-pixel members. - * - * @ingroup window - */ -typedef struct GLFWimage -{ - /*! The width, in pixels, of this image. - */ - int width; - /*! The height, in pixels, of this image. - */ - int height; - /*! The pixel data of this image, arranged left-to-right, top-to-bottom. - */ - unsigned char* pixels; -} GLFWimage; - -/*! @brief Gamepad input state - * - * This describes the input state of a gamepad. - * - * @sa @ref gamepad - * @sa @ref glfwGetGamepadState - * - * @since Added in version 3.3. - * - * @ingroup input - */ -typedef struct GLFWgamepadstate -{ - /*! The states of each [gamepad button](@ref gamepad_buttons), `GLFW_PRESS` - * or `GLFW_RELEASE`. - */ - unsigned char buttons[15]; - /*! The states of each [gamepad axis](@ref gamepad_axes), in the range -1.0 - * to 1.0 inclusive. - */ - float axes[6]; -} GLFWgamepadstate; - - -/************************************************************************* - * GLFW API functions - *************************************************************************/ - -/*! @brief Initializes the GLFW library. - * - * This function initializes the GLFW library. Before most GLFW functions can - * be used, GLFW must be initialized, and before an application terminates GLFW - * should be terminated in order to free any resources allocated during or - * after initialization. - * - * If this function fails, it calls @ref glfwTerminate before returning. If it - * succeeds, you should call @ref glfwTerminate before the application exits. - * - * Additional calls to this function after successful initialization but before - * termination will return `GLFW_TRUE` immediately. - * - * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_PLATFORM_ERROR. - * - * @remark @macos This function will change the current directory of the - * application to the `Contents/Resources` subdirectory of the application's - * bundle, if present. This can be disabled with the @ref - * GLFW_COCOA_CHDIR_RESOURCES init hint. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref intro_init - * @sa @ref glfwTerminate - * - * @since Added in version 1.0. - * - * @ingroup init - */ -GLFWAPI int glfwInit(void); - -/*! @brief Terminates the GLFW library. - * - * This function destroys all remaining windows and cursors, restores any - * modified gamma ramps and frees any other allocated resources. Once this - * function is called, you must again call @ref glfwInit successfully before - * you will be able to use most GLFW functions. - * - * If GLFW has been successfully initialized, this function should be called - * before the application exits. If initialization fails, there is no need to - * call this function, as it is called by @ref glfwInit before it returns - * failure. - * - * @errors Possible errors include @ref GLFW_PLATFORM_ERROR. - * - * @remark This function may be called before @ref glfwInit. - * - * @warning The contexts of any remaining windows must not be current on any - * other thread when this function is called. - * - * @reentrancy This function must not be called from a callback. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref intro_init - * @sa @ref glfwInit - * - * @since Added in version 1.0. - * - * @ingroup init - */ -GLFWAPI void glfwTerminate(void); - -/*! @brief Sets the specified init hint to the desired value. - * - * This function sets hints for the next initialization of GLFW. - * - * The values you set hints to are never reset by GLFW, but they only take - * effect during initialization. Once GLFW has been initialized, any values - * you set will be ignored until the library is terminated and initialized - * again. - * - * Some hints are platform specific. These may be set on any platform but they - * will only affect their specific platform. Other platforms will ignore them. - * Setting these hints requires no platform specific headers or functions. - * - * @param[in] hint The [init hint](@ref init_hints) to set. - * @param[in] value The new value of the init hint. - * - * @errors Possible errors include @ref GLFW_INVALID_ENUM and @ref - * GLFW_INVALID_VALUE. - * - * @remarks This function may be called before @ref glfwInit. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa init_hints - * @sa glfwInit - * - * @since Added in version 3.3. - * - * @ingroup init - */ -GLFWAPI void glfwInitHint(int hint, int value); - -/*! @brief Retrieves the version of the GLFW library. - * - * This function retrieves the major, minor and revision numbers of the GLFW - * library. It is intended for when you are using GLFW as a shared library and - * want to ensure that you are using the minimum required version. - * - * Any or all of the version arguments may be `NULL`. - * - * @param[out] major Where to store the major version number, or `NULL`. - * @param[out] minor Where to store the minor version number, or `NULL`. - * @param[out] rev Where to store the revision number, or `NULL`. - * - * @errors None. - * - * @remark This function may be called before @ref glfwInit. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref intro_version - * @sa @ref glfwGetVersionString - * - * @since Added in version 1.0. - * - * @ingroup init - */ -GLFWAPI void glfwGetVersion(int* major, int* minor, int* rev); - -/*! @brief Returns a string describing the compile-time configuration. - * - * This function returns the compile-time generated - * [version string](@ref intro_version_string) of the GLFW library binary. It - * describes the version, platform, compiler and any platform-specific - * compile-time options. It should not be confused with the OpenGL or OpenGL - * ES version string, queried with `glGetString`. - * - * __Do not use the version string__ to parse the GLFW library version. The - * @ref glfwGetVersion function provides the version of the running library - * binary in numerical format. - * - * @return The ASCII encoded GLFW version string. - * - * @errors None. - * - * @remark This function may be called before @ref glfwInit. - * - * @pointer_lifetime The returned string is static and compile-time generated. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref intro_version - * @sa @ref glfwGetVersion - * - * @since Added in version 3.0. - * - * @ingroup init - */ -GLFWAPI const char* glfwGetVersionString(void); - -/*! @brief Returns and clears the last error for the calling thread. - * - * This function returns and clears the [error code](@ref errors) of the last - * error that occurred on the calling thread, and optionally a UTF-8 encoded - * human-readable description of it. If no error has occurred since the last - * call, it returns @ref GLFW_NO_ERROR (zero) and the description pointer is - * set to `NULL`. - * - * @param[in] description Where to store the error description pointer, or `NULL`. - * @return The last error code for the calling thread, or @ref GLFW_NO_ERROR - * (zero). - * - * @errors None. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is guaranteed to be valid only until the - * next error occurs or the library is terminated. - * - * @remark This function may be called before @ref glfwInit. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref error_handling - * @sa @ref glfwSetErrorCallback - * - * @since Added in version 3.3. - * - * @ingroup init - */ -GLFWAPI int glfwGetError(const char** description); - -/*! @brief Sets the error callback. - * - * This function sets the error callback, which is called with an error code - * and a human-readable description each time a GLFW error occurs. - * - * The error code is set before the callback is called. Calling @ref - * glfwGetError from the error callback will return the same value as the error - * code argument. - * - * The error callback is called on the thread where the error occurred. If you - * are using GLFW from multiple threads, your error callback needs to be - * written accordingly. - * - * Because the description string may have been generated specifically for that - * error, it is not guaranteed to be valid after the callback has returned. If - * you wish to use it after the callback returns, you need to make a copy. - * - * Once set, the error callback remains set even after the library has been - * terminated. - * - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set. - * - * @errors None. - * - * @remark This function may be called before @ref glfwInit. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref error_handling - * @sa @ref glfwGetError - * - * @since Added in version 3.0. - * - * @ingroup init - */ -GLFWAPI GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun cbfun); - -/*! @brief Returns the currently connected monitors. - * - * This function returns an array of handles for all currently connected - * monitors. The primary monitor is always first in the returned array. If no - * monitors were found, this function returns `NULL`. - * - * @param[out] count Where to store the number of monitors in the returned - * array. This is set to zero if an error occurred. - * @return An array of monitor handles, or `NULL` if no monitors were found or - * if an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is guaranteed to be valid only until the - * monitor configuration changes or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_monitors - * @sa @ref monitor_event - * @sa @ref glfwGetPrimaryMonitor - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI GLFWmonitor** glfwGetMonitors(int* count); - -/*! @brief Returns the primary monitor. - * - * This function returns the primary monitor. This is usually the monitor - * where elements like the task bar or global menu bar are located. - * - * @return The primary monitor, or `NULL` if no monitors were found or if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @remark The primary monitor is always first in the array returned by @ref - * glfwGetMonitors. - * - * @sa @ref monitor_monitors - * @sa @ref glfwGetMonitors - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI GLFWmonitor* glfwGetPrimaryMonitor(void); - -/*! @brief Returns the position of the monitor's viewport on the virtual screen. - * - * This function returns the position, in screen coordinates, of the upper-left - * corner of the specified monitor. - * - * Any or all of the position arguments may be `NULL`. If an error occurs, all - * non-`NULL` position arguments will be set to zero. - * - * @param[in] monitor The monitor to query. - * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`. - * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_properties - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos); - -/*! @brief Retrives the work area of the monitor. - * - * This function returns the position, in screen coordinates, of the upper-left - * corner of the work area of the specified monitor along with the work area - * size in screen coordinates. The work area is defined as the area of the - * monitor not occluded by the operating system task bar where present. If no - * task bar exists then the work area is the monitor resolution in screen - * coordinates. - * - * Any or all of the position and size arguments may be `NULL`. If an error - * occurs, all non-`NULL` position and size arguments will be set to zero. - * - * @param[in] monitor The monitor to query. - * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`. - * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`. - * @param[out] width Where to store the monitor width, or `NULL`. - * @param[out] height Where to store the monitor height, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_workarea - * - * @since Added in version 3.3. - * - * @ingroup monitor - */ -GLFWAPI void glfwGetMonitorWorkarea(GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height); - -/*! @brief Returns the physical size of the monitor. - * - * This function returns the size, in millimetres, of the display area of the - * specified monitor. - * - * Some systems do not provide accurate monitor size information, either - * because the monitor - * [EDID](https://en.wikipedia.org/wiki/Extended_display_identification_data) - * data is incorrect or because the driver does not report it accurately. - * - * Any or all of the size arguments may be `NULL`. If an error occurs, all - * non-`NULL` size arguments will be set to zero. - * - * @param[in] monitor The monitor to query. - * @param[out] widthMM Where to store the width, in millimetres, of the - * monitor's display area, or `NULL`. - * @param[out] heightMM Where to store the height, in millimetres, of the - * monitor's display area, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @remark @win32 calculates the returned physical size from the - * current resolution and system DPI instead of querying the monitor EDID data. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_properties - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI void glfwGetMonitorPhysicalSize(GLFWmonitor* monitor, int* widthMM, int* heightMM); - -/*! @brief Retrieves the content scale for the specified monitor. - * - * This function retrieves the content scale for the specified monitor. The - * content scale is the ratio between the current DPI and the platform's - * default DPI. This is especially important for text and any UI elements. If - * the pixel dimensions of your UI scaled by this look appropriate on your - * machine then it should appear at a reasonable size on other machines - * regardless of their DPI and scaling settings. This relies on the system DPI - * and scaling settings being somewhat correct. - * - * The content scale may depend on both the monitor resolution and pixel - * density and on user settings. It may be very different from the raw DPI - * calculated from the physical size and current resolution. - * - * @param[in] monitor The monitor to query. - * @param[out] xscale Where to store the x-axis content scale, or `NULL`. - * @param[out] yscale Where to store the y-axis content scale, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_scale - * @sa @ref glfwGetWindowContentScale - * - * @since Added in version 3.3. - * - * @ingroup monitor - */ -GLFWAPI void glfwGetMonitorContentScale(GLFWmonitor* monitor, float* xscale, float* yscale); - -/*! @brief Returns the name of the specified monitor. - * - * This function returns a human-readable name, encoded as UTF-8, of the - * specified monitor. The name typically reflects the make and model of the - * monitor and is not guaranteed to be unique among the connected monitors. - * - * @param[in] monitor The monitor to query. - * @return The UTF-8 encoded name of the monitor, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified monitor is - * disconnected or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_properties - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI const char* glfwGetMonitorName(GLFWmonitor* monitor); - -/*! @brief Sets the user pointer of the specified monitor. - * - * This function sets the user-defined pointer of the specified monitor. The - * current value is retained until the monitor is disconnected. The initial - * value is `NULL`. - * - * This function may be called from the monitor callback, even for a monitor - * that is being disconnected. - * - * @param[in] monitor The monitor whose pointer to set. - * @param[in] pointer The new value. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref monitor_userptr - * @sa @ref glfwGetMonitorUserPointer - * - * @since Added in version 3.3. - * - * @ingroup monitor - */ -GLFWAPI void glfwSetMonitorUserPointer(GLFWmonitor* monitor, void* pointer); - -/*! @brief Returns the user pointer of the specified monitor. - * - * This function returns the current value of the user-defined pointer of the - * specified monitor. The initial value is `NULL`. - * - * This function may be called from the monitor callback, even for a monitor - * that is being disconnected. - * - * @param[in] monitor The monitor whose pointer to return. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref monitor_userptr - * @sa @ref glfwSetMonitorUserPointer - * - * @since Added in version 3.3. - * - * @ingroup monitor - */ -GLFWAPI void* glfwGetMonitorUserPointer(GLFWmonitor* monitor); - -/*! @brief Sets the monitor configuration callback. - * - * This function sets the monitor configuration callback, or removes the - * currently set callback. This is called when a monitor is connected to or - * disconnected from the system. - * - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_event - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun cbfun); - -/*! @brief Returns the available video modes for the specified monitor. - * - * This function returns an array of all video modes supported by the specified - * monitor. The returned array is sorted in ascending order, first by color - * bit depth (the sum of all channel depths) and then by resolution area (the - * product of width and height). - * - * @param[in] monitor The monitor to query. - * @param[out] count Where to store the number of video modes in the returned - * array. This is set to zero if an error occurred. - * @return An array of video modes, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified monitor is - * disconnected, this function is called again for that monitor or the library - * is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_modes - * @sa @ref glfwGetVideoMode - * - * @since Added in version 1.0. - * @glfw3 Changed to return an array of modes for a specific monitor. - * - * @ingroup monitor - */ -GLFWAPI const GLFWvidmode* glfwGetVideoModes(GLFWmonitor* monitor, int* count); - -/*! @brief Returns the current mode of the specified monitor. - * - * This function returns the current video mode of the specified monitor. If - * you have created a full screen window for that monitor, the return value - * will depend on whether that window is iconified. - * - * @param[in] monitor The monitor to query. - * @return The current mode of the monitor, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified monitor is - * disconnected or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_modes - * @sa @ref glfwGetVideoModes - * - * @since Added in version 3.0. Replaces `glfwGetDesktopMode`. - * - * @ingroup monitor - */ -GLFWAPI const GLFWvidmode* glfwGetVideoMode(GLFWmonitor* monitor); - -/*! @brief Generates a gamma ramp and sets it for the specified monitor. - * - * This function generates an appropriately sized gamma ramp from the specified - * exponent and then calls @ref glfwSetGammaRamp with it. The value must be - * a finite number greater than zero. - * - * The software controlled gamma ramp is applied _in addition_ to the hardware - * gamma correction, which today is usually an approximation of sRGB gamma. - * This means that setting a perfectly linear ramp, or gamma 1.0, will produce - * the default (usually sRGB-like) behavior. - * - * For gamma correct rendering with OpenGL or OpenGL ES, see the @ref - * GLFW_SRGB_CAPABLE hint. - * - * @param[in] monitor The monitor whose gamma ramp to set. - * @param[in] gamma The desired exponent. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. - * - * @remark @wayland Gamma handling is a priviledged protocol, this function - * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_gamma - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI void glfwSetGamma(GLFWmonitor* monitor, float gamma); - -/*! @brief Returns the current gamma ramp for the specified monitor. - * - * This function returns the current gamma ramp of the specified monitor. - * - * @param[in] monitor The monitor to query. - * @return The current gamma ramp, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @wayland Gamma handling is a priviledged protocol, this function - * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR while - * returning `NULL`. - * - * @pointer_lifetime The returned structure and its arrays are allocated and - * freed by GLFW. You should not free them yourself. They are valid until the - * specified monitor is disconnected, this function is called again for that - * monitor or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_gamma - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI const GLFWgammaramp* glfwGetGammaRamp(GLFWmonitor* monitor); - -/*! @brief Sets the current gamma ramp for the specified monitor. - * - * This function sets the current gamma ramp for the specified monitor. The - * original gamma ramp for that monitor is saved by GLFW the first time this - * function is called and is restored by @ref glfwTerminate. - * - * The software controlled gamma ramp is applied _in addition_ to the hardware - * gamma correction, which today is usually an approximation of sRGB gamma. - * This means that setting a perfectly linear ramp, or gamma 1.0, will produce - * the default (usually sRGB-like) behavior. - * - * For gamma correct rendering with OpenGL or OpenGL ES, see the @ref - * GLFW_SRGB_CAPABLE hint. - * - * @param[in] monitor The monitor whose gamma ramp to set. - * @param[in] ramp The gamma ramp to use. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark The size of the specified gamma ramp should match the size of the - * current ramp for that monitor. - * - * @remark @win32 The gamma ramp size must be 256. - * - * @remark @wayland Gamma handling is a priviledged protocol, this function - * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The specified gamma ramp is copied before this function - * returns. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_gamma - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI void glfwSetGammaRamp(GLFWmonitor* monitor, const GLFWgammaramp* ramp); - -/*! @brief Resets all window hints to their default values. - * - * This function resets all window hints to their - * [default values](@ref window_hints_values). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_hints - * @sa @ref glfwWindowHint - * @sa @ref glfwWindowHintString - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwDefaultWindowHints(void); - -/*! @brief Sets the specified window hint to the desired value. - * - * This function sets hints for the next call to @ref glfwCreateWindow. The - * hints, once set, retain their values until changed by a call to this - * function or @ref glfwDefaultWindowHints, or until the library is terminated. - * - * Only integer value hints can be set with this function. String value hints - * are set with @ref glfwWindowHintString. - * - * This function does not check whether the specified hint values are valid. - * If you set hints to invalid values this will instead be reported by the next - * call to @ref glfwCreateWindow. - * - * Some hints are platform specific. These may be set on any platform but they - * will only affect their specific platform. Other platforms will ignore them. - * Setting these hints requires no platform specific headers or functions. - * - * @param[in] hint The [window hint](@ref window_hints) to set. - * @param[in] value The new value of the window hint. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_hints - * @sa @ref glfwWindowHintString - * @sa @ref glfwDefaultWindowHints - * - * @since Added in version 3.0. Replaces `glfwOpenWindowHint`. - * - * @ingroup window - */ -GLFWAPI void glfwWindowHint(int hint, int value); - -/*! @brief Sets the specified window hint to the desired value. - * - * This function sets hints for the next call to @ref glfwCreateWindow. The - * hints, once set, retain their values until changed by a call to this - * function or @ref glfwDefaultWindowHints, or until the library is terminated. - * - * Only string type hints can be set with this function. Integer value hints - * are set with @ref glfwWindowHint. - * - * This function does not check whether the specified hint values are valid. - * If you set hints to invalid values this will instead be reported by the next - * call to @ref glfwCreateWindow. - * - * Some hints are platform specific. These may be set on any platform but they - * will only affect their specific platform. Other platforms will ignore them. - * Setting these hints requires no platform specific headers or functions. - * - * @param[in] hint The [window hint](@ref window_hints) to set. - * @param[in] value The new value of the window hint. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @pointer_lifetime The specified string is copied before this function - * returns. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_hints - * @sa @ref glfwWindowHint - * @sa @ref glfwDefaultWindowHints - * - * @since Added in version 3.3. - * - * @ingroup window - */ -GLFWAPI void glfwWindowHintString(int hint, const char* value); - -/*! @brief Creates a window and its associated context. - * - * This function creates a window and its associated OpenGL or OpenGL ES - * context. Most of the options controlling how the window and its context - * should be created are specified with [window hints](@ref window_hints). - * - * Successful creation does not change which context is current. Before you - * can use the newly created context, you need to - * [make it current](@ref context_current). For information about the `share` - * parameter, see @ref context_sharing. - * - * The created window, framebuffer and context may differ from what you - * requested, as not all parameters and hints are - * [hard constraints](@ref window_hints_hard). This includes the size of the - * window, especially for full screen windows. To query the actual attributes - * of the created window, framebuffer and context, see @ref - * glfwGetWindowAttrib, @ref glfwGetWindowSize and @ref glfwGetFramebufferSize. - * - * To create a full screen window, you need to specify the monitor the window - * will cover. If no monitor is specified, the window will be windowed mode. - * Unless you have a way for the user to choose a specific monitor, it is - * recommended that you pick the primary monitor. For more information on how - * to query connected monitors, see @ref monitor_monitors. - * - * For full screen windows, the specified size becomes the resolution of the - * window's _desired video mode_. As long as a full screen window is not - * iconified, the supported video mode most closely matching the desired video - * mode is set for the specified monitor. For more information about full - * screen windows, including the creation of so called _windowed full screen_ - * or _borderless full screen_ windows, see @ref window_windowed_full_screen. - * - * Once you have created the window, you can switch it between windowed and - * full screen mode with @ref glfwSetWindowMonitor. This will not affect its - * OpenGL or OpenGL ES context. - * - * By default, newly created windows use the placement recommended by the - * window system. To create the window at a specific position, make it - * initially invisible using the [GLFW_VISIBLE](@ref GLFW_VISIBLE_hint) window - * hint, set its [position](@ref window_pos) and then [show](@ref window_hide) - * it. - * - * As long as at least one full screen window is not iconified, the screensaver - * is prohibited from starting. - * - * Window systems put limits on window sizes. Very large or very small window - * dimensions may be overridden by the window system on creation. Check the - * actual [size](@ref window_size) after creation. - * - * The [swap interval](@ref buffer_swap) is not set during window creation and - * the initial value may vary depending on driver settings and defaults. - * - * @param[in] width The desired width, in screen coordinates, of the window. - * This must be greater than zero. - * @param[in] height The desired height, in screen coordinates, of the window. - * This must be greater than zero. - * @param[in] title The initial, UTF-8 encoded window title. - * @param[in] monitor The monitor to use for full screen mode, or `NULL` for - * windowed mode. - * @param[in] share The window whose context to share resources with, or `NULL` - * to not share resources. - * @return The handle of the created window, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE, @ref GLFW_API_UNAVAILABLE, @ref - * GLFW_VERSION_UNAVAILABLE, @ref GLFW_FORMAT_UNAVAILABLE and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @win32 Window creation will fail if the Microsoft GDI software - * OpenGL implementation is the only one available. - * - * @remark @win32 If the executable has an icon resource named `GLFW_ICON,` it - * will be set as the initial icon for the window. If no such icon is present, - * the `IDI_APPLICATION` icon will be used instead. To set a different icon, - * see @ref glfwSetWindowIcon. - * - * @remark @win32 The context to share resources with must not be current on - * any other thread. - * - * @remark @macos The OS only supports forward-compatible core profile contexts - * for OpenGL versions 3.2 and later. Before creating an OpenGL context of - * version 3.2 or later you must set the - * [GLFW_OPENGL_FORWARD_COMPAT](@ref GLFW_OPENGL_FORWARD_COMPAT_hint) and - * [GLFW_OPENGL_PROFILE](@ref GLFW_OPENGL_PROFILE_hint) hints accordingly. - * OpenGL 3.0 and 3.1 contexts are not supported at all on macOS. - * - * @remark @macos The GLFW window has no icon, as it is not a document - * window, but the dock icon will be the same as the application bundle's icon. - * For more information on bundles, see the - * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/) - * in the Mac Developer Library. - * - * @remark @macos The first time a window is created the menu bar is created. - * If GLFW finds a `MainMenu.nib` it is loaded and assumed to contain a menu - * bar. Otherwise a minimal menu bar is created manually with common commands - * like Hide, Quit and About. The About entry opens a minimal about dialog - * with information from the application's bundle. Menu bar creation can be - * disabled entirely with the @ref GLFW_COCOA_MENUBAR init hint. - * - * @remark @macos On OS X 10.10 and later the window frame will not be rendered - * at full resolution on Retina displays unless the - * [GLFW_COCOA_RETINA_FRAMEBUFFER](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint) - * hint is `GLFW_TRUE` and the `NSHighResolutionCapable` key is enabled in the - * application bundle's `Info.plist`. For more information, see - * [High Resolution Guidelines for OS X](https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Explained/Explained.html) - * in the Mac Developer Library. The GLFW test and example programs use - * a custom `Info.plist` template for this, which can be found as - * `CMake/MacOSXBundleInfo.plist.in` in the source tree. - * - * @remark @macos When activating frame autosaving with - * [GLFW_COCOA_FRAME_NAME](@ref GLFW_COCOA_FRAME_NAME_hint), the specified - * window size and position may be overriden by previously saved values. - * - * @remark @x11 Some window managers will not respect the placement of - * initially hidden windows. - * - * @remark @x11 Due to the asynchronous nature of X11, it may take a moment for - * a window to reach its requested state. This means you may not be able to - * query the final size, position or other attributes directly after window - * creation. - * - * @remark @x11 The class part of the `WM_CLASS` window property will by - * default be set to the window title passed to this function. The instance - * part will use the contents of the `RESOURCE_NAME` environment variable, if - * present and not empty, or fall back to the window title. Set the - * [GLFW_X11_CLASS_NAME](@ref GLFW_X11_CLASS_NAME_hint) and - * [GLFW_X11_INSTANCE_NAME](@ref GLFW_X11_INSTANCE_NAME_hint) window hints to - * override this. - * - * @remark @wayland Compositors should implement the xdg-decoration protocol - * for GLFW to decorate the window properly. If this protocol isn't - * supported, or if the compositor prefers client-side decorations, a very - * simple fallback frame will be drawn using the wp_viewporter protocol. A - * compositor can still emit close, maximize or fullscreen events, using for - * instance a keybind mechanism. If neither of these protocols is supported, - * the window won't be decorated. - * - * @remark @wayland A full screen window will not attempt to change the mode, - * no matter what the requested size or refresh rate. - * - * @remark @wayland Screensaver inhibition requires the idle-inhibit protocol - * to be implemented in the user's compositor. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_creation - * @sa @ref glfwDestroyWindow - * - * @since Added in version 3.0. Replaces `glfwOpenWindow`. - * - * @ingroup window - */ -GLFWAPI GLFWwindow* glfwCreateWindow(int width, int height, const char* title, GLFWmonitor* monitor, GLFWwindow* share); - -/*! @brief Destroys the specified window and its context. - * - * This function destroys the specified window and its context. On calling - * this function, no further callbacks will be called for that window. - * - * If the context of the specified window is current on the main thread, it is - * detached before being destroyed. - * - * @param[in] window The window to destroy. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @note The context of the specified window must not be current on any other - * thread when this function is called. - * - * @reentrancy This function must not be called from a callback. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_creation - * @sa @ref glfwCreateWindow - * - * @since Added in version 3.0. Replaces `glfwCloseWindow`. - * - * @ingroup window - */ -GLFWAPI void glfwDestroyWindow(GLFWwindow* window); - -/*! @brief Checks the close flag of the specified window. - * - * This function returns the value of the close flag of the specified window. - * - * @param[in] window The window to query. - * @return The value of the close flag. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref window_close - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI int glfwWindowShouldClose(GLFWwindow* window); - -/*! @brief Sets the close flag of the specified window. - * - * This function sets the value of the close flag of the specified window. - * This can be used to override the user's attempt to close the window, or - * to signal that it should be closed. - * - * @param[in] window The window whose flag to change. - * @param[in] value The new value. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref window_close - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowShouldClose(GLFWwindow* window, int value); - -/*! @brief Sets the title of the specified window. - * - * This function sets the window title, encoded as UTF-8, of the specified - * window. - * - * @param[in] window The window whose title to change. - * @param[in] title The UTF-8 encoded window title. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @macos The window title will not be updated until the next time you - * process events. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_title - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowTitle(GLFWwindow* window, const char* title); - -/*! @brief Sets the icon for the specified window. - * - * This function sets the icon of the specified window. If passed an array of - * candidate images, those of or closest to the sizes desired by the system are - * selected. If no images are specified, the window reverts to its default - * icon. - * - * The pixels are 32-bit, little-endian, non-premultiplied RGBA, i.e. eight - * bits per channel with the red channel first. They are arranged canonically - * as packed sequential rows, starting from the top-left corner. - * - * The desired image sizes varies depending on platform and system settings. - * The selected images will be rescaled as needed. Good sizes include 16x16, - * 32x32 and 48x48. - * - * @param[in] window The window whose icon to set. - * @param[in] count The number of images in the specified array, or zero to - * revert to the default window icon. - * @param[in] images The images to create the icon from. This is ignored if - * count is zero. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The specified image data is copied before this function - * returns. - * - * @remark @macos The GLFW window has no icon, as it is not a document - * window, so this function does nothing. The dock icon will be the same as - * the application bundle's icon. For more information on bundles, see the - * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/) - * in the Mac Developer Library. - * - * @remark @wayland There is no existing protocol to change an icon, the - * window will thus inherit the one defined in the application's desktop file. - * This function always emits @ref GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_icon - * - * @since Added in version 3.2. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowIcon(GLFWwindow* window, int count, const GLFWimage* images); - -/*! @brief Retrieves the position of the content area of the specified window. - * - * This function retrieves the position, in screen coordinates, of the - * upper-left corner of the content area of the specified window. - * - * Any or all of the position arguments may be `NULL`. If an error occurs, all - * non-`NULL` position arguments will be set to zero. - * - * @param[in] window The window to query. - * @param[out] xpos Where to store the x-coordinate of the upper-left corner of - * the content area, or `NULL`. - * @param[out] ypos Where to store the y-coordinate of the upper-left corner of - * the content area, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @wayland There is no way for an application to retrieve the global - * position of its windows, this function will always emit @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_pos - * @sa @ref glfwSetWindowPos - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwGetWindowPos(GLFWwindow* window, int* xpos, int* ypos); - -/*! @brief Sets the position of the content area of the specified window. - * - * This function sets the position, in screen coordinates, of the upper-left - * corner of the content area of the specified windowed mode window. If the - * window is a full screen window, this function does nothing. - * - * __Do not use this function__ to move an already visible window unless you - * have very good reasons for doing so, as it will confuse and annoy the user. - * - * The window manager may put limits on what positions are allowed. GLFW - * cannot and should not override these limits. - * - * @param[in] window The window to query. - * @param[in] xpos The x-coordinate of the upper-left corner of the content area. - * @param[in] ypos The y-coordinate of the upper-left corner of the content area. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @wayland There is no way for an application to set the global - * position of its windows, this function will always emit @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_pos - * @sa @ref glfwGetWindowPos - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos); - -/*! @brief Retrieves the size of the content area of the specified window. - * - * This function retrieves the size, in screen coordinates, of the content area - * of the specified window. If you wish to retrieve the size of the - * framebuffer of the window in pixels, see @ref glfwGetFramebufferSize. - * - * Any or all of the size arguments may be `NULL`. If an error occurs, all - * non-`NULL` size arguments will be set to zero. - * - * @param[in] window The window whose size to retrieve. - * @param[out] width Where to store the width, in screen coordinates, of the - * content area, or `NULL`. - * @param[out] height Where to store the height, in screen coordinates, of the - * content area, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_size - * @sa @ref glfwSetWindowSize - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwGetWindowSize(GLFWwindow* window, int* width, int* height); - -/*! @brief Sets the size limits of the specified window. - * - * This function sets the size limits of the content area of the specified - * window. If the window is full screen, the size limits only take effect - * once it is made windowed. If the window is not resizable, this function - * does nothing. - * - * The size limits are applied immediately to a windowed mode window and may - * cause it to be resized. - * - * The maximum dimensions must be greater than or equal to the minimum - * dimensions and all must be greater than or equal to zero. - * - * @param[in] window The window to set limits for. - * @param[in] minwidth The minimum width, in screen coordinates, of the content - * area, or `GLFW_DONT_CARE`. - * @param[in] minheight The minimum height, in screen coordinates, of the - * content area, or `GLFW_DONT_CARE`. - * @param[in] maxwidth The maximum width, in screen coordinates, of the content - * area, or `GLFW_DONT_CARE`. - * @param[in] maxheight The maximum height, in screen coordinates, of the - * content area, or `GLFW_DONT_CARE`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. - * - * @remark If you set size limits and an aspect ratio that conflict, the - * results are undefined. - * - * @remark @wayland The size limits will not be applied until the window is - * actually resized, either by the user or by the compositor. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_sizelimits - * @sa @ref glfwSetWindowAspectRatio - * - * @since Added in version 3.2. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowSizeLimits(GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight); - -/*! @brief Sets the aspect ratio of the specified window. - * - * This function sets the required aspect ratio of the content area of the - * specified window. If the window is full screen, the aspect ratio only takes - * effect once it is made windowed. If the window is not resizable, this - * function does nothing. - * - * The aspect ratio is specified as a numerator and a denominator and both - * values must be greater than zero. For example, the common 16:9 aspect ratio - * is specified as 16 and 9, respectively. - * - * If the numerator and denominator is set to `GLFW_DONT_CARE` then the aspect - * ratio limit is disabled. - * - * The aspect ratio is applied immediately to a windowed mode window and may - * cause it to be resized. - * - * @param[in] window The window to set limits for. - * @param[in] numer The numerator of the desired aspect ratio, or - * `GLFW_DONT_CARE`. - * @param[in] denom The denominator of the desired aspect ratio, or - * `GLFW_DONT_CARE`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. - * - * @remark If you set size limits and an aspect ratio that conflict, the - * results are undefined. - * - * @remark @wayland The aspect ratio will not be applied until the window is - * actually resized, either by the user or by the compositor. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_sizelimits - * @sa @ref glfwSetWindowSizeLimits - * - * @since Added in version 3.2. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowAspectRatio(GLFWwindow* window, int numer, int denom); - -/*! @brief Sets the size of the content area of the specified window. - * - * This function sets the size, in screen coordinates, of the content area of - * the specified window. - * - * For full screen windows, this function updates the resolution of its desired - * video mode and switches to the video mode closest to it, without affecting - * the window's context. As the context is unaffected, the bit depths of the - * framebuffer remain unchanged. - * - * If you wish to update the refresh rate of the desired video mode in addition - * to its resolution, see @ref glfwSetWindowMonitor. - * - * The window manager may put limits on what sizes are allowed. GLFW cannot - * and should not override these limits. - * - * @param[in] window The window to resize. - * @param[in] width The desired width, in screen coordinates, of the window - * content area. - * @param[in] height The desired height, in screen coordinates, of the window - * content area. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @wayland A full screen window will not attempt to change the mode, - * no matter what the requested size. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_size - * @sa @ref glfwGetWindowSize - * @sa @ref glfwSetWindowMonitor - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowSize(GLFWwindow* window, int width, int height); - -/*! @brief Retrieves the size of the framebuffer of the specified window. - * - * This function retrieves the size, in pixels, of the framebuffer of the - * specified window. If you wish to retrieve the size of the window in screen - * coordinates, see @ref glfwGetWindowSize. - * - * Any or all of the size arguments may be `NULL`. If an error occurs, all - * non-`NULL` size arguments will be set to zero. - * - * @param[in] window The window whose framebuffer to query. - * @param[out] width Where to store the width, in pixels, of the framebuffer, - * or `NULL`. - * @param[out] height Where to store the height, in pixels, of the framebuffer, - * or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_fbsize - * @sa @ref glfwSetFramebufferSizeCallback - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwGetFramebufferSize(GLFWwindow* window, int* width, int* height); - -/*! @brief Retrieves the size of the frame of the window. - * - * This function retrieves the size, in screen coordinates, of each edge of the - * frame of the specified window. This size includes the title bar, if the - * window has one. The size of the frame may vary depending on the - * [window-related hints](@ref window_hints_wnd) used to create it. - * - * Because this function retrieves the size of each window frame edge and not - * the offset along a particular coordinate axis, the retrieved values will - * always be zero or positive. - * - * Any or all of the size arguments may be `NULL`. If an error occurs, all - * non-`NULL` size arguments will be set to zero. - * - * @param[in] window The window whose frame size to query. - * @param[out] left Where to store the size, in screen coordinates, of the left - * edge of the window frame, or `NULL`. - * @param[out] top Where to store the size, in screen coordinates, of the top - * edge of the window frame, or `NULL`. - * @param[out] right Where to store the size, in screen coordinates, of the - * right edge of the window frame, or `NULL`. - * @param[out] bottom Where to store the size, in screen coordinates, of the - * bottom edge of the window frame, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_size - * - * @since Added in version 3.1. - * - * @ingroup window - */ -GLFWAPI void glfwGetWindowFrameSize(GLFWwindow* window, int* left, int* top, int* right, int* bottom); - -/*! @brief Retrieves the content scale for the specified window. - * - * This function retrieves the content scale for the specified window. The - * content scale is the ratio between the current DPI and the platform's - * default DPI. This is especially important for text and any UI elements. If - * the pixel dimensions of your UI scaled by this look appropriate on your - * machine then it should appear at a reasonable size on other machines - * regardless of their DPI and scaling settings. This relies on the system DPI - * and scaling settings being somewhat correct. - * - * On systems where each monitors can have its own content scale, the window - * content scale will depend on which monitor the system considers the window - * to be on. - * - * @param[in] window The window to query. - * @param[out] xscale Where to store the x-axis content scale, or `NULL`. - * @param[out] yscale Where to store the y-axis content scale, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_scale - * @sa @ref glfwSetWindowContentScaleCallback - * @sa @ref glfwGetMonitorContentScale - * - * @since Added in version 3.3. - * - * @ingroup window - */ -GLFWAPI void glfwGetWindowContentScale(GLFWwindow* window, float* xscale, float* yscale); - -/*! @brief Returns the opacity of the whole window. - * - * This function returns the opacity of the window, including any decorations. - * - * The opacity (or alpha) value is a positive finite number between zero and - * one, where zero is fully transparent and one is fully opaque. If the system - * does not support whole window transparency, this function always returns one. - * - * The initial opacity value for newly created windows is one. - * - * @param[in] window The window to query. - * @return The opacity value of the specified window. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_transparency - * @sa @ref glfwSetWindowOpacity - * - * @since Added in version 3.3. - * - * @ingroup window - */ -GLFWAPI float glfwGetWindowOpacity(GLFWwindow* window); - -/*! @brief Sets the opacity of the whole window. - * - * This function sets the opacity of the window, including any decorations. - * - * The opacity (or alpha) value is a positive finite number between zero and - * one, where zero is fully transparent and one is fully opaque. - * - * The initial opacity value for newly created windows is one. - * - * A window created with framebuffer transparency may not use whole window - * transparency. The results of doing this are undefined. - * - * @param[in] window The window to set the opacity for. - * @param[in] opacity The desired opacity of the specified window. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_transparency - * @sa @ref glfwGetWindowOpacity - * - * @since Added in version 3.3. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowOpacity(GLFWwindow* window, float opacity); - -/*! @brief Iconifies the specified window. - * - * This function iconifies (minimizes) the specified window if it was - * previously restored. If the window is already iconified, this function does - * nothing. - * - * If the specified window is a full screen window, the original monitor - * resolution is restored until the window is restored. - * - * @param[in] window The window to iconify. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @wayland There is no concept of iconification in wl_shell, this - * function will emit @ref GLFW_PLATFORM_ERROR when using this deprecated - * protocol. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_iconify - * @sa @ref glfwRestoreWindow - * @sa @ref glfwMaximizeWindow - * - * @since Added in version 2.1. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwIconifyWindow(GLFWwindow* window); - -/*! @brief Restores the specified window. - * - * This function restores the specified window if it was previously iconified - * (minimized) or maximized. If the window is already restored, this function - * does nothing. - * - * If the specified window is a full screen window, the resolution chosen for - * the window is restored on the selected monitor. - * - * @param[in] window The window to restore. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_iconify - * @sa @ref glfwIconifyWindow - * @sa @ref glfwMaximizeWindow - * - * @since Added in version 2.1. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwRestoreWindow(GLFWwindow* window); - -/*! @brief Maximizes the specified window. - * - * This function maximizes the specified window if it was previously not - * maximized. If the window is already maximized, this function does nothing. - * - * If the specified window is a full screen window, this function does nothing. - * - * @param[in] window The window to maximize. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_iconify - * @sa @ref glfwIconifyWindow - * @sa @ref glfwRestoreWindow - * - * @since Added in GLFW 3.2. - * - * @ingroup window - */ -GLFWAPI void glfwMaximizeWindow(GLFWwindow* window); - -/*! @brief Makes the specified window visible. - * - * This function makes the specified window visible if it was previously - * hidden. If the window is already visible or is in full screen mode, this - * function does nothing. - * - * By default, windowed mode windows are focused when shown - * Set the [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) window hint - * to change this behavior for all newly created windows, or change the - * behavior for an existing window with @ref glfwSetWindowAttrib. - * - * @param[in] window The window to make visible. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_hide - * @sa @ref glfwHideWindow - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwShowWindow(GLFWwindow* window); - -/*! @brief Hides the specified window. - * - * This function hides the specified window if it was previously visible. If - * the window is already hidden or is in full screen mode, this function does - * nothing. - * - * @param[in] window The window to hide. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_hide - * @sa @ref glfwShowWindow - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwHideWindow(GLFWwindow* window); - -/*! @brief Brings the specified window to front and sets input focus. - * - * This function brings the specified window to front and sets input focus. - * The window should already be visible and not iconified. - * - * By default, both windowed and full screen mode windows are focused when - * initially created. Set the [GLFW_FOCUSED](@ref GLFW_FOCUSED_hint) to - * disable this behavior. - * - * Also by default, windowed mode windows are focused when shown - * with @ref glfwShowWindow. Set the - * [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) to disable this behavior. - * - * __Do not use this function__ to steal focus from other applications unless - * you are certain that is what the user wants. Focus stealing can be - * extremely disruptive. - * - * For a less disruptive way of getting the user's attention, see - * [attention requests](@ref window_attention). - * - * @param[in] window The window to give input focus. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @wayland It is not possible for an application to bring its windows - * to front, this function will always emit @ref GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_focus - * @sa @ref window_attention - * - * @since Added in version 3.2. - * - * @ingroup window - */ -GLFWAPI void glfwFocusWindow(GLFWwindow* window); - -/*! @brief Requests user attention to the specified window. - * - * This function requests user attention to the specified window. On - * platforms where this is not supported, attention is requested to the - * application as a whole. - * - * Once the user has given attention, usually by focusing the window or - * application, the system will end the request automatically. - * - * @param[in] window The window to request attention to. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @macos Attention is requested to the application as a whole, not the - * specific window. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_attention - * - * @since Added in version 3.3. - * - * @ingroup window - */ -GLFWAPI void glfwRequestWindowAttention(GLFWwindow* window); - -/*! @brief Returns the monitor that the window uses for full screen mode. - * - * This function returns the handle of the monitor that the specified window is - * in full screen on. - * - * @param[in] window The window to query. - * @return The monitor, or `NULL` if the window is in windowed mode or an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_monitor - * @sa @ref glfwSetWindowMonitor - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI GLFWmonitor* glfwGetWindowMonitor(GLFWwindow* window); - -/*! @brief Sets the mode, monitor, video mode and placement of a window. - * - * This function sets the monitor that the window uses for full screen mode or, - * if the monitor is `NULL`, makes it windowed mode. - * - * When setting a monitor, this function updates the width, height and refresh - * rate of the desired video mode and switches to the video mode closest to it. - * The window position is ignored when setting a monitor. - * - * When the monitor is `NULL`, the position, width and height are used to - * place the window content area. The refresh rate is ignored when no monitor - * is specified. - * - * If you only wish to update the resolution of a full screen window or the - * size of a windowed mode window, see @ref glfwSetWindowSize. - * - * When a window transitions from full screen to windowed mode, this function - * restores any previous window settings such as whether it is decorated, - * floating, resizable, has size or aspect ratio limits, etc. - * - * @param[in] window The window whose monitor, size or video mode to set. - * @param[in] monitor The desired monitor, or `NULL` to set windowed mode. - * @param[in] xpos The desired x-coordinate of the upper-left corner of the - * content area. - * @param[in] ypos The desired y-coordinate of the upper-left corner of the - * content area. - * @param[in] width The desired with, in screen coordinates, of the content - * area or video mode. - * @param[in] height The desired height, in screen coordinates, of the content - * area or video mode. - * @param[in] refreshRate The desired refresh rate, in Hz, of the video mode, - * or `GLFW_DONT_CARE`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark The OpenGL or OpenGL ES context will not be destroyed or otherwise - * affected by any resizing or mode switching, although you may need to update - * your viewport if the framebuffer size has changed. - * - * @remark @wayland The desired window position is ignored, as there is no way - * for an application to set this property. - * - * @remark @wayland Setting the window to full screen will not attempt to - * change the mode, no matter what the requested size or refresh rate. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_monitor - * @sa @ref window_full_screen - * @sa @ref glfwGetWindowMonitor - * @sa @ref glfwSetWindowSize - * - * @since Added in version 3.2. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowMonitor(GLFWwindow* window, GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate); - -/*! @brief Returns an attribute of the specified window. - * - * This function returns the value of an attribute of the specified window or - * its OpenGL or OpenGL ES context. - * - * @param[in] window The window to query. - * @param[in] attrib The [window attribute](@ref window_attribs) whose value to - * return. - * @return The value of the attribute, or zero if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @remark Framebuffer related hints are not window attributes. See @ref - * window_attribs_fb for more information. - * - * @remark Zero is a valid value for many window and context related - * attributes so you cannot use a return value of zero as an indication of - * errors. However, this function should not fail as long as it is passed - * valid arguments and the library has been [initialized](@ref intro_init). - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_attribs - * @sa @ref glfwSetWindowAttrib - * - * @since Added in version 3.0. Replaces `glfwGetWindowParam` and - * `glfwGetGLVersion`. - * - * @ingroup window - */ -GLFWAPI int glfwGetWindowAttrib(GLFWwindow* window, int attrib); - -/*! @brief Sets an attribute of the specified window. - * - * This function sets the value of an attribute of the specified window. - * - * The supported attributes are [GLFW_DECORATED](@ref GLFW_DECORATED_attrib), - * [GLFW_RESIZABLE](@ref GLFW_RESIZABLE_attrib), - * [GLFW_FLOATING](@ref GLFW_FLOATING_attrib), - * [GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_attrib) and - * [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_attrib). - * - * Some of these attributes are ignored for full screen windows. The new - * value will take effect if the window is later made windowed. - * - * Some of these attributes are ignored for windowed mode windows. The new - * value will take effect if the window is later made full screen. - * - * @param[in] window The window to set the attribute for. - * @param[in] attrib A supported window attribute. - * @param[in] value `GLFW_TRUE` or `GLFW_FALSE`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. - * - * @remark Calling @ref glfwGetWindowAttrib will always return the latest - * value, even if that value is ignored by the current mode of the window. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_attribs - * @sa @ref glfwGetWindowAttrib - * - * @since Added in version 3.3. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowAttrib(GLFWwindow* window, int attrib, int value); - -/*! @brief Sets the user pointer of the specified window. - * - * This function sets the user-defined pointer of the specified window. The - * current value is retained until the window is destroyed. The initial value - * is `NULL`. - * - * @param[in] window The window whose pointer to set. - * @param[in] pointer The new value. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref window_userptr - * @sa @ref glfwGetWindowUserPointer - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowUserPointer(GLFWwindow* window, void* pointer); - -/*! @brief Returns the user pointer of the specified window. - * - * This function returns the current value of the user-defined pointer of the - * specified window. The initial value is `NULL`. - * - * @param[in] window The window whose pointer to return. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref window_userptr - * @sa @ref glfwSetWindowUserPointer - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI void* glfwGetWindowUserPointer(GLFWwindow* window); - -/*! @brief Sets the position callback for the specified window. - * - * This function sets the position callback of the specified window, which is - * called when the window is moved. The callback is provided with the - * position, in screen coordinates, of the upper-left corner of the content - * area of the window. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @remark @wayland This callback will never be called, as there is no way for - * an application to know its global position. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_pos - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow* window, GLFWwindowposfun cbfun); - -/*! @brief Sets the size callback for the specified window. - * - * This function sets the size callback of the specified window, which is - * called when the window is resized. The callback is provided with the size, - * in screen coordinates, of the content area of the window. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_size - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter and return value. - * - * @ingroup window - */ -GLFWAPI GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwindowsizefun cbfun); - -/*! @brief Sets the close callback for the specified window. - * - * This function sets the close callback of the specified window, which is - * called when the user attempts to close the window, for example by clicking - * the close widget in the title bar. - * - * The close flag is set before this callback is called, but you can modify it - * at any time with @ref glfwSetWindowShouldClose. - * - * The close callback is not triggered by @ref glfwDestroyWindow. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @remark @macos Selecting Quit from the application menu will trigger the - * close callback for all windows. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_close - * - * @since Added in version 2.5. - * @glfw3 Added window handle parameter and return value. - * - * @ingroup window - */ -GLFWAPI GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwindowclosefun cbfun); - -/*! @brief Sets the refresh callback for the specified window. - * - * This function sets the refresh callback of the specified window, which is - * called when the content area of the window needs to be redrawn, for example - * if the window has been exposed after having been covered by another window. - * - * On compositing window systems such as Aero, Compiz, Aqua or Wayland, where - * the window contents are saved off-screen, this callback may be called only - * very infrequently or never at all. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_refresh - * - * @since Added in version 2.5. - * @glfw3 Added window handle parameter and return value. - * - * @ingroup window - */ -GLFWAPI GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow* window, GLFWwindowrefreshfun cbfun); - -/*! @brief Sets the focus callback for the specified window. - * - * This function sets the focus callback of the specified window, which is - * called when the window gains or loses input focus. - * - * After the focus callback is called for a window that lost input focus, - * synthetic key and mouse button release events will be generated for all such - * that had been pressed. For more information, see @ref glfwSetKeyCallback - * and @ref glfwSetMouseButtonCallback. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_focus - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* window, GLFWwindowfocusfun cbfun); - -/*! @brief Sets the iconify callback for the specified window. - * - * This function sets the iconification callback of the specified window, which - * is called when the window is iconified or restored. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @remark @wayland The wl_shell protocol has no concept of iconification, - * this callback will never be called when using this deprecated protocol. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_iconify - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow* window, GLFWwindowiconifyfun cbfun); - -/*! @brief Sets the maximize callback for the specified window. - * - * This function sets the maximization callback of the specified window, which - * is called when the window is maximized or restored. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_maximize - * - * @since Added in version 3.3. - * - * @ingroup window - */ -GLFWAPI GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow* window, GLFWwindowmaximizefun cbfun); - -/*! @brief Sets the framebuffer resize callback for the specified window. - * - * This function sets the framebuffer resize callback of the specified window, - * which is called when the framebuffer of the specified window is resized. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_fbsize - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow* window, GLFWframebuffersizefun cbfun); - -/*! @brief Sets the window content scale callback for the specified window. - * - * This function sets the window content scale callback of the specified window, - * which is called when the content scale of the specified window changes. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_scale - * @sa @ref glfwGetWindowContentScale - * - * @since Added in version 3.3. - * - * @ingroup window - */ -GLFWAPI GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow* window, GLFWwindowcontentscalefun cbfun); - -/*! @brief Processes all pending events. - * - * This function processes only those events that are already in the event - * queue and then returns immediately. Processing events will cause the window - * and input callbacks associated with those events to be called. - * - * On some platforms, a window move, resize or menu operation will cause event - * processing to block. This is due to how event processing is designed on - * those platforms. You can use the - * [window refresh callback](@ref window_refresh) to redraw the contents of - * your window when necessary during such operations. - * - * Do not assume that callbacks you set will _only_ be called in response to - * event processing functions like this one. While it is necessary to poll for - * events, window systems that require GLFW to register callbacks of its own - * can pass events to GLFW in response to many window system function calls. - * GLFW will pass those events on to the application callbacks before - * returning. - * - * Event processing is not required for joystick input to work. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @reentrancy This function must not be called from a callback. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref events - * @sa @ref glfwWaitEvents - * @sa @ref glfwWaitEventsTimeout - * - * @since Added in version 1.0. - * - * @ingroup window - */ -GLFWAPI void glfwPollEvents(void); - -/*! @brief Waits until events are queued and processes them. - * - * This function puts the calling thread to sleep until at least one event is - * available in the event queue. Once one or more events are available, - * it behaves exactly like @ref glfwPollEvents, i.e. the events in the queue - * are processed and the function then returns immediately. Processing events - * will cause the window and input callbacks associated with those events to be - * called. - * - * Since not all events are associated with callbacks, this function may return - * without a callback having been called even if you are monitoring all - * callbacks. - * - * On some platforms, a window move, resize or menu operation will cause event - * processing to block. This is due to how event processing is designed on - * those platforms. You can use the - * [window refresh callback](@ref window_refresh) to redraw the contents of - * your window when necessary during such operations. - * - * Do not assume that callbacks you set will _only_ be called in response to - * event processing functions like this one. While it is necessary to poll for - * events, window systems that require GLFW to register callbacks of its own - * can pass events to GLFW in response to many window system function calls. - * GLFW will pass those events on to the application callbacks before - * returning. - * - * Event processing is not required for joystick input to work. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @reentrancy This function must not be called from a callback. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref events - * @sa @ref glfwPollEvents - * @sa @ref glfwWaitEventsTimeout - * - * @since Added in version 2.5. - * - * @ingroup window - */ -GLFWAPI void glfwWaitEvents(void); - -/*! @brief Waits with timeout until events are queued and processes them. - * - * This function puts the calling thread to sleep until at least one event is - * available in the event queue, or until the specified timeout is reached. If - * one or more events are available, it behaves exactly like @ref - * glfwPollEvents, i.e. the events in the queue are processed and the function - * then returns immediately. Processing events will cause the window and input - * callbacks associated with those events to be called. - * - * The timeout value must be a positive finite number. - * - * Since not all events are associated with callbacks, this function may return - * without a callback having been called even if you are monitoring all - * callbacks. - * - * On some platforms, a window move, resize or menu operation will cause event - * processing to block. This is due to how event processing is designed on - * those platforms. You can use the - * [window refresh callback](@ref window_refresh) to redraw the contents of - * your window when necessary during such operations. - * - * Do not assume that callbacks you set will _only_ be called in response to - * event processing functions like this one. While it is necessary to poll for - * events, window systems that require GLFW to register callbacks of its own - * can pass events to GLFW in response to many window system function calls. - * GLFW will pass those events on to the application callbacks before - * returning. - * - * Event processing is not required for joystick input to work. - * - * @param[in] timeout The maximum amount of time, in seconds, to wait. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. - * - * @reentrancy This function must not be called from a callback. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref events - * @sa @ref glfwPollEvents - * @sa @ref glfwWaitEvents - * - * @since Added in version 3.2. - * - * @ingroup window - */ -GLFWAPI void glfwWaitEventsTimeout(double timeout); - -/*! @brief Posts an empty event to the event queue. - * - * This function posts an empty event from the current thread to the event - * queue, causing @ref glfwWaitEvents or @ref glfwWaitEventsTimeout to return. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref events - * @sa @ref glfwWaitEvents - * @sa @ref glfwWaitEventsTimeout - * - * @since Added in version 3.1. - * - * @ingroup window - */ -GLFWAPI void glfwPostEmptyEvent(void); - -/*! @brief Returns the value of an input option for the specified window. - * - * This function returns the value of an input option for the specified window. - * The mode must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS, - * @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or - * @ref GLFW_RAW_MOUSE_MOTION. - * - * @param[in] window The window to query. - * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`, - * `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or - * `GLFW_RAW_MOUSE_MOTION`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref glfwSetInputMode - * - * @since Added in version 3.0. - * - * @ingroup input - */ -GLFWAPI int glfwGetInputMode(GLFWwindow* window, int mode); - -/*! @brief Sets an input option for the specified window. - * - * This function sets an input mode option for the specified window. The mode - * must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS, - * @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or - * @ref GLFW_RAW_MOUSE_MOTION. - * - * If the mode is `GLFW_CURSOR`, the value must be one of the following cursor - * modes: - * - `GLFW_CURSOR_NORMAL` makes the cursor visible and behaving normally. - * - `GLFW_CURSOR_HIDDEN` makes the cursor invisible when it is over the - * content area of the window but does not restrict the cursor from leaving. - * - `GLFW_CURSOR_DISABLED` hides and grabs the cursor, providing virtual - * and unlimited cursor movement. This is useful for implementing for - * example 3D camera controls. - * - * If the mode is `GLFW_STICKY_KEYS`, the value must be either `GLFW_TRUE` to - * enable sticky keys, or `GLFW_FALSE` to disable it. If sticky keys are - * enabled, a key press will ensure that @ref glfwGetKey returns `GLFW_PRESS` - * the next time it is called even if the key had been released before the - * call. This is useful when you are only interested in whether keys have been - * pressed but not when or in which order. - * - * If the mode is `GLFW_STICKY_MOUSE_BUTTONS`, the value must be either - * `GLFW_TRUE` to enable sticky mouse buttons, or `GLFW_FALSE` to disable it. - * If sticky mouse buttons are enabled, a mouse button press will ensure that - * @ref glfwGetMouseButton returns `GLFW_PRESS` the next time it is called even - * if the mouse button had been released before the call. This is useful when - * you are only interested in whether mouse buttons have been pressed but not - * when or in which order. - * - * If the mode is `GLFW_LOCK_KEY_MODS`, the value must be either `GLFW_TRUE` to - * enable lock key modifier bits, or `GLFW_FALSE` to disable them. If enabled, - * callbacks that receive modifier bits will also have the @ref - * GLFW_MOD_CAPS_LOCK bit set when the event was generated with Caps Lock on, - * and the @ref GLFW_MOD_NUM_LOCK bit when Num Lock was on. - * - * If the mode is `GLFW_RAW_MOUSE_MOTION`, the value must be either `GLFW_TRUE` - * to enable raw (unscaled and unaccelerated) mouse motion when the cursor is - * disabled, or `GLFW_FALSE` to disable it. If raw motion is not supported, - * attempting to set this will emit @ref GLFW_PLATFORM_ERROR. Call @ref - * glfwRawMouseMotionSupported to check for support. - * - * @param[in] window The window whose input mode to set. - * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`, - * `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or - * `GLFW_RAW_MOUSE_MOTION`. - * @param[in] value The new value of the specified input mode. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref glfwGetInputMode - * - * @since Added in version 3.0. Replaces `glfwEnable` and `glfwDisable`. - * - * @ingroup input - */ -GLFWAPI void glfwSetInputMode(GLFWwindow* window, int mode, int value); - -/*! @brief Returns whether raw mouse motion is supported. - * - * This function returns whether raw mouse motion is supported on the current - * system. This status does not change after GLFW has been initialized so you - * only need to check this once. If you attempt to enable raw motion on - * a system that does not support it, @ref GLFW_PLATFORM_ERROR will be emitted. - * - * Raw mouse motion is closer to the actual motion of the mouse across - * a surface. It is not affected by the scaling and acceleration applied to - * the motion of the desktop cursor. That processing is suitable for a cursor - * while raw motion is better for controlling for example a 3D camera. Because - * of this, raw mouse motion is only provided when the cursor is disabled. - * - * @return `GLFW_TRUE` if raw mouse motion is supported on the current machine, - * or `GLFW_FALSE` otherwise. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref raw_mouse_motion - * @sa @ref glfwSetInputMode - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI int glfwRawMouseMotionSupported(void); - -/*! @brief Returns the layout-specific name of the specified printable key. - * - * This function returns the name of the specified printable key, encoded as - * UTF-8. This is typically the character that key would produce without any - * modifier keys, intended for displaying key bindings to the user. For dead - * keys, it is typically the diacritic it would add to a character. - * - * __Do not use this function__ for [text input](@ref input_char). You will - * break text input for many languages even if it happens to work for yours. - * - * If the key is `GLFW_KEY_UNKNOWN`, the scancode is used to identify the key, - * otherwise the scancode is ignored. If you specify a non-printable key, or - * `GLFW_KEY_UNKNOWN` and a scancode that maps to a non-printable key, this - * function returns `NULL` but does not emit an error. - * - * This behavior allows you to always pass in the arguments in the - * [key callback](@ref input_key) without modification. - * - * The printable keys are: - * - `GLFW_KEY_APOSTROPHE` - * - `GLFW_KEY_COMMA` - * - `GLFW_KEY_MINUS` - * - `GLFW_KEY_PERIOD` - * - `GLFW_KEY_SLASH` - * - `GLFW_KEY_SEMICOLON` - * - `GLFW_KEY_EQUAL` - * - `GLFW_KEY_LEFT_BRACKET` - * - `GLFW_KEY_RIGHT_BRACKET` - * - `GLFW_KEY_BACKSLASH` - * - `GLFW_KEY_WORLD_1` - * - `GLFW_KEY_WORLD_2` - * - `GLFW_KEY_0` to `GLFW_KEY_9` - * - `GLFW_KEY_A` to `GLFW_KEY_Z` - * - `GLFW_KEY_KP_0` to `GLFW_KEY_KP_9` - * - `GLFW_KEY_KP_DECIMAL` - * - `GLFW_KEY_KP_DIVIDE` - * - `GLFW_KEY_KP_MULTIPLY` - * - `GLFW_KEY_KP_SUBTRACT` - * - `GLFW_KEY_KP_ADD` - * - `GLFW_KEY_KP_EQUAL` - * - * Names for printable keys depend on keyboard layout, while names for - * non-printable keys are the same across layouts but depend on the application - * language and should be localized along with other user interface text. - * - * @param[in] key The key to query, or `GLFW_KEY_UNKNOWN`. - * @param[in] scancode The scancode of the key to query. - * @return The UTF-8 encoded, layout-specific name of the key, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the next call to @ref - * glfwGetKeyName, or until the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_key_name - * - * @since Added in version 3.2. - * - * @ingroup input - */ -GLFWAPI const char* glfwGetKeyName(int key, int scancode); - -/*! @brief Returns the platform-specific scancode of the specified key. - * - * This function returns the platform-specific scancode of the specified key. - * - * If the key is `GLFW_KEY_UNKNOWN` or does not exist on the keyboard this - * method will return `-1`. - * - * @param[in] key Any [named key](@ref keys). - * @return The platform-specific scancode for the key, or `-1` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref input_key - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI int glfwGetKeyScancode(int key); - -/*! @brief Returns the last reported state of a keyboard key for the specified - * window. - * - * This function returns the last state reported for the specified key to the - * specified window. The returned state is one of `GLFW_PRESS` or - * `GLFW_RELEASE`. The higher-level action `GLFW_REPEAT` is only reported to - * the key callback. - * - * If the @ref GLFW_STICKY_KEYS input mode is enabled, this function returns - * `GLFW_PRESS` the first time you call it for a key that was pressed, even if - * that key has already been released. - * - * The key functions deal with physical keys, with [key tokens](@ref keys) - * named after their use on the standard US keyboard layout. If you want to - * input text, use the Unicode character callback instead. - * - * The [modifier key bit masks](@ref mods) are not key tokens and cannot be - * used with this function. - * - * __Do not use this function__ to implement [text input](@ref input_char). - * - * @param[in] window The desired window. - * @param[in] key The desired [keyboard key](@ref keys). `GLFW_KEY_UNKNOWN` is - * not a valid key for this function. - * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_key - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup input - */ -GLFWAPI int glfwGetKey(GLFWwindow* window, int key); - -/*! @brief Returns the last reported state of a mouse button for the specified - * window. - * - * This function returns the last state reported for the specified mouse button - * to the specified window. The returned state is one of `GLFW_PRESS` or - * `GLFW_RELEASE`. - * - * If the @ref GLFW_STICKY_MOUSE_BUTTONS input mode is enabled, this function - * returns `GLFW_PRESS` the first time you call it for a mouse button that was - * pressed, even if that mouse button has already been released. - * - * @param[in] window The desired window. - * @param[in] button The desired [mouse button](@ref buttons). - * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_mouse_button - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup input - */ -GLFWAPI int glfwGetMouseButton(GLFWwindow* window, int button); - -/*! @brief Retrieves the position of the cursor relative to the content area of - * the window. - * - * This function returns the position of the cursor, in screen coordinates, - * relative to the upper-left corner of the content area of the specified - * window. - * - * If the cursor is disabled (with `GLFW_CURSOR_DISABLED`) then the cursor - * position is unbounded and limited only by the minimum and maximum values of - * a `double`. - * - * The coordinate can be converted to their integer equivalents with the - * `floor` function. Casting directly to an integer type works for positive - * coordinates, but fails for negative ones. - * - * Any or all of the position arguments may be `NULL`. If an error occurs, all - * non-`NULL` position arguments will be set to zero. - * - * @param[in] window The desired window. - * @param[out] xpos Where to store the cursor x-coordinate, relative to the - * left edge of the content area, or `NULL`. - * @param[out] ypos Where to store the cursor y-coordinate, relative to the to - * top edge of the content area, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_pos - * @sa @ref glfwSetCursorPos - * - * @since Added in version 3.0. Replaces `glfwGetMousePos`. - * - * @ingroup input - */ -GLFWAPI void glfwGetCursorPos(GLFWwindow* window, double* xpos, double* ypos); - -/*! @brief Sets the position of the cursor, relative to the content area of the - * window. - * - * This function sets the position, in screen coordinates, of the cursor - * relative to the upper-left corner of the content area of the specified - * window. The window must have input focus. If the window does not have - * input focus when this function is called, it fails silently. - * - * __Do not use this function__ to implement things like camera controls. GLFW - * already provides the `GLFW_CURSOR_DISABLED` cursor mode that hides the - * cursor, transparently re-centers it and provides unconstrained cursor - * motion. See @ref glfwSetInputMode for more information. - * - * If the cursor mode is `GLFW_CURSOR_DISABLED` then the cursor position is - * unconstrained and limited only by the minimum and maximum values of - * a `double`. - * - * @param[in] window The desired window. - * @param[in] xpos The desired x-coordinate, relative to the left edge of the - * content area. - * @param[in] ypos The desired y-coordinate, relative to the top edge of the - * content area. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @wayland This function will only work when the cursor mode is - * `GLFW_CURSOR_DISABLED`, otherwise it will do nothing. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_pos - * @sa @ref glfwGetCursorPos - * - * @since Added in version 3.0. Replaces `glfwSetMousePos`. - * - * @ingroup input - */ -GLFWAPI void glfwSetCursorPos(GLFWwindow* window, double xpos, double ypos); - -/*! @brief Creates a custom cursor. - * - * Creates a new custom cursor image that can be set for a window with @ref - * glfwSetCursor. The cursor can be destroyed with @ref glfwDestroyCursor. - * Any remaining cursors are destroyed by @ref glfwTerminate. - * - * The pixels are 32-bit, little-endian, non-premultiplied RGBA, i.e. eight - * bits per channel with the red channel first. They are arranged canonically - * as packed sequential rows, starting from the top-left corner. - * - * The cursor hotspot is specified in pixels, relative to the upper-left corner - * of the cursor image. Like all other coordinate systems in GLFW, the X-axis - * points to the right and the Y-axis points down. - * - * @param[in] image The desired cursor image. - * @param[in] xhot The desired x-coordinate, in pixels, of the cursor hotspot. - * @param[in] yhot The desired y-coordinate, in pixels, of the cursor hotspot. - * @return The handle of the created cursor, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The specified image data is copied before this function - * returns. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_object - * @sa @ref glfwDestroyCursor - * @sa @ref glfwCreateStandardCursor - * - * @since Added in version 3.1. - * - * @ingroup input - */ -GLFWAPI GLFWcursor* glfwCreateCursor(const GLFWimage* image, int xhot, int yhot); - -/*! @brief Creates a cursor with a standard shape. - * - * Returns a cursor with a [standard shape](@ref shapes), that can be set for - * a window with @ref glfwSetCursor. - * - * @param[in] shape One of the [standard shapes](@ref shapes). - * @return A new cursor ready to use or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_object - * @sa @ref glfwCreateCursor - * - * @since Added in version 3.1. - * - * @ingroup input - */ -GLFWAPI GLFWcursor* glfwCreateStandardCursor(int shape); - -/*! @brief Destroys a cursor. - * - * This function destroys a cursor previously created with @ref - * glfwCreateCursor. Any remaining cursors will be destroyed by @ref - * glfwTerminate. - * - * If the specified cursor is current for any window, that window will be - * reverted to the default cursor. This does not affect the cursor mode. - * - * @param[in] cursor The cursor object to destroy. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @reentrancy This function must not be called from a callback. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_object - * @sa @ref glfwCreateCursor - * - * @since Added in version 3.1. - * - * @ingroup input - */ -GLFWAPI void glfwDestroyCursor(GLFWcursor* cursor); - -/*! @brief Sets the cursor for the window. - * - * This function sets the cursor image to be used when the cursor is over the - * content area of the specified window. The set cursor will only be visible - * when the [cursor mode](@ref cursor_mode) of the window is - * `GLFW_CURSOR_NORMAL`. - * - * On some platforms, the set cursor may not be visible unless the window also - * has input focus. - * - * @param[in] window The window to set the cursor for. - * @param[in] cursor The cursor to set, or `NULL` to switch back to the default - * arrow cursor. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_object - * - * @since Added in version 3.1. - * - * @ingroup input - */ -GLFWAPI void glfwSetCursor(GLFWwindow* window, GLFWcursor* cursor); - -/*! @brief Sets the key callback. - * - * This function sets the key callback of the specified window, which is called - * when a key is pressed, repeated or released. - * - * The key functions deal with physical keys, with layout independent - * [key tokens](@ref keys) named after their values in the standard US keyboard - * layout. If you want to input text, use the - * [character callback](@ref glfwSetCharCallback) instead. - * - * When a window loses input focus, it will generate synthetic key release - * events for all pressed keys. You can tell these events from user-generated - * events by the fact that the synthetic ones are generated after the focus - * loss event has been processed, i.e. after the - * [window focus callback](@ref glfwSetWindowFocusCallback) has been called. - * - * The scancode of a key is specific to that platform or sometimes even to that - * machine. Scancodes are intended to allow users to bind keys that don't have - * a GLFW key token. Such keys have `key` set to `GLFW_KEY_UNKNOWN`, their - * state is not saved and so it cannot be queried with @ref glfwGetKey. - * - * Sometimes GLFW needs to generate synthetic key events, in which case the - * scancode may be zero. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new key callback, or `NULL` to remove the currently - * set callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_key - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter and return value. - * - * @ingroup input - */ -GLFWAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun cbfun); - -/*! @brief Sets the Unicode character callback. - * - * This function sets the character callback of the specified window, which is - * called when a Unicode character is input. - * - * The character callback is intended for Unicode text input. As it deals with - * characters, it is keyboard layout dependent, whereas the - * [key callback](@ref glfwSetKeyCallback) is not. Characters do not map 1:1 - * to physical keys, as a key may produce zero, one or more characters. If you - * want to know whether a specific physical key was pressed or released, see - * the key callback instead. - * - * The character callback behaves as system text input normally does and will - * not be called if modifier keys are held down that would prevent normal text - * input on that platform, for example a Super (Command) key on macOS or Alt key - * on Windows. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_char - * - * @since Added in version 2.4. - * @glfw3 Added window handle parameter and return value. - * - * @ingroup input - */ -GLFWAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun cbfun); - -/*! @brief Sets the Unicode character with modifiers callback. - * - * This function sets the character with modifiers callback of the specified - * window, which is called when a Unicode character is input regardless of what - * modifier keys are used. - * - * The character with modifiers callback is intended for implementing custom - * Unicode character input. For regular Unicode text input, see the - * [character callback](@ref glfwSetCharCallback). Like the character - * callback, the character with modifiers callback deals with characters and is - * keyboard layout dependent. Characters do not map 1:1 to physical keys, as - * a key may produce zero, one or more characters. If you want to know whether - * a specific physical key was pressed or released, see the - * [key callback](@ref glfwSetKeyCallback) instead. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or an - * [error](@ref error_handling) occurred. - * - * @deprecated Scheduled for removal in version 4.0. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_char - * - * @since Added in version 3.1. - * - * @ingroup input - */ -GLFWAPI GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow* window, GLFWcharmodsfun cbfun); - -/*! @brief Sets the mouse button callback. - * - * This function sets the mouse button callback of the specified window, which - * is called when a mouse button is pressed or released. - * - * When a window loses input focus, it will generate synthetic mouse button - * release events for all pressed mouse buttons. You can tell these events - * from user-generated events by the fact that the synthetic ones are generated - * after the focus loss event has been processed, i.e. after the - * [window focus callback](@ref glfwSetWindowFocusCallback) has been called. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_mouse_button - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter and return value. - * - * @ingroup input - */ -GLFWAPI GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow* window, GLFWmousebuttonfun cbfun); - -/*! @brief Sets the cursor position callback. - * - * This function sets the cursor position callback of the specified window, - * which is called when the cursor is moved. The callback is provided with the - * position, in screen coordinates, relative to the upper-left corner of the - * content area of the window. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_pos - * - * @since Added in version 3.0. Replaces `glfwSetMousePosCallback`. - * - * @ingroup input - */ -GLFWAPI GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow* window, GLFWcursorposfun cbfun); - -/*! @brief Sets the cursor enter/exit callback. - * - * This function sets the cursor boundary crossing callback of the specified - * window, which is called when the cursor enters or leaves the content area of - * the window. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_enter - * - * @since Added in version 3.0. - * - * @ingroup input - */ -GLFWAPI GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* window, GLFWcursorenterfun cbfun); - -/*! @brief Sets the scroll callback. - * - * This function sets the scroll callback of the specified window, which is - * called when a scrolling device is used, such as a mouse wheel or scrolling - * area of a touchpad. - * - * The scroll callback receives all scrolling input, like that from a mouse - * wheel or a touchpad scrolling area. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new scroll callback, or `NULL` to remove the currently - * set callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref scrolling - * - * @since Added in version 3.0. Replaces `glfwSetMouseWheelCallback`. - * - * @ingroup input - */ -GLFWAPI GLFWscrollfun glfwSetScrollCallback(GLFWwindow* window, GLFWscrollfun cbfun); - -/*! @brief Sets the file drop callback. - * - * This function sets the file drop callback of the specified window, which is - * called when one or more dragged files are dropped on the window. - * - * Because the path array and its strings may have been generated specifically - * for that event, they are not guaranteed to be valid after the callback has - * returned. If you wish to use them after the callback returns, you need to - * make a deep copy. - * - * @param[in] window The window whose callback to set. - * @param[in] cbfun The new file drop callback, or `NULL` to remove the - * currently set callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @remark @wayland File drop is currently unimplemented. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref path_drop - * - * @since Added in version 3.1. - * - * @ingroup input - */ -GLFWAPI GLFWdropfun glfwSetDropCallback(GLFWwindow* window, GLFWdropfun cbfun); - -/*! @brief Returns whether the specified joystick is present. - * - * This function returns whether the specified joystick is present. - * - * There is no need to call this function before other functions that accept - * a joystick ID, as they all check for presence before performing any other - * work. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @return `GLFW_TRUE` if the joystick is present, or `GLFW_FALSE` otherwise. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref joystick - * - * @since Added in version 3.0. Replaces `glfwGetJoystickParam`. - * - * @ingroup input - */ -GLFWAPI int glfwJoystickPresent(int jid); - -/*! @brief Returns the values of all axes of the specified joystick. - * - * This function returns the values of all axes of the specified joystick. - * Each element in the array is a value between -1.0 and 1.0. - * - * If the specified joystick is not present this function will return `NULL` - * but will not generate an error. This can be used instead of first calling - * @ref glfwJoystickPresent. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @param[out] count Where to store the number of axis values in the returned - * array. This is set to zero if the joystick is not present or an error - * occurred. - * @return An array of axis values, or `NULL` if the joystick is not present or - * an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified joystick is - * disconnected or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref joystick_axis - * - * @since Added in version 3.0. Replaces `glfwGetJoystickPos`. - * - * @ingroup input - */ -GLFWAPI const float* glfwGetJoystickAxes(int jid, int* count); - -/*! @brief Returns the state of all buttons of the specified joystick. - * - * This function returns the state of all buttons of the specified joystick. - * Each element in the array is either `GLFW_PRESS` or `GLFW_RELEASE`. - * - * For backward compatibility with earlier versions that did not have @ref - * glfwGetJoystickHats, the button array also includes all hats, each - * represented as four buttons. The hats are in the same order as returned by - * __glfwGetJoystickHats__ and are in the order _up_, _right_, _down_ and - * _left_. To disable these extra buttons, set the @ref - * GLFW_JOYSTICK_HAT_BUTTONS init hint before initialization. - * - * If the specified joystick is not present this function will return `NULL` - * but will not generate an error. This can be used instead of first calling - * @ref glfwJoystickPresent. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @param[out] count Where to store the number of button states in the returned - * array. This is set to zero if the joystick is not present or an error - * occurred. - * @return An array of button states, or `NULL` if the joystick is not present - * or an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified joystick is - * disconnected or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref joystick_button - * - * @since Added in version 2.2. - * @glfw3 Changed to return a dynamic array. - * - * @ingroup input - */ -GLFWAPI const unsigned char* glfwGetJoystickButtons(int jid, int* count); - -/*! @brief Returns the state of all hats of the specified joystick. - * - * This function returns the state of all hats of the specified joystick. - * Each element in the array is one of the following values: - * - * Name | Value - * ---- | ----- - * `GLFW_HAT_CENTERED` | 0 - * `GLFW_HAT_UP` | 1 - * `GLFW_HAT_RIGHT` | 2 - * `GLFW_HAT_DOWN` | 4 - * `GLFW_HAT_LEFT` | 8 - * `GLFW_HAT_RIGHT_UP` | `GLFW_HAT_RIGHT` \| `GLFW_HAT_UP` - * `GLFW_HAT_RIGHT_DOWN` | `GLFW_HAT_RIGHT` \| `GLFW_HAT_DOWN` - * `GLFW_HAT_LEFT_UP` | `GLFW_HAT_LEFT` \| `GLFW_HAT_UP` - * `GLFW_HAT_LEFT_DOWN` | `GLFW_HAT_LEFT` \| `GLFW_HAT_DOWN` - * - * The diagonal directions are bitwise combinations of the primary (up, right, - * down and left) directions and you can test for these individually by ANDing - * it with the corresponding direction. - * - * @code - * if (hats[2] & GLFW_HAT_RIGHT) - * { - * // State of hat 2 could be right-up, right or right-down - * } - * @endcode - * - * If the specified joystick is not present this function will return `NULL` - * but will not generate an error. This can be used instead of first calling - * @ref glfwJoystickPresent. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @param[out] count Where to store the number of hat states in the returned - * array. This is set to zero if the joystick is not present or an error - * occurred. - * @return An array of hat states, or `NULL` if the joystick is not present - * or an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified joystick is - * disconnected, this function is called again for that joystick or the library - * is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref joystick_hat - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI const unsigned char* glfwGetJoystickHats(int jid, int* count); - -/*! @brief Returns the name of the specified joystick. - * - * This function returns the name, encoded as UTF-8, of the specified joystick. - * The returned string is allocated and freed by GLFW. You should not free it - * yourself. - * - * If the specified joystick is not present this function will return `NULL` - * but will not generate an error. This can be used instead of first calling - * @ref glfwJoystickPresent. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @return The UTF-8 encoded name of the joystick, or `NULL` if the joystick - * is not present or an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified joystick is - * disconnected or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref joystick_name - * - * @since Added in version 3.0. - * - * @ingroup input - */ -GLFWAPI const char* glfwGetJoystickName(int jid); - -/*! @brief Returns the SDL comaptible GUID of the specified joystick. - * - * This function returns the SDL compatible GUID, as a UTF-8 encoded - * hexadecimal string, of the specified joystick. The returned string is - * allocated and freed by GLFW. You should not free it yourself. - * - * The GUID is what connects a joystick to a gamepad mapping. A connected - * joystick will always have a GUID even if there is no gamepad mapping - * assigned to it. - * - * If the specified joystick is not present this function will return `NULL` - * but will not generate an error. This can be used instead of first calling - * @ref glfwJoystickPresent. - * - * The GUID uses the format introduced in SDL 2.0.5. This GUID tries to - * uniquely identify the make and model of a joystick but does not identify - * a specific unit, e.g. all wired Xbox 360 controllers will have the same - * GUID on that platform. The GUID for a unit may vary between platforms - * depending on what hardware information the platform specific APIs provide. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @return The UTF-8 encoded GUID of the joystick, or `NULL` if the joystick - * is not present or an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified joystick is - * disconnected or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref gamepad - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI const char* glfwGetJoystickGUID(int jid); - -/*! @brief Sets the user pointer of the specified joystick. - * - * This function sets the user-defined pointer of the specified joystick. The - * current value is retained until the joystick is disconnected. The initial - * value is `NULL`. - * - * This function may be called from the joystick callback, even for a joystick - * that is being disconnected. - * - * @param[in] jid The joystick whose pointer to set. - * @param[in] pointer The new value. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref joystick_userptr - * @sa @ref glfwGetJoystickUserPointer - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI void glfwSetJoystickUserPointer(int jid, void* pointer); - -/*! @brief Returns the user pointer of the specified joystick. - * - * This function returns the current value of the user-defined pointer of the - * specified joystick. The initial value is `NULL`. - * - * This function may be called from the joystick callback, even for a joystick - * that is being disconnected. - * - * @param[in] jid The joystick whose pointer to return. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref joystick_userptr - * @sa @ref glfwSetJoystickUserPointer - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI void* glfwGetJoystickUserPointer(int jid); - -/*! @brief Returns whether the specified joystick has a gamepad mapping. - * - * This function returns whether the specified joystick is both present and has - * a gamepad mapping. - * - * If the specified joystick is present but does not have a gamepad mapping - * this function will return `GLFW_FALSE` but will not generate an error. Call - * @ref glfwJoystickPresent to check if a joystick is present regardless of - * whether it has a mapping. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @return `GLFW_TRUE` if a joystick is both present and has a gamepad mapping, - * or `GLFW_FALSE` otherwise. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref gamepad - * @sa @ref glfwGetGamepadState - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI int glfwJoystickIsGamepad(int jid); - -/*! @brief Sets the joystick configuration callback. - * - * This function sets the joystick configuration callback, or removes the - * currently set callback. This is called when a joystick is connected to or - * disconnected from the system. - * - * For joystick connection and disconnection events to be delivered on all - * platforms, you need to call one of the [event processing](@ref events) - * functions. Joystick disconnection may also be detected and the callback - * called by joystick functions. The function will then return whatever it - * returns if the joystick is not present. - * - * @param[in] cbfun The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref joystick_event - * - * @since Added in version 3.2. - * - * @ingroup input - */ -GLFWAPI GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun cbfun); - -/*! @brief Adds the specified SDL_GameControllerDB gamepad mappings. - * - * This function parses the specified ASCII encoded string and updates the - * internal list with any gamepad mappings it finds. This string may - * contain either a single gamepad mapping or many mappings separated by - * newlines. The parser supports the full format of the `gamecontrollerdb.txt` - * source file including empty lines and comments. - * - * See @ref gamepad_mapping for a description of the format. - * - * If there is already a gamepad mapping for a given GUID in the internal list, - * it will be replaced by the one passed to this function. If the library is - * terminated and re-initialized the internal list will revert to the built-in - * default. - * - * @param[in] string The string containing the gamepad mappings. - * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_VALUE. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref gamepad - * @sa @ref glfwJoystickIsGamepad - * @sa @ref glfwGetGamepadName - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI int glfwUpdateGamepadMappings(const char* string); - -/*! @brief Returns the human-readable gamepad name for the specified joystick. - * - * This function returns the human-readable name of the gamepad from the - * gamepad mapping assigned to the specified joystick. - * - * If the specified joystick is not present or does not have a gamepad mapping - * this function will return `NULL` but will not generate an error. Call - * @ref glfwJoystickPresent to check whether it is present regardless of - * whether it has a mapping. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @return The UTF-8 encoded name of the gamepad, or `NULL` if the - * joystick is not present, does not have a mapping or an - * [error](@ref error_handling) occurred. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified joystick is - * disconnected, the gamepad mappings are updated or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref gamepad - * @sa @ref glfwJoystickIsGamepad - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI const char* glfwGetGamepadName(int jid); - -/*! @brief Retrieves the state of the specified joystick remapped as a gamepad. - * - * This function retrives the state of the specified joystick remapped to - * an Xbox-like gamepad. - * - * If the specified joystick is not present or does not have a gamepad mapping - * this function will return `GLFW_FALSE` but will not generate an error. Call - * @ref glfwJoystickPresent to check whether it is present regardless of - * whether it has a mapping. - * - * The Guide button may not be available for input as it is often hooked by the - * system or the Steam client. - * - * Not all devices have all the buttons or axes provided by @ref - * GLFWgamepadstate. Unavailable buttons and axes will always report - * `GLFW_RELEASE` and 0.0 respectively. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @param[out] state The gamepad input state of the joystick. - * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if no joystick is - * connected, it has no gamepad mapping or an [error](@ref error_handling) - * occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref gamepad - * @sa @ref glfwUpdateGamepadMappings - * @sa @ref glfwJoystickIsGamepad - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI int glfwGetGamepadState(int jid, GLFWgamepadstate* state); - -/*! @brief Sets the clipboard to the specified string. - * - * This function sets the system clipboard to the specified, UTF-8 encoded - * string. - * - * @param[in] window Deprecated. Any valid window or `NULL`. - * @param[in] string A UTF-8 encoded string. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The specified string is copied before this function - * returns. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref clipboard - * @sa @ref glfwGetClipboardString - * - * @since Added in version 3.0. - * - * @ingroup input - */ -GLFWAPI void glfwSetClipboardString(GLFWwindow* window, const char* string); - -/*! @brief Returns the contents of the clipboard as a string. - * - * This function returns the contents of the system clipboard, if it contains - * or is convertible to a UTF-8 encoded string. If the clipboard is empty or - * if its contents cannot be converted, `NULL` is returned and a @ref - * GLFW_FORMAT_UNAVAILABLE error is generated. - * - * @param[in] window Deprecated. Any valid window or `NULL`. - * @return The contents of the clipboard as a UTF-8 encoded string, or `NULL` - * if an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the next call to @ref - * glfwGetClipboardString or @ref glfwSetClipboardString, or until the library - * is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref clipboard - * @sa @ref glfwSetClipboardString - * - * @since Added in version 3.0. - * - * @ingroup input - */ -GLFWAPI const char* glfwGetClipboardString(GLFWwindow* window); - -/*! @brief Returns the value of the GLFW timer. - * - * This function returns the value of the GLFW timer. Unless the timer has - * been set using @ref glfwSetTime, the timer measures time elapsed since GLFW - * was initialized. - * - * The resolution of the timer is system dependent, but is usually on the order - * of a few micro- or nanoseconds. It uses the highest-resolution monotonic - * time source on each supported platform. - * - * @return The current value, in seconds, or zero if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Reading and - * writing of the internal timer offset is not atomic, so it needs to be - * externally synchronized with calls to @ref glfwSetTime. - * - * @sa @ref time - * - * @since Added in version 1.0. - * - * @ingroup input - */ -GLFWAPI double glfwGetTime(void); - -/*! @brief Sets the GLFW timer. - * - * This function sets the value of the GLFW timer. It then continues to count - * up from that value. The value must be a positive finite number less than - * or equal to 18446744073.0, which is approximately 584.5 years. - * - * @param[in] time The new value, in seconds. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_VALUE. - * - * @remark The upper limit of the timer is calculated as - * floor((264 - 1) / 109) and is due to implementations - * storing nanoseconds in 64 bits. The limit may be increased in the future. - * - * @thread_safety This function may be called from any thread. Reading and - * writing of the internal timer offset is not atomic, so it needs to be - * externally synchronized with calls to @ref glfwGetTime. - * - * @sa @ref time - * - * @since Added in version 2.2. - * - * @ingroup input - */ -GLFWAPI void glfwSetTime(double time); - -/*! @brief Returns the current value of the raw timer. - * - * This function returns the current value of the raw timer, measured in - * 1 / frequency seconds. To get the frequency, call @ref - * glfwGetTimerFrequency. - * - * @return The value of the timer, or zero if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref time - * @sa @ref glfwGetTimerFrequency - * - * @since Added in version 3.2. - * - * @ingroup input - */ -GLFWAPI uint64_t glfwGetTimerValue(void); - -/*! @brief Returns the frequency, in Hz, of the raw timer. - * - * This function returns the frequency, in Hz, of the raw timer. - * - * @return The frequency of the timer, in Hz, or zero if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref time - * @sa @ref glfwGetTimerValue - * - * @since Added in version 3.2. - * - * @ingroup input - */ -GLFWAPI uint64_t glfwGetTimerFrequency(void); - -/*! @brief Makes the context of the specified window current for the calling - * thread. - * - * This function makes the OpenGL or OpenGL ES context of the specified window - * current on the calling thread. A context must only be made current on - * a single thread at a time and each thread can have only a single current - * context at a time. - * - * When moving a context between threads, you must make it non-current on the - * old thread before making it current on the new one. - * - * By default, making a context non-current implicitly forces a pipeline flush. - * On machines that support `GL_KHR_context_flush_control`, you can control - * whether a context performs this flush by setting the - * [GLFW_CONTEXT_RELEASE_BEHAVIOR](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint) - * hint. - * - * The specified window must have an OpenGL or OpenGL ES context. Specifying - * a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT - * error. - * - * @param[in] window The window whose context to make current, or `NULL` to - * detach the current context. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref context_current - * @sa @ref glfwGetCurrentContext - * - * @since Added in version 3.0. - * - * @ingroup context - */ -GLFWAPI void glfwMakeContextCurrent(GLFWwindow* window); - -/*! @brief Returns the window whose context is current on the calling thread. - * - * This function returns the window whose OpenGL or OpenGL ES context is - * current on the calling thread. - * - * @return The window whose context is current, or `NULL` if no window's - * context is current. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref context_current - * @sa @ref glfwMakeContextCurrent - * - * @since Added in version 3.0. - * - * @ingroup context - */ -GLFWAPI GLFWwindow* glfwGetCurrentContext(void); - -/*! @brief Swaps the front and back buffers of the specified window. - * - * This function swaps the front and back buffers of the specified window when - * rendering with OpenGL or OpenGL ES. If the swap interval is greater than - * zero, the GPU driver waits the specified number of screen updates before - * swapping the buffers. - * - * The specified window must have an OpenGL or OpenGL ES context. Specifying - * a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT - * error. - * - * This function does not apply to Vulkan. If you are rendering with Vulkan, - * see `vkQueuePresentKHR` instead. - * - * @param[in] window The window whose buffers to swap. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR. - * - * @remark __EGL:__ The context of the specified window must be current on the - * calling thread. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref buffer_swap - * @sa @ref glfwSwapInterval - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwSwapBuffers(GLFWwindow* window); - -/*! @brief Sets the swap interval for the current context. - * - * This function sets the swap interval for the current OpenGL or OpenGL ES - * context, i.e. the number of screen updates to wait from the time @ref - * glfwSwapBuffers was called before swapping the buffers and returning. This - * is sometimes called _vertical synchronization_, _vertical retrace - * synchronization_ or just _vsync_. - * - * A context that supports either of the `WGL_EXT_swap_control_tear` and - * `GLX_EXT_swap_control_tear` extensions also accepts _negative_ swap - * intervals, which allows the driver to swap immediately even if a frame - * arrives a little bit late. You can check for these extensions with @ref - * glfwExtensionSupported. - * - * A context must be current on the calling thread. Calling this function - * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. - * - * This function does not apply to Vulkan. If you are rendering with Vulkan, - * see the present mode of your swapchain instead. - * - * @param[in] interval The minimum number of screen updates to wait for - * until the buffers are swapped by @ref glfwSwapBuffers. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR. - * - * @remark This function is not called during context creation, leaving the - * swap interval set to whatever is the default on that platform. This is done - * because some swap interval extensions used by GLFW do not allow the swap - * interval to be reset to zero once it has been set to a non-zero value. - * - * @remark Some GPU drivers do not honor the requested swap interval, either - * because of a user setting that overrides the application's request or due to - * bugs in the driver. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref buffer_swap - * @sa @ref glfwSwapBuffers - * - * @since Added in version 1.0. - * - * @ingroup context - */ -GLFWAPI void glfwSwapInterval(int interval); - -/*! @brief Returns whether the specified extension is available. - * - * This function returns whether the specified - * [API extension](@ref context_glext) is supported by the current OpenGL or - * OpenGL ES context. It searches both for client API extension and context - * creation API extensions. - * - * A context must be current on the calling thread. Calling this function - * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. - * - * As this functions retrieves and searches one or more extension strings each - * call, it is recommended that you cache its results if it is going to be used - * frequently. The extension strings will not change during the lifetime of - * a context, so there is no danger in doing this. - * - * This function does not apply to Vulkan. If you are using Vulkan, see @ref - * glfwGetRequiredInstanceExtensions, `vkEnumerateInstanceExtensionProperties` - * and `vkEnumerateDeviceExtensionProperties` instead. - * - * @param[in] extension The ASCII encoded name of the extension. - * @return `GLFW_TRUE` if the extension is available, or `GLFW_FALSE` - * otherwise. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_NO_CURRENT_CONTEXT, @ref GLFW_INVALID_VALUE and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref context_glext - * @sa @ref glfwGetProcAddress - * - * @since Added in version 1.0. - * - * @ingroup context - */ -GLFWAPI int glfwExtensionSupported(const char* extension); - -/*! @brief Returns the address of the specified function for the current - * context. - * - * This function returns the address of the specified OpenGL or OpenGL ES - * [core or extension function](@ref context_glext), if it is supported - * by the current context. - * - * A context must be current on the calling thread. Calling this function - * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. - * - * This function does not apply to Vulkan. If you are rendering with Vulkan, - * see @ref glfwGetInstanceProcAddress, `vkGetInstanceProcAddr` and - * `vkGetDeviceProcAddr` instead. - * - * @param[in] procname The ASCII encoded name of the function. - * @return The address of the function, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR. - * - * @remark The address of a given function is not guaranteed to be the same - * between contexts. - * - * @remark This function may return a non-`NULL` address despite the - * associated version or extension not being available. Always check the - * context version or extension string first. - * - * @pointer_lifetime The returned function pointer is valid until the context - * is destroyed or the library is terminated. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref context_glext - * @sa @ref glfwExtensionSupported - * - * @since Added in version 1.0. - * - * @ingroup context - */ -GLFWAPI GLFWglproc glfwGetProcAddress(const char* procname); - -/*! @brief Returns whether the Vulkan loader and an ICD have been found. - * - * This function returns whether the Vulkan loader and any minimally functional - * ICD have been found. - * - * The availability of a Vulkan loader and even an ICD does not by itself - * guarantee that surface creation or even instance creation is possible. - * For example, on Fermi systems Nvidia will install an ICD that provides no - * actual Vulkan support. Call @ref glfwGetRequiredInstanceExtensions to check - * whether the extensions necessary for Vulkan surface creation are available - * and @ref glfwGetPhysicalDevicePresentationSupport to check whether a queue - * family of a physical device supports image presentation. - * - * @return `GLFW_TRUE` if Vulkan is minimally available, or `GLFW_FALSE` - * otherwise. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref vulkan_support - * - * @since Added in version 3.2. - * - * @ingroup vulkan - */ -GLFWAPI int glfwVulkanSupported(void); - -/*! @brief Returns the Vulkan instance extensions required by GLFW. - * - * This function returns an array of names of Vulkan instance extensions required - * by GLFW for creating Vulkan surfaces for GLFW windows. If successful, the - * list will always contains `VK_KHR_surface`, so if you don't require any - * additional extensions you can pass this list directly to the - * `VkInstanceCreateInfo` struct. - * - * If Vulkan is not available on the machine, this function returns `NULL` and - * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported - * to check whether Vulkan is at least minimally available. - * - * If Vulkan is available but no set of extensions allowing window surface - * creation was found, this function returns `NULL`. You may still use Vulkan - * for off-screen rendering and compute work. - * - * @param[out] count Where to store the number of extensions in the returned - * array. This is set to zero if an error occurred. - * @return An array of ASCII encoded extension names, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_API_UNAVAILABLE. - * - * @remark Additional extensions may be required by future versions of GLFW. - * You should check if any extensions you wish to enable are already in the - * returned array, as it is an error to specify an extension more than once in - * the `VkInstanceCreateInfo` struct. - * - * @remark @macos This function currently only supports the - * `VK_MVK_macos_surface` extension from MoltenVK. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is guaranteed to be valid only until the - * library is terminated. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref vulkan_ext - * @sa @ref glfwCreateWindowSurface - * - * @since Added in version 3.2. - * - * @ingroup vulkan - */ -GLFWAPI const char** glfwGetRequiredInstanceExtensions(uint32_t* count); - -#if defined(VK_VERSION_1_0) - -/*! @brief Returns the address of the specified Vulkan instance function. - * - * This function returns the address of the specified Vulkan core or extension - * function for the specified instance. If instance is set to `NULL` it can - * return any function exported from the Vulkan loader, including at least the - * following functions: - * - * - `vkEnumerateInstanceExtensionProperties` - * - `vkEnumerateInstanceLayerProperties` - * - `vkCreateInstance` - * - `vkGetInstanceProcAddr` - * - * If Vulkan is not available on the machine, this function returns `NULL` and - * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported - * to check whether Vulkan is at least minimally available. - * - * This function is equivalent to calling `vkGetInstanceProcAddr` with - * a platform-specific query of the Vulkan loader as a fallback. - * - * @param[in] instance The Vulkan instance to query, or `NULL` to retrieve - * functions related to instance creation. - * @param[in] procname The ASCII encoded name of the function. - * @return The address of the function, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_API_UNAVAILABLE. - * - * @pointer_lifetime The returned function pointer is valid until the library - * is terminated. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref vulkan_proc - * - * @since Added in version 3.2. - * - * @ingroup vulkan - */ -GLFWAPI GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char* procname); - -/*! @brief Returns whether the specified queue family can present images. - * - * This function returns whether the specified queue family of the specified - * physical device supports presentation to the platform GLFW was built for. - * - * If Vulkan or the required window surface creation instance extensions are - * not available on the machine, or if the specified instance was not created - * with the required extensions, this function returns `GLFW_FALSE` and - * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported - * to check whether Vulkan is at least minimally available and @ref - * glfwGetRequiredInstanceExtensions to check what instance extensions are - * required. - * - * @param[in] instance The instance that the physical device belongs to. - * @param[in] device The physical device that the queue family belongs to. - * @param[in] queuefamily The index of the queue family to query. - * @return `GLFW_TRUE` if the queue family supports presentation, or - * `GLFW_FALSE` otherwise. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_API_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR. - * - * @remark @macos This function currently always returns `GLFW_TRUE`, as the - * `VK_MVK_macos_surface` extension does not provide - * a `vkGetPhysicalDevice*PresentationSupport` type function. - * - * @thread_safety This function may be called from any thread. For - * synchronization details of Vulkan objects, see the Vulkan specification. - * - * @sa @ref vulkan_present - * - * @since Added in version 3.2. - * - * @ingroup vulkan - */ -GLFWAPI int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily); - -/*! @brief Creates a Vulkan surface for the specified window. - * - * This function creates a Vulkan surface for the specified window. - * - * If the Vulkan loader or at least one minimally functional ICD were not found, - * this function returns `VK_ERROR_INITIALIZATION_FAILED` and generates a @ref - * GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported to check whether - * Vulkan is at least minimally available. - * - * If the required window surface creation instance extensions are not - * available or if the specified instance was not created with these extensions - * enabled, this function returns `VK_ERROR_EXTENSION_NOT_PRESENT` and - * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref - * glfwGetRequiredInstanceExtensions to check what instance extensions are - * required. - * - * The window surface cannot be shared with another API so the window must - * have been created with the [client api hint](@ref GLFW_CLIENT_API_attrib) - * set to `GLFW_NO_API` otherwise it generates a @ref GLFW_INVALID_VALUE error - * and returns `VK_ERROR_NATIVE_WINDOW_IN_USE_KHR`. - * - * The window surface must be destroyed before the specified Vulkan instance. - * It is the responsibility of the caller to destroy the window surface. GLFW - * does not destroy it for you. Call `vkDestroySurfaceKHR` to destroy the - * surface. - * - * @param[in] instance The Vulkan instance to create the surface in. - * @param[in] window The window to create the surface for. - * @param[in] allocator The allocator to use, or `NULL` to use the default - * allocator. - * @param[out] surface Where to store the handle of the surface. This is set - * to `VK_NULL_HANDLE` if an error occurred. - * @return `VK_SUCCESS` if successful, or a Vulkan error code if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_API_UNAVAILABLE, @ref GLFW_PLATFORM_ERROR and @ref GLFW_INVALID_VALUE - * - * @remark If an error occurs before the creation call is made, GLFW returns - * the Vulkan error code most appropriate for the error. Appropriate use of - * @ref glfwVulkanSupported and @ref glfwGetRequiredInstanceExtensions should - * eliminate almost all occurrences of these errors. - * - * @remark @macos This function currently only supports the - * `VK_MVK_macos_surface` extension from MoltenVK. - * - * @remark @macos This function creates and sets a `CAMetalLayer` instance for - * the window content view, which is required for MoltenVK to function. - * - * @thread_safety This function may be called from any thread. For - * synchronization details of Vulkan objects, see the Vulkan specification. - * - * @sa @ref vulkan_surface - * @sa @ref glfwGetRequiredInstanceExtensions - * - * @since Added in version 3.2. - * - * @ingroup vulkan - */ -GLFWAPI VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow* window, const VkAllocationCallbacks* allocator, VkSurfaceKHR* surface); - -#endif /*VK_VERSION_1_0*/ - - -/************************************************************************* - * Global definition cleanup - *************************************************************************/ - -/* ------------------- BEGIN SYSTEM/COMPILER SPECIFIC -------------------- */ - -#ifdef GLFW_WINGDIAPI_DEFINED - #undef WINGDIAPI - #undef GLFW_WINGDIAPI_DEFINED -#endif - -#ifdef GLFW_CALLBACK_DEFINED - #undef CALLBACK - #undef GLFW_CALLBACK_DEFINED -#endif - -/* Some OpenGL related headers need GLAPIENTRY, but it is unconditionally - * defined by some gl.h variants (OpenBSD) so define it after if needed. - */ -#ifndef GLAPIENTRY - #define GLAPIENTRY APIENTRY -#endif - -/* -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- */ - - -#ifdef __cplusplus -} -#endif - -#endif /* _glfw3_h_ */ - diff --git a/Nuake/dependencies/GLFW/x86/include/GLFW/glfw3native.h b/Nuake/dependencies/GLFW/x86/include/GLFW/glfw3native.h deleted file mode 100644 index 267e75ca..00000000 --- a/Nuake/dependencies/GLFW/x86/include/GLFW/glfw3native.h +++ /dev/null @@ -1,525 +0,0 @@ -/************************************************************************* - * GLFW 3.3 - www.glfw.org - * A library for OpenGL, window and input - *------------------------------------------------------------------------ - * Copyright (c) 2002-2006 Marcus Geelnard - * Copyright (c) 2006-2018 Camilla Löwy - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would - * be appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not - * be misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - * - *************************************************************************/ - -#ifndef _glfw3_native_h_ -#define _glfw3_native_h_ - -#ifdef __cplusplus -extern "C" { -#endif - - -/************************************************************************* - * Doxygen documentation - *************************************************************************/ - -/*! @file glfw3native.h - * @brief The header of the native access functions. - * - * This is the header file of the native access functions. See @ref native for - * more information. - */ -/*! @defgroup native Native access - * @brief Functions related to accessing native handles. - * - * **By using the native access functions you assert that you know what you're - * doing and how to fix problems caused by using them. If you don't, you - * shouldn't be using them.** - * - * Before the inclusion of @ref glfw3native.h, you may define zero or more - * window system API macro and zero or more context creation API macros. - * - * The chosen backends must match those the library was compiled for. Failure - * to do this will cause a link-time error. - * - * The available window API macros are: - * * `GLFW_EXPOSE_NATIVE_WIN32` - * * `GLFW_EXPOSE_NATIVE_COCOA` - * * `GLFW_EXPOSE_NATIVE_X11` - * * `GLFW_EXPOSE_NATIVE_WAYLAND` - * - * The available context API macros are: - * * `GLFW_EXPOSE_NATIVE_WGL` - * * `GLFW_EXPOSE_NATIVE_NSGL` - * * `GLFW_EXPOSE_NATIVE_GLX` - * * `GLFW_EXPOSE_NATIVE_EGL` - * * `GLFW_EXPOSE_NATIVE_OSMESA` - * - * These macros select which of the native access functions that are declared - * and which platform-specific headers to include. It is then up your (by - * definition platform-specific) code to handle which of these should be - * defined. - */ - - -/************************************************************************* - * System headers and types - *************************************************************************/ - -#if defined(GLFW_EXPOSE_NATIVE_WIN32) || defined(GLFW_EXPOSE_NATIVE_WGL) - // This is a workaround for the fact that glfw3.h needs to export APIENTRY (for - // example to allow applications to correctly declare a GL_ARB_debug_output - // callback) but windows.h assumes no one will define APIENTRY before it does - #if defined(GLFW_APIENTRY_DEFINED) - #undef APIENTRY - #undef GLFW_APIENTRY_DEFINED - #endif - #include -#elif defined(GLFW_EXPOSE_NATIVE_COCOA) || defined(GLFW_EXPOSE_NATIVE_NSGL) - #if defined(__OBJC__) - #import - #else - #include - typedef void* id; - #endif -#elif defined(GLFW_EXPOSE_NATIVE_X11) || defined(GLFW_EXPOSE_NATIVE_GLX) - #include - #include -#elif defined(GLFW_EXPOSE_NATIVE_WAYLAND) - #include -#endif - -#if defined(GLFW_EXPOSE_NATIVE_WGL) - /* WGL is declared by windows.h */ -#endif -#if defined(GLFW_EXPOSE_NATIVE_NSGL) - /* NSGL is declared by Cocoa.h */ -#endif -#if defined(GLFW_EXPOSE_NATIVE_GLX) - #include -#endif -#if defined(GLFW_EXPOSE_NATIVE_EGL) - #include -#endif -#if defined(GLFW_EXPOSE_NATIVE_OSMESA) - #include -#endif - - -/************************************************************************* - * Functions - *************************************************************************/ - -#if defined(GLFW_EXPOSE_NATIVE_WIN32) -/*! @brief Returns the adapter device name of the specified monitor. - * - * @return The UTF-8 encoded adapter device name (for example `\\.\DISPLAY1`) - * of the specified monitor, or `NULL` if an [error](@ref error_handling) - * occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.1. - * - * @ingroup native - */ -GLFWAPI const char* glfwGetWin32Adapter(GLFWmonitor* monitor); - -/*! @brief Returns the display device name of the specified monitor. - * - * @return The UTF-8 encoded display device name (for example - * `\\.\DISPLAY1\Monitor0`) of the specified monitor, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.1. - * - * @ingroup native - */ -GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor); - -/*! @brief Returns the `HWND` of the specified window. - * - * @return The `HWND` of the specified window, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI HWND glfwGetWin32Window(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_WGL) -/*! @brief Returns the `HGLRC` of the specified window. - * - * @return The `HGLRC` of the specified window, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI HGLRC glfwGetWGLContext(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_COCOA) -/*! @brief Returns the `CGDirectDisplayID` of the specified monitor. - * - * @return The `CGDirectDisplayID` of the specified monitor, or - * `kCGNullDirectDisplay` if an [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.1. - * - * @ingroup native - */ -GLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor); - -/*! @brief Returns the `NSWindow` of the specified window. - * - * @return The `NSWindow` of the specified window, or `nil` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI id glfwGetCocoaWindow(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_NSGL) -/*! @brief Returns the `NSOpenGLContext` of the specified window. - * - * @return The `NSOpenGLContext` of the specified window, or `nil` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI id glfwGetNSGLContext(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_X11) -/*! @brief Returns the `Display` used by GLFW. - * - * @return The `Display` used by GLFW, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI Display* glfwGetX11Display(void); - -/*! @brief Returns the `RRCrtc` of the specified monitor. - * - * @return The `RRCrtc` of the specified monitor, or `None` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.1. - * - * @ingroup native - */ -GLFWAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor); - -/*! @brief Returns the `RROutput` of the specified monitor. - * - * @return The `RROutput` of the specified monitor, or `None` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.1. - * - * @ingroup native - */ -GLFWAPI RROutput glfwGetX11Monitor(GLFWmonitor* monitor); - -/*! @brief Returns the `Window` of the specified window. - * - * @return The `Window` of the specified window, or `None` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI Window glfwGetX11Window(GLFWwindow* window); - -/*! @brief Sets the current primary selection to the specified string. - * - * @param[in] string A UTF-8 encoded string. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The specified string is copied before this function - * returns. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref clipboard - * @sa glfwGetX11SelectionString - * @sa glfwSetClipboardString - * - * @since Added in version 3.3. - * - * @ingroup native - */ -GLFWAPI void glfwSetX11SelectionString(const char* string); - -/*! @brief Returns the contents of the current primary selection as a string. - * - * If the selection is empty or if its contents cannot be converted, `NULL` - * is returned and a @ref GLFW_FORMAT_UNAVAILABLE error is generated. - * - * @return The contents of the selection as a UTF-8 encoded string, or `NULL` - * if an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the next call to @ref - * glfwGetX11SelectionString or @ref glfwSetX11SelectionString, or until the - * library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref clipboard - * @sa glfwSetX11SelectionString - * @sa glfwGetClipboardString - * - * @since Added in version 3.3. - * - * @ingroup native - */ -GLFWAPI const char* glfwGetX11SelectionString(void); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_GLX) -/*! @brief Returns the `GLXContext` of the specified window. - * - * @return The `GLXContext` of the specified window, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* window); - -/*! @brief Returns the `GLXWindow` of the specified window. - * - * @return The `GLXWindow` of the specified window, or `None` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.2. - * - * @ingroup native - */ -GLFWAPI GLXWindow glfwGetGLXWindow(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_WAYLAND) -/*! @brief Returns the `struct wl_display*` used by GLFW. - * - * @return The `struct wl_display*` used by GLFW, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.2. - * - * @ingroup native - */ -GLFWAPI struct wl_display* glfwGetWaylandDisplay(void); - -/*! @brief Returns the `struct wl_output*` of the specified monitor. - * - * @return The `struct wl_output*` of the specified monitor, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.2. - * - * @ingroup native - */ -GLFWAPI struct wl_output* glfwGetWaylandMonitor(GLFWmonitor* monitor); - -/*! @brief Returns the main `struct wl_surface*` of the specified window. - * - * @return The main `struct wl_surface*` of the specified window, or `NULL` if - * an [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.2. - * - * @ingroup native - */ -GLFWAPI struct wl_surface* glfwGetWaylandWindow(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_EGL) -/*! @brief Returns the `EGLDisplay` used by GLFW. - * - * @return The `EGLDisplay` used by GLFW, or `EGL_NO_DISPLAY` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI EGLDisplay glfwGetEGLDisplay(void); - -/*! @brief Returns the `EGLContext` of the specified window. - * - * @return The `EGLContext` of the specified window, or `EGL_NO_CONTEXT` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI EGLContext glfwGetEGLContext(GLFWwindow* window); - -/*! @brief Returns the `EGLSurface` of the specified window. - * - * @return The `EGLSurface` of the specified window, or `EGL_NO_SURFACE` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI EGLSurface glfwGetEGLSurface(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_OSMESA) -/*! @brief Retrieves the color buffer associated with the specified window. - * - * @param[in] window The window whose color buffer to retrieve. - * @param[out] width Where to store the width of the color buffer, or `NULL`. - * @param[out] height Where to store the height of the color buffer, or `NULL`. - * @param[out] format Where to store the OSMesa pixel format of the color - * buffer, or `NULL`. - * @param[out] buffer Where to store the address of the color buffer, or - * `NULL`. - * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.3. - * - * @ingroup native - */ -GLFWAPI int glfwGetOSMesaColorBuffer(GLFWwindow* window, int* width, int* height, int* format, void** buffer); - -/*! @brief Retrieves the depth buffer associated with the specified window. - * - * @param[in] window The window whose depth buffer to retrieve. - * @param[out] width Where to store the width of the depth buffer, or `NULL`. - * @param[out] height Where to store the height of the depth buffer, or `NULL`. - * @param[out] bytesPerValue Where to store the number of bytes per depth - * buffer element, or `NULL`. - * @param[out] buffer Where to store the address of the depth buffer, or - * `NULL`. - * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.3. - * - * @ingroup native - */ -GLFWAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* window, int* width, int* height, int* bytesPerValue, void** buffer); - -/*! @brief Returns the `OSMesaContext` of the specified window. - * - * @return The `OSMesaContext` of the specified window, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.3. - * - * @ingroup native - */ -GLFWAPI OSMesaContext glfwGetOSMesaContext(GLFWwindow* window); -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* _glfw3_native_h_ */ - diff --git a/Nuake/dependencies/GLFW/x86/include/GLFW/x64/glfw3.h b/Nuake/dependencies/GLFW/x86/include/GLFW/x64/glfw3.h deleted file mode 100644 index 66dff649..00000000 --- a/Nuake/dependencies/GLFW/x86/include/GLFW/x64/glfw3.h +++ /dev/null @@ -1,5874 +0,0 @@ -/************************************************************************* - * GLFW 3.3 - www.glfw.org - * A library for OpenGL, window and input - *------------------------------------------------------------------------ - * Copyright (c) 2002-2006 Marcus Geelnard - * Copyright (c) 2006-2019 Camilla Löwy - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would - * be appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not - * be misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - * - *************************************************************************/ - -#ifndef _glfw3_h_ -#define _glfw3_h_ - -#ifdef __cplusplus -extern "C" { -#endif - - -/************************************************************************* - * Doxygen documentation - *************************************************************************/ - -/*! @file glfw3.h - * @brief The header of the GLFW 3 API. - * - * This is the header file of the GLFW 3 API. It defines all its types and - * declares all its functions. - * - * For more information about how to use this file, see @ref build_include. - */ -/*! @defgroup context Context reference - * @brief Functions and types related to OpenGL and OpenGL ES contexts. - * - * This is the reference documentation for OpenGL and OpenGL ES context related - * functions. For more task-oriented information, see the @ref context_guide. - */ -/*! @defgroup vulkan Vulkan reference - * @brief Functions and types related to Vulkan. - * - * This is the reference documentation for Vulkan related functions and types. - * For more task-oriented information, see the @ref vulkan_guide. - */ -/*! @defgroup init Initialization, version and error reference - * @brief Functions and types related to initialization and error handling. - * - * This is the reference documentation for initialization and termination of - * the library, version management and error handling. For more task-oriented - * information, see the @ref intro_guide. - */ -/*! @defgroup input Input reference - * @brief Functions and types related to input handling. - * - * This is the reference documentation for input related functions and types. - * For more task-oriented information, see the @ref input_guide. - */ -/*! @defgroup monitor Monitor reference - * @brief Functions and types related to monitors. - * - * This is the reference documentation for monitor related functions and types. - * For more task-oriented information, see the @ref monitor_guide. - */ -/*! @defgroup window Window reference - * @brief Functions and types related to windows. - * - * This is the reference documentation for window related functions and types, - * including creation, deletion and event polling. For more task-oriented - * information, see the @ref window_guide. - */ - - -/************************************************************************* - * Compiler- and platform-specific preprocessor work - *************************************************************************/ - -/* If we are we on Windows, we want a single define for it. - */ -#if !defined(_WIN32) && (defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__)) - #define _WIN32 -#endif /* _WIN32 */ - -/* Include because most Windows GLU headers need wchar_t and - * the macOS OpenGL header blocks the definition of ptrdiff_t by glext.h. - * Include it unconditionally to avoid surprising side-effects. - */ -#include - -/* Include because it is needed by Vulkan and related functions. - * Include it unconditionally to avoid surprising side-effects. - */ -#include - -#if defined(GLFW_INCLUDE_VULKAN) - #include -#endif /* Vulkan header */ - -/* The Vulkan header may have indirectly included windows.h (because of - * VK_USE_PLATFORM_WIN32_KHR) so we offer our replacement symbols after it. - */ - -/* It is customary to use APIENTRY for OpenGL function pointer declarations on - * all platforms. Additionally, the Windows OpenGL header needs APIENTRY. - */ -#if !defined(APIENTRY) - #if defined(_WIN32) - #define APIENTRY __stdcall - #else - #define APIENTRY - #endif - #define GLFW_APIENTRY_DEFINED -#endif /* APIENTRY */ - -/* Some Windows OpenGL headers need this. - */ -#if !defined(WINGDIAPI) && defined(_WIN32) - #define WINGDIAPI __declspec(dllimport) - #define GLFW_WINGDIAPI_DEFINED -#endif /* WINGDIAPI */ - -/* Some Windows GLU headers need this. - */ -#if !defined(CALLBACK) && defined(_WIN32) - #define CALLBACK __stdcall - #define GLFW_CALLBACK_DEFINED -#endif /* CALLBACK */ - -/* Include the chosen OpenGL or OpenGL ES headers. - */ -#if defined(GLFW_INCLUDE_ES1) - - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif - -#elif defined(GLFW_INCLUDE_ES2) - - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif - -#elif defined(GLFW_INCLUDE_ES3) - - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif - -#elif defined(GLFW_INCLUDE_ES31) - - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif - -#elif defined(GLFW_INCLUDE_ES32) - - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif - -#elif defined(GLFW_INCLUDE_GLCOREARB) - - #if defined(__APPLE__) - - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif /*GLFW_INCLUDE_GLEXT*/ - - #else /*__APPLE__*/ - - #include - - #endif /*__APPLE__*/ - -#elif !defined(GLFW_INCLUDE_NONE) - - #if defined(__APPLE__) - - #if !defined(GLFW_INCLUDE_GLEXT) - #define GL_GLEXT_LEGACY - #endif - #include - #if defined(GLFW_INCLUDE_GLU) - #include - #endif - - #else /*__APPLE__*/ - - #include - #if defined(GLFW_INCLUDE_GLEXT) - #include - #endif - #if defined(GLFW_INCLUDE_GLU) - #include - #endif - - #endif /*__APPLE__*/ - -#endif /* OpenGL and OpenGL ES headers */ - -#if defined(GLFW_DLL) && defined(_GLFW_BUILD_DLL) - /* GLFW_DLL must be defined by applications that are linking against the DLL - * version of the GLFW library. _GLFW_BUILD_DLL is defined by the GLFW - * configuration header when compiling the DLL version of the library. - */ - #error "You must not have both GLFW_DLL and _GLFW_BUILD_DLL defined" -#endif - -/* GLFWAPI is used to declare public API functions for export - * from the DLL / shared library / dynamic library. - */ -#if defined(_WIN32) && defined(_GLFW_BUILD_DLL) - /* We are building GLFW as a Win32 DLL */ - #define GLFWAPI __declspec(dllexport) -#elif defined(_WIN32) && defined(GLFW_DLL) - /* We are calling GLFW as a Win32 DLL */ - #define GLFWAPI __declspec(dllimport) -#elif defined(__GNUC__) && defined(_GLFW_BUILD_DLL) - /* We are building GLFW as a shared / dynamic library */ - #define GLFWAPI __attribute__((visibility("default"))) -#else - /* We are building or calling GLFW as a static library */ - #define GLFWAPI -#endif - - -/************************************************************************* - * GLFW API tokens - *************************************************************************/ - -/*! @name GLFW version macros - * @{ */ -/*! @brief The major version number of the GLFW library. - * - * This is incremented when the API is changed in non-compatible ways. - * @ingroup init - */ -#define GLFW_VERSION_MAJOR 3 -/*! @brief The minor version number of the GLFW library. - * - * This is incremented when features are added to the API but it remains - * backward-compatible. - * @ingroup init - */ -#define GLFW_VERSION_MINOR 3 -/*! @brief The revision number of the GLFW library. - * - * This is incremented when a bug fix release is made that does not contain any - * API changes. - * @ingroup init - */ -#define GLFW_VERSION_REVISION 2 -/*! @} */ - -/*! @brief One. - * - * This is only semantic sugar for the number 1. You can instead use `1` or - * `true` or `_True` or `GL_TRUE` or `VK_TRUE` or anything else that is equal - * to one. - * - * @ingroup init - */ -#define GLFW_TRUE 1 -/*! @brief Zero. - * - * This is only semantic sugar for the number 0. You can instead use `0` or - * `false` or `_False` or `GL_FALSE` or `VK_FALSE` or anything else that is - * equal to zero. - * - * @ingroup init - */ -#define GLFW_FALSE 0 - -/*! @name Key and button actions - * @{ */ -/*! @brief The key or mouse button was released. - * - * The key or mouse button was released. - * - * @ingroup input - */ -#define GLFW_RELEASE 0 -/*! @brief The key or mouse button was pressed. - * - * The key or mouse button was pressed. - * - * @ingroup input - */ -#define GLFW_PRESS 1 -/*! @brief The key was held down until it repeated. - * - * The key was held down until it repeated. - * - * @ingroup input - */ -#define GLFW_REPEAT 2 -/*! @} */ - -/*! @defgroup hat_state Joystick hat states - * @brief Joystick hat states. - * - * See [joystick hat input](@ref joystick_hat) for how these are used. - * - * @ingroup input - * @{ */ -#define GLFW_HAT_CENTERED 0 -#define GLFW_HAT_UP 1 -#define GLFW_HAT_RIGHT 2 -#define GLFW_HAT_DOWN 4 -#define GLFW_HAT_LEFT 8 -#define GLFW_HAT_RIGHT_UP (GLFW_HAT_RIGHT | GLFW_HAT_UP) -#define GLFW_HAT_RIGHT_DOWN (GLFW_HAT_RIGHT | GLFW_HAT_DOWN) -#define GLFW_HAT_LEFT_UP (GLFW_HAT_LEFT | GLFW_HAT_UP) -#define GLFW_HAT_LEFT_DOWN (GLFW_HAT_LEFT | GLFW_HAT_DOWN) -/*! @} */ - -/*! @defgroup keys Keyboard keys - * @brief Keyboard key IDs. - * - * See [key input](@ref input_key) for how these are used. - * - * These key codes are inspired by the _USB HID Usage Tables v1.12_ (p. 53-60), - * but re-arranged to map to 7-bit ASCII for printable keys (function keys are - * put in the 256+ range). - * - * The naming of the key codes follow these rules: - * - The US keyboard layout is used - * - Names of printable alpha-numeric characters are used (e.g. "A", "R", - * "3", etc.) - * - For non-alphanumeric characters, Unicode:ish names are used (e.g. - * "COMMA", "LEFT_SQUARE_BRACKET", etc.). Note that some names do not - * correspond to the Unicode standard (usually for brevity) - * - Keys that lack a clear US mapping are named "WORLD_x" - * - For non-printable keys, custom names are used (e.g. "F4", - * "BACKSPACE", etc.) - * - * @ingroup input - * @{ - */ - -/* The unknown key */ -#define GLFW_KEY_UNKNOWN -1 - -/* Printable keys */ -#define GLFW_KEY_SPACE 32 -#define GLFW_KEY_APOSTROPHE 39 /* ' */ -#define GLFW_KEY_COMMA 44 /* , */ -#define GLFW_KEY_MINUS 45 /* - */ -#define GLFW_KEY_PERIOD 46 /* . */ -#define GLFW_KEY_SLASH 47 /* / */ -#define GLFW_KEY_0 48 -#define GLFW_KEY_1 49 -#define GLFW_KEY_2 50 -#define GLFW_KEY_3 51 -#define GLFW_KEY_4 52 -#define GLFW_KEY_5 53 -#define GLFW_KEY_6 54 -#define GLFW_KEY_7 55 -#define GLFW_KEY_8 56 -#define GLFW_KEY_9 57 -#define GLFW_KEY_SEMICOLON 59 /* ; */ -#define GLFW_KEY_EQUAL 61 /* = */ -#define GLFW_KEY_A 65 -#define GLFW_KEY_B 66 -#define GLFW_KEY_C 67 -#define GLFW_KEY_D 68 -#define GLFW_KEY_E 69 -#define GLFW_KEY_F 70 -#define GLFW_KEY_G 71 -#define GLFW_KEY_H 72 -#define GLFW_KEY_I 73 -#define GLFW_KEY_J 74 -#define GLFW_KEY_K 75 -#define GLFW_KEY_L 76 -#define GLFW_KEY_M 77 -#define GLFW_KEY_N 78 -#define GLFW_KEY_O 79 -#define GLFW_KEY_P 80 -#define GLFW_KEY_Q 81 -#define GLFW_KEY_R 82 -#define GLFW_KEY_S 83 -#define GLFW_KEY_T 84 -#define GLFW_KEY_U 85 -#define GLFW_KEY_V 86 -#define GLFW_KEY_W 87 -#define GLFW_KEY_X 88 -#define GLFW_KEY_Y 89 -#define GLFW_KEY_Z 90 -#define GLFW_KEY_LEFT_BRACKET 91 /* [ */ -#define GLFW_KEY_BACKSLASH 92 /* \ */ -#define GLFW_KEY_RIGHT_BRACKET 93 /* ] */ -#define GLFW_KEY_GRAVE_ACCENT 96 /* ` */ -#define GLFW_KEY_WORLD_1 161 /* non-US #1 */ -#define GLFW_KEY_WORLD_2 162 /* non-US #2 */ - -/* Function keys */ -#define GLFW_KEY_ESCAPE 256 -#define GLFW_KEY_ENTER 257 -#define GLFW_KEY_TAB 258 -#define GLFW_KEY_BACKSPACE 259 -#define GLFW_KEY_INSERT 260 -#define GLFW_KEY_DELETE 261 -#define GLFW_KEY_RIGHT 262 -#define GLFW_KEY_LEFT 263 -#define GLFW_KEY_DOWN 264 -#define GLFW_KEY_UP 265 -#define GLFW_KEY_PAGE_UP 266 -#define GLFW_KEY_PAGE_DOWN 267 -#define GLFW_KEY_HOME 268 -#define GLFW_KEY_END 269 -#define GLFW_KEY_CAPS_LOCK 280 -#define GLFW_KEY_SCROLL_LOCK 281 -#define GLFW_KEY_NUM_LOCK 282 -#define GLFW_KEY_PRINT_SCREEN 283 -#define GLFW_KEY_PAUSE 284 -#define GLFW_KEY_F1 290 -#define GLFW_KEY_F2 291 -#define GLFW_KEY_F3 292 -#define GLFW_KEY_F4 293 -#define GLFW_KEY_F5 294 -#define GLFW_KEY_F6 295 -#define GLFW_KEY_F7 296 -#define GLFW_KEY_F8 297 -#define GLFW_KEY_F9 298 -#define GLFW_KEY_F10 299 -#define GLFW_KEY_F11 300 -#define GLFW_KEY_F12 301 -#define GLFW_KEY_F13 302 -#define GLFW_KEY_F14 303 -#define GLFW_KEY_F15 304 -#define GLFW_KEY_F16 305 -#define GLFW_KEY_F17 306 -#define GLFW_KEY_F18 307 -#define GLFW_KEY_F19 308 -#define GLFW_KEY_F20 309 -#define GLFW_KEY_F21 310 -#define GLFW_KEY_F22 311 -#define GLFW_KEY_F23 312 -#define GLFW_KEY_F24 313 -#define GLFW_KEY_F25 314 -#define GLFW_KEY_KP_0 320 -#define GLFW_KEY_KP_1 321 -#define GLFW_KEY_KP_2 322 -#define GLFW_KEY_KP_3 323 -#define GLFW_KEY_KP_4 324 -#define GLFW_KEY_KP_5 325 -#define GLFW_KEY_KP_6 326 -#define GLFW_KEY_KP_7 327 -#define GLFW_KEY_KP_8 328 -#define GLFW_KEY_KP_9 329 -#define GLFW_KEY_KP_DECIMAL 330 -#define GLFW_KEY_KP_DIVIDE 331 -#define GLFW_KEY_KP_MULTIPLY 332 -#define GLFW_KEY_KP_SUBTRACT 333 -#define GLFW_KEY_KP_ADD 334 -#define GLFW_KEY_KP_ENTER 335 -#define GLFW_KEY_KP_EQUAL 336 -#define GLFW_KEY_LEFT_SHIFT 340 -#define GLFW_KEY_LEFT_CONTROL 341 -#define GLFW_KEY_LEFT_ALT 342 -#define GLFW_KEY_LEFT_SUPER 343 -#define GLFW_KEY_RIGHT_SHIFT 344 -#define GLFW_KEY_RIGHT_CONTROL 345 -#define GLFW_KEY_RIGHT_ALT 346 -#define GLFW_KEY_RIGHT_SUPER 347 -#define GLFW_KEY_MENU 348 - -#define GLFW_KEY_LAST GLFW_KEY_MENU - -/*! @} */ - -/*! @defgroup mods Modifier key flags - * @brief Modifier key flags. - * - * See [key input](@ref input_key) for how these are used. - * - * @ingroup input - * @{ */ - -/*! @brief If this bit is set one or more Shift keys were held down. - * - * If this bit is set one or more Shift keys were held down. - */ -#define GLFW_MOD_SHIFT 0x0001 -/*! @brief If this bit is set one or more Control keys were held down. - * - * If this bit is set one or more Control keys were held down. - */ -#define GLFW_MOD_CONTROL 0x0002 -/*! @brief If this bit is set one or more Alt keys were held down. - * - * If this bit is set one or more Alt keys were held down. - */ -#define GLFW_MOD_ALT 0x0004 -/*! @brief If this bit is set one or more Super keys were held down. - * - * If this bit is set one or more Super keys were held down. - */ -#define GLFW_MOD_SUPER 0x0008 -/*! @brief If this bit is set the Caps Lock key is enabled. - * - * If this bit is set the Caps Lock key is enabled and the @ref - * GLFW_LOCK_KEY_MODS input mode is set. - */ -#define GLFW_MOD_CAPS_LOCK 0x0010 -/*! @brief If this bit is set the Num Lock key is enabled. - * - * If this bit is set the Num Lock key is enabled and the @ref - * GLFW_LOCK_KEY_MODS input mode is set. - */ -#define GLFW_MOD_NUM_LOCK 0x0020 - -/*! @} */ - -/*! @defgroup buttons Mouse buttons - * @brief Mouse button IDs. - * - * See [mouse button input](@ref input_mouse_button) for how these are used. - * - * @ingroup input - * @{ */ -#define GLFW_MOUSE_BUTTON_1 0 -#define GLFW_MOUSE_BUTTON_2 1 -#define GLFW_MOUSE_BUTTON_3 2 -#define GLFW_MOUSE_BUTTON_4 3 -#define GLFW_MOUSE_BUTTON_5 4 -#define GLFW_MOUSE_BUTTON_6 5 -#define GLFW_MOUSE_BUTTON_7 6 -#define GLFW_MOUSE_BUTTON_8 7 -#define GLFW_MOUSE_BUTTON_LAST GLFW_MOUSE_BUTTON_8 -#define GLFW_MOUSE_BUTTON_LEFT GLFW_MOUSE_BUTTON_1 -#define GLFW_MOUSE_BUTTON_RIGHT GLFW_MOUSE_BUTTON_2 -#define GLFW_MOUSE_BUTTON_MIDDLE GLFW_MOUSE_BUTTON_3 -/*! @} */ - -/*! @defgroup joysticks Joysticks - * @brief Joystick IDs. - * - * See [joystick input](@ref joystick) for how these are used. - * - * @ingroup input - * @{ */ -#define GLFW_JOYSTICK_1 0 -#define GLFW_JOYSTICK_2 1 -#define GLFW_JOYSTICK_3 2 -#define GLFW_JOYSTICK_4 3 -#define GLFW_JOYSTICK_5 4 -#define GLFW_JOYSTICK_6 5 -#define GLFW_JOYSTICK_7 6 -#define GLFW_JOYSTICK_8 7 -#define GLFW_JOYSTICK_9 8 -#define GLFW_JOYSTICK_10 9 -#define GLFW_JOYSTICK_11 10 -#define GLFW_JOYSTICK_12 11 -#define GLFW_JOYSTICK_13 12 -#define GLFW_JOYSTICK_14 13 -#define GLFW_JOYSTICK_15 14 -#define GLFW_JOYSTICK_16 15 -#define GLFW_JOYSTICK_LAST GLFW_JOYSTICK_16 -/*! @} */ - -/*! @defgroup gamepad_buttons Gamepad buttons - * @brief Gamepad buttons. - * - * See @ref gamepad for how these are used. - * - * @ingroup input - * @{ */ -#define GLFW_GAMEPAD_BUTTON_A 0 -#define GLFW_GAMEPAD_BUTTON_B 1 -#define GLFW_GAMEPAD_BUTTON_X 2 -#define GLFW_GAMEPAD_BUTTON_Y 3 -#define GLFW_GAMEPAD_BUTTON_LEFT_BUMPER 4 -#define GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER 5 -#define GLFW_GAMEPAD_BUTTON_BACK 6 -#define GLFW_GAMEPAD_BUTTON_START 7 -#define GLFW_GAMEPAD_BUTTON_GUIDE 8 -#define GLFW_GAMEPAD_BUTTON_LEFT_THUMB 9 -#define GLFW_GAMEPAD_BUTTON_RIGHT_THUMB 10 -#define GLFW_GAMEPAD_BUTTON_DPAD_UP 11 -#define GLFW_GAMEPAD_BUTTON_DPAD_RIGHT 12 -#define GLFW_GAMEPAD_BUTTON_DPAD_DOWN 13 -#define GLFW_GAMEPAD_BUTTON_DPAD_LEFT 14 -#define GLFW_GAMEPAD_BUTTON_LAST GLFW_GAMEPAD_BUTTON_DPAD_LEFT - -#define GLFW_GAMEPAD_BUTTON_CROSS GLFW_GAMEPAD_BUTTON_A -#define GLFW_GAMEPAD_BUTTON_CIRCLE GLFW_GAMEPAD_BUTTON_B -#define GLFW_GAMEPAD_BUTTON_SQUARE GLFW_GAMEPAD_BUTTON_X -#define GLFW_GAMEPAD_BUTTON_TRIANGLE GLFW_GAMEPAD_BUTTON_Y -/*! @} */ - -/*! @defgroup gamepad_axes Gamepad axes - * @brief Gamepad axes. - * - * See @ref gamepad for how these are used. - * - * @ingroup input - * @{ */ -#define GLFW_GAMEPAD_AXIS_LEFT_X 0 -#define GLFW_GAMEPAD_AXIS_LEFT_Y 1 -#define GLFW_GAMEPAD_AXIS_RIGHT_X 2 -#define GLFW_GAMEPAD_AXIS_RIGHT_Y 3 -#define GLFW_GAMEPAD_AXIS_LEFT_TRIGGER 4 -#define GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER 5 -#define GLFW_GAMEPAD_AXIS_LAST GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER -/*! @} */ - -/*! @defgroup errors Error codes - * @brief Error codes. - * - * See [error handling](@ref error_handling) for how these are used. - * - * @ingroup init - * @{ */ -/*! @brief No error has occurred. - * - * No error has occurred. - * - * @analysis Yay. - */ -#define GLFW_NO_ERROR 0 -/*! @brief GLFW has not been initialized. - * - * This occurs if a GLFW function was called that must not be called unless the - * library is [initialized](@ref intro_init). - * - * @analysis Application programmer error. Initialize GLFW before calling any - * function that requires initialization. - */ -#define GLFW_NOT_INITIALIZED 0x00010001 -/*! @brief No context is current for this thread. - * - * This occurs if a GLFW function was called that needs and operates on the - * current OpenGL or OpenGL ES context but no context is current on the calling - * thread. One such function is @ref glfwSwapInterval. - * - * @analysis Application programmer error. Ensure a context is current before - * calling functions that require a current context. - */ -#define GLFW_NO_CURRENT_CONTEXT 0x00010002 -/*! @brief One of the arguments to the function was an invalid enum value. - * - * One of the arguments to the function was an invalid enum value, for example - * requesting @ref GLFW_RED_BITS with @ref glfwGetWindowAttrib. - * - * @analysis Application programmer error. Fix the offending call. - */ -#define GLFW_INVALID_ENUM 0x00010003 -/*! @brief One of the arguments to the function was an invalid value. - * - * One of the arguments to the function was an invalid value, for example - * requesting a non-existent OpenGL or OpenGL ES version like 2.7. - * - * Requesting a valid but unavailable OpenGL or OpenGL ES version will instead - * result in a @ref GLFW_VERSION_UNAVAILABLE error. - * - * @analysis Application programmer error. Fix the offending call. - */ -#define GLFW_INVALID_VALUE 0x00010004 -/*! @brief A memory allocation failed. - * - * A memory allocation failed. - * - * @analysis A bug in GLFW or the underlying operating system. Report the bug - * to our [issue tracker](https://github.com/glfw/glfw/issues). - */ -#define GLFW_OUT_OF_MEMORY 0x00010005 -/*! @brief GLFW could not find support for the requested API on the system. - * - * GLFW could not find support for the requested API on the system. - * - * @analysis The installed graphics driver does not support the requested - * API, or does not support it via the chosen context creation backend. - * Below are a few examples. - * - * @par - * Some pre-installed Windows graphics drivers do not support OpenGL. AMD only - * supports OpenGL ES via EGL, while Nvidia and Intel only support it via - * a WGL or GLX extension. macOS does not provide OpenGL ES at all. The Mesa - * EGL, OpenGL and OpenGL ES libraries do not interface with the Nvidia binary - * driver. Older graphics drivers do not support Vulkan. - */ -#define GLFW_API_UNAVAILABLE 0x00010006 -/*! @brief The requested OpenGL or OpenGL ES version is not available. - * - * The requested OpenGL or OpenGL ES version (including any requested context - * or framebuffer hints) is not available on this machine. - * - * @analysis The machine does not support your requirements. If your - * application is sufficiently flexible, downgrade your requirements and try - * again. Otherwise, inform the user that their machine does not match your - * requirements. - * - * @par - * Future invalid OpenGL and OpenGL ES versions, for example OpenGL 4.8 if 5.0 - * comes out before the 4.x series gets that far, also fail with this error and - * not @ref GLFW_INVALID_VALUE, because GLFW cannot know what future versions - * will exist. - */ -#define GLFW_VERSION_UNAVAILABLE 0x00010007 -/*! @brief A platform-specific error occurred that does not match any of the - * more specific categories. - * - * A platform-specific error occurred that does not match any of the more - * specific categories. - * - * @analysis A bug or configuration error in GLFW, the underlying operating - * system or its drivers, or a lack of required resources. Report the issue to - * our [issue tracker](https://github.com/glfw/glfw/issues). - */ -#define GLFW_PLATFORM_ERROR 0x00010008 -/*! @brief The requested format is not supported or available. - * - * If emitted during window creation, the requested pixel format is not - * supported. - * - * If emitted when querying the clipboard, the contents of the clipboard could - * not be converted to the requested format. - * - * @analysis If emitted during window creation, one or more - * [hard constraints](@ref window_hints_hard) did not match any of the - * available pixel formats. If your application is sufficiently flexible, - * downgrade your requirements and try again. Otherwise, inform the user that - * their machine does not match your requirements. - * - * @par - * If emitted when querying the clipboard, ignore the error or report it to - * the user, as appropriate. - */ -#define GLFW_FORMAT_UNAVAILABLE 0x00010009 -/*! @brief The specified window does not have an OpenGL or OpenGL ES context. - * - * A window that does not have an OpenGL or OpenGL ES context was passed to - * a function that requires it to have one. - * - * @analysis Application programmer error. Fix the offending call. - */ -#define GLFW_NO_WINDOW_CONTEXT 0x0001000A -/*! @} */ - -/*! @addtogroup window - * @{ */ -/*! @brief Input focus window hint and attribute - * - * Input focus [window hint](@ref GLFW_FOCUSED_hint) or - * [window attribute](@ref GLFW_FOCUSED_attrib). - */ -#define GLFW_FOCUSED 0x00020001 -/*! @brief Window iconification window attribute - * - * Window iconification [window attribute](@ref GLFW_ICONIFIED_attrib). - */ -#define GLFW_ICONIFIED 0x00020002 -/*! @brief Window resize-ability window hint and attribute - * - * Window resize-ability [window hint](@ref GLFW_RESIZABLE_hint) and - * [window attribute](@ref GLFW_RESIZABLE_attrib). - */ -#define GLFW_RESIZABLE 0x00020003 -/*! @brief Window visibility window hint and attribute - * - * Window visibility [window hint](@ref GLFW_VISIBLE_hint) and - * [window attribute](@ref GLFW_VISIBLE_attrib). - */ -#define GLFW_VISIBLE 0x00020004 -/*! @brief Window decoration window hint and attribute - * - * Window decoration [window hint](@ref GLFW_DECORATED_hint) and - * [window attribute](@ref GLFW_DECORATED_attrib). - */ -#define GLFW_DECORATED 0x00020005 -/*! @brief Window auto-iconification window hint and attribute - * - * Window auto-iconification [window hint](@ref GLFW_AUTO_ICONIFY_hint) and - * [window attribute](@ref GLFW_AUTO_ICONIFY_attrib). - */ -#define GLFW_AUTO_ICONIFY 0x00020006 -/*! @brief Window decoration window hint and attribute - * - * Window decoration [window hint](@ref GLFW_FLOATING_hint) and - * [window attribute](@ref GLFW_FLOATING_attrib). - */ -#define GLFW_FLOATING 0x00020007 -/*! @brief Window maximization window hint and attribute - * - * Window maximization [window hint](@ref GLFW_MAXIMIZED_hint) and - * [window attribute](@ref GLFW_MAXIMIZED_attrib). - */ -#define GLFW_MAXIMIZED 0x00020008 -/*! @brief Cursor centering window hint - * - * Cursor centering [window hint](@ref GLFW_CENTER_CURSOR_hint). - */ -#define GLFW_CENTER_CURSOR 0x00020009 -/*! @brief Window framebuffer transparency hint and attribute - * - * Window framebuffer transparency - * [window hint](@ref GLFW_TRANSPARENT_FRAMEBUFFER_hint) and - * [window attribute](@ref GLFW_TRANSPARENT_FRAMEBUFFER_attrib). - */ -#define GLFW_TRANSPARENT_FRAMEBUFFER 0x0002000A -/*! @brief Mouse cursor hover window attribute. - * - * Mouse cursor hover [window attribute](@ref GLFW_HOVERED_attrib). - */ -#define GLFW_HOVERED 0x0002000B -/*! @brief Input focus on calling show window hint and attribute - * - * Input focus [window hint](@ref GLFW_FOCUS_ON_SHOW_hint) or - * [window attribute](@ref GLFW_FOCUS_ON_SHOW_attrib). - */ -#define GLFW_FOCUS_ON_SHOW 0x0002000C - -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_RED_BITS). - */ -#define GLFW_RED_BITS 0x00021001 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_GREEN_BITS). - */ -#define GLFW_GREEN_BITS 0x00021002 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_BLUE_BITS). - */ -#define GLFW_BLUE_BITS 0x00021003 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_ALPHA_BITS). - */ -#define GLFW_ALPHA_BITS 0x00021004 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_DEPTH_BITS). - */ -#define GLFW_DEPTH_BITS 0x00021005 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_STENCIL_BITS). - */ -#define GLFW_STENCIL_BITS 0x00021006 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_ACCUM_RED_BITS). - */ -#define GLFW_ACCUM_RED_BITS 0x00021007 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_ACCUM_GREEN_BITS). - */ -#define GLFW_ACCUM_GREEN_BITS 0x00021008 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_ACCUM_BLUE_BITS). - */ -#define GLFW_ACCUM_BLUE_BITS 0x00021009 -/*! @brief Framebuffer bit depth hint. - * - * Framebuffer bit depth [hint](@ref GLFW_ACCUM_ALPHA_BITS). - */ -#define GLFW_ACCUM_ALPHA_BITS 0x0002100A -/*! @brief Framebuffer auxiliary buffer hint. - * - * Framebuffer auxiliary buffer [hint](@ref GLFW_AUX_BUFFERS). - */ -#define GLFW_AUX_BUFFERS 0x0002100B -/*! @brief OpenGL stereoscopic rendering hint. - * - * OpenGL stereoscopic rendering [hint](@ref GLFW_STEREO). - */ -#define GLFW_STEREO 0x0002100C -/*! @brief Framebuffer MSAA samples hint. - * - * Framebuffer MSAA samples [hint](@ref GLFW_SAMPLES). - */ -#define GLFW_SAMPLES 0x0002100D -/*! @brief Framebuffer sRGB hint. - * - * Framebuffer sRGB [hint](@ref GLFW_SRGB_CAPABLE). - */ -#define GLFW_SRGB_CAPABLE 0x0002100E -/*! @brief Monitor refresh rate hint. - * - * Monitor refresh rate [hint](@ref GLFW_REFRESH_RATE). - */ -#define GLFW_REFRESH_RATE 0x0002100F -/*! @brief Framebuffer double buffering hint. - * - * Framebuffer double buffering [hint](@ref GLFW_DOUBLEBUFFER). - */ -#define GLFW_DOUBLEBUFFER 0x00021010 - -/*! @brief Context client API hint and attribute. - * - * Context client API [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). - */ -#define GLFW_CLIENT_API 0x00022001 -/*! @brief Context client API major version hint and attribute. - * - * Context client API major version [hint](@ref GLFW_CONTEXT_VERSION_MAJOR_hint) - * and [attribute](@ref GLFW_CONTEXT_VERSION_MAJOR_attrib). - */ -#define GLFW_CONTEXT_VERSION_MAJOR 0x00022002 -/*! @brief Context client API minor version hint and attribute. - * - * Context client API minor version [hint](@ref GLFW_CONTEXT_VERSION_MINOR_hint) - * and [attribute](@ref GLFW_CONTEXT_VERSION_MINOR_attrib). - */ -#define GLFW_CONTEXT_VERSION_MINOR 0x00022003 -/*! @brief Context client API revision number hint and attribute. - * - * Context client API revision number - * [attribute](@ref GLFW_CONTEXT_REVISION_attrib). - */ -#define GLFW_CONTEXT_REVISION 0x00022004 -/*! @brief Context robustness hint and attribute. - * - * Context client API revision number [hint](@ref GLFW_CONTEXT_ROBUSTNESS_hint) - * and [attribute](@ref GLFW_CONTEXT_ROBUSTNESS_attrib). - */ -#define GLFW_CONTEXT_ROBUSTNESS 0x00022005 -/*! @brief OpenGL forward-compatibility hint and attribute. - * - * OpenGL forward-compatibility [hint](@ref GLFW_OPENGL_FORWARD_COMPAT_hint) - * and [attribute](@ref GLFW_OPENGL_FORWARD_COMPAT_attrib). - */ -#define GLFW_OPENGL_FORWARD_COMPAT 0x00022006 -/*! @brief OpenGL debug context hint and attribute. - * - * OpenGL debug context [hint](@ref GLFW_OPENGL_DEBUG_CONTEXT_hint) and - * [attribute](@ref GLFW_OPENGL_DEBUG_CONTEXT_attrib). - */ -#define GLFW_OPENGL_DEBUG_CONTEXT 0x00022007 -/*! @brief OpenGL profile hint and attribute. - * - * OpenGL profile [hint](@ref GLFW_OPENGL_PROFILE_hint) and - * [attribute](@ref GLFW_OPENGL_PROFILE_attrib). - */ -#define GLFW_OPENGL_PROFILE 0x00022008 -/*! @brief Context flush-on-release hint and attribute. - * - * Context flush-on-release [hint](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint) and - * [attribute](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_attrib). - */ -#define GLFW_CONTEXT_RELEASE_BEHAVIOR 0x00022009 -/*! @brief Context error suppression hint and attribute. - * - * Context error suppression [hint](@ref GLFW_CONTEXT_NO_ERROR_hint) and - * [attribute](@ref GLFW_CONTEXT_NO_ERROR_attrib). - */ -#define GLFW_CONTEXT_NO_ERROR 0x0002200A -/*! @brief Context creation API hint and attribute. - * - * Context creation API [hint](@ref GLFW_CONTEXT_CREATION_API_hint) and - * [attribute](@ref GLFW_CONTEXT_CREATION_API_attrib). - */ -#define GLFW_CONTEXT_CREATION_API 0x0002200B -/*! @brief Window content area scaling window - * [window hint](@ref GLFW_SCALE_TO_MONITOR). - */ -#define GLFW_SCALE_TO_MONITOR 0x0002200C -/*! @brief macOS specific - * [window hint](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint). - */ -#define GLFW_COCOA_RETINA_FRAMEBUFFER 0x00023001 -/*! @brief macOS specific - * [window hint](@ref GLFW_COCOA_FRAME_NAME_hint). - */ -#define GLFW_COCOA_FRAME_NAME 0x00023002 -/*! @brief macOS specific - * [window hint](@ref GLFW_COCOA_GRAPHICS_SWITCHING_hint). - */ -#define GLFW_COCOA_GRAPHICS_SWITCHING 0x00023003 -/*! @brief X11 specific - * [window hint](@ref GLFW_X11_CLASS_NAME_hint). - */ -#define GLFW_X11_CLASS_NAME 0x00024001 -/*! @brief X11 specific - * [window hint](@ref GLFW_X11_CLASS_NAME_hint). - */ -#define GLFW_X11_INSTANCE_NAME 0x00024002 -/*! @} */ - -#define GLFW_NO_API 0 -#define GLFW_OPENGL_API 0x00030001 -#define GLFW_OPENGL_ES_API 0x00030002 - -#define GLFW_NO_ROBUSTNESS 0 -#define GLFW_NO_RESET_NOTIFICATION 0x00031001 -#define GLFW_LOSE_CONTEXT_ON_RESET 0x00031002 - -#define GLFW_OPENGL_ANY_PROFILE 0 -#define GLFW_OPENGL_CORE_PROFILE 0x00032001 -#define GLFW_OPENGL_COMPAT_PROFILE 0x00032002 - -#define GLFW_CURSOR 0x00033001 -#define GLFW_STICKY_KEYS 0x00033002 -#define GLFW_STICKY_MOUSE_BUTTONS 0x00033003 -#define GLFW_LOCK_KEY_MODS 0x00033004 -#define GLFW_RAW_MOUSE_MOTION 0x00033005 - -#define GLFW_CURSOR_NORMAL 0x00034001 -#define GLFW_CURSOR_HIDDEN 0x00034002 -#define GLFW_CURSOR_DISABLED 0x00034003 - -#define GLFW_ANY_RELEASE_BEHAVIOR 0 -#define GLFW_RELEASE_BEHAVIOR_FLUSH 0x00035001 -#define GLFW_RELEASE_BEHAVIOR_NONE 0x00035002 - -#define GLFW_NATIVE_CONTEXT_API 0x00036001 -#define GLFW_EGL_CONTEXT_API 0x00036002 -#define GLFW_OSMESA_CONTEXT_API 0x00036003 - -/*! @defgroup shapes Standard cursor shapes - * @brief Standard system cursor shapes. - * - * See [standard cursor creation](@ref cursor_standard) for how these are used. - * - * @ingroup input - * @{ */ - -/*! @brief The regular arrow cursor shape. - * - * The regular arrow cursor. - */ -#define GLFW_ARROW_CURSOR 0x00036001 -/*! @brief The text input I-beam cursor shape. - * - * The text input I-beam cursor shape. - */ -#define GLFW_IBEAM_CURSOR 0x00036002 -/*! @brief The crosshair shape. - * - * The crosshair shape. - */ -#define GLFW_CROSSHAIR_CURSOR 0x00036003 -/*! @brief The hand shape. - * - * The hand shape. - */ -#define GLFW_HAND_CURSOR 0x00036004 -/*! @brief The horizontal resize arrow shape. - * - * The horizontal resize arrow shape. - */ -#define GLFW_HRESIZE_CURSOR 0x00036005 -/*! @brief The vertical resize arrow shape. - * - * The vertical resize arrow shape. - */ -#define GLFW_VRESIZE_CURSOR 0x00036006 -/*! @} */ - -#define GLFW_CONNECTED 0x00040001 -#define GLFW_DISCONNECTED 0x00040002 - -/*! @addtogroup init - * @{ */ -/*! @brief Joystick hat buttons init hint. - * - * Joystick hat buttons [init hint](@ref GLFW_JOYSTICK_HAT_BUTTONS). - */ -#define GLFW_JOYSTICK_HAT_BUTTONS 0x00050001 -/*! @brief macOS specific init hint. - * - * macOS specific [init hint](@ref GLFW_COCOA_CHDIR_RESOURCES_hint). - */ -#define GLFW_COCOA_CHDIR_RESOURCES 0x00051001 -/*! @brief macOS specific init hint. - * - * macOS specific [init hint](@ref GLFW_COCOA_MENUBAR_hint). - */ -#define GLFW_COCOA_MENUBAR 0x00051002 -/*! @} */ - -#define GLFW_DONT_CARE -1 - - -/************************************************************************* - * GLFW API types - *************************************************************************/ - -/*! @brief Client API function pointer type. - * - * Generic function pointer used for returning client API function pointers - * without forcing a cast from a regular pointer. - * - * @sa @ref context_glext - * @sa @ref glfwGetProcAddress - * - * @since Added in version 3.0. - * - * @ingroup context - */ -typedef void (*GLFWglproc)(void); - -/*! @brief Vulkan API function pointer type. - * - * Generic function pointer used for returning Vulkan API function pointers - * without forcing a cast from a regular pointer. - * - * @sa @ref vulkan_proc - * @sa @ref glfwGetInstanceProcAddress - * - * @since Added in version 3.2. - * - * @ingroup vulkan - */ -typedef void (*GLFWvkproc)(void); - -/*! @brief Opaque monitor object. - * - * Opaque monitor object. - * - * @see @ref monitor_object - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -typedef struct GLFWmonitor GLFWmonitor; - -/*! @brief Opaque window object. - * - * Opaque window object. - * - * @see @ref window_object - * - * @since Added in version 3.0. - * - * @ingroup window - */ -typedef struct GLFWwindow GLFWwindow; - -/*! @brief Opaque cursor object. - * - * Opaque cursor object. - * - * @see @ref cursor_object - * - * @since Added in version 3.1. - * - * @ingroup input - */ -typedef struct GLFWcursor GLFWcursor; - -/*! @brief The function pointer type for error callbacks. - * - * This is the function pointer type for error callbacks. An error callback - * function has the following signature: - * @code - * void callback_name(int error_code, const char* description) - * @endcode - * - * @param[in] error_code An [error code](@ref errors). Future releases may add - * more error codes. - * @param[in] description A UTF-8 encoded string describing the error. - * - * @pointer_lifetime The error description string is valid until the callback - * function returns. - * - * @sa @ref error_handling - * @sa @ref glfwSetErrorCallback - * - * @since Added in version 3.0. - * - * @ingroup init - */ -typedef void (* GLFWerrorfun)(int,const char*); - -/*! @brief The function pointer type for window position callbacks. - * - * This is the function pointer type for window position callbacks. A window - * position callback function has the following signature: - * @code - * void callback_name(GLFWwindow* window, int xpos, int ypos) - * @endcode - * - * @param[in] window The window that was moved. - * @param[in] xpos The new x-coordinate, in screen coordinates, of the - * upper-left corner of the content area of the window. - * @param[in] ypos The new y-coordinate, in screen coordinates, of the - * upper-left corner of the content area of the window. - * - * @sa @ref window_pos - * @sa @ref glfwSetWindowPosCallback - * - * @since Added in version 3.0. - * - * @ingroup window - */ -typedef void (* GLFWwindowposfun)(GLFWwindow*,int,int); - -/*! @brief The function pointer type for window size callbacks. - * - * This is the function pointer type for window size callbacks. A window size - * callback function has the following signature: - * @code - * void callback_name(GLFWwindow* window, int width, int height) - * @endcode - * - * @param[in] window The window that was resized. - * @param[in] width The new width, in screen coordinates, of the window. - * @param[in] height The new height, in screen coordinates, of the window. - * - * @sa @ref window_size - * @sa @ref glfwSetWindowSizeCallback - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -typedef void (* GLFWwindowsizefun)(GLFWwindow*,int,int); - -/*! @brief The function pointer type for window close callbacks. - * - * This is the function pointer type for window close callbacks. A window - * close callback function has the following signature: - * @code - * void function_name(GLFWwindow* window) - * @endcode - * - * @param[in] window The window that the user attempted to close. - * - * @sa @ref window_close - * @sa @ref glfwSetWindowCloseCallback - * - * @since Added in version 2.5. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -typedef void (* GLFWwindowclosefun)(GLFWwindow*); - -/*! @brief The function pointer type for window content refresh callbacks. - * - * This is the function pointer type for window content refresh callbacks. - * A window content refresh callback function has the following signature: - * @code - * void function_name(GLFWwindow* window); - * @endcode - * - * @param[in] window The window whose content needs to be refreshed. - * - * @sa @ref window_refresh - * @sa @ref glfwSetWindowRefreshCallback - * - * @since Added in version 2.5. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -typedef void (* GLFWwindowrefreshfun)(GLFWwindow*); - -/*! @brief The function pointer type for window focus callbacks. - * - * This is the function pointer type for window focus callbacks. A window - * focus callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, int focused) - * @endcode - * - * @param[in] window The window that gained or lost input focus. - * @param[in] focused `GLFW_TRUE` if the window was given input focus, or - * `GLFW_FALSE` if it lost it. - * - * @sa @ref window_focus - * @sa @ref glfwSetWindowFocusCallback - * - * @since Added in version 3.0. - * - * @ingroup window - */ -typedef void (* GLFWwindowfocusfun)(GLFWwindow*,int); - -/*! @brief The function pointer type for window iconify callbacks. - * - * This is the function pointer type for window iconify callbacks. A window - * iconify callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, int iconified) - * @endcode - * - * @param[in] window The window that was iconified or restored. - * @param[in] iconified `GLFW_TRUE` if the window was iconified, or - * `GLFW_FALSE` if it was restored. - * - * @sa @ref window_iconify - * @sa @ref glfwSetWindowIconifyCallback - * - * @since Added in version 3.0. - * - * @ingroup window - */ -typedef void (* GLFWwindowiconifyfun)(GLFWwindow*,int); - -/*! @brief The function pointer type for window maximize callbacks. - * - * This is the function pointer type for window maximize callbacks. A window - * maximize callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, int maximized) - * @endcode - * - * @param[in] window The window that was maximized or restored. - * @param[in] iconified `GLFW_TRUE` if the window was maximized, or - * `GLFW_FALSE` if it was restored. - * - * @sa @ref window_maximize - * @sa glfwSetWindowMaximizeCallback - * - * @since Added in version 3.3. - * - * @ingroup window - */ -typedef void (* GLFWwindowmaximizefun)(GLFWwindow*,int); - -/*! @brief The function pointer type for framebuffer size callbacks. - * - * This is the function pointer type for framebuffer size callbacks. - * A framebuffer size callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, int width, int height) - * @endcode - * - * @param[in] window The window whose framebuffer was resized. - * @param[in] width The new width, in pixels, of the framebuffer. - * @param[in] height The new height, in pixels, of the framebuffer. - * - * @sa @ref window_fbsize - * @sa @ref glfwSetFramebufferSizeCallback - * - * @since Added in version 3.0. - * - * @ingroup window - */ -typedef void (* GLFWframebuffersizefun)(GLFWwindow*,int,int); - -/*! @brief The function pointer type for window content scale callbacks. - * - * This is the function pointer type for window content scale callbacks. - * A window content scale callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, float xscale, float yscale) - * @endcode - * - * @param[in] window The window whose content scale changed. - * @param[in] xscale The new x-axis content scale of the window. - * @param[in] yscale The new y-axis content scale of the window. - * - * @sa @ref window_scale - * @sa @ref glfwSetWindowContentScaleCallback - * - * @since Added in version 3.3. - * - * @ingroup window - */ -typedef void (* GLFWwindowcontentscalefun)(GLFWwindow*,float,float); - -/*! @brief The function pointer type for mouse button callbacks. - * - * This is the function pointer type for mouse button callback functions. - * A mouse button callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, int button, int action, int mods) - * @endcode - * - * @param[in] window The window that received the event. - * @param[in] button The [mouse button](@ref buttons) that was pressed or - * released. - * @param[in] action One of `GLFW_PRESS` or `GLFW_RELEASE`. Future releases - * may add more actions. - * @param[in] mods Bit field describing which [modifier keys](@ref mods) were - * held down. - * - * @sa @ref input_mouse_button - * @sa @ref glfwSetMouseButtonCallback - * - * @since Added in version 1.0. - * @glfw3 Added window handle and modifier mask parameters. - * - * @ingroup input - */ -typedef void (* GLFWmousebuttonfun)(GLFWwindow*,int,int,int); - -/*! @brief The function pointer type for cursor position callbacks. - * - * This is the function pointer type for cursor position callbacks. A cursor - * position callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, double xpos, double ypos); - * @endcode - * - * @param[in] window The window that received the event. - * @param[in] xpos The new cursor x-coordinate, relative to the left edge of - * the content area. - * @param[in] ypos The new cursor y-coordinate, relative to the top edge of the - * content area. - * - * @sa @ref cursor_pos - * @sa @ref glfwSetCursorPosCallback - * - * @since Added in version 3.0. Replaces `GLFWmouseposfun`. - * - * @ingroup input - */ -typedef void (* GLFWcursorposfun)(GLFWwindow*,double,double); - -/*! @brief The function pointer type for cursor enter/leave callbacks. - * - * This is the function pointer type for cursor enter/leave callbacks. - * A cursor enter/leave callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, int entered) - * @endcode - * - * @param[in] window The window that received the event. - * @param[in] entered `GLFW_TRUE` if the cursor entered the window's content - * area, or `GLFW_FALSE` if it left it. - * - * @sa @ref cursor_enter - * @sa @ref glfwSetCursorEnterCallback - * - * @since Added in version 3.0. - * - * @ingroup input - */ -typedef void (* GLFWcursorenterfun)(GLFWwindow*,int); - -/*! @brief The function pointer type for scroll callbacks. - * - * This is the function pointer type for scroll callbacks. A scroll callback - * function has the following signature: - * @code - * void function_name(GLFWwindow* window, double xoffset, double yoffset) - * @endcode - * - * @param[in] window The window that received the event. - * @param[in] xoffset The scroll offset along the x-axis. - * @param[in] yoffset The scroll offset along the y-axis. - * - * @sa @ref scrolling - * @sa @ref glfwSetScrollCallback - * - * @since Added in version 3.0. Replaces `GLFWmousewheelfun`. - * - * @ingroup input - */ -typedef void (* GLFWscrollfun)(GLFWwindow*,double,double); - -/*! @brief The function pointer type for keyboard key callbacks. - * - * This is the function pointer type for keyboard key callbacks. A keyboard - * key callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, int key, int scancode, int action, int mods) - * @endcode - * - * @param[in] window The window that received the event. - * @param[in] key The [keyboard key](@ref keys) that was pressed or released. - * @param[in] scancode The system-specific scancode of the key. - * @param[in] action `GLFW_PRESS`, `GLFW_RELEASE` or `GLFW_REPEAT`. Future - * releases may add more actions. - * @param[in] mods Bit field describing which [modifier keys](@ref mods) were - * held down. - * - * @sa @ref input_key - * @sa @ref glfwSetKeyCallback - * - * @since Added in version 1.0. - * @glfw3 Added window handle, scancode and modifier mask parameters. - * - * @ingroup input - */ -typedef void (* GLFWkeyfun)(GLFWwindow*,int,int,int,int); - -/*! @brief The function pointer type for Unicode character callbacks. - * - * This is the function pointer type for Unicode character callbacks. - * A Unicode character callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, unsigned int codepoint) - * @endcode - * - * @param[in] window The window that received the event. - * @param[in] codepoint The Unicode code point of the character. - * - * @sa @ref input_char - * @sa @ref glfwSetCharCallback - * - * @since Added in version 2.4. - * @glfw3 Added window handle parameter. - * - * @ingroup input - */ -typedef void (* GLFWcharfun)(GLFWwindow*,unsigned int); - -/*! @brief The function pointer type for Unicode character with modifiers - * callbacks. - * - * This is the function pointer type for Unicode character with modifiers - * callbacks. It is called for each input character, regardless of what - * modifier keys are held down. A Unicode character with modifiers callback - * function has the following signature: - * @code - * void function_name(GLFWwindow* window, unsigned int codepoint, int mods) - * @endcode - * - * @param[in] window The window that received the event. - * @param[in] codepoint The Unicode code point of the character. - * @param[in] mods Bit field describing which [modifier keys](@ref mods) were - * held down. - * - * @sa @ref input_char - * @sa @ref glfwSetCharModsCallback - * - * @deprecated Scheduled for removal in version 4.0. - * - * @since Added in version 3.1. - * - * @ingroup input - */ -typedef void (* GLFWcharmodsfun)(GLFWwindow*,unsigned int,int); - -/*! @brief The function pointer type for path drop callbacks. - * - * This is the function pointer type for path drop callbacks. A path drop - * callback function has the following signature: - * @code - * void function_name(GLFWwindow* window, int path_count, const char* paths[]) - * @endcode - * - * @param[in] window The window that received the event. - * @param[in] path_count The number of dropped paths. - * @param[in] paths The UTF-8 encoded file and/or directory path names. - * - * @pointer_lifetime The path array and its strings are valid until the - * callback function returns. - * - * @sa @ref path_drop - * @sa @ref glfwSetDropCallback - * - * @since Added in version 3.1. - * - * @ingroup input - */ -typedef void (* GLFWdropfun)(GLFWwindow*,int,const char*[]); - -/*! @brief The function pointer type for monitor configuration callbacks. - * - * This is the function pointer type for monitor configuration callbacks. - * A monitor callback function has the following signature: - * @code - * void function_name(GLFWmonitor* monitor, int event) - * @endcode - * - * @param[in] monitor The monitor that was connected or disconnected. - * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Future - * releases may add more events. - * - * @sa @ref monitor_event - * @sa @ref glfwSetMonitorCallback - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -typedef void (* GLFWmonitorfun)(GLFWmonitor*,int); - -/*! @brief The function pointer type for joystick configuration callbacks. - * - * This is the function pointer type for joystick configuration callbacks. - * A joystick configuration callback function has the following signature: - * @code - * void function_name(int jid, int event) - * @endcode - * - * @param[in] jid The joystick that was connected or disconnected. - * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Future - * releases may add more events. - * - * @sa @ref joystick_event - * @sa @ref glfwSetJoystickCallback - * - * @since Added in version 3.2. - * - * @ingroup input - */ -typedef void (* GLFWjoystickfun)(int,int); - -/*! @brief Video mode type. - * - * This describes a single video mode. - * - * @sa @ref monitor_modes - * @sa @ref glfwGetVideoMode - * @sa @ref glfwGetVideoModes - * - * @since Added in version 1.0. - * @glfw3 Added refresh rate member. - * - * @ingroup monitor - */ -typedef struct GLFWvidmode -{ - /*! The width, in screen coordinates, of the video mode. - */ - int width; - /*! The height, in screen coordinates, of the video mode. - */ - int height; - /*! The bit depth of the red channel of the video mode. - */ - int redBits; - /*! The bit depth of the green channel of the video mode. - */ - int greenBits; - /*! The bit depth of the blue channel of the video mode. - */ - int blueBits; - /*! The refresh rate, in Hz, of the video mode. - */ - int refreshRate; -} GLFWvidmode; - -/*! @brief Gamma ramp. - * - * This describes the gamma ramp for a monitor. - * - * @sa @ref monitor_gamma - * @sa @ref glfwGetGammaRamp - * @sa @ref glfwSetGammaRamp - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -typedef struct GLFWgammaramp -{ - /*! An array of value describing the response of the red channel. - */ - unsigned short* red; - /*! An array of value describing the response of the green channel. - */ - unsigned short* green; - /*! An array of value describing the response of the blue channel. - */ - unsigned short* blue; - /*! The number of elements in each array. - */ - unsigned int size; -} GLFWgammaramp; - -/*! @brief Image data. - * - * This describes a single 2D image. See the documentation for each related - * function what the expected pixel format is. - * - * @sa @ref cursor_custom - * @sa @ref window_icon - * - * @since Added in version 2.1. - * @glfw3 Removed format and bytes-per-pixel members. - * - * @ingroup window - */ -typedef struct GLFWimage -{ - /*! The width, in pixels, of this image. - */ - int width; - /*! The height, in pixels, of this image. - */ - int height; - /*! The pixel data of this image, arranged left-to-right, top-to-bottom. - */ - unsigned char* pixels; -} GLFWimage; - -/*! @brief Gamepad input state - * - * This describes the input state of a gamepad. - * - * @sa @ref gamepad - * @sa @ref glfwGetGamepadState - * - * @since Added in version 3.3. - * - * @ingroup input - */ -typedef struct GLFWgamepadstate -{ - /*! The states of each [gamepad button](@ref gamepad_buttons), `GLFW_PRESS` - * or `GLFW_RELEASE`. - */ - unsigned char buttons[15]; - /*! The states of each [gamepad axis](@ref gamepad_axes), in the range -1.0 - * to 1.0 inclusive. - */ - float axes[6]; -} GLFWgamepadstate; - - -/************************************************************************* - * GLFW API functions - *************************************************************************/ - -/*! @brief Initializes the GLFW library. - * - * This function initializes the GLFW library. Before most GLFW functions can - * be used, GLFW must be initialized, and before an application terminates GLFW - * should be terminated in order to free any resources allocated during or - * after initialization. - * - * If this function fails, it calls @ref glfwTerminate before returning. If it - * succeeds, you should call @ref glfwTerminate before the application exits. - * - * Additional calls to this function after successful initialization but before - * termination will return `GLFW_TRUE` immediately. - * - * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_PLATFORM_ERROR. - * - * @remark @macos This function will change the current directory of the - * application to the `Contents/Resources` subdirectory of the application's - * bundle, if present. This can be disabled with the @ref - * GLFW_COCOA_CHDIR_RESOURCES init hint. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref intro_init - * @sa @ref glfwTerminate - * - * @since Added in version 1.0. - * - * @ingroup init - */ -GLFWAPI int glfwInit(void); - -/*! @brief Terminates the GLFW library. - * - * This function destroys all remaining windows and cursors, restores any - * modified gamma ramps and frees any other allocated resources. Once this - * function is called, you must again call @ref glfwInit successfully before - * you will be able to use most GLFW functions. - * - * If GLFW has been successfully initialized, this function should be called - * before the application exits. If initialization fails, there is no need to - * call this function, as it is called by @ref glfwInit before it returns - * failure. - * - * @errors Possible errors include @ref GLFW_PLATFORM_ERROR. - * - * @remark This function may be called before @ref glfwInit. - * - * @warning The contexts of any remaining windows must not be current on any - * other thread when this function is called. - * - * @reentrancy This function must not be called from a callback. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref intro_init - * @sa @ref glfwInit - * - * @since Added in version 1.0. - * - * @ingroup init - */ -GLFWAPI void glfwTerminate(void); - -/*! @brief Sets the specified init hint to the desired value. - * - * This function sets hints for the next initialization of GLFW. - * - * The values you set hints to are never reset by GLFW, but they only take - * effect during initialization. Once GLFW has been initialized, any values - * you set will be ignored until the library is terminated and initialized - * again. - * - * Some hints are platform specific. These may be set on any platform but they - * will only affect their specific platform. Other platforms will ignore them. - * Setting these hints requires no platform specific headers or functions. - * - * @param[in] hint The [init hint](@ref init_hints) to set. - * @param[in] value The new value of the init hint. - * - * @errors Possible errors include @ref GLFW_INVALID_ENUM and @ref - * GLFW_INVALID_VALUE. - * - * @remarks This function may be called before @ref glfwInit. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa init_hints - * @sa glfwInit - * - * @since Added in version 3.3. - * - * @ingroup init - */ -GLFWAPI void glfwInitHint(int hint, int value); - -/*! @brief Retrieves the version of the GLFW library. - * - * This function retrieves the major, minor and revision numbers of the GLFW - * library. It is intended for when you are using GLFW as a shared library and - * want to ensure that you are using the minimum required version. - * - * Any or all of the version arguments may be `NULL`. - * - * @param[out] major Where to store the major version number, or `NULL`. - * @param[out] minor Where to store the minor version number, or `NULL`. - * @param[out] rev Where to store the revision number, or `NULL`. - * - * @errors None. - * - * @remark This function may be called before @ref glfwInit. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref intro_version - * @sa @ref glfwGetVersionString - * - * @since Added in version 1.0. - * - * @ingroup init - */ -GLFWAPI void glfwGetVersion(int* major, int* minor, int* rev); - -/*! @brief Returns a string describing the compile-time configuration. - * - * This function returns the compile-time generated - * [version string](@ref intro_version_string) of the GLFW library binary. It - * describes the version, platform, compiler and any platform-specific - * compile-time options. It should not be confused with the OpenGL or OpenGL - * ES version string, queried with `glGetString`. - * - * __Do not use the version string__ to parse the GLFW library version. The - * @ref glfwGetVersion function provides the version of the running library - * binary in numerical format. - * - * @return The ASCII encoded GLFW version string. - * - * @errors None. - * - * @remark This function may be called before @ref glfwInit. - * - * @pointer_lifetime The returned string is static and compile-time generated. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref intro_version - * @sa @ref glfwGetVersion - * - * @since Added in version 3.0. - * - * @ingroup init - */ -GLFWAPI const char* glfwGetVersionString(void); - -/*! @brief Returns and clears the last error for the calling thread. - * - * This function returns and clears the [error code](@ref errors) of the last - * error that occurred on the calling thread, and optionally a UTF-8 encoded - * human-readable description of it. If no error has occurred since the last - * call, it returns @ref GLFW_NO_ERROR (zero) and the description pointer is - * set to `NULL`. - * - * @param[in] description Where to store the error description pointer, or `NULL`. - * @return The last error code for the calling thread, or @ref GLFW_NO_ERROR - * (zero). - * - * @errors None. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is guaranteed to be valid only until the - * next error occurs or the library is terminated. - * - * @remark This function may be called before @ref glfwInit. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref error_handling - * @sa @ref glfwSetErrorCallback - * - * @since Added in version 3.3. - * - * @ingroup init - */ -GLFWAPI int glfwGetError(const char** description); - -/*! @brief Sets the error callback. - * - * This function sets the error callback, which is called with an error code - * and a human-readable description each time a GLFW error occurs. - * - * The error code is set before the callback is called. Calling @ref - * glfwGetError from the error callback will return the same value as the error - * code argument. - * - * The error callback is called on the thread where the error occurred. If you - * are using GLFW from multiple threads, your error callback needs to be - * written accordingly. - * - * Because the description string may have been generated specifically for that - * error, it is not guaranteed to be valid after the callback has returned. If - * you wish to use it after the callback returns, you need to make a copy. - * - * Once set, the error callback remains set even after the library has been - * terminated. - * - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set. - * - * @callback_signature - * @code - * void callback_name(int error_code, const char* description) - * @endcode - * For more information about the callback parameters, see the - * [callback pointer type](@ref GLFWerrorfun). - * - * @errors None. - * - * @remark This function may be called before @ref glfwInit. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref error_handling - * @sa @ref glfwGetError - * - * @since Added in version 3.0. - * - * @ingroup init - */ -GLFWAPI GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun callback); - -/*! @brief Returns the currently connected monitors. - * - * This function returns an array of handles for all currently connected - * monitors. The primary monitor is always first in the returned array. If no - * monitors were found, this function returns `NULL`. - * - * @param[out] count Where to store the number of monitors in the returned - * array. This is set to zero if an error occurred. - * @return An array of monitor handles, or `NULL` if no monitors were found or - * if an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is guaranteed to be valid only until the - * monitor configuration changes or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_monitors - * @sa @ref monitor_event - * @sa @ref glfwGetPrimaryMonitor - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI GLFWmonitor** glfwGetMonitors(int* count); - -/*! @brief Returns the primary monitor. - * - * This function returns the primary monitor. This is usually the monitor - * where elements like the task bar or global menu bar are located. - * - * @return The primary monitor, or `NULL` if no monitors were found or if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @remark The primary monitor is always first in the array returned by @ref - * glfwGetMonitors. - * - * @sa @ref monitor_monitors - * @sa @ref glfwGetMonitors - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI GLFWmonitor* glfwGetPrimaryMonitor(void); - -/*! @brief Returns the position of the monitor's viewport on the virtual screen. - * - * This function returns the position, in screen coordinates, of the upper-left - * corner of the specified monitor. - * - * Any or all of the position arguments may be `NULL`. If an error occurs, all - * non-`NULL` position arguments will be set to zero. - * - * @param[in] monitor The monitor to query. - * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`. - * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_properties - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos); - -/*! @brief Retrieves the work area of the monitor. - * - * This function returns the position, in screen coordinates, of the upper-left - * corner of the work area of the specified monitor along with the work area - * size in screen coordinates. The work area is defined as the area of the - * monitor not occluded by the operating system task bar where present. If no - * task bar exists then the work area is the monitor resolution in screen - * coordinates. - * - * Any or all of the position and size arguments may be `NULL`. If an error - * occurs, all non-`NULL` position and size arguments will be set to zero. - * - * @param[in] monitor The monitor to query. - * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`. - * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`. - * @param[out] width Where to store the monitor width, or `NULL`. - * @param[out] height Where to store the monitor height, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_workarea - * - * @since Added in version 3.3. - * - * @ingroup monitor - */ -GLFWAPI void glfwGetMonitorWorkarea(GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height); - -/*! @brief Returns the physical size of the monitor. - * - * This function returns the size, in millimetres, of the display area of the - * specified monitor. - * - * Some systems do not provide accurate monitor size information, either - * because the monitor - * [EDID](https://en.wikipedia.org/wiki/Extended_display_identification_data) - * data is incorrect or because the driver does not report it accurately. - * - * Any or all of the size arguments may be `NULL`. If an error occurs, all - * non-`NULL` size arguments will be set to zero. - * - * @param[in] monitor The monitor to query. - * @param[out] widthMM Where to store the width, in millimetres, of the - * monitor's display area, or `NULL`. - * @param[out] heightMM Where to store the height, in millimetres, of the - * monitor's display area, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @remark @win32 calculates the returned physical size from the - * current resolution and system DPI instead of querying the monitor EDID data. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_properties - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI void glfwGetMonitorPhysicalSize(GLFWmonitor* monitor, int* widthMM, int* heightMM); - -/*! @brief Retrieves the content scale for the specified monitor. - * - * This function retrieves the content scale for the specified monitor. The - * content scale is the ratio between the current DPI and the platform's - * default DPI. This is especially important for text and any UI elements. If - * the pixel dimensions of your UI scaled by this look appropriate on your - * machine then it should appear at a reasonable size on other machines - * regardless of their DPI and scaling settings. This relies on the system DPI - * and scaling settings being somewhat correct. - * - * The content scale may depend on both the monitor resolution and pixel - * density and on user settings. It may be very different from the raw DPI - * calculated from the physical size and current resolution. - * - * @param[in] monitor The monitor to query. - * @param[out] xscale Where to store the x-axis content scale, or `NULL`. - * @param[out] yscale Where to store the y-axis content scale, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_scale - * @sa @ref glfwGetWindowContentScale - * - * @since Added in version 3.3. - * - * @ingroup monitor - */ -GLFWAPI void glfwGetMonitorContentScale(GLFWmonitor* monitor, float* xscale, float* yscale); - -/*! @brief Returns the name of the specified monitor. - * - * This function returns a human-readable name, encoded as UTF-8, of the - * specified monitor. The name typically reflects the make and model of the - * monitor and is not guaranteed to be unique among the connected monitors. - * - * @param[in] monitor The monitor to query. - * @return The UTF-8 encoded name of the monitor, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified monitor is - * disconnected or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_properties - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI const char* glfwGetMonitorName(GLFWmonitor* monitor); - -/*! @brief Sets the user pointer of the specified monitor. - * - * This function sets the user-defined pointer of the specified monitor. The - * current value is retained until the monitor is disconnected. The initial - * value is `NULL`. - * - * This function may be called from the monitor callback, even for a monitor - * that is being disconnected. - * - * @param[in] monitor The monitor whose pointer to set. - * @param[in] pointer The new value. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref monitor_userptr - * @sa @ref glfwGetMonitorUserPointer - * - * @since Added in version 3.3. - * - * @ingroup monitor - */ -GLFWAPI void glfwSetMonitorUserPointer(GLFWmonitor* monitor, void* pointer); - -/*! @brief Returns the user pointer of the specified monitor. - * - * This function returns the current value of the user-defined pointer of the - * specified monitor. The initial value is `NULL`. - * - * This function may be called from the monitor callback, even for a monitor - * that is being disconnected. - * - * @param[in] monitor The monitor whose pointer to return. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref monitor_userptr - * @sa @ref glfwSetMonitorUserPointer - * - * @since Added in version 3.3. - * - * @ingroup monitor - */ -GLFWAPI void* glfwGetMonitorUserPointer(GLFWmonitor* monitor); - -/*! @brief Sets the monitor configuration callback. - * - * This function sets the monitor configuration callback, or removes the - * currently set callback. This is called when a monitor is connected to or - * disconnected from the system. - * - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWmonitor* monitor, int event) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWmonitorfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_event - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun callback); - -/*! @brief Returns the available video modes for the specified monitor. - * - * This function returns an array of all video modes supported by the specified - * monitor. The returned array is sorted in ascending order, first by color - * bit depth (the sum of all channel depths) and then by resolution area (the - * product of width and height). - * - * @param[in] monitor The monitor to query. - * @param[out] count Where to store the number of video modes in the returned - * array. This is set to zero if an error occurred. - * @return An array of video modes, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified monitor is - * disconnected, this function is called again for that monitor or the library - * is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_modes - * @sa @ref glfwGetVideoMode - * - * @since Added in version 1.0. - * @glfw3 Changed to return an array of modes for a specific monitor. - * - * @ingroup monitor - */ -GLFWAPI const GLFWvidmode* glfwGetVideoModes(GLFWmonitor* monitor, int* count); - -/*! @brief Returns the current mode of the specified monitor. - * - * This function returns the current video mode of the specified monitor. If - * you have created a full screen window for that monitor, the return value - * will depend on whether that window is iconified. - * - * @param[in] monitor The monitor to query. - * @return The current mode of the monitor, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified monitor is - * disconnected or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_modes - * @sa @ref glfwGetVideoModes - * - * @since Added in version 3.0. Replaces `glfwGetDesktopMode`. - * - * @ingroup monitor - */ -GLFWAPI const GLFWvidmode* glfwGetVideoMode(GLFWmonitor* monitor); - -/*! @brief Generates a gamma ramp and sets it for the specified monitor. - * - * This function generates an appropriately sized gamma ramp from the specified - * exponent and then calls @ref glfwSetGammaRamp with it. The value must be - * a finite number greater than zero. - * - * The software controlled gamma ramp is applied _in addition_ to the hardware - * gamma correction, which today is usually an approximation of sRGB gamma. - * This means that setting a perfectly linear ramp, or gamma 1.0, will produce - * the default (usually sRGB-like) behavior. - * - * For gamma correct rendering with OpenGL or OpenGL ES, see the @ref - * GLFW_SRGB_CAPABLE hint. - * - * @param[in] monitor The monitor whose gamma ramp to set. - * @param[in] gamma The desired exponent. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. - * - * @remark @wayland Gamma handling is a privileged protocol, this function - * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_gamma - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI void glfwSetGamma(GLFWmonitor* monitor, float gamma); - -/*! @brief Returns the current gamma ramp for the specified monitor. - * - * This function returns the current gamma ramp of the specified monitor. - * - * @param[in] monitor The monitor to query. - * @return The current gamma ramp, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @wayland Gamma handling is a privileged protocol, this function - * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR while - * returning `NULL`. - * - * @pointer_lifetime The returned structure and its arrays are allocated and - * freed by GLFW. You should not free them yourself. They are valid until the - * specified monitor is disconnected, this function is called again for that - * monitor or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_gamma - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI const GLFWgammaramp* glfwGetGammaRamp(GLFWmonitor* monitor); - -/*! @brief Sets the current gamma ramp for the specified monitor. - * - * This function sets the current gamma ramp for the specified monitor. The - * original gamma ramp for that monitor is saved by GLFW the first time this - * function is called and is restored by @ref glfwTerminate. - * - * The software controlled gamma ramp is applied _in addition_ to the hardware - * gamma correction, which today is usually an approximation of sRGB gamma. - * This means that setting a perfectly linear ramp, or gamma 1.0, will produce - * the default (usually sRGB-like) behavior. - * - * For gamma correct rendering with OpenGL or OpenGL ES, see the @ref - * GLFW_SRGB_CAPABLE hint. - * - * @param[in] monitor The monitor whose gamma ramp to set. - * @param[in] ramp The gamma ramp to use. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark The size of the specified gamma ramp should match the size of the - * current ramp for that monitor. - * - * @remark @win32 The gamma ramp size must be 256. - * - * @remark @wayland Gamma handling is a privileged protocol, this function - * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The specified gamma ramp is copied before this function - * returns. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref monitor_gamma - * - * @since Added in version 3.0. - * - * @ingroup monitor - */ -GLFWAPI void glfwSetGammaRamp(GLFWmonitor* monitor, const GLFWgammaramp* ramp); - -/*! @brief Resets all window hints to their default values. - * - * This function resets all window hints to their - * [default values](@ref window_hints_values). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_hints - * @sa @ref glfwWindowHint - * @sa @ref glfwWindowHintString - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwDefaultWindowHints(void); - -/*! @brief Sets the specified window hint to the desired value. - * - * This function sets hints for the next call to @ref glfwCreateWindow. The - * hints, once set, retain their values until changed by a call to this - * function or @ref glfwDefaultWindowHints, or until the library is terminated. - * - * Only integer value hints can be set with this function. String value hints - * are set with @ref glfwWindowHintString. - * - * This function does not check whether the specified hint values are valid. - * If you set hints to invalid values this will instead be reported by the next - * call to @ref glfwCreateWindow. - * - * Some hints are platform specific. These may be set on any platform but they - * will only affect their specific platform. Other platforms will ignore them. - * Setting these hints requires no platform specific headers or functions. - * - * @param[in] hint The [window hint](@ref window_hints) to set. - * @param[in] value The new value of the window hint. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_hints - * @sa @ref glfwWindowHintString - * @sa @ref glfwDefaultWindowHints - * - * @since Added in version 3.0. Replaces `glfwOpenWindowHint`. - * - * @ingroup window - */ -GLFWAPI void glfwWindowHint(int hint, int value); - -/*! @brief Sets the specified window hint to the desired value. - * - * This function sets hints for the next call to @ref glfwCreateWindow. The - * hints, once set, retain their values until changed by a call to this - * function or @ref glfwDefaultWindowHints, or until the library is terminated. - * - * Only string type hints can be set with this function. Integer value hints - * are set with @ref glfwWindowHint. - * - * This function does not check whether the specified hint values are valid. - * If you set hints to invalid values this will instead be reported by the next - * call to @ref glfwCreateWindow. - * - * Some hints are platform specific. These may be set on any platform but they - * will only affect their specific platform. Other platforms will ignore them. - * Setting these hints requires no platform specific headers or functions. - * - * @param[in] hint The [window hint](@ref window_hints) to set. - * @param[in] value The new value of the window hint. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @pointer_lifetime The specified string is copied before this function - * returns. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_hints - * @sa @ref glfwWindowHint - * @sa @ref glfwDefaultWindowHints - * - * @since Added in version 3.3. - * - * @ingroup window - */ -GLFWAPI void glfwWindowHintString(int hint, const char* value); - -/*! @brief Creates a window and its associated context. - * - * This function creates a window and its associated OpenGL or OpenGL ES - * context. Most of the options controlling how the window and its context - * should be created are specified with [window hints](@ref window_hints). - * - * Successful creation does not change which context is current. Before you - * can use the newly created context, you need to - * [make it current](@ref context_current). For information about the `share` - * parameter, see @ref context_sharing. - * - * The created window, framebuffer and context may differ from what you - * requested, as not all parameters and hints are - * [hard constraints](@ref window_hints_hard). This includes the size of the - * window, especially for full screen windows. To query the actual attributes - * of the created window, framebuffer and context, see @ref - * glfwGetWindowAttrib, @ref glfwGetWindowSize and @ref glfwGetFramebufferSize. - * - * To create a full screen window, you need to specify the monitor the window - * will cover. If no monitor is specified, the window will be windowed mode. - * Unless you have a way for the user to choose a specific monitor, it is - * recommended that you pick the primary monitor. For more information on how - * to query connected monitors, see @ref monitor_monitors. - * - * For full screen windows, the specified size becomes the resolution of the - * window's _desired video mode_. As long as a full screen window is not - * iconified, the supported video mode most closely matching the desired video - * mode is set for the specified monitor. For more information about full - * screen windows, including the creation of so called _windowed full screen_ - * or _borderless full screen_ windows, see @ref window_windowed_full_screen. - * - * Once you have created the window, you can switch it between windowed and - * full screen mode with @ref glfwSetWindowMonitor. This will not affect its - * OpenGL or OpenGL ES context. - * - * By default, newly created windows use the placement recommended by the - * window system. To create the window at a specific position, make it - * initially invisible using the [GLFW_VISIBLE](@ref GLFW_VISIBLE_hint) window - * hint, set its [position](@ref window_pos) and then [show](@ref window_hide) - * it. - * - * As long as at least one full screen window is not iconified, the screensaver - * is prohibited from starting. - * - * Window systems put limits on window sizes. Very large or very small window - * dimensions may be overridden by the window system on creation. Check the - * actual [size](@ref window_size) after creation. - * - * The [swap interval](@ref buffer_swap) is not set during window creation and - * the initial value may vary depending on driver settings and defaults. - * - * @param[in] width The desired width, in screen coordinates, of the window. - * This must be greater than zero. - * @param[in] height The desired height, in screen coordinates, of the window. - * This must be greater than zero. - * @param[in] title The initial, UTF-8 encoded window title. - * @param[in] monitor The monitor to use for full screen mode, or `NULL` for - * windowed mode. - * @param[in] share The window whose context to share resources with, or `NULL` - * to not share resources. - * @return The handle of the created window, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE, @ref GLFW_API_UNAVAILABLE, @ref - * GLFW_VERSION_UNAVAILABLE, @ref GLFW_FORMAT_UNAVAILABLE and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @win32 Window creation will fail if the Microsoft GDI software - * OpenGL implementation is the only one available. - * - * @remark @win32 If the executable has an icon resource named `GLFW_ICON,` it - * will be set as the initial icon for the window. If no such icon is present, - * the `IDI_APPLICATION` icon will be used instead. To set a different icon, - * see @ref glfwSetWindowIcon. - * - * @remark @win32 The context to share resources with must not be current on - * any other thread. - * - * @remark @macos The OS only supports forward-compatible core profile contexts - * for OpenGL versions 3.2 and later. Before creating an OpenGL context of - * version 3.2 or later you must set the - * [GLFW_OPENGL_FORWARD_COMPAT](@ref GLFW_OPENGL_FORWARD_COMPAT_hint) and - * [GLFW_OPENGL_PROFILE](@ref GLFW_OPENGL_PROFILE_hint) hints accordingly. - * OpenGL 3.0 and 3.1 contexts are not supported at all on macOS. - * - * @remark @macos The GLFW window has no icon, as it is not a document - * window, but the dock icon will be the same as the application bundle's icon. - * For more information on bundles, see the - * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/) - * in the Mac Developer Library. - * - * @remark @macos The first time a window is created the menu bar is created. - * If GLFW finds a `MainMenu.nib` it is loaded and assumed to contain a menu - * bar. Otherwise a minimal menu bar is created manually with common commands - * like Hide, Quit and About. The About entry opens a minimal about dialog - * with information from the application's bundle. Menu bar creation can be - * disabled entirely with the @ref GLFW_COCOA_MENUBAR init hint. - * - * @remark @macos On OS X 10.10 and later the window frame will not be rendered - * at full resolution on Retina displays unless the - * [GLFW_COCOA_RETINA_FRAMEBUFFER](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint) - * hint is `GLFW_TRUE` and the `NSHighResolutionCapable` key is enabled in the - * application bundle's `Info.plist`. For more information, see - * [High Resolution Guidelines for OS X](https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Explained/Explained.html) - * in the Mac Developer Library. The GLFW test and example programs use - * a custom `Info.plist` template for this, which can be found as - * `CMake/MacOSXBundleInfo.plist.in` in the source tree. - * - * @remark @macos When activating frame autosaving with - * [GLFW_COCOA_FRAME_NAME](@ref GLFW_COCOA_FRAME_NAME_hint), the specified - * window size and position may be overridden by previously saved values. - * - * @remark @x11 Some window managers will not respect the placement of - * initially hidden windows. - * - * @remark @x11 Due to the asynchronous nature of X11, it may take a moment for - * a window to reach its requested state. This means you may not be able to - * query the final size, position or other attributes directly after window - * creation. - * - * @remark @x11 The class part of the `WM_CLASS` window property will by - * default be set to the window title passed to this function. The instance - * part will use the contents of the `RESOURCE_NAME` environment variable, if - * present and not empty, or fall back to the window title. Set the - * [GLFW_X11_CLASS_NAME](@ref GLFW_X11_CLASS_NAME_hint) and - * [GLFW_X11_INSTANCE_NAME](@ref GLFW_X11_INSTANCE_NAME_hint) window hints to - * override this. - * - * @remark @wayland Compositors should implement the xdg-decoration protocol - * for GLFW to decorate the window properly. If this protocol isn't - * supported, or if the compositor prefers client-side decorations, a very - * simple fallback frame will be drawn using the wp_viewporter protocol. A - * compositor can still emit close, maximize or fullscreen events, using for - * instance a keybind mechanism. If neither of these protocols is supported, - * the window won't be decorated. - * - * @remark @wayland A full screen window will not attempt to change the mode, - * no matter what the requested size or refresh rate. - * - * @remark @wayland Screensaver inhibition requires the idle-inhibit protocol - * to be implemented in the user's compositor. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_creation - * @sa @ref glfwDestroyWindow - * - * @since Added in version 3.0. Replaces `glfwOpenWindow`. - * - * @ingroup window - */ -GLFWAPI GLFWwindow* glfwCreateWindow(int width, int height, const char* title, GLFWmonitor* monitor, GLFWwindow* share); - -/*! @brief Destroys the specified window and its context. - * - * This function destroys the specified window and its context. On calling - * this function, no further callbacks will be called for that window. - * - * If the context of the specified window is current on the main thread, it is - * detached before being destroyed. - * - * @param[in] window The window to destroy. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @note The context of the specified window must not be current on any other - * thread when this function is called. - * - * @reentrancy This function must not be called from a callback. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_creation - * @sa @ref glfwCreateWindow - * - * @since Added in version 3.0. Replaces `glfwCloseWindow`. - * - * @ingroup window - */ -GLFWAPI void glfwDestroyWindow(GLFWwindow* window); - -/*! @brief Checks the close flag of the specified window. - * - * This function returns the value of the close flag of the specified window. - * - * @param[in] window The window to query. - * @return The value of the close flag. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref window_close - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI int glfwWindowShouldClose(GLFWwindow* window); - -/*! @brief Sets the close flag of the specified window. - * - * This function sets the value of the close flag of the specified window. - * This can be used to override the user's attempt to close the window, or - * to signal that it should be closed. - * - * @param[in] window The window whose flag to change. - * @param[in] value The new value. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref window_close - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowShouldClose(GLFWwindow* window, int value); - -/*! @brief Sets the title of the specified window. - * - * This function sets the window title, encoded as UTF-8, of the specified - * window. - * - * @param[in] window The window whose title to change. - * @param[in] title The UTF-8 encoded window title. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @macos The window title will not be updated until the next time you - * process events. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_title - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowTitle(GLFWwindow* window, const char* title); - -/*! @brief Sets the icon for the specified window. - * - * This function sets the icon of the specified window. If passed an array of - * candidate images, those of or closest to the sizes desired by the system are - * selected. If no images are specified, the window reverts to its default - * icon. - * - * The pixels are 32-bit, little-endian, non-premultiplied RGBA, i.e. eight - * bits per channel with the red channel first. They are arranged canonically - * as packed sequential rows, starting from the top-left corner. - * - * The desired image sizes varies depending on platform and system settings. - * The selected images will be rescaled as needed. Good sizes include 16x16, - * 32x32 and 48x48. - * - * @param[in] window The window whose icon to set. - * @param[in] count The number of images in the specified array, or zero to - * revert to the default window icon. - * @param[in] images The images to create the icon from. This is ignored if - * count is zero. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The specified image data is copied before this function - * returns. - * - * @remark @macos The GLFW window has no icon, as it is not a document - * window, so this function does nothing. The dock icon will be the same as - * the application bundle's icon. For more information on bundles, see the - * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/) - * in the Mac Developer Library. - * - * @remark @wayland There is no existing protocol to change an icon, the - * window will thus inherit the one defined in the application's desktop file. - * This function always emits @ref GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_icon - * - * @since Added in version 3.2. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowIcon(GLFWwindow* window, int count, const GLFWimage* images); - -/*! @brief Retrieves the position of the content area of the specified window. - * - * This function retrieves the position, in screen coordinates, of the - * upper-left corner of the content area of the specified window. - * - * Any or all of the position arguments may be `NULL`. If an error occurs, all - * non-`NULL` position arguments will be set to zero. - * - * @param[in] window The window to query. - * @param[out] xpos Where to store the x-coordinate of the upper-left corner of - * the content area, or `NULL`. - * @param[out] ypos Where to store the y-coordinate of the upper-left corner of - * the content area, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @wayland There is no way for an application to retrieve the global - * position of its windows, this function will always emit @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_pos - * @sa @ref glfwSetWindowPos - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwGetWindowPos(GLFWwindow* window, int* xpos, int* ypos); - -/*! @brief Sets the position of the content area of the specified window. - * - * This function sets the position, in screen coordinates, of the upper-left - * corner of the content area of the specified windowed mode window. If the - * window is a full screen window, this function does nothing. - * - * __Do not use this function__ to move an already visible window unless you - * have very good reasons for doing so, as it will confuse and annoy the user. - * - * The window manager may put limits on what positions are allowed. GLFW - * cannot and should not override these limits. - * - * @param[in] window The window to query. - * @param[in] xpos The x-coordinate of the upper-left corner of the content area. - * @param[in] ypos The y-coordinate of the upper-left corner of the content area. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @wayland There is no way for an application to set the global - * position of its windows, this function will always emit @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_pos - * @sa @ref glfwGetWindowPos - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos); - -/*! @brief Retrieves the size of the content area of the specified window. - * - * This function retrieves the size, in screen coordinates, of the content area - * of the specified window. If you wish to retrieve the size of the - * framebuffer of the window in pixels, see @ref glfwGetFramebufferSize. - * - * Any or all of the size arguments may be `NULL`. If an error occurs, all - * non-`NULL` size arguments will be set to zero. - * - * @param[in] window The window whose size to retrieve. - * @param[out] width Where to store the width, in screen coordinates, of the - * content area, or `NULL`. - * @param[out] height Where to store the height, in screen coordinates, of the - * content area, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_size - * @sa @ref glfwSetWindowSize - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwGetWindowSize(GLFWwindow* window, int* width, int* height); - -/*! @brief Sets the size limits of the specified window. - * - * This function sets the size limits of the content area of the specified - * window. If the window is full screen, the size limits only take effect - * once it is made windowed. If the window is not resizable, this function - * does nothing. - * - * The size limits are applied immediately to a windowed mode window and may - * cause it to be resized. - * - * The maximum dimensions must be greater than or equal to the minimum - * dimensions and all must be greater than or equal to zero. - * - * @param[in] window The window to set limits for. - * @param[in] minwidth The minimum width, in screen coordinates, of the content - * area, or `GLFW_DONT_CARE`. - * @param[in] minheight The minimum height, in screen coordinates, of the - * content area, or `GLFW_DONT_CARE`. - * @param[in] maxwidth The maximum width, in screen coordinates, of the content - * area, or `GLFW_DONT_CARE`. - * @param[in] maxheight The maximum height, in screen coordinates, of the - * content area, or `GLFW_DONT_CARE`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. - * - * @remark If you set size limits and an aspect ratio that conflict, the - * results are undefined. - * - * @remark @wayland The size limits will not be applied until the window is - * actually resized, either by the user or by the compositor. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_sizelimits - * @sa @ref glfwSetWindowAspectRatio - * - * @since Added in version 3.2. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowSizeLimits(GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight); - -/*! @brief Sets the aspect ratio of the specified window. - * - * This function sets the required aspect ratio of the content area of the - * specified window. If the window is full screen, the aspect ratio only takes - * effect once it is made windowed. If the window is not resizable, this - * function does nothing. - * - * The aspect ratio is specified as a numerator and a denominator and both - * values must be greater than zero. For example, the common 16:9 aspect ratio - * is specified as 16 and 9, respectively. - * - * If the numerator and denominator is set to `GLFW_DONT_CARE` then the aspect - * ratio limit is disabled. - * - * The aspect ratio is applied immediately to a windowed mode window and may - * cause it to be resized. - * - * @param[in] window The window to set limits for. - * @param[in] numer The numerator of the desired aspect ratio, or - * `GLFW_DONT_CARE`. - * @param[in] denom The denominator of the desired aspect ratio, or - * `GLFW_DONT_CARE`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. - * - * @remark If you set size limits and an aspect ratio that conflict, the - * results are undefined. - * - * @remark @wayland The aspect ratio will not be applied until the window is - * actually resized, either by the user or by the compositor. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_sizelimits - * @sa @ref glfwSetWindowSizeLimits - * - * @since Added in version 3.2. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowAspectRatio(GLFWwindow* window, int numer, int denom); - -/*! @brief Sets the size of the content area of the specified window. - * - * This function sets the size, in screen coordinates, of the content area of - * the specified window. - * - * For full screen windows, this function updates the resolution of its desired - * video mode and switches to the video mode closest to it, without affecting - * the window's context. As the context is unaffected, the bit depths of the - * framebuffer remain unchanged. - * - * If you wish to update the refresh rate of the desired video mode in addition - * to its resolution, see @ref glfwSetWindowMonitor. - * - * The window manager may put limits on what sizes are allowed. GLFW cannot - * and should not override these limits. - * - * @param[in] window The window to resize. - * @param[in] width The desired width, in screen coordinates, of the window - * content area. - * @param[in] height The desired height, in screen coordinates, of the window - * content area. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @wayland A full screen window will not attempt to change the mode, - * no matter what the requested size. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_size - * @sa @ref glfwGetWindowSize - * @sa @ref glfwSetWindowMonitor - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowSize(GLFWwindow* window, int width, int height); - -/*! @brief Retrieves the size of the framebuffer of the specified window. - * - * This function retrieves the size, in pixels, of the framebuffer of the - * specified window. If you wish to retrieve the size of the window in screen - * coordinates, see @ref glfwGetWindowSize. - * - * Any or all of the size arguments may be `NULL`. If an error occurs, all - * non-`NULL` size arguments will be set to zero. - * - * @param[in] window The window whose framebuffer to query. - * @param[out] width Where to store the width, in pixels, of the framebuffer, - * or `NULL`. - * @param[out] height Where to store the height, in pixels, of the framebuffer, - * or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_fbsize - * @sa @ref glfwSetFramebufferSizeCallback - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwGetFramebufferSize(GLFWwindow* window, int* width, int* height); - -/*! @brief Retrieves the size of the frame of the window. - * - * This function retrieves the size, in screen coordinates, of each edge of the - * frame of the specified window. This size includes the title bar, if the - * window has one. The size of the frame may vary depending on the - * [window-related hints](@ref window_hints_wnd) used to create it. - * - * Because this function retrieves the size of each window frame edge and not - * the offset along a particular coordinate axis, the retrieved values will - * always be zero or positive. - * - * Any or all of the size arguments may be `NULL`. If an error occurs, all - * non-`NULL` size arguments will be set to zero. - * - * @param[in] window The window whose frame size to query. - * @param[out] left Where to store the size, in screen coordinates, of the left - * edge of the window frame, or `NULL`. - * @param[out] top Where to store the size, in screen coordinates, of the top - * edge of the window frame, or `NULL`. - * @param[out] right Where to store the size, in screen coordinates, of the - * right edge of the window frame, or `NULL`. - * @param[out] bottom Where to store the size, in screen coordinates, of the - * bottom edge of the window frame, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_size - * - * @since Added in version 3.1. - * - * @ingroup window - */ -GLFWAPI void glfwGetWindowFrameSize(GLFWwindow* window, int* left, int* top, int* right, int* bottom); - -/*! @brief Retrieves the content scale for the specified window. - * - * This function retrieves the content scale for the specified window. The - * content scale is the ratio between the current DPI and the platform's - * default DPI. This is especially important for text and any UI elements. If - * the pixel dimensions of your UI scaled by this look appropriate on your - * machine then it should appear at a reasonable size on other machines - * regardless of their DPI and scaling settings. This relies on the system DPI - * and scaling settings being somewhat correct. - * - * On systems where each monitors can have its own content scale, the window - * content scale will depend on which monitor the system considers the window - * to be on. - * - * @param[in] window The window to query. - * @param[out] xscale Where to store the x-axis content scale, or `NULL`. - * @param[out] yscale Where to store the y-axis content scale, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_scale - * @sa @ref glfwSetWindowContentScaleCallback - * @sa @ref glfwGetMonitorContentScale - * - * @since Added in version 3.3. - * - * @ingroup window - */ -GLFWAPI void glfwGetWindowContentScale(GLFWwindow* window, float* xscale, float* yscale); - -/*! @brief Returns the opacity of the whole window. - * - * This function returns the opacity of the window, including any decorations. - * - * The opacity (or alpha) value is a positive finite number between zero and - * one, where zero is fully transparent and one is fully opaque. If the system - * does not support whole window transparency, this function always returns one. - * - * The initial opacity value for newly created windows is one. - * - * @param[in] window The window to query. - * @return The opacity value of the specified window. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_transparency - * @sa @ref glfwSetWindowOpacity - * - * @since Added in version 3.3. - * - * @ingroup window - */ -GLFWAPI float glfwGetWindowOpacity(GLFWwindow* window); - -/*! @brief Sets the opacity of the whole window. - * - * This function sets the opacity of the window, including any decorations. - * - * The opacity (or alpha) value is a positive finite number between zero and - * one, where zero is fully transparent and one is fully opaque. - * - * The initial opacity value for newly created windows is one. - * - * A window created with framebuffer transparency may not use whole window - * transparency. The results of doing this are undefined. - * - * @param[in] window The window to set the opacity for. - * @param[in] opacity The desired opacity of the specified window. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_transparency - * @sa @ref glfwGetWindowOpacity - * - * @since Added in version 3.3. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowOpacity(GLFWwindow* window, float opacity); - -/*! @brief Iconifies the specified window. - * - * This function iconifies (minimizes) the specified window if it was - * previously restored. If the window is already iconified, this function does - * nothing. - * - * If the specified window is a full screen window, the original monitor - * resolution is restored until the window is restored. - * - * @param[in] window The window to iconify. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @wayland There is no concept of iconification in wl_shell, this - * function will emit @ref GLFW_PLATFORM_ERROR when using this deprecated - * protocol. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_iconify - * @sa @ref glfwRestoreWindow - * @sa @ref glfwMaximizeWindow - * - * @since Added in version 2.1. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwIconifyWindow(GLFWwindow* window); - -/*! @brief Restores the specified window. - * - * This function restores the specified window if it was previously iconified - * (minimized) or maximized. If the window is already restored, this function - * does nothing. - * - * If the specified window is a full screen window, the resolution chosen for - * the window is restored on the selected monitor. - * - * @param[in] window The window to restore. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_iconify - * @sa @ref glfwIconifyWindow - * @sa @ref glfwMaximizeWindow - * - * @since Added in version 2.1. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwRestoreWindow(GLFWwindow* window); - -/*! @brief Maximizes the specified window. - * - * This function maximizes the specified window if it was previously not - * maximized. If the window is already maximized, this function does nothing. - * - * If the specified window is a full screen window, this function does nothing. - * - * @param[in] window The window to maximize. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @par Thread Safety - * This function may only be called from the main thread. - * - * @sa @ref window_iconify - * @sa @ref glfwIconifyWindow - * @sa @ref glfwRestoreWindow - * - * @since Added in GLFW 3.2. - * - * @ingroup window - */ -GLFWAPI void glfwMaximizeWindow(GLFWwindow* window); - -/*! @brief Makes the specified window visible. - * - * This function makes the specified window visible if it was previously - * hidden. If the window is already visible or is in full screen mode, this - * function does nothing. - * - * By default, windowed mode windows are focused when shown - * Set the [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) window hint - * to change this behavior for all newly created windows, or change the - * behavior for an existing window with @ref glfwSetWindowAttrib. - * - * @param[in] window The window to make visible. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_hide - * @sa @ref glfwHideWindow - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwShowWindow(GLFWwindow* window); - -/*! @brief Hides the specified window. - * - * This function hides the specified window if it was previously visible. If - * the window is already hidden or is in full screen mode, this function does - * nothing. - * - * @param[in] window The window to hide. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_hide - * @sa @ref glfwShowWindow - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwHideWindow(GLFWwindow* window); - -/*! @brief Brings the specified window to front and sets input focus. - * - * This function brings the specified window to front and sets input focus. - * The window should already be visible and not iconified. - * - * By default, both windowed and full screen mode windows are focused when - * initially created. Set the [GLFW_FOCUSED](@ref GLFW_FOCUSED_hint) to - * disable this behavior. - * - * Also by default, windowed mode windows are focused when shown - * with @ref glfwShowWindow. Set the - * [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) to disable this behavior. - * - * __Do not use this function__ to steal focus from other applications unless - * you are certain that is what the user wants. Focus stealing can be - * extremely disruptive. - * - * For a less disruptive way of getting the user's attention, see - * [attention requests](@ref window_attention). - * - * @param[in] window The window to give input focus. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @wayland It is not possible for an application to bring its windows - * to front, this function will always emit @ref GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_focus - * @sa @ref window_attention - * - * @since Added in version 3.2. - * - * @ingroup window - */ -GLFWAPI void glfwFocusWindow(GLFWwindow* window); - -/*! @brief Requests user attention to the specified window. - * - * This function requests user attention to the specified window. On - * platforms where this is not supported, attention is requested to the - * application as a whole. - * - * Once the user has given attention, usually by focusing the window or - * application, the system will end the request automatically. - * - * @param[in] window The window to request attention to. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @macos Attention is requested to the application as a whole, not the - * specific window. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_attention - * - * @since Added in version 3.3. - * - * @ingroup window - */ -GLFWAPI void glfwRequestWindowAttention(GLFWwindow* window); - -/*! @brief Returns the monitor that the window uses for full screen mode. - * - * This function returns the handle of the monitor that the specified window is - * in full screen on. - * - * @param[in] window The window to query. - * @return The monitor, or `NULL` if the window is in windowed mode or an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_monitor - * @sa @ref glfwSetWindowMonitor - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI GLFWmonitor* glfwGetWindowMonitor(GLFWwindow* window); - -/*! @brief Sets the mode, monitor, video mode and placement of a window. - * - * This function sets the monitor that the window uses for full screen mode or, - * if the monitor is `NULL`, makes it windowed mode. - * - * When setting a monitor, this function updates the width, height and refresh - * rate of the desired video mode and switches to the video mode closest to it. - * The window position is ignored when setting a monitor. - * - * When the monitor is `NULL`, the position, width and height are used to - * place the window content area. The refresh rate is ignored when no monitor - * is specified. - * - * If you only wish to update the resolution of a full screen window or the - * size of a windowed mode window, see @ref glfwSetWindowSize. - * - * When a window transitions from full screen to windowed mode, this function - * restores any previous window settings such as whether it is decorated, - * floating, resizable, has size or aspect ratio limits, etc. - * - * @param[in] window The window whose monitor, size or video mode to set. - * @param[in] monitor The desired monitor, or `NULL` to set windowed mode. - * @param[in] xpos The desired x-coordinate of the upper-left corner of the - * content area. - * @param[in] ypos The desired y-coordinate of the upper-left corner of the - * content area. - * @param[in] width The desired with, in screen coordinates, of the content - * area or video mode. - * @param[in] height The desired height, in screen coordinates, of the content - * area or video mode. - * @param[in] refreshRate The desired refresh rate, in Hz, of the video mode, - * or `GLFW_DONT_CARE`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark The OpenGL or OpenGL ES context will not be destroyed or otherwise - * affected by any resizing or mode switching, although you may need to update - * your viewport if the framebuffer size has changed. - * - * @remark @wayland The desired window position is ignored, as there is no way - * for an application to set this property. - * - * @remark @wayland Setting the window to full screen will not attempt to - * change the mode, no matter what the requested size or refresh rate. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_monitor - * @sa @ref window_full_screen - * @sa @ref glfwGetWindowMonitor - * @sa @ref glfwSetWindowSize - * - * @since Added in version 3.2. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowMonitor(GLFWwindow* window, GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate); - -/*! @brief Returns an attribute of the specified window. - * - * This function returns the value of an attribute of the specified window or - * its OpenGL or OpenGL ES context. - * - * @param[in] window The window to query. - * @param[in] attrib The [window attribute](@ref window_attribs) whose value to - * return. - * @return The value of the attribute, or zero if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @remark Framebuffer related hints are not window attributes. See @ref - * window_attribs_fb for more information. - * - * @remark Zero is a valid value for many window and context related - * attributes so you cannot use a return value of zero as an indication of - * errors. However, this function should not fail as long as it is passed - * valid arguments and the library has been [initialized](@ref intro_init). - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_attribs - * @sa @ref glfwSetWindowAttrib - * - * @since Added in version 3.0. Replaces `glfwGetWindowParam` and - * `glfwGetGLVersion`. - * - * @ingroup window - */ -GLFWAPI int glfwGetWindowAttrib(GLFWwindow* window, int attrib); - -/*! @brief Sets an attribute of the specified window. - * - * This function sets the value of an attribute of the specified window. - * - * The supported attributes are [GLFW_DECORATED](@ref GLFW_DECORATED_attrib), - * [GLFW_RESIZABLE](@ref GLFW_RESIZABLE_attrib), - * [GLFW_FLOATING](@ref GLFW_FLOATING_attrib), - * [GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_attrib) and - * [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_attrib). - * - * Some of these attributes are ignored for full screen windows. The new - * value will take effect if the window is later made windowed. - * - * Some of these attributes are ignored for windowed mode windows. The new - * value will take effect if the window is later made full screen. - * - * @param[in] window The window to set the attribute for. - * @param[in] attrib A supported window attribute. - * @param[in] value `GLFW_TRUE` or `GLFW_FALSE`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. - * - * @remark Calling @ref glfwGetWindowAttrib will always return the latest - * value, even if that value is ignored by the current mode of the window. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_attribs - * @sa @ref glfwGetWindowAttrib - * - * @since Added in version 3.3. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowAttrib(GLFWwindow* window, int attrib, int value); - -/*! @brief Sets the user pointer of the specified window. - * - * This function sets the user-defined pointer of the specified window. The - * current value is retained until the window is destroyed. The initial value - * is `NULL`. - * - * @param[in] window The window whose pointer to set. - * @param[in] pointer The new value. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref window_userptr - * @sa @ref glfwGetWindowUserPointer - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI void glfwSetWindowUserPointer(GLFWwindow* window, void* pointer); - -/*! @brief Returns the user pointer of the specified window. - * - * This function returns the current value of the user-defined pointer of the - * specified window. The initial value is `NULL`. - * - * @param[in] window The window whose pointer to return. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref window_userptr - * @sa @ref glfwSetWindowUserPointer - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI void* glfwGetWindowUserPointer(GLFWwindow* window); - -/*! @brief Sets the position callback for the specified window. - * - * This function sets the position callback of the specified window, which is - * called when the window is moved. The callback is provided with the - * position, in screen coordinates, of the upper-left corner of the content - * area of the window. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int xpos, int ypos) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWwindowposfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @remark @wayland This callback will never be called, as there is no way for - * an application to know its global position. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_pos - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow* window, GLFWwindowposfun callback); - -/*! @brief Sets the size callback for the specified window. - * - * This function sets the size callback of the specified window, which is - * called when the window is resized. The callback is provided with the size, - * in screen coordinates, of the content area of the window. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int width, int height) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWwindowsizefun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_size - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter and return value. - * - * @ingroup window - */ -GLFWAPI GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwindowsizefun callback); - -/*! @brief Sets the close callback for the specified window. - * - * This function sets the close callback of the specified window, which is - * called when the user attempts to close the window, for example by clicking - * the close widget in the title bar. - * - * The close flag is set before this callback is called, but you can modify it - * at any time with @ref glfwSetWindowShouldClose. - * - * The close callback is not triggered by @ref glfwDestroyWindow. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWwindowclosefun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @remark @macos Selecting Quit from the application menu will trigger the - * close callback for all windows. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_close - * - * @since Added in version 2.5. - * @glfw3 Added window handle parameter and return value. - * - * @ingroup window - */ -GLFWAPI GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwindowclosefun callback); - -/*! @brief Sets the refresh callback for the specified window. - * - * This function sets the refresh callback of the specified window, which is - * called when the content area of the window needs to be redrawn, for example - * if the window has been exposed after having been covered by another window. - * - * On compositing window systems such as Aero, Compiz, Aqua or Wayland, where - * the window contents are saved off-screen, this callback may be called only - * very infrequently or never at all. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window); - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWwindowrefreshfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_refresh - * - * @since Added in version 2.5. - * @glfw3 Added window handle parameter and return value. - * - * @ingroup window - */ -GLFWAPI GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow* window, GLFWwindowrefreshfun callback); - -/*! @brief Sets the focus callback for the specified window. - * - * This function sets the focus callback of the specified window, which is - * called when the window gains or loses input focus. - * - * After the focus callback is called for a window that lost input focus, - * synthetic key and mouse button release events will be generated for all such - * that had been pressed. For more information, see @ref glfwSetKeyCallback - * and @ref glfwSetMouseButtonCallback. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int focused) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWwindowfocusfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_focus - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* window, GLFWwindowfocusfun callback); - -/*! @brief Sets the iconify callback for the specified window. - * - * This function sets the iconification callback of the specified window, which - * is called when the window is iconified or restored. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int iconified) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWwindowiconifyfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @remark @wayland The wl_shell protocol has no concept of iconification, - * this callback will never be called when using this deprecated protocol. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_iconify - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow* window, GLFWwindowiconifyfun callback); - -/*! @brief Sets the maximize callback for the specified window. - * - * This function sets the maximization callback of the specified window, which - * is called when the window is maximized or restored. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int maximized) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWwindowmaximizefun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_maximize - * - * @since Added in version 3.3. - * - * @ingroup window - */ -GLFWAPI GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow* window, GLFWwindowmaximizefun callback); - -/*! @brief Sets the framebuffer resize callback for the specified window. - * - * This function sets the framebuffer resize callback of the specified window, - * which is called when the framebuffer of the specified window is resized. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int width, int height) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWframebuffersizefun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_fbsize - * - * @since Added in version 3.0. - * - * @ingroup window - */ -GLFWAPI GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow* window, GLFWframebuffersizefun callback); - -/*! @brief Sets the window content scale callback for the specified window. - * - * This function sets the window content scale callback of the specified window, - * which is called when the content scale of the specified window changes. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, float xscale, float yscale) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWwindowcontentscalefun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref window_scale - * @sa @ref glfwGetWindowContentScale - * - * @since Added in version 3.3. - * - * @ingroup window - */ -GLFWAPI GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow* window, GLFWwindowcontentscalefun callback); - -/*! @brief Processes all pending events. - * - * This function processes only those events that are already in the event - * queue and then returns immediately. Processing events will cause the window - * and input callbacks associated with those events to be called. - * - * On some platforms, a window move, resize or menu operation will cause event - * processing to block. This is due to how event processing is designed on - * those platforms. You can use the - * [window refresh callback](@ref window_refresh) to redraw the contents of - * your window when necessary during such operations. - * - * Do not assume that callbacks you set will _only_ be called in response to - * event processing functions like this one. While it is necessary to poll for - * events, window systems that require GLFW to register callbacks of its own - * can pass events to GLFW in response to many window system function calls. - * GLFW will pass those events on to the application callbacks before - * returning. - * - * Event processing is not required for joystick input to work. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @reentrancy This function must not be called from a callback. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref events - * @sa @ref glfwWaitEvents - * @sa @ref glfwWaitEventsTimeout - * - * @since Added in version 1.0. - * - * @ingroup window - */ -GLFWAPI void glfwPollEvents(void); - -/*! @brief Waits until events are queued and processes them. - * - * This function puts the calling thread to sleep until at least one event is - * available in the event queue. Once one or more events are available, - * it behaves exactly like @ref glfwPollEvents, i.e. the events in the queue - * are processed and the function then returns immediately. Processing events - * will cause the window and input callbacks associated with those events to be - * called. - * - * Since not all events are associated with callbacks, this function may return - * without a callback having been called even if you are monitoring all - * callbacks. - * - * On some platforms, a window move, resize or menu operation will cause event - * processing to block. This is due to how event processing is designed on - * those platforms. You can use the - * [window refresh callback](@ref window_refresh) to redraw the contents of - * your window when necessary during such operations. - * - * Do not assume that callbacks you set will _only_ be called in response to - * event processing functions like this one. While it is necessary to poll for - * events, window systems that require GLFW to register callbacks of its own - * can pass events to GLFW in response to many window system function calls. - * GLFW will pass those events on to the application callbacks before - * returning. - * - * Event processing is not required for joystick input to work. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @reentrancy This function must not be called from a callback. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref events - * @sa @ref glfwPollEvents - * @sa @ref glfwWaitEventsTimeout - * - * @since Added in version 2.5. - * - * @ingroup window - */ -GLFWAPI void glfwWaitEvents(void); - -/*! @brief Waits with timeout until events are queued and processes them. - * - * This function puts the calling thread to sleep until at least one event is - * available in the event queue, or until the specified timeout is reached. If - * one or more events are available, it behaves exactly like @ref - * glfwPollEvents, i.e. the events in the queue are processed and the function - * then returns immediately. Processing events will cause the window and input - * callbacks associated with those events to be called. - * - * The timeout value must be a positive finite number. - * - * Since not all events are associated with callbacks, this function may return - * without a callback having been called even if you are monitoring all - * callbacks. - * - * On some platforms, a window move, resize or menu operation will cause event - * processing to block. This is due to how event processing is designed on - * those platforms. You can use the - * [window refresh callback](@ref window_refresh) to redraw the contents of - * your window when necessary during such operations. - * - * Do not assume that callbacks you set will _only_ be called in response to - * event processing functions like this one. While it is necessary to poll for - * events, window systems that require GLFW to register callbacks of its own - * can pass events to GLFW in response to many window system function calls. - * GLFW will pass those events on to the application callbacks before - * returning. - * - * Event processing is not required for joystick input to work. - * - * @param[in] timeout The maximum amount of time, in seconds, to wait. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. - * - * @reentrancy This function must not be called from a callback. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref events - * @sa @ref glfwPollEvents - * @sa @ref glfwWaitEvents - * - * @since Added in version 3.2. - * - * @ingroup window - */ -GLFWAPI void glfwWaitEventsTimeout(double timeout); - -/*! @brief Posts an empty event to the event queue. - * - * This function posts an empty event from the current thread to the event - * queue, causing @ref glfwWaitEvents or @ref glfwWaitEventsTimeout to return. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref events - * @sa @ref glfwWaitEvents - * @sa @ref glfwWaitEventsTimeout - * - * @since Added in version 3.1. - * - * @ingroup window - */ -GLFWAPI void glfwPostEmptyEvent(void); - -/*! @brief Returns the value of an input option for the specified window. - * - * This function returns the value of an input option for the specified window. - * The mode must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS, - * @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or - * @ref GLFW_RAW_MOUSE_MOTION. - * - * @param[in] window The window to query. - * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`, - * `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or - * `GLFW_RAW_MOUSE_MOTION`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref glfwSetInputMode - * - * @since Added in version 3.0. - * - * @ingroup input - */ -GLFWAPI int glfwGetInputMode(GLFWwindow* window, int mode); - -/*! @brief Sets an input option for the specified window. - * - * This function sets an input mode option for the specified window. The mode - * must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS, - * @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or - * @ref GLFW_RAW_MOUSE_MOTION. - * - * If the mode is `GLFW_CURSOR`, the value must be one of the following cursor - * modes: - * - `GLFW_CURSOR_NORMAL` makes the cursor visible and behaving normally. - * - `GLFW_CURSOR_HIDDEN` makes the cursor invisible when it is over the - * content area of the window but does not restrict the cursor from leaving. - * - `GLFW_CURSOR_DISABLED` hides and grabs the cursor, providing virtual - * and unlimited cursor movement. This is useful for implementing for - * example 3D camera controls. - * - * If the mode is `GLFW_STICKY_KEYS`, the value must be either `GLFW_TRUE` to - * enable sticky keys, or `GLFW_FALSE` to disable it. If sticky keys are - * enabled, a key press will ensure that @ref glfwGetKey returns `GLFW_PRESS` - * the next time it is called even if the key had been released before the - * call. This is useful when you are only interested in whether keys have been - * pressed but not when or in which order. - * - * If the mode is `GLFW_STICKY_MOUSE_BUTTONS`, the value must be either - * `GLFW_TRUE` to enable sticky mouse buttons, or `GLFW_FALSE` to disable it. - * If sticky mouse buttons are enabled, a mouse button press will ensure that - * @ref glfwGetMouseButton returns `GLFW_PRESS` the next time it is called even - * if the mouse button had been released before the call. This is useful when - * you are only interested in whether mouse buttons have been pressed but not - * when or in which order. - * - * If the mode is `GLFW_LOCK_KEY_MODS`, the value must be either `GLFW_TRUE` to - * enable lock key modifier bits, or `GLFW_FALSE` to disable them. If enabled, - * callbacks that receive modifier bits will also have the @ref - * GLFW_MOD_CAPS_LOCK bit set when the event was generated with Caps Lock on, - * and the @ref GLFW_MOD_NUM_LOCK bit when Num Lock was on. - * - * If the mode is `GLFW_RAW_MOUSE_MOTION`, the value must be either `GLFW_TRUE` - * to enable raw (unscaled and unaccelerated) mouse motion when the cursor is - * disabled, or `GLFW_FALSE` to disable it. If raw motion is not supported, - * attempting to set this will emit @ref GLFW_PLATFORM_ERROR. Call @ref - * glfwRawMouseMotionSupported to check for support. - * - * @param[in] window The window whose input mode to set. - * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`, - * `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or - * `GLFW_RAW_MOUSE_MOTION`. - * @param[in] value The new value of the specified input mode. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref glfwGetInputMode - * - * @since Added in version 3.0. Replaces `glfwEnable` and `glfwDisable`. - * - * @ingroup input - */ -GLFWAPI void glfwSetInputMode(GLFWwindow* window, int mode, int value); - -/*! @brief Returns whether raw mouse motion is supported. - * - * This function returns whether raw mouse motion is supported on the current - * system. This status does not change after GLFW has been initialized so you - * only need to check this once. If you attempt to enable raw motion on - * a system that does not support it, @ref GLFW_PLATFORM_ERROR will be emitted. - * - * Raw mouse motion is closer to the actual motion of the mouse across - * a surface. It is not affected by the scaling and acceleration applied to - * the motion of the desktop cursor. That processing is suitable for a cursor - * while raw motion is better for controlling for example a 3D camera. Because - * of this, raw mouse motion is only provided when the cursor is disabled. - * - * @return `GLFW_TRUE` if raw mouse motion is supported on the current machine, - * or `GLFW_FALSE` otherwise. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref raw_mouse_motion - * @sa @ref glfwSetInputMode - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI int glfwRawMouseMotionSupported(void); - -/*! @brief Returns the layout-specific name of the specified printable key. - * - * This function returns the name of the specified printable key, encoded as - * UTF-8. This is typically the character that key would produce without any - * modifier keys, intended for displaying key bindings to the user. For dead - * keys, it is typically the diacritic it would add to a character. - * - * __Do not use this function__ for [text input](@ref input_char). You will - * break text input for many languages even if it happens to work for yours. - * - * If the key is `GLFW_KEY_UNKNOWN`, the scancode is used to identify the key, - * otherwise the scancode is ignored. If you specify a non-printable key, or - * `GLFW_KEY_UNKNOWN` and a scancode that maps to a non-printable key, this - * function returns `NULL` but does not emit an error. - * - * This behavior allows you to always pass in the arguments in the - * [key callback](@ref input_key) without modification. - * - * The printable keys are: - * - `GLFW_KEY_APOSTROPHE` - * - `GLFW_KEY_COMMA` - * - `GLFW_KEY_MINUS` - * - `GLFW_KEY_PERIOD` - * - `GLFW_KEY_SLASH` - * - `GLFW_KEY_SEMICOLON` - * - `GLFW_KEY_EQUAL` - * - `GLFW_KEY_LEFT_BRACKET` - * - `GLFW_KEY_RIGHT_BRACKET` - * - `GLFW_KEY_BACKSLASH` - * - `GLFW_KEY_WORLD_1` - * - `GLFW_KEY_WORLD_2` - * - `GLFW_KEY_0` to `GLFW_KEY_9` - * - `GLFW_KEY_A` to `GLFW_KEY_Z` - * - `GLFW_KEY_KP_0` to `GLFW_KEY_KP_9` - * - `GLFW_KEY_KP_DECIMAL` - * - `GLFW_KEY_KP_DIVIDE` - * - `GLFW_KEY_KP_MULTIPLY` - * - `GLFW_KEY_KP_SUBTRACT` - * - `GLFW_KEY_KP_ADD` - * - `GLFW_KEY_KP_EQUAL` - * - * Names for printable keys depend on keyboard layout, while names for - * non-printable keys are the same across layouts but depend on the application - * language and should be localized along with other user interface text. - * - * @param[in] key The key to query, or `GLFW_KEY_UNKNOWN`. - * @param[in] scancode The scancode of the key to query. - * @return The UTF-8 encoded, layout-specific name of the key, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark The contents of the returned string may change when a keyboard - * layout change event is received. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_key_name - * - * @since Added in version 3.2. - * - * @ingroup input - */ -GLFWAPI const char* glfwGetKeyName(int key, int scancode); - -/*! @brief Returns the platform-specific scancode of the specified key. - * - * This function returns the platform-specific scancode of the specified key. - * - * If the key is `GLFW_KEY_UNKNOWN` or does not exist on the keyboard this - * method will return `-1`. - * - * @param[in] key Any [named key](@ref keys). - * @return The platform-specific scancode for the key, or `-1` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref input_key - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI int glfwGetKeyScancode(int key); - -/*! @brief Returns the last reported state of a keyboard key for the specified - * window. - * - * This function returns the last state reported for the specified key to the - * specified window. The returned state is one of `GLFW_PRESS` or - * `GLFW_RELEASE`. The higher-level action `GLFW_REPEAT` is only reported to - * the key callback. - * - * If the @ref GLFW_STICKY_KEYS input mode is enabled, this function returns - * `GLFW_PRESS` the first time you call it for a key that was pressed, even if - * that key has already been released. - * - * The key functions deal with physical keys, with [key tokens](@ref keys) - * named after their use on the standard US keyboard layout. If you want to - * input text, use the Unicode character callback instead. - * - * The [modifier key bit masks](@ref mods) are not key tokens and cannot be - * used with this function. - * - * __Do not use this function__ to implement [text input](@ref input_char). - * - * @param[in] window The desired window. - * @param[in] key The desired [keyboard key](@ref keys). `GLFW_KEY_UNKNOWN` is - * not a valid key for this function. - * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_key - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup input - */ -GLFWAPI int glfwGetKey(GLFWwindow* window, int key); - -/*! @brief Returns the last reported state of a mouse button for the specified - * window. - * - * This function returns the last state reported for the specified mouse button - * to the specified window. The returned state is one of `GLFW_PRESS` or - * `GLFW_RELEASE`. - * - * If the @ref GLFW_STICKY_MOUSE_BUTTONS input mode is enabled, this function - * returns `GLFW_PRESS` the first time you call it for a mouse button that was - * pressed, even if that mouse button has already been released. - * - * @param[in] window The desired window. - * @param[in] button The desired [mouse button](@ref buttons). - * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_mouse_button - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup input - */ -GLFWAPI int glfwGetMouseButton(GLFWwindow* window, int button); - -/*! @brief Retrieves the position of the cursor relative to the content area of - * the window. - * - * This function returns the position of the cursor, in screen coordinates, - * relative to the upper-left corner of the content area of the specified - * window. - * - * If the cursor is disabled (with `GLFW_CURSOR_DISABLED`) then the cursor - * position is unbounded and limited only by the minimum and maximum values of - * a `double`. - * - * The coordinate can be converted to their integer equivalents with the - * `floor` function. Casting directly to an integer type works for positive - * coordinates, but fails for negative ones. - * - * Any or all of the position arguments may be `NULL`. If an error occurs, all - * non-`NULL` position arguments will be set to zero. - * - * @param[in] window The desired window. - * @param[out] xpos Where to store the cursor x-coordinate, relative to the - * left edge of the content area, or `NULL`. - * @param[out] ypos Where to store the cursor y-coordinate, relative to the to - * top edge of the content area, or `NULL`. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_pos - * @sa @ref glfwSetCursorPos - * - * @since Added in version 3.0. Replaces `glfwGetMousePos`. - * - * @ingroup input - */ -GLFWAPI void glfwGetCursorPos(GLFWwindow* window, double* xpos, double* ypos); - -/*! @brief Sets the position of the cursor, relative to the content area of the - * window. - * - * This function sets the position, in screen coordinates, of the cursor - * relative to the upper-left corner of the content area of the specified - * window. The window must have input focus. If the window does not have - * input focus when this function is called, it fails silently. - * - * __Do not use this function__ to implement things like camera controls. GLFW - * already provides the `GLFW_CURSOR_DISABLED` cursor mode that hides the - * cursor, transparently re-centers it and provides unconstrained cursor - * motion. See @ref glfwSetInputMode for more information. - * - * If the cursor mode is `GLFW_CURSOR_DISABLED` then the cursor position is - * unconstrained and limited only by the minimum and maximum values of - * a `double`. - * - * @param[in] window The desired window. - * @param[in] xpos The desired x-coordinate, relative to the left edge of the - * content area. - * @param[in] ypos The desired y-coordinate, relative to the top edge of the - * content area. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @wayland This function will only work when the cursor mode is - * `GLFW_CURSOR_DISABLED`, otherwise it will do nothing. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_pos - * @sa @ref glfwGetCursorPos - * - * @since Added in version 3.0. Replaces `glfwSetMousePos`. - * - * @ingroup input - */ -GLFWAPI void glfwSetCursorPos(GLFWwindow* window, double xpos, double ypos); - -/*! @brief Creates a custom cursor. - * - * Creates a new custom cursor image that can be set for a window with @ref - * glfwSetCursor. The cursor can be destroyed with @ref glfwDestroyCursor. - * Any remaining cursors are destroyed by @ref glfwTerminate. - * - * The pixels are 32-bit, little-endian, non-premultiplied RGBA, i.e. eight - * bits per channel with the red channel first. They are arranged canonically - * as packed sequential rows, starting from the top-left corner. - * - * The cursor hotspot is specified in pixels, relative to the upper-left corner - * of the cursor image. Like all other coordinate systems in GLFW, the X-axis - * points to the right and the Y-axis points down. - * - * @param[in] image The desired cursor image. - * @param[in] xhot The desired x-coordinate, in pixels, of the cursor hotspot. - * @param[in] yhot The desired y-coordinate, in pixels, of the cursor hotspot. - * @return The handle of the created cursor, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The specified image data is copied before this function - * returns. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_object - * @sa @ref glfwDestroyCursor - * @sa @ref glfwCreateStandardCursor - * - * @since Added in version 3.1. - * - * @ingroup input - */ -GLFWAPI GLFWcursor* glfwCreateCursor(const GLFWimage* image, int xhot, int yhot); - -/*! @brief Creates a cursor with a standard shape. - * - * Returns a cursor with a [standard shape](@ref shapes), that can be set for - * a window with @ref glfwSetCursor. - * - * @param[in] shape One of the [standard shapes](@ref shapes). - * @return A new cursor ready to use or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_object - * @sa @ref glfwCreateCursor - * - * @since Added in version 3.1. - * - * @ingroup input - */ -GLFWAPI GLFWcursor* glfwCreateStandardCursor(int shape); - -/*! @brief Destroys a cursor. - * - * This function destroys a cursor previously created with @ref - * glfwCreateCursor. Any remaining cursors will be destroyed by @ref - * glfwTerminate. - * - * If the specified cursor is current for any window, that window will be - * reverted to the default cursor. This does not affect the cursor mode. - * - * @param[in] cursor The cursor object to destroy. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @reentrancy This function must not be called from a callback. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_object - * @sa @ref glfwCreateCursor - * - * @since Added in version 3.1. - * - * @ingroup input - */ -GLFWAPI void glfwDestroyCursor(GLFWcursor* cursor); - -/*! @brief Sets the cursor for the window. - * - * This function sets the cursor image to be used when the cursor is over the - * content area of the specified window. The set cursor will only be visible - * when the [cursor mode](@ref cursor_mode) of the window is - * `GLFW_CURSOR_NORMAL`. - * - * On some platforms, the set cursor may not be visible unless the window also - * has input focus. - * - * @param[in] window The window to set the cursor for. - * @param[in] cursor The cursor to set, or `NULL` to switch back to the default - * arrow cursor. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_object - * - * @since Added in version 3.1. - * - * @ingroup input - */ -GLFWAPI void glfwSetCursor(GLFWwindow* window, GLFWcursor* cursor); - -/*! @brief Sets the key callback. - * - * This function sets the key callback of the specified window, which is called - * when a key is pressed, repeated or released. - * - * The key functions deal with physical keys, with layout independent - * [key tokens](@ref keys) named after their values in the standard US keyboard - * layout. If you want to input text, use the - * [character callback](@ref glfwSetCharCallback) instead. - * - * When a window loses input focus, it will generate synthetic key release - * events for all pressed keys. You can tell these events from user-generated - * events by the fact that the synthetic ones are generated after the focus - * loss event has been processed, i.e. after the - * [window focus callback](@ref glfwSetWindowFocusCallback) has been called. - * - * The scancode of a key is specific to that platform or sometimes even to that - * machine. Scancodes are intended to allow users to bind keys that don't have - * a GLFW key token. Such keys have `key` set to `GLFW_KEY_UNKNOWN`, their - * state is not saved and so it cannot be queried with @ref glfwGetKey. - * - * Sometimes GLFW needs to generate synthetic key events, in which case the - * scancode may be zero. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new key callback, or `NULL` to remove the currently - * set callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int key, int scancode, int action, int mods) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWkeyfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_key - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter and return value. - * - * @ingroup input - */ -GLFWAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun callback); - -/*! @brief Sets the Unicode character callback. - * - * This function sets the character callback of the specified window, which is - * called when a Unicode character is input. - * - * The character callback is intended for Unicode text input. As it deals with - * characters, it is keyboard layout dependent, whereas the - * [key callback](@ref glfwSetKeyCallback) is not. Characters do not map 1:1 - * to physical keys, as a key may produce zero, one or more characters. If you - * want to know whether a specific physical key was pressed or released, see - * the key callback instead. - * - * The character callback behaves as system text input normally does and will - * not be called if modifier keys are held down that would prevent normal text - * input on that platform, for example a Super (Command) key on macOS or Alt key - * on Windows. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, unsigned int codepoint) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWcharfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_char - * - * @since Added in version 2.4. - * @glfw3 Added window handle parameter and return value. - * - * @ingroup input - */ -GLFWAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun callback); - -/*! @brief Sets the Unicode character with modifiers callback. - * - * This function sets the character with modifiers callback of the specified - * window, which is called when a Unicode character is input regardless of what - * modifier keys are used. - * - * The character with modifiers callback is intended for implementing custom - * Unicode character input. For regular Unicode text input, see the - * [character callback](@ref glfwSetCharCallback). Like the character - * callback, the character with modifiers callback deals with characters and is - * keyboard layout dependent. Characters do not map 1:1 to physical keys, as - * a key may produce zero, one or more characters. If you want to know whether - * a specific physical key was pressed or released, see the - * [key callback](@ref glfwSetKeyCallback) instead. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or an - * [error](@ref error_handling) occurred. - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, unsigned int codepoint, int mods) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWcharmodsfun). - * - * @deprecated Scheduled for removal in version 4.0. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_char - * - * @since Added in version 3.1. - * - * @ingroup input - */ -GLFWAPI GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow* window, GLFWcharmodsfun callback); - -/*! @brief Sets the mouse button callback. - * - * This function sets the mouse button callback of the specified window, which - * is called when a mouse button is pressed or released. - * - * When a window loses input focus, it will generate synthetic mouse button - * release events for all pressed mouse buttons. You can tell these events - * from user-generated events by the fact that the synthetic ones are generated - * after the focus loss event has been processed, i.e. after the - * [window focus callback](@ref glfwSetWindowFocusCallback) has been called. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int button, int action, int mods) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWmousebuttonfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref input_mouse_button - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter and return value. - * - * @ingroup input - */ -GLFWAPI GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow* window, GLFWmousebuttonfun callback); - -/*! @brief Sets the cursor position callback. - * - * This function sets the cursor position callback of the specified window, - * which is called when the cursor is moved. The callback is provided with the - * position, in screen coordinates, relative to the upper-left corner of the - * content area of the window. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, double xpos, double ypos); - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWcursorposfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_pos - * - * @since Added in version 3.0. Replaces `glfwSetMousePosCallback`. - * - * @ingroup input - */ -GLFWAPI GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow* window, GLFWcursorposfun callback); - -/*! @brief Sets the cursor enter/leave callback. - * - * This function sets the cursor boundary crossing callback of the specified - * window, which is called when the cursor enters or leaves the content area of - * the window. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int entered) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWcursorenterfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref cursor_enter - * - * @since Added in version 3.0. - * - * @ingroup input - */ -GLFWAPI GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* window, GLFWcursorenterfun callback); - -/*! @brief Sets the scroll callback. - * - * This function sets the scroll callback of the specified window, which is - * called when a scrolling device is used, such as a mouse wheel or scrolling - * area of a touchpad. - * - * The scroll callback receives all scrolling input, like that from a mouse - * wheel or a touchpad scrolling area. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new scroll callback, or `NULL` to remove the - * currently set callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, double xoffset, double yoffset) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWscrollfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref scrolling - * - * @since Added in version 3.0. Replaces `glfwSetMouseWheelCallback`. - * - * @ingroup input - */ -GLFWAPI GLFWscrollfun glfwSetScrollCallback(GLFWwindow* window, GLFWscrollfun callback); - -/*! @brief Sets the path drop callback. - * - * This function sets the path drop callback of the specified window, which is - * called when one or more dragged paths are dropped on the window. - * - * Because the path array and its strings may have been generated specifically - * for that event, they are not guaranteed to be valid after the callback has - * returned. If you wish to use them after the callback returns, you need to - * make a deep copy. - * - * @param[in] window The window whose callback to set. - * @param[in] callback The new file drop callback, or `NULL` to remove the - * currently set callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(GLFWwindow* window, int path_count, const char* paths[]) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWdropfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @remark @wayland File drop is currently unimplemented. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref path_drop - * - * @since Added in version 3.1. - * - * @ingroup input - */ -GLFWAPI GLFWdropfun glfwSetDropCallback(GLFWwindow* window, GLFWdropfun callback); - -/*! @brief Returns whether the specified joystick is present. - * - * This function returns whether the specified joystick is present. - * - * There is no need to call this function before other functions that accept - * a joystick ID, as they all check for presence before performing any other - * work. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @return `GLFW_TRUE` if the joystick is present, or `GLFW_FALSE` otherwise. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref joystick - * - * @since Added in version 3.0. Replaces `glfwGetJoystickParam`. - * - * @ingroup input - */ -GLFWAPI int glfwJoystickPresent(int jid); - -/*! @brief Returns the values of all axes of the specified joystick. - * - * This function returns the values of all axes of the specified joystick. - * Each element in the array is a value between -1.0 and 1.0. - * - * If the specified joystick is not present this function will return `NULL` - * but will not generate an error. This can be used instead of first calling - * @ref glfwJoystickPresent. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @param[out] count Where to store the number of axis values in the returned - * array. This is set to zero if the joystick is not present or an error - * occurred. - * @return An array of axis values, or `NULL` if the joystick is not present or - * an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified joystick is - * disconnected or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref joystick_axis - * - * @since Added in version 3.0. Replaces `glfwGetJoystickPos`. - * - * @ingroup input - */ -GLFWAPI const float* glfwGetJoystickAxes(int jid, int* count); - -/*! @brief Returns the state of all buttons of the specified joystick. - * - * This function returns the state of all buttons of the specified joystick. - * Each element in the array is either `GLFW_PRESS` or `GLFW_RELEASE`. - * - * For backward compatibility with earlier versions that did not have @ref - * glfwGetJoystickHats, the button array also includes all hats, each - * represented as four buttons. The hats are in the same order as returned by - * __glfwGetJoystickHats__ and are in the order _up_, _right_, _down_ and - * _left_. To disable these extra buttons, set the @ref - * GLFW_JOYSTICK_HAT_BUTTONS init hint before initialization. - * - * If the specified joystick is not present this function will return `NULL` - * but will not generate an error. This can be used instead of first calling - * @ref glfwJoystickPresent. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @param[out] count Where to store the number of button states in the returned - * array. This is set to zero if the joystick is not present or an error - * occurred. - * @return An array of button states, or `NULL` if the joystick is not present - * or an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified joystick is - * disconnected or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref joystick_button - * - * @since Added in version 2.2. - * @glfw3 Changed to return a dynamic array. - * - * @ingroup input - */ -GLFWAPI const unsigned char* glfwGetJoystickButtons(int jid, int* count); - -/*! @brief Returns the state of all hats of the specified joystick. - * - * This function returns the state of all hats of the specified joystick. - * Each element in the array is one of the following values: - * - * Name | Value - * ---- | ----- - * `GLFW_HAT_CENTERED` | 0 - * `GLFW_HAT_UP` | 1 - * `GLFW_HAT_RIGHT` | 2 - * `GLFW_HAT_DOWN` | 4 - * `GLFW_HAT_LEFT` | 8 - * `GLFW_HAT_RIGHT_UP` | `GLFW_HAT_RIGHT` \| `GLFW_HAT_UP` - * `GLFW_HAT_RIGHT_DOWN` | `GLFW_HAT_RIGHT` \| `GLFW_HAT_DOWN` - * `GLFW_HAT_LEFT_UP` | `GLFW_HAT_LEFT` \| `GLFW_HAT_UP` - * `GLFW_HAT_LEFT_DOWN` | `GLFW_HAT_LEFT` \| `GLFW_HAT_DOWN` - * - * The diagonal directions are bitwise combinations of the primary (up, right, - * down and left) directions and you can test for these individually by ANDing - * it with the corresponding direction. - * - * @code - * if (hats[2] & GLFW_HAT_RIGHT) - * { - * // State of hat 2 could be right-up, right or right-down - * } - * @endcode - * - * If the specified joystick is not present this function will return `NULL` - * but will not generate an error. This can be used instead of first calling - * @ref glfwJoystickPresent. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @param[out] count Where to store the number of hat states in the returned - * array. This is set to zero if the joystick is not present or an error - * occurred. - * @return An array of hat states, or `NULL` if the joystick is not present - * or an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified joystick is - * disconnected, this function is called again for that joystick or the library - * is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref joystick_hat - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI const unsigned char* glfwGetJoystickHats(int jid, int* count); - -/*! @brief Returns the name of the specified joystick. - * - * This function returns the name, encoded as UTF-8, of the specified joystick. - * The returned string is allocated and freed by GLFW. You should not free it - * yourself. - * - * If the specified joystick is not present this function will return `NULL` - * but will not generate an error. This can be used instead of first calling - * @ref glfwJoystickPresent. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @return The UTF-8 encoded name of the joystick, or `NULL` if the joystick - * is not present or an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified joystick is - * disconnected or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref joystick_name - * - * @since Added in version 3.0. - * - * @ingroup input - */ -GLFWAPI const char* glfwGetJoystickName(int jid); - -/*! @brief Returns the SDL compatible GUID of the specified joystick. - * - * This function returns the SDL compatible GUID, as a UTF-8 encoded - * hexadecimal string, of the specified joystick. The returned string is - * allocated and freed by GLFW. You should not free it yourself. - * - * The GUID is what connects a joystick to a gamepad mapping. A connected - * joystick will always have a GUID even if there is no gamepad mapping - * assigned to it. - * - * If the specified joystick is not present this function will return `NULL` - * but will not generate an error. This can be used instead of first calling - * @ref glfwJoystickPresent. - * - * The GUID uses the format introduced in SDL 2.0.5. This GUID tries to - * uniquely identify the make and model of a joystick but does not identify - * a specific unit, e.g. all wired Xbox 360 controllers will have the same - * GUID on that platform. The GUID for a unit may vary between platforms - * depending on what hardware information the platform specific APIs provide. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @return The UTF-8 encoded GUID of the joystick, or `NULL` if the joystick - * is not present or an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified joystick is - * disconnected or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref gamepad - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI const char* glfwGetJoystickGUID(int jid); - -/*! @brief Sets the user pointer of the specified joystick. - * - * This function sets the user-defined pointer of the specified joystick. The - * current value is retained until the joystick is disconnected. The initial - * value is `NULL`. - * - * This function may be called from the joystick callback, even for a joystick - * that is being disconnected. - * - * @param[in] jid The joystick whose pointer to set. - * @param[in] pointer The new value. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref joystick_userptr - * @sa @ref glfwGetJoystickUserPointer - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI void glfwSetJoystickUserPointer(int jid, void* pointer); - -/*! @brief Returns the user pointer of the specified joystick. - * - * This function returns the current value of the user-defined pointer of the - * specified joystick. The initial value is `NULL`. - * - * This function may be called from the joystick callback, even for a joystick - * that is being disconnected. - * - * @param[in] jid The joystick whose pointer to return. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @sa @ref joystick_userptr - * @sa @ref glfwSetJoystickUserPointer - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI void* glfwGetJoystickUserPointer(int jid); - -/*! @brief Returns whether the specified joystick has a gamepad mapping. - * - * This function returns whether the specified joystick is both present and has - * a gamepad mapping. - * - * If the specified joystick is present but does not have a gamepad mapping - * this function will return `GLFW_FALSE` but will not generate an error. Call - * @ref glfwJoystickPresent to check if a joystick is present regardless of - * whether it has a mapping. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @return `GLFW_TRUE` if a joystick is both present and has a gamepad mapping, - * or `GLFW_FALSE` otherwise. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref gamepad - * @sa @ref glfwGetGamepadState - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI int glfwJoystickIsGamepad(int jid); - -/*! @brief Sets the joystick configuration callback. - * - * This function sets the joystick configuration callback, or removes the - * currently set callback. This is called when a joystick is connected to or - * disconnected from the system. - * - * For joystick connection and disconnection events to be delivered on all - * platforms, you need to call one of the [event processing](@ref events) - * functions. Joystick disconnection may also be detected and the callback - * called by joystick functions. The function will then return whatever it - * returns if the joystick is not present. - * - * @param[in] callback The new callback, or `NULL` to remove the currently set - * callback. - * @return The previously set callback, or `NULL` if no callback was set or the - * library had not been [initialized](@ref intro_init). - * - * @callback_signature - * @code - * void function_name(int jid, int event) - * @endcode - * For more information about the callback parameters, see the - * [function pointer type](@ref GLFWjoystickfun). - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref joystick_event - * - * @since Added in version 3.2. - * - * @ingroup input - */ -GLFWAPI GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun callback); - -/*! @brief Adds the specified SDL_GameControllerDB gamepad mappings. - * - * This function parses the specified ASCII encoded string and updates the - * internal list with any gamepad mappings it finds. This string may - * contain either a single gamepad mapping or many mappings separated by - * newlines. The parser supports the full format of the `gamecontrollerdb.txt` - * source file including empty lines and comments. - * - * See @ref gamepad_mapping for a description of the format. - * - * If there is already a gamepad mapping for a given GUID in the internal list, - * it will be replaced by the one passed to this function. If the library is - * terminated and re-initialized the internal list will revert to the built-in - * default. - * - * @param[in] string The string containing the gamepad mappings. - * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_VALUE. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref gamepad - * @sa @ref glfwJoystickIsGamepad - * @sa @ref glfwGetGamepadName - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI int glfwUpdateGamepadMappings(const char* string); - -/*! @brief Returns the human-readable gamepad name for the specified joystick. - * - * This function returns the human-readable name of the gamepad from the - * gamepad mapping assigned to the specified joystick. - * - * If the specified joystick is not present or does not have a gamepad mapping - * this function will return `NULL` but will not generate an error. Call - * @ref glfwJoystickPresent to check whether it is present regardless of - * whether it has a mapping. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @return The UTF-8 encoded name of the gamepad, or `NULL` if the - * joystick is not present, does not have a mapping or an - * [error](@ref error_handling) occurred. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified joystick is - * disconnected, the gamepad mappings are updated or the library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref gamepad - * @sa @ref glfwJoystickIsGamepad - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI const char* glfwGetGamepadName(int jid); - -/*! @brief Retrieves the state of the specified joystick remapped as a gamepad. - * - * This function retrieves the state of the specified joystick remapped to - * an Xbox-like gamepad. - * - * If the specified joystick is not present or does not have a gamepad mapping - * this function will return `GLFW_FALSE` but will not generate an error. Call - * @ref glfwJoystickPresent to check whether it is present regardless of - * whether it has a mapping. - * - * The Guide button may not be available for input as it is often hooked by the - * system or the Steam client. - * - * Not all devices have all the buttons or axes provided by @ref - * GLFWgamepadstate. Unavailable buttons and axes will always report - * `GLFW_RELEASE` and 0.0 respectively. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @param[out] state The gamepad input state of the joystick. - * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if no joystick is - * connected, it has no gamepad mapping or an [error](@ref error_handling) - * occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_ENUM. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref gamepad - * @sa @ref glfwUpdateGamepadMappings - * @sa @ref glfwJoystickIsGamepad - * - * @since Added in version 3.3. - * - * @ingroup input - */ -GLFWAPI int glfwGetGamepadState(int jid, GLFWgamepadstate* state); - -/*! @brief Sets the clipboard to the specified string. - * - * This function sets the system clipboard to the specified, UTF-8 encoded - * string. - * - * @param[in] window Deprecated. Any valid window or `NULL`. - * @param[in] string A UTF-8 encoded string. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The specified string is copied before this function - * returns. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref clipboard - * @sa @ref glfwGetClipboardString - * - * @since Added in version 3.0. - * - * @ingroup input - */ -GLFWAPI void glfwSetClipboardString(GLFWwindow* window, const char* string); - -/*! @brief Returns the contents of the clipboard as a string. - * - * This function returns the contents of the system clipboard, if it contains - * or is convertible to a UTF-8 encoded string. If the clipboard is empty or - * if its contents cannot be converted, `NULL` is returned and a @ref - * GLFW_FORMAT_UNAVAILABLE error is generated. - * - * @param[in] window Deprecated. Any valid window or `NULL`. - * @return The contents of the clipboard as a UTF-8 encoded string, or `NULL` - * if an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the next call to @ref - * glfwGetClipboardString or @ref glfwSetClipboardString, or until the library - * is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref clipboard - * @sa @ref glfwSetClipboardString - * - * @since Added in version 3.0. - * - * @ingroup input - */ -GLFWAPI const char* glfwGetClipboardString(GLFWwindow* window); - -/*! @brief Returns the GLFW time. - * - * This function returns the current GLFW time, in seconds. Unless the time - * has been set using @ref glfwSetTime it measures time elapsed since GLFW was - * initialized. - * - * This function and @ref glfwSetTime are helper functions on top of @ref - * glfwGetTimerFrequency and @ref glfwGetTimerValue. - * - * The resolution of the timer is system dependent, but is usually on the order - * of a few micro- or nanoseconds. It uses the highest-resolution monotonic - * time source on each supported platform. - * - * @return The current time, in seconds, or zero if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. Reading and - * writing of the internal base time is not atomic, so it needs to be - * externally synchronized with calls to @ref glfwSetTime. - * - * @sa @ref time - * - * @since Added in version 1.0. - * - * @ingroup input - */ -GLFWAPI double glfwGetTime(void); - -/*! @brief Sets the GLFW time. - * - * This function sets the current GLFW time, in seconds. The value must be - * a positive finite number less than or equal to 18446744073.0, which is - * approximately 584.5 years. - * - * This function and @ref glfwGetTime are helper functions on top of @ref - * glfwGetTimerFrequency and @ref glfwGetTimerValue. - * - * @param[in] time The new value, in seconds. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_INVALID_VALUE. - * - * @remark The upper limit of GLFW time is calculated as - * floor((264 - 1) / 109) and is due to implementations - * storing nanoseconds in 64 bits. The limit may be increased in the future. - * - * @thread_safety This function may be called from any thread. Reading and - * writing of the internal base time is not atomic, so it needs to be - * externally synchronized with calls to @ref glfwGetTime. - * - * @sa @ref time - * - * @since Added in version 2.2. - * - * @ingroup input - */ -GLFWAPI void glfwSetTime(double time); - -/*! @brief Returns the current value of the raw timer. - * - * This function returns the current value of the raw timer, measured in - * 1 / frequency seconds. To get the frequency, call @ref - * glfwGetTimerFrequency. - * - * @return The value of the timer, or zero if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref time - * @sa @ref glfwGetTimerFrequency - * - * @since Added in version 3.2. - * - * @ingroup input - */ -GLFWAPI uint64_t glfwGetTimerValue(void); - -/*! @brief Returns the frequency, in Hz, of the raw timer. - * - * This function returns the frequency, in Hz, of the raw timer. - * - * @return The frequency of the timer, in Hz, or zero if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref time - * @sa @ref glfwGetTimerValue - * - * @since Added in version 3.2. - * - * @ingroup input - */ -GLFWAPI uint64_t glfwGetTimerFrequency(void); - -/*! @brief Makes the context of the specified window current for the calling - * thread. - * - * This function makes the OpenGL or OpenGL ES context of the specified window - * current on the calling thread. A context must only be made current on - * a single thread at a time and each thread can have only a single current - * context at a time. - * - * When moving a context between threads, you must make it non-current on the - * old thread before making it current on the new one. - * - * By default, making a context non-current implicitly forces a pipeline flush. - * On machines that support `GL_KHR_context_flush_control`, you can control - * whether a context performs this flush by setting the - * [GLFW_CONTEXT_RELEASE_BEHAVIOR](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint) - * hint. - * - * The specified window must have an OpenGL or OpenGL ES context. Specifying - * a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT - * error. - * - * @param[in] window The window whose context to make current, or `NULL` to - * detach the current context. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref context_current - * @sa @ref glfwGetCurrentContext - * - * @since Added in version 3.0. - * - * @ingroup context - */ -GLFWAPI void glfwMakeContextCurrent(GLFWwindow* window); - -/*! @brief Returns the window whose context is current on the calling thread. - * - * This function returns the window whose OpenGL or OpenGL ES context is - * current on the calling thread. - * - * @return The window whose context is current, or `NULL` if no window's - * context is current. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref context_current - * @sa @ref glfwMakeContextCurrent - * - * @since Added in version 3.0. - * - * @ingroup context - */ -GLFWAPI GLFWwindow* glfwGetCurrentContext(void); - -/*! @brief Swaps the front and back buffers of the specified window. - * - * This function swaps the front and back buffers of the specified window when - * rendering with OpenGL or OpenGL ES. If the swap interval is greater than - * zero, the GPU driver waits the specified number of screen updates before - * swapping the buffers. - * - * The specified window must have an OpenGL or OpenGL ES context. Specifying - * a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT - * error. - * - * This function does not apply to Vulkan. If you are rendering with Vulkan, - * see `vkQueuePresentKHR` instead. - * - * @param[in] window The window whose buffers to swap. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR. - * - * @remark __EGL:__ The context of the specified window must be current on the - * calling thread. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref buffer_swap - * @sa @ref glfwSwapInterval - * - * @since Added in version 1.0. - * @glfw3 Added window handle parameter. - * - * @ingroup window - */ -GLFWAPI void glfwSwapBuffers(GLFWwindow* window); - -/*! @brief Sets the swap interval for the current context. - * - * This function sets the swap interval for the current OpenGL or OpenGL ES - * context, i.e. the number of screen updates to wait from the time @ref - * glfwSwapBuffers was called before swapping the buffers and returning. This - * is sometimes called _vertical synchronization_, _vertical retrace - * synchronization_ or just _vsync_. - * - * A context that supports either of the `WGL_EXT_swap_control_tear` and - * `GLX_EXT_swap_control_tear` extensions also accepts _negative_ swap - * intervals, which allows the driver to swap immediately even if a frame - * arrives a little bit late. You can check for these extensions with @ref - * glfwExtensionSupported. - * - * A context must be current on the calling thread. Calling this function - * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. - * - * This function does not apply to Vulkan. If you are rendering with Vulkan, - * see the present mode of your swapchain instead. - * - * @param[in] interval The minimum number of screen updates to wait for - * until the buffers are swapped by @ref glfwSwapBuffers. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR. - * - * @remark This function is not called during context creation, leaving the - * swap interval set to whatever is the default on that platform. This is done - * because some swap interval extensions used by GLFW do not allow the swap - * interval to be reset to zero once it has been set to a non-zero value. - * - * @remark Some GPU drivers do not honor the requested swap interval, either - * because of a user setting that overrides the application's request or due to - * bugs in the driver. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref buffer_swap - * @sa @ref glfwSwapBuffers - * - * @since Added in version 1.0. - * - * @ingroup context - */ -GLFWAPI void glfwSwapInterval(int interval); - -/*! @brief Returns whether the specified extension is available. - * - * This function returns whether the specified - * [API extension](@ref context_glext) is supported by the current OpenGL or - * OpenGL ES context. It searches both for client API extension and context - * creation API extensions. - * - * A context must be current on the calling thread. Calling this function - * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. - * - * As this functions retrieves and searches one or more extension strings each - * call, it is recommended that you cache its results if it is going to be used - * frequently. The extension strings will not change during the lifetime of - * a context, so there is no danger in doing this. - * - * This function does not apply to Vulkan. If you are using Vulkan, see @ref - * glfwGetRequiredInstanceExtensions, `vkEnumerateInstanceExtensionProperties` - * and `vkEnumerateDeviceExtensionProperties` instead. - * - * @param[in] extension The ASCII encoded name of the extension. - * @return `GLFW_TRUE` if the extension is available, or `GLFW_FALSE` - * otherwise. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_NO_CURRENT_CONTEXT, @ref GLFW_INVALID_VALUE and @ref - * GLFW_PLATFORM_ERROR. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref context_glext - * @sa @ref glfwGetProcAddress - * - * @since Added in version 1.0. - * - * @ingroup context - */ -GLFWAPI int glfwExtensionSupported(const char* extension); - -/*! @brief Returns the address of the specified function for the current - * context. - * - * This function returns the address of the specified OpenGL or OpenGL ES - * [core or extension function](@ref context_glext), if it is supported - * by the current context. - * - * A context must be current on the calling thread. Calling this function - * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. - * - * This function does not apply to Vulkan. If you are rendering with Vulkan, - * see @ref glfwGetInstanceProcAddress, `vkGetInstanceProcAddr` and - * `vkGetDeviceProcAddr` instead. - * - * @param[in] procname The ASCII encoded name of the function. - * @return The address of the function, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR. - * - * @remark The address of a given function is not guaranteed to be the same - * between contexts. - * - * @remark This function may return a non-`NULL` address despite the - * associated version or extension not being available. Always check the - * context version or extension string first. - * - * @pointer_lifetime The returned function pointer is valid until the context - * is destroyed or the library is terminated. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref context_glext - * @sa @ref glfwExtensionSupported - * - * @since Added in version 1.0. - * - * @ingroup context - */ -GLFWAPI GLFWglproc glfwGetProcAddress(const char* procname); - -/*! @brief Returns whether the Vulkan loader and an ICD have been found. - * - * This function returns whether the Vulkan loader and any minimally functional - * ICD have been found. - * - * The availability of a Vulkan loader and even an ICD does not by itself - * guarantee that surface creation or even instance creation is possible. - * For example, on Fermi systems Nvidia will install an ICD that provides no - * actual Vulkan support. Call @ref glfwGetRequiredInstanceExtensions to check - * whether the extensions necessary for Vulkan surface creation are available - * and @ref glfwGetPhysicalDevicePresentationSupport to check whether a queue - * family of a physical device supports image presentation. - * - * @return `GLFW_TRUE` if Vulkan is minimally available, or `GLFW_FALSE` - * otherwise. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref vulkan_support - * - * @since Added in version 3.2. - * - * @ingroup vulkan - */ -GLFWAPI int glfwVulkanSupported(void); - -/*! @brief Returns the Vulkan instance extensions required by GLFW. - * - * This function returns an array of names of Vulkan instance extensions required - * by GLFW for creating Vulkan surfaces for GLFW windows. If successful, the - * list will always contain `VK_KHR_surface`, so if you don't require any - * additional extensions you can pass this list directly to the - * `VkInstanceCreateInfo` struct. - * - * If Vulkan is not available on the machine, this function returns `NULL` and - * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported - * to check whether Vulkan is at least minimally available. - * - * If Vulkan is available but no set of extensions allowing window surface - * creation was found, this function returns `NULL`. You may still use Vulkan - * for off-screen rendering and compute work. - * - * @param[out] count Where to store the number of extensions in the returned - * array. This is set to zero if an error occurred. - * @return An array of ASCII encoded extension names, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_API_UNAVAILABLE. - * - * @remark Additional extensions may be required by future versions of GLFW. - * You should check if any extensions you wish to enable are already in the - * returned array, as it is an error to specify an extension more than once in - * the `VkInstanceCreateInfo` struct. - * - * @remark @macos This function currently supports either the - * `VK_MVK_macos_surface` extension from MoltenVK or `VK_EXT_metal_surface` - * extension. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is guaranteed to be valid only until the - * library is terminated. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref vulkan_ext - * @sa @ref glfwCreateWindowSurface - * - * @since Added in version 3.2. - * - * @ingroup vulkan - */ -GLFWAPI const char** glfwGetRequiredInstanceExtensions(uint32_t* count); - -#if defined(VK_VERSION_1_0) - -/*! @brief Returns the address of the specified Vulkan instance function. - * - * This function returns the address of the specified Vulkan core or extension - * function for the specified instance. If instance is set to `NULL` it can - * return any function exported from the Vulkan loader, including at least the - * following functions: - * - * - `vkEnumerateInstanceExtensionProperties` - * - `vkEnumerateInstanceLayerProperties` - * - `vkCreateInstance` - * - `vkGetInstanceProcAddr` - * - * If Vulkan is not available on the machine, this function returns `NULL` and - * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported - * to check whether Vulkan is at least minimally available. - * - * This function is equivalent to calling `vkGetInstanceProcAddr` with - * a platform-specific query of the Vulkan loader as a fallback. - * - * @param[in] instance The Vulkan instance to query, or `NULL` to retrieve - * functions related to instance creation. - * @param[in] procname The ASCII encoded name of the function. - * @return The address of the function, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_API_UNAVAILABLE. - * - * @pointer_lifetime The returned function pointer is valid until the library - * is terminated. - * - * @thread_safety This function may be called from any thread. - * - * @sa @ref vulkan_proc - * - * @since Added in version 3.2. - * - * @ingroup vulkan - */ -GLFWAPI GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char* procname); - -/*! @brief Returns whether the specified queue family can present images. - * - * This function returns whether the specified queue family of the specified - * physical device supports presentation to the platform GLFW was built for. - * - * If Vulkan or the required window surface creation instance extensions are - * not available on the machine, or if the specified instance was not created - * with the required extensions, this function returns `GLFW_FALSE` and - * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported - * to check whether Vulkan is at least minimally available and @ref - * glfwGetRequiredInstanceExtensions to check what instance extensions are - * required. - * - * @param[in] instance The instance that the physical device belongs to. - * @param[in] device The physical device that the queue family belongs to. - * @param[in] queuefamily The index of the queue family to query. - * @return `GLFW_TRUE` if the queue family supports presentation, or - * `GLFW_FALSE` otherwise. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_API_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR. - * - * @remark @macos This function currently always returns `GLFW_TRUE`, as the - * `VK_MVK_macos_surface` extension does not provide - * a `vkGetPhysicalDevice*PresentationSupport` type function. - * - * @thread_safety This function may be called from any thread. For - * synchronization details of Vulkan objects, see the Vulkan specification. - * - * @sa @ref vulkan_present - * - * @since Added in version 3.2. - * - * @ingroup vulkan - */ -GLFWAPI int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily); - -/*! @brief Creates a Vulkan surface for the specified window. - * - * This function creates a Vulkan surface for the specified window. - * - * If the Vulkan loader or at least one minimally functional ICD were not found, - * this function returns `VK_ERROR_INITIALIZATION_FAILED` and generates a @ref - * GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported to check whether - * Vulkan is at least minimally available. - * - * If the required window surface creation instance extensions are not - * available or if the specified instance was not created with these extensions - * enabled, this function returns `VK_ERROR_EXTENSION_NOT_PRESENT` and - * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref - * glfwGetRequiredInstanceExtensions to check what instance extensions are - * required. - * - * The window surface cannot be shared with another API so the window must - * have been created with the [client api hint](@ref GLFW_CLIENT_API_attrib) - * set to `GLFW_NO_API` otherwise it generates a @ref GLFW_INVALID_VALUE error - * and returns `VK_ERROR_NATIVE_WINDOW_IN_USE_KHR`. - * - * The window surface must be destroyed before the specified Vulkan instance. - * It is the responsibility of the caller to destroy the window surface. GLFW - * does not destroy it for you. Call `vkDestroySurfaceKHR` to destroy the - * surface. - * - * @param[in] instance The Vulkan instance to create the surface in. - * @param[in] window The window to create the surface for. - * @param[in] allocator The allocator to use, or `NULL` to use the default - * allocator. - * @param[out] surface Where to store the handle of the surface. This is set - * to `VK_NULL_HANDLE` if an error occurred. - * @return `VK_SUCCESS` if successful, or a Vulkan error code if an - * [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_API_UNAVAILABLE, @ref GLFW_PLATFORM_ERROR and @ref GLFW_INVALID_VALUE - * - * @remark If an error occurs before the creation call is made, GLFW returns - * the Vulkan error code most appropriate for the error. Appropriate use of - * @ref glfwVulkanSupported and @ref glfwGetRequiredInstanceExtensions should - * eliminate almost all occurrences of these errors. - * - * @remark @macos This function currently only supports the - * `VK_MVK_macos_surface` extension from MoltenVK. - * - * @remark @macos This function creates and sets a `CAMetalLayer` instance for - * the window content view, which is required for MoltenVK to function. - * - * @thread_safety This function may be called from any thread. For - * synchronization details of Vulkan objects, see the Vulkan specification. - * - * @sa @ref vulkan_surface - * @sa @ref glfwGetRequiredInstanceExtensions - * - * @since Added in version 3.2. - * - * @ingroup vulkan - */ -GLFWAPI VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow* window, const VkAllocationCallbacks* allocator, VkSurfaceKHR* surface); - -#endif /*VK_VERSION_1_0*/ - - -/************************************************************************* - * Global definition cleanup - *************************************************************************/ - -/* ------------------- BEGIN SYSTEM/COMPILER SPECIFIC -------------------- */ - -#ifdef GLFW_WINGDIAPI_DEFINED - #undef WINGDIAPI - #undef GLFW_WINGDIAPI_DEFINED -#endif - -#ifdef GLFW_CALLBACK_DEFINED - #undef CALLBACK - #undef GLFW_CALLBACK_DEFINED -#endif - -/* Some OpenGL related headers need GLAPIENTRY, but it is unconditionally - * defined by some gl.h variants (OpenBSD) so define it after if needed. - */ -#ifndef GLAPIENTRY - #define GLAPIENTRY APIENTRY -#endif - -/* -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- */ - - -#ifdef __cplusplus -} -#endif - -#endif /* _glfw3_h_ */ - diff --git a/Nuake/dependencies/GLFW/x86/include/GLFW/x64/glfw3native.h b/Nuake/dependencies/GLFW/x86/include/GLFW/x64/glfw3native.h deleted file mode 100644 index 267e75ca..00000000 --- a/Nuake/dependencies/GLFW/x86/include/GLFW/x64/glfw3native.h +++ /dev/null @@ -1,525 +0,0 @@ -/************************************************************************* - * GLFW 3.3 - www.glfw.org - * A library for OpenGL, window and input - *------------------------------------------------------------------------ - * Copyright (c) 2002-2006 Marcus Geelnard - * Copyright (c) 2006-2018 Camilla Löwy - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would - * be appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not - * be misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - * - *************************************************************************/ - -#ifndef _glfw3_native_h_ -#define _glfw3_native_h_ - -#ifdef __cplusplus -extern "C" { -#endif - - -/************************************************************************* - * Doxygen documentation - *************************************************************************/ - -/*! @file glfw3native.h - * @brief The header of the native access functions. - * - * This is the header file of the native access functions. See @ref native for - * more information. - */ -/*! @defgroup native Native access - * @brief Functions related to accessing native handles. - * - * **By using the native access functions you assert that you know what you're - * doing and how to fix problems caused by using them. If you don't, you - * shouldn't be using them.** - * - * Before the inclusion of @ref glfw3native.h, you may define zero or more - * window system API macro and zero or more context creation API macros. - * - * The chosen backends must match those the library was compiled for. Failure - * to do this will cause a link-time error. - * - * The available window API macros are: - * * `GLFW_EXPOSE_NATIVE_WIN32` - * * `GLFW_EXPOSE_NATIVE_COCOA` - * * `GLFW_EXPOSE_NATIVE_X11` - * * `GLFW_EXPOSE_NATIVE_WAYLAND` - * - * The available context API macros are: - * * `GLFW_EXPOSE_NATIVE_WGL` - * * `GLFW_EXPOSE_NATIVE_NSGL` - * * `GLFW_EXPOSE_NATIVE_GLX` - * * `GLFW_EXPOSE_NATIVE_EGL` - * * `GLFW_EXPOSE_NATIVE_OSMESA` - * - * These macros select which of the native access functions that are declared - * and which platform-specific headers to include. It is then up your (by - * definition platform-specific) code to handle which of these should be - * defined. - */ - - -/************************************************************************* - * System headers and types - *************************************************************************/ - -#if defined(GLFW_EXPOSE_NATIVE_WIN32) || defined(GLFW_EXPOSE_NATIVE_WGL) - // This is a workaround for the fact that glfw3.h needs to export APIENTRY (for - // example to allow applications to correctly declare a GL_ARB_debug_output - // callback) but windows.h assumes no one will define APIENTRY before it does - #if defined(GLFW_APIENTRY_DEFINED) - #undef APIENTRY - #undef GLFW_APIENTRY_DEFINED - #endif - #include -#elif defined(GLFW_EXPOSE_NATIVE_COCOA) || defined(GLFW_EXPOSE_NATIVE_NSGL) - #if defined(__OBJC__) - #import - #else - #include - typedef void* id; - #endif -#elif defined(GLFW_EXPOSE_NATIVE_X11) || defined(GLFW_EXPOSE_NATIVE_GLX) - #include - #include -#elif defined(GLFW_EXPOSE_NATIVE_WAYLAND) - #include -#endif - -#if defined(GLFW_EXPOSE_NATIVE_WGL) - /* WGL is declared by windows.h */ -#endif -#if defined(GLFW_EXPOSE_NATIVE_NSGL) - /* NSGL is declared by Cocoa.h */ -#endif -#if defined(GLFW_EXPOSE_NATIVE_GLX) - #include -#endif -#if defined(GLFW_EXPOSE_NATIVE_EGL) - #include -#endif -#if defined(GLFW_EXPOSE_NATIVE_OSMESA) - #include -#endif - - -/************************************************************************* - * Functions - *************************************************************************/ - -#if defined(GLFW_EXPOSE_NATIVE_WIN32) -/*! @brief Returns the adapter device name of the specified monitor. - * - * @return The UTF-8 encoded adapter device name (for example `\\.\DISPLAY1`) - * of the specified monitor, or `NULL` if an [error](@ref error_handling) - * occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.1. - * - * @ingroup native - */ -GLFWAPI const char* glfwGetWin32Adapter(GLFWmonitor* monitor); - -/*! @brief Returns the display device name of the specified monitor. - * - * @return The UTF-8 encoded display device name (for example - * `\\.\DISPLAY1\Monitor0`) of the specified monitor, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.1. - * - * @ingroup native - */ -GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor); - -/*! @brief Returns the `HWND` of the specified window. - * - * @return The `HWND` of the specified window, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI HWND glfwGetWin32Window(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_WGL) -/*! @brief Returns the `HGLRC` of the specified window. - * - * @return The `HGLRC` of the specified window, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI HGLRC glfwGetWGLContext(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_COCOA) -/*! @brief Returns the `CGDirectDisplayID` of the specified monitor. - * - * @return The `CGDirectDisplayID` of the specified monitor, or - * `kCGNullDirectDisplay` if an [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.1. - * - * @ingroup native - */ -GLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor); - -/*! @brief Returns the `NSWindow` of the specified window. - * - * @return The `NSWindow` of the specified window, or `nil` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI id glfwGetCocoaWindow(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_NSGL) -/*! @brief Returns the `NSOpenGLContext` of the specified window. - * - * @return The `NSOpenGLContext` of the specified window, or `nil` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI id glfwGetNSGLContext(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_X11) -/*! @brief Returns the `Display` used by GLFW. - * - * @return The `Display` used by GLFW, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI Display* glfwGetX11Display(void); - -/*! @brief Returns the `RRCrtc` of the specified monitor. - * - * @return The `RRCrtc` of the specified monitor, or `None` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.1. - * - * @ingroup native - */ -GLFWAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor); - -/*! @brief Returns the `RROutput` of the specified monitor. - * - * @return The `RROutput` of the specified monitor, or `None` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.1. - * - * @ingroup native - */ -GLFWAPI RROutput glfwGetX11Monitor(GLFWmonitor* monitor); - -/*! @brief Returns the `Window` of the specified window. - * - * @return The `Window` of the specified window, or `None` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI Window glfwGetX11Window(GLFWwindow* window); - -/*! @brief Sets the current primary selection to the specified string. - * - * @param[in] string A UTF-8 encoded string. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The specified string is copied before this function - * returns. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref clipboard - * @sa glfwGetX11SelectionString - * @sa glfwSetClipboardString - * - * @since Added in version 3.3. - * - * @ingroup native - */ -GLFWAPI void glfwSetX11SelectionString(const char* string); - -/*! @brief Returns the contents of the current primary selection as a string. - * - * If the selection is empty or if its contents cannot be converted, `NULL` - * is returned and a @ref GLFW_FORMAT_UNAVAILABLE error is generated. - * - * @return The contents of the selection as a UTF-8 encoded string, or `NULL` - * if an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the next call to @ref - * glfwGetX11SelectionString or @ref glfwSetX11SelectionString, or until the - * library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref clipboard - * @sa glfwSetX11SelectionString - * @sa glfwGetClipboardString - * - * @since Added in version 3.3. - * - * @ingroup native - */ -GLFWAPI const char* glfwGetX11SelectionString(void); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_GLX) -/*! @brief Returns the `GLXContext` of the specified window. - * - * @return The `GLXContext` of the specified window, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* window); - -/*! @brief Returns the `GLXWindow` of the specified window. - * - * @return The `GLXWindow` of the specified window, or `None` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.2. - * - * @ingroup native - */ -GLFWAPI GLXWindow glfwGetGLXWindow(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_WAYLAND) -/*! @brief Returns the `struct wl_display*` used by GLFW. - * - * @return The `struct wl_display*` used by GLFW, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.2. - * - * @ingroup native - */ -GLFWAPI struct wl_display* glfwGetWaylandDisplay(void); - -/*! @brief Returns the `struct wl_output*` of the specified monitor. - * - * @return The `struct wl_output*` of the specified monitor, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.2. - * - * @ingroup native - */ -GLFWAPI struct wl_output* glfwGetWaylandMonitor(GLFWmonitor* monitor); - -/*! @brief Returns the main `struct wl_surface*` of the specified window. - * - * @return The main `struct wl_surface*` of the specified window, or `NULL` if - * an [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.2. - * - * @ingroup native - */ -GLFWAPI struct wl_surface* glfwGetWaylandWindow(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_EGL) -/*! @brief Returns the `EGLDisplay` used by GLFW. - * - * @return The `EGLDisplay` used by GLFW, or `EGL_NO_DISPLAY` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI EGLDisplay glfwGetEGLDisplay(void); - -/*! @brief Returns the `EGLContext` of the specified window. - * - * @return The `EGLContext` of the specified window, or `EGL_NO_CONTEXT` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI EGLContext glfwGetEGLContext(GLFWwindow* window); - -/*! @brief Returns the `EGLSurface` of the specified window. - * - * @return The `EGLSurface` of the specified window, or `EGL_NO_SURFACE` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI EGLSurface glfwGetEGLSurface(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_OSMESA) -/*! @brief Retrieves the color buffer associated with the specified window. - * - * @param[in] window The window whose color buffer to retrieve. - * @param[out] width Where to store the width of the color buffer, or `NULL`. - * @param[out] height Where to store the height of the color buffer, or `NULL`. - * @param[out] format Where to store the OSMesa pixel format of the color - * buffer, or `NULL`. - * @param[out] buffer Where to store the address of the color buffer, or - * `NULL`. - * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.3. - * - * @ingroup native - */ -GLFWAPI int glfwGetOSMesaColorBuffer(GLFWwindow* window, int* width, int* height, int* format, void** buffer); - -/*! @brief Retrieves the depth buffer associated with the specified window. - * - * @param[in] window The window whose depth buffer to retrieve. - * @param[out] width Where to store the width of the depth buffer, or `NULL`. - * @param[out] height Where to store the height of the depth buffer, or `NULL`. - * @param[out] bytesPerValue Where to store the number of bytes per depth - * buffer element, or `NULL`. - * @param[out] buffer Where to store the address of the depth buffer, or - * `NULL`. - * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.3. - * - * @ingroup native - */ -GLFWAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* window, int* width, int* height, int* bytesPerValue, void** buffer); - -/*! @brief Returns the `OSMesaContext` of the specified window. - * - * @return The `OSMesaContext` of the specified window, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.3. - * - * @ingroup native - */ -GLFWAPI OSMesaContext glfwGetOSMesaContext(GLFWwindow* window); -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* _glfw3_native_h_ */ - diff --git a/Nuake/dependencies/GLFW/x86/lib-vc2019/glfw3.lib b/Nuake/dependencies/GLFW/x86/lib-vc2019/glfw3.lib deleted file mode 100644 index 326b2be408fe1473757e6ed913865498cdfce3cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 512338 zcmeFa$#Nt~l9-)UU1ZPN{R;Do3{N}|fgKdej|kt_aA#&M%@Y^^0-4bTAiw}nnKfsg z`2@UCgpa^S;S=yco_U~9c=lzk2hv`TpBta=0V$5RTX7jsdW7mtskB~1kX1&>z!XP%c@0D28k;eZg01{alw39WW}{^a#Bo9FFf86~ypW4K$dp4MHt*e_bn z>#C~jDvi6w&kxRzs?FtYwfp(}=zjZjesr^azQ1<8sOELPh~vt3w^#Y%>1nsQbe#@^ zc@;HT7UZTc(m=A>+^(-)4iKYG}0Z>Zw& z{OI|9^%J!@xNIJlNf4%yLFcf+JEqk%$M76vK2M6M%+k<9h2PWNnz5~a0{EH<_u-a{ zqAHi=OG9*kR}g>$T+WLu4zs#76DnObLyX^@A8i<*ngcb)l@Hm*K~_YKj~u_Rx7!u? z-L3!C^JcepvloT)vaE_l(Ukrmx4Vz4-Szp|)%NaT^|ZOX?GR)etmbJRCSj5m2JGW@&5MaV~z`n%9dsEz3pRRRnLi*}T`Q*A+|WX|pKH zG*wu+D6_ZV{6dI$_xRAOFoQsXBv0C<;7^s*3!Bm-?o>y0m;{mPp~lA#oBQkS$5A)4 z`7&89sw!8tevvh0^ES$xqAXiAi7ci?oA*`_lTMSFyv&-mEdY@EsDBB^ z<4=ulfME^KyL)ei2F*N=;UR|v8MzVHXIcVo?23O7t+cBScTrwM$5z*=MzYY@z94_F@N!+v=%@cEdalgG- z?{-_a8;0RLYVtUVB7+FOy$w8Iv%1~<4T$XUWRVVJ+T>*u)%6spCNjs)>8%gC%!8tC z@+rvPAdld-JE| zLw_=_w=$IwhwWz^&y%2Ll@!5z0f(Z4Kdm)G{`TjG9wh+mgXLkFE!zw*-CWcy29I_o zn_HIQB2U@GY;*1A)7|Rfv&~iWAXvcWkX+p8*s~@F=W&5}IS=zZjTV9Bb!s-ceaXy( ztSLSJZiL{!O!6X2Q`O}2{ce4=eSZ(1ViB#Br28yWA&X|^5Sp-CwrQMZP(at!ZfBe9 zt8I^FnkWy`JWDjeSbBWa`!_A!AT$dtT|o#Iu$qT)z>y?L=4lnb`)R)~zf|+Ml1;ph zMB)(!+Y@i9c~&%G-qI>UMZn@=*R*xl^R`_?WeVE0$PxD#`*NPM^CXL=mDg5wv*67< zsEed3n?(oS(TG=oMVTNWDUn8`LA?`r1+rwZh%>}5dOtP3W?r%(EsJQOhd;Xr>;4d% zc~dXrA}E`#7v27A8)@fJ95hX)dm(b1KBc)`uLVo=vMM8~;-5dScR#=5IB@^otD{~- zNl@j1>FB5*Y`e=gXyFP{N$-3)Aty6ao{;Q5SuCqZop{XO3`$nJm4JEFVcUPyk)n}? z14P)m45N^NeN-}KsJS3V1zRSVr&*1FnzvF$i)>wMexW8^I3d<*L}? zZE$h-eEYO{T-`nR;$Sk*7D3bo^`h%qhltTYlliiZ$~H$fFzr4z+v zjnf*NWfq~VFg<;_a5>M?D9F=p^r#8eNVG_`n$CNeFXu%QR7JWpxEhvbtgagsa(Tot zH%+AO9{F_of?jdGk@V~4qEl#e!Br+F^CWsh- zgHU=1gK&|YMZ;hRfz%ro)go`YS(nM|&(Va`8_W|lE6cKOq#2PgeIZH94qH?j?{5zj z&vvbG9!$~GgEsDV;Vh(k!-Fapl=-5rV~ro*+#F@?#ETK35atb9%uV}DEPsK^(SfSn@AC{TPM zPF7--ltDHLi4=B)){1RaEl*TluCpA0>sAf|3aP_kI?YZLilz)fz=7uTVi|svVawF>d9cG6Bv4w)5jzH^-4+e^w~kOFv}u|ib}2cVR!X>x;c6BsHdJsX~909 zMpJEmRxD=&UQ|t1BWiWs{qFw9`|U@hLW5AXcsrrV^|qDWAgD!|Ix$X%TvLmMWUH_0 zwhY-L{>J6u-$>?=E1dz_9e*{RmKM2K`KG=dJK-F z&w;{+%+X9N!s6xmG(+s~4CsuOZH;;{Q9Fao=P&JTiV(VNi=wi<^?8rOZJR`ja$Rpr zFvQl2Uf7KDb8S9-aFF#p2@wSmvnHlqFat;hA9Am7Z>FfD31IEdUMqp#2@ z`BG>Q1j!P0j}-Wl00}BR0n&Z40;GQQ>F#d6#~03@2m1G{`@J{oKJQVFD>ggr9-nl- zkGtPT{bE<$%s{4J`FShO;U+drdUE}-vy<+=^-RrJT^p>yvz1fYGZW&G|tXT;t zL5~yGag;Rk?@OhsLOXDGLJYUu*i}GUr(~qIrN;m@_?04cas!vyT$yp#n zVnzX`$_&}8+59&CwujCwNHX^H972_vUxK28=t5m-jxD^Rx3KHGLkLO44 zZ?~7L+w-Fjoe!+LhDyXVbE{dn5d@O?%qw-oNTY2AE)2A zW9+xP)jb9#vAhpD1~r9-W9f70L;=;OcKbMfmAE$Ep~f2*DAzx~LwSC+y`Fg4r{j)< zl|J{KmKVqMz3nWpc}I!voIEaT8eVdoAHUT&Q~TTf6Gd-dETaZFJv?1WgY9nf^z%z? zOkz$$PSl!ht~+h%>m4f@LaZZMAz90=bEIlfdRLVdl%crZkYts_At@dTTEsREhOm)_OPHduS<^)$`d zmL~_U2ljUTxcM77I=oc%1X0?0 zcrOPGU3mw?uir1b7CylU=;9AFdToyT}$j{3V-&ULr5zP8~n%+)pY&xGN-+X&J z##6OGrsKlj-HRaY7ZhvECH3C6G9 ze=l}kgG@Y9q5$8I1f@=Xj|q5#&5JFWy$NC3h%S40w-s59Ur>P7cDH)?u(^5^3-UEG zm$qBFqS)W$>>FW8Rf?0xpOMS&aN&9slVtR~y8V8$_6|O{D8(Ex@&uI)XKJPeAs)H$ zX(dAE$hRq|u|)+7IUvt{RmaEOMvQdgYo>{N_p|F09vbLKf(4d_VfU2*y;B5v4jRad zaT>>M;vYED)!p4nhg`gFx|QK%x|F>lA@Lie~R8HdOj5IJA&Rh*?vm z%!iwdo7>fUrx|GG%e+m)9JdjxeCzpO%&_#dSQlgFN{N|~h?GhueJ6jl@R&80-X~lIKWukDA~UYWz~2i>C-z-n z?W^I^X623gj9}6Yu*Wsop+sJ=Rr$!Fn$dI3IA>Rv2Yk_6VSI-(#ReVc8~oL0e2eSV z1IwZR(BQsvRXxZSNzg2FNG83olmr#TEtC|XA^zRv_S5;1Oe_9GxBjX|y&Be-j5*T$ zF285#iQe&!CwR6MQB+6Rt zZ}B_}mP>4Utu2|{Zr*>O`9aB4wAEFzgzZ>zHlzW<)}!t1iR0Ay;o+mqrT=#~w+=R(*J%_M zcng2N&5d{$-gtTw{FKlKW@TH>Pfm}|j@Ku9Cr2lT(%9bqrvVMQ_R@KQb8VXDFQ_mS zBhmvzY5&PnVc_>u2T9Y!SW;eOVFvQrGjei1&+rn>DvTOFdtTq;NGDP$B*yGqJt=x~ zT`lIzIz%&!{>(=!qw@yY{pp@K_;Q|AVOi>-HKkS^H zwsE}-a$J0(k9UdqiP~3ZVUU$ciC@6S&HdfodC&Rh4Bwoj2r%{BKjG2ce+m7jS-PlF zRL`F_vJISF%r5pug{m}dWBeTE?5EMg21`A2-P2(Q_#4+*yF@y%WxDOk_A@}RTIS)h zr8DfB;ur#_j@o>IUB!t)6w8Y+q&oHh$1qN{@a}3$<`p*I7SDtE+o#*_*E@6({1lId z{Qk!2fddR>RltH_w3^)MVYqr&U2bl1M)JL8Gd7*13PUbncpZG$s1Dxu9K-ReEZV9F zSVK%m{wMvXJ|dBRFp`*0}}#t6Q*qyF-zfx)&2WU z1HxUH$JP6FvbkmRiJh?-SLG_JtDvdM7x2O2@7+wni6V~RPSHyWaP1N?L8t7lSyte; zpJA+<+IKW0M~U6gl>)bj3ODZndO0{hgv zx%`6e{KNY8K@KN&n%L}Oyy2Hk@xta|w}8jK6B+t_cr#wh%NMLRF9BBbs7@kQMmm4| zfSPCBU!@f?Scq$UTgVw1{t*`K>!8wk6-cF*-Tj9Oi^+IFked*A`u zodayh2W*!I$U6rpj1I8=9*8B{Zk4nBv%T5=Dc>i2AM<_0_aWa0e2eBv)i$Gs88ytP zVMYzJgBjm!x%)SKJH5tYUe;;0TqLLqj9x>iTJNaN^9PGCa&EEUcAP7?Ti>97_#h{J z5m;pp?(ycbNW;2;jBV8))r=UWfC5m0YY(gr;mXA+=XV)p*w+vIRaZLev?#vUAxTCdEiUW2qZf>O%&k7|Q^cHG}{(T7CW?*SJ zU}JGJ2sc>arq||9&XrncqS50z9L|>k_D5PCgX&Rg_Gw4k17#i>VF%+@#riOARWDJs zw5IJu>Xlw%;qCTuEyf*={vDTWP$v(dv%vbPT1m!{f)D9cBE&=zS;N^t3Qu z(@uTjJ?!-7O1wR}S&MvYzo^@jS37Z4xrNB06;}-L*05_;7f>D=@>qX#zx%Zr-R|hO zR%>WpsnM;UMC+Rsp1b-{29S&o`?{ z85-|d)8tu4(H0}dJf`3EtYY#ADR_X?5Iggq?`Q{Hz~`NpXZ(l&zY<)FA)T`yGS zPss~K)a1YLPMffLUFh)l0)Ro~ORvpR>s8sCZi@vw-Tspo>V2zsnit-_`ykiB6q*L8 za|C1?kw-7pnTv3c2-dsDd8wNi3brhz7 z*gNFXj#uk5Zt%l;3%pL+8h_bh-Z`6aB(J!1Eyn<5IT&1N<<~i3Yn4vRoV5Zny8n{Yqa{d+408oaWL3idS`>M{;O&MD6QpyTNvDRSqti z6PY5aLarbVX20|Mwt)vSM2Tfwkg}s^gr0z_5zKz^F z;vQ(YAPB|)JKbWm$a&yw;a?!-g8HIaF2te$T0i1@KszWJy0z?RPF#+?yDBl}gm6)n zDFooq>JQSnf6EH6*om=y6u2j%-`A9LZEkd;6~O*`DQtj=;kMJ&htgjbW~%b4LBU_ZXo=}=PS-#&h(MMu*0Za z!cvj&yK93TW)vR)#xMXbPunrVOashfFx90Vqqih~()vL?n;LTtZaGH<5*Bj3MwzcY zxR2c-PiAs;iy(dNOw1U^xF}O45jr?G8DFMx7I9v+sIKbyPkL#b8GVL6sL0t|y}(nuJN~!tJKQGyAYmg%opmh z72*{(!w*|dd)AEGp;T15D5mXWQ-PSl$JLIF<^KAUCle9}Gl``r=YEMCC2TVf5k z#XL)j8Zv8}xl@DBa&*gi%B7cc9CQtE9oAeGYSOvmShJ=OMQNDKFKxN~Hq5!Zj6NJa z;qv_0zBq&nC&cPOr~2^h9KjFKO)fLJnj@pIrH>Nq2Q8caTzSX1=UJ8G`_1$B&nO$+ z^O{%@ZP+a5x9giHHdoo(C$%VHCupIkGYDL%({iSQqH8> zAIR#tJgpv97@|{zm{h#67@&vF=G5`a5!>YQRL#wa3^SE&5DJp}4s5%omT^x}lt=9{ z4N^i5SU|LD?0>RXzt>h*5t5W-ZYL$gd{tG8C?!ydg);~oLs~fQXcUEj;jn-^tYAao z{!Tgj_5^5kanAx`7J+b6f~sgb?9&1F)v7YX?$IhD!4&hJ6O{!fazw>V)g)~-@c2FA zU|8YRrfEza$~}1OV`0k;GY&E>yIU z-*-%X!QRllm+fW%qBa-odd5Xpe^xcbQdtM-Jy!g^lP56#M!T)?-cp68>Nn38(1Kr~ zc^;_6GW8}~^%SXC4E$2cwHwQ&XqH@$-d%~~5>M2o*l8Q>FZ2B1rstt5uBLhu-Jf9? z*t=Yx>bqs;`Q^aHmAHOtb2UHoE~AAfJp=v|EJ|wm_-{G|rT>V1adeTP+wXKSe{*GX z6EB9|{@guN1}wWVs(I0lZe3*t@rzGux6zu1dN#(-wY$Wi1}11+vezY3t-qP7$zrf- zKD!z_Ymn_VpUvF|`%F!^p_UF#v`DsqeDGaby)rxP$*P(*eaas@gy{;*23$~KB^Tsu0j>Hlwg5*GAb*pbM$aP4^&_V zJ}PQnj3y5tCTLXNo1oDM$5YJI-;uJ@E5&deAU z^fI@+T1->i>LyGf$86&$wmRrMaj+nIwg?XhFK2vCvLsF{(81wMT~r0cSSAG41Cr1O z>_zC>R>z9GB z`SyW`>O(**0$VkA#guBaNI5k&}yk8lN6aT417J zndLb?E~X(|9Te`?5QH9#`so%1Kr!0IB#j)9>zz1LOc0R(l~KdFDV!hAn8ve%8Iy_! z1(S)-#PRU~pZK@$Pc42__|tKy3T^jnOC7m(UF>xaUkiN7(3+YNI3P`VQ$R)4wCHHF z`QchSr{bW>LV^TuPH+Q}pU1P4!+!UwMX;oMaJ>#!rlr~G=`<$?5jBCoP(Ci_(DMOQ zEwp`baC&^iUq{gU3Ez7Mrw6?;;db7ZxY1hxhUAmFq2diVcc`U5c1B&MbAu5st zm8{`7k`FK*!gb%4f4HpYM5N;;56RMYAZ}=4p4_ z{TFszZuFEzg_k6LS*9hk(U|LJV+Mu?Xtk^fX?9HW~938|5f%|$_r^eYGA+2sReO88k&I@m z8zW5!oYy^o8se%D(av^{rJ)_05AAvyPy``QVP9fC{LGL>Fx&}C+Q8#06GIvS(GJnj z9b36Rv;4Kgfcn)N5wT9uAhd4BFbl&h$qupyg!3pdf3V`1A;I$%&JJcOu!(8S1LCR! zzL+&}DJ;-%VT>scAc8F~@yoYBS7%z>z1cfbEsklNh!W8PsWNm+@RxM24C1K8(qmgP z(ux`57!i0WbJ>UM5Ol928O^{BKf}Pdd=X$Ui3oUTYBo&yRG6Rp@~{U`8dQNq!7)G# zU+sgly%PmAMnpMJV+jr$I+P!tb%F;Qhik~Eaa42oh!d&8QN)Sy$u}r=%oZ8Z5rY@86Z(7c-=C8dM%;6;)WhUINXuJND-&&PKuCq(Ob7f`{dde z+A@c|WA;l`%wOsQpcH**2;1|zr)iJ!Tq6zrHRvpm&O#29<1W{V=jM(9zw5j~Dy28!Uy1W9!3X@ZPKV~PmK z8&|QTJ?{vvxzh20XbgH|A_O0z8?m0uJRNq2$m3IuL$nJ6iXc2#TaYNAaEovRG@2(a zc5niZ2sZqgmWH$k5Z9NN4Nf;Nc5gQBUcAJh6UYW&1Z<~^(1@7mUXmnj(-7~~0NKek z^E3rSl*fb!OBQIjay1q8QJ#wa2XmAK0>4IbRpqD1hyblY5OUbHi*PVc)G?YT?ps#y z^JRZ&^mmLA8D+#4D+zXNTcX8IfH+hP0EhK45VxV?kob5Odz}o%$~Encx<{PSEEY!< z1H^P0<(Y0nHPpvm%>@ubx_Urnau4>jK5PWk5VHwK8l{vOQiK5-O)j}YswGxCe7a5d z%=XE7NVhT3lDap9z-)osBGf|~^K$N);#@?Ka>p#K`iFJzHRY{bfY_U`jJl;UqP@{P zHCVNl+}h!SjDHJPEjzCn{_M4cKT$z+Dbtk+UNo3mVqKNY>(Wy*9o}f+X8+*wg%J^V zE+W7-5jrj94cQ7E8?;2Y>v)+p#HF&``|>u8gFoi&aDk!LjA^1JL5PP2v|vOEOY+>& zgB{bJ9us{Vbq_bilE|2DmdrkQs@JQuB453hDzV^3#ACJH>#(7m*_VSR&hdrOX_0?R%Dj}4I7aSwY9^;=qoVOgM)Ffc<-sYf(`sfjF#A8McQ ze07J0>fxcS3AGk-!^N~@#g#tEIv^BTL9~cNl+g}o#3@x%J)jV8QVF&EIiUXB(o#g& z4~hEWdbihwk~~y2KB5O;a*i2o>=DtBTql8Oi97plNEYLr;4#8DEtL@|n<@`^qn5aY z1Yi#jCC&gXVGVlhp)Zb0TRoTxj|143TTJHA&bBdqprLm)E{dcYauSXmlG$z#2h<7> zX;Sd6@Yebeh^~on+3OzB-nq}~apVagnXVpC8wH5*q@6KyYk|&QP#8&E1qsyc+jXwj z+Fo#TrOzlG)p{)j#IPk6KTbHdCBurYuDY}2P{N_5Fe0*Rg1e0Ao>fg9^d#SYOC>QY z0zx+!AlnkbkwCy$i!UwJILv0=CyPrv34-nJ3La{UoJ2XXQ@tG!nF`0#bDgfgCo}opn`mb_;-zf91)GXSGP!_ zVeM$#wq(h53`BCW6p7qP@k8-z3gr?dWSPWnOqN{r{0Iffm$#a@dCn1txpkzs?$m8( zD57=wF%ZsAip`gl);l9i8TO zf)`1;ID*KK|6~NT?mN!(#w0+9Mh+2%MeOh2n3IX%q6b8P8=UsN1FqdW&oqDCAD$N& z(=y=lDS3@X-BUIeniw+{fFf8?!=Ath_79i z;nCRxGK~KPAOiK&OJYIT?xD}qV|vLDiQ_-nrxrN#JCxfoISwoB^}2^C7A2<~2F>F3 zXGe(86Y!nQ$QIS zBdqjpo+ij>)DoJ1Vq@bwY-+YGU3Y4g5k<(Am9{2hiYJVAJ{#C!r3D$$s3lIT0pSDO zR%1|ZxRGwir#)=HY=c4QsYNHoByb+>5mmZ@{gb!Kj>)#<^Vb1TEiNUJ%FQ5Rb={e% zX4=w+HeXg+ucdm)b-2hA_k>r-&?TOj_tgW!^c&PUei)`DJ0{1%M%W{s78!B4XJmlP zBGmY{ZS`6r`wG!Zyp?NO@|OFcCDJsLVg@zNxFw@>>)P^KN=Rc{kYmoX>{yh$op97r zg3>!AK9e1j1#UfRxYWqhy;Xj-;K%WWDE-%V~;pWdAz9MNOOEAIH@bo2?BZ?;Hx2@@T(xq z2k*S@kzQvJ1##$kI1EpO3}`SWF7<|_C*XdoMY%l@-oTLMOaJV(lyRg%*Xw{_T}pJL zteW02FDH0JL~a|hk#8ADDXv`6SFtU$39R*%+t~{Xjt0wMZ^IRd2>?i%xyfOq{0UXh{S}GbY>8XS&B#(u_c^ERAm1MlLrduJQSa z%!zof5arKFVWy?y&y1;ERD|sZ2uC*Ye-hUpeke~UO|Yj2ShqdrAJiROCP!6XIW^tk zWw!^;db_SSPh4^&y8(w!Z>urZs!s1QroBv(J;!*aj^*+r6DUsTp*OjtkPRx_v^*fY z6ZVyYz3!2F1CJ|DbTimHdJ%hgqNKzuBVV4KTzjgSXzA+xP!y2L*Hix+MD!dH zd+Q0Hq!Po}nD#71X!Lm~$CHQae+X4>a)&CQDU=h28YQg9mWTTjKqKr)G`#@G5h75V zO#1`iLkELJ$0GC8eI1?R>v?m6$Dc4jfjnZf>rbvYl#}?RL(_3K%_snX;_KiMXfwRH3;xa9$7a{W(^v3#F)VXgxtYYInp!T zGfKA(J>J~noCFdUlD@@|o+0wRQ)}B9Ac8QANsAi8BM3XDPAxxf36~)PPH_L*@k*n^ z0QJ&>{2a7Io*;H#| z+7ZY>=LjRPB+a{BORMW^CAO|_F7@eTcmV>IUkRhc|JwG>pc~0o&CyivNY`B9!02{P zql(z;9O}kEc>W|2TEy1j!5lniP_2B8%%n)-VS(oqDplJ(L*cWvnw$ybk!K*qXEyNs z+sv5EQU_GFd~cEf;vO_E4sOF3S|?N=2S6O1i0Cb*lTH#9uE@V@c;%t^TkW56$T{t| zRN#cdC2c#TA>B#i8QOsvGPDABrNT7D_IVL_QA3MNZhFL+O}gF`oxWaNc@d5izpk8BU_gDqNxvu5;#hLiruzkWPk4K zs0BDi1P&#HaK-ZEha6(6 zAymUK7Vj>DMc#Gi8+fRgUvEeaF|zTJbQ&2HdU|2GTVJEzHH3w#3eU~Ywq&MBUo`8t zv?PUh?V(}pS1+S-Fa%~ItY|`PGRMfR?Ak5<5gq{IPC`hcWd~%o8O~?Z+ZjMvP~cL? z)gVK8LmHoIi5L*bhu*?4-8=N@ZZM{rrH%(I+j{rq#8BUsNSYAu`ibtn;80HR zfUv2E6C`d^16KJmBE)c>)>$D7qXRlI1aa0$)a-jrUvbqA6*anU&e{8p2eC z#*qX_wjH~3zT~e*cpI^z5n9fXgH=l%YvQ4i0ksm0u&(gnB;>n6gArD)X5Gch2_SsJ z%e3~aZ(p9I6kq(ZDYM$m(r`>2);&C+g|6iqptk~tYkjnHB2(kFo?~rs?A6Fp97}u+ zo!1fyFw(a!6VPZ7VGgRE1w?w-11grN^;m@t$ap)Ry>L*4t2RkQz5oy9X1_h??$E>f zX7FHA^V5eiwh#cm@yedFsCmdg3Kk{TSW_DVQfR9 zC3j!0cf`7m$?DuR(chvWNmUagieh25QEG@(Eukb|h^>v+d0TT@;21p--;*Qn55wr5 z=uJsG#s%iai!a^7#DHm{;T97+B!PME<{;JW z>9OB#E_W-5B5H#j3O+X^6f{vE04yWy3u4}~NMG&VlO0ILrBEWddOF1Ta7{s2F1bCf z)5_@%O58vbm#>SIsIcP$;_MM~S+)yy=mqqnHG&oPkmKOcpEaoE(bY|3)J74Mu|B&1 zSDe(!Jc%X8wITVNmA3IK);B@E_^+g8T*O$DER0zuY*6N_$2hTyWo5{w=tY`1IMODH z{n^S_=-V+7At586?xG=>qUjr+4ypyNg?HkPYR}K?ox=Qb?+|`=+4adVv4LU_|L&-5 z6D*}pur#>7QL`jX^l=T$vdWiSzH~5`+WB{n8yyC!j{^*8#HuCHhTGjQuQlz=wDY2B zh#w9ISWU2zV&PiO53di8kI#JJ9ajoRJv|tre&Uwu#Mg=ONLvo3nB(D1S}SjUCe}h9 zrY3G!%UvSxg!aYxVf~QAo{O&T96f=zUOTwtV(7$<;azJq_i&Fr1o-2@sR$=4a?N>$ zBc@;L)bWG!zAO$16vhd)L6hYqcuPASop*3P3;}P+(&GvzP}z1C)H)gGUF^acz8{|Y2FM+Y3qx{;X0Fn|#&T~y-t z#5(Otj(7;^LKvgN0d|};Pt=_)!{3H|8{v(-ft*Lg_GtNm5n4MGNF)7rO39QXB8rnF zS=su$V>IfzA=ft~hGr?jE?(@J4#49>h^IxsQP{$aFfeR|%fu;;;IVhZYXmdI8uxA) z374JSjy1%<2y4|G4oX-9Vm6rZ3|GPkYphbv6a>3=?F_lj1Wa9JY1Md2(;+t)!Eo;p zRa~%GI&;~uZ=>-vT(Bg9eC4?x4cnQ3K@pxsp&v!;?HF6au86|Mf0;B-fk z(FR3qg@T5ZnVzuIg(TxZZ@&6{!(QJk;-(S5ijGlD7!YI@91fP`unr3(7bmzF-=@8z zPUMqTe3)jAdjzgw?o4TigI!n3j!=NwH{)EuRVLfDFE#@VAM_Qu6)& zu{Ke4P_7-WV{kE_SjKMOFg_EQ&3sjvgTYT-+VKQjqxsY3;fby#L{wT}>?TUC>6$UD z?60Sdo4DvC=w8q}I6^V)*x)(3Dc3au_qADBa;PxPSk8PotrDRbG*ATz6&=g8&G^*l z(IakDEedCnhdI`4??oS)mQ~+e*T`o`78R~txgE_IQ1^~>bP<-MtV$n-02~a+a}n0d z7NO9c38Wz(ror}%InU!4hBbG*O!dr%At(m-MM*;MZ~&ocIr_NcOB%?vgU%(3IUo`V z+KhPEw;|6&=~5BfC?s&2g)#GkN0i#qMmRuY!zu=Kt{pQ!z7o8LgXNqlCGN1N2KUrl z-SE{fHy-Sngr_E6hnrK=jv3czJOqx$VUp-wZcdG|uk+k9ZMk*`sfalaImMB+)$1SX zKrtPV57WeWI(rV%L$m=Ry|f@~m_dXkxbZwB%y3Kym*H^Gs3MgCYZlh++gg0PB(I`S?x8**b92HX91fZ@I;uO!a(%;{x*!Th=-q@nP?!0{eWe?ZhVx+>yrLs?MwYBcI2gj9I1945o`#Nu&&Bfqt)`N; zBMsuw0eWw;-IEj2>zfM$>#tOYH`r)N&I#NDE#8JWfYS@3b1)_9h?)f7oa0UR4X$S= zdVT;9Z2K@|_Ip0+!Z49?GIM6mx%&hGjAY<@=IYY9f&{fcy! zJsXwRi?^*Zj&{W^Zthl}NI0QD`LMaSA4tl0{YSro8ez)N?orn zpWk1Q42_8Du1V4B)P(-TXQ8W2a{7?YMrEOPX%((HW2>xIA?GzlHm+Yw+#LyZ91|pfewEqVi_XAsaU)5_)hA-G zI{@)qDYIpO^2FpxFikz|wl|wwGA4|>Nc9y?mBbe!me&1~7z!RF<)O-ZwcD(*i)dy1 z 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%0Djn6&nNof(n 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%0AF!!mZ3E9oIDx;3%B65#sKS5O-gMxcei(QL%0` z;Jk(v;k1l2bZ5Z-*^2N-5Xl;onRL!3$HZBVrSmZY&#J?c zS+zJ^0%uA52bP3mUD&kX?D*nfI>mVAf~aZj@8UWt{0($!f0zDbN4LM*ysLMhBtDQG zS2E}F**m)cNsW!&6J1)D1-%ffkNC1mKZ3E$MU_de3>d%QUzjh zjYNzwFj;_nc7|)@cbOO=Exx+X+aiN zp2n8Up_Qybckh7fXv?;Q8{dT!)&Ncm&Phr=9+>@pFefqSjSDV`4|om*bD{&DgF(8f zIWXhxz%}~YQPBg^_W*~zg83SB91ly&>~_IKMCqm zP2yG?>Gi*-D?42~^6tNUh zZzh9kK7wLIt)w7V{>zM^#y@BMK6L!H4PVhkzoZkE!I4_0C&7EFeyB&@OGU5>Suv!_n&C@|EyeKmJ=M; za@@Z;*ps4`x(&B5jtX|8__SUTosr?|Yzw|IX~)$+9qyGEV2}~}wtpTqwRnoC^6~3U zU1{~YuhX=d?fcNac#Qq|D3a{|P>G;*Q8S&bj;C4I&-AN;|aj753Gc3YjG?flE z9EFQ6Ma>hh#wIu;QN3$iS-oqF8WjzMVuJ3tfEfZH;sa6W)568`znFY)q{+8McbxtX zi{?Lh@j5TOTv>RRgPN+u9;1!EGK5>t&bw4I>t%W0&iy=3`gtKJ&P$e*QifqxU^h>u z&eG)jnRyvBv31y7o@Q9Ql9BJ6H&jv}*jFU_tC-0kbk{b9O9Ika+%{0faeb=}%aaTC_;K=Y*$dCc~N=D!imFP}`f{$V^!3sT0J*ceNF3Wn^zw=aq& zE3WCR|&>CR=fV*#`r&57E5LbF^iTe@K|y zk>&2HXfa?aC1MTPw_pS=x0(DsTC>x<%AKxp=ySWZx(=!ggV1TOEv7<`L;86Gph*<3 zG!9V9@QXE32gJL3A1L14-wG<9xzhW}5=QNZy^>MiNy>zhuEtZ6sTZiLm@8d9=w}q2 zFIvf57lFEh@m7H1F`y-0JlwlL@%T}_PY!9&IFI^Co`|`icp?x@B^IGgm3Gmv`5d~NKsTD$h41^V@Qeqg zcAOe-JG#!5-N&pOPUsuB%sifY+@{O-&tXiQ+3JcD*$_NI8PV=X-4?qb7xc!qq?x>} zw=YT(jh^1|k^;+;0`A^?7argg$~63vOf&_Uk6$d?Dq6@Ws*=3Om3!>wm)6#n(n4xK zyV*_8#-WW3%I$QJq%D0bGO5Y8w=Z8#4AmUXQdTej^wh)W?pV~rw5Ia1Lsupb>3YMp zO$VmGI{Td64)P?pzEeDF;0Nn2aZGi5a7wwD?DF?E_FmB3x5wO^!E>(7 zJay4kt>@M{Qxj=E%*_9{tBcbR2efR{X6yWKj4NzO|HRjZk!Eb`zRn|!80zD(4g{W% zKmV$^4bxhpv^qn2X|%>nw)3K=?Ct-Rv;sMe8chbdeaU0x;uXQ`(c`|GwH7A1Wojx{ojez8{(Q z|Jb_@z^tn4|AmAY6-=-ZQBgk?6(wLc0YS18AR&RUR1h-0kU&UchJXXXfD&TrsH;`$ zw$@RttF9`zXPs5ls#vWBaaaB0DExot-0|l3y%&~Rc*@QB?)%;Q-aYT!bI(0@NsP%i z-Jda3Iw~<;`|vDovy4$gE9MB1ecF2KL0>wbMIFoNsPPoyU*9huxxtB{xsK6M+z*TH8o`*9xblVty`|8uuEG34Wo<^!ClT&FzsdnjA`_ag0V9Ab3qzixfZi8+ul zGZ0cfAOF}pC@}cJG4wYv5acf|WS(M-<84r7`Rb=J)CHu=I2eXH_H-p^Osj}69V2v} zjEUEn>tu{^1PlKtCu-q)ZF+$Kw;i=V7_<6^cSy%H&dxn95E%1m^qG^ zvm7zMcf>s6h*8J(?5>}#=13ds9rmD#!Iyf&17wV`njl5S&}x41kg+l*M#s#MF>yMk zQN|c+5SGiB-8ANM8Dp%-xLL*+9HWEEt#9~*jG^O61i41W(7{WB+#q8_K6H%7d~7Ug z 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

0fIZtu^16*ny&+) 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

RD3*VESy5(<2gN$Dqi#29BpT1 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