From 2225de92aac229cecdc90a07f244c6c8c8bdab59 Mon Sep 17 00:00:00 2001 From: Date: Mon, 25 Sep 2017 17:27:20 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E6=96=B0?= =?UTF-8?q?=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Framework/app_include/app_conf.h | 2 - Framework/app_include/app_nefinfo.h | 6 - Framework/app_include/app_pipe.h | 6 - Framework/app_include/app_register.h | 32 - Framework/app_include/app_sensor.h | 6 - Framework/app_include/headers.h | 27 - Framework/app_include/src/app_nefinfo.cpp | 2 - Framework/app_include/src/app_pipe.cpp | 3 - Framework/app_include/src/app_register.cpp | 23 - Framework/app_include/src/app_sensor.cpp | 3 - Framework/bin/Nef | Bin 138416 -> 0 bytes Framework/build.sh | 12 - Framework/build_lib.cpp | 24 - Framework/buils_obj.cpp | 6 - Framework/deploy.sh | 32 - Framework/doc/App development process.md | 8 - Framework/doc/framework_usr.md | 675 ----- Framework/doc/work.md | 13 - Framework/ext/TinyXML/demo.cpp | 89 - Framework/ext/TinyXML/tinystr.cpp | 111 - Framework/ext/TinyXML/tinystr.h | 305 --- Framework/ext/TinyXML/tinyxml.cpp | 1886 -------------- Framework/ext/TinyXML/tinyxml.h | 1805 -------------- Framework/ext/TinyXML/tinyxmlerror.cpp | 52 - Framework/ext/TinyXML/tinyxmlparser.cpp | 1638 ------------- Framework/ext/baidumap/aks.h | 7 - Framework/ext/baidumap/map.cpp | 159 -- Framework/ext/baidumap/map.h | 40 - Framework/ext/curl/curl.h | 2566 -------------------- Framework/ext/curl/curlver.h | 77 - Framework/ext/curl/easy.h | 102 - Framework/ext/curl/mprintf.h | 50 - Framework/ext/curl/multi.h | 439 ---- Framework/ext/curl/stdcheaders.h | 33 - Framework/ext/curl/system.h | 547 ----- Framework/ext/curl/typecheck-gcc.h | 677 ------ Framework/ext/curltools/curltools.cpp | 42 - Framework/ext/curltools/curltools.h | 48 - Framework/ext/libuv/android-ifaddrs.h | 54 - Framework/ext/libuv/pthread-barrier.h | 39 - Framework/ext/libuv/tree.h | 768 ------ Framework/ext/libuv/uv-aix.h | 32 - Framework/ext/libuv/uv-bsd.h | 34 - Framework/ext/libuv/uv-darwin.h | 61 - Framework/ext/libuv/uv-errno.h | 421 ---- Framework/ext/libuv/uv-linux.h | 34 - Framework/ext/libuv/uv-os390.h | 30 - Framework/ext/libuv/uv-posix.h | 31 - Framework/ext/libuv/uv-sunos.h | 44 - Framework/ext/libuv/uv-threadpool.h | 37 - Framework/ext/libuv/uv-unix.h | 367 --- Framework/ext/libuv/uv-version.h | 43 - Framework/ext/libuv/uv-win.h | 510 ---- Framework/ext/libuv/uv.h | 1561 ------------ Framework/ext/map/map.cpp | 0 Framework/ext/map/map.h | 14 - Framework/include/datastructs.h | 120 - Framework/include/globals.h | 19 - Framework/include/glsdlfuncs.h | 18 - Framework/include/headers.h | 51 - Framework/include/helper_3dmath.h | 219 -- Framework/include/neffuncs.h | 14 - Framework/include/nefsensor.h | 131 - Framework/include/settings.h | 30 - Framework/include/userfuncs.h | 15 - Framework/res/mus/1.wav | Bin 260044 -> 0 bytes Framework/res/pic/1.jpg | Bin 67160 -> 0 bytes Framework/res/pic/default.png | Bin 150 -> 0 bytes Framework/res/pic/map.log | 7 - Framework/res/pic/map.png | Bin 76533 -> 0 bytes Framework/res/ttf/segoeui.ttf | Bin 925736 -> 0 bytes Framework/res/xml/path.xml | 611 ----- Framework/run.sh | 1 - Framework/src/datastructs.cpp | 409 ---- Framework/src/glsdlfuncs.cpp | 153 -- Framework/src/main.cpp | 284 --- Framework/src/neffuncs.cpp | 56 - Framework/src/nefsensor.cpp | 574 ----- Framework/src/sensor/README.md | 0 Framework/src/userfuncs.cpp | 114 - Framework/src/uvmain.cpp | 172 -- README.md | 2 - 82 files changed, 18633 deletions(-) delete mode 100644 Framework/app_include/app_conf.h delete mode 100644 Framework/app_include/app_nefinfo.h delete mode 100644 Framework/app_include/app_pipe.h delete mode 100644 Framework/app_include/app_register.h delete mode 100644 Framework/app_include/app_sensor.h delete mode 100644 Framework/app_include/headers.h delete mode 100644 Framework/app_include/src/app_nefinfo.cpp delete mode 100644 Framework/app_include/src/app_pipe.cpp delete mode 100644 Framework/app_include/src/app_register.cpp delete mode 100644 Framework/app_include/src/app_sensor.cpp delete mode 100755 Framework/bin/Nef delete mode 100755 Framework/build.sh delete mode 100644 Framework/build_lib.cpp delete mode 100644 Framework/buils_obj.cpp delete mode 100755 Framework/deploy.sh delete mode 100644 Framework/doc/App development process.md delete mode 100644 Framework/doc/framework_usr.md delete mode 100644 Framework/doc/work.md delete mode 100644 Framework/ext/TinyXML/demo.cpp delete mode 100644 Framework/ext/TinyXML/tinystr.cpp delete mode 100644 Framework/ext/TinyXML/tinystr.h delete mode 100644 Framework/ext/TinyXML/tinyxml.cpp delete mode 100644 Framework/ext/TinyXML/tinyxml.h delete mode 100644 Framework/ext/TinyXML/tinyxmlerror.cpp delete mode 100644 Framework/ext/TinyXML/tinyxmlparser.cpp delete mode 100644 Framework/ext/baidumap/aks.h delete mode 100644 Framework/ext/baidumap/map.cpp delete mode 100644 Framework/ext/baidumap/map.h delete mode 100644 Framework/ext/curl/curl.h delete mode 100644 Framework/ext/curl/curlver.h delete mode 100644 Framework/ext/curl/easy.h delete mode 100644 Framework/ext/curl/mprintf.h delete mode 100644 Framework/ext/curl/multi.h delete mode 100644 Framework/ext/curl/stdcheaders.h delete mode 100644 Framework/ext/curl/system.h delete mode 100644 Framework/ext/curl/typecheck-gcc.h delete mode 100644 Framework/ext/curltools/curltools.cpp delete mode 100644 Framework/ext/curltools/curltools.h delete mode 100644 Framework/ext/libuv/android-ifaddrs.h delete mode 100644 Framework/ext/libuv/pthread-barrier.h delete mode 100644 Framework/ext/libuv/tree.h delete mode 100644 Framework/ext/libuv/uv-aix.h delete mode 100644 Framework/ext/libuv/uv-bsd.h delete mode 100644 Framework/ext/libuv/uv-darwin.h delete mode 100644 Framework/ext/libuv/uv-errno.h delete mode 100644 Framework/ext/libuv/uv-linux.h delete mode 100644 Framework/ext/libuv/uv-os390.h delete mode 100644 Framework/ext/libuv/uv-posix.h delete mode 100644 Framework/ext/libuv/uv-sunos.h delete mode 100644 Framework/ext/libuv/uv-threadpool.h delete mode 100644 Framework/ext/libuv/uv-unix.h delete mode 100644 Framework/ext/libuv/uv-version.h delete mode 100644 Framework/ext/libuv/uv-win.h delete mode 100644 Framework/ext/libuv/uv.h delete mode 100644 Framework/ext/map/map.cpp delete mode 100644 Framework/ext/map/map.h delete mode 100644 Framework/include/datastructs.h delete mode 100644 Framework/include/globals.h delete mode 100644 Framework/include/glsdlfuncs.h delete mode 100644 Framework/include/headers.h delete mode 100644 Framework/include/helper_3dmath.h delete mode 100644 Framework/include/neffuncs.h delete mode 100644 Framework/include/nefsensor.h delete mode 100644 Framework/include/settings.h delete mode 100644 Framework/include/userfuncs.h delete mode 100644 Framework/res/mus/1.wav delete mode 100644 Framework/res/pic/1.jpg delete mode 100644 Framework/res/pic/default.png delete mode 100644 Framework/res/pic/map.log delete mode 100644 Framework/res/pic/map.png delete mode 100644 Framework/res/ttf/segoeui.ttf delete mode 100644 Framework/res/xml/path.xml delete mode 100755 Framework/run.sh delete mode 100644 Framework/src/datastructs.cpp delete mode 100644 Framework/src/glsdlfuncs.cpp delete mode 100644 Framework/src/main.cpp delete mode 100644 Framework/src/neffuncs.cpp delete mode 100644 Framework/src/nefsensor.cpp delete mode 100644 Framework/src/sensor/README.md delete mode 100644 Framework/src/userfuncs.cpp delete mode 100644 Framework/src/uvmain.cpp delete mode 100644 README.md diff --git a/Framework/app_include/app_conf.h b/Framework/app_include/app_conf.h deleted file mode 100644 index 4a8e2e0..0000000 --- a/Framework/app_include/app_conf.h +++ /dev/null @@ -1,2 +0,0 @@ -#define SQL_USERNAME "fanghr" -#define SQL_PASSPHRASE "" \ No newline at end of file diff --git a/Framework/app_include/app_nefinfo.h b/Framework/app_include/app_nefinfo.h deleted file mode 100644 index 7206946..0000000 --- a/Framework/app_include/app_nefinfo.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef APP_NEFINFO_H -#define APP_NEFINFO_H -namespace nef{ - class app_nefinfo{}; -} -#endif \ No newline at end of file diff --git a/Framework/app_include/app_pipe.h b/Framework/app_include/app_pipe.h deleted file mode 100644 index f8d55d0..0000000 --- a/Framework/app_include/app_pipe.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef APP_PIPE_H -#define APP_PIPE_H -namespace nef{ - class app_pipe{}; -} -#endif \ No newline at end of file diff --git a/Framework/app_include/app_register.h b/Framework/app_include/app_register.h deleted file mode 100644 index 6d57e4e..0000000 --- a/Framework/app_include/app_register.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef APP_REGISTER_H -#define APP_REGISTER_H - -namespace nef -{ -class app_register -{ - private: - string path=NULL; - string name=NULL; - string icon=NULL; - string arg=NULL; - bool isconfsuccess=false; - bool connect_to_sql(string username,string passphrase){}; - bool write_to_sql(){}; - public: - app_register(string app_name, string app_path); - app_register(string app_name, string app_path, string app_icon); - app_register(){} - ~app_register(); - - void conf_app(string app_name, string app_path); - void conf_app(string app_name, string app_path, string app_icon); - void set_icon(string app_icon); - void set_arg(string app_arg); - - bool regist(); - void delete_app(); - void stop_app(); -}; -} -#endif diff --git a/Framework/app_include/app_sensor.h b/Framework/app_include/app_sensor.h deleted file mode 100644 index 62db5b2..0000000 --- a/Framework/app_include/app_sensor.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef APP_SENSOR_H -#define APP_SENSOR_H -namespace nef{ - class app_sensor{}; -} -#endif \ No newline at end of file diff --git a/Framework/app_include/headers.h b/Framework/app_include/headers.h deleted file mode 100644 index f345197..0000000 --- a/Framework/app_include/headers.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef HEADERS_H -#define HEADERS_H - -// std -#include -#include -#include -#include -#include -#include -#include -#include -using namespace std; - -// posix -#include - -//uv -#include - -// opencv -#include -using namespace cv; - - - -#endif \ No newline at end of file diff --git a/Framework/app_include/src/app_nefinfo.cpp b/Framework/app_include/src/app_nefinfo.cpp deleted file mode 100644 index 9355785..0000000 --- a/Framework/app_include/src/app_nefinfo.cpp +++ /dev/null @@ -1,2 +0,0 @@ -namespace nef{ -} diff --git a/Framework/app_include/src/app_pipe.cpp b/Framework/app_include/src/app_pipe.cpp deleted file mode 100644 index 9539183..0000000 --- a/Framework/app_include/src/app_pipe.cpp +++ /dev/null @@ -1,3 +0,0 @@ -namespace nef -{ -} diff --git a/Framework/app_include/src/app_register.cpp b/Framework/app_include/src/app_register.cpp deleted file mode 100644 index 0ce8207..0000000 --- a/Framework/app_include/src/app_register.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include "../headers.h" -#include "../app_conf.h" -#include "../app_register.h" - -namespace nef{ - app_register::app_register(string app_name,string app_path){ - this->conf_app(app_name,app_path); - } - app_register::app_register(string app_name, string app_path, string app_icon){ - this->conf_app(app_name,app_path,app_icon); - } - void app_register::conf_app(string app_name, string app_path){ - uv_loop_t *loop=uv_default_loop(); - uv_fs_t *req; - if(!uv_fs_access(req,app_path.data(),F_OK,NULL){ - isconfsuccess=true; - name=app_name; - path=app_path; - this->regist(); - } - return; - } -} \ No newline at end of file diff --git a/Framework/app_include/src/app_sensor.cpp b/Framework/app_include/src/app_sensor.cpp deleted file mode 100644 index 9539183..0000000 --- a/Framework/app_include/src/app_sensor.cpp +++ /dev/null @@ -1,3 +0,0 @@ -namespace nef -{ -} diff --git a/Framework/bin/Nef b/Framework/bin/Nef deleted file mode 100755 index 2e670865a9c30a1154732fcd3c54c2fc5d5cbd47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138416 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

&xDeb zEUS15>%=-h{lWCp4kSaOOsD_)2xF^s?9Vc`PRICk{2sBv6~n_WU%`as@s>lxi!t`a zed292z`l;;*t`?6SFE{!36CIQulNl}x38O(hRA*5&}c;3B_t<24cYF3Y}b&>7XWhA zy~IfanTC`Jd&T3K%p@=OiaX~q{C^MzeqK5p(ZURycPRFXtFfjU(L$UTBKsh-12UUO zKzqfn!M72C3JgOH8Ze-H(dH48CFmspJs<*sC=wK<66<6IdcPn$$&DA!BoXkKRDZze z6CR>~{!*uZa0Ck=;DUhKBR}E*{-@4K{~CsZ$-(=B(kz3=Utny`!B`Nv=%CTM6UG6y zf3}WHLImhC?b0$;DT-3R+%F}GQq!d&^Bto0f+%^k&lwC^Xo_%T-vkOm^225!prVV(O~2?Lqgm+>&`egXNd zsBuUPALs+zjoymm>ihI z2F05?hsLsMlOvVhd#;=fCg(RSlZKw=rv?;UZE`%e>@(X2K(+?pZNB>yfK=vEi=C!3 z11SA)7BC-QuH6cUIamGMrk6TBTSQKu~@#p@QLq zVwFy3^(9D=qA07cHB}&IP+a7K3mZ5=G8$x9Sk$WJ8(;satL@^OWyIY*{HAg0Oq z3F}q-N|A^76=E@dKakayA(Rh&F(i6j72$G+D~4)mx~4_?$WhfkE35rJ@-yxCn@qJo zlku@mwXY+7g?Jmk52CUw#D@s|PFDLZS4BhOJy#6X^5H`I)QtrP`591u(At*|8_xoh zcQ^yypoJw!mq&LO6(GQKk(~(ibDzMEJ{pQY21@PlG4B|fa<3A(ddKjKM9k}0e_(*u zu|7Q?0dAfaBd|jdR$a&1i1?tW(slDX)?*+KRl4hUu44r?T+(%{ZH+mSbpG5g-{Ip0 z&fOY#lFk$R_;}%FKF80X`@nMcf9a^OHV8{l(7f3ChiPn%RK|bq8*j z9X_aGU-Uv}opCep?+^@MDXvGSUny>rza8@TQu%u=euu=>x||Z=9?Ze~Fotam6<{G2 zoBUj>{#f3Iai2#=iRAPv#p6(QLt>$ZSE_KOj!_l93!>DBr7En`IaGzCAJaKf70RdZ zQ5$p4HaSuiwzj7JyLAp#;RPl~s=`ZLIXxyvs=}*v4pre^ljBx}w`c&W!p|#! zxGKC$XHplvU`k6}bid9~s_Z2w+LwClRhV$WT!1+Nj zQ>U}$`BRBRKPAO_ zkA9Vjsm;!-QiI};y7(a!f7j4pm4Ldx>KwLW^cQq1By}I?9CB<>EWya-=SjpakZ{3K zf1L}-#^*>)F&@xh^x{uHy!_Xjci?%eW+!*(8^tJJq06(L9#fC(r}K4=s;5iG*x3ga zT)eZN)|t-%$>=YVSV_baldgF4{3rH*RleJ>;%{DTdYaPrs6ev`giN5tq0D*?KrIA}c$Z&)a}N^BH^?6gIRMKfgwq^|Fk4Euxp%`8t~@x5#Y$WD<%D z;vZR;Wo6;pk_!)s9Xk7eQFur^?Lsvq{-t9dB5zQPEmVm3Y{Q2V(ed6L8xkk#GQWjV z8x)gujJuGzM{77G5P3RAfyjD7vdJh1M|<#rviO^BL(asa1mXu80|g>qV!-Z0 zs)?6$j#9Hf)iEU=r)ibu{W>NtRj=ufj~|zdA>l^v@>R|uu~MTt5vYd5Y8^WRG0gCM z^ONs;?$*gQLUt6^Jo!&y{-lxg2A!3qa;%JvqrQwK2+dZv&nL=*8X*2`u1RSzMcN-@ z5t{Q~K#@W5s4kKYw$>pFGr-Z$=6>A;G>`z)rB@E9{6`u{ovpo=5PL5nHUc|Ze&iXM zeBIZiIAnG-JgLe2K$3Z~EVwVf(xdfmt12iNKxGEnKhZAC7ONjlC zD~5+0=wxA%tV}FlJ2%sN0dFk?bI5e-z#j1%UE~aqN!jDG*?fHVEuFrB$@qwU-$DD5 zSBXO+ZK2BN+HQ}Su4C#M?FBl~oeLXo)7n-2xAR2gLzR3wH~zg4|>679Q1bAG2Ff z&!E4e0e6!#cm|z+%`@n~*LiBC&VSaPAJuCECxq`r}*Zdmj0-CY#vrx^?2ZTGed{O z8)I?mhVQ)l4vSkMU;GyA5{Je9^|0CFn>!Jae2fSAy(R6iIL$_JeDiNc<#*Z%5=@KmN@?eDj|}B!X2Yzxm^U;Mdt$UE!Pm5ON*> zW&GyfiAY8r#1-HCc0{(Jjr``{XFn!J?)Nr#hkL_t^?yuc?$7w$qc^^O*B21})c(;b z{Q6z@zJBN)w2x;y{EnzUB({`em4@$ukny50xZ8v>ko_T zSHSj;uWvL6_yA4e*EiR5Nbp`iza!Q>DmuWiH^HdWdKo$-MxO%?1o}JHK}q79zccL-al&}C9AEx@Of25NFxu1HnbX%A zisj7OlrszeQf6B$)^+ZjIl->*Z2VIkvm1lq=APNOHa`dda!#lz7VeD9>Gdt{=xh!x zgdiPR3lk&0{QI!@Y!__J_&z2U>_0aF^RdxJW5HOsDclik4bADzT^!uF5XDFB&z#y6 zio`YdbT7a8tI(Xyt=Nd;n|}qm_+Ml2G6}x#hvhc4sq09g};<7v#9P!Qj{UK2e2!2a1 zIwbxWgk>Dx(u%|4)h1{We0|$6FrI~W=QpqVun3NTLm{0k(zh_}2{Z&3_A#BB15hzZ~Q=o`UDs@b#aI$cT}U zJACsmwI31pPQbAozWn=n5er5vewQu9@B_p7&EJ7~ZkmC&hw#mBMq~_X=hqiNq!k?J z*SB9-;skNlnCwyZm{Z5ppL~KCdor3j#Tqqg5t3j!*Fo?oZK_q44g1MSmObX&QRj_f zWW=Wc39;oL#=Y|;Or{WJ*#hyArz1WG5Tmk%J!aG>mScL>Xa`9la!2cEdRaE3W3q(; zjf^4ir%u*UM#jcVVyGBepaiplaRC^Tov%;>*Ww9G__R&{fhys|(;;ss6$#sG$T=Ai z*(TO7-jhJ;go$VZsXAr0SUf?2MNm^SKu=9aUOwuW$N)yXp{Fc67bPa8f$*|yQ_JLO zpll-2bK-4SJRx@!i9CI@uH}s6T1e8F?!>ZeR?g%pPI7u=Og#B4cd~(e(>T|G-QcWeTxo$p^i+RB4CF=aSGC*d}E7J0SDbAr4NES?B6L1SIE*=XeOvDf? z)CEws$dTG~)_1P%UWgX{aao5V&3r;Em~BBuoJNzTg-)d!4ikZsYqJlB2WO)}`*`D+PuJ>n-(wLnPI2SV0!6v9e4_Kc#uOyRae;F0<}LBSU5G zL{-O1$rw4tRR7_42)!pqpc-BkCu*Hh2}NtIa!`QT3Plwb99FfHj)A4p&zDJ(=O(Gf zfl5~}webX}*>w&{vI>~_&jTOuW?6jHD*dxYj@xv2jygH$N^-8@N>l}?4!1M`w!~mpLJ1ElqswnP= zlgI`{;!!+I$OxO3FLiZSz7-j>Je%WolMaFh-8zU_8~;jx1VGDUvr%#WgcHQLjN(!bDHpF*NFO)*N$ocNN>93%l2SK>ti}0kuE2o{+-(eWmFH!mUx2#l!IT8W>9cnojNL{ei;U>B-fuLUsof7a+Ul#27@YKdL*LiY1D z?i6tTS`n8<4%Qr`?SlJyeD-4+YyNBkB;j@^z$LI^k0$TNB@;;Db>IyDUN8T$$8S&} z^xKUISX5nmU7X~bimH92;%3bajremYyga*E_d|2G7L8kEc}~~thg-ojBc&9|eL}8O zQ1@-Rc+My_^X+%a@#G)9sb!lU+N{XH-HwJVehd{LqQ=v z95WifLLeDm5$$fW=JZ6n=Y%6o?LEz*IsJtNfr9*5?cqpI|E$(X&z#0^ENTI4&g|K9 zLjAEh{C5l8B~+w6+&HJTsp;tA1qO3Mp`+oV1JOi?rWrHl6sX$W)yYas+DhzQnuD=mG}hhI6pPMoBfneQ zqs{FtJ&`6IM<%x5dC2rYmxo$hS=^MiSvItEtU277t3Z09q3#5jaAbBuU^LtmP;Eg9^kfri0A>q29abBNbq6U%h(=@Wfv#Yf^#D%x z8G9_Wf`l#x)M1a0qZ3bu!2P&SvL zU^`M15Xh8ZtWy_m>ImXr>__bHL3`>3qsvSdOAYgV1jBW zz>tGN22DdSQlO`*b`Oqu3zQ+K#_aAgrY$+#e#RklfN8 z3bnTP#8|Teko}j7Fi2I*M_4sfN*IzMH4!a$WV8}Zq%)#`bqFow&_WtCTWfn~W3ZjH zLCm9}SPVl(#}FLA(}u|Ul%fzd$iCFAkmeTTs;CNpY6Q?C)&&`nm_Y@oYj6YPNncKxwRD zZa83Pu6_L#??P{>XGZo@<#xa`4gVbI1sAQEHRpo53!57n&TFtYt+h{FU~i1sC$`w( z{dPm_vICddFIxN4((E_4yi+cz@}6GiEq=v&`ggp(vl^lc_x`lk?wj2ZwX?hn-0`#w zJLp}ImY$cEacNrmR75v#w?CDWmTvcYW0zlX;6Pf&9ci}xJ?sTC>@RQiED?x3XT2vp4VF+}&C`(0bAIjTPh>=7|`1j@!PWW zV()~z8@#RfZv%fp!ChN`SJ=N0EA8)W@$T>MvPbVv8-Xp1J=%+a9cA#Itup))w>I{n zt==aaQ1a~E$lfRrIx)sj4)SJrUzX$-f_7wVj3Mom9E4h0c9i$oSur%r&f1OCKML@+CD?JOc zAws~w#Mk8y@i{RN^!%l-fr>ACwj=zVOTFU|nf;JG5VLb)_WJ!x@4ox)I~u&|zt+F$ z061rNzvGI0V7&v$n0<%0?|Q%N%?8HDw|KV$z?=;GsY}_H-}JCSzrDmeyZjORe=P3;>H_;gNCX0&5$}w!e`0xG zgETz4RRHh@7A51+t;wP>fINT8Blgd&*X+Bt&bEJH?S=^7WgpzS+y1TPDHPfEpRJYl z^~n0O<(Vfuus;fD8gnhi_CbdoSX16`)c+VFlPO+}D|-+;jWoA=D#RhFt$^XJ#Z-qd zSbmdg@Boz2a44?cN*w>TJXJ!expWjgQY=ea_GAv`?^_RHv_H0WtqiltU)YM2)iUax zZBJcmuk$Xjr|!4c?YF0TciZc><4+D^64aXmK&l6p8!m#PUJkHbTRl@*-#e0(ySA=$ zg}2KvahP-!#;B4xp0k9)pyN6?N7Ft zmwxSkS}eGUZ21(qvgtL3sOvT*@(=KL(K8Z>_MG`2#-9X1 zX#w~X z5=Pix-0~X4_`8BK_Ue|k2p<$JE6W?c-O%tT2HWSh?1s7+`8-Gc?a2I*h~14+cWxp4 z4ArW74#XL2y{|*#7p{W3m*e91_8Y<*^DLWSzr6)RHN!53_VwCFtl2XBr0;sfUJ%q@ zJGcB7gV<}ovgOH3Fb&(S-f{LcZ%zXeywBVBi|uyXN_+fTP(8E-$x-0{nOIdjrn|BpX(JSQv9_+{`w1=8bht&h`$#LrRAYW9d^+>`!oUYDjI2P^=1)^d6n`9|d;LF1TxjE1h z?vBO+oh|;-aEH~}Ay?2HjnP77HlSJ0lj3^wiD)l6`RW9KCfZE9zvC=Y?J3mkx=<4q53bqDgp#b(*O`Tl>0nJNFT2E|AIEFpyicouR z2nU-%U#=DDjJ0)l_61~nQWIuhffS{7Y@5-FxHPp_f{yNRu)T#1n2)V8A~*0 z2pg5vo$c5bg1{zKUe$lpIQIEMn*tb+0dAE^XKijk%4s#WTkXr(mocjc0NCS#x1C+8 zS1-5--QcjL*OEJMR8i0kDGYV@S{!R-Ja4v=d8(*iUgIyR^Ve8yA&w}Owx+74qBOwq z*Ab3bTii;B)Th>|g@MXId$=PU^LIcoIHFUuWWYC1Hng%6L!+{j8+kwXp^8x{jKQV( zP=k2yF@TqFny?AoD7TS;WfdjM152wat84tVwSl^-Kom zj6i^Ux`3(D7!+Vg1zJZlh4J%6ODy!aXzE`K=O6gHbC`ySl72!07{4x)2RoR$wV6*g92NWfflik97n( znu7ym0VLlCvJ(tWzPyBJ0U8W+N-%u$l7xr~p{hH~nYy{z>I*kRu4+P2uz@sCPsuT! zmy01Txxv5DP-r8m*bGisfwHQ=va$+)psT$H^mDpPVTj}gF$^&ZARpAGp3&IgBOM>m;&7p26j%bYQ z9CrotIAEM%BKuYmINuFb=#CVr^-yzXPb22|o(L2U)*eb#lH9m-`tlO&d#u|xw>hK@ zej$G~mp28dw6e1qda|iaRZ~%0UkzpIsC^=JD-GY=8mX75L;Tf60g5L@v%0*g2*?6U zJKH06SjeU9D$A-X*?BFHt-dB} zi4^&0uovp3r9IdhRT)x>oGEK*E=9L8+#jgyfkBsT<5H9jNlowj=DXH~dNx-&DP;kf zkCiRvwvbXOsgX6WiQSI2Vxs7>!jUehlK>WGJU(b`FAcSaVj->R)w;FZ-%wv|L5X5f z(j96Ep*Yke*h1Dx?cyUbJBT z30c@1$mMigjD28CZC9wNr#;xMN?4bJ7sQxsmKh5foUaZI| ztUS=F6175>d%g0&29>ChwX0Z%`V&!qI@O;p^=Ff_!p>>zM7t#ssn56ENp*B${A1ow zeJm07D7gXAvX(4J9%JQk`5tC^n;&d$hF*>M{at+q2sNEn|d1^*c9|* zL9_>kqi*gOQ=Mv@4w1uc3HG|>TDE=jr9$t9g+y{b7>SiNRy5A_`#&Mo`4n_%{nElK zEdge?Xc(L)1=u~i6*)U~7>}fa3t(p;H8nTGvH|6I8A%7UzAdlT8n?V!>)i5ct#!+* zwcahS)|$7xTI=5OYOQ_CtD%2WoW`+0mu9C9J!xU3o4nnbkC_AuWLiH`ttC&b($HCf zE@`2p(NCHwQ(Ai%{cy|;2CxS(rw3q8)RWCJ{Oj_P>C3PT)&b4*Wj@XHWj@XHWiV#6 zwl9GQ=*1%s>E*T(XXNz#hf2`f8l@J3u$f{BD*Z#~!Z25H>e%8rua`zewJn9^6K2&| zCk(7sODxpRg+XBxhH@l8gMyn4LF!Zcgr8-~74xa|?22b;Noip@prX2)%OJ=qwOD_3UQDOyY8MdTprKWa8*|Iu{41`fmz_Jfh zV3k?y9aFDCPc(HxLBR5guHRS^vwZUd6=h2TtNk^#u#^Sr8mj&1v;rj>=(Rvg2Rz~0 zIy*vh+IoVK*23I*zWKRxupFDS3~QTEUuXA5xrdTA3w0m^BXuC!1{D{c4(xI+r? z7)Y6~Qk`tvqgNVU%0oar%$y^wzls`t+`?fJ0J!vhQaf;PBia>F)?ZjgusT<#8m_Y% zry0&^P0D>^CQ7OGQq?rR+_(WBYcQ#j^$w;4A_TJ_*Udd#K4T%rCc_X~vbL;NTS7l6 z^{(A9BTEGu91I6CtVVQz8ylCpm@vH};p>!hq%T!CrucEDg+(XsqjS z(ukQrp3Bt620qDoqmeB+t*Hs2epUIZsx{JPAD?G12@iY7=i|u))*bRZqNdgtsLcyl zI6ID1QHQ&{Jk|7)f@;Emtilll%cr&m;mMJlQvH|)nqaHLsbC-)f~3P9f>RQ1TY6%( zP|_Q5eiZ4f>FmJeJvleluPUwL3JfL`8HaJUtg1BSrlcqW9a`I0`s+$qcihxMi(yGe zV;C!ZWoeOADl@iOcIud3d+Jz%sog9-b)H`K>zH2q>sW$q+^2T|IuBa`Xp!zvusMK5 zx77t}oZ5@4qnKtKTg0NEipmo=tCfy5NAP;iPt79e@U^4EEYDnw$kpp_MP_aSBXScM zk*k;E8d9&xbu57`xe08^O<+rIp=1ON>uaj4RiPHza3yn=ncaxljF`QM*^1}}FLQQ(0WJQjxbFOAMOr$S*40!f z%!*-o32e_xU_0DKTpg5`!1lZZw&x|VJuiXnc?oRKOOQsqZqNa>6vOg7iak=4173DZ zUpG7&q=3>I=j5LmC@+86XgoD-{kqY7@nWNaJ;|=eW}h|6YwQ4 zJ3oQh`9&DiaI)!W)F6+Ho5dTnpeF*I(sdTU}M_x0X~@Ret;rt@$-qK_hv^$4+pKM91EHWL^`Gy_rtWf50nOf?XUQ@2cpY%WX?;=%+WE==HbVFITM6F7~V>%Dzi`*nwuW1Hjd zVQs*T6nPex67wB7gw3uqq7G=mLM*{xpxB6w3NOC|a5JbmP=#^8VFH)V)OkFwTUw^| z#t{#W=;JfR=b{8Y7bWnyD1pyK34AU};B(PDy(~1Ij>-~5yHv8{YCfF_`j<=Sxea&?RoAK8!eJ)`+A)s2rcDwO>Ti$t?N$6=Y$ zMdj52V{1yi9+#1~!>SI#D@Gx&u37`LVl8;%E1;V&x7d_PY00WtzC@!1Gg0 zw=mcC!Cb3ZELW9SLCMQtad(|AT+55WSp^0sIHxS@ic)#N_C$X!1m)3`GtiWN4wT4? zdu=$h<|e)nJ{rM+Kt~jIL9j(F3ngD1E8MEO+NFWol4bq?iA6UY-#i+GFK2n}+yK0? zWFusu6cifPcEE$JbgBs81SM^rlHsro!$~u+%D*Onf6mGn_*ExW_?OjHm(=)IF-n`y zlKQ&3s#Wk+fq60-f^jRw0RvW;eS1p!4J=>_6dOvE$tG1=fa_S6O@+U#a=COXPr0?K z!(gT$7i$NiYbraUtrTfn`55M|IC%tr9x_|{{ko6esX^PMoi4Qn-hAz8t(WcR z)7J+Tl?N~;s-ZKqQP9`}WtQ@Cl@5`T-rQ12TRl!V9iOcfso`o*IUmvKfzGJ%L>QCG zQrP^vmCGNx&^ZAsP`ZcfDL6{eD?@ubq^5^Bh}9r*PSpxID@o7jL>WDv*Av`U>Gc$Y z&!hYUPaVcSfj?3{+?wcx7g$&1NLjDyE&uuTB^9-pO{A}1{76u_a3uRxLW~n!?~=T9 zIW70Mbaz-$?cc0>g>JVlv6TM8QeZfzK)9u$0sesDC{OTkVFSyNoSq1s{X@+;m>D_B zKmH8O?Q*5NS$Vqo26bSdE>4Vs`7QOdnOoU<4G7o|p39iJ+pjz!otg?{X@6P#UF z)fNQGV4hRPwrsU|144oY zBaSAxZiU+j#V^7wfK=T$233agpfdCGtdV_5?9No{qswKryoZM+uyh@!uBMuf>orYJ z@;+)leX8k|CGR%Ly8(n8eiqIHy7;M+Ka453zZ-rKs;S4h+JGfesXj+JzrL!@U%I41 z4mEkgE4@-kt-m9T%XaWg!9g&TB^L;RD1Vdg*i`tJmn>~iHK#DKVRfo}NaDMM&c+Qq zScBnDJMu}FdUN0#>uh9Y4$qf54iq)&Tn47Yvb7YN=5`EdtiCFP{cH8#2CJn7_bqq{ z299Wt8}YRUf;xPa3;$F)X#Nywvwl+>Ox=JY8Hw_(!V-Pw(+ zF2s>*RgGgDCQuLNL1$8=nVg(XiH2dU?VPG==Lg`B3oior!|Cg67-e0J@IZ)PC5zue zoI7l4p*%W-7n%F$P`*qPj5ps0I5N?F#(ZE_2S zF=jJ)rh(xfpx3wY_{Iq`J;zwE)^V`lvG;&H{N8LFh?Z1WTYVj&4#076w#W;(%DBXx zjNX;=y4P}b9V8T!Tl0`L%ozpPSl!u$>xJFne!1=JrYjrJ%KNyyyi$wJJ6vAXA$B*G zaBl0(0_Q#|JzA6QqdN2T|Jy#V^m?u3JyLls)#%>T);YdBtQXBKy-sWm_{hyh=?+uU zyrCx=bB%4S@E!LN>>hjR1JKsT?SQqsLR##t-e@21lR``K2$f4CX&v5x1Av&t>u<2e zU^Ka1Md!)+Ni7Fc8)f>IT0%>@L!XQ{h2}2SCt9Z-ef3u^DCMFeAa832aDUTZv)W%O zt&&M;(l(itCM}dnY0@5?lqRjhNon&fa~(xao9v0yBqv{Ay1?2fsS3D<9hJ7kYLPd7 z0~}DCOq+T450|Z@)uC>ABiQPacTyegPsd8ik~UV$CD@9pO20)fdo^}B45IKe!`Y+0 z%WZWu@?yTF?t}%~yV`PCtf*RAt~6swB@V4?OIFGKI1b55YW#I6t7>|Z zs5?~3r`%j2H{RKD<%S(a$403(1A#Eko#j?9c?e=Hq!;}u%-YUG`(G?>)wYT^`C!p= z=9`o`;q1Gy)8QP?6KUCZso!y#N4q3dB6=}^KCMx2D+HtJ8MV|`1PQMs7`7j8ua&PI znqbO>r9KyYQ{Ld;W$a0!j>~rLv)+lL;!)_3dJUFj_NLV!nhB0)yZZXp#E7hJ& zWf;Jxf^HRk@XLj>0{c-ta)*_Qx*LRx6;g{-mn`>7ZmS)y6@Y2Qs51yd2zTMJq=NAZ zV;+S|@q%ERJam^j09zX3X1|qGRJgShj3w0-@HmVggp}0RRgniN&I@v3sAXlCB^Vb3 z@>LIYH8oXUW4m-L13I3-3mbRv+E`w&G1@N;kMhYBscW!Yk+;pIy{dw~y;e;JujX;7 zFFo|#!%J}vH>$8dR?43S6zNUnoH??0V2w?+HK|CB_Dgm4fAh7Iqf%Jqfts@AE9A`L zvd$cR%q{gkMdSSXG6@|w(V4NtR=HPe@>+0$lOMPRHI#DeeYqIWj@I_GVQ^fKkG$kG z%Ztk?qo(CcT_bmPlWZ)^pKyI0(65lB+G}Cl{ID8%$(K@vIR{TY7)Pc5|F#G4bJTAK zNxdP(U`Y)um!Dvrk#IFiZMn>%727Pl^I)7t`r8F;J^)k1t zELiG6g;XsVbf}JBTtSPHF0D8oTk=^h^%lhlETqu>?Em1j=E3>)xrDx`uME1 zU0xb&hWjutvZKWDlouu%o=le2RxLI5(c@eFs(2ud8!vd90=JxE-O8wdW@^9jl+{g= zsL~|89P^7huS;_NvV3_IB{`$i;WSk5kWhDREFbpUmQc0aDA&e{%wAu4SgPygq%p-A zn)fO&OGvW^ZoJ4NAbs+a((c>b)uG}BH)$$fUO{`W^0&t=CF$G|@XO7=nnHu}`H0jT zG3@z|S}F0AMs3H2Ik&}IBk;aefR+AL^(l9?T!lIo0vIXRR#oG^o9sTCuxXsZwKUk1 zdax{aTsZ3dYwPN3;K1Rph6_Y3R%*%`B@OjbHH9z}%D2d{Gv);}E@E-bS-Ma`BS|M= zsZ5U=Oul?*-BR4W3`gW$Ob#kX7v;!%*yxmD-GW;16me+Lx#vo&w{}mVzVIFMv>@U2 z7#0;Fc>dg35>CU~7M|+u5k3d?Nn(r?l>TnPE_Vy!_?_X zx<04-O_F!)K^s512R!CL=nK7&2T8b{3pbTk3`N;6MIfR?+EO!`S@5D zu;2ooV4arTygD4}>!RzUlySM^jC;Asb7(kl@_{?lk)k9g-Y1mr&a5kPW?(*yWDYnL z5w#U1wJR)HZ6^fLACVprJi#)Cf|R7uoal2ll#MN^#bxHQ+VZ$6R-2j}ymg2;Ns*pRU z@u_1l51Z;o{!*pn=#_q~d!P==0U8(PV08qc&b^i8Q@`cNo(Rxi#%<;0;S$#N`nn|7 z?g@{Ga@(L6@b#66W8~wUK9(W4(<2|HupsHwQlJm1;j5tElnNSyf*tM^LKxFqQBWKIypvT;Ao& zIzXD5YRac`I@Dmw2$Gb&bavAI2bCo&U5D3FktoMS9JXQx##^oEU`V(0Zj=Xgcok0G zd{j(7p4}OSHo092b#$p6SxQRL*%-MekdIwk6>&ky6&Ab&)q#AfeX6{a;wEEx53jYm zv!@I88tAnr`soK02z0%g*tu?^uV)9G>*%i)cd3s*5nb)`QOju4L3N9Kb^#|1 z(pN8jvK^@HY!5eE^QEg9)-<@R#x=3j?tIt}JL+LxWstm^y&HqJUc)u)y$ zIMHh_h~r6&TIyhRA%#)epOinh@*9#*D(Htbq`JjpRV#v8;i8ZKgB1oBmx%{|TmaGw zLA|UE{~x^S#($efK7MNMiF00*hthJ1F1NqhI}uB7^<2pczqFdd(;SD|18R$`y@^s# zh-N9E#;cUyqs~XL)ptLmrkBm?Zl>m-^QeYnBjw>}AXobGgd@tQCmd<8U~!XIYA9av z7*e^;8%Jhr=Z<3=(e5`m_rkM`czl_g51dEPjv*hMO<93Cmt)j9rQ4hw_glhx3=?gt zN>-mzsdZm!8wt!s#wC%vSl~21_{Uh>S!qWs$0?$%k@q>PIuIUkKDX0g`p6aoGk5l+&<7sKRwsl z$u~EC#)EdDh|4}AwNEu3kx`31+Hi3p%_lE#BA_2|tPb*V7{1fac~rjJV2u36l|niq zIY$<_&B>*G0vUM*RC-0OK{mO?e~S;Toqtc@4s=+v)dD7Q#j6y#x4i?rygT)y|s zE5Q;}`XkF-3@S@$UUm%oYX4{+c91LHkGKCMd5cP3@^Z4G?EHFvt$eRK?#(7w-|{I7 zJh^~>mH=~GBP1$v*%8)7#ZR*Hu;NlcbbVD5UkLg(^JTA_XC~X-i>AA!*W|K+~rADW%%J zydOep0PN+cj zWhB8F^uqB8Uqbd0bm}?L#Fm*trp-WTDM{73`W4*R{0n4xLk_u0c!zFk!DizjmY9%( zba&UcGc(@dJ57UZvaMfX!oefnv5!IKG+mvUorhyp^<0JzspJNu)eT(!nz zZh8T8zgV)A11sWxN>nz@p6bSz95d?gYp{uj`M!o~!0Z`A3o~jq$pF#x4NI3KKCsmzN(R%b zGQALwHk(UEevQZBw1Eh%gjd_Q@qDgc9%c4s<4eOa24Be-VT4(hma$;0=iTxJW`#%m%?-a^p&rFt0ErD6#?nN+1TVnT>+j5@ zo(UYr%ZO=akGFoJ&z`Bnqd>vD6P9sm0?iD4mLB!2)BC$ju=jhL(HHPo6kR&}j)Jco zDlv-xl}e`vGdiwGxnnsxqFLuCC!-n-X&`n4dB2iB@_y)vq-XlsST#geNQXAj}4F zSxoG`bMy$I8_V@^E9Y$`X!Jq%IXueptHrH-nO3|T)~|ky+4RU+tGD@^m=SuF9OX2~ z^BP=;O%zeCkN2Kp$EeSCJ^;jGBet4`j`{~G($1?zLonJ|tAItm?&w!eJZb`QPI{jWX3UWiMT(YzlN>OR@tRb~* z-EGvHm^paOPEWh-(T4{*NQ*87+!*p3dZ9VhOk%+pT`SbQX-6%(J8-ZZ&(bRWUX4H# zA0AzV;02VM-ZD`w-_f6qzu2IqYVvgk<i}*8o6cCg6(mdKzD$l_qkLh_M_Rfpso5o^Qt_ZfqB3oTL`Zj~gQBbLF$|B)ROk!L|` zfqhIeJ&7u)H5KbhqySB*-PvNGP9cnnx@RI^>X5wPETfYu3hsS2a;6 z>7sL9q`Sd}d{*-KkoA$5R)WJhpw%&=NJJ z-05gHO4W^~&!bHp#sIHm;D)*`jMKoi>hi{&p-oAv2bpz>&@$ zhjgM0;T!2Z=JVag74qGKeI=CtLMf+up}JWgKHrr4Y0~DsZQYh6i#ltJ+>osxc`mO? z>A<5W8pwF`MCWWhe-NXK#c0a&Q?SRz!rQcXU91*4tgu+>fIpfb_*?1bx8goVl~)?L-P$EFlQ)-12BA- z)B)-(d2SqfqQRp_Pjt@K15+Q5Os+$6yO=}cds`#1LW=%P6csYQK&BA)%D79}~>4W9(n!J**0tVaS9)x_>S5Q(k@_u2Ce_z_)NirX?-8q^vq(j5?~_x0w_U*| z=zw66y3)?>8=~_ip)~Ax>=7G8$2QK>V<8tnsb?9u+^BN;3>)jQ3>MMmlln&mfh0{i z=wFE%OgX9{2av~7oZ2XQ$kOXVmfBd4I*R3}e|utepAM-5wo9;+)U6}!LpXwlBJ~lY zGX9TK!y-5?h;wU$^ugHF7eaRx8|(2LYMzPJ?FxBrV?7Q)&5L0lU5Mi&q~C~*+8r{= z#(I2&nlo3L%Am#)^wGw8e1w`ZQ8zA#<0GV($3_L~(Z+gwgqm!uZhxrAY^=uts2K?R z=t3MHA$?P9)Zd4Uvauc?q2}|VjyjL?hH!9aWN9OkUrgfS>(Hd23?NT_ICWoa{-Kch zHrAsKY95Hqx^xH!569*s`A8CHn-66GdGf=lr(*L*L+0C9k26T!*E6$-xkc{ zG4^n%Jb-yF#{PQLpZ99fks*UAL=Jp8Xk?7k%W~0u>pd35nrU% zBe^QdE{!BCF;7c4LJmbL9b05lP!D5@R6UX_BK2F4ghEzd?{V9CS}GQIp)=w3iE_&C zwky~K9T4=~1ZIoQrN~yja@L6LG9BAEPdj_Zaw9iOXrW;xurmcqZ3jt+d#2ps2aKT{ zz7rbj+gOk9@c9k#ozw;I;5OFdKh(fCdhp!hD@q&ZQH3&?9~Fo6KK0>-KHmW2vlCZHJAEBl>GRk=u=0Y5!Al)Au6&&K*SdURq z^MzPlu;6X1r&OWl%aM;xN9aNvA0hovY*cWFZ(}_^Ld`E@bwM9(tj9;F`F+?&7vlH` z>A%EA%?~v$U}npBg)X+b5O&X{=7PLKDBY=%JRY$ckeqaxLGuu$X$VIr375(e$*Flj zBNYEXCTCxd1e=h2u)@Gd7m^2sWipMmm{hBr?G#$977vY$ai{%VJvm#ALLP$!@^Ue5 zUM?m##m)?Q>@1L%i*fUEF}YGZFXVA^fxKLdo0p5p&9d`C9=8?9%f+~PxtLta&I@_m zT_7(PEv#pEus^D32V^z`^zMe;u* zRs)hR3Cn-2-Y#eF66(8FU5snDjiKp(+iYa<)dE?$7&j{y<2GsJaesllT#TESi*cJY z^7wv%yj+Z%my2Z3T=ddp~k)L=p-)$HpNXK_|ToK@#c>(9Ypv(cBc}P>1CEBfB=kp(PQk z4#|BHYcrB}M65a_VPBEjY}-XF+o+Xd%oI^{qPku!zhvGSL$CumMJGZUGNS1O_3MNqt$Q_%juxV@(@uO}?*L4vC82Mh4U&V-%mK zr-sx&Ck#M3*3@8Y@)^)O&vI*_AtDL%8y=Mr=cSNG~w&+ed1r=19NDf6(4M+|Pixw5Cwv^Td)`19J zhvWkh%PEa#<(~QP(V# zDgnt)MJ%V*_k73{@32rZe5X{3Q!c!9VhO8_RTLwniOtfxLw)zDjUB`hJw3=+RrmK{wEcNGb;3Xp+|&b zZU~bi%K8EKN5Nx)xu{X%~%)G|lGj+exq zx2qT5c>P86W6Gs?xyfm&(9?us$_A4vwmomR9N^arlD}<-tsgkpJ(iue{D-Rz2dhGR zYF_`Jl)j68cl2zYu!a3R{yo9W2{LvEyJ2%Rl-uFy+_t`Ta>9ts>qEKQ zcEPWsA`d;by#3)0KKj5{LpC0trhGxl`3|A@pv1<9aQKvAw|pdkd~JDrqw$pF^R!TW zg<<1EIDD;PV17W!SGSfr1|__lmV4*A-6=;@Gh>Jo}_ zv+)?=&XmF4ETI@f+IaA95F7@H81>rt^W~$+AC;RkPYV5|P#cf0v0st%_<9>(O51qg zUKf1HB7=aOjkj_50vcaB+xXAOm#N}oOREQ9NPpP`=+ zYVWTwQT^BiVk~*sbN87B`FBFGnS?EG`xBB2q6DRxfJyD%E-N&Dzj(YhgscUEW@Ke>S**^ZsYJr!3imLGPrzwkLi9rp6yttvMA^v_hP z*~g!yQeOV)j*ZMHQD+4BvjhD11o+a;T4zg?bQccae;Jpkl!a8(@|BvTUOsN0m`aQy zHB(I&e;LO=wxmeWB(=OhoT9n3Pm1QxRHYW4A50jJw|Brd6TetZQ#<7jd%|R5&@V@S zj2~`I@u33#Gn8iji10D(x<~l?E&M&iXZ`3IZlYuU9il&h1zY54&x?uA`iCt&6&mke7a_mW8b4iCSa0*X zG~e}?{qU8~4#F!n!@2Hm7QTI*eo5A~30#^}D~B#Ap3SGbw$NuLu6k7XI!`iVvyo z%%_+l>|L4+q_IG%WVaNl6>L7eR(wx7M_&)pZ z4Db(V{xr2mM)K%E{xN_b)qJ;~e_Zq|kba&H_3vp)%#n1GyrS_*j!C~6;7`%z;Ns^J zzm)nVyMJCld@g5<6k4Qy8v=S-h|l%gEai{()2H>%QZuZ2xnAp;rh4Zao0f}dHwE#r|7|m^g20rZy?|A z2KWyL_&*Qup9}C`4)BXlFy)UqmwNJ(f73MIq?7;84Dde~;4cgC*9Z8mnorl4jOg)T zdvySREAjdI!gvYy@p}UJ`vUxjG@ttaxyIY9IQ_!_{z>9tB=BBL@kxnfR&1F_PD?9vTNuk#YckS3u960RP?q|4@Mc1o7Ga z-I6ct|7igKwC21_;UmN3j_RvWGnl-N9v2r z)4ytsC%@$S-68yS0X-ik{`AEA4V2q<;&Z#Q#}yyb_*t~RBBeDW-@ggyzbn8$MuKcV z7E$aJJMRtP9}Dn*7T_Pz{AucNxlz1N+W$+$_l>(KW?4sfS!*u`RNHi6d$xaNZ*FkK z5*;BRkF}_qg2oeOVL5?JC`b!xpAiX)yxZND?HerX&Ghw`Exbr;72b*^dP8nvty!XD zJ5y@ahD{KOPJ6?!xAyf@Ou?;N%P25S`tquJ+TyyQF`cGh%CxI~2L;ZeUF^Hk6jHaF zLhI6&=RN86&Yl*Ea?nN_+~+u?2t^U>>g}WeYHejpmt45e52CR4-5s=Be_v)tnq#`{ zpx_e}buHaC(ABkrL=s0jq)4 zD_1tGXiQT``86v@OZ8Q2D{E`2NMhC6ru2%{lE>=mdMdtTSZPyDTYJghWIUg6#txJ5ttC@I)oN)=6-QYrlW13 zHq+Zc!MHnGb=0_pi>Xm0jw$d}D}|0rryFal;CoFY?S~#!4V~bMY1DzOdF%aE5~>TE z&$oAO$oA1j=@ei-y=iGrx8C*sVn&+%?@b+)&E+sc7%Zb4hkhVi@se=M-5Y%!hUZQOZ#ey$SFcJ@oj`MOO1Hu0J= zpwL1!ZPZvgC@w7*?n-Vkm2KMxC^9NV@Xh5SZMfu!O&KKi|Br20%+W?T+$9x7W8=!S zsZ|cqCvjMr$>BD19L)C4b$$KYIBGb>8STz>(q{8qf)};YhW6d*fnF0og5yZ*z5ZAB zWwR)9C!mfg#`b|sUt2oUdi6j@AC+a*#*LNBYtjp8?oGE1iawa>2wlR561Z zZZ0b^N837WpIQHvwJcSY>FwuGnsiNO2dOcv>FJ@;PnKyP1+dEG^2^jjy3RKviU1#n zomomT4LC#ymkV8>rV<8Ce2)bxoz>x#Nf!lSuys)_RQ2@qwUtw)T|P+7$#j-gofP1l zdde;e86E{7(T3Au9hIZ$2e=;eg;~zmcXZit-$kcLcOodI4ii9X`zb(qZlIIfK1DQX zH8HDWv$&~9wU{7rIxGXV+3IX3b-GR`+3*b}-9S8*HeM;y;Yf4nA}8O)+T=9<>=U+S`bIf_Kw-!Yg~nSr*B9&@#J zc5vlzZAcTRKCC0BJJDY1fym-Spcu)m9Q9-_E$;GdGp$=UsYw`KPKGD#Ef6kxZFVc) zZ4kLC&3!&@#(6zH^{H{7H+{)U>q=7qdkTE9)vajmt@&O}O^joc>d-cP*I1#$jI`0s zBpD8o?ih3l>h6wXRp>Zj>sGBvOPP>~Yq=gfrBBuUp>DqVepX&hfC0K-KU!(JNs?^1 zCeyo|h8t8dx-R1Athxs=S2uZ1(Y4#mErmk6&=p7#(I`MQ_f>J3R&$x^bNMyFO_F=^ zN?qfmtfRY4{N+m^R5aYYxigS>q4_$gNg$Xn*JFOi%Z*Z%<#u%SXIh9-jA~7{Aw^Y@ z?dw%#6e}uQM&14e6hKLi+PeqJS_V2g+b-y6Q)PU#EkomlvbG)Fq|Z=_<)hC~+@lw?mxm@?h%)TrdJqkC%)(wUYPiV%sTP70We zG?fyPbeBg`G|9mJuOvLfSVVs^jF0BGG0$z!G%_~%n@b1uXdTI89vn241XCK%L16O& zprkzJ%R%P>DAbm(CjNgPKi&iTF|Q7~TIA$)OEgaiwQDJHGW|jRup~f_%7Yla?$PCh z=Q6x+5f}29rw7d-W5V#yF260rJD#u~^ZB3;Ybm9m2Kj(~l+M4EkjK0~D9?NH zkL_nWVL$Wu$M3bdOra0!13-sG0Qo~6{_i4L_KEfL594&bT%oE^#-7& zdD8rD*8D(u-YzMRbqSz5;h4z5emPY8EqToQf%f6WmiGM2n!A#8Wj%+dl zw!M%C9VOUl33;s77!`TojJCM_g8v&j!7d_ytn2vI81m5fJ4)c%U>??g92WUzsTj0x zl$zr)90H_ zdchB49;a;i(}`j87E}B5#-9O&jwld4s$q%$TIpv j`$PZF{hQUqv_RbyqqSs=@}C}%Z -using namespace std; - -int main() { - system("gcc -fPIC -c src/datastructs.cpp -O3 -Wall -lSDL -lSDL_image -lSDL_ttf -lSDL_mixer -lGL -lGLU -lglut -lSOIL -std=c++11"); - system("gcc -shared -o lib/libdatastructs.so src/datastructs.o -O3 -Wall -lSDL -lSDL_image -lSDL_ttf -lSDL_mixer -lGL -lGLU -lglut -lSOIL -std=c++11"); - - system("gcc -fPIC -c src/glsdlfuncs.cpp -O3 -Wall -lSDL -lSDL_image -lSDL_ttf -lSDL_mixer -lGL -lGLU -lglut -lSOIL -std=c++11"); - system("gcc -shared -o lib/libglsdlfuncs.so src/glsdlfuncs.o -O3 -Wall -lSDL -lSDL_image -lSDL_ttf -lSDL_mixer -lGL -lGLU -lglut -lSOIL -std=c++11"); - - system("gcc -fPIC -c src/neffuncs.cpp -O3 -Wall -lSDL -lSDL_image -lSDL_ttf -lSDL_mixer -lGL -lGLU -lglut -lSOIL -std=c++11"); - system("gcc -shared -o lib/libneffuncs.so src/neffuncs.o -O3 -Wall -lSDL -lSDL_image -lSDL_ttf -lSDL_mixer -lGL -lGLU -lglut -lSOIL -std=c++11"); - - system("gcc -fPIC -c src/nefsensor.cpp -O3 -Wall -lSDL -lSDL_image -lSDL_ttf -lSDL_mixer -lGL -lGLU -lglut -lSOIL -std=c++11"); - system("gcc -shared -o lib/libnefsensor.so src/nefsensor.o -O3 -Wall -lSDL -lSDL_image -lSDL_ttf -lSDL_mixer -lGL -lGLU -lglut -lSOIL -std=c++11"); - - system("gcc -fPIC -c src/userfuncs.cpp -O3 -Wall -lSDL -lSDL_image -lSDL_ttf -lSDL_mixer -lGL -lGLU -lglut -lSOIL -std=c++11"); - system("gcc -shared -o lib/libuserfuncs.so src/userfuncs.o -O3 -Wall -lSDL -lSDL_image -lSDL_ttf -lSDL_mixer -lGL -lGLU -lglut -lSOIL -std=c++11"); - - system("gcc -fPIC -c ext/map/map.cpp -O3 -Wall -lSDL -lSDL_image -lSDL_ttf -lSDL_mixer -lGL -lGLU -lglut -lSOIL -std=c++11"); - system("gcc -shared -o lib/libmap.so ext/map/map.o -O3 -Wall -lSDL -lSDL_image -lSDL_ttf -lSDL_mixer -lGL -lGLU -lglut -lSOIL -std=c++11"); - - return 0; -} \ No newline at end of file diff --git a/Framework/buils_obj.cpp b/Framework/buils_obj.cpp deleted file mode 100644 index d543192..0000000 --- a/Framework/buils_obj.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include -using namespace std; -int main() { - system("g++ main.cpp -L./lib -ldatastructs -lglsdlfuncs -lneffuncs -lnefsensor -luserfuncs -lmap -O3 -Wall -lSDL -lSDL_image -lSDL_ttf -lSDL_mixer -lGL -lGLU -lglut -lSOIL -std=c++11 -o./bin/Nef"); - return 0; -} \ No newline at end of file diff --git a/Framework/deploy.sh b/Framework/deploy.sh deleted file mode 100755 index f8c5658..0000000 --- a/Framework/deploy.sh +++ /dev/null @@ -1,32 +0,0 @@ -echo "Nef developer deployer for Ubuntu v0.01\n\n" - -read -p "是否先更新软件列表? [Y/n] " response0 -case "$response0" in - [yY]) - echo "执行列表更新"; - sudo apt update; - ;; - ?) echo "跳过列表更新";; -esac - -read -p "确定安装依赖库? [Y/n] " response1 -case "$response1" in - [yY]) - echo "执行依赖库安装"; - sudo apt-get install build-essential libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev libsdl1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsdl-gfx1.2-dev libsoil-dev wget; - ;; - ?) echo "跳过依赖库安装";; -esac - -read -p "确定安装开发环境库(g++ & clang & git)? [Y/n] " response2 -case "$response2" in - [yY]) - echo "执行开发环境库安装"; - sudo apt-get install g++ clang git; - ;; - ?) echo "跳过开发环境库安装";; -esac - -echo "开发环境部署完成" -echo "Ubuntu下建议使用 visual studio code 作为开发工具" - diff --git a/Framework/doc/App development process.md b/Framework/doc/App development process.md deleted file mode 100644 index eb57168..0000000 --- a/Framework/doc/App development process.md +++ /dev/null @@ -1,8 +0,0 @@ -# nefapp开发流程 - -  一个典型的nefapp应具有以下几部分: -* 注册程序:用于app安装时向nef注册应用信息(包括应用名称、可执行文件路径、图标路径)并传送配置,同时设置应用运行时传递的参数列表,头文件为`nefapp.h`,必须命名为`app_register.elf`。 -* app核心:实现app主要功能的可执行文件,必须命名为`app_core.elf`。 -* 配置文件(可选):用于储存app配置。 -* 图标(可选):用于nef launcher 展示。 - diff --git a/Framework/doc/framework_usr.md b/Framework/doc/framework_usr.md deleted file mode 100644 index 087c719..0000000 --- a/Framework/doc/framework_usr.md +++ /dev/null @@ -1,675 +0,0 @@ -># Nef Framework Doc(for developer) - -   -Nef是一个让 [混合现实][mr] 技术走进生活的项目,以 [开源][os] 的形式将混合现实技术的原理和实现方法从黑箱中拿出来,让更多人有机会接触这个似乎渴望不可及的领域。 - -   -Nef的软件部分基于 [Linux][linux] 操作系统开发,所以建议开发者在 [Ubuntu][ubuntu] 系统搭建开发环境(当然,喜欢使用 [虚拟机][vm] 也可以)。Nef提供了一套代码,我们称之为“ [框架][fm] ”,开发者可以通过添加自己的代码快速构建混合现实应用。 - ->## 文件结构 - -  Nef框架的所有内容都包含在Framework文件夹中 - - ->### 1. Framework/src - -  所有nef核心代码文件位于 Framework/src 文件夹中 - -+ headers.h -+ globals.h -+ settings.h -+ glsdlfuncs.h -+ glsdfuncs.cpp -+ datastructs.h -+ datastructs.cpp -+ neffuncs.h -+ neffuncs.cpp -+ nefsensor.h -+ nefsensor.cpp -+ userfuncs.h -+ userfuncs.cpp -+ main.cpp -+ /sensor - -  其中,头文件(\*.h)提供API,与头文件名字相同的定义文件(\*.cpp)提供对头文件的实现,构建时除`userfuncs.cpp`都将被编译为动态链接库文件。 - ->#### headers.h - -  用于包括所有运行所需标准头文件以及框架头文件。 - ->#### globals.h - -  用于定义某些在框架代码中广泛使用的参量。 - ->#### settings.h - -  提供给开发者,用于设定某些系统参数。 - ->#### glsdlfuncs.h - -  包含了系统初始化以及运行 [Opengl][ogl] 、[SDL][sdl] 库所需 [函数][func] 。 - ->#### datastructs.h - -  包含了框架提供的封装类以及某些数据结构。 - ->#### neffuncs.h - -  包含了专门为系统设计的函数。 - ->#### userfuncs.h - -  提供给开发者,用于编写**内嵌应用代码**。 - ->#### nefsensor.h - -  提供了各种硬件操作的基类,用于操作硬件和传感器。 - ->#### main.cpp - -  主程序文件,包含了主循环等系统运行机制。 - ->#### /sensor - -  有关传感器的代码文件。 - ->### 2. /ext - -  该目录下存放所有nef插件的实现。 - ->### 3. 其他文件/目录 - -+ /bin -+ /doc -+ /res -+ build.sh - ->#### /bin - -  存放可执行文件,包含编译出的可执行文件,默认为 /bin/Nef。(platform: linux x86_64 or armf) - ->#### /doc - -  存放框架文档。 - ->#### /res - -  存放资源文件。包含 /res/pic/ 存放图片资源,以及 /res/ttf/ 存放字体资源。 - ->#### build.sh - -  Linux Shell编译指令文件。 - ->## 程序架构 - -   -Nef应用开发过程就是对一系列框架内函数的调用过程。下面是对框架所提供部分函数的介绍。 - -   -所有的nef函数都被放置于命名空间nef中,以组织代码。 - -   -Nef使用的默认长度单位为 米(m) ,角度单位为 度(°) 。 - ->### 1.系统函数 - -   -Nef系统的运行是一个大循环。当用户打开应用之后,系统就以一定的规律调用系统函数,直到应用关闭。Nef的系统函数有如下几个: - - -+ onSetup() -+ onLoop() -+ onHUD() -+ onRender() -+ onExit() - -   -应用开始运行后,Nef首先初始化SDL库以及Opengl库,之后调用 onSetup() 函数。这个函数一般做用户的初始化工作,它只在最开始被调用且只被调用一次。 - -   -然后程序进入主循环,按照 onLoop() onHUD() onRender() 的顺序调用函数。onLoop()函数在每一次主循环的最开始被调用,一般用于放置数据处理的代码。接下来调用的 onHUD() 函数负责覆叠层图像的绘制工作,而最后的 onRender() 函数负责三维空间图像的绘制工作。 - -   -由于Nef被设计用于混合现实目的,为了利用 [双目立体视觉][bsv] 原理,图像通常需要分为左眼和右眼两部分渲染,*所以除非应用运行在强制单目渲染模式下, onHUD() 和 onRender() 函数在每次主循环中都会被调用两次,请注意放在其中的数据操作代码,避免数据的重复操作带来的错误。* -   ->用户应用代码的基础格式: - -```C++ - #ifndef USERFUNCS_H - #define USERFUNCS_H - - //Do some preparation - - void onSetup(){ - //Do something - } - - void onLoop(){ - //Do something - } - - void onHUD(){ - //Do something - } - - void onRender(){ - //Do something - } - - void onExit(){ - //Do something - } - - #endif -``` ->### 2.对象操作函数 - -  这类函数一般封装在类中,提供对对象的操作/设置能力。Nef提供的可操作对象有以下几种: - -+ nefFont - + font - + .Open() - + .Set() - + .Free() -+ nefTexture - + texture - + texMinX texMinY texMaxX texMaxY - + width height - + .RenderText() - + .LoadImage() - + .setAmbient() - + .setDiffuse() - + .setSpecular() - + .setEmission() - + .setShininess() - + .Blind() - + .unBlind() - + .Free() -+ nefLight - + .setID() - + .setPosition() - + .setAmbient() - + .setDiffuse() - + .setSpecular() - + .turnOn() - + .turnOff() -+ nefBrush - + .setColor() - + .beginPoints() - + .beginLines() - + .beginPolygon() - + .addNormal() - + .addPoint() - + .end() - + .HUD_drawText() - + .HUD_drawImage() -+ nefAudio - + .Open() - + .setVolume() - + .Play() - + .Pause() - + .Resume() - + .Free() - ->#### nefFont - -  用于存储并操作一种字体格式的对象。 - ->##### font -```C++ -TTF_Font *font; -``` -  用于操作字体的指针。 - ->##### .Open() - -```C++ -void Open(const char *file, int size); -``` -  用于载入字体。 - -+ 第一个参数 file 指定要打开的 ttf 文件路径。 -+ 第二个参数 size 指定字体渲染字号。 - ->##### .Set() - -```C++ -void Set(int style); -``` -  用于设置字体效果。 - -+ 参数 style 指定字体效果。 - -  字体效果有以下几种: -+ TTF_STYLE_BOLD -+ TTF_STYLE_ITALIC -+ TTF_STYLE_UNDERLINE -+ TTF_STYLE_STRIKETHROUGH -+ TTF_STYLE_NORMAL - -  效果可以通过 “ | ” 算符叠加使用。 - ->##### .Free() - -```C++ -void Free(); -``` -  用于释放字体占用内存。 - ->#### nefTexture - -  用于存储并操作一种纹理的对象。 - ->##### texture -```C++ -GLuint *texture; -``` -  用于操作纹理的指针。 - ->##### texMinX texMinY texMaxX texMaxY -```C++ -GLfloat texMinX, texMinY; -GLfloat texMaxX, texMaxY; -``` -  专门用于绘制文字的贴图坐标参数。 - ->##### width height -```C++ -int width, height; -``` -  保存了纹理的尺寸数据。 - ->##### .RenderText() - -```C++ -void RenderText(TTF_Font *font, const char *text, SDL_Color color); -``` -  用于将字体和文字渲染为纹理。 - -+ 第一个参数 font 指定使用的字体指针。 -+ 第二个参数 text 指定渲染的文本。 -+ 第三个参数 color 指定渲染所用颜色 - -  *color 参数以 {r, g, b} 格式给出。* - ->##### .LoadImage() - -```C++ -int LoadImage(const char *file) -``` -  用于从外部载入一个图片纹理。 - -+ 参数 file 指定图片文件路径。 - ->##### .setAmbient() - -```C++ -void setAmbient(GLfloat r, GLfloat g, GLfloat b, GLfloat a); -``` - -  用于设置材质环境光属性。 - -+ 参数 r,g,b,a 代表颜色设置 - ->##### .setDiffuse() - -```C++ -void setDiffuse(GLfloat r, GLfloat g, GLfloat b, GLfloat a); -``` - -  用于设置材质漫射光属性。 - -+ 参数 r,g,b,a 代表颜色设置 - ->##### .setSpecular() - -```C++ -void setSpecular(GLfloat r, GLfloat g, GLfloat b, GLfloat a); -``` - -  用于设置材质反射光属性。 - -+ 参数 r,g,b,a 代表颜色设置 - ->##### .setEmission() - -```C++ -void setEmission(GLfloat r, GLfloat g, GLfloat b, GLfloat a); -``` - -  用于设置材质自发光(自身颜色)属性。 - -+ 参数 r,g,b,a 代表颜色设置 - ->##### .setShininess() - -```C++ -void setShininess(GLfloat shininess); -``` - -  用于设置材质镜面指数属性。 - -+ 参数 shininess 代表镜面程度。 - -  *以上有关材质光照属性的设置项目详情参阅[Opengl光照][ogll]*。 - ->##### .Blind() - -```C++ -void Blind(); -``` - -  用于绑定当前材质对象,直到解除绑定或者绑定另一个材质对象。 - ->##### .unBlind() - -```C++ -void unBlind(); -``` - -  用于解除绑定当前材质对象。 - ->##### .Free() - -```C++ -void Free(); -``` - -  用于释放当前材质对象所占用的内存。 - ->#### nefLight - -  用于操作一个灯光的对象。 - ->##### .setID() - -```C++ -void setID(GLenum LID); -``` - -  用于设置灯光的编号,编号取值为 nefLight_0 ~ 7。 - -+ 参数 LID 代表灯光ID。 - ->##### .setPosition() - -```C++ -void setPosition(GLfloat x, GLfloat y, GLfloat z, GLfloat w); -``` - -  用于设置灯光的位置。 - -+ 参数 x,y,z 代表灯光坐标。 - ->##### .setAmbient() - -```C++ -void setAmbient(GLfloat r, GLfloat g, GLfloat b, GLfloat a); -``` - -  用于设置灯光环境光属性。 - -+ 参数 r,g,b,a 代表颜色设置 - ->##### .setDiffuse() - -```C++ -void setDiffuse(GLfloat r, GLfloat g, GLfloat b, GLfloat a); -``` - -  用于设置灯光漫射光属性。 - -+ 参数 r,g,b,a 代表颜色设置 - ->##### .setSpecular() - -```C++ -void setSpecular(GLfloat r, GLfloat g, GLfloat b, GLfloat a); -``` - -  用于设置灯光反射光属性。 - -+ 参数 r,g,b,a 代表颜色设置 - ->##### .turnOn() - -```C++ -void turnOn(); -``` - -  用于打开此灯光。 - ->##### .turnOff() - -```C++ -void turnOff(); -``` - -  用于关闭此灯光。 - ->#### nefBrush() - -  用于图像绘制的对象。 - ->##### .setColor() - -```C++ -void setColor(GLfloat r, GLfloat g, GLfloat b); -``` - -  用于设置笔刷的颜色。 - -+ 参数 r,g,b 代表颜色设置。 - ->##### .beginPoints() - -```C++ -void beginPoints(); -``` - -  用于开始绘制点。 - ->##### .beginLines() - -```C++ -void beginLines(); -``` - -  用于开始绘制线。 - ->##### .beginPolygon() - -```C++ -void beginPolygon(); -``` - -  用于开始绘制多边形。 - ->##### .addNormal() - -```C++ -void addNormal(GLfloat nor_x, GLfloat nor_y, GLfloat nor_z); -``` - -  用于向绘制流程中添加法线向量。 - -+ 参数 nor_x,nor_y,nor_z 代表法线向量。 - ->##### .addPoint() - -```C++ -void addPoint(GLfloat pos_x, GLfloat pos_y, GLfloat pos_z, GLfloat u, GLfloat v); -``` - -  用于向绘制流程中添加点。 - -+ 参数 pos_x,pos_y,pos_z 代表点的坐标。 -+ 参数 u,v 代表点的纹理坐标。 - ->##### .end() - -```C++ -void end(); -``` - -  用于结束绘制流程。 - ->##### .HUD_drawText() - -```C++ -void HUD_drawText(nefTexture texture, int x, int y); -``` - -  用于在覆叠层绘制文字。 - -+ 参数 texture 代表渲染了文字的纹理指针。 -+ 参数 x,y 代表类文字绘制的起始位置。 - ->##### .HUD_drawImage() - -```C++ -void HUD_drawImage(nefTexture texture, int x, int y, int width, int height); -``` - -  用于在覆叠层绘制图像。 - -+ 参数 texture 代表载入了图像的纹理指针。 -+ 参数 x,y 代表类文字绘制的起始位置。 -+ 参数 width,height 代表图像绘制区域的宽和高。 - ->#### nefAudio - -  用于存储并播放WAV格式音频的对象。 - ->##### .Open() -```C++ -void Open(const char *file){ -``` -  用于打开WAV音频文件。 - -+ 参数 file 代表音频文件路径。 - ->##### .setVolume() - -```C++ -void Mix_VolumeMusic(Vol); -``` -  用于设置音量。 - -+ 参数 Vol 指定音量大小,从 0 到 nefMaxVolume *(128)*。 - ->##### .Play() - -```C++ -void Play(); -``` -  用于开始播放音频。 - ->##### .Pause() - -```C++ -void Pause(); -``` -  用于暂停播放音频。 - ->##### .Resume() - -```C++ -void Resume(); -``` -  用于继续播放音频。 - ->##### .Rewind() - -```C++ -void Rewind(); -``` -  用于将播放指针退回音频开头并暂停播放。 - ->##### .Free() - -```C++ -void Free(); -``` -  用于释放音频所占用的内存。 - - ->## 其他可用函数/参量 - -   -Nef框架内还有一些能够被用户所调用的独立函数,以及用于参与计算或配置系统的状态参量,下面将进行介绍。 - ->### 1.独立函数 - -+ Delay_ms() -+ getFps() - ->#### Delay_ms() - -```C++ -void Delay_ms(int time); -``` - -  用于进行程序内的延时。 - -+ 参数 time 代表延时毫秒数。 - ->#### getFps() - -```C++ -int getFps(); -``` - -  用于获取当前系统渲染帧率。 - -+ 返回值代表帧率。 - ->### 2.状态参量 - -+ Neffps -+ TITLE -+ FOV -+ REN_NEAR REN_FAR -+ DOUBLE_EYES -+ LOCK_FRAME -+ DISPLAY_TO_TERMINAL - ->#### Neffps - -  储存了当前系统渲染帧率,每次主循环被更新。 - ->#### TITLE - -  位于 settings.h ,储存窗口标题字符串。 - ->#### FOV - -  位于 settings.h ,储存渲染纵向视场角。 - ->#### REN_NEAR REN_FAR - -  位于 settings.h ,储存渲染最近距离与最远距离,距离之外的场景将被裁剪。 - ->#### DOUBLE_EYES - -  位于 settings.h ,储存双目距离,设置为 0 则为强制单目渲染。 - ->#### LOCK_FRAME - -  位于 settings.h ,储存锁帧帧率,设置为 0 则为不使用锁帧。 - ->#### DISPLAY_TO_TERMINAL - -  位于 settings.h ,设定是否将帧率数据打印到命令行。 - -[mr]:https://baike.baidu.com/item/%E6%B7%B7%E5%90%88%E7%8E%B0%E5%AE%9E/9991750 -[os]:https://baike.baidu.com/item/%E5%BC%80%E6%94%BE%E6%BA%90%E4%BB%A3%E7%A0%81/114160?fromtitle=%E5%BC%80%E6%BA%90&fromid=20720669#viewPageContent -[linux]:https://baike.baidu.com/item/linux -[ubuntu]:https://baike.baidu.com/item/ubuntu -[vm]:https://baike.baidu.com/item/%E8%99%9A%E6%8B%9F%E6%9C%BA -[fm]:https://baike.baidu.com/item/%E6%A1%86%E6%9E%B6/1212667 -[func]:https://baike.baidu.com/item/%E5%87%BD%E6%95%B0/18686609#viewPageContent -[sdl]:https://baike.baidu.com/item/SDL/224181 -[ogl]:https://baike.baidu.com/item/OpenGL -[bsv]:https://baike.baidu.com/item/%E5%8F%8C%E7%9B%AE%E7%AB%8B%E4%BD%93%E8%A7%86%E8%A7%89 -[ogll]:http://www.cnblogs.com/Anita9002/p/4402482.html \ No newline at end of file diff --git a/Framework/doc/work.md b/Framework/doc/work.md deleted file mode 100644 index e37a18b..0000000 --- a/Framework/doc/work.md +++ /dev/null @@ -1,13 +0,0 @@ -* 摄像头*3 -* HUD反射膜 -* 骨传导单元 -* 松紧带 - - -* 加速度积分 -> 得到加速度 -> 滤波 -> 向量积分 - -* 导航 -* FBX预览 \ No newline at end of file diff --git a/Framework/ext/TinyXML/demo.cpp b/Framework/ext/TinyXML/demo.cpp deleted file mode 100644 index 0a6cef8..0000000 --- a/Framework/ext/TinyXML/demo.cpp +++ /dev/null @@ -1,89 +0,0 @@ - - //______________________________________________________________________ - // Read information from xml file. - - // define xml file path, as follow , we use relative path, - // but you can use absolute path also. - const char* filepath = "phonebookdata.xml"; - TiXmlDocument doc(filepath); - bool loadOkay = doc.LoadFile(); - // faile to load 'phonebookdata.xml'. - if (!loadOkay) { - printf( "Could not load test file %s. Error='%s'. Exiting.\n", filepath,doc.ErrorDesc() ); - exit( 1 ); - } - - // get dom root of 'phonebookdata.xml', here root should be 'phonebook'. - TiXmlElement* root = doc.RootElement(); - - printf("_______________________________________\n\n"); - printf(" contacted person information \n\n"); - // trace every items below root. - for( TiXmlNode* item = root->FirstChild( "item" ); - item; - item = item->NextSibling( "item" ) ) { - printf("_______________________________________\n"); - - // read name. - TiXmlNode* child = item->FirstChild(); - const char* name = child->ToElement()->GetText(); - if (name) { - printf("name:%s\n",name); - } else { - printf("name:\n"); - } - - // read address. - child = item->IterateChildren(child); - const char* addr = child->ToElement()->GetText(); - if (addr) { - printf("addr:%s\n",addr); - } else { - printf("addr:\n"); - } - - - // read telephone no. - child = item->IterateChildren(child); - const char* tel = child->ToElement()->GetText(); - if (tel) { - printf("tel:%s\n",tel); - } else { - printf("tel:\n"); - } - - // read e-mail. - child = item->IterateChildren(child); - const char* email = child->ToElement()->GetText(); - if(email) { - printf("email:%s\n",email); - } else { - printf("email:\n"); - } - - printf("\n"); - - } - //______________________________________________________________________ - - - //______________________________________________________________________ - // Add information to xml file and save it. - TiXmlElement* writeRoot = doc.RootElement(); - TiXmlNode* newNode = new TiXmlElement("item"); - - const TiXmlNode* name4NewNode = new TiXmlElement("name"); - newNode->InsertEndChild(*name4NewNode)->InsertEndChild(TiXmlText("pipi")); - - const TiXmlNode* addr4NewNode = new TiXmlElement("addr"); - newNode->InsertEndChild(*addr4NewNode)->InsertEndChild(TiXmlText("Shaanxi Xianyang")); - - const TiXmlNode* tel4NewNode = new TiXmlElement("tel"); - newNode->InsertEndChild(*tel4NewNode)->InsertEndChild(TiXmlText("02937310627")); - - const TiXmlNode* email4NewNode = new TiXmlElement("email"); - newNode->InsertEndChild(*email4NewNode)->InsertEndChild(TiXmlText("pipi@home.com")); - - writeRoot->InsertEndChild(*newNode); - doc.SaveFile(); - //______________________________________________________________________ \ No newline at end of file diff --git a/Framework/ext/TinyXML/tinystr.cpp b/Framework/ext/TinyXML/tinystr.cpp deleted file mode 100644 index 0665768..0000000 --- a/Framework/ext/TinyXML/tinystr.cpp +++ /dev/null @@ -1,111 +0,0 @@ -/* -www.sourceforge.net/projects/tinyxml - -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 TIXML_USE_STL - -#include "tinystr.h" - -// Error value for find primitive -const TiXmlString::size_type TiXmlString::npos = static_cast< TiXmlString::size_type >(-1); - - -// Null rep. -TiXmlString::Rep TiXmlString::nullrep_ = { 0, 0, { '\0' } }; - - -void TiXmlString::reserve (size_type cap) -{ - if (cap > capacity()) - { - TiXmlString tmp; - tmp.init(length(), cap); - memcpy(tmp.start(), data(), length()); - swap(tmp); - } -} - - -TiXmlString& TiXmlString::assign(const char* str, size_type len) -{ - size_type cap = capacity(); - if (len > cap || cap > 3*(len + 8)) - { - TiXmlString tmp; - tmp.init(len); - memcpy(tmp.start(), str, len); - swap(tmp); - } - else - { - memmove(start(), str, len); - set_size(len); - } - return *this; -} - - -TiXmlString& TiXmlString::append(const char* str, size_type len) -{ - size_type newsize = length() + len; - if (newsize > capacity()) - { - reserve (newsize + capacity()); - } - memmove(finish(), str, len); - set_size(newsize); - return *this; -} - - -TiXmlString operator + (const TiXmlString & a, const TiXmlString & b) -{ - TiXmlString tmp; - tmp.reserve(a.length() + b.length()); - tmp += a; - tmp += b; - return tmp; -} - -TiXmlString operator + (const TiXmlString & a, const char* b) -{ - TiXmlString tmp; - TiXmlString::size_type b_len = static_cast( strlen(b) ); - tmp.reserve(a.length() + b_len); - tmp += a; - tmp.append(b, b_len); - return tmp; -} - -TiXmlString operator + (const char* a, const TiXmlString & b) -{ - TiXmlString tmp; - TiXmlString::size_type a_len = static_cast( strlen(a) ); - tmp.reserve(a_len + b.length()); - tmp.append(a, a_len); - tmp += b; - return tmp; -} - - -#endif // TIXML_USE_STL diff --git a/Framework/ext/TinyXML/tinystr.h b/Framework/ext/TinyXML/tinystr.h deleted file mode 100644 index 89cca33..0000000 --- a/Framework/ext/TinyXML/tinystr.h +++ /dev/null @@ -1,305 +0,0 @@ -/* -www.sourceforge.net/projects/tinyxml - -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 TIXML_USE_STL - -#ifndef TIXML_STRING_INCLUDED -#define TIXML_STRING_INCLUDED - -#include -#include - -/* The support for explicit isn't that universal, and it isn't really - required - it is used to check that the TiXmlString class isn't incorrectly - used. Be nice to old compilers and macro it here: -*/ -#if defined(_MSC_VER) && (_MSC_VER >= 1200 ) - // Microsoft visual studio, version 6 and higher. - #define TIXML_EXPLICIT explicit -#elif defined(__GNUC__) && (__GNUC__ >= 3 ) - // GCC version 3 and higher.s - #define TIXML_EXPLICIT explicit -#else - #define TIXML_EXPLICIT -#endif - - -/* - TiXmlString is an emulation of a subset of the std::string template. - Its purpose is to allow compiling TinyXML on compilers with no or poor STL support. - Only the member functions relevant to the TinyXML project have been implemented. - The buffer allocation is made by a simplistic power of 2 like mechanism : if we increase - a string and there's no more room, we allocate a buffer twice as big as we need. -*/ -class TiXmlString -{ - public : - // The size type used - typedef size_t size_type; - - // Error value for find primitive - static const size_type npos; // = -1; - - - // TiXmlString empty constructor - TiXmlString () : rep_(&nullrep_) - { - } - - // TiXmlString copy constructor - TiXmlString ( const TiXmlString & copy) : rep_(0) - { - init(copy.length()); - memcpy(start(), copy.data(), length()); - } - - // TiXmlString constructor, based on a string - TIXML_EXPLICIT TiXmlString ( const char * copy) : rep_(0) - { - init( static_cast( strlen(copy) )); - memcpy(start(), copy, length()); - } - - // TiXmlString constructor, based on a string - TIXML_EXPLICIT TiXmlString ( const char * str, size_type len) : rep_(0) - { - init(len); - memcpy(start(), str, len); - } - - // TiXmlString destructor - ~TiXmlString () - { - quit(); - } - - TiXmlString& operator = (const char * copy) - { - return assign( copy, (size_type)strlen(copy)); - } - - TiXmlString& operator = (const TiXmlString & copy) - { - return assign(copy.start(), copy.length()); - } - - - // += operator. Maps to append - TiXmlString& operator += (const char * suffix) - { - return append(suffix, static_cast( strlen(suffix) )); - } - - // += operator. Maps to append - TiXmlString& operator += (char single) - { - return append(&single, 1); - } - - // += operator. Maps to append - TiXmlString& operator += (const TiXmlString & suffix) - { - return append(suffix.data(), suffix.length()); - } - - - // Convert a TiXmlString into a null-terminated char * - const char * c_str () const { return rep_->str; } - - // Convert a TiXmlString into a char * (need not be null terminated). - const char * data () const { return rep_->str; } - - // Return the length of a TiXmlString - size_type length () const { return rep_->size; } - - // Alias for length() - size_type size () const { return rep_->size; } - - // Checks if a TiXmlString is empty - bool empty () const { return rep_->size == 0; } - - // Return capacity of string - size_type capacity () const { return rep_->capacity; } - - - // single char extraction - const char& at (size_type index) const - { - assert( index < length() ); - return rep_->str[ index ]; - } - - // [] operator - char& operator [] (size_type index) const - { - assert( index < length() ); - return rep_->str[ index ]; - } - - // find a char in a string. Return TiXmlString::npos if not found - size_type find (char lookup) const - { - return find(lookup, 0); - } - - // find a char in a string from an offset. Return TiXmlString::npos if not found - size_type find (char tofind, size_type offset) const - { - if (offset >= length()) return npos; - - for (const char* p = c_str() + offset; *p != '\0'; ++p) - { - if (*p == tofind) return static_cast< size_type >( p - c_str() ); - } - return npos; - } - - void clear () - { - //Lee: - //The original was just too strange, though correct: - // TiXmlString().swap(*this); - //Instead use the quit & re-init: - quit(); - init(0,0); - } - - /* Function to reserve a big amount of data when we know we'll need it. Be aware that this - function DOES NOT clear the content of the TiXmlString if any exists. - */ - void reserve (size_type cap); - - TiXmlString& assign (const char* str, size_type len); - - TiXmlString& append (const char* str, size_type len); - - void swap (TiXmlString& other) - { - Rep* r = rep_; - rep_ = other.rep_; - other.rep_ = r; - } - - private: - - void init(size_type sz) { init(sz, sz); } - void set_size(size_type sz) { rep_->str[ rep_->size = sz ] = '\0'; } - char* start() const { return rep_->str; } - char* finish() const { return rep_->str + rep_->size; } - - struct Rep - { - size_type size, capacity; - char str[1]; - }; - - void init(size_type sz, size_type cap) - { - if (cap) - { - // Lee: the original form: - // rep_ = static_cast(operator new(sizeof(Rep) + cap)); - // doesn't work in some cases of new being overloaded. Switching - // to the normal allocation, although use an 'int' for systems - // that are overly picky about structure alignment. - const size_type bytesNeeded = sizeof(Rep) + cap; - const size_type intsNeeded = ( bytesNeeded + sizeof(int) - 1 ) / sizeof( int ); - rep_ = reinterpret_cast( new int[ intsNeeded ] ); - - rep_->str[ rep_->size = sz ] = '\0'; - rep_->capacity = cap; - } - else - { - rep_ = &nullrep_; - } - } - - void quit() - { - if (rep_ != &nullrep_) - { - // The rep_ is really an array of ints. (see the allocator, above). - // Cast it back before delete, so the compiler won't incorrectly call destructors. - delete [] ( reinterpret_cast( rep_ ) ); - } - } - - Rep * rep_; - static Rep nullrep_; - -} ; - - -inline bool operator == (const TiXmlString & a, const TiXmlString & b) -{ - return ( a.length() == b.length() ) // optimization on some platforms - && ( strcmp(a.c_str(), b.c_str()) == 0 ); // actual compare -} -inline bool operator < (const TiXmlString & a, const TiXmlString & b) -{ - return strcmp(a.c_str(), b.c_str()) < 0; -} - -inline bool operator != (const TiXmlString & a, const TiXmlString & b) { return !(a == b); } -inline bool operator > (const TiXmlString & a, const TiXmlString & b) { return b < a; } -inline bool operator <= (const TiXmlString & a, const TiXmlString & b) { return !(b < a); } -inline bool operator >= (const TiXmlString & a, const TiXmlString & b) { return !(a < b); } - -inline bool operator == (const TiXmlString & a, const char* b) { return strcmp(a.c_str(), b) == 0; } -inline bool operator == (const char* a, const TiXmlString & b) { return b == a; } -inline bool operator != (const TiXmlString & a, const char* b) { return !(a == b); } -inline bool operator != (const char* a, const TiXmlString & b) { return !(b == a); } - -TiXmlString operator + (const TiXmlString & a, const TiXmlString & b); -TiXmlString operator + (const TiXmlString & a, const char* b); -TiXmlString operator + (const char* a, const TiXmlString & b); - - -/* - TiXmlOutStream is an emulation of std::ostream. It is based on TiXmlString. - Only the operators that we need for TinyXML have been developped. -*/ -class TiXmlOutStream : public TiXmlString -{ -public : - - // TiXmlOutStream << operator. - TiXmlOutStream & operator << (const TiXmlString & in) - { - *this += in; - return *this; - } - - // TiXmlOutStream << operator. - TiXmlOutStream & operator << (const char * in) - { - *this += in; - return *this; - } - -} ; - -#endif // TIXML_STRING_INCLUDED -#endif // TIXML_USE_STL diff --git a/Framework/ext/TinyXML/tinyxml.cpp b/Framework/ext/TinyXML/tinyxml.cpp deleted file mode 100644 index 9c161df..0000000 --- a/Framework/ext/TinyXML/tinyxml.cpp +++ /dev/null @@ -1,1886 +0,0 @@ -/* -www.sourceforge.net/projects/tinyxml -Original code by Lee Thomason (www.grinninglizard.com) - -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. -*/ - -#include - -#ifdef TIXML_USE_STL -#include -#include -#endif - -#include "tinyxml.h" - -FILE* TiXmlFOpen( const char* filename, const char* mode ); - -bool TiXmlBase::condenseWhiteSpace = true; - -// Microsoft compiler security -FILE* TiXmlFOpen( const char* filename, const char* mode ) -{ - #if defined(_MSC_VER) && (_MSC_VER >= 1400 ) - FILE* fp = 0; - errno_t err = fopen_s( &fp, filename, mode ); - if ( !err && fp ) - return fp; - return 0; - #else - return fopen( filename, mode ); - #endif -} - -void TiXmlBase::EncodeString( const TIXML_STRING& str, TIXML_STRING* outString ) -{ - int i=0; - - while( i<(int)str.length() ) - { - unsigned char c = (unsigned char) str[i]; - - if ( c == '&' - && i < ( (int)str.length() - 2 ) - && str[i+1] == '#' - && str[i+2] == 'x' ) - { - // Hexadecimal character reference. - // Pass through unchanged. - // © -- copyright symbol, for example. - // - // The -1 is a bug fix from Rob Laveaux. It keeps - // an overflow from happening if there is no ';'. - // There are actually 2 ways to exit this loop - - // while fails (error case) and break (semicolon found). - // However, there is no mechanism (currently) for - // this function to return an error. - while ( i<(int)str.length()-1 ) - { - outString->append( str.c_str() + i, 1 ); - ++i; - if ( str[i] == ';' ) - break; - } - } - else if ( c == '&' ) - { - outString->append( entity[0].str, entity[0].strLength ); - ++i; - } - else if ( c == '<' ) - { - outString->append( entity[1].str, entity[1].strLength ); - ++i; - } - else if ( c == '>' ) - { - outString->append( entity[2].str, entity[2].strLength ); - ++i; - } - else if ( c == '\"' ) - { - outString->append( entity[3].str, entity[3].strLength ); - ++i; - } - else if ( c == '\'' ) - { - outString->append( entity[4].str, entity[4].strLength ); - ++i; - } - else if ( c < 32 ) - { - // Easy pass at non-alpha/numeric/symbol - // Below 32 is symbolic. - char buf[ 32 ]; - - #if defined(TIXML_SNPRINTF) - TIXML_SNPRINTF( buf, sizeof(buf), "&#x%02X;", (unsigned) ( c & 0xff ) ); - #else - sprintf( buf, "&#x%02X;", (unsigned) ( c & 0xff ) ); - #endif - - //*ME: warning C4267: convert 'size_t' to 'int' - //*ME: Int-Cast to make compiler happy ... - outString->append( buf, (int)strlen( buf ) ); - ++i; - } - else - { - //char realc = (char) c; - //outString->append( &realc, 1 ); - *outString += (char) c; // somewhat more efficient function call. - ++i; - } - } -} - - -TiXmlNode::TiXmlNode( NodeType _type ) : TiXmlBase() -{ - parent = 0; - type = _type; - firstChild = 0; - lastChild = 0; - prev = 0; - next = 0; -} - - -TiXmlNode::~TiXmlNode() -{ - TiXmlNode* node = firstChild; - TiXmlNode* temp = 0; - - while ( node ) - { - temp = node; - node = node->next; - delete temp; - } -} - - -void TiXmlNode::CopyTo( TiXmlNode* target ) const -{ - target->SetValue (value.c_str() ); - target->userData = userData; - target->location = location; -} - - -void TiXmlNode::Clear() -{ - TiXmlNode* node = firstChild; - TiXmlNode* temp = 0; - - while ( node ) - { - temp = node; - node = node->next; - delete temp; - } - - firstChild = 0; - lastChild = 0; -} - - -TiXmlNode* TiXmlNode::LinkEndChild( TiXmlNode* node ) -{ - assert( node->parent == 0 || node->parent == this ); - assert( node->GetDocument() == 0 || node->GetDocument() == this->GetDocument() ); - - if ( node->Type() == TiXmlNode::TINYXML_DOCUMENT ) - { - delete node; - if ( GetDocument() ) - GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return 0; - } - - node->parent = this; - - node->prev = lastChild; - node->next = 0; - - if ( lastChild ) - lastChild->next = node; - else - firstChild = node; // it was an empty list. - - lastChild = node; - return node; -} - - -TiXmlNode* TiXmlNode::InsertEndChild( const TiXmlNode& addThis ) -{ - if ( addThis.Type() == TiXmlNode::TINYXML_DOCUMENT ) - { - if ( GetDocument() ) - GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return 0; - } - TiXmlNode* node = addThis.Clone(); - if ( !node ) - return 0; - - return LinkEndChild( node ); -} - - -TiXmlNode* TiXmlNode::InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis ) -{ - if ( !beforeThis || beforeThis->parent != this ) { - return 0; - } - if ( addThis.Type() == TiXmlNode::TINYXML_DOCUMENT ) - { - if ( GetDocument() ) - GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return 0; - } - - TiXmlNode* node = addThis.Clone(); - if ( !node ) - return 0; - node->parent = this; - - node->next = beforeThis; - node->prev = beforeThis->prev; - if ( beforeThis->prev ) - { - beforeThis->prev->next = node; - } - else - { - assert( firstChild == beforeThis ); - firstChild = node; - } - beforeThis->prev = node; - return node; -} - - -TiXmlNode* TiXmlNode::InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis ) -{ - if ( !afterThis || afterThis->parent != this ) { - return 0; - } - if ( addThis.Type() == TiXmlNode::TINYXML_DOCUMENT ) - { - if ( GetDocument() ) - GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return 0; - } - - TiXmlNode* node = addThis.Clone(); - if ( !node ) - return 0; - node->parent = this; - - node->prev = afterThis; - node->next = afterThis->next; - if ( afterThis->next ) - { - afterThis->next->prev = node; - } - else - { - assert( lastChild == afterThis ); - lastChild = node; - } - afterThis->next = node; - return node; -} - - -TiXmlNode* TiXmlNode::ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis ) -{ - if ( !replaceThis ) - return 0; - - if ( replaceThis->parent != this ) - return 0; - - if ( withThis.ToDocument() ) { - // A document can never be a child. Thanks to Noam. - TiXmlDocument* document = GetDocument(); - if ( document ) - document->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return 0; - } - - TiXmlNode* node = withThis.Clone(); - if ( !node ) - return 0; - - node->next = replaceThis->next; - node->prev = replaceThis->prev; - - if ( replaceThis->next ) - replaceThis->next->prev = node; - else - lastChild = node; - - if ( replaceThis->prev ) - replaceThis->prev->next = node; - else - firstChild = node; - - delete replaceThis; - node->parent = this; - return node; -} - - -bool TiXmlNode::RemoveChild( TiXmlNode* removeThis ) -{ - if ( !removeThis ) { - return false; - } - - if ( removeThis->parent != this ) - { - assert( 0 ); - return false; - } - - if ( removeThis->next ) - removeThis->next->prev = removeThis->prev; - else - lastChild = removeThis->prev; - - if ( removeThis->prev ) - removeThis->prev->next = removeThis->next; - else - firstChild = removeThis->next; - - delete removeThis; - return true; -} - -const TiXmlNode* TiXmlNode::FirstChild( const char * _value ) const -{ - const TiXmlNode* node; - for ( node = firstChild; node; node = node->next ) - { - if ( strcmp( node->Value(), _value ) == 0 ) - return node; - } - return 0; -} - - -const TiXmlNode* TiXmlNode::LastChild( const char * _value ) const -{ - const TiXmlNode* node; - for ( node = lastChild; node; node = node->prev ) - { - if ( strcmp( node->Value(), _value ) == 0 ) - return node; - } - return 0; -} - - -const TiXmlNode* TiXmlNode::IterateChildren( const TiXmlNode* previous ) const -{ - if ( !previous ) - { - return FirstChild(); - } - else - { - assert( previous->parent == this ); - return previous->NextSibling(); - } -} - - -const TiXmlNode* TiXmlNode::IterateChildren( const char * val, const TiXmlNode* previous ) const -{ - if ( !previous ) - { - return FirstChild( val ); - } - else - { - assert( previous->parent == this ); - return previous->NextSibling( val ); - } -} - - -const TiXmlNode* TiXmlNode::NextSibling( const char * _value ) const -{ - const TiXmlNode* node; - for ( node = next; node; node = node->next ) - { - if ( strcmp( node->Value(), _value ) == 0 ) - return node; - } - return 0; -} - - -const TiXmlNode* TiXmlNode::PreviousSibling( const char * _value ) const -{ - const TiXmlNode* node; - for ( node = prev; node; node = node->prev ) - { - if ( strcmp( node->Value(), _value ) == 0 ) - return node; - } - return 0; -} - - -void TiXmlElement::RemoveAttribute( const char * name ) -{ - #ifdef TIXML_USE_STL - TIXML_STRING str( name ); - TiXmlAttribute* node = attributeSet.Find( str ); - #else - TiXmlAttribute* node = attributeSet.Find( name ); - #endif - if ( node ) - { - attributeSet.Remove( node ); - delete node; - } -} - -const TiXmlElement* TiXmlNode::FirstChildElement() const -{ - const TiXmlNode* node; - - for ( node = FirstChild(); - node; - node = node->NextSibling() ) - { - if ( node->ToElement() ) - return node->ToElement(); - } - return 0; -} - - -const TiXmlElement* TiXmlNode::FirstChildElement( const char * _value ) const -{ - const TiXmlNode* node; - - for ( node = FirstChild( _value ); - node; - node = node->NextSibling( _value ) ) - { - if ( node->ToElement() ) - return node->ToElement(); - } - return 0; -} - - -const TiXmlElement* TiXmlNode::NextSiblingElement() const -{ - const TiXmlNode* node; - - for ( node = NextSibling(); - node; - node = node->NextSibling() ) - { - if ( node->ToElement() ) - return node->ToElement(); - } - return 0; -} - - -const TiXmlElement* TiXmlNode::NextSiblingElement( const char * _value ) const -{ - const TiXmlNode* node; - - for ( node = NextSibling( _value ); - node; - node = node->NextSibling( _value ) ) - { - if ( node->ToElement() ) - return node->ToElement(); - } - return 0; -} - - -const TiXmlDocument* TiXmlNode::GetDocument() const -{ - const TiXmlNode* node; - - for( node = this; node; node = node->parent ) - { - if ( node->ToDocument() ) - return node->ToDocument(); - } - return 0; -} - - -TiXmlElement::TiXmlElement (const char * _value) - : TiXmlNode( TiXmlNode::TINYXML_ELEMENT ) -{ - firstChild = lastChild = 0; - value = _value; -} - - -#ifdef TIXML_USE_STL -TiXmlElement::TiXmlElement( const std::string& _value ) - : TiXmlNode( TiXmlNode::TINYXML_ELEMENT ) -{ - firstChild = lastChild = 0; - value = _value; -} -#endif - - -TiXmlElement::TiXmlElement( const TiXmlElement& copy) - : TiXmlNode( TiXmlNode::TINYXML_ELEMENT ) -{ - firstChild = lastChild = 0; - copy.CopyTo( this ); -} - - -TiXmlElement& TiXmlElement::operator=( const TiXmlElement& base ) -{ - ClearThis(); - base.CopyTo( this ); - return *this; -} - - -TiXmlElement::~TiXmlElement() -{ - ClearThis(); -} - - -void TiXmlElement::ClearThis() -{ - Clear(); - while( attributeSet.First() ) - { - TiXmlAttribute* node = attributeSet.First(); - attributeSet.Remove( node ); - delete node; - } -} - - -const char* TiXmlElement::Attribute( const char* name ) const -{ - const TiXmlAttribute* node = attributeSet.Find( name ); - if ( node ) - return node->Value(); - return 0; -} - - -#ifdef TIXML_USE_STL -const std::string* TiXmlElement::Attribute( const std::string& name ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - if ( attrib ) - return &attrib->ValueStr(); - return 0; -} -#endif - - -const char* TiXmlElement::Attribute( const char* name, int* i ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - const char* result = 0; - - if ( attrib ) { - result = attrib->Value(); - if ( i ) { - attrib->QueryIntValue( i ); - } - } - return result; -} - - -#ifdef TIXML_USE_STL -const std::string* TiXmlElement::Attribute( const std::string& name, int* i ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - const std::string* result = 0; - - if ( attrib ) { - result = &attrib->ValueStr(); - if ( i ) { - attrib->QueryIntValue( i ); - } - } - return result; -} -#endif - - -const char* TiXmlElement::Attribute( const char* name, double* d ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - const char* result = 0; - - if ( attrib ) { - result = attrib->Value(); - if ( d ) { - attrib->QueryDoubleValue( d ); - } - } - return result; -} - - -#ifdef TIXML_USE_STL -const std::string* TiXmlElement::Attribute( const std::string& name, double* d ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - const std::string* result = 0; - - if ( attrib ) { - result = &attrib->ValueStr(); - if ( d ) { - attrib->QueryDoubleValue( d ); - } - } - return result; -} -#endif - - -int TiXmlElement::QueryIntAttribute( const char* name, int* ival ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - if ( !attrib ) - return TIXML_NO_ATTRIBUTE; - return attrib->QueryIntValue( ival ); -} - - -int TiXmlElement::QueryUnsignedAttribute( const char* name, unsigned* value ) const -{ - const TiXmlAttribute* node = attributeSet.Find( name ); - if ( !node ) - return TIXML_NO_ATTRIBUTE; - - int ival = 0; - int result = node->QueryIntValue( &ival ); - *value = (unsigned)ival; - return result; -} - - -int TiXmlElement::QueryBoolAttribute( const char* name, bool* bval ) const -{ - const TiXmlAttribute* node = attributeSet.Find( name ); - if ( !node ) - return TIXML_NO_ATTRIBUTE; - - int result = TIXML_WRONG_TYPE; - if ( StringEqual( node->Value(), "true", true, TIXML_ENCODING_UNKNOWN ) - || StringEqual( node->Value(), "yes", true, TIXML_ENCODING_UNKNOWN ) - || StringEqual( node->Value(), "1", true, TIXML_ENCODING_UNKNOWN ) ) - { - *bval = true; - result = TIXML_SUCCESS; - } - else if ( StringEqual( node->Value(), "false", true, TIXML_ENCODING_UNKNOWN ) - || StringEqual( node->Value(), "no", true, TIXML_ENCODING_UNKNOWN ) - || StringEqual( node->Value(), "0", true, TIXML_ENCODING_UNKNOWN ) ) - { - *bval = false; - result = TIXML_SUCCESS; - } - return result; -} - - - -#ifdef TIXML_USE_STL -int TiXmlElement::QueryIntAttribute( const std::string& name, int* ival ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - if ( !attrib ) - return TIXML_NO_ATTRIBUTE; - return attrib->QueryIntValue( ival ); -} -#endif - - -int TiXmlElement::QueryDoubleAttribute( const char* name, double* dval ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - if ( !attrib ) - return TIXML_NO_ATTRIBUTE; - return attrib->QueryDoubleValue( dval ); -} - - -#ifdef TIXML_USE_STL -int TiXmlElement::QueryDoubleAttribute( const std::string& name, double* dval ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - if ( !attrib ) - return TIXML_NO_ATTRIBUTE; - return attrib->QueryDoubleValue( dval ); -} -#endif - - -void TiXmlElement::SetAttribute( const char * name, int val ) -{ - TiXmlAttribute* attrib = attributeSet.FindOrCreate( name ); - if ( attrib ) { - attrib->SetIntValue( val ); - } -} - - -#ifdef TIXML_USE_STL -void TiXmlElement::SetAttribute( const std::string& name, int val ) -{ - TiXmlAttribute* attrib = attributeSet.FindOrCreate( name ); - if ( attrib ) { - attrib->SetIntValue( val ); - } -} -#endif - - -void TiXmlElement::SetDoubleAttribute( const char * name, double val ) -{ - TiXmlAttribute* attrib = attributeSet.FindOrCreate( name ); - if ( attrib ) { - attrib->SetDoubleValue( val ); - } -} - - -#ifdef TIXML_USE_STL -void TiXmlElement::SetDoubleAttribute( const std::string& name, double val ) -{ - TiXmlAttribute* attrib = attributeSet.FindOrCreate( name ); - if ( attrib ) { - attrib->SetDoubleValue( val ); - } -} -#endif - - -void TiXmlElement::SetAttribute( const char * cname, const char * cvalue ) -{ - TiXmlAttribute* attrib = attributeSet.FindOrCreate( cname ); - if ( attrib ) { - attrib->SetValue( cvalue ); - } -} - - -#ifdef TIXML_USE_STL -void TiXmlElement::SetAttribute( const std::string& _name, const std::string& _value ) -{ - TiXmlAttribute* attrib = attributeSet.FindOrCreate( _name ); - if ( attrib ) { - attrib->SetValue( _value ); - } -} -#endif - - -void TiXmlElement::Print( FILE* cfile, int depth ) const -{ - int i; - assert( cfile ); - for ( i=0; iNext() ) - { - fprintf( cfile, " " ); - attrib->Print( cfile, depth ); - } - - // There are 3 different formatting approaches: - // 1) An element without children is printed as a node - // 2) An element with only a text child is printed as text - // 3) An element with children is printed on multiple lines. - TiXmlNode* node; - if ( !firstChild ) - { - fprintf( cfile, " />" ); - } - else if ( firstChild == lastChild && firstChild->ToText() ) - { - fprintf( cfile, ">" ); - firstChild->Print( cfile, depth + 1 ); - fprintf( cfile, "", value.c_str() ); - } - else - { - fprintf( cfile, ">" ); - - for ( node = firstChild; node; node=node->NextSibling() ) - { - if ( !node->ToText() ) - { - fprintf( cfile, "\n" ); - } - node->Print( cfile, depth+1 ); - } - fprintf( cfile, "\n" ); - for( i=0; i", value.c_str() ); - } -} - - -void TiXmlElement::CopyTo( TiXmlElement* target ) const -{ - // superclass: - TiXmlNode::CopyTo( target ); - - // Element class: - // Clone the attributes, then clone the children. - const TiXmlAttribute* attribute = 0; - for( attribute = attributeSet.First(); - attribute; - attribute = attribute->Next() ) - { - target->SetAttribute( attribute->Name(), attribute->Value() ); - } - - TiXmlNode* node = 0; - for ( node = firstChild; node; node = node->NextSibling() ) - { - target->LinkEndChild( node->Clone() ); - } -} - -bool TiXmlElement::Accept( TiXmlVisitor* visitor ) const -{ - if ( visitor->VisitEnter( *this, attributeSet.First() ) ) - { - for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() ) - { - if ( !node->Accept( visitor ) ) - break; - } - } - return visitor->VisitExit( *this ); -} - - -TiXmlNode* TiXmlElement::Clone() const -{ - TiXmlElement* clone = new TiXmlElement( Value() ); - if ( !clone ) - return 0; - - CopyTo( clone ); - return clone; -} - - -const char* TiXmlElement::GetText() const -{ - const TiXmlNode* child = this->FirstChild(); - if ( child ) { - const TiXmlText* childText = child->ToText(); - if ( childText ) { - return childText->Value(); - } - } - return 0; -} - - -TiXmlDocument::TiXmlDocument() : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT ) -{ - tabsize = 4; - useMicrosoftBOM = false; - ClearError(); -} - -TiXmlDocument::TiXmlDocument( const char * documentName ) : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT ) -{ - tabsize = 4; - useMicrosoftBOM = false; - value = documentName; - ClearError(); -} - - -#ifdef TIXML_USE_STL -TiXmlDocument::TiXmlDocument( const std::string& documentName ) : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT ) -{ - tabsize = 4; - useMicrosoftBOM = false; - value = documentName; - ClearError(); -} -#endif - - -TiXmlDocument::TiXmlDocument( const TiXmlDocument& copy ) : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT ) -{ - copy.CopyTo( this ); -} - - -TiXmlDocument& TiXmlDocument::operator=( const TiXmlDocument& copy ) -{ - Clear(); - copy.CopyTo( this ); - return *this; -} - - -bool TiXmlDocument::LoadFile( TiXmlEncoding encoding ) -{ - return LoadFile( Value(), encoding ); -} - - -bool TiXmlDocument::SaveFile() const -{ - return SaveFile( Value() ); -} - -bool TiXmlDocument::LoadFile( const char* _filename, TiXmlEncoding encoding ) -{ - TIXML_STRING filename( _filename ); - value = filename; - - // reading in binary mode so that tinyxml can normalize the EOL - FILE* file = TiXmlFOpen( value.c_str (), "rb" ); - - if ( file ) - { - bool result = LoadFile( file, encoding ); - fclose( file ); - return result; - } - else - { - SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN ); - return false; - } -} - -bool TiXmlDocument::LoadFile( FILE* file, TiXmlEncoding encoding ) -{ - if ( !file ) - { - SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN ); - return false; - } - - // Delete the existing data: - Clear(); - location.Clear(); - - // Get the file size, so we can pre-allocate the string. HUGE speed impact. - long length = 0; - fseek( file, 0, SEEK_END ); - length = ftell( file ); - fseek( file, 0, SEEK_SET ); - - // Strange case, but good to handle up front. - if ( length <= 0 ) - { - SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return false; - } - - // Subtle bug here. TinyXml did use fgets. But from the XML spec: - // 2.11 End-of-Line Handling - // - // - // ...the XML processor MUST behave as if it normalized all line breaks in external - // parsed entities (including the document entity) on input, before parsing, by translating - // both the two-character sequence #xD #xA and any #xD that is not followed by #xA to - // a single #xA character. - // - // - // It is not clear fgets does that, and certainly isn't clear it works cross platform. - // Generally, you expect fgets to translate from the convention of the OS to the c/unix - // convention, and not work generally. - - /* - while( fgets( buf, sizeof(buf), file ) ) - { - data += buf; - } - */ - - char* buf = new char[ length+1 ]; - buf[0] = 0; - - if ( fread( buf, length, 1, file ) != 1 ) { - delete [] buf; - SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN ); - return false; - } - - // Process the buffer in place to normalize new lines. (See comment above.) - // Copies from the 'p' to 'q' pointer, where p can advance faster if - // a newline-carriage return is hit. - // - // Wikipedia: - // Systems based on ASCII or a compatible character set use either LF (Line feed, '\n', 0x0A, 10 in decimal) or - // CR (Carriage return, '\r', 0x0D, 13 in decimal) individually, or CR followed by LF (CR+LF, 0x0D 0x0A)... - // * LF: Multics, Unix and Unix-like systems (GNU/Linux, AIX, Xenix, Mac OS X, FreeBSD, etc.), BeOS, Amiga, RISC OS, and others - // * CR+LF: DEC RT-11 and most other early non-Unix, non-IBM OSes, CP/M, MP/M, DOS, OS/2, Microsoft Windows, Symbian OS - // * CR: Commodore 8-bit machines, Apple II family, Mac OS up to version 9 and OS-9 - - const char* p = buf; // the read head - char* q = buf; // the write head - const char CR = 0x0d; - const char LF = 0x0a; - - buf[length] = 0; - while( *p ) { - assert( p < (buf+length) ); - assert( q <= (buf+length) ); - assert( q <= p ); - - if ( *p == CR ) { - *q++ = LF; - p++; - if ( *p == LF ) { // check for CR+LF (and skip LF) - p++; - } - } - else { - *q++ = *p++; - } - } - assert( q <= (buf+length) ); - *q = 0; - - Parse( buf, 0, encoding ); - - delete [] buf; - return !Error(); -} - - -bool TiXmlDocument::SaveFile( const char * filename ) const -{ - // The old c stuff lives on... - FILE* fp = TiXmlFOpen( filename, "w" ); - if ( fp ) - { - bool result = SaveFile( fp ); - fclose( fp ); - return result; - } - return false; -} - - -bool TiXmlDocument::SaveFile( FILE* fp ) const -{ - if ( useMicrosoftBOM ) - { - const unsigned char TIXML_UTF_LEAD_0 = 0xefU; - const unsigned char TIXML_UTF_LEAD_1 = 0xbbU; - const unsigned char TIXML_UTF_LEAD_2 = 0xbfU; - - fputc( TIXML_UTF_LEAD_0, fp ); - fputc( TIXML_UTF_LEAD_1, fp ); - fputc( TIXML_UTF_LEAD_2, fp ); - } - Print( fp, 0 ); - return (ferror(fp) == 0); -} - - -void TiXmlDocument::CopyTo( TiXmlDocument* target ) const -{ - TiXmlNode::CopyTo( target ); - - target->error = error; - target->errorId = errorId; - target->errorDesc = errorDesc; - target->tabsize = tabsize; - target->errorLocation = errorLocation; - target->useMicrosoftBOM = useMicrosoftBOM; - - TiXmlNode* node = 0; - for ( node = firstChild; node; node = node->NextSibling() ) - { - target->LinkEndChild( node->Clone() ); - } -} - - -TiXmlNode* TiXmlDocument::Clone() const -{ - TiXmlDocument* clone = new TiXmlDocument(); - if ( !clone ) - return 0; - - CopyTo( clone ); - return clone; -} - - -void TiXmlDocument::Print( FILE* cfile, int depth ) const -{ - assert( cfile ); - for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() ) - { - node->Print( cfile, depth ); - fprintf( cfile, "\n" ); - } -} - - -bool TiXmlDocument::Accept( TiXmlVisitor* visitor ) const -{ - if ( visitor->VisitEnter( *this ) ) - { - for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() ) - { - if ( !node->Accept( visitor ) ) - break; - } - } - return visitor->VisitExit( *this ); -} - - -const TiXmlAttribute* TiXmlAttribute::Next() const -{ - // We are using knowledge of the sentinel. The sentinel - // have a value or name. - if ( next->value.empty() && next->name.empty() ) - return 0; - return next; -} - -/* -TiXmlAttribute* TiXmlAttribute::Next() -{ - // We are using knowledge of the sentinel. The sentinel - // have a value or name. - if ( next->value.empty() && next->name.empty() ) - return 0; - return next; -} -*/ - -const TiXmlAttribute* TiXmlAttribute::Previous() const -{ - // We are using knowledge of the sentinel. The sentinel - // have a value or name. - if ( prev->value.empty() && prev->name.empty() ) - return 0; - return prev; -} - -/* -TiXmlAttribute* TiXmlAttribute::Previous() -{ - // We are using knowledge of the sentinel. The sentinel - // have a value or name. - if ( prev->value.empty() && prev->name.empty() ) - return 0; - return prev; -} -*/ - -void TiXmlAttribute::Print( FILE* cfile, int /*depth*/, TIXML_STRING* str ) const -{ - TIXML_STRING n, v; - - EncodeString( name, &n ); - EncodeString( value, &v ); - - if (value.find ('\"') == TIXML_STRING::npos) { - if ( cfile ) { - fprintf (cfile, "%s=\"%s\"", n.c_str(), v.c_str() ); - } - if ( str ) { - (*str) += n; (*str) += "=\""; (*str) += v; (*str) += "\""; - } - } - else { - if ( cfile ) { - fprintf (cfile, "%s='%s'", n.c_str(), v.c_str() ); - } - if ( str ) { - (*str) += n; (*str) += "='"; (*str) += v; (*str) += "'"; - } - } -} - - -int TiXmlAttribute::QueryIntValue( int* ival ) const -{ - if ( TIXML_SSCANF( value.c_str(), "%d", ival ) == 1 ) - return TIXML_SUCCESS; - return TIXML_WRONG_TYPE; -} - -int TiXmlAttribute::QueryDoubleValue( double* dval ) const -{ - if ( TIXML_SSCANF( value.c_str(), "%lf", dval ) == 1 ) - return TIXML_SUCCESS; - return TIXML_WRONG_TYPE; -} - -void TiXmlAttribute::SetIntValue( int _value ) -{ - char buf [64]; - #if defined(TIXML_SNPRINTF) - TIXML_SNPRINTF(buf, sizeof(buf), "%d", _value); - #else - sprintf (buf, "%d", _value); - #endif - SetValue (buf); -} - -void TiXmlAttribute::SetDoubleValue( double _value ) -{ - char buf [256]; - #if defined(TIXML_SNPRINTF) - TIXML_SNPRINTF( buf, sizeof(buf), "%g", _value); - #else - sprintf (buf, "%g", _value); - #endif - SetValue (buf); -} - -int TiXmlAttribute::IntValue() const -{ - return atoi (value.c_str ()); -} - -double TiXmlAttribute::DoubleValue() const -{ - return atof (value.c_str ()); -} - - -TiXmlComment::TiXmlComment( const TiXmlComment& copy ) : TiXmlNode( TiXmlNode::TINYXML_COMMENT ) -{ - copy.CopyTo( this ); -} - - -TiXmlComment& TiXmlComment::operator=( const TiXmlComment& base ) -{ - Clear(); - base.CopyTo( this ); - return *this; -} - - -void TiXmlComment::Print( FILE* cfile, int depth ) const -{ - assert( cfile ); - for ( int i=0; i", value.c_str() ); -} - - -void TiXmlComment::CopyTo( TiXmlComment* target ) const -{ - TiXmlNode::CopyTo( target ); -} - - -bool TiXmlComment::Accept( TiXmlVisitor* visitor ) const -{ - return visitor->Visit( *this ); -} - - -TiXmlNode* TiXmlComment::Clone() const -{ - TiXmlComment* clone = new TiXmlComment(); - - if ( !clone ) - return 0; - - CopyTo( clone ); - return clone; -} - - -void TiXmlText::Print( FILE* cfile, int depth ) const -{ - assert( cfile ); - if ( cdata ) - { - int i; - fprintf( cfile, "\n" ); - for ( i=0; i\n", value.c_str() ); // unformatted output - } - else - { - TIXML_STRING buffer; - EncodeString( value, &buffer ); - fprintf( cfile, "%s", buffer.c_str() ); - } -} - - -void TiXmlText::CopyTo( TiXmlText* target ) const -{ - TiXmlNode::CopyTo( target ); - target->cdata = cdata; -} - - -bool TiXmlText::Accept( TiXmlVisitor* visitor ) const -{ - return visitor->Visit( *this ); -} - - -TiXmlNode* TiXmlText::Clone() const -{ - TiXmlText* clone = 0; - clone = new TiXmlText( "" ); - - if ( !clone ) - return 0; - - CopyTo( clone ); - return clone; -} - - -TiXmlDeclaration::TiXmlDeclaration( const char * _version, - const char * _encoding, - const char * _standalone ) - : TiXmlNode( TiXmlNode::TINYXML_DECLARATION ) -{ - version = _version; - encoding = _encoding; - standalone = _standalone; -} - - -#ifdef TIXML_USE_STL -TiXmlDeclaration::TiXmlDeclaration( const std::string& _version, - const std::string& _encoding, - const std::string& _standalone ) - : TiXmlNode( TiXmlNode::TINYXML_DECLARATION ) -{ - version = _version; - encoding = _encoding; - standalone = _standalone; -} -#endif - - -TiXmlDeclaration::TiXmlDeclaration( const TiXmlDeclaration& copy ) - : TiXmlNode( TiXmlNode::TINYXML_DECLARATION ) -{ - copy.CopyTo( this ); -} - - -TiXmlDeclaration& TiXmlDeclaration::operator=( const TiXmlDeclaration& copy ) -{ - Clear(); - copy.CopyTo( this ); - return *this; -} - - -void TiXmlDeclaration::Print( FILE* cfile, int /*depth*/, TIXML_STRING* str ) const -{ - if ( cfile ) fprintf( cfile, "" ); - if ( str ) (*str) += "?>"; -} - - -void TiXmlDeclaration::CopyTo( TiXmlDeclaration* target ) const -{ - TiXmlNode::CopyTo( target ); - - target->version = version; - target->encoding = encoding; - target->standalone = standalone; -} - - -bool TiXmlDeclaration::Accept( TiXmlVisitor* visitor ) const -{ - return visitor->Visit( *this ); -} - - -TiXmlNode* TiXmlDeclaration::Clone() const -{ - TiXmlDeclaration* clone = new TiXmlDeclaration(); - - if ( !clone ) - return 0; - - CopyTo( clone ); - return clone; -} - - -void TiXmlUnknown::Print( FILE* cfile, int depth ) const -{ - for ( int i=0; i", value.c_str() ); -} - - -void TiXmlUnknown::CopyTo( TiXmlUnknown* target ) const -{ - TiXmlNode::CopyTo( target ); -} - - -bool TiXmlUnknown::Accept( TiXmlVisitor* visitor ) const -{ - return visitor->Visit( *this ); -} - - -TiXmlNode* TiXmlUnknown::Clone() const -{ - TiXmlUnknown* clone = new TiXmlUnknown(); - - if ( !clone ) - return 0; - - CopyTo( clone ); - return clone; -} - - -TiXmlAttributeSet::TiXmlAttributeSet() -{ - sentinel.next = &sentinel; - sentinel.prev = &sentinel; -} - - -TiXmlAttributeSet::~TiXmlAttributeSet() -{ - assert( sentinel.next == &sentinel ); - assert( sentinel.prev == &sentinel ); -} - - -void TiXmlAttributeSet::Add( TiXmlAttribute* addMe ) -{ - #ifdef TIXML_USE_STL - assert( !Find( TIXML_STRING( addMe->Name() ) ) ); // Shouldn't be multiply adding to the set. - #else - assert( !Find( addMe->Name() ) ); // Shouldn't be multiply adding to the set. - #endif - - addMe->next = &sentinel; - addMe->prev = sentinel.prev; - - sentinel.prev->next = addMe; - sentinel.prev = addMe; -} - -void TiXmlAttributeSet::Remove( TiXmlAttribute* removeMe ) -{ - TiXmlAttribute* node; - - for( node = sentinel.next; node != &sentinel; node = node->next ) - { - if ( node == removeMe ) - { - node->prev->next = node->next; - node->next->prev = node->prev; - node->next = 0; - node->prev = 0; - return; - } - } - assert( 0 ); // we tried to remove a non-linked attribute. -} - - -#ifdef TIXML_USE_STL -TiXmlAttribute* TiXmlAttributeSet::Find( const std::string& name ) const -{ - for( TiXmlAttribute* node = sentinel.next; node != &sentinel; node = node->next ) - { - if ( node->name == name ) - return node; - } - return 0; -} - -TiXmlAttribute* TiXmlAttributeSet::FindOrCreate( const std::string& _name ) -{ - TiXmlAttribute* attrib = Find( _name ); - if ( !attrib ) { - attrib = new TiXmlAttribute(); - Add( attrib ); - attrib->SetName( _name ); - } - return attrib; -} -#endif - - -TiXmlAttribute* TiXmlAttributeSet::Find( const char* name ) const -{ - for( TiXmlAttribute* node = sentinel.next; node != &sentinel; node = node->next ) - { - if ( strcmp( node->name.c_str(), name ) == 0 ) - return node; - } - return 0; -} - - -TiXmlAttribute* TiXmlAttributeSet::FindOrCreate( const char* _name ) -{ - TiXmlAttribute* attrib = Find( _name ); - if ( !attrib ) { - attrib = new TiXmlAttribute(); - Add( attrib ); - attrib->SetName( _name ); - } - return attrib; -} - - -#ifdef TIXML_USE_STL -std::istream& operator>> (std::istream & in, TiXmlNode & base) -{ - TIXML_STRING tag; - tag.reserve( 8 * 1000 ); - base.StreamIn( &in, &tag ); - - base.Parse( tag.c_str(), 0, TIXML_DEFAULT_ENCODING ); - return in; -} -#endif - - -#ifdef TIXML_USE_STL -std::ostream& operator<< (std::ostream & out, const TiXmlNode & base) -{ - TiXmlPrinter printer; - printer.SetStreamPrinting(); - base.Accept( &printer ); - out << printer.Str(); - - return out; -} - - -std::string& operator<< (std::string& out, const TiXmlNode& base ) -{ - TiXmlPrinter printer; - printer.SetStreamPrinting(); - base.Accept( &printer ); - out.append( printer.Str() ); - - return out; -} -#endif - - -TiXmlHandle TiXmlHandle::FirstChild() const -{ - if ( node ) - { - TiXmlNode* child = node->FirstChild(); - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( 0 ); -} - - -TiXmlHandle TiXmlHandle::FirstChild( const char * value ) const -{ - if ( node ) - { - TiXmlNode* child = node->FirstChild( value ); - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( 0 ); -} - - -TiXmlHandle TiXmlHandle::FirstChildElement() const -{ - if ( node ) - { - TiXmlElement* child = node->FirstChildElement(); - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( 0 ); -} - - -TiXmlHandle TiXmlHandle::FirstChildElement( const char * value ) const -{ - if ( node ) - { - TiXmlElement* child = node->FirstChildElement( value ); - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( 0 ); -} - - -TiXmlHandle TiXmlHandle::Child( int count ) const -{ - if ( node ) - { - int i; - TiXmlNode* child = node->FirstChild(); - for ( i=0; - child && iNextSibling(), ++i ) - { - // nothing - } - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( 0 ); -} - - -TiXmlHandle TiXmlHandle::Child( const char* value, int count ) const -{ - if ( node ) - { - int i; - TiXmlNode* child = node->FirstChild( value ); - for ( i=0; - child && iNextSibling( value ), ++i ) - { - // nothing - } - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( 0 ); -} - - -TiXmlHandle TiXmlHandle::ChildElement( int count ) const -{ - if ( node ) - { - int i; - TiXmlElement* child = node->FirstChildElement(); - for ( i=0; - child && iNextSiblingElement(), ++i ) - { - // nothing - } - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( 0 ); -} - - -TiXmlHandle TiXmlHandle::ChildElement( const char* value, int count ) const -{ - if ( node ) - { - int i; - TiXmlElement* child = node->FirstChildElement( value ); - for ( i=0; - child && iNextSiblingElement( value ), ++i ) - { - // nothing - } - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( 0 ); -} - - -bool TiXmlPrinter::VisitEnter( const TiXmlDocument& ) -{ - return true; -} - -bool TiXmlPrinter::VisitExit( const TiXmlDocument& ) -{ - return true; -} - -bool TiXmlPrinter::VisitEnter( const TiXmlElement& element, const TiXmlAttribute* firstAttribute ) -{ - DoIndent(); - buffer += "<"; - buffer += element.Value(); - - for( const TiXmlAttribute* attrib = firstAttribute; attrib; attrib = attrib->Next() ) - { - buffer += " "; - attrib->Print( 0, 0, &buffer ); - } - - if ( !element.FirstChild() ) - { - buffer += " />"; - DoLineBreak(); - } - else - { - buffer += ">"; - if ( element.FirstChild()->ToText() - && element.LastChild() == element.FirstChild() - && element.FirstChild()->ToText()->CDATA() == false ) - { - simpleTextPrint = true; - // no DoLineBreak()! - } - else - { - DoLineBreak(); - } - } - ++depth; - return true; -} - - -bool TiXmlPrinter::VisitExit( const TiXmlElement& element ) -{ - --depth; - if ( !element.FirstChild() ) - { - // nothing. - } - else - { - if ( simpleTextPrint ) - { - simpleTextPrint = false; - } - else - { - DoIndent(); - } - buffer += ""; - DoLineBreak(); - } - return true; -} - - -bool TiXmlPrinter::Visit( const TiXmlText& text ) -{ - if ( text.CDATA() ) - { - DoIndent(); - buffer += ""; - DoLineBreak(); - } - else if ( simpleTextPrint ) - { - TIXML_STRING str; - TiXmlBase::EncodeString( text.ValueTStr(), &str ); - buffer += str; - } - else - { - DoIndent(); - TIXML_STRING str; - TiXmlBase::EncodeString( text.ValueTStr(), &str ); - buffer += str; - DoLineBreak(); - } - return true; -} - - -bool TiXmlPrinter::Visit( const TiXmlDeclaration& declaration ) -{ - DoIndent(); - declaration.Print( 0, 0, &buffer ); - DoLineBreak(); - return true; -} - - -bool TiXmlPrinter::Visit( const TiXmlComment& comment ) -{ - DoIndent(); - buffer += ""; - DoLineBreak(); - return true; -} - - -bool TiXmlPrinter::Visit( const TiXmlUnknown& unknown ) -{ - DoIndent(); - buffer += "<"; - buffer += unknown.Value(); - buffer += ">"; - DoLineBreak(); - return true; -} - diff --git a/Framework/ext/TinyXML/tinyxml.h b/Framework/ext/TinyXML/tinyxml.h deleted file mode 100644 index a3589e5..0000000 --- a/Framework/ext/TinyXML/tinyxml.h +++ /dev/null @@ -1,1805 +0,0 @@ -/* -www.sourceforge.net/projects/tinyxml -Original code by Lee Thomason (www.grinninglizard.com) - -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 TINYXML_INCLUDED -#define TINYXML_INCLUDED - -#ifdef _MSC_VER -#pragma warning( push ) -#pragma warning( disable : 4530 ) -#pragma warning( disable : 4786 ) -#endif - -#include -#include -#include -#include -#include - -// Help out windows: -#if defined( _DEBUG ) && !defined( DEBUG ) -#define DEBUG -#endif - -#ifdef TIXML_USE_STL - #include - #include - #include - #define TIXML_STRING std::string -#else - #include "tinystr.h" - #define TIXML_STRING TiXmlString -#endif - -// Deprecated library function hell. Compilers want to use the -// new safe versions. This probably doesn't fully address the problem, -// but it gets closer. There are too many compilers for me to fully -// test. If you get compilation troubles, undefine TIXML_SAFE -#define TIXML_SAFE - -#ifdef TIXML_SAFE - #if defined(_MSC_VER) && (_MSC_VER >= 1400 ) - // Microsoft visual studio, version 2005 and higher. - #define TIXML_SNPRINTF _snprintf_s - #define TIXML_SSCANF sscanf_s - #elif defined(_MSC_VER) && (_MSC_VER >= 1200 ) - // Microsoft visual studio, version 6 and higher. - //#pragma message( "Using _sn* functions." ) - #define TIXML_SNPRINTF _snprintf - #define TIXML_SSCANF sscanf - #elif defined(__GNUC__) && (__GNUC__ >= 3 ) - // GCC version 3 and higher.s - //#warning( "Using sn* functions." ) - #define TIXML_SNPRINTF snprintf - #define TIXML_SSCANF sscanf - #else - #define TIXML_SNPRINTF snprintf - #define TIXML_SSCANF sscanf - #endif -#endif - -class TiXmlDocument; -class TiXmlElement; -class TiXmlComment; -class TiXmlUnknown; -class TiXmlAttribute; -class TiXmlText; -class TiXmlDeclaration; -class TiXmlParsingData; - -const int TIXML_MAJOR_VERSION = 2; -const int TIXML_MINOR_VERSION = 6; -const int TIXML_PATCH_VERSION = 2; - -/* Internal structure for tracking location of items - in the XML file. -*/ -struct TiXmlCursor -{ - TiXmlCursor() { Clear(); } - void Clear() { row = col = -1; } - - int row; // 0 based. - int col; // 0 based. -}; - - -/** - Implements the interface to the "Visitor pattern" (see the Accept() method.) - If you call the Accept() method, it requires being passed a TiXmlVisitor - class to handle callbacks. For nodes that contain other nodes (Document, Element) - you will get called with a VisitEnter/VisitExit pair. Nodes that are always leaves - are simply called with Visit(). - - If you return 'true' from a Visit method, recursive parsing will continue. If you return - false, no children of this node or its sibilings will be Visited. - - All flavors of Visit methods have a default implementation that returns 'true' (continue - visiting). You need to only override methods that are interesting to you. - - Generally Accept() is called on the TiXmlDocument, although all nodes suppert Visiting. - - You should never change the document from a callback. - - @sa TiXmlNode::Accept() -*/ -class TiXmlVisitor -{ -public: - virtual ~TiXmlVisitor() {} - - /// Visit a document. - virtual bool VisitEnter( const TiXmlDocument& /*doc*/ ) { return true; } - /// Visit a document. - virtual bool VisitExit( const TiXmlDocument& /*doc*/ ) { return true; } - - /// Visit an element. - virtual bool VisitEnter( const TiXmlElement& /*element*/, const TiXmlAttribute* /*firstAttribute*/ ) { return true; } - /// Visit an element. - virtual bool VisitExit( const TiXmlElement& /*element*/ ) { return true; } - - /// Visit a declaration - virtual bool Visit( const TiXmlDeclaration& /*declaration*/ ) { return true; } - /// Visit a text node - virtual bool Visit( const TiXmlText& /*text*/ ) { return true; } - /// Visit a comment node - virtual bool Visit( const TiXmlComment& /*comment*/ ) { return true; } - /// Visit an unknown node - virtual bool Visit( const TiXmlUnknown& /*unknown*/ ) { return true; } -}; - -// Only used by Attribute::Query functions -enum -{ - TIXML_SUCCESS, - TIXML_NO_ATTRIBUTE, - TIXML_WRONG_TYPE -}; - - -// Used by the parsing routines. -enum TiXmlEncoding -{ - TIXML_ENCODING_UNKNOWN, - TIXML_ENCODING_UTF8, - TIXML_ENCODING_LEGACY -}; - -const TiXmlEncoding TIXML_DEFAULT_ENCODING = TIXML_ENCODING_UNKNOWN; - -/** TiXmlBase is a base class for every class in TinyXml. - It does little except to establish that TinyXml classes - can be printed and provide some utility functions. - - In XML, the document and elements can contain - other elements and other types of nodes. - - @verbatim - A Document can contain: Element (container or leaf) - Comment (leaf) - Unknown (leaf) - Declaration( leaf ) - - An Element can contain: Element (container or leaf) - Text (leaf) - Attributes (not on tree) - Comment (leaf) - Unknown (leaf) - - A Decleration contains: Attributes (not on tree) - @endverbatim -*/ -class TiXmlBase -{ - friend class TiXmlNode; - friend class TiXmlElement; - friend class TiXmlDocument; - -public: - TiXmlBase() : userData(0) {} - virtual ~TiXmlBase() {} - - /** All TinyXml classes can print themselves to a filestream - or the string class (TiXmlString in non-STL mode, std::string - in STL mode.) Either or both cfile and str can be null. - - This is a formatted print, and will insert - tabs and newlines. - - (For an unformatted stream, use the << operator.) - */ - virtual void Print( FILE* cfile, int depth ) const = 0; - - /** The world does not agree on whether white space should be kept or - not. In order to make everyone happy, these global, static functions - are provided to set whether or not TinyXml will condense all white space - into a single space or not. The default is to condense. Note changing this - value is not thread safe. - */ - static void SetCondenseWhiteSpace( bool condense ) { condenseWhiteSpace = condense; } - - /// Return the current white space setting. - static bool IsWhiteSpaceCondensed() { return condenseWhiteSpace; } - - /** Return the position, in the original source file, of this node or attribute. - The row and column are 1-based. (That is the first row and first column is - 1,1). If the returns values are 0 or less, then the parser does not have - a row and column value. - - Generally, the row and column value will be set when the TiXmlDocument::Load(), - TiXmlDocument::LoadFile(), or any TiXmlNode::Parse() is called. It will NOT be set - when the DOM was created from operator>>. - - The values reflect the initial load. Once the DOM is modified programmatically - (by adding or changing nodes and attributes) the new values will NOT update to - reflect changes in the document. - - There is a minor performance cost to computing the row and column. Computation - can be disabled if TiXmlDocument::SetTabSize() is called with 0 as the value. - - @sa TiXmlDocument::SetTabSize() - */ - int Row() const { return location.row + 1; } - int Column() const { return location.col + 1; } ///< See Row() - - void SetUserData( void* user ) { userData = user; } ///< Set a pointer to arbitrary user data. - void* GetUserData() { return userData; } ///< Get a pointer to arbitrary user data. - const void* GetUserData() const { return userData; } ///< Get a pointer to arbitrary user data. - - // Table that returs, for a given lead byte, the total number of bytes - // in the UTF-8 sequence. - static const int utf8ByteTable[256]; - - virtual const char* Parse( const char* p, - TiXmlParsingData* data, - TiXmlEncoding encoding /*= TIXML_ENCODING_UNKNOWN */ ) = 0; - - /** Expands entities in a string. Note this should not contian the tag's '<', '>', etc, - or they will be transformed into entities! - */ - static void EncodeString( const TIXML_STRING& str, TIXML_STRING* out ); - - enum - { - TIXML_NO_ERROR = 0, - TIXML_ERROR, - TIXML_ERROR_OPENING_FILE, - TIXML_ERROR_PARSING_ELEMENT, - TIXML_ERROR_FAILED_TO_READ_ELEMENT_NAME, - TIXML_ERROR_READING_ELEMENT_VALUE, - TIXML_ERROR_READING_ATTRIBUTES, - TIXML_ERROR_PARSING_EMPTY, - TIXML_ERROR_READING_END_TAG, - TIXML_ERROR_PARSING_UNKNOWN, - TIXML_ERROR_PARSING_COMMENT, - TIXML_ERROR_PARSING_DECLARATION, - TIXML_ERROR_DOCUMENT_EMPTY, - TIXML_ERROR_EMBEDDED_NULL, - TIXML_ERROR_PARSING_CDATA, - TIXML_ERROR_DOCUMENT_TOP_ONLY, - - TIXML_ERROR_STRING_COUNT - }; - -protected: - - static const char* SkipWhiteSpace( const char*, TiXmlEncoding encoding ); - - inline static bool IsWhiteSpace( char c ) - { - return ( isspace( (unsigned char) c ) || c == '\n' || c == '\r' ); - } - inline static bool IsWhiteSpace( int c ) - { - if ( c < 256 ) - return IsWhiteSpace( (char) c ); - return false; // Again, only truly correct for English/Latin...but usually works. - } - - #ifdef TIXML_USE_STL - static bool StreamWhiteSpace( std::istream * in, TIXML_STRING * tag ); - static bool StreamTo( std::istream * in, int character, TIXML_STRING * tag ); - #endif - - /* Reads an XML name into the string provided. Returns - a pointer just past the last character of the name, - or 0 if the function has an error. - */ - static const char* ReadName( const char* p, TIXML_STRING* name, TiXmlEncoding encoding ); - - /* Reads text. Returns a pointer past the given end tag. - Wickedly complex options, but it keeps the (sensitive) code in one place. - */ - static const char* ReadText( const char* in, // where to start - TIXML_STRING* text, // the string read - bool ignoreWhiteSpace, // whether to keep the white space - const char* endTag, // what ends this text - bool ignoreCase, // whether to ignore case in the end tag - TiXmlEncoding encoding ); // the current encoding - - // If an entity has been found, transform it into a character. - static const char* GetEntity( const char* in, char* value, int* length, TiXmlEncoding encoding ); - - // Get a character, while interpreting entities. - // The length can be from 0 to 4 bytes. - inline static const char* GetChar( const char* p, char* _value, int* length, TiXmlEncoding encoding ) - { - assert( p ); - if ( encoding == TIXML_ENCODING_UTF8 ) - { - *length = utf8ByteTable[ *((const unsigned char*)p) ]; - assert( *length >= 0 && *length < 5 ); - } - else - { - *length = 1; - } - - if ( *length == 1 ) - { - if ( *p == '&' ) - return GetEntity( p, _value, length, encoding ); - *_value = *p; - return p+1; - } - else if ( *length ) - { - //strncpy( _value, p, *length ); // lots of compilers don't like this function (unsafe), - // and the null terminator isn't needed - for( int i=0; p[i] && i<*length; ++i ) { - _value[i] = p[i]; - } - return p + (*length); - } - else - { - // Not valid text. - return 0; - } - } - - // Return true if the next characters in the stream are any of the endTag sequences. - // Ignore case only works for english, and should only be relied on when comparing - // to English words: StringEqual( p, "version", true ) is fine. - static bool StringEqual( const char* p, - const char* endTag, - bool ignoreCase, - TiXmlEncoding encoding ); - - static const char* errorString[ TIXML_ERROR_STRING_COUNT ]; - - TiXmlCursor location; - - /// Field containing a generic user pointer - void* userData; - - // None of these methods are reliable for any language except English. - // Good for approximation, not great for accuracy. - static int IsAlpha( unsigned char anyByte, TiXmlEncoding encoding ); - static int IsAlphaNum( unsigned char anyByte, TiXmlEncoding encoding ); - inline static int ToLower( int v, TiXmlEncoding encoding ) - { - if ( encoding == TIXML_ENCODING_UTF8 ) - { - if ( v < 128 ) return tolower( v ); - return v; - } - else - { - return tolower( v ); - } - } - static void ConvertUTF32ToUTF8( unsigned long input, char* output, int* length ); - -private: - TiXmlBase( const TiXmlBase& ); // not implemented. - void operator=( const TiXmlBase& base ); // not allowed. - - struct Entity - { - const char* str; - unsigned int strLength; - char chr; - }; - enum - { - NUM_ENTITY = 5, - MAX_ENTITY_LENGTH = 6 - - }; - static Entity entity[ NUM_ENTITY ]; - static bool condenseWhiteSpace; -}; - - -/** The parent class for everything in the Document Object Model. - (Except for attributes). - Nodes have siblings, a parent, and children. A node can be - in a document, or stand on its own. The type of a TiXmlNode - can be queried, and it can be cast to its more defined type. -*/ -class TiXmlNode : public TiXmlBase -{ - friend class TiXmlDocument; - friend class TiXmlElement; - -public: - #ifdef TIXML_USE_STL - - /** An input stream operator, for every class. Tolerant of newlines and - formatting, but doesn't expect them. - */ - friend std::istream& operator >> (std::istream& in, TiXmlNode& base); - - /** An output stream operator, for every class. Note that this outputs - without any newlines or formatting, as opposed to Print(), which - includes tabs and new lines. - - The operator<< and operator>> are not completely symmetric. Writing - a node to a stream is very well defined. You'll get a nice stream - of output, without any extra whitespace or newlines. - - But reading is not as well defined. (As it always is.) If you create - a TiXmlElement (for example) and read that from an input stream, - the text needs to define an element or junk will result. This is - true of all input streams, but it's worth keeping in mind. - - A TiXmlDocument will read nodes until it reads a root element, and - all the children of that root element. - */ - friend std::ostream& operator<< (std::ostream& out, const TiXmlNode& base); - - /// Appends the XML node or attribute to a std::string. - friend std::string& operator<< (std::string& out, const TiXmlNode& base ); - - #endif - - /** The types of XML nodes supported by TinyXml. (All the - unsupported types are picked up by UNKNOWN.) - */ - enum NodeType - { - TINYXML_DOCUMENT, - TINYXML_ELEMENT, - TINYXML_COMMENT, - TINYXML_UNKNOWN, - TINYXML_TEXT, - TINYXML_DECLARATION, - TINYXML_TYPECOUNT - }; - - virtual ~TiXmlNode(); - - /** The meaning of 'value' changes for the specific type of - TiXmlNode. - @verbatim - Document: filename of the xml file - Element: name of the element - Comment: the comment text - Unknown: the tag contents - Text: the text string - @endverbatim - - The subclasses will wrap this function. - */ - const char *Value() const { return value.c_str (); } - - #ifdef TIXML_USE_STL - /** Return Value() as a std::string. If you only use STL, - this is more efficient than calling Value(). - Only available in STL mode. - */ - const std::string& ValueStr() const { return value; } - #endif - - const TIXML_STRING& ValueTStr() const { return value; } - - /** Changes the value of the node. Defined as: - @verbatim - Document: filename of the xml file - Element: name of the element - Comment: the comment text - Unknown: the tag contents - Text: the text string - @endverbatim - */ - void SetValue(const char * _value) { value = _value;} - - #ifdef TIXML_USE_STL - /// STL std::string form. - void SetValue( const std::string& _value ) { value = _value; } - #endif - - /// Delete all the children of this node. Does not affect 'this'. - void Clear(); - - /// One step up the DOM. - TiXmlNode* Parent() { return parent; } - const TiXmlNode* Parent() const { return parent; } - - const TiXmlNode* FirstChild() const { return firstChild; } ///< The first child of this node. Will be null if there are no children. - TiXmlNode* FirstChild() { return firstChild; } - const TiXmlNode* FirstChild( const char * value ) const; ///< The first child of this node with the matching 'value'. Will be null if none found. - /// The first child of this node with the matching 'value'. Will be null if none found. - TiXmlNode* FirstChild( const char * _value ) { - // Call through to the const version - safe since nothing is changed. Exiting syntax: cast this to a const (always safe) - // call the method, cast the return back to non-const. - return const_cast< TiXmlNode* > ((const_cast< const TiXmlNode* >(this))->FirstChild( _value )); - } - const TiXmlNode* LastChild() const { return lastChild; } /// The last child of this node. Will be null if there are no children. - TiXmlNode* LastChild() { return lastChild; } - - const TiXmlNode* LastChild( const char * value ) const; /// The last child of this node matching 'value'. Will be null if there are no children. - TiXmlNode* LastChild( const char * _value ) { - return const_cast< TiXmlNode* > ((const_cast< const TiXmlNode* >(this))->LastChild( _value )); - } - - #ifdef TIXML_USE_STL - const TiXmlNode* FirstChild( const std::string& _value ) const { return FirstChild (_value.c_str ()); } ///< STL std::string form. - TiXmlNode* FirstChild( const std::string& _value ) { return FirstChild (_value.c_str ()); } ///< STL std::string form. - const TiXmlNode* LastChild( const std::string& _value ) const { return LastChild (_value.c_str ()); } ///< STL std::string form. - TiXmlNode* LastChild( const std::string& _value ) { return LastChild (_value.c_str ()); } ///< STL std::string form. - #endif - - /** An alternate way to walk the children of a node. - One way to iterate over nodes is: - @verbatim - for( child = parent->FirstChild(); child; child = child->NextSibling() ) - @endverbatim - - IterateChildren does the same thing with the syntax: - @verbatim - child = 0; - while( child = parent->IterateChildren( child ) ) - @endverbatim - - IterateChildren takes the previous child as input and finds - the next one. If the previous child is null, it returns the - first. IterateChildren will return null when done. - */ - const TiXmlNode* IterateChildren( const TiXmlNode* previous ) const; - TiXmlNode* IterateChildren( const TiXmlNode* previous ) { - return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->IterateChildren( previous ) ); - } - - /// This flavor of IterateChildren searches for children with a particular 'value' - const TiXmlNode* IterateChildren( const char * value, const TiXmlNode* previous ) const; - TiXmlNode* IterateChildren( const char * _value, const TiXmlNode* previous ) { - return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->IterateChildren( _value, previous ) ); - } - - #ifdef TIXML_USE_STL - const TiXmlNode* IterateChildren( const std::string& _value, const TiXmlNode* previous ) const { return IterateChildren (_value.c_str (), previous); } ///< STL std::string form. - TiXmlNode* IterateChildren( const std::string& _value, const TiXmlNode* previous ) { return IterateChildren (_value.c_str (), previous); } ///< STL std::string form. - #endif - - /** Add a new node related to this. Adds a child past the LastChild. - Returns a pointer to the new object or NULL if an error occured. - */ - TiXmlNode* InsertEndChild( const TiXmlNode& addThis ); - - - /** Add a new node related to this. Adds a child past the LastChild. - - NOTE: the node to be added is passed by pointer, and will be - henceforth owned (and deleted) by tinyXml. This method is efficient - and avoids an extra copy, but should be used with care as it - uses a different memory model than the other insert functions. - - @sa InsertEndChild - */ - TiXmlNode* LinkEndChild( TiXmlNode* addThis ); - - /** Add a new node related to this. Adds a child before the specified child. - Returns a pointer to the new object or NULL if an error occured. - */ - TiXmlNode* InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis ); - - /** Add a new node related to this. Adds a child after the specified child. - Returns a pointer to the new object or NULL if an error occured. - */ - TiXmlNode* InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis ); - - /** Replace a child of this node. - Returns a pointer to the new object or NULL if an error occured. - */ - TiXmlNode* ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis ); - - /// Delete a child of this node. - bool RemoveChild( TiXmlNode* removeThis ); - - /// Navigate to a sibling node. - const TiXmlNode* PreviousSibling() const { return prev; } - TiXmlNode* PreviousSibling() { return prev; } - - /// Navigate to a sibling node. - const TiXmlNode* PreviousSibling( const char * ) const; - TiXmlNode* PreviousSibling( const char *_prev ) { - return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->PreviousSibling( _prev ) ); - } - - #ifdef TIXML_USE_STL - const TiXmlNode* PreviousSibling( const std::string& _value ) const { return PreviousSibling (_value.c_str ()); } ///< STL std::string form. - TiXmlNode* PreviousSibling( const std::string& _value ) { return PreviousSibling (_value.c_str ()); } ///< STL std::string form. - const TiXmlNode* NextSibling( const std::string& _value) const { return NextSibling (_value.c_str ()); } ///< STL std::string form. - TiXmlNode* NextSibling( const std::string& _value) { return NextSibling (_value.c_str ()); } ///< STL std::string form. - #endif - - /// Navigate to a sibling node. - const TiXmlNode* NextSibling() const { return next; } - TiXmlNode* NextSibling() { return next; } - - /// Navigate to a sibling node with the given 'value'. - const TiXmlNode* NextSibling( const char * ) const; - TiXmlNode* NextSibling( const char* _next ) { - return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->NextSibling( _next ) ); - } - - /** Convenience function to get through elements. - Calls NextSibling and ToElement. Will skip all non-Element - nodes. Returns 0 if there is not another element. - */ - const TiXmlElement* NextSiblingElement() const; - TiXmlElement* NextSiblingElement() { - return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->NextSiblingElement() ); - } - - /** Convenience function to get through elements. - Calls NextSibling and ToElement. Will skip all non-Element - nodes. Returns 0 if there is not another element. - */ - const TiXmlElement* NextSiblingElement( const char * ) const; - TiXmlElement* NextSiblingElement( const char *_next ) { - return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->NextSiblingElement( _next ) ); - } - - #ifdef TIXML_USE_STL - const TiXmlElement* NextSiblingElement( const std::string& _value) const { return NextSiblingElement (_value.c_str ()); } ///< STL std::string form. - TiXmlElement* NextSiblingElement( const std::string& _value) { return NextSiblingElement (_value.c_str ()); } ///< STL std::string form. - #endif - - /// Convenience function to get through elements. - const TiXmlElement* FirstChildElement() const; - TiXmlElement* FirstChildElement() { - return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->FirstChildElement() ); - } - - /// Convenience function to get through elements. - const TiXmlElement* FirstChildElement( const char * _value ) const; - TiXmlElement* FirstChildElement( const char * _value ) { - return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->FirstChildElement( _value ) ); - } - - #ifdef TIXML_USE_STL - const TiXmlElement* FirstChildElement( const std::string& _value ) const { return FirstChildElement (_value.c_str ()); } ///< STL std::string form. - TiXmlElement* FirstChildElement( const std::string& _value ) { return FirstChildElement (_value.c_str ()); } ///< STL std::string form. - #endif - - /** Query the type (as an enumerated value, above) of this node. - The possible types are: TINYXML_DOCUMENT, TINYXML_ELEMENT, TINYXML_COMMENT, - TINYXML_UNKNOWN, TINYXML_TEXT, and TINYXML_DECLARATION. - */ - int Type() const { return type; } - - /** Return a pointer to the Document this node lives in. - Returns null if not in a document. - */ - const TiXmlDocument* GetDocument() const; - TiXmlDocument* GetDocument() { - return const_cast< TiXmlDocument* >( (const_cast< const TiXmlNode* >(this))->GetDocument() ); - } - - /// Returns true if this node has no children. - bool NoChildren() const { return !firstChild; } - - virtual const TiXmlDocument* ToDocument() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual const TiXmlElement* ToElement() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual const TiXmlComment* ToComment() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual const TiXmlUnknown* ToUnknown() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual const TiXmlText* ToText() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual const TiXmlDeclaration* ToDeclaration() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - - virtual TiXmlDocument* ToDocument() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual TiXmlElement* ToElement() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual TiXmlComment* ToComment() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual TiXmlUnknown* ToUnknown() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual TiXmlText* ToText() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual TiXmlDeclaration* ToDeclaration() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - - /** Create an exact duplicate of this node and return it. The memory must be deleted - by the caller. - */ - virtual TiXmlNode* Clone() const = 0; - - /** Accept a hierchical visit the nodes in the TinyXML DOM. Every node in the - XML tree will be conditionally visited and the host will be called back - via the TiXmlVisitor interface. - - This is essentially a SAX interface for TinyXML. (Note however it doesn't re-parse - the XML for the callbacks, so the performance of TinyXML is unchanged by using this - interface versus any other.) - - The interface has been based on ideas from: - - - http://www.saxproject.org/ - - http://c2.com/cgi/wiki?HierarchicalVisitorPattern - - Which are both good references for "visiting". - - An example of using Accept(): - @verbatim - TiXmlPrinter printer; - tinyxmlDoc.Accept( &printer ); - const char* xmlcstr = printer.CStr(); - @endverbatim - */ - virtual bool Accept( TiXmlVisitor* visitor ) const = 0; - -protected: - TiXmlNode( NodeType _type ); - - // Copy to the allocated object. Shared functionality between Clone, Copy constructor, - // and the assignment operator. - void CopyTo( TiXmlNode* target ) const; - - #ifdef TIXML_USE_STL - // The real work of the input operator. - virtual void StreamIn( std::istream* in, TIXML_STRING* tag ) = 0; - #endif - - // Figure out what is at *p, and parse it. Returns null if it is not an xml node. - TiXmlNode* Identify( const char* start, TiXmlEncoding encoding ); - - TiXmlNode* parent; - NodeType type; - - TiXmlNode* firstChild; - TiXmlNode* lastChild; - - TIXML_STRING value; - - TiXmlNode* prev; - TiXmlNode* next; - -private: - TiXmlNode( const TiXmlNode& ); // not implemented. - void operator=( const TiXmlNode& base ); // not allowed. -}; - - -/** An attribute is a name-value pair. Elements have an arbitrary - number of attributes, each with a unique name. - - @note The attributes are not TiXmlNodes, since they are not - part of the tinyXML document object model. There are other - suggested ways to look at this problem. -*/ -class TiXmlAttribute : public TiXmlBase -{ - friend class TiXmlAttributeSet; - -public: - /// Construct an empty attribute. - TiXmlAttribute() : TiXmlBase() - { - document = 0; - prev = next = 0; - } - - #ifdef TIXML_USE_STL - /// std::string constructor. - TiXmlAttribute( const std::string& _name, const std::string& _value ) - { - name = _name; - value = _value; - document = 0; - prev = next = 0; - } - #endif - - /// Construct an attribute with a name and value. - TiXmlAttribute( const char * _name, const char * _value ) - { - name = _name; - value = _value; - document = 0; - prev = next = 0; - } - - const char* Name() const { return name.c_str(); } ///< Return the name of this attribute. - const char* Value() const { return value.c_str(); } ///< Return the value of this attribute. - #ifdef TIXML_USE_STL - const std::string& ValueStr() const { return value; } ///< Return the value of this attribute. - #endif - int IntValue() const; ///< Return the value of this attribute, converted to an integer. - double DoubleValue() const; ///< Return the value of this attribute, converted to a double. - - // Get the tinyxml string representation - const TIXML_STRING& NameTStr() const { return name; } - - /** QueryIntValue examines the value string. It is an alternative to the - IntValue() method with richer error checking. - If the value is an integer, it is stored in 'value' and - the call returns TIXML_SUCCESS. If it is not - an integer, it returns TIXML_WRONG_TYPE. - - A specialized but useful call. Note that for success it returns 0, - which is the opposite of almost all other TinyXml calls. - */ - int QueryIntValue( int* _value ) const; - /// QueryDoubleValue examines the value string. See QueryIntValue(). - int QueryDoubleValue( double* _value ) const; - - void SetName( const char* _name ) { name = _name; } ///< Set the name of this attribute. - void SetValue( const char* _value ) { value = _value; } ///< Set the value. - - void SetIntValue( int _value ); ///< Set the value from an integer. - void SetDoubleValue( double _value ); ///< Set the value from a double. - - #ifdef TIXML_USE_STL - /// STL std::string form. - void SetName( const std::string& _name ) { name = _name; } - /// STL std::string form. - void SetValue( const std::string& _value ) { value = _value; } - #endif - - /// Get the next sibling attribute in the DOM. Returns null at end. - const TiXmlAttribute* Next() const; - TiXmlAttribute* Next() { - return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttribute* >(this))->Next() ); - } - - /// Get the previous sibling attribute in the DOM. Returns null at beginning. - const TiXmlAttribute* Previous() const; - TiXmlAttribute* Previous() { - return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttribute* >(this))->Previous() ); - } - - bool operator==( const TiXmlAttribute& rhs ) const { return rhs.name == name; } - bool operator<( const TiXmlAttribute& rhs ) const { return name < rhs.name; } - bool operator>( const TiXmlAttribute& rhs ) const { return name > rhs.name; } - - /* Attribute parsing starts: first letter of the name - returns: the next char after the value end quote - */ - virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); - - // Prints this Attribute to a FILE stream. - virtual void Print( FILE* cfile, int depth ) const { - Print( cfile, depth, 0 ); - } - void Print( FILE* cfile, int depth, TIXML_STRING* str ) const; - - // [internal use] - // Set the document pointer so the attribute can report errors. - void SetDocument( TiXmlDocument* doc ) { document = doc; } - -private: - TiXmlAttribute( const TiXmlAttribute& ); // not implemented. - void operator=( const TiXmlAttribute& base ); // not allowed. - - TiXmlDocument* document; // A pointer back to a document, for error reporting. - TIXML_STRING name; - TIXML_STRING value; - TiXmlAttribute* prev; - TiXmlAttribute* next; -}; - - -/* A class used to manage a group of attributes. - It is only used internally, both by the ELEMENT and the DECLARATION. - - The set can be changed transparent to the Element and Declaration - classes that use it, but NOT transparent to the Attribute - which has to implement a next() and previous() method. Which makes - it a bit problematic and prevents the use of STL. - - This version is implemented with circular lists because: - - I like circular lists - - it demonstrates some independence from the (typical) doubly linked list. -*/ -class TiXmlAttributeSet -{ -public: - TiXmlAttributeSet(); - ~TiXmlAttributeSet(); - - void Add( TiXmlAttribute* attribute ); - void Remove( TiXmlAttribute* attribute ); - - const TiXmlAttribute* First() const { return ( sentinel.next == &sentinel ) ? 0 : sentinel.next; } - TiXmlAttribute* First() { return ( sentinel.next == &sentinel ) ? 0 : sentinel.next; } - const TiXmlAttribute* Last() const { return ( sentinel.prev == &sentinel ) ? 0 : sentinel.prev; } - TiXmlAttribute* Last() { return ( sentinel.prev == &sentinel ) ? 0 : sentinel.prev; } - - TiXmlAttribute* Find( const char* _name ) const; - TiXmlAttribute* FindOrCreate( const char* _name ); - -# ifdef TIXML_USE_STL - TiXmlAttribute* Find( const std::string& _name ) const; - TiXmlAttribute* FindOrCreate( const std::string& _name ); -# endif - - -private: - //*ME: Because of hidden/disabled copy-construktor in TiXmlAttribute (sentinel-element), - //*ME: this class must be also use a hidden/disabled copy-constructor !!! - TiXmlAttributeSet( const TiXmlAttributeSet& ); // not allowed - void operator=( const TiXmlAttributeSet& ); // not allowed (as TiXmlAttribute) - - TiXmlAttribute sentinel; -}; - - -/** The element is a container class. It has a value, the element name, - and can contain other elements, text, comments, and unknowns. - Elements also contain an arbitrary number of attributes. -*/ -class TiXmlElement : public TiXmlNode -{ -public: - /// Construct an element. - TiXmlElement (const char * in_value); - - #ifdef TIXML_USE_STL - /// std::string constructor. - TiXmlElement( const std::string& _value ); - #endif - - TiXmlElement( const TiXmlElement& ); - - TiXmlElement& operator=( const TiXmlElement& base ); - - virtual ~TiXmlElement(); - - /** Given an attribute name, Attribute() returns the value - for the attribute of that name, or null if none exists. - */ - const char* Attribute( const char* name ) const; - - /** Given an attribute name, Attribute() returns the value - for the attribute of that name, or null if none exists. - If the attribute exists and can be converted to an integer, - the integer value will be put in the return 'i', if 'i' - is non-null. - */ - const char* Attribute( const char* name, int* i ) const; - - /** Given an attribute name, Attribute() returns the value - for the attribute of that name, or null if none exists. - If the attribute exists and can be converted to an double, - the double value will be put in the return 'd', if 'd' - is non-null. - */ - const char* Attribute( const char* name, double* d ) const; - - /** QueryIntAttribute examines the attribute - it is an alternative to the - Attribute() method with richer error checking. - If the attribute is an integer, it is stored in 'value' and - the call returns TIXML_SUCCESS. If it is not - an integer, it returns TIXML_WRONG_TYPE. If the attribute - does not exist, then TIXML_NO_ATTRIBUTE is returned. - */ - int QueryIntAttribute( const char* name, int* _value ) const; - /// QueryUnsignedAttribute examines the attribute - see QueryIntAttribute(). - int QueryUnsignedAttribute( const char* name, unsigned* _value ) const; - /** QueryBoolAttribute examines the attribute - see QueryIntAttribute(). - Note that '1', 'true', or 'yes' are considered true, while '0', 'false' - and 'no' are considered false. - */ - int QueryBoolAttribute( const char* name, bool* _value ) const; - /// QueryDoubleAttribute examines the attribute - see QueryIntAttribute(). - int QueryDoubleAttribute( const char* name, double* _value ) const; - /// QueryFloatAttribute examines the attribute - see QueryIntAttribute(). - int QueryFloatAttribute( const char* name, float* _value ) const { - double d; - int result = QueryDoubleAttribute( name, &d ); - if ( result == TIXML_SUCCESS ) { - *_value = (float)d; - } - return result; - } - - #ifdef TIXML_USE_STL - /// QueryStringAttribute examines the attribute - see QueryIntAttribute(). - int QueryStringAttribute( const char* name, std::string* _value ) const { - const char* cstr = Attribute( name ); - if ( cstr ) { - *_value = std::string( cstr ); - return TIXML_SUCCESS; - } - return TIXML_NO_ATTRIBUTE; - } - - /** Template form of the attribute query which will try to read the - attribute into the specified type. Very easy, very powerful, but - be careful to make sure to call this with the correct type. - - NOTE: This method doesn't work correctly for 'string' types that contain spaces. - - @return TIXML_SUCCESS, TIXML_WRONG_TYPE, or TIXML_NO_ATTRIBUTE - */ - template< typename T > int QueryValueAttribute( const std::string& name, T* outValue ) const - { - const TiXmlAttribute* node = attributeSet.Find( name ); - if ( !node ) - return TIXML_NO_ATTRIBUTE; - - std::stringstream sstream( node->ValueStr() ); - sstream >> *outValue; - if ( !sstream.fail() ) - return TIXML_SUCCESS; - return TIXML_WRONG_TYPE; - } - - int QueryValueAttribute( const std::string& name, std::string* outValue ) const - { - const TiXmlAttribute* node = attributeSet.Find( name ); - if ( !node ) - return TIXML_NO_ATTRIBUTE; - *outValue = node->ValueStr(); - return TIXML_SUCCESS; - } - #endif - - /** Sets an attribute of name to a given value. The attribute - will be created if it does not exist, or changed if it does. - */ - void SetAttribute( const char* name, const char * _value ); - - #ifdef TIXML_USE_STL - const std::string* Attribute( const std::string& name ) const; - const std::string* Attribute( const std::string& name, int* i ) const; - const std::string* Attribute( const std::string& name, double* d ) const; - int QueryIntAttribute( const std::string& name, int* _value ) const; - int QueryDoubleAttribute( const std::string& name, double* _value ) const; - - /// STL std::string form. - void SetAttribute( const std::string& name, const std::string& _value ); - ///< STL std::string form. - void SetAttribute( const std::string& name, int _value ); - ///< STL std::string form. - void SetDoubleAttribute( const std::string& name, double value ); - #endif - - /** Sets an attribute of name to a given value. The attribute - will be created if it does not exist, or changed if it does. - */ - void SetAttribute( const char * name, int value ); - - /** Sets an attribute of name to a given value. The attribute - will be created if it does not exist, or changed if it does. - */ - void SetDoubleAttribute( const char * name, double value ); - - /** Deletes an attribute with the given name. - */ - void RemoveAttribute( const char * name ); - #ifdef TIXML_USE_STL - void RemoveAttribute( const std::string& name ) { RemoveAttribute (name.c_str ()); } ///< STL std::string form. - #endif - - const TiXmlAttribute* FirstAttribute() const { return attributeSet.First(); } ///< Access the first attribute in this element. - TiXmlAttribute* FirstAttribute() { return attributeSet.First(); } - const TiXmlAttribute* LastAttribute() const { return attributeSet.Last(); } ///< Access the last attribute in this element. - TiXmlAttribute* LastAttribute() { return attributeSet.Last(); } - - /** Convenience function for easy access to the text inside an element. Although easy - and concise, GetText() is limited compared to getting the TiXmlText child - and accessing it directly. - - If the first child of 'this' is a TiXmlText, the GetText() - returns the character string of the Text node, else null is returned. - - This is a convenient method for getting the text of simple contained text: - @verbatim - This is text - const char* str = fooElement->GetText(); - @endverbatim - - 'str' will be a pointer to "This is text". - - Note that this function can be misleading. If the element foo was created from - this XML: - @verbatim - This is text - @endverbatim - - then the value of str would be null. The first child node isn't a text node, it is - another element. From this XML: - @verbatim - This is text - @endverbatim - GetText() will return "This is ". - - WARNING: GetText() accesses a child node - don't become confused with the - similarly named TiXmlHandle::Text() and TiXmlNode::ToText() which are - safe type casts on the referenced node. - */ - const char* GetText() const; - - /// Creates a new Element and returns it - the returned element is a copy. - virtual TiXmlNode* Clone() const; - // Print the Element to a FILE stream. - virtual void Print( FILE* cfile, int depth ) const; - - /* Attribtue parsing starts: next char past '<' - returns: next char past '>' - */ - virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); - - virtual const TiXmlElement* ToElement() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - virtual TiXmlElement* ToElement() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - - /** Walk the XML tree visiting this node and all of its children. - */ - virtual bool Accept( TiXmlVisitor* visitor ) const; - -protected: - - void CopyTo( TiXmlElement* target ) const; - void ClearThis(); // like clear, but initializes 'this' object as well - - // Used to be public [internal use] - #ifdef TIXML_USE_STL - virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); - #endif - /* [internal use] - Reads the "value" of the element -- another element, or text. - This should terminate with the current end tag. - */ - const char* ReadValue( const char* in, TiXmlParsingData* prevData, TiXmlEncoding encoding ); - -private: - TiXmlAttributeSet attributeSet; -}; - - -/** An XML comment. -*/ -class TiXmlComment : public TiXmlNode -{ -public: - /// Constructs an empty comment. - TiXmlComment() : TiXmlNode( TiXmlNode::TINYXML_COMMENT ) {} - /// Construct a comment from text. - TiXmlComment( const char* _value ) : TiXmlNode( TiXmlNode::TINYXML_COMMENT ) { - SetValue( _value ); - } - TiXmlComment( const TiXmlComment& ); - TiXmlComment& operator=( const TiXmlComment& base ); - - virtual ~TiXmlComment() {} - - /// Returns a copy of this Comment. - virtual TiXmlNode* Clone() const; - // Write this Comment to a FILE stream. - virtual void Print( FILE* cfile, int depth ) const; - - /* Attribtue parsing starts: at the ! of the !-- - returns: next char past '>' - */ - virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); - - virtual const TiXmlComment* ToComment() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - virtual TiXmlComment* ToComment() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - - /** Walk the XML tree visiting this node and all of its children. - */ - virtual bool Accept( TiXmlVisitor* visitor ) const; - -protected: - void CopyTo( TiXmlComment* target ) const; - - // used to be public - #ifdef TIXML_USE_STL - virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); - #endif -// virtual void StreamOut( TIXML_OSTREAM * out ) const; - -private: - -}; - - -/** XML text. A text node can have 2 ways to output the next. "normal" output - and CDATA. It will default to the mode it was parsed from the XML file and - you generally want to leave it alone, but you can change the output mode with - SetCDATA() and query it with CDATA(). -*/ -class TiXmlText : public TiXmlNode -{ - friend class TiXmlElement; -public: - /** Constructor for text element. By default, it is treated as - normal, encoded text. If you want it be output as a CDATA text - element, set the parameter _cdata to 'true' - */ - TiXmlText (const char * initValue ) : TiXmlNode (TiXmlNode::TINYXML_TEXT) - { - SetValue( initValue ); - cdata = false; - } - virtual ~TiXmlText() {} - - #ifdef TIXML_USE_STL - /// Constructor. - TiXmlText( const std::string& initValue ) : TiXmlNode (TiXmlNode::TINYXML_TEXT) - { - SetValue( initValue ); - cdata = false; - } - #endif - - TiXmlText( const TiXmlText& copy ) : TiXmlNode( TiXmlNode::TINYXML_TEXT ) { copy.CopyTo( this ); } - TiXmlText& operator=( const TiXmlText& base ) { base.CopyTo( this ); return *this; } - - // Write this text object to a FILE stream. - virtual void Print( FILE* cfile, int depth ) const; - - /// Queries whether this represents text using a CDATA section. - bool CDATA() const { return cdata; } - /// Turns on or off a CDATA representation of text. - void SetCDATA( bool _cdata ) { cdata = _cdata; } - - virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); - - virtual const TiXmlText* ToText() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - virtual TiXmlText* ToText() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - - /** Walk the XML tree visiting this node and all of its children. - */ - virtual bool Accept( TiXmlVisitor* content ) const; - -protected : - /// [internal use] Creates a new Element and returns it. - virtual TiXmlNode* Clone() const; - void CopyTo( TiXmlText* target ) const; - - bool Blank() const; // returns true if all white space and new lines - // [internal use] - #ifdef TIXML_USE_STL - virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); - #endif - -private: - bool cdata; // true if this should be input and output as a CDATA style text element -}; - - -/** In correct XML the declaration is the first entry in the file. - @verbatim - - @endverbatim - - TinyXml will happily read or write files without a declaration, - however. There are 3 possible attributes to the declaration: - version, encoding, and standalone. - - Note: In this version of the code, the attributes are - handled as special cases, not generic attributes, simply - because there can only be at most 3 and they are always the same. -*/ -class TiXmlDeclaration : public TiXmlNode -{ -public: - /// Construct an empty declaration. - TiXmlDeclaration() : TiXmlNode( TiXmlNode::TINYXML_DECLARATION ) {} - -#ifdef TIXML_USE_STL - /// Constructor. - TiXmlDeclaration( const std::string& _version, - const std::string& _encoding, - const std::string& _standalone ); -#endif - - /// Construct. - TiXmlDeclaration( const char* _version, - const char* _encoding, - const char* _standalone ); - - TiXmlDeclaration( const TiXmlDeclaration& copy ); - TiXmlDeclaration& operator=( const TiXmlDeclaration& copy ); - - virtual ~TiXmlDeclaration() {} - - /// Version. Will return an empty string if none was found. - const char *Version() const { return version.c_str (); } - /// Encoding. Will return an empty string if none was found. - const char *Encoding() const { return encoding.c_str (); } - /// Is this a standalone document? - const char *Standalone() const { return standalone.c_str (); } - - /// Creates a copy of this Declaration and returns it. - virtual TiXmlNode* Clone() const; - // Print this declaration to a FILE stream. - virtual void Print( FILE* cfile, int depth, TIXML_STRING* str ) const; - virtual void Print( FILE* cfile, int depth ) const { - Print( cfile, depth, 0 ); - } - - virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); - - virtual const TiXmlDeclaration* ToDeclaration() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - virtual TiXmlDeclaration* ToDeclaration() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - - /** Walk the XML tree visiting this node and all of its children. - */ - virtual bool Accept( TiXmlVisitor* visitor ) const; - -protected: - void CopyTo( TiXmlDeclaration* target ) const; - // used to be public - #ifdef TIXML_USE_STL - virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); - #endif - -private: - - TIXML_STRING version; - TIXML_STRING encoding; - TIXML_STRING standalone; -}; - - -/** Any tag that tinyXml doesn't recognize is saved as an - unknown. It is a tag of text, but should not be modified. - It will be written back to the XML, unchanged, when the file - is saved. - - DTD tags get thrown into TiXmlUnknowns. -*/ -class TiXmlUnknown : public TiXmlNode -{ -public: - TiXmlUnknown() : TiXmlNode( TiXmlNode::TINYXML_UNKNOWN ) {} - virtual ~TiXmlUnknown() {} - - TiXmlUnknown( const TiXmlUnknown& copy ) : TiXmlNode( TiXmlNode::TINYXML_UNKNOWN ) { copy.CopyTo( this ); } - TiXmlUnknown& operator=( const TiXmlUnknown& copy ) { copy.CopyTo( this ); return *this; } - - /// Creates a copy of this Unknown and returns it. - virtual TiXmlNode* Clone() const; - // Print this Unknown to a FILE stream. - virtual void Print( FILE* cfile, int depth ) const; - - virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); - - virtual const TiXmlUnknown* ToUnknown() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - virtual TiXmlUnknown* ToUnknown() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - - /** Walk the XML tree visiting this node and all of its children. - */ - virtual bool Accept( TiXmlVisitor* content ) const; - -protected: - void CopyTo( TiXmlUnknown* target ) const; - - #ifdef TIXML_USE_STL - virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); - #endif - -private: - -}; - - -/** Always the top level node. A document binds together all the - XML pieces. It can be saved, loaded, and printed to the screen. - The 'value' of a document node is the xml file name. -*/ -class TiXmlDocument : public TiXmlNode -{ -public: - /// Create an empty document, that has no name. - TiXmlDocument(); - /// Create a document with a name. The name of the document is also the filename of the xml. - TiXmlDocument( const char * documentName ); - - #ifdef TIXML_USE_STL - /// Constructor. - TiXmlDocument( const std::string& documentName ); - #endif - - TiXmlDocument( const TiXmlDocument& copy ); - TiXmlDocument& operator=( const TiXmlDocument& copy ); - - virtual ~TiXmlDocument() {} - - /** Load a file using the current document value. - Returns true if successful. Will delete any existing - document data before loading. - */ - bool LoadFile( TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); - /// Save a file using the current document value. Returns true if successful. - bool SaveFile() const; - /// Load a file using the given filename. Returns true if successful. - bool LoadFile( const char * filename, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); - /// Save a file using the given filename. Returns true if successful. - bool SaveFile( const char * filename ) const; - /** Load a file using the given FILE*. Returns true if successful. Note that this method - doesn't stream - the entire object pointed at by the FILE* - will be interpreted as an XML file. TinyXML doesn't stream in XML from the current - file location. Streaming may be added in the future. - */ - bool LoadFile( FILE*, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); - /// Save a file using the given FILE*. Returns true if successful. - bool SaveFile( FILE* ) const; - - #ifdef TIXML_USE_STL - bool LoadFile( const std::string& filename, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ) ///< STL std::string version. - { - return LoadFile( filename.c_str(), encoding ); - } - bool SaveFile( const std::string& filename ) const ///< STL std::string version. - { - return SaveFile( filename.c_str() ); - } - #endif - - /** Parse the given null terminated block of xml data. Passing in an encoding to this - method (either TIXML_ENCODING_LEGACY or TIXML_ENCODING_UTF8 will force TinyXml - to use that encoding, regardless of what TinyXml might otherwise try to detect. - */ - virtual const char* Parse( const char* p, TiXmlParsingData* data = 0, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); - - /** Get the root element -- the only top level element -- of the document. - In well formed XML, there should only be one. TinyXml is tolerant of - multiple elements at the document level. - */ - const TiXmlElement* RootElement() const { return FirstChildElement(); } - TiXmlElement* RootElement() { return FirstChildElement(); } - - /** If an error occurs, Error will be set to true. Also, - - The ErrorId() will contain the integer identifier of the error (not generally useful) - - The ErrorDesc() method will return the name of the error. (very useful) - - The ErrorRow() and ErrorCol() will return the location of the error (if known) - */ - bool Error() const { return error; } - - /// Contains a textual (english) description of the error if one occurs. - const char * ErrorDesc() const { return errorDesc.c_str (); } - - /** Generally, you probably want the error string ( ErrorDesc() ). But if you - prefer the ErrorId, this function will fetch it. - */ - int ErrorId() const { return errorId; } - - /** Returns the location (if known) of the error. The first column is column 1, - and the first row is row 1. A value of 0 means the row and column wasn't applicable - (memory errors, for example, have no row/column) or the parser lost the error. (An - error in the error reporting, in that case.) - - @sa SetTabSize, Row, Column - */ - int ErrorRow() const { return errorLocation.row+1; } - int ErrorCol() const { return errorLocation.col+1; } ///< The column where the error occured. See ErrorRow() - - /** SetTabSize() allows the error reporting functions (ErrorRow() and ErrorCol()) - to report the correct values for row and column. It does not change the output - or input in any way. - - By calling this method, with a tab size - greater than 0, the row and column of each node and attribute is stored - when the file is loaded. Very useful for tracking the DOM back in to - the source file. - - The tab size is required for calculating the location of nodes. If not - set, the default of 4 is used. The tabsize is set per document. Setting - the tabsize to 0 disables row/column tracking. - - Note that row and column tracking is not supported when using operator>>. - - The tab size needs to be enabled before the parse or load. Correct usage: - @verbatim - TiXmlDocument doc; - doc.SetTabSize( 8 ); - doc.Load( "myfile.xml" ); - @endverbatim - - @sa Row, Column - */ - void SetTabSize( int _tabsize ) { tabsize = _tabsize; } - - int TabSize() const { return tabsize; } - - /** If you have handled the error, it can be reset with this call. The error - state is automatically cleared if you Parse a new XML block. - */ - void ClearError() { error = false; - errorId = 0; - errorDesc = ""; - errorLocation.row = errorLocation.col = 0; - //errorLocation.last = 0; - } - - /** Write the document to standard out using formatted printing ("pretty print"). */ - void Print() const { Print( stdout, 0 ); } - - /* Write the document to a string using formatted printing ("pretty print"). This - will allocate a character array (new char[]) and return it as a pointer. The - calling code pust call delete[] on the return char* to avoid a memory leak. - */ - //char* PrintToMemory() const; - - /// Print this Document to a FILE stream. - virtual void Print( FILE* cfile, int depth = 0 ) const; - // [internal use] - void SetError( int err, const char* errorLocation, TiXmlParsingData* prevData, TiXmlEncoding encoding ); - - virtual const TiXmlDocument* ToDocument() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - virtual TiXmlDocument* ToDocument() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - - /** Walk the XML tree visiting this node and all of its children. - */ - virtual bool Accept( TiXmlVisitor* content ) const; - -protected : - // [internal use] - virtual TiXmlNode* Clone() const; - #ifdef TIXML_USE_STL - virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); - #endif - -private: - void CopyTo( TiXmlDocument* target ) const; - - bool error; - int errorId; - TIXML_STRING errorDesc; - int tabsize; - TiXmlCursor errorLocation; - bool useMicrosoftBOM; // the UTF-8 BOM were found when read. Note this, and try to write. -}; - - -/** - A TiXmlHandle is a class that wraps a node pointer with null checks; this is - an incredibly useful thing. Note that TiXmlHandle is not part of the TinyXml - DOM structure. It is a separate utility class. - - Take an example: - @verbatim - - - - - - - @endverbatim - - Assuming you want the value of "attributeB" in the 2nd "Child" element, it's very - easy to write a *lot* of code that looks like: - - @verbatim - TiXmlElement* root = document.FirstChildElement( "Document" ); - if ( root ) - { - TiXmlElement* element = root->FirstChildElement( "Element" ); - if ( element ) - { - TiXmlElement* child = element->FirstChildElement( "Child" ); - if ( child ) - { - TiXmlElement* child2 = child->NextSiblingElement( "Child" ); - if ( child2 ) - { - // Finally do something useful. - @endverbatim - - And that doesn't even cover "else" cases. TiXmlHandle addresses the verbosity - of such code. A TiXmlHandle checks for null pointers so it is perfectly safe - and correct to use: - - @verbatim - TiXmlHandle docHandle( &document ); - TiXmlElement* child2 = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", 1 ).ToElement(); - if ( child2 ) - { - // do something useful - @endverbatim - - Which is MUCH more concise and useful. - - It is also safe to copy handles - internally they are nothing more than node pointers. - @verbatim - TiXmlHandle handleCopy = handle; - @endverbatim - - What they should not be used for is iteration: - - @verbatim - int i=0; - while ( true ) - { - TiXmlElement* child = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", i ).ToElement(); - if ( !child ) - break; - // do something - ++i; - } - @endverbatim - - It seems reasonable, but it is in fact two embedded while loops. The Child method is - a linear walk to find the element, so this code would iterate much more than it needs - to. Instead, prefer: - - @verbatim - TiXmlElement* child = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).FirstChild( "Child" ).ToElement(); - - for( child; child; child=child->NextSiblingElement() ) - { - // do something - } - @endverbatim -*/ -class TiXmlHandle -{ -public: - /// Create a handle from any node (at any depth of the tree.) This can be a null pointer. - TiXmlHandle( TiXmlNode* _node ) { this->node = _node; } - /// Copy constructor - TiXmlHandle( const TiXmlHandle& ref ) { this->node = ref.node; } - TiXmlHandle operator=( const TiXmlHandle& ref ) { if ( &ref != this ) this->node = ref.node; return *this; } - - /// Return a handle to the first child node. - TiXmlHandle FirstChild() const; - /// Return a handle to the first child node with the given name. - TiXmlHandle FirstChild( const char * value ) const; - /// Return a handle to the first child element. - TiXmlHandle FirstChildElement() const; - /// Return a handle to the first child element with the given name. - TiXmlHandle FirstChildElement( const char * value ) const; - - /** Return a handle to the "index" child with the given name. - The first child is 0, the second 1, etc. - */ - TiXmlHandle Child( const char* value, int index ) const; - /** Return a handle to the "index" child. - The first child is 0, the second 1, etc. - */ - TiXmlHandle Child( int index ) const; - /** Return a handle to the "index" child element with the given name. - The first child element is 0, the second 1, etc. Note that only TiXmlElements - are indexed: other types are not counted. - */ - TiXmlHandle ChildElement( const char* value, int index ) const; - /** Return a handle to the "index" child element. - The first child element is 0, the second 1, etc. Note that only TiXmlElements - are indexed: other types are not counted. - */ - TiXmlHandle ChildElement( int index ) const; - - #ifdef TIXML_USE_STL - TiXmlHandle FirstChild( const std::string& _value ) const { return FirstChild( _value.c_str() ); } - TiXmlHandle FirstChildElement( const std::string& _value ) const { return FirstChildElement( _value.c_str() ); } - - TiXmlHandle Child( const std::string& _value, int index ) const { return Child( _value.c_str(), index ); } - TiXmlHandle ChildElement( const std::string& _value, int index ) const { return ChildElement( _value.c_str(), index ); } - #endif - - /** Return the handle as a TiXmlNode. This may return null. - */ - TiXmlNode* ToNode() const { return node; } - /** Return the handle as a TiXmlElement. This may return null. - */ - TiXmlElement* ToElement() const { return ( ( node && node->ToElement() ) ? node->ToElement() : 0 ); } - /** Return the handle as a TiXmlText. This may return null. - */ - TiXmlText* ToText() const { return ( ( node && node->ToText() ) ? node->ToText() : 0 ); } - /** Return the handle as a TiXmlUnknown. This may return null. - */ - TiXmlUnknown* ToUnknown() const { return ( ( node && node->ToUnknown() ) ? node->ToUnknown() : 0 ); } - - /** @deprecated use ToNode. - Return the handle as a TiXmlNode. This may return null. - */ - TiXmlNode* Node() const { return ToNode(); } - /** @deprecated use ToElement. - Return the handle as a TiXmlElement. This may return null. - */ - TiXmlElement* Element() const { return ToElement(); } - /** @deprecated use ToText() - Return the handle as a TiXmlText. This may return null. - */ - TiXmlText* Text() const { return ToText(); } - /** @deprecated use ToUnknown() - Return the handle as a TiXmlUnknown. This may return null. - */ - TiXmlUnknown* Unknown() const { return ToUnknown(); } - -private: - TiXmlNode* node; -}; - - -/** Print to memory functionality. The TiXmlPrinter is useful when you need to: - - -# Print to memory (especially in non-STL mode) - -# Control formatting (line endings, etc.) - - When constructed, the TiXmlPrinter is in its default "pretty printing" mode. - Before calling Accept() you can call methods to control the printing - of the XML document. After TiXmlNode::Accept() is called, the printed document can - be accessed via the CStr(), Str(), and Size() methods. - - TiXmlPrinter uses the Visitor API. - @verbatim - TiXmlPrinter printer; - printer.SetIndent( "\t" ); - - doc.Accept( &printer ); - fprintf( stdout, "%s", printer.CStr() ); - @endverbatim -*/ -class TiXmlPrinter : public TiXmlVisitor -{ -public: - TiXmlPrinter() : depth( 0 ), simpleTextPrint( false ), - buffer(), indent( " " ), lineBreak( "\n" ) {} - - virtual bool VisitEnter( const TiXmlDocument& doc ); - virtual bool VisitExit( const TiXmlDocument& doc ); - - virtual bool VisitEnter( const TiXmlElement& element, const TiXmlAttribute* firstAttribute ); - virtual bool VisitExit( const TiXmlElement& element ); - - virtual bool Visit( const TiXmlDeclaration& declaration ); - virtual bool Visit( const TiXmlText& text ); - virtual bool Visit( const TiXmlComment& comment ); - virtual bool Visit( const TiXmlUnknown& unknown ); - - /** Set the indent characters for printing. By default 4 spaces - but tab (\t) is also useful, or null/empty string for no indentation. - */ - void SetIndent( const char* _indent ) { indent = _indent ? _indent : "" ; } - /// Query the indention string. - const char* Indent() { return indent.c_str(); } - /** Set the line breaking string. By default set to newline (\n). - Some operating systems prefer other characters, or can be - set to the null/empty string for no indenation. - */ - void SetLineBreak( const char* _lineBreak ) { lineBreak = _lineBreak ? _lineBreak : ""; } - /// Query the current line breaking string. - const char* LineBreak() { return lineBreak.c_str(); } - - /** Switch over to "stream printing" which is the most dense formatting without - linebreaks. Common when the XML is needed for network transmission. - */ - void SetStreamPrinting() { indent = ""; - lineBreak = ""; - } - /// Return the result. - const char* CStr() { return buffer.c_str(); } - /// Return the length of the result string. - size_t Size() { return buffer.size(); } - - #ifdef TIXML_USE_STL - /// Return the result. - const std::string& Str() { return buffer; } - #endif - -private: - void DoIndent() { - for( int i=0; i -#include - -#include "tinyxml.h" - -//#define DEBUG_PARSER -#if defined( DEBUG_PARSER ) -# if defined( DEBUG ) && defined( _MSC_VER ) -# include -# define TIXML_LOG OutputDebugString -# else -# define TIXML_LOG printf -# endif -#endif - -// Note tha "PutString" hardcodes the same list. This -// is less flexible than it appears. Changing the entries -// or order will break putstring. -TiXmlBase::Entity TiXmlBase::entity[ TiXmlBase::NUM_ENTITY ] = -{ - { "&", 5, '&' }, - { "<", 4, '<' }, - { ">", 4, '>' }, - { """, 6, '\"' }, - { "'", 6, '\'' } -}; - -// Bunch of unicode info at: -// http://www.unicode.org/faq/utf_bom.html -// Including the basic of this table, which determines the #bytes in the -// sequence from the lead byte. 1 placed for invalid sequences -- -// although the result will be junk, pass it through as much as possible. -// Beware of the non-characters in UTF-8: -// ef bb bf (Microsoft "lead bytes") -// ef bf be -// ef bf bf - -const unsigned char TIXML_UTF_LEAD_0 = 0xefU; -const unsigned char TIXML_UTF_LEAD_1 = 0xbbU; -const unsigned char TIXML_UTF_LEAD_2 = 0xbfU; - -const int TiXmlBase::utf8ByteTable[256] = -{ - // 0 1 2 3 4 5 6 7 8 9 a b c d e f - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x00 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x10 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x20 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x30 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x40 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x50 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x60 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x70 End of ASCII range - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x80 0x80 to 0xc1 invalid - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x90 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0xa0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0xb0 - 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // 0xc0 0xc2 to 0xdf 2 byte - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // 0xd0 - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, // 0xe0 0xe0 to 0xef 3 byte - 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // 0xf0 0xf0 to 0xf4 4 byte, 0xf5 and higher invalid -}; - - -void TiXmlBase::ConvertUTF32ToUTF8( unsigned long input, char* output, int* length ) -{ - const unsigned long BYTE_MASK = 0xBF; - const unsigned long BYTE_MARK = 0x80; - const unsigned long FIRST_BYTE_MARK[7] = { 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC }; - - if (input < 0x80) - *length = 1; - else if ( input < 0x800 ) - *length = 2; - else if ( input < 0x10000 ) - *length = 3; - else if ( input < 0x200000 ) - *length = 4; - else - { *length = 0; return; } // This code won't covert this correctly anyway. - - output += *length; - - // Scary scary fall throughs. - switch (*length) - { - case 4: - --output; - *output = (char)((input | BYTE_MARK) & BYTE_MASK); - input >>= 6; - case 3: - --output; - *output = (char)((input | BYTE_MARK) & BYTE_MASK); - input >>= 6; - case 2: - --output; - *output = (char)((input | BYTE_MARK) & BYTE_MASK); - input >>= 6; - case 1: - --output; - *output = (char)(input | FIRST_BYTE_MARK[*length]); - } -} - - -/*static*/ int TiXmlBase::IsAlpha( unsigned char anyByte, TiXmlEncoding /*encoding*/ ) -{ - // This will only work for low-ascii, everything else is assumed to be a valid - // letter. I'm not sure this is the best approach, but it is quite tricky trying - // to figure out alhabetical vs. not across encoding. So take a very - // conservative approach. - -// if ( encoding == TIXML_ENCODING_UTF8 ) -// { - if ( anyByte < 127 ) - return isalpha( anyByte ); - else - return 1; // What else to do? The unicode set is huge...get the english ones right. -// } -// else -// { -// return isalpha( anyByte ); -// } -} - - -/*static*/ int TiXmlBase::IsAlphaNum( unsigned char anyByte, TiXmlEncoding /*encoding*/ ) -{ - // This will only work for low-ascii, everything else is assumed to be a valid - // letter. I'm not sure this is the best approach, but it is quite tricky trying - // to figure out alhabetical vs. not across encoding. So take a very - // conservative approach. - -// if ( encoding == TIXML_ENCODING_UTF8 ) -// { - if ( anyByte < 127 ) - return isalnum( anyByte ); - else - return 1; // What else to do? The unicode set is huge...get the english ones right. -// } -// else -// { -// return isalnum( anyByte ); -// } -} - - -class TiXmlParsingData -{ - friend class TiXmlDocument; - public: - void Stamp( const char* now, TiXmlEncoding encoding ); - - const TiXmlCursor& Cursor() const { return cursor; } - - private: - // Only used by the document! - TiXmlParsingData( const char* start, int _tabsize, int row, int col ) - { - assert( start ); - stamp = start; - tabsize = _tabsize; - cursor.row = row; - cursor.col = col; - } - - TiXmlCursor cursor; - const char* stamp; - int tabsize; -}; - - -void TiXmlParsingData::Stamp( const char* now, TiXmlEncoding encoding ) -{ - assert( now ); - - // Do nothing if the tabsize is 0. - if ( tabsize < 1 ) - { - return; - } - - // Get the current row, column. - int row = cursor.row; - int col = cursor.col; - const char* p = stamp; - assert( p ); - - while ( p < now ) - { - // Treat p as unsigned, so we have a happy compiler. - const unsigned char* pU = (const unsigned char*)p; - - // Code contributed by Fletcher Dunn: (modified by lee) - switch (*pU) { - case 0: - // We *should* never get here, but in case we do, don't - // advance past the terminating null character, ever - return; - - case '\r': - // bump down to the next line - ++row; - col = 0; - // Eat the character - ++p; - - // Check for \r\n sequence, and treat this as a single character - if (*p == '\n') { - ++p; - } - break; - - case '\n': - // bump down to the next line - ++row; - col = 0; - - // Eat the character - ++p; - - // Check for \n\r sequence, and treat this as a single - // character. (Yes, this bizarre thing does occur still - // on some arcane platforms...) - if (*p == '\r') { - ++p; - } - break; - - case '\t': - // Eat the character - ++p; - - // Skip to next tab stop - col = (col / tabsize + 1) * tabsize; - break; - - case TIXML_UTF_LEAD_0: - if ( encoding == TIXML_ENCODING_UTF8 ) - { - if ( *(p+1) && *(p+2) ) - { - // In these cases, don't advance the column. These are - // 0-width spaces. - if ( *(pU+1)==TIXML_UTF_LEAD_1 && *(pU+2)==TIXML_UTF_LEAD_2 ) - p += 3; - else if ( *(pU+1)==0xbfU && *(pU+2)==0xbeU ) - p += 3; - else if ( *(pU+1)==0xbfU && *(pU+2)==0xbfU ) - p += 3; - else - { p +=3; ++col; } // A normal character. - } - } - else - { - ++p; - ++col; - } - break; - - default: - if ( encoding == TIXML_ENCODING_UTF8 ) - { - // Eat the 1 to 4 byte utf8 character. - int step = TiXmlBase::utf8ByteTable[*((const unsigned char*)p)]; - if ( step == 0 ) - step = 1; // Error case from bad encoding, but handle gracefully. - p += step; - - // Just advance one column, of course. - ++col; - } - else - { - ++p; - ++col; - } - break; - } - } - cursor.row = row; - cursor.col = col; - assert( cursor.row >= -1 ); - assert( cursor.col >= -1 ); - stamp = p; - assert( stamp ); -} - - -const char* TiXmlBase::SkipWhiteSpace( const char* p, TiXmlEncoding encoding ) -{ - if ( !p || !*p ) - { - return 0; - } - if ( encoding == TIXML_ENCODING_UTF8 ) - { - while ( *p ) - { - const unsigned char* pU = (const unsigned char*)p; - - // Skip the stupid Microsoft UTF-8 Byte order marks - if ( *(pU+0)==TIXML_UTF_LEAD_0 - && *(pU+1)==TIXML_UTF_LEAD_1 - && *(pU+2)==TIXML_UTF_LEAD_2 ) - { - p += 3; - continue; - } - else if(*(pU+0)==TIXML_UTF_LEAD_0 - && *(pU+1)==0xbfU - && *(pU+2)==0xbeU ) - { - p += 3; - continue; - } - else if(*(pU+0)==TIXML_UTF_LEAD_0 - && *(pU+1)==0xbfU - && *(pU+2)==0xbfU ) - { - p += 3; - continue; - } - - if ( IsWhiteSpace( *p ) ) // Still using old rules for white space. - ++p; - else - break; - } - } - else - { - while ( *p && IsWhiteSpace( *p ) ) - ++p; - } - - return p; -} - -#ifdef TIXML_USE_STL -/*static*/ bool TiXmlBase::StreamWhiteSpace( std::istream * in, TIXML_STRING * tag ) -{ - for( ;; ) - { - if ( !in->good() ) return false; - - int c = in->peek(); - // At this scope, we can't get to a document. So fail silently. - if ( !IsWhiteSpace( c ) || c <= 0 ) - return true; - - *tag += (char) in->get(); - } -} - -/*static*/ bool TiXmlBase::StreamTo( std::istream * in, int character, TIXML_STRING * tag ) -{ - //assert( character > 0 && character < 128 ); // else it won't work in utf-8 - while ( in->good() ) - { - int c = in->peek(); - if ( c == character ) - return true; - if ( c <= 0 ) // Silent failure: can't get document at this scope - return false; - - in->get(); - *tag += (char) c; - } - return false; -} -#endif - -// One of TinyXML's more performance demanding functions. Try to keep the memory overhead down. The -// "assign" optimization removes over 10% of the execution time. -// -const char* TiXmlBase::ReadName( const char* p, TIXML_STRING * name, TiXmlEncoding encoding ) -{ - // Oddly, not supported on some comilers, - //name->clear(); - // So use this: - *name = ""; - assert( p ); - - // Names start with letters or underscores. - // Of course, in unicode, tinyxml has no idea what a letter *is*. The - // algorithm is generous. - // - // After that, they can be letters, underscores, numbers, - // hyphens, or colons. (Colons are valid ony for namespaces, - // but tinyxml can't tell namespaces from names.) - if ( p && *p - && ( IsAlpha( (unsigned char) *p, encoding ) || *p == '_' ) ) - { - const char* start = p; - while( p && *p - && ( IsAlphaNum( (unsigned char ) *p, encoding ) - || *p == '_' - || *p == '-' - || *p == '.' - || *p == ':' ) ) - { - //(*name) += *p; // expensive - ++p; - } - if ( p-start > 0 ) { - name->assign( start, p-start ); - } - return p; - } - return 0; -} - -const char* TiXmlBase::GetEntity( const char* p, char* value, int* length, TiXmlEncoding encoding ) -{ - // Presume an entity, and pull it out. - TIXML_STRING ent; - int i; - *length = 0; - - if ( *(p+1) && *(p+1) == '#' && *(p+2) ) - { - unsigned long ucs = 0; - ptrdiff_t delta = 0; - unsigned mult = 1; - - if ( *(p+2) == 'x' ) - { - // Hexadecimal. - if ( !*(p+3) ) return 0; - - const char* q = p+3; - q = strchr( q, ';' ); - - if ( !q || !*q ) return 0; - - delta = q-p; - --q; - - while ( *q != 'x' ) - { - if ( *q >= '0' && *q <= '9' ) - ucs += mult * (*q - '0'); - else if ( *q >= 'a' && *q <= 'f' ) - ucs += mult * (*q - 'a' + 10); - else if ( *q >= 'A' && *q <= 'F' ) - ucs += mult * (*q - 'A' + 10 ); - else - return 0; - mult *= 16; - --q; - } - } - else - { - // Decimal. - if ( !*(p+2) ) return 0; - - const char* q = p+2; - q = strchr( q, ';' ); - - if ( !q || !*q ) return 0; - - delta = q-p; - --q; - - while ( *q != '#' ) - { - if ( *q >= '0' && *q <= '9' ) - ucs += mult * (*q - '0'); - else - return 0; - mult *= 10; - --q; - } - } - if ( encoding == TIXML_ENCODING_UTF8 ) - { - // convert the UCS to UTF-8 - ConvertUTF32ToUTF8( ucs, value, length ); - } - else - { - *value = (char)ucs; - *length = 1; - } - return p + delta + 1; - } - - // Now try to match it. - for( i=0; iappend( cArr, len ); - } - } - else - { - bool whitespace = false; - - // Remove leading white space: - p = SkipWhiteSpace( p, encoding ); - while ( p && *p - && !StringEqual( p, endTag, caseInsensitive, encoding ) ) - { - if ( *p == '\r' || *p == '\n' ) - { - whitespace = true; - ++p; - } - else if ( IsWhiteSpace( *p ) ) - { - whitespace = true; - ++p; - } - else - { - // If we've found whitespace, add it before the - // new character. Any whitespace just becomes a space. - if ( whitespace ) - { - (*text) += ' '; - whitespace = false; - } - int len; - char cArr[4] = { 0, 0, 0, 0 }; - p = GetChar( p, cArr, &len, encoding ); - if ( len == 1 ) - (*text) += cArr[0]; // more efficient - else - text->append( cArr, len ); - } - } - } - if ( p && *p ) - p += strlen( endTag ); - return ( p && *p ) ? p : 0; -} - -#ifdef TIXML_USE_STL - -void TiXmlDocument::StreamIn( std::istream * in, TIXML_STRING * tag ) -{ - // The basic issue with a document is that we don't know what we're - // streaming. Read something presumed to be a tag (and hope), then - // identify it, and call the appropriate stream method on the tag. - // - // This "pre-streaming" will never read the closing ">" so the - // sub-tag can orient itself. - - if ( !StreamTo( in, '<', tag ) ) - { - SetError( TIXML_ERROR_PARSING_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return; - } - - while ( in->good() ) - { - int tagIndex = (int) tag->length(); - while ( in->good() && in->peek() != '>' ) - { - int c = in->get(); - if ( c <= 0 ) - { - SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN ); - break; - } - (*tag) += (char) c; - } - - if ( in->good() ) - { - // We now have something we presume to be a node of - // some sort. Identify it, and call the node to - // continue streaming. - TiXmlNode* node = Identify( tag->c_str() + tagIndex, TIXML_DEFAULT_ENCODING ); - - if ( node ) - { - node->StreamIn( in, tag ); - bool isElement = node->ToElement() != 0; - delete node; - node = 0; - - // If this is the root element, we're done. Parsing will be - // done by the >> operator. - if ( isElement ) - { - return; - } - } - else - { - SetError( TIXML_ERROR, 0, 0, TIXML_ENCODING_UNKNOWN ); - return; - } - } - } - // We should have returned sooner. - SetError( TIXML_ERROR, 0, 0, TIXML_ENCODING_UNKNOWN ); -} - -#endif - -const char* TiXmlDocument::Parse( const char* p, TiXmlParsingData* prevData, TiXmlEncoding encoding ) -{ - ClearError(); - - // Parse away, at the document level. Since a document - // contains nothing but other tags, most of what happens - // here is skipping white space. - if ( !p || !*p ) - { - SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return 0; - } - - // Note that, for a document, this needs to come - // before the while space skip, so that parsing - // starts from the pointer we are given. - location.Clear(); - if ( prevData ) - { - location.row = prevData->cursor.row; - location.col = prevData->cursor.col; - } - else - { - location.row = 0; - location.col = 0; - } - TiXmlParsingData data( p, TabSize(), location.row, location.col ); - location = data.Cursor(); - - if ( encoding == TIXML_ENCODING_UNKNOWN ) - { - // Check for the Microsoft UTF-8 lead bytes. - const unsigned char* pU = (const unsigned char*)p; - if ( *(pU+0) && *(pU+0) == TIXML_UTF_LEAD_0 - && *(pU+1) && *(pU+1) == TIXML_UTF_LEAD_1 - && *(pU+2) && *(pU+2) == TIXML_UTF_LEAD_2 ) - { - encoding = TIXML_ENCODING_UTF8; - useMicrosoftBOM = true; - } - } - - p = SkipWhiteSpace( p, encoding ); - if ( !p ) - { - SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return 0; - } - - while ( p && *p ) - { - TiXmlNode* node = Identify( p, encoding ); - if ( node ) - { - p = node->Parse( p, &data, encoding ); - LinkEndChild( node ); - } - else - { - break; - } - - // Did we get encoding info? - if ( encoding == TIXML_ENCODING_UNKNOWN - && node->ToDeclaration() ) - { - TiXmlDeclaration* dec = node->ToDeclaration(); - const char* enc = dec->Encoding(); - assert( enc ); - - if ( *enc == 0 ) - encoding = TIXML_ENCODING_UTF8; - else if ( StringEqual( enc, "UTF-8", true, TIXML_ENCODING_UNKNOWN ) ) - encoding = TIXML_ENCODING_UTF8; - else if ( StringEqual( enc, "UTF8", true, TIXML_ENCODING_UNKNOWN ) ) - encoding = TIXML_ENCODING_UTF8; // incorrect, but be nice - else - encoding = TIXML_ENCODING_LEGACY; - } - - p = SkipWhiteSpace( p, encoding ); - } - - // Was this empty? - if ( !firstChild ) { - SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, encoding ); - return 0; - } - - // All is well. - return p; -} - -void TiXmlDocument::SetError( int err, const char* pError, TiXmlParsingData* data, TiXmlEncoding encoding ) -{ - // The first error in a chain is more accurate - don't set again! - if ( error ) - return; - - assert( err > 0 && err < TIXML_ERROR_STRING_COUNT ); - error = true; - errorId = err; - errorDesc = errorString[ errorId ]; - - errorLocation.Clear(); - if ( pError && data ) - { - data->Stamp( pError, encoding ); - errorLocation = data->Cursor(); - } -} - - -TiXmlNode* TiXmlNode::Identify( const char* p, TiXmlEncoding encoding ) -{ - TiXmlNode* returnNode = 0; - - p = SkipWhiteSpace( p, encoding ); - if( !p || !*p || *p != '<' ) - { - return 0; - } - - p = SkipWhiteSpace( p, encoding ); - - if ( !p || !*p ) - { - return 0; - } - - // What is this thing? - // - Elements start with a letter or underscore, but xml is reserved. - // - Comments: "; - - if ( !StringEqual( p, startTag, false, encoding ) ) - { - if ( document ) - document->SetError( TIXML_ERROR_PARSING_COMMENT, p, data, encoding ); - return 0; - } - p += strlen( startTag ); - - // [ 1475201 ] TinyXML parses entities in comments - // Oops - ReadText doesn't work, because we don't want to parse the entities. - // p = ReadText( p, &value, false, endTag, false, encoding ); - // - // from the XML spec: - /* - [Definition: Comments may appear anywhere in a document outside other markup; in addition, - they may appear within the document type declaration at places allowed by the grammar. - They are not part of the document's character data; an XML processor MAY, but need not, - make it possible for an application to retrieve the text of comments. For compatibility, - the string "--" (double-hyphen) MUST NOT occur within comments.] Parameter entity - references MUST NOT be recognized within comments. - - An example of a comment: - - - */ - - value = ""; - // Keep all the white space. - while ( p && *p && !StringEqual( p, endTag, false, encoding ) ) - { - value.append( p, 1 ); - ++p; - } - if ( p && *p ) - p += strlen( endTag ); - - return p; -} - - -const char* TiXmlAttribute::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ) -{ - p = SkipWhiteSpace( p, encoding ); - if ( !p || !*p ) return 0; - - if ( data ) - { - data->Stamp( p, encoding ); - location = data->Cursor(); - } - // Read the name, the '=' and the value. - const char* pErr = p; - p = ReadName( p, &name, encoding ); - if ( !p || !*p ) - { - if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, pErr, data, encoding ); - return 0; - } - p = SkipWhiteSpace( p, encoding ); - if ( !p || !*p || *p != '=' ) - { - if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding ); - return 0; - } - - ++p; // skip '=' - p = SkipWhiteSpace( p, encoding ); - if ( !p || !*p ) - { - if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding ); - return 0; - } - - const char* end; - const char SINGLE_QUOTE = '\''; - const char DOUBLE_QUOTE = '\"'; - - if ( *p == SINGLE_QUOTE ) - { - ++p; - end = "\'"; // single quote in string - p = ReadText( p, &value, false, end, false, encoding ); - } - else if ( *p == DOUBLE_QUOTE ) - { - ++p; - end = "\""; // double quote in string - p = ReadText( p, &value, false, end, false, encoding ); - } - else - { - // All attribute values should be in single or double quotes. - // But this is such a common error that the parser will try - // its best, even without them. - value = ""; - while ( p && *p // existence - && !IsWhiteSpace( *p ) // whitespace - && *p != '/' && *p != '>' ) // tag end - { - if ( *p == SINGLE_QUOTE || *p == DOUBLE_QUOTE ) { - // [ 1451649 ] Attribute values with trailing quotes not handled correctly - // We did not have an opening quote but seem to have a - // closing one. Give up and throw an error. - if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding ); - return 0; - } - value += *p; - ++p; - } - } - return p; -} - -#ifdef TIXML_USE_STL -void TiXmlText::StreamIn( std::istream * in, TIXML_STRING * tag ) -{ - while ( in->good() ) - { - int c = in->peek(); - if ( !cdata && (c == '<' ) ) - { - return; - } - if ( c <= 0 ) - { - TiXmlDocument* document = GetDocument(); - if ( document ) - document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN ); - return; - } - - (*tag) += (char) c; - in->get(); // "commits" the peek made above - - if ( cdata && c == '>' && tag->size() >= 3 ) { - size_t len = tag->size(); - if ( (*tag)[len-2] == ']' && (*tag)[len-3] == ']' ) { - // terminator of cdata. - return; - } - } - } -} -#endif - -const char* TiXmlText::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ) -{ - value = ""; - TiXmlDocument* document = GetDocument(); - - if ( data ) - { - data->Stamp( p, encoding ); - location = data->Cursor(); - } - - const char* const startTag = ""; - - if ( cdata || StringEqual( p, startTag, false, encoding ) ) - { - cdata = true; - - if ( !StringEqual( p, startTag, false, encoding ) ) - { - if ( document ) - document->SetError( TIXML_ERROR_PARSING_CDATA, p, data, encoding ); - return 0; - } - p += strlen( startTag ); - - // Keep all the white space, ignore the encoding, etc. - while ( p && *p - && !StringEqual( p, endTag, false, encoding ) - ) - { - value += *p; - ++p; - } - - TIXML_STRING dummy; - p = ReadText( p, &dummy, false, endTag, false, encoding ); - return p; - } - else - { - bool ignoreWhite = true; - - const char* end = "<"; - p = ReadText( p, &value, ignoreWhite, end, false, encoding ); - if ( p && *p ) - return p-1; // don't truncate the '<' - return 0; - } -} - -#ifdef TIXML_USE_STL -void TiXmlDeclaration::StreamIn( std::istream * in, TIXML_STRING * tag ) -{ - while ( in->good() ) - { - int c = in->get(); - if ( c <= 0 ) - { - TiXmlDocument* document = GetDocument(); - if ( document ) - document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN ); - return; - } - (*tag) += (char) c; - - if ( c == '>' ) - { - // All is well. - return; - } - } -} -#endif - -const char* TiXmlDeclaration::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding _encoding ) -{ - p = SkipWhiteSpace( p, _encoding ); - // Find the beginning, find the end, and look for - // the stuff in-between. - TiXmlDocument* document = GetDocument(); - if ( !p || !*p || !StringEqual( p, "SetError( TIXML_ERROR_PARSING_DECLARATION, 0, 0, _encoding ); - return 0; - } - if ( data ) - { - data->Stamp( p, _encoding ); - location = data->Cursor(); - } - p += 5; - - version = ""; - encoding = ""; - standalone = ""; - - while ( p && *p ) - { - if ( *p == '>' ) - { - ++p; - return p; - } - - p = SkipWhiteSpace( p, _encoding ); - if ( StringEqual( p, "version", true, _encoding ) ) - { - TiXmlAttribute attrib; - p = attrib.Parse( p, data, _encoding ); - version = attrib.Value(); - } - else if ( StringEqual( p, "encoding", true, _encoding ) ) - { - TiXmlAttribute attrib; - p = attrib.Parse( p, data, _encoding ); - encoding = attrib.Value(); - } - else if ( StringEqual( p, "standalone", true, _encoding ) ) - { - TiXmlAttribute attrib; - p = attrib.Parse( p, data, _encoding ); - standalone = attrib.Value(); - } - else - { - // Read over whatever it is. - while( p && *p && *p != '>' && !IsWhiteSpace( *p ) ) - ++p; - } - } - return 0; -} - -bool TiXmlText::Blank() const -{ - for ( unsigned i=0; i, et al. - * - * This software is licensed as described in the file COPYING, which - * you should have received as part of this distribution. The terms - * are also available at https://curl.haxx.se/docs/copyright.html. - * - * You may opt to use, copy, modify, merge, publish, distribute and/or sell - * copies of the Software, and permit persons to whom the Software is - * furnished to do so, under the terms of the COPYING file. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ***************************************************************************/ - -/* - * If you have libcurl problems, all docs and details are found here: - * https://curl.haxx.se/libcurl/ - * - * curl-library mailing list subscription and unsubscription web interface: - * https://cool.haxx.se/mailman/listinfo/curl-library/ - */ - -#ifdef CURL_NO_OLDIES -#define CURL_STRICTER -#endif - -#include "curlver.h" /* libcurl version defines */ -#include "system.h" /* determine things run-time */ - -/* - * Define WIN32 when build target is Win32 API - */ - -#if (defined(_WIN32) || defined(__WIN32__)) && \ - !defined(WIN32) && !defined(__SYMBIAN32__) -#define WIN32 -#endif - -#include -#include - -#if defined(__FreeBSD__) && (__FreeBSD__ >= 2) -/* Needed for __FreeBSD_version symbol definition */ -#include -#endif - -/* The include stuff here below is mainly for time_t! */ -#include -#include - -#if defined(WIN32) && !defined(_WIN32_WCE) && !defined(__CYGWIN__) -#if !(defined(_WINSOCKAPI_) || defined(_WINSOCK_H) || \ - defined(__LWIP_OPT_H__) || defined(LWIP_HDR_OPT_H)) -/* The check above prevents the winsock2 inclusion if winsock.h already was - included, since they can't co-exist without problems */ -#include -#include -#endif -#endif - -/* HP-UX systems version 9, 10 and 11 lack sys/select.h and so does oldish - libc5-based Linux systems. Only include it on systems that are known to - require it! */ -#if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \ - defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \ - defined(ANDROID) || defined(__ANDROID__) || defined(__OpenBSD__) || \ - (defined(__FreeBSD_version) && (__FreeBSD_version < 800000)) -#include -#endif - -#if !defined(WIN32) && !defined(_WIN32_WCE) -#include -#endif - -#if !defined(WIN32) && !defined(__WATCOMC__) && !defined(__VXWORKS__) -#include -#endif - -#ifdef __BEOS__ -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined(BUILDING_LIBCURL) || defined(CURL_STRICTER) -typedef struct Curl_easy CURL; -typedef struct Curl_share CURLSH; -#else -typedef void CURL; -typedef void CURLSH; -#endif - -/* - * libcurl external API function linkage decorations. - */ - -#ifdef CURL_STATICLIB -# define CURL_EXTERN -#elif defined(WIN32) || defined(_WIN32) || defined(__SYMBIAN32__) -# if defined(BUILDING_LIBCURL) -# define CURL_EXTERN __declspec(dllexport) -# else -# define CURL_EXTERN __declspec(dllimport) -# endif -#elif defined(BUILDING_LIBCURL) && defined(CURL_HIDDEN_SYMBOLS) -# define CURL_EXTERN CURL_EXTERN_SYMBOL -#else -# define CURL_EXTERN -#endif - -#ifndef curl_socket_typedef -/* socket typedef */ -#if defined(WIN32) && !defined(__LWIP_OPT_H__) && !defined(LWIP_HDR_OPT_H) -typedef SOCKET curl_socket_t; -#define CURL_SOCKET_BAD INVALID_SOCKET -#else -typedef int curl_socket_t; -#define CURL_SOCKET_BAD -1 -#endif -#define curl_socket_typedef -#endif /* curl_socket_typedef */ - -struct curl_httppost { - struct curl_httppost *next; /* next entry in the list */ - char *name; /* pointer to allocated name */ - long namelength; /* length of name length */ - char *contents; /* pointer to allocated data contents */ - long contentslength; /* length of contents field, see also - CURL_HTTPPOST_LARGE */ - char *buffer; /* pointer to allocated buffer contents */ - long bufferlength; /* length of buffer field */ - char *contenttype; /* Content-Type */ - struct curl_slist *contentheader; /* list of extra headers for this form */ - struct curl_httppost *more; /* if one field name has more than one - file, this link should link to following - files */ - long flags; /* as defined below */ - -/* specified content is a file name */ -#define CURL_HTTPPOST_FILENAME (1<<0) -/* specified content is a file name */ -#define CURL_HTTPPOST_READFILE (1<<1) -/* name is only stored pointer do not free in formfree */ -#define CURL_HTTPPOST_PTRNAME (1<<2) -/* contents is only stored pointer do not free in formfree */ -#define CURL_HTTPPOST_PTRCONTENTS (1<<3) -/* upload file from buffer */ -#define CURL_HTTPPOST_BUFFER (1<<4) -/* upload file from pointer contents */ -#define CURL_HTTPPOST_PTRBUFFER (1<<5) -/* upload file contents by using the regular read callback to get the data and - pass the given pointer as custom pointer */ -#define CURL_HTTPPOST_CALLBACK (1<<6) -/* use size in 'contentlen', added in 7.46.0 */ -#define CURL_HTTPPOST_LARGE (1<<7) - - char *showfilename; /* The file name to show. If not set, the - actual file name will be used (if this - is a file part) */ - void *userp; /* custom pointer used for - HTTPPOST_CALLBACK posts */ - curl_off_t contentlen; /* alternative length of contents - field. Used if CURL_HTTPPOST_LARGE is - set. Added in 7.46.0 */ -}; - -/* This is the CURLOPT_PROGRESSFUNCTION callback proto. It is now considered - deprecated but was the only choice up until 7.31.0 */ -typedef int (*curl_progress_callback)(void *clientp, - double dltotal, - double dlnow, - double ultotal, - double ulnow); - -/* This is the CURLOPT_XFERINFOFUNCTION callback proto. It was introduced in - 7.32.0, it avoids floating point and provides more detailed information. */ -typedef int (*curl_xferinfo_callback)(void *clientp, - curl_off_t dltotal, - curl_off_t dlnow, - curl_off_t ultotal, - curl_off_t ulnow); - -#ifndef CURL_MAX_READ_SIZE - /* The maximum receive buffer size configurable via CURLOPT_BUFFERSIZE. */ -#define CURL_MAX_READ_SIZE 524288 -#endif - -#ifndef CURL_MAX_WRITE_SIZE - /* Tests have proven that 20K is a very bad buffer size for uploads on - Windows, while 16K for some odd reason performed a lot better. - We do the ifndef check to allow this value to easier be changed at build - time for those who feel adventurous. The practical minimum is about - 400 bytes since libcurl uses a buffer of this size as a scratch area - (unrelated to network send operations). */ -#define CURL_MAX_WRITE_SIZE 16384 -#endif - -#ifndef CURL_MAX_HTTP_HEADER -/* The only reason to have a max limit for this is to avoid the risk of a bad - server feeding libcurl with a never-ending header that will cause reallocs - infinitely */ -#define CURL_MAX_HTTP_HEADER (100*1024) -#endif - -/* This is a magic return code for the write callback that, when returned, - will signal libcurl to pause receiving on the current transfer. */ -#define CURL_WRITEFUNC_PAUSE 0x10000001 - -typedef size_t (*curl_write_callback)(char *buffer, - size_t size, - size_t nitems, - void *outstream); - - - -/* enumeration of file types */ -typedef enum { - CURLFILETYPE_FILE = 0, - CURLFILETYPE_DIRECTORY, - CURLFILETYPE_SYMLINK, - CURLFILETYPE_DEVICE_BLOCK, - CURLFILETYPE_DEVICE_CHAR, - CURLFILETYPE_NAMEDPIPE, - CURLFILETYPE_SOCKET, - CURLFILETYPE_DOOR, /* is possible only on Sun Solaris now */ - - CURLFILETYPE_UNKNOWN /* should never occur */ -} curlfiletype; - -#define CURLFINFOFLAG_KNOWN_FILENAME (1<<0) -#define CURLFINFOFLAG_KNOWN_FILETYPE (1<<1) -#define CURLFINFOFLAG_KNOWN_TIME (1<<2) -#define CURLFINFOFLAG_KNOWN_PERM (1<<3) -#define CURLFINFOFLAG_KNOWN_UID (1<<4) -#define CURLFINFOFLAG_KNOWN_GID (1<<5) -#define CURLFINFOFLAG_KNOWN_SIZE (1<<6) -#define CURLFINFOFLAG_KNOWN_HLINKCOUNT (1<<7) - -/* Content of this structure depends on information which is known and is - achievable (e.g. by FTP LIST parsing). Please see the url_easy_setopt(3) man - page for callbacks returning this structure -- some fields are mandatory, - some others are optional. The FLAG field has special meaning. */ -struct curl_fileinfo { - char *filename; - curlfiletype filetype; - time_t time; - unsigned int perm; - int uid; - int gid; - curl_off_t size; - long int hardlinks; - - struct { - /* If some of these fields is not NULL, it is a pointer to b_data. */ - char *time; - char *perm; - char *user; - char *group; - char *target; /* pointer to the target filename of a symlink */ - } strings; - - unsigned int flags; - - /* used internally */ - char *b_data; - size_t b_size; - size_t b_used; -}; - -/* return codes for CURLOPT_CHUNK_BGN_FUNCTION */ -#define CURL_CHUNK_BGN_FUNC_OK 0 -#define CURL_CHUNK_BGN_FUNC_FAIL 1 /* tell the lib to end the task */ -#define CURL_CHUNK_BGN_FUNC_SKIP 2 /* skip this chunk over */ - -/* if splitting of data transfer is enabled, this callback is called before - download of an individual chunk started. Note that parameter "remains" works - only for FTP wildcard downloading (for now), otherwise is not used */ -typedef long (*curl_chunk_bgn_callback)(const void *transfer_info, - void *ptr, - int remains); - -/* return codes for CURLOPT_CHUNK_END_FUNCTION */ -#define CURL_CHUNK_END_FUNC_OK 0 -#define CURL_CHUNK_END_FUNC_FAIL 1 /* tell the lib to end the task */ - -/* If splitting of data transfer is enabled this callback is called after - download of an individual chunk finished. - Note! After this callback was set then it have to be called FOR ALL chunks. - Even if downloading of this chunk was skipped in CHUNK_BGN_FUNC. - This is the reason why we don't need "transfer_info" parameter in this - callback and we are not interested in "remains" parameter too. */ -typedef long (*curl_chunk_end_callback)(void *ptr); - -/* return codes for FNMATCHFUNCTION */ -#define CURL_FNMATCHFUNC_MATCH 0 /* string corresponds to the pattern */ -#define CURL_FNMATCHFUNC_NOMATCH 1 /* pattern doesn't match the string */ -#define CURL_FNMATCHFUNC_FAIL 2 /* an error occurred */ - -/* callback type for wildcard downloading pattern matching. If the - string matches the pattern, return CURL_FNMATCHFUNC_MATCH value, etc. */ -typedef int (*curl_fnmatch_callback)(void *ptr, - const char *pattern, - const char *string); - -/* These are the return codes for the seek callbacks */ -#define CURL_SEEKFUNC_OK 0 -#define CURL_SEEKFUNC_FAIL 1 /* fail the entire transfer */ -#define CURL_SEEKFUNC_CANTSEEK 2 /* tell libcurl seeking can't be done, so - libcurl might try other means instead */ -typedef int (*curl_seek_callback)(void *instream, - curl_off_t offset, - int origin); /* 'whence' */ - -/* This is a return code for the read callback that, when returned, will - signal libcurl to immediately abort the current transfer. */ -#define CURL_READFUNC_ABORT 0x10000000 -/* This is a return code for the read callback that, when returned, will - signal libcurl to pause sending data on the current transfer. */ -#define CURL_READFUNC_PAUSE 0x10000001 - -typedef size_t (*curl_read_callback)(char *buffer, - size_t size, - size_t nitems, - void *instream); - -typedef enum { - CURLSOCKTYPE_IPCXN, /* socket created for a specific IP connection */ - CURLSOCKTYPE_ACCEPT, /* socket created by accept() call */ - CURLSOCKTYPE_LAST /* never use */ -} curlsocktype; - -/* The return code from the sockopt_callback can signal information back - to libcurl: */ -#define CURL_SOCKOPT_OK 0 -#define CURL_SOCKOPT_ERROR 1 /* causes libcurl to abort and return - CURLE_ABORTED_BY_CALLBACK */ -#define CURL_SOCKOPT_ALREADY_CONNECTED 2 - -typedef int (*curl_sockopt_callback)(void *clientp, - curl_socket_t curlfd, - curlsocktype purpose); - -struct curl_sockaddr { - int family; - int socktype; - int protocol; - unsigned int addrlen; /* addrlen was a socklen_t type before 7.18.0 but it - turned really ugly and painful on the systems that - lack this type */ - struct sockaddr addr; -}; - -typedef curl_socket_t -(*curl_opensocket_callback)(void *clientp, - curlsocktype purpose, - struct curl_sockaddr *address); - -typedef int -(*curl_closesocket_callback)(void *clientp, curl_socket_t item); - -typedef enum { - CURLIOE_OK, /* I/O operation successful */ - CURLIOE_UNKNOWNCMD, /* command was unknown to callback */ - CURLIOE_FAILRESTART, /* failed to restart the read */ - CURLIOE_LAST /* never use */ -} curlioerr; - -typedef enum { - CURLIOCMD_NOP, /* no operation */ - CURLIOCMD_RESTARTREAD, /* restart the read stream from start */ - CURLIOCMD_LAST /* never use */ -} curliocmd; - -typedef curlioerr (*curl_ioctl_callback)(CURL *handle, - int cmd, - void *clientp); - -#ifndef CURL_DID_MEMORY_FUNC_TYPEDEFS -/* - * The following typedef's are signatures of malloc, free, realloc, strdup and - * calloc respectively. Function pointers of these types can be passed to the - * curl_global_init_mem() function to set user defined memory management - * callback routines. - */ -typedef void *(*curl_malloc_callback)(size_t size); -typedef void (*curl_free_callback)(void *ptr); -typedef void *(*curl_realloc_callback)(void *ptr, size_t size); -typedef char *(*curl_strdup_callback)(const char *str); -typedef void *(*curl_calloc_callback)(size_t nmemb, size_t size); - -#define CURL_DID_MEMORY_FUNC_TYPEDEFS -#endif - -/* the kind of data that is passed to information_callback*/ -typedef enum { - CURLINFO_TEXT = 0, - CURLINFO_HEADER_IN, /* 1 */ - CURLINFO_HEADER_OUT, /* 2 */ - CURLINFO_DATA_IN, /* 3 */ - CURLINFO_DATA_OUT, /* 4 */ - CURLINFO_SSL_DATA_IN, /* 5 */ - CURLINFO_SSL_DATA_OUT, /* 6 */ - CURLINFO_END -} curl_infotype; - -typedef int (*curl_debug_callback) - (CURL *handle, /* the handle/transfer this concerns */ - curl_infotype type, /* what kind of data */ - char *data, /* points to the data */ - size_t size, /* size of the data pointed to */ - void *userptr); /* whatever the user please */ - -/* All possible error codes from all sorts of curl functions. Future versions - may return other values, stay prepared. - - Always add new return codes last. Never *EVER* remove any. The return - codes must remain the same! - */ - -typedef enum { - CURLE_OK = 0, - CURLE_UNSUPPORTED_PROTOCOL, /* 1 */ - CURLE_FAILED_INIT, /* 2 */ - CURLE_URL_MALFORMAT, /* 3 */ - CURLE_NOT_BUILT_IN, /* 4 - [was obsoleted in August 2007 for - 7.17.0, reused in April 2011 for 7.21.5] */ - CURLE_COULDNT_RESOLVE_PROXY, /* 5 */ - CURLE_COULDNT_RESOLVE_HOST, /* 6 */ - CURLE_COULDNT_CONNECT, /* 7 */ - CURLE_WEIRD_SERVER_REPLY, /* 8 */ - CURLE_REMOTE_ACCESS_DENIED, /* 9 a service was denied by the server - due to lack of access - when login fails - this is not returned. */ - CURLE_FTP_ACCEPT_FAILED, /* 10 - [was obsoleted in April 2006 for - 7.15.4, reused in Dec 2011 for 7.24.0]*/ - CURLE_FTP_WEIRD_PASS_REPLY, /* 11 */ - CURLE_FTP_ACCEPT_TIMEOUT, /* 12 - timeout occurred accepting server - [was obsoleted in August 2007 for 7.17.0, - reused in Dec 2011 for 7.24.0]*/ - CURLE_FTP_WEIRD_PASV_REPLY, /* 13 */ - CURLE_FTP_WEIRD_227_FORMAT, /* 14 */ - CURLE_FTP_CANT_GET_HOST, /* 15 */ - CURLE_HTTP2, /* 16 - A problem in the http2 framing layer. - [was obsoleted in August 2007 for 7.17.0, - reused in July 2014 for 7.38.0] */ - CURLE_FTP_COULDNT_SET_TYPE, /* 17 */ - CURLE_PARTIAL_FILE, /* 18 */ - CURLE_FTP_COULDNT_RETR_FILE, /* 19 */ - CURLE_OBSOLETE20, /* 20 - NOT USED */ - CURLE_QUOTE_ERROR, /* 21 - quote command failure */ - CURLE_HTTP_RETURNED_ERROR, /* 22 */ - CURLE_WRITE_ERROR, /* 23 */ - CURLE_OBSOLETE24, /* 24 - NOT USED */ - CURLE_UPLOAD_FAILED, /* 25 - failed upload "command" */ - CURLE_READ_ERROR, /* 26 - couldn't open/read from file */ - CURLE_OUT_OF_MEMORY, /* 27 */ - /* Note: CURLE_OUT_OF_MEMORY may sometimes indicate a conversion error - instead of a memory allocation error if CURL_DOES_CONVERSIONS - is defined - */ - CURLE_OPERATION_TIMEDOUT, /* 28 - the timeout time was reached */ - CURLE_OBSOLETE29, /* 29 - NOT USED */ - CURLE_FTP_PORT_FAILED, /* 30 - FTP PORT operation failed */ - CURLE_FTP_COULDNT_USE_REST, /* 31 - the REST command failed */ - CURLE_OBSOLETE32, /* 32 - NOT USED */ - CURLE_RANGE_ERROR, /* 33 - RANGE "command" didn't work */ - CURLE_HTTP_POST_ERROR, /* 34 */ - CURLE_SSL_CONNECT_ERROR, /* 35 - wrong when connecting with SSL */ - CURLE_BAD_DOWNLOAD_RESUME, /* 36 - couldn't resume download */ - CURLE_FILE_COULDNT_READ_FILE, /* 37 */ - CURLE_LDAP_CANNOT_BIND, /* 38 */ - CURLE_LDAP_SEARCH_FAILED, /* 39 */ - CURLE_OBSOLETE40, /* 40 - NOT USED */ - CURLE_FUNCTION_NOT_FOUND, /* 41 - NOT USED starting with 7.53.0 */ - CURLE_ABORTED_BY_CALLBACK, /* 42 */ - CURLE_BAD_FUNCTION_ARGUMENT, /* 43 */ - CURLE_OBSOLETE44, /* 44 - NOT USED */ - CURLE_INTERFACE_FAILED, /* 45 - CURLOPT_INTERFACE failed */ - CURLE_OBSOLETE46, /* 46 - NOT USED */ - CURLE_TOO_MANY_REDIRECTS, /* 47 - catch endless re-direct loops */ - CURLE_UNKNOWN_OPTION, /* 48 - User specified an unknown option */ - CURLE_TELNET_OPTION_SYNTAX, /* 49 - Malformed telnet option */ - CURLE_OBSOLETE50, /* 50 - NOT USED */ - CURLE_PEER_FAILED_VERIFICATION, /* 51 - peer's certificate or fingerprint - wasn't verified fine */ - CURLE_GOT_NOTHING, /* 52 - when this is a specific error */ - CURLE_SSL_ENGINE_NOTFOUND, /* 53 - SSL crypto engine not found */ - CURLE_SSL_ENGINE_SETFAILED, /* 54 - can not set SSL crypto engine as - default */ - CURLE_SEND_ERROR, /* 55 - failed sending network data */ - CURLE_RECV_ERROR, /* 56 - failure in receiving network data */ - CURLE_OBSOLETE57, /* 57 - NOT IN USE */ - CURLE_SSL_CERTPROBLEM, /* 58 - problem with the local certificate */ - CURLE_SSL_CIPHER, /* 59 - couldn't use specified cipher */ - CURLE_SSL_CACERT, /* 60 - problem with the CA cert (path?) */ - CURLE_BAD_CONTENT_ENCODING, /* 61 - Unrecognized/bad encoding */ - CURLE_LDAP_INVALID_URL, /* 62 - Invalid LDAP URL */ - CURLE_FILESIZE_EXCEEDED, /* 63 - Maximum file size exceeded */ - CURLE_USE_SSL_FAILED, /* 64 - Requested FTP SSL level failed */ - CURLE_SEND_FAIL_REWIND, /* 65 - Sending the data requires a rewind - that failed */ - CURLE_SSL_ENGINE_INITFAILED, /* 66 - failed to initialise ENGINE */ - CURLE_LOGIN_DENIED, /* 67 - user, password or similar was not - accepted and we failed to login */ - CURLE_TFTP_NOTFOUND, /* 68 - file not found on server */ - CURLE_TFTP_PERM, /* 69 - permission problem on server */ - CURLE_REMOTE_DISK_FULL, /* 70 - out of disk space on server */ - CURLE_TFTP_ILLEGAL, /* 71 - Illegal TFTP operation */ - CURLE_TFTP_UNKNOWNID, /* 72 - Unknown transfer ID */ - CURLE_REMOTE_FILE_EXISTS, /* 73 - File already exists */ - CURLE_TFTP_NOSUCHUSER, /* 74 - No such user */ - CURLE_CONV_FAILED, /* 75 - conversion failed */ - CURLE_CONV_REQD, /* 76 - caller must register conversion - callbacks using curl_easy_setopt options - CURLOPT_CONV_FROM_NETWORK_FUNCTION, - CURLOPT_CONV_TO_NETWORK_FUNCTION, and - CURLOPT_CONV_FROM_UTF8_FUNCTION */ - CURLE_SSL_CACERT_BADFILE, /* 77 - could not load CACERT file, missing - or wrong format */ - CURLE_REMOTE_FILE_NOT_FOUND, /* 78 - remote file not found */ - CURLE_SSH, /* 79 - error from the SSH layer, somewhat - generic so the error message will be of - interest when this has happened */ - - CURLE_SSL_SHUTDOWN_FAILED, /* 80 - Failed to shut down the SSL - connection */ - CURLE_AGAIN, /* 81 - socket is not ready for send/recv, - wait till it's ready and try again (Added - in 7.18.2) */ - CURLE_SSL_CRL_BADFILE, /* 82 - could not load CRL file, missing or - wrong format (Added in 7.19.0) */ - CURLE_SSL_ISSUER_ERROR, /* 83 - Issuer check failed. (Added in - 7.19.0) */ - CURLE_FTP_PRET_FAILED, /* 84 - a PRET command failed */ - CURLE_RTSP_CSEQ_ERROR, /* 85 - mismatch of RTSP CSeq numbers */ - CURLE_RTSP_SESSION_ERROR, /* 86 - mismatch of RTSP Session Ids */ - CURLE_FTP_BAD_FILE_LIST, /* 87 - unable to parse FTP file list */ - CURLE_CHUNK_FAILED, /* 88 - chunk callback reported error */ - CURLE_NO_CONNECTION_AVAILABLE, /* 89 - No connection available, the - session will be queued */ - CURLE_SSL_PINNEDPUBKEYNOTMATCH, /* 90 - specified pinned public key did not - match */ - CURLE_SSL_INVALIDCERTSTATUS, /* 91 - invalid certificate status */ - CURLE_HTTP2_STREAM, /* 92 - stream error in HTTP/2 framing layer - */ - CURL_LAST /* never use! */ -} CURLcode; - -#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all - the obsolete stuff removed! */ - -/* Previously obsolete error code re-used in 7.38.0 */ -#define CURLE_OBSOLETE16 CURLE_HTTP2 - -/* Previously obsolete error codes re-used in 7.24.0 */ -#define CURLE_OBSOLETE10 CURLE_FTP_ACCEPT_FAILED -#define CURLE_OBSOLETE12 CURLE_FTP_ACCEPT_TIMEOUT - -/* compatibility with older names */ -#define CURLOPT_ENCODING CURLOPT_ACCEPT_ENCODING -#define CURLE_FTP_WEIRD_SERVER_REPLY CURLE_WEIRD_SERVER_REPLY - -/* The following were added in 7.21.5, April 2011 */ -#define CURLE_UNKNOWN_TELNET_OPTION CURLE_UNKNOWN_OPTION - -/* The following were added in 7.17.1 */ -/* These are scheduled to disappear by 2009 */ -#define CURLE_SSL_PEER_CERTIFICATE CURLE_PEER_FAILED_VERIFICATION - -/* The following were added in 7.17.0 */ -/* These are scheduled to disappear by 2009 */ -#define CURLE_OBSOLETE CURLE_OBSOLETE50 /* no one should be using this! */ -#define CURLE_BAD_PASSWORD_ENTERED CURLE_OBSOLETE46 -#define CURLE_BAD_CALLING_ORDER CURLE_OBSOLETE44 -#define CURLE_FTP_USER_PASSWORD_INCORRECT CURLE_OBSOLETE10 -#define CURLE_FTP_CANT_RECONNECT CURLE_OBSOLETE16 -#define CURLE_FTP_COULDNT_GET_SIZE CURLE_OBSOLETE32 -#define CURLE_FTP_COULDNT_SET_ASCII CURLE_OBSOLETE29 -#define CURLE_FTP_WEIRD_USER_REPLY CURLE_OBSOLETE12 -#define CURLE_FTP_WRITE_ERROR CURLE_OBSOLETE20 -#define CURLE_LIBRARY_NOT_FOUND CURLE_OBSOLETE40 -#define CURLE_MALFORMAT_USER CURLE_OBSOLETE24 -#define CURLE_SHARE_IN_USE CURLE_OBSOLETE57 -#define CURLE_URL_MALFORMAT_USER CURLE_NOT_BUILT_IN - -#define CURLE_FTP_ACCESS_DENIED CURLE_REMOTE_ACCESS_DENIED -#define CURLE_FTP_COULDNT_SET_BINARY CURLE_FTP_COULDNT_SET_TYPE -#define CURLE_FTP_QUOTE_ERROR CURLE_QUOTE_ERROR -#define CURLE_TFTP_DISKFULL CURLE_REMOTE_DISK_FULL -#define CURLE_TFTP_EXISTS CURLE_REMOTE_FILE_EXISTS -#define CURLE_HTTP_RANGE_ERROR CURLE_RANGE_ERROR -#define CURLE_FTP_SSL_FAILED CURLE_USE_SSL_FAILED - -/* The following were added earlier */ - -#define CURLE_OPERATION_TIMEOUTED CURLE_OPERATION_TIMEDOUT - -#define CURLE_HTTP_NOT_FOUND CURLE_HTTP_RETURNED_ERROR -#define CURLE_HTTP_PORT_FAILED CURLE_INTERFACE_FAILED -#define CURLE_FTP_COULDNT_STOR_FILE CURLE_UPLOAD_FAILED - -#define CURLE_FTP_PARTIAL_FILE CURLE_PARTIAL_FILE -#define CURLE_FTP_BAD_DOWNLOAD_RESUME CURLE_BAD_DOWNLOAD_RESUME - -/* This was the error code 50 in 7.7.3 and a few earlier versions, this - is no longer used by libcurl but is instead #defined here only to not - make programs break */ -#define CURLE_ALREADY_COMPLETE 99999 - -/* Provide defines for really old option names */ -#define CURLOPT_FILE CURLOPT_WRITEDATA /* name changed in 7.9.7 */ -#define CURLOPT_INFILE CURLOPT_READDATA /* name changed in 7.9.7 */ -#define CURLOPT_WRITEHEADER CURLOPT_HEADERDATA - -/* Since long deprecated options with no code in the lib that does anything - with them. */ -#define CURLOPT_WRITEINFO CURLOPT_OBSOLETE40 -#define CURLOPT_CLOSEPOLICY CURLOPT_OBSOLETE72 - -#endif /*!CURL_NO_OLDIES*/ - -/* This prototype applies to all conversion callbacks */ -typedef CURLcode (*curl_conv_callback)(char *buffer, size_t length); - -typedef CURLcode (*curl_ssl_ctx_callback)(CURL *curl, /* easy handle */ - void *ssl_ctx, /* actually an - OpenSSL SSL_CTX */ - void *userptr); - -typedef enum { - CURLPROXY_HTTP = 0, /* added in 7.10, new in 7.19.4 default is to use - CONNECT HTTP/1.1 */ - CURLPROXY_HTTP_1_0 = 1, /* added in 7.19.4, force to use CONNECT - HTTP/1.0 */ - CURLPROXY_HTTPS = 2, /* added in 7.52.0 */ - CURLPROXY_SOCKS4 = 4, /* support added in 7.15.2, enum existed already - in 7.10 */ - CURLPROXY_SOCKS5 = 5, /* added in 7.10 */ - CURLPROXY_SOCKS4A = 6, /* added in 7.18.0 */ - CURLPROXY_SOCKS5_HOSTNAME = 7 /* Use the SOCKS5 protocol but pass along the - host name rather than the IP address. added - in 7.18.0 */ -} curl_proxytype; /* this enum was added in 7.10 */ - -/* - * Bitmasks for CURLOPT_HTTPAUTH and CURLOPT_PROXYAUTH options: - * - * CURLAUTH_NONE - No HTTP authentication - * CURLAUTH_BASIC - HTTP Basic authentication (default) - * CURLAUTH_DIGEST - HTTP Digest authentication - * CURLAUTH_NEGOTIATE - HTTP Negotiate (SPNEGO) authentication - * CURLAUTH_GSSNEGOTIATE - Alias for CURLAUTH_NEGOTIATE (deprecated) - * CURLAUTH_NTLM - HTTP NTLM authentication - * CURLAUTH_DIGEST_IE - HTTP Digest authentication with IE flavour - * CURLAUTH_NTLM_WB - HTTP NTLM authentication delegated to winbind helper - * CURLAUTH_ONLY - Use together with a single other type to force no - * authentication or just that single type - * CURLAUTH_ANY - All fine types set - * CURLAUTH_ANYSAFE - All fine types except Basic - */ - -#define CURLAUTH_NONE ((unsigned long)0) -#define CURLAUTH_BASIC (((unsigned long)1)<<0) -#define CURLAUTH_DIGEST (((unsigned long)1)<<1) -#define CURLAUTH_NEGOTIATE (((unsigned long)1)<<2) -/* Deprecated since the advent of CURLAUTH_NEGOTIATE */ -#define CURLAUTH_GSSNEGOTIATE CURLAUTH_NEGOTIATE -/* Used for CURLOPT_SOCKS5_AUTH to stay terminologically correct */ -#define CURLAUTH_GSSAPI CURLAUTH_NEGOTIATE -#define CURLAUTH_NTLM (((unsigned long)1)<<3) -#define CURLAUTH_DIGEST_IE (((unsigned long)1)<<4) -#define CURLAUTH_NTLM_WB (((unsigned long)1)<<5) -#define CURLAUTH_ONLY (((unsigned long)1)<<31) -#define CURLAUTH_ANY (~CURLAUTH_DIGEST_IE) -#define CURLAUTH_ANYSAFE (~(CURLAUTH_BASIC|CURLAUTH_DIGEST_IE)) - -#define CURLSSH_AUTH_ANY ~0 /* all types supported by the server */ -#define CURLSSH_AUTH_NONE 0 /* none allowed, silly but complete */ -#define CURLSSH_AUTH_PUBLICKEY (1<<0) /* public/private key files */ -#define CURLSSH_AUTH_PASSWORD (1<<1) /* password */ -#define CURLSSH_AUTH_HOST (1<<2) /* host key files */ -#define CURLSSH_AUTH_KEYBOARD (1<<3) /* keyboard interactive */ -#define CURLSSH_AUTH_AGENT (1<<4) /* agent (ssh-agent, pageant...) */ -#define CURLSSH_AUTH_DEFAULT CURLSSH_AUTH_ANY - -#define CURLGSSAPI_DELEGATION_NONE 0 /* no delegation (default) */ -#define CURLGSSAPI_DELEGATION_POLICY_FLAG (1<<0) /* if permitted by policy */ -#define CURLGSSAPI_DELEGATION_FLAG (1<<1) /* delegate always */ - -#define CURL_ERROR_SIZE 256 - -enum curl_khtype { - CURLKHTYPE_UNKNOWN, - CURLKHTYPE_RSA1, - CURLKHTYPE_RSA, - CURLKHTYPE_DSS -}; - -struct curl_khkey { - const char *key; /* points to a zero-terminated string encoded with base64 - if len is zero, otherwise to the "raw" data */ - size_t len; - enum curl_khtype keytype; -}; - -/* this is the set of return values expected from the curl_sshkeycallback - callback */ -enum curl_khstat { - CURLKHSTAT_FINE_ADD_TO_FILE, - CURLKHSTAT_FINE, - CURLKHSTAT_REJECT, /* reject the connection, return an error */ - CURLKHSTAT_DEFER, /* do not accept it, but we can't answer right now so - this causes a CURLE_DEFER error but otherwise the - connection will be left intact etc */ - CURLKHSTAT_LAST /* not for use, only a marker for last-in-list */ -}; - -/* this is the set of status codes pass in to the callback */ -enum curl_khmatch { - CURLKHMATCH_OK, /* match */ - CURLKHMATCH_MISMATCH, /* host found, key mismatch! */ - CURLKHMATCH_MISSING, /* no matching host/key found */ - CURLKHMATCH_LAST /* not for use, only a marker for last-in-list */ -}; - -typedef int - (*curl_sshkeycallback) (CURL *easy, /* easy handle */ - const struct curl_khkey *knownkey, /* known */ - const struct curl_khkey *foundkey, /* found */ - enum curl_khmatch, /* libcurl's view on the keys */ - void *clientp); /* custom pointer passed from app */ - -/* parameter for the CURLOPT_USE_SSL option */ -typedef enum { - CURLUSESSL_NONE, /* do not attempt to use SSL */ - CURLUSESSL_TRY, /* try using SSL, proceed anyway otherwise */ - CURLUSESSL_CONTROL, /* SSL for the control connection or fail */ - CURLUSESSL_ALL, /* SSL for all communication or fail */ - CURLUSESSL_LAST /* not an option, never use */ -} curl_usessl; - -/* Definition of bits for the CURLOPT_SSL_OPTIONS argument: */ - -/* - ALLOW_BEAST tells libcurl to allow the BEAST SSL vulnerability in the - name of improving interoperability with older servers. Some SSL libraries - have introduced work-arounds for this flaw but those work-arounds sometimes - make the SSL communication fail. To regain functionality with those broken - servers, a user can this way allow the vulnerability back. */ -#define CURLSSLOPT_ALLOW_BEAST (1<<0) - -/* - NO_REVOKE tells libcurl to disable certificate revocation checks for those - SSL backends where such behavior is present. */ -#define CURLSSLOPT_NO_REVOKE (1<<1) - -#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all - the obsolete stuff removed! */ - -/* Backwards compatibility with older names */ -/* These are scheduled to disappear by 2009 */ - -#define CURLFTPSSL_NONE CURLUSESSL_NONE -#define CURLFTPSSL_TRY CURLUSESSL_TRY -#define CURLFTPSSL_CONTROL CURLUSESSL_CONTROL -#define CURLFTPSSL_ALL CURLUSESSL_ALL -#define CURLFTPSSL_LAST CURLUSESSL_LAST -#define curl_ftpssl curl_usessl -#endif /*!CURL_NO_OLDIES*/ - -/* parameter for the CURLOPT_FTP_SSL_CCC option */ -typedef enum { - CURLFTPSSL_CCC_NONE, /* do not send CCC */ - CURLFTPSSL_CCC_PASSIVE, /* Let the server initiate the shutdown */ - CURLFTPSSL_CCC_ACTIVE, /* Initiate the shutdown */ - CURLFTPSSL_CCC_LAST /* not an option, never use */ -} curl_ftpccc; - -/* parameter for the CURLOPT_FTPSSLAUTH option */ -typedef enum { - CURLFTPAUTH_DEFAULT, /* let libcurl decide */ - CURLFTPAUTH_SSL, /* use "AUTH SSL" */ - CURLFTPAUTH_TLS, /* use "AUTH TLS" */ - CURLFTPAUTH_LAST /* not an option, never use */ -} curl_ftpauth; - -/* parameter for the CURLOPT_FTP_CREATE_MISSING_DIRS option */ -typedef enum { - CURLFTP_CREATE_DIR_NONE, /* do NOT create missing dirs! */ - CURLFTP_CREATE_DIR, /* (FTP/SFTP) if CWD fails, try MKD and then CWD - again if MKD succeeded, for SFTP this does - similar magic */ - CURLFTP_CREATE_DIR_RETRY, /* (FTP only) if CWD fails, try MKD and then CWD - again even if MKD failed! */ - CURLFTP_CREATE_DIR_LAST /* not an option, never use */ -} curl_ftpcreatedir; - -/* parameter for the CURLOPT_FTP_FILEMETHOD option */ -typedef enum { - CURLFTPMETHOD_DEFAULT, /* let libcurl pick */ - CURLFTPMETHOD_MULTICWD, /* single CWD operation for each path part */ - CURLFTPMETHOD_NOCWD, /* no CWD at all */ - CURLFTPMETHOD_SINGLECWD, /* one CWD to full dir, then work on file */ - CURLFTPMETHOD_LAST /* not an option, never use */ -} curl_ftpmethod; - -/* bitmask defines for CURLOPT_HEADEROPT */ -#define CURLHEADER_UNIFIED 0 -#define CURLHEADER_SEPARATE (1<<0) - -/* CURLPROTO_ defines are for the CURLOPT_*PROTOCOLS options */ -#define CURLPROTO_HTTP (1<<0) -#define CURLPROTO_HTTPS (1<<1) -#define CURLPROTO_FTP (1<<2) -#define CURLPROTO_FTPS (1<<3) -#define CURLPROTO_SCP (1<<4) -#define CURLPROTO_SFTP (1<<5) -#define CURLPROTO_TELNET (1<<6) -#define CURLPROTO_LDAP (1<<7) -#define CURLPROTO_LDAPS (1<<8) -#define CURLPROTO_DICT (1<<9) -#define CURLPROTO_FILE (1<<10) -#define CURLPROTO_TFTP (1<<11) -#define CURLPROTO_IMAP (1<<12) -#define CURLPROTO_IMAPS (1<<13) -#define CURLPROTO_POP3 (1<<14) -#define CURLPROTO_POP3S (1<<15) -#define CURLPROTO_SMTP (1<<16) -#define CURLPROTO_SMTPS (1<<17) -#define CURLPROTO_RTSP (1<<18) -#define CURLPROTO_RTMP (1<<19) -#define CURLPROTO_RTMPT (1<<20) -#define CURLPROTO_RTMPE (1<<21) -#define CURLPROTO_RTMPTE (1<<22) -#define CURLPROTO_RTMPS (1<<23) -#define CURLPROTO_RTMPTS (1<<24) -#define CURLPROTO_GOPHER (1<<25) -#define CURLPROTO_SMB (1<<26) -#define CURLPROTO_SMBS (1<<27) -#define CURLPROTO_ALL (~0) /* enable everything */ - -/* long may be 32 or 64 bits, but we should never depend on anything else - but 32 */ -#define CURLOPTTYPE_LONG 0 -#define CURLOPTTYPE_OBJECTPOINT 10000 -#define CURLOPTTYPE_STRINGPOINT 10000 -#define CURLOPTTYPE_FUNCTIONPOINT 20000 -#define CURLOPTTYPE_OFF_T 30000 - -/* *STRINGPOINT is an alias for OBJECTPOINT to allow tools to extract the - string options from the header file */ - -/* name is uppercase CURLOPT_, - type is one of the defined CURLOPTTYPE_ - number is unique identifier */ -#ifdef CINIT -#undef CINIT -#endif - -#ifdef CURL_ISOCPP -#define CINIT(na,t,nu) CURLOPT_ ## na = CURLOPTTYPE_ ## t + nu -#else -/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */ -#define LONG CURLOPTTYPE_LONG -#define OBJECTPOINT CURLOPTTYPE_OBJECTPOINT -#define STRINGPOINT CURLOPTTYPE_OBJECTPOINT -#define FUNCTIONPOINT CURLOPTTYPE_FUNCTIONPOINT -#define OFF_T CURLOPTTYPE_OFF_T -#define CINIT(name,type,number) CURLOPT_/**/name = type + number -#endif - -/* - * This macro-mania below setups the CURLOPT_[what] enum, to be used with - * curl_easy_setopt(). The first argument in the CINIT() macro is the [what] - * word. - */ - -typedef enum { - /* This is the FILE * or void * the regular output should be written to. */ - CINIT(WRITEDATA, OBJECTPOINT, 1), - - /* The full URL to get/put */ - CINIT(URL, STRINGPOINT, 2), - - /* Port number to connect to, if other than default. */ - CINIT(PORT, LONG, 3), - - /* Name of proxy to use. */ - CINIT(PROXY, STRINGPOINT, 4), - - /* "user:password;options" to use when fetching. */ - CINIT(USERPWD, STRINGPOINT, 5), - - /* "user:password" to use with proxy. */ - CINIT(PROXYUSERPWD, STRINGPOINT, 6), - - /* Range to get, specified as an ASCII string. */ - CINIT(RANGE, STRINGPOINT, 7), - - /* not used */ - - /* Specified file stream to upload from (use as input): */ - CINIT(READDATA, OBJECTPOINT, 9), - - /* Buffer to receive error messages in, must be at least CURL_ERROR_SIZE - * bytes big. If this is not used, error messages go to stderr instead: */ - CINIT(ERRORBUFFER, OBJECTPOINT, 10), - - /* Function that will be called to store the output (instead of fwrite). The - * parameters will use fwrite() syntax, make sure to follow them. */ - CINIT(WRITEFUNCTION, FUNCTIONPOINT, 11), - - /* Function that will be called to read the input (instead of fread). The - * parameters will use fread() syntax, make sure to follow them. */ - CINIT(READFUNCTION, FUNCTIONPOINT, 12), - - /* Time-out the read operation after this amount of seconds */ - CINIT(TIMEOUT, LONG, 13), - - /* If the CURLOPT_INFILE is used, this can be used to inform libcurl about - * how large the file being sent really is. That allows better error - * checking and better verifies that the upload was successful. -1 means - * unknown size. - * - * For large file support, there is also a _LARGE version of the key - * which takes an off_t type, allowing platforms with larger off_t - * sizes to handle larger files. See below for INFILESIZE_LARGE. - */ - CINIT(INFILESIZE, LONG, 14), - - /* POST static input fields. */ - CINIT(POSTFIELDS, OBJECTPOINT, 15), - - /* Set the referrer page (needed by some CGIs) */ - CINIT(REFERER, STRINGPOINT, 16), - - /* Set the FTP PORT string (interface name, named or numerical IP address) - Use i.e '-' to use default address. */ - CINIT(FTPPORT, STRINGPOINT, 17), - - /* Set the User-Agent string (examined by some CGIs) */ - CINIT(USERAGENT, STRINGPOINT, 18), - - /* If the download receives less than "low speed limit" bytes/second - * during "low speed time" seconds, the operations is aborted. - * You could i.e if you have a pretty high speed connection, abort if - * it is less than 2000 bytes/sec during 20 seconds. - */ - - /* Set the "low speed limit" */ - CINIT(LOW_SPEED_LIMIT, LONG, 19), - - /* Set the "low speed time" */ - CINIT(LOW_SPEED_TIME, LONG, 20), - - /* Set the continuation offset. - * - * Note there is also a _LARGE version of this key which uses - * off_t types, allowing for large file offsets on platforms which - * use larger-than-32-bit off_t's. Look below for RESUME_FROM_LARGE. - */ - CINIT(RESUME_FROM, LONG, 21), - - /* Set cookie in request: */ - CINIT(COOKIE, STRINGPOINT, 22), - - /* This points to a linked list of headers, struct curl_slist kind. This - list is also used for RTSP (in spite of its name) */ - CINIT(HTTPHEADER, OBJECTPOINT, 23), - - /* This points to a linked list of post entries, struct curl_httppost */ - CINIT(HTTPPOST, OBJECTPOINT, 24), - - /* name of the file keeping your private SSL-certificate */ - CINIT(SSLCERT, STRINGPOINT, 25), - - /* password for the SSL or SSH private key */ - CINIT(KEYPASSWD, STRINGPOINT, 26), - - /* send TYPE parameter? */ - CINIT(CRLF, LONG, 27), - - /* send linked-list of QUOTE commands */ - CINIT(QUOTE, OBJECTPOINT, 28), - - /* send FILE * or void * to store headers to, if you use a callback it - is simply passed to the callback unmodified */ - CINIT(HEADERDATA, OBJECTPOINT, 29), - - /* point to a file to read the initial cookies from, also enables - "cookie awareness" */ - CINIT(COOKIEFILE, STRINGPOINT, 31), - - /* What version to specifically try to use. - See CURL_SSLVERSION defines below. */ - CINIT(SSLVERSION, LONG, 32), - - /* What kind of HTTP time condition to use, see defines */ - CINIT(TIMECONDITION, LONG, 33), - - /* Time to use with the above condition. Specified in number of seconds - since 1 Jan 1970 */ - CINIT(TIMEVALUE, LONG, 34), - - /* 35 = OBSOLETE */ - - /* Custom request, for customizing the get command like - HTTP: DELETE, TRACE and others - FTP: to use a different list command - */ - CINIT(CUSTOMREQUEST, STRINGPOINT, 36), - - /* FILE handle to use instead of stderr */ - CINIT(STDERR, OBJECTPOINT, 37), - - /* 38 is not used */ - - /* send linked-list of post-transfer QUOTE commands */ - CINIT(POSTQUOTE, OBJECTPOINT, 39), - - CINIT(OBSOLETE40, OBJECTPOINT, 40), /* OBSOLETE, do not use! */ - - CINIT(VERBOSE, LONG, 41), /* talk a lot */ - CINIT(HEADER, LONG, 42), /* throw the header out too */ - CINIT(NOPROGRESS, LONG, 43), /* shut off the progress meter */ - CINIT(NOBODY, LONG, 44), /* use HEAD to get http document */ - CINIT(FAILONERROR, LONG, 45), /* no output on http error codes >= 400 */ - CINIT(UPLOAD, LONG, 46), /* this is an upload */ - CINIT(POST, LONG, 47), /* HTTP POST method */ - CINIT(DIRLISTONLY, LONG, 48), /* bare names when listing directories */ - - CINIT(APPEND, LONG, 50), /* Append instead of overwrite on upload! */ - - /* Specify whether to read the user+password from the .netrc or the URL. - * This must be one of the CURL_NETRC_* enums below. */ - CINIT(NETRC, LONG, 51), - - CINIT(FOLLOWLOCATION, LONG, 52), /* use Location: Luke! */ - - CINIT(TRANSFERTEXT, LONG, 53), /* transfer data in text/ASCII format */ - CINIT(PUT, LONG, 54), /* HTTP PUT */ - - /* 55 = OBSOLETE */ - - /* DEPRECATED - * Function that will be called instead of the internal progress display - * function. This function should be defined as the curl_progress_callback - * prototype defines. */ - CINIT(PROGRESSFUNCTION, FUNCTIONPOINT, 56), - - /* Data passed to the CURLOPT_PROGRESSFUNCTION and CURLOPT_XFERINFOFUNCTION - callbacks */ - CINIT(PROGRESSDATA, OBJECTPOINT, 57), -#define CURLOPT_XFERINFODATA CURLOPT_PROGRESSDATA - - /* We want the referrer field set automatically when following locations */ - CINIT(AUTOREFERER, LONG, 58), - - /* Port of the proxy, can be set in the proxy string as well with: - "[host]:[port]" */ - CINIT(PROXYPORT, LONG, 59), - - /* size of the POST input data, if strlen() is not good to use */ - CINIT(POSTFIELDSIZE, LONG, 60), - - /* tunnel non-http operations through a HTTP proxy */ - CINIT(HTTPPROXYTUNNEL, LONG, 61), - - /* Set the interface string to use as outgoing network interface */ - CINIT(INTERFACE, STRINGPOINT, 62), - - /* Set the krb4/5 security level, this also enables krb4/5 awareness. This - * is a string, 'clear', 'safe', 'confidential' or 'private'. If the string - * is set but doesn't match one of these, 'private' will be used. */ - CINIT(KRBLEVEL, STRINGPOINT, 63), - - /* Set if we should verify the peer in ssl handshake, set 1 to verify. */ - CINIT(SSL_VERIFYPEER, LONG, 64), - - /* The CApath or CAfile used to validate the peer certificate - this option is used only if SSL_VERIFYPEER is true */ - CINIT(CAINFO, STRINGPOINT, 65), - - /* 66 = OBSOLETE */ - /* 67 = OBSOLETE */ - - /* Maximum number of http redirects to follow */ - CINIT(MAXREDIRS, LONG, 68), - - /* Pass a long set to 1 to get the date of the requested document (if - possible)! Pass a zero to shut it off. */ - CINIT(FILETIME, LONG, 69), - - /* This points to a linked list of telnet options */ - CINIT(TELNETOPTIONS, OBJECTPOINT, 70), - - /* Max amount of cached alive connections */ - CINIT(MAXCONNECTS, LONG, 71), - - CINIT(OBSOLETE72, LONG, 72), /* OBSOLETE, do not use! */ - - /* 73 = OBSOLETE */ - - /* Set to explicitly use a new connection for the upcoming transfer. - Do not use this unless you're absolutely sure of this, as it makes the - operation slower and is less friendly for the network. */ - CINIT(FRESH_CONNECT, LONG, 74), - - /* Set to explicitly forbid the upcoming transfer's connection to be re-used - when done. Do not use this unless you're absolutely sure of this, as it - makes the operation slower and is less friendly for the network. */ - CINIT(FORBID_REUSE, LONG, 75), - - /* Set to a file name that contains random data for libcurl to use to - seed the random engine when doing SSL connects. */ - CINIT(RANDOM_FILE, STRINGPOINT, 76), - - /* Set to the Entropy Gathering Daemon socket pathname */ - CINIT(EGDSOCKET, STRINGPOINT, 77), - - /* Time-out connect operations after this amount of seconds, if connects are - OK within this time, then fine... This only aborts the connect phase. */ - CINIT(CONNECTTIMEOUT, LONG, 78), - - /* Function that will be called to store headers (instead of fwrite). The - * parameters will use fwrite() syntax, make sure to follow them. */ - CINIT(HEADERFUNCTION, FUNCTIONPOINT, 79), - - /* Set this to force the HTTP request to get back to GET. Only really usable - if POST, PUT or a custom request have been used first. - */ - CINIT(HTTPGET, LONG, 80), - - /* Set if we should verify the Common name from the peer certificate in ssl - * handshake, set 1 to check existence, 2 to ensure that it matches the - * provided hostname. */ - CINIT(SSL_VERIFYHOST, LONG, 81), - - /* Specify which file name to write all known cookies in after completed - operation. Set file name to "-" (dash) to make it go to stdout. */ - CINIT(COOKIEJAR, STRINGPOINT, 82), - - /* Specify which SSL ciphers to use */ - CINIT(SSL_CIPHER_LIST, STRINGPOINT, 83), - - /* Specify which HTTP version to use! This must be set to one of the - CURL_HTTP_VERSION* enums set below. */ - CINIT(HTTP_VERSION, LONG, 84), - - /* Specifically switch on or off the FTP engine's use of the EPSV command. By - default, that one will always be attempted before the more traditional - PASV command. */ - CINIT(FTP_USE_EPSV, LONG, 85), - - /* type of the file keeping your SSL-certificate ("DER", "PEM", "ENG") */ - CINIT(SSLCERTTYPE, STRINGPOINT, 86), - - /* name of the file keeping your private SSL-key */ - CINIT(SSLKEY, STRINGPOINT, 87), - - /* type of the file keeping your private SSL-key ("DER", "PEM", "ENG") */ - CINIT(SSLKEYTYPE, STRINGPOINT, 88), - - /* crypto engine for the SSL-sub system */ - CINIT(SSLENGINE, STRINGPOINT, 89), - - /* set the crypto engine for the SSL-sub system as default - the param has no meaning... - */ - CINIT(SSLENGINE_DEFAULT, LONG, 90), - - /* Non-zero value means to use the global dns cache */ - CINIT(DNS_USE_GLOBAL_CACHE, LONG, 91), /* DEPRECATED, do not use! */ - - /* DNS cache timeout */ - CINIT(DNS_CACHE_TIMEOUT, LONG, 92), - - /* send linked-list of pre-transfer QUOTE commands */ - CINIT(PREQUOTE, OBJECTPOINT, 93), - - /* set the debug function */ - CINIT(DEBUGFUNCTION, FUNCTIONPOINT, 94), - - /* set the data for the debug function */ - CINIT(DEBUGDATA, OBJECTPOINT, 95), - - /* mark this as start of a cookie session */ - CINIT(COOKIESESSION, LONG, 96), - - /* The CApath directory used to validate the peer certificate - this option is used only if SSL_VERIFYPEER is true */ - CINIT(CAPATH, STRINGPOINT, 97), - - /* Instruct libcurl to use a smaller receive buffer */ - CINIT(BUFFERSIZE, LONG, 98), - - /* Instruct libcurl to not use any signal/alarm handlers, even when using - timeouts. This option is useful for multi-threaded applications. - See libcurl-the-guide for more background information. */ - CINIT(NOSIGNAL, LONG, 99), - - /* Provide a CURLShare for mutexing non-ts data */ - CINIT(SHARE, OBJECTPOINT, 100), - - /* indicates type of proxy. accepted values are CURLPROXY_HTTP (default), - CURLPROXY_HTTPS, CURLPROXY_SOCKS4, CURLPROXY_SOCKS4A and - CURLPROXY_SOCKS5. */ - CINIT(PROXYTYPE, LONG, 101), - - /* Set the Accept-Encoding string. Use this to tell a server you would like - the response to be compressed. Before 7.21.6, this was known as - CURLOPT_ENCODING */ - CINIT(ACCEPT_ENCODING, STRINGPOINT, 102), - - /* Set pointer to private data */ - CINIT(PRIVATE, OBJECTPOINT, 103), - - /* Set aliases for HTTP 200 in the HTTP Response header */ - CINIT(HTTP200ALIASES, OBJECTPOINT, 104), - - /* Continue to send authentication (user+password) when following locations, - even when hostname changed. This can potentially send off the name - and password to whatever host the server decides. */ - CINIT(UNRESTRICTED_AUTH, LONG, 105), - - /* Specifically switch on or off the FTP engine's use of the EPRT command ( - it also disables the LPRT attempt). By default, those ones will always be - attempted before the good old traditional PORT command. */ - CINIT(FTP_USE_EPRT, LONG, 106), - - /* Set this to a bitmask value to enable the particular authentications - methods you like. Use this in combination with CURLOPT_USERPWD. - Note that setting multiple bits may cause extra network round-trips. */ - CINIT(HTTPAUTH, LONG, 107), - - /* Set the ssl context callback function, currently only for OpenSSL ssl_ctx - in second argument. The function must be matching the - curl_ssl_ctx_callback proto. */ - CINIT(SSL_CTX_FUNCTION, FUNCTIONPOINT, 108), - - /* Set the userdata for the ssl context callback function's third - argument */ - CINIT(SSL_CTX_DATA, OBJECTPOINT, 109), - - /* FTP Option that causes missing dirs to be created on the remote server. - In 7.19.4 we introduced the convenience enums for this option using the - CURLFTP_CREATE_DIR prefix. - */ - CINIT(FTP_CREATE_MISSING_DIRS, LONG, 110), - - /* Set this to a bitmask value to enable the particular authentications - methods you like. Use this in combination with CURLOPT_PROXYUSERPWD. - Note that setting multiple bits may cause extra network round-trips. */ - CINIT(PROXYAUTH, LONG, 111), - - /* FTP option that changes the timeout, in seconds, associated with - getting a response. This is different from transfer timeout time and - essentially places a demand on the FTP server to acknowledge commands - in a timely manner. */ - CINIT(FTP_RESPONSE_TIMEOUT, LONG, 112), -#define CURLOPT_SERVER_RESPONSE_TIMEOUT CURLOPT_FTP_RESPONSE_TIMEOUT - - /* Set this option to one of the CURL_IPRESOLVE_* defines (see below) to - tell libcurl to resolve names to those IP versions only. This only has - affect on systems with support for more than one, i.e IPv4 _and_ IPv6. */ - CINIT(IPRESOLVE, LONG, 113), - - /* Set this option to limit the size of a file that will be downloaded from - an HTTP or FTP server. - - Note there is also _LARGE version which adds large file support for - platforms which have larger off_t sizes. See MAXFILESIZE_LARGE below. */ - CINIT(MAXFILESIZE, LONG, 114), - - /* See the comment for INFILESIZE above, but in short, specifies - * the size of the file being uploaded. -1 means unknown. - */ - CINIT(INFILESIZE_LARGE, OFF_T, 115), - - /* Sets the continuation offset. There is also a LONG version of this; - * look above for RESUME_FROM. - */ - CINIT(RESUME_FROM_LARGE, OFF_T, 116), - - /* Sets the maximum size of data that will be downloaded from - * an HTTP or FTP server. See MAXFILESIZE above for the LONG version. - */ - CINIT(MAXFILESIZE_LARGE, OFF_T, 117), - - /* Set this option to the file name of your .netrc file you want libcurl - to parse (using the CURLOPT_NETRC option). If not set, libcurl will do - a poor attempt to find the user's home directory and check for a .netrc - file in there. */ - CINIT(NETRC_FILE, STRINGPOINT, 118), - - /* Enable SSL/TLS for FTP, pick one of: - CURLUSESSL_TRY - try using SSL, proceed anyway otherwise - CURLUSESSL_CONTROL - SSL for the control connection or fail - CURLUSESSL_ALL - SSL for all communication or fail - */ - CINIT(USE_SSL, LONG, 119), - - /* The _LARGE version of the standard POSTFIELDSIZE option */ - CINIT(POSTFIELDSIZE_LARGE, OFF_T, 120), - - /* Enable/disable the TCP Nagle algorithm */ - CINIT(TCP_NODELAY, LONG, 121), - - /* 122 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */ - /* 123 OBSOLETE. Gone in 7.16.0 */ - /* 124 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */ - /* 125 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */ - /* 126 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */ - /* 127 OBSOLETE. Gone in 7.16.0 */ - /* 128 OBSOLETE. Gone in 7.16.0 */ - - /* When FTP over SSL/TLS is selected (with CURLOPT_USE_SSL), this option - can be used to change libcurl's default action which is to first try - "AUTH SSL" and then "AUTH TLS" in this order, and proceed when a OK - response has been received. - - Available parameters are: - CURLFTPAUTH_DEFAULT - let libcurl decide - CURLFTPAUTH_SSL - try "AUTH SSL" first, then TLS - CURLFTPAUTH_TLS - try "AUTH TLS" first, then SSL - */ - CINIT(FTPSSLAUTH, LONG, 129), - - CINIT(IOCTLFUNCTION, FUNCTIONPOINT, 130), - CINIT(IOCTLDATA, OBJECTPOINT, 131), - - /* 132 OBSOLETE. Gone in 7.16.0 */ - /* 133 OBSOLETE. Gone in 7.16.0 */ - - /* zero terminated string for pass on to the FTP server when asked for - "account" info */ - CINIT(FTP_ACCOUNT, STRINGPOINT, 134), - - /* feed cookie into cookie engine */ - CINIT(COOKIELIST, STRINGPOINT, 135), - - /* ignore Content-Length */ - CINIT(IGNORE_CONTENT_LENGTH, LONG, 136), - - /* Set to non-zero to skip the IP address received in a 227 PASV FTP server - response. Typically used for FTP-SSL purposes but is not restricted to - that. libcurl will then instead use the same IP address it used for the - control connection. */ - CINIT(FTP_SKIP_PASV_IP, LONG, 137), - - /* Select "file method" to use when doing FTP, see the curl_ftpmethod - above. */ - CINIT(FTP_FILEMETHOD, LONG, 138), - - /* Local port number to bind the socket to */ - CINIT(LOCALPORT, LONG, 139), - - /* Number of ports to try, including the first one set with LOCALPORT. - Thus, setting it to 1 will make no additional attempts but the first. - */ - CINIT(LOCALPORTRANGE, LONG, 140), - - /* no transfer, set up connection and let application use the socket by - extracting it with CURLINFO_LASTSOCKET */ - CINIT(CONNECT_ONLY, LONG, 141), - - /* Function that will be called to convert from the - network encoding (instead of using the iconv calls in libcurl) */ - CINIT(CONV_FROM_NETWORK_FUNCTION, FUNCTIONPOINT, 142), - - /* Function that will be called to convert to the - network encoding (instead of using the iconv calls in libcurl) */ - CINIT(CONV_TO_NETWORK_FUNCTION, FUNCTIONPOINT, 143), - - /* Function that will be called to convert from UTF8 - (instead of using the iconv calls in libcurl) - Note that this is used only for SSL certificate processing */ - CINIT(CONV_FROM_UTF8_FUNCTION, FUNCTIONPOINT, 144), - - /* if the connection proceeds too quickly then need to slow it down */ - /* limit-rate: maximum number of bytes per second to send or receive */ - CINIT(MAX_SEND_SPEED_LARGE, OFF_T, 145), - CINIT(MAX_RECV_SPEED_LARGE, OFF_T, 146), - - /* Pointer to command string to send if USER/PASS fails. */ - CINIT(FTP_ALTERNATIVE_TO_USER, STRINGPOINT, 147), - - /* callback function for setting socket options */ - CINIT(SOCKOPTFUNCTION, FUNCTIONPOINT, 148), - CINIT(SOCKOPTDATA, OBJECTPOINT, 149), - - /* set to 0 to disable session ID re-use for this transfer, default is - enabled (== 1) */ - CINIT(SSL_SESSIONID_CACHE, LONG, 150), - - /* allowed SSH authentication methods */ - CINIT(SSH_AUTH_TYPES, LONG, 151), - - /* Used by scp/sftp to do public/private key authentication */ - CINIT(SSH_PUBLIC_KEYFILE, STRINGPOINT, 152), - CINIT(SSH_PRIVATE_KEYFILE, STRINGPOINT, 153), - - /* Send CCC (Clear Command Channel) after authentication */ - CINIT(FTP_SSL_CCC, LONG, 154), - - /* Same as TIMEOUT and CONNECTTIMEOUT, but with ms resolution */ - CINIT(TIMEOUT_MS, LONG, 155), - CINIT(CONNECTTIMEOUT_MS, LONG, 156), - - /* set to zero to disable the libcurl's decoding and thus pass the raw body - data to the application even when it is encoded/compressed */ - CINIT(HTTP_TRANSFER_DECODING, LONG, 157), - CINIT(HTTP_CONTENT_DECODING, LONG, 158), - - /* Permission used when creating new files and directories on the remote - server for protocols that support it, SFTP/SCP/FILE */ - CINIT(NEW_FILE_PERMS, LONG, 159), - CINIT(NEW_DIRECTORY_PERMS, LONG, 160), - - /* Set the behaviour of POST when redirecting. Values must be set to one - of CURL_REDIR* defines below. This used to be called CURLOPT_POST301 */ - CINIT(POSTREDIR, LONG, 161), - - /* used by scp/sftp to verify the host's public key */ - CINIT(SSH_HOST_PUBLIC_KEY_MD5, STRINGPOINT, 162), - - /* Callback function for opening socket (instead of socket(2)). Optionally, - callback is able change the address or refuse to connect returning - CURL_SOCKET_BAD. The callback should have type - curl_opensocket_callback */ - CINIT(OPENSOCKETFUNCTION, FUNCTIONPOINT, 163), - CINIT(OPENSOCKETDATA, OBJECTPOINT, 164), - - /* POST volatile input fields. */ - CINIT(COPYPOSTFIELDS, OBJECTPOINT, 165), - - /* set transfer mode (;type=) when doing FTP via an HTTP proxy */ - CINIT(PROXY_TRANSFER_MODE, LONG, 166), - - /* Callback function for seeking in the input stream */ - CINIT(SEEKFUNCTION, FUNCTIONPOINT, 167), - CINIT(SEEKDATA, OBJECTPOINT, 168), - - /* CRL file */ - CINIT(CRLFILE, STRINGPOINT, 169), - - /* Issuer certificate */ - CINIT(ISSUERCERT, STRINGPOINT, 170), - - /* (IPv6) Address scope */ - CINIT(ADDRESS_SCOPE, LONG, 171), - - /* Collect certificate chain info and allow it to get retrievable with - CURLINFO_CERTINFO after the transfer is complete. */ - CINIT(CERTINFO, LONG, 172), - - /* "name" and "pwd" to use when fetching. */ - CINIT(USERNAME, STRINGPOINT, 173), - CINIT(PASSWORD, STRINGPOINT, 174), - - /* "name" and "pwd" to use with Proxy when fetching. */ - CINIT(PROXYUSERNAME, STRINGPOINT, 175), - CINIT(PROXYPASSWORD, STRINGPOINT, 176), - - /* Comma separated list of hostnames defining no-proxy zones. These should - match both hostnames directly, and hostnames within a domain. For - example, local.com will match local.com and www.local.com, but NOT - notlocal.com or www.notlocal.com. For compatibility with other - implementations of this, .local.com will be considered to be the same as - local.com. A single * is the only valid wildcard, and effectively - disables the use of proxy. */ - CINIT(NOPROXY, STRINGPOINT, 177), - - /* block size for TFTP transfers */ - CINIT(TFTP_BLKSIZE, LONG, 178), - - /* Socks Service */ - CINIT(SOCKS5_GSSAPI_SERVICE, STRINGPOINT, 179), /* DEPRECATED, do not use! */ - - /* Socks Service */ - CINIT(SOCKS5_GSSAPI_NEC, LONG, 180), - - /* set the bitmask for the protocols that are allowed to be used for the - transfer, which thus helps the app which takes URLs from users or other - external inputs and want to restrict what protocol(s) to deal - with. Defaults to CURLPROTO_ALL. */ - CINIT(PROTOCOLS, LONG, 181), - - /* set the bitmask for the protocols that libcurl is allowed to follow to, - as a subset of the CURLOPT_PROTOCOLS ones. That means the protocol needs - to be set in both bitmasks to be allowed to get redirected to. Defaults - to all protocols except FILE and SCP. */ - CINIT(REDIR_PROTOCOLS, LONG, 182), - - /* set the SSH knownhost file name to use */ - CINIT(SSH_KNOWNHOSTS, STRINGPOINT, 183), - - /* set the SSH host key callback, must point to a curl_sshkeycallback - function */ - CINIT(SSH_KEYFUNCTION, FUNCTIONPOINT, 184), - - /* set the SSH host key callback custom pointer */ - CINIT(SSH_KEYDATA, OBJECTPOINT, 185), - - /* set the SMTP mail originator */ - CINIT(MAIL_FROM, STRINGPOINT, 186), - - /* set the list of SMTP mail receiver(s) */ - CINIT(MAIL_RCPT, OBJECTPOINT, 187), - - /* FTP: send PRET before PASV */ - CINIT(FTP_USE_PRET, LONG, 188), - - /* RTSP request method (OPTIONS, SETUP, PLAY, etc...) */ - CINIT(RTSP_REQUEST, LONG, 189), - - /* The RTSP session identifier */ - CINIT(RTSP_SESSION_ID, STRINGPOINT, 190), - - /* The RTSP stream URI */ - CINIT(RTSP_STREAM_URI, STRINGPOINT, 191), - - /* The Transport: header to use in RTSP requests */ - CINIT(RTSP_TRANSPORT, STRINGPOINT, 192), - - /* Manually initialize the client RTSP CSeq for this handle */ - CINIT(RTSP_CLIENT_CSEQ, LONG, 193), - - /* Manually initialize the server RTSP CSeq for this handle */ - CINIT(RTSP_SERVER_CSEQ, LONG, 194), - - /* The stream to pass to INTERLEAVEFUNCTION. */ - CINIT(INTERLEAVEDATA, OBJECTPOINT, 195), - - /* Let the application define a custom write method for RTP data */ - CINIT(INTERLEAVEFUNCTION, FUNCTIONPOINT, 196), - - /* Turn on wildcard matching */ - CINIT(WILDCARDMATCH, LONG, 197), - - /* Directory matching callback called before downloading of an - individual file (chunk) started */ - CINIT(CHUNK_BGN_FUNCTION, FUNCTIONPOINT, 198), - - /* Directory matching callback called after the file (chunk) - was downloaded, or skipped */ - CINIT(CHUNK_END_FUNCTION, FUNCTIONPOINT, 199), - - /* Change match (fnmatch-like) callback for wildcard matching */ - CINIT(FNMATCH_FUNCTION, FUNCTIONPOINT, 200), - - /* Let the application define custom chunk data pointer */ - CINIT(CHUNK_DATA, OBJECTPOINT, 201), - - /* FNMATCH_FUNCTION user pointer */ - CINIT(FNMATCH_DATA, OBJECTPOINT, 202), - - /* send linked-list of name:port:address sets */ - CINIT(RESOLVE, OBJECTPOINT, 203), - - /* Set a username for authenticated TLS */ - CINIT(TLSAUTH_USERNAME, STRINGPOINT, 204), - - /* Set a password for authenticated TLS */ - CINIT(TLSAUTH_PASSWORD, STRINGPOINT, 205), - - /* Set authentication type for authenticated TLS */ - CINIT(TLSAUTH_TYPE, STRINGPOINT, 206), - - /* Set to 1 to enable the "TE:" header in HTTP requests to ask for - compressed transfer-encoded responses. Set to 0 to disable the use of TE: - in outgoing requests. The current default is 0, but it might change in a - future libcurl release. - - libcurl will ask for the compressed methods it knows of, and if that - isn't any, it will not ask for transfer-encoding at all even if this - option is set to 1. - - */ - CINIT(TRANSFER_ENCODING, LONG, 207), - - /* Callback function for closing socket (instead of close(2)). The callback - should have type curl_closesocket_callback */ - CINIT(CLOSESOCKETFUNCTION, FUNCTIONPOINT, 208), - CINIT(CLOSESOCKETDATA, OBJECTPOINT, 209), - - /* allow GSSAPI credential delegation */ - CINIT(GSSAPI_DELEGATION, LONG, 210), - - /* Set the name servers to use for DNS resolution */ - CINIT(DNS_SERVERS, STRINGPOINT, 211), - - /* Time-out accept operations (currently for FTP only) after this amount - of milliseconds. */ - CINIT(ACCEPTTIMEOUT_MS, LONG, 212), - - /* Set TCP keepalive */ - CINIT(TCP_KEEPALIVE, LONG, 213), - - /* non-universal keepalive knobs (Linux, AIX, HP-UX, more) */ - CINIT(TCP_KEEPIDLE, LONG, 214), - CINIT(TCP_KEEPINTVL, LONG, 215), - - /* Enable/disable specific SSL features with a bitmask, see CURLSSLOPT_* */ - CINIT(SSL_OPTIONS, LONG, 216), - - /* Set the SMTP auth originator */ - CINIT(MAIL_AUTH, STRINGPOINT, 217), - - /* Enable/disable SASL initial response */ - CINIT(SASL_IR, LONG, 218), - - /* Function that will be called instead of the internal progress display - * function. This function should be defined as the curl_xferinfo_callback - * prototype defines. (Deprecates CURLOPT_PROGRESSFUNCTION) */ - CINIT(XFERINFOFUNCTION, FUNCTIONPOINT, 219), - - /* The XOAUTH2 bearer token */ - CINIT(XOAUTH2_BEARER, STRINGPOINT, 220), - - /* Set the interface string to use as outgoing network - * interface for DNS requests. - * Only supported by the c-ares DNS backend */ - CINIT(DNS_INTERFACE, STRINGPOINT, 221), - - /* Set the local IPv4 address to use for outgoing DNS requests. - * Only supported by the c-ares DNS backend */ - CINIT(DNS_LOCAL_IP4, STRINGPOINT, 222), - - /* Set the local IPv4 address to use for outgoing DNS requests. - * Only supported by the c-ares DNS backend */ - CINIT(DNS_LOCAL_IP6, STRINGPOINT, 223), - - /* Set authentication options directly */ - CINIT(LOGIN_OPTIONS, STRINGPOINT, 224), - - /* Enable/disable TLS NPN extension (http2 over ssl might fail without) */ - CINIT(SSL_ENABLE_NPN, LONG, 225), - - /* Enable/disable TLS ALPN extension (http2 over ssl might fail without) */ - CINIT(SSL_ENABLE_ALPN, LONG, 226), - - /* Time to wait for a response to a HTTP request containing an - * Expect: 100-continue header before sending the data anyway. */ - CINIT(EXPECT_100_TIMEOUT_MS, LONG, 227), - - /* This points to a linked list of headers used for proxy requests only, - struct curl_slist kind */ - CINIT(PROXYHEADER, OBJECTPOINT, 228), - - /* Pass in a bitmask of "header options" */ - CINIT(HEADEROPT, LONG, 229), - - /* The public key in DER form used to validate the peer public key - this option is used only if SSL_VERIFYPEER is true */ - CINIT(PINNEDPUBLICKEY, STRINGPOINT, 230), - - /* Path to Unix domain socket */ - CINIT(UNIX_SOCKET_PATH, STRINGPOINT, 231), - - /* Set if we should verify the certificate status. */ - CINIT(SSL_VERIFYSTATUS, LONG, 232), - - /* Set if we should enable TLS false start. */ - CINIT(SSL_FALSESTART, LONG, 233), - - /* Do not squash dot-dot sequences */ - CINIT(PATH_AS_IS, LONG, 234), - - /* Proxy Service Name */ - CINIT(PROXY_SERVICE_NAME, STRINGPOINT, 235), - - /* Service Name */ - CINIT(SERVICE_NAME, STRINGPOINT, 236), - - /* Wait/don't wait for pipe/mutex to clarify */ - CINIT(PIPEWAIT, LONG, 237), - - /* Set the protocol used when curl is given a URL without a protocol */ - CINIT(DEFAULT_PROTOCOL, STRINGPOINT, 238), - - /* Set stream weight, 1 - 256 (default is 16) */ - CINIT(STREAM_WEIGHT, LONG, 239), - - /* Set stream dependency on another CURL handle */ - CINIT(STREAM_DEPENDS, OBJECTPOINT, 240), - - /* Set E-xclusive stream dependency on another CURL handle */ - CINIT(STREAM_DEPENDS_E, OBJECTPOINT, 241), - - /* Do not send any tftp option requests to the server */ - CINIT(TFTP_NO_OPTIONS, LONG, 242), - - /* Linked-list of host:port:connect-to-host:connect-to-port, - overrides the URL's host:port (only for the network layer) */ - CINIT(CONNECT_TO, OBJECTPOINT, 243), - - /* Set TCP Fast Open */ - CINIT(TCP_FASTOPEN, LONG, 244), - - /* Continue to send data if the server responds early with an - * HTTP status code >= 300 */ - CINIT(KEEP_SENDING_ON_ERROR, LONG, 245), - - /* The CApath or CAfile used to validate the proxy certificate - this option is used only if PROXY_SSL_VERIFYPEER is true */ - CINIT(PROXY_CAINFO, STRINGPOINT, 246), - - /* The CApath directory used to validate the proxy certificate - this option is used only if PROXY_SSL_VERIFYPEER is true */ - CINIT(PROXY_CAPATH, STRINGPOINT, 247), - - /* Set if we should verify the proxy in ssl handshake, - set 1 to verify. */ - CINIT(PROXY_SSL_VERIFYPEER, LONG, 248), - - /* Set if we should verify the Common name from the proxy certificate in ssl - * handshake, set 1 to check existence, 2 to ensure that it matches - * the provided hostname. */ - CINIT(PROXY_SSL_VERIFYHOST, LONG, 249), - - /* What version to specifically try to use for proxy. - See CURL_SSLVERSION defines below. */ - CINIT(PROXY_SSLVERSION, LONG, 250), - - /* Set a username for authenticated TLS for proxy */ - CINIT(PROXY_TLSAUTH_USERNAME, STRINGPOINT, 251), - - /* Set a password for authenticated TLS for proxy */ - CINIT(PROXY_TLSAUTH_PASSWORD, STRINGPOINT, 252), - - /* Set authentication type for authenticated TLS for proxy */ - CINIT(PROXY_TLSAUTH_TYPE, STRINGPOINT, 253), - - /* name of the file keeping your private SSL-certificate for proxy */ - CINIT(PROXY_SSLCERT, STRINGPOINT, 254), - - /* type of the file keeping your SSL-certificate ("DER", "PEM", "ENG") for - proxy */ - CINIT(PROXY_SSLCERTTYPE, STRINGPOINT, 255), - - /* name of the file keeping your private SSL-key for proxy */ - CINIT(PROXY_SSLKEY, STRINGPOINT, 256), - - /* type of the file keeping your private SSL-key ("DER", "PEM", "ENG") for - proxy */ - CINIT(PROXY_SSLKEYTYPE, STRINGPOINT, 257), - - /* password for the SSL private key for proxy */ - CINIT(PROXY_KEYPASSWD, STRINGPOINT, 258), - - /* Specify which SSL ciphers to use for proxy */ - CINIT(PROXY_SSL_CIPHER_LIST, STRINGPOINT, 259), - - /* CRL file for proxy */ - CINIT(PROXY_CRLFILE, STRINGPOINT, 260), - - /* Enable/disable specific SSL features with a bitmask for proxy, see - CURLSSLOPT_* */ - CINIT(PROXY_SSL_OPTIONS, LONG, 261), - - /* Name of pre proxy to use. */ - CINIT(PRE_PROXY, STRINGPOINT, 262), - - /* The public key in DER form used to validate the proxy public key - this option is used only if PROXY_SSL_VERIFYPEER is true */ - CINIT(PROXY_PINNEDPUBLICKEY, STRINGPOINT, 263), - - /* Path to an abstract Unix domain socket */ - CINIT(ABSTRACT_UNIX_SOCKET, STRINGPOINT, 264), - - /* Suppress proxy CONNECT response headers from user callbacks */ - CINIT(SUPPRESS_CONNECT_HEADERS, LONG, 265), - - /* The request target, instead of extracted from the URL */ - CINIT(REQUEST_TARGET, STRINGPOINT, 266), - - /* bitmask of allowed auth methods for connections to SOCKS5 proxies */ - CINIT(SOCKS5_AUTH, LONG, 267), - - CURLOPT_LASTENTRY /* the last unused */ -} CURLoption; - -#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all - the obsolete stuff removed! */ - -/* Backwards compatibility with older names */ -/* These are scheduled to disappear by 2011 */ - -/* This was added in version 7.19.1 */ -#define CURLOPT_POST301 CURLOPT_POSTREDIR - -/* These are scheduled to disappear by 2009 */ - -/* The following were added in 7.17.0 */ -#define CURLOPT_SSLKEYPASSWD CURLOPT_KEYPASSWD -#define CURLOPT_FTPAPPEND CURLOPT_APPEND -#define CURLOPT_FTPLISTONLY CURLOPT_DIRLISTONLY -#define CURLOPT_FTP_SSL CURLOPT_USE_SSL - -/* The following were added earlier */ - -#define CURLOPT_SSLCERTPASSWD CURLOPT_KEYPASSWD -#define CURLOPT_KRB4LEVEL CURLOPT_KRBLEVEL - -#else -/* This is set if CURL_NO_OLDIES is defined at compile-time */ -#undef CURLOPT_DNS_USE_GLOBAL_CACHE /* soon obsolete */ -#endif - - - /* Below here follows defines for the CURLOPT_IPRESOLVE option. If a host - name resolves addresses using more than one IP protocol version, this - option might be handy to force libcurl to use a specific IP version. */ -#define CURL_IPRESOLVE_WHATEVER 0 /* default, resolves addresses to all IP - versions that your system allows */ -#define CURL_IPRESOLVE_V4 1 /* resolve to IPv4 addresses */ -#define CURL_IPRESOLVE_V6 2 /* resolve to IPv6 addresses */ - - /* three convenient "aliases" that follow the name scheme better */ -#define CURLOPT_RTSPHEADER CURLOPT_HTTPHEADER - - /* These enums are for use with the CURLOPT_HTTP_VERSION option. */ -enum { - CURL_HTTP_VERSION_NONE, /* setting this means we don't care, and that we'd - like the library to choose the best possible - for us! */ - CURL_HTTP_VERSION_1_0, /* please use HTTP 1.0 in the request */ - CURL_HTTP_VERSION_1_1, /* please use HTTP 1.1 in the request */ - CURL_HTTP_VERSION_2_0, /* please use HTTP 2 in the request */ - CURL_HTTP_VERSION_2TLS, /* use version 2 for HTTPS, version 1.1 for HTTP */ - CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE, /* please use HTTP 2 without HTTP/1.1 - Upgrade */ - - CURL_HTTP_VERSION_LAST /* *ILLEGAL* http version */ -}; - -/* Convenience definition simple because the name of the version is HTTP/2 and - not 2.0. The 2_0 version of the enum name was set while the version was - still planned to be 2.0 and we stick to it for compatibility. */ -#define CURL_HTTP_VERSION_2 CURL_HTTP_VERSION_2_0 - -/* - * Public API enums for RTSP requests - */ -enum { - CURL_RTSPREQ_NONE, /* first in list */ - CURL_RTSPREQ_OPTIONS, - CURL_RTSPREQ_DESCRIBE, - CURL_RTSPREQ_ANNOUNCE, - CURL_RTSPREQ_SETUP, - CURL_RTSPREQ_PLAY, - CURL_RTSPREQ_PAUSE, - CURL_RTSPREQ_TEARDOWN, - CURL_RTSPREQ_GET_PARAMETER, - CURL_RTSPREQ_SET_PARAMETER, - CURL_RTSPREQ_RECORD, - CURL_RTSPREQ_RECEIVE, - CURL_RTSPREQ_LAST /* last in list */ -}; - - /* These enums are for use with the CURLOPT_NETRC option. */ -enum CURL_NETRC_OPTION { - CURL_NETRC_IGNORED, /* The .netrc will never be read. - * This is the default. */ - CURL_NETRC_OPTIONAL, /* A user:password in the URL will be preferred - * to one in the .netrc. */ - CURL_NETRC_REQUIRED, /* A user:password in the URL will be ignored. - * Unless one is set programmatically, the .netrc - * will be queried. */ - CURL_NETRC_LAST -}; - -enum { - CURL_SSLVERSION_DEFAULT, - CURL_SSLVERSION_TLSv1, /* TLS 1.x */ - CURL_SSLVERSION_SSLv2, - CURL_SSLVERSION_SSLv3, - CURL_SSLVERSION_TLSv1_0, - CURL_SSLVERSION_TLSv1_1, - CURL_SSLVERSION_TLSv1_2, - CURL_SSLVERSION_TLSv1_3, - - CURL_SSLVERSION_LAST /* never use, keep last */ -}; - -enum { - CURL_SSLVERSION_MAX_NONE = 0, - CURL_SSLVERSION_MAX_DEFAULT = (CURL_SSLVERSION_TLSv1 << 16), - CURL_SSLVERSION_MAX_TLSv1_0 = (CURL_SSLVERSION_TLSv1_0 << 16), - CURL_SSLVERSION_MAX_TLSv1_1 = (CURL_SSLVERSION_TLSv1_1 << 16), - CURL_SSLVERSION_MAX_TLSv1_2 = (CURL_SSLVERSION_TLSv1_2 << 16), - CURL_SSLVERSION_MAX_TLSv1_3 = (CURL_SSLVERSION_TLSv1_3 << 16), - - /* never use, keep last */ - CURL_SSLVERSION_MAX_LAST = (CURL_SSLVERSION_LAST << 16) -}; - -enum CURL_TLSAUTH { - CURL_TLSAUTH_NONE, - CURL_TLSAUTH_SRP, - CURL_TLSAUTH_LAST /* never use, keep last */ -}; - -/* symbols to use with CURLOPT_POSTREDIR. - CURL_REDIR_POST_301, CURL_REDIR_POST_302 and CURL_REDIR_POST_303 - can be bitwise ORed so that CURL_REDIR_POST_301 | CURL_REDIR_POST_302 - | CURL_REDIR_POST_303 == CURL_REDIR_POST_ALL */ - -#define CURL_REDIR_GET_ALL 0 -#define CURL_REDIR_POST_301 1 -#define CURL_REDIR_POST_302 2 -#define CURL_REDIR_POST_303 4 -#define CURL_REDIR_POST_ALL \ - (CURL_REDIR_POST_301|CURL_REDIR_POST_302|CURL_REDIR_POST_303) - -typedef enum { - CURL_TIMECOND_NONE, - - CURL_TIMECOND_IFMODSINCE, - CURL_TIMECOND_IFUNMODSINCE, - CURL_TIMECOND_LASTMOD, - - CURL_TIMECOND_LAST -} curl_TimeCond; - - -/* curl_strequal() and curl_strnequal() are subject for removal in a future - libcurl, see lib/README.curlx for details - - !checksrc! disable SPACEBEFOREPAREN 2 -*/ -CURL_EXTERN int (curl_strequal)(const char *s1, const char *s2); -CURL_EXTERN int (curl_strnequal)(const char *s1, const char *s2, size_t n); - -/* name is uppercase CURLFORM_ */ -#ifdef CFINIT -#undef CFINIT -#endif - -#ifdef CURL_ISOCPP -#define CFINIT(name) CURLFORM_ ## name -#else -/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */ -#define CFINIT(name) CURLFORM_/**/name -#endif - -typedef enum { - CFINIT(NOTHING), /********* the first one is unused ************/ - - /* */ - CFINIT(COPYNAME), - CFINIT(PTRNAME), - CFINIT(NAMELENGTH), - CFINIT(COPYCONTENTS), - CFINIT(PTRCONTENTS), - CFINIT(CONTENTSLENGTH), - CFINIT(FILECONTENT), - CFINIT(ARRAY), - CFINIT(OBSOLETE), - CFINIT(FILE), - - CFINIT(BUFFER), - CFINIT(BUFFERPTR), - CFINIT(BUFFERLENGTH), - - CFINIT(CONTENTTYPE), - CFINIT(CONTENTHEADER), - CFINIT(FILENAME), - CFINIT(END), - CFINIT(OBSOLETE2), - - CFINIT(STREAM), - CFINIT(CONTENTLEN), /* added in 7.46.0, provide a curl_off_t length */ - - CURLFORM_LASTENTRY /* the last unused */ -} CURLformoption; - -#undef CFINIT /* done */ - -/* structure to be used as parameter for CURLFORM_ARRAY */ -struct curl_forms { - CURLformoption option; - const char *value; -}; - -/* use this for multipart formpost building */ -/* Returns code for curl_formadd() - * - * Returns: - * CURL_FORMADD_OK on success - * CURL_FORMADD_MEMORY if the FormInfo allocation fails - * CURL_FORMADD_OPTION_TWICE if one option is given twice for one Form - * CURL_FORMADD_NULL if a null pointer was given for a char - * CURL_FORMADD_MEMORY if the allocation of a FormInfo struct failed - * CURL_FORMADD_UNKNOWN_OPTION if an unknown option was used - * CURL_FORMADD_INCOMPLETE if the some FormInfo is not complete (or error) - * CURL_FORMADD_MEMORY if a curl_httppost struct cannot be allocated - * CURL_FORMADD_MEMORY if some allocation for string copying failed. - * CURL_FORMADD_ILLEGAL_ARRAY if an illegal option is used in an array - * - ***************************************************************************/ -typedef enum { - CURL_FORMADD_OK, /* first, no error */ - - CURL_FORMADD_MEMORY, - CURL_FORMADD_OPTION_TWICE, - CURL_FORMADD_NULL, - CURL_FORMADD_UNKNOWN_OPTION, - CURL_FORMADD_INCOMPLETE, - CURL_FORMADD_ILLEGAL_ARRAY, - CURL_FORMADD_DISABLED, /* libcurl was built with this disabled */ - - CURL_FORMADD_LAST /* last */ -} CURLFORMcode; - -/* - * NAME curl_formadd() - * - * DESCRIPTION - * - * Pretty advanced function for building multi-part formposts. Each invoke - * adds one part that together construct a full post. Then use - * CURLOPT_HTTPPOST to send it off to libcurl. - */ -CURL_EXTERN CURLFORMcode curl_formadd(struct curl_httppost **httppost, - struct curl_httppost **last_post, - ...); - -/* - * callback function for curl_formget() - * The void *arg pointer will be the one passed as second argument to - * curl_formget(). - * The character buffer passed to it must not be freed. - * Should return the buffer length passed to it as the argument "len" on - * success. - */ -typedef size_t (*curl_formget_callback)(void *arg, const char *buf, - size_t len); - -/* - * NAME curl_formget() - * - * DESCRIPTION - * - * Serialize a curl_httppost struct built with curl_formadd(). - * Accepts a void pointer as second argument which will be passed to - * the curl_formget_callback function. - * Returns 0 on success. - */ -CURL_EXTERN int curl_formget(struct curl_httppost *form, void *arg, - curl_formget_callback append); -/* - * NAME curl_formfree() - * - * DESCRIPTION - * - * Free a multipart formpost previously built with curl_formadd(). - */ -CURL_EXTERN void curl_formfree(struct curl_httppost *form); - -/* - * NAME curl_getenv() - * - * DESCRIPTION - * - * Returns a malloc()'ed string that MUST be curl_free()ed after usage is - * complete. DEPRECATED - see lib/README.curlx - */ -CURL_EXTERN char *curl_getenv(const char *variable); - -/* - * NAME curl_version() - * - * DESCRIPTION - * - * Returns a static ascii string of the libcurl version. - */ -CURL_EXTERN char *curl_version(void); - -/* - * NAME curl_easy_escape() - * - * DESCRIPTION - * - * Escapes URL strings (converts all letters consider illegal in URLs to their - * %XX versions). This function returns a new allocated string or NULL if an - * error occurred. - */ -CURL_EXTERN char *curl_easy_escape(CURL *handle, - const char *string, - int length); - -/* the previous version: */ -CURL_EXTERN char *curl_escape(const char *string, - int length); - - -/* - * NAME curl_easy_unescape() - * - * DESCRIPTION - * - * Unescapes URL encoding in strings (converts all %XX codes to their 8bit - * versions). This function returns a new allocated string or NULL if an error - * occurred. - * Conversion Note: On non-ASCII platforms the ASCII %XX codes are - * converted into the host encoding. - */ -CURL_EXTERN char *curl_easy_unescape(CURL *handle, - const char *string, - int length, - int *outlength); - -/* the previous version */ -CURL_EXTERN char *curl_unescape(const char *string, - int length); - -/* - * NAME curl_free() - * - * DESCRIPTION - * - * Provided for de-allocation in the same translation unit that did the - * allocation. Added in libcurl 7.10 - */ -CURL_EXTERN void curl_free(void *p); - -/* - * NAME curl_global_init() - * - * DESCRIPTION - * - * curl_global_init() should be invoked exactly once for each application that - * uses libcurl and before any call of other libcurl functions. - * - * This function is not thread-safe! - */ -CURL_EXTERN CURLcode curl_global_init(long flags); - -/* - * NAME curl_global_init_mem() - * - * DESCRIPTION - * - * curl_global_init() or curl_global_init_mem() should be invoked exactly once - * for each application that uses libcurl. This function can be used to - * initialize libcurl and set user defined memory management callback - * functions. Users can implement memory management routines to check for - * memory leaks, check for mis-use of the curl library etc. User registered - * callback routines with be invoked by this library instead of the system - * memory management routines like malloc, free etc. - */ -CURL_EXTERN CURLcode curl_global_init_mem(long flags, - curl_malloc_callback m, - curl_free_callback f, - curl_realloc_callback r, - curl_strdup_callback s, - curl_calloc_callback c); - -/* - * NAME curl_global_cleanup() - * - * DESCRIPTION - * - * curl_global_cleanup() should be invoked exactly once for each application - * that uses libcurl - */ -CURL_EXTERN void curl_global_cleanup(void); - -/* linked-list structure for the CURLOPT_QUOTE option (and other) */ -struct curl_slist { - char *data; - struct curl_slist *next; -}; - -/* - * NAME curl_slist_append() - * - * DESCRIPTION - * - * Appends a string to a linked list. If no list exists, it will be created - * first. Returns the new list, after appending. - */ -CURL_EXTERN struct curl_slist *curl_slist_append(struct curl_slist *, - const char *); - -/* - * NAME curl_slist_free_all() - * - * DESCRIPTION - * - * free a previously built curl_slist. - */ -CURL_EXTERN void curl_slist_free_all(struct curl_slist *); - -/* - * NAME curl_getdate() - * - * DESCRIPTION - * - * Returns the time, in seconds since 1 Jan 1970 of the time string given in - * the first argument. The time argument in the second parameter is unused - * and should be set to NULL. - */ -CURL_EXTERN time_t curl_getdate(const char *p, const time_t *unused); - -/* info about the certificate chain, only for OpenSSL builds. Asked - for with CURLOPT_CERTINFO / CURLINFO_CERTINFO */ -struct curl_certinfo { - int num_of_certs; /* number of certificates with information */ - struct curl_slist **certinfo; /* for each index in this array, there's a - linked list with textual information in the - format "name: value" */ -}; - -/* enum for the different supported SSL backends */ -typedef enum { - CURLSSLBACKEND_NONE = 0, - CURLSSLBACKEND_OPENSSL = 1, - CURLSSLBACKEND_GNUTLS = 2, - CURLSSLBACKEND_NSS = 3, - CURLSSLBACKEND_OBSOLETE4 = 4, /* Was QSOSSL. */ - CURLSSLBACKEND_GSKIT = 5, - CURLSSLBACKEND_POLARSSL = 6, - CURLSSLBACKEND_CYASSL = 7, - CURLSSLBACKEND_SCHANNEL = 8, - CURLSSLBACKEND_DARWINSSL = 9, - CURLSSLBACKEND_AXTLS = 10, - CURLSSLBACKEND_MBEDTLS = 11 -} curl_sslbackend; - -/* aliases for library clones and renames */ -#define CURLSSLBACKEND_LIBRESSL 1 -#define CURLSSLBACKEND_BORINGSSL 1 -#define CURLSSLBACKEND_WOLFSSL 6 - -/* Information about the SSL library used and the respective internal SSL - handle, which can be used to obtain further information regarding the - connection. Asked for with CURLINFO_TLS_SSL_PTR or CURLINFO_TLS_SESSION. */ -struct curl_tlssessioninfo { - curl_sslbackend backend; - void *internals; -}; - -#define CURLINFO_STRING 0x100000 -#define CURLINFO_LONG 0x200000 -#define CURLINFO_DOUBLE 0x300000 -#define CURLINFO_SLIST 0x400000 -#define CURLINFO_PTR 0x400000 /* same as SLIST */ -#define CURLINFO_SOCKET 0x500000 -#define CURLINFO_OFF_T 0x600000 -#define CURLINFO_MASK 0x0fffff -#define CURLINFO_TYPEMASK 0xf00000 - -typedef enum { - CURLINFO_NONE, /* first, never use this */ - CURLINFO_EFFECTIVE_URL = CURLINFO_STRING + 1, - CURLINFO_RESPONSE_CODE = CURLINFO_LONG + 2, - CURLINFO_TOTAL_TIME = CURLINFO_DOUBLE + 3, - CURLINFO_NAMELOOKUP_TIME = CURLINFO_DOUBLE + 4, - CURLINFO_CONNECT_TIME = CURLINFO_DOUBLE + 5, - CURLINFO_PRETRANSFER_TIME = CURLINFO_DOUBLE + 6, - CURLINFO_SIZE_UPLOAD = CURLINFO_DOUBLE + 7, - CURLINFO_SIZE_UPLOAD_T = CURLINFO_OFF_T + 7, - CURLINFO_SIZE_DOWNLOAD = CURLINFO_DOUBLE + 8, - CURLINFO_SIZE_DOWNLOAD_T = CURLINFO_OFF_T + 8, - CURLINFO_SPEED_DOWNLOAD = CURLINFO_DOUBLE + 9, - CURLINFO_SPEED_DOWNLOAD_T = CURLINFO_OFF_T + 9, - CURLINFO_SPEED_UPLOAD = CURLINFO_DOUBLE + 10, - CURLINFO_SPEED_UPLOAD_T = CURLINFO_OFF_T + 10, - CURLINFO_HEADER_SIZE = CURLINFO_LONG + 11, - CURLINFO_REQUEST_SIZE = CURLINFO_LONG + 12, - CURLINFO_SSL_VERIFYRESULT = CURLINFO_LONG + 13, - CURLINFO_FILETIME = CURLINFO_LONG + 14, - CURLINFO_CONTENT_LENGTH_DOWNLOAD = CURLINFO_DOUBLE + 15, - CURLINFO_CONTENT_LENGTH_DOWNLOAD_T = CURLINFO_OFF_T + 15, - CURLINFO_CONTENT_LENGTH_UPLOAD = CURLINFO_DOUBLE + 16, - CURLINFO_CONTENT_LENGTH_UPLOAD_T = CURLINFO_OFF_T + 16, - CURLINFO_STARTTRANSFER_TIME = CURLINFO_DOUBLE + 17, - CURLINFO_CONTENT_TYPE = CURLINFO_STRING + 18, - CURLINFO_REDIRECT_TIME = CURLINFO_DOUBLE + 19, - CURLINFO_REDIRECT_COUNT = CURLINFO_LONG + 20, - CURLINFO_PRIVATE = CURLINFO_STRING + 21, - CURLINFO_HTTP_CONNECTCODE = CURLINFO_LONG + 22, - CURLINFO_HTTPAUTH_AVAIL = CURLINFO_LONG + 23, - CURLINFO_PROXYAUTH_AVAIL = CURLINFO_LONG + 24, - CURLINFO_OS_ERRNO = CURLINFO_LONG + 25, - CURLINFO_NUM_CONNECTS = CURLINFO_LONG + 26, - CURLINFO_SSL_ENGINES = CURLINFO_SLIST + 27, - CURLINFO_COOKIELIST = CURLINFO_SLIST + 28, - CURLINFO_LASTSOCKET = CURLINFO_LONG + 29, - CURLINFO_FTP_ENTRY_PATH = CURLINFO_STRING + 30, - CURLINFO_REDIRECT_URL = CURLINFO_STRING + 31, - CURLINFO_PRIMARY_IP = CURLINFO_STRING + 32, - CURLINFO_APPCONNECT_TIME = CURLINFO_DOUBLE + 33, - CURLINFO_CERTINFO = CURLINFO_PTR + 34, - CURLINFO_CONDITION_UNMET = CURLINFO_LONG + 35, - CURLINFO_RTSP_SESSION_ID = CURLINFO_STRING + 36, - CURLINFO_RTSP_CLIENT_CSEQ = CURLINFO_LONG + 37, - CURLINFO_RTSP_SERVER_CSEQ = CURLINFO_LONG + 38, - CURLINFO_RTSP_CSEQ_RECV = CURLINFO_LONG + 39, - CURLINFO_PRIMARY_PORT = CURLINFO_LONG + 40, - CURLINFO_LOCAL_IP = CURLINFO_STRING + 41, - CURLINFO_LOCAL_PORT = CURLINFO_LONG + 42, - CURLINFO_TLS_SESSION = CURLINFO_PTR + 43, - CURLINFO_ACTIVESOCKET = CURLINFO_SOCKET + 44, - CURLINFO_TLS_SSL_PTR = CURLINFO_PTR + 45, - CURLINFO_HTTP_VERSION = CURLINFO_LONG + 46, - CURLINFO_PROXY_SSL_VERIFYRESULT = CURLINFO_LONG + 47, - CURLINFO_PROTOCOL = CURLINFO_LONG + 48, - CURLINFO_SCHEME = CURLINFO_STRING + 49, - /* Fill in new entries below here! */ - - CURLINFO_LASTONE = 49 -} CURLINFO; - -/* CURLINFO_RESPONSE_CODE is the new name for the option previously known as - CURLINFO_HTTP_CODE */ -#define CURLINFO_HTTP_CODE CURLINFO_RESPONSE_CODE - -typedef enum { - CURLCLOSEPOLICY_NONE, /* first, never use this */ - - CURLCLOSEPOLICY_OLDEST, - CURLCLOSEPOLICY_LEAST_RECENTLY_USED, - CURLCLOSEPOLICY_LEAST_TRAFFIC, - CURLCLOSEPOLICY_SLOWEST, - CURLCLOSEPOLICY_CALLBACK, - - CURLCLOSEPOLICY_LAST /* last, never use this */ -} curl_closepolicy; - -#define CURL_GLOBAL_SSL (1<<0) -#define CURL_GLOBAL_WIN32 (1<<1) -#define CURL_GLOBAL_ALL (CURL_GLOBAL_SSL|CURL_GLOBAL_WIN32) -#define CURL_GLOBAL_NOTHING 0 -#define CURL_GLOBAL_DEFAULT CURL_GLOBAL_ALL -#define CURL_GLOBAL_ACK_EINTR (1<<2) - - -/***************************************************************************** - * Setup defines, protos etc for the sharing stuff. - */ - -/* Different data locks for a single share */ -typedef enum { - CURL_LOCK_DATA_NONE = 0, - /* CURL_LOCK_DATA_SHARE is used internally to say that - * the locking is just made to change the internal state of the share - * itself. - */ - CURL_LOCK_DATA_SHARE, - CURL_LOCK_DATA_COOKIE, - CURL_LOCK_DATA_DNS, - CURL_LOCK_DATA_SSL_SESSION, - CURL_LOCK_DATA_CONNECT, - CURL_LOCK_DATA_LAST -} curl_lock_data; - -/* Different lock access types */ -typedef enum { - CURL_LOCK_ACCESS_NONE = 0, /* unspecified action */ - CURL_LOCK_ACCESS_SHARED = 1, /* for read perhaps */ - CURL_LOCK_ACCESS_SINGLE = 2, /* for write perhaps */ - CURL_LOCK_ACCESS_LAST /* never use */ -} curl_lock_access; - -typedef void (*curl_lock_function)(CURL *handle, - curl_lock_data data, - curl_lock_access locktype, - void *userptr); -typedef void (*curl_unlock_function)(CURL *handle, - curl_lock_data data, - void *userptr); - - -typedef enum { - CURLSHE_OK, /* all is fine */ - CURLSHE_BAD_OPTION, /* 1 */ - CURLSHE_IN_USE, /* 2 */ - CURLSHE_INVALID, /* 3 */ - CURLSHE_NOMEM, /* 4 out of memory */ - CURLSHE_NOT_BUILT_IN, /* 5 feature not present in lib */ - CURLSHE_LAST /* never use */ -} CURLSHcode; - -typedef enum { - CURLSHOPT_NONE, /* don't use */ - CURLSHOPT_SHARE, /* specify a data type to share */ - CURLSHOPT_UNSHARE, /* specify which data type to stop sharing */ - CURLSHOPT_LOCKFUNC, /* pass in a 'curl_lock_function' pointer */ - CURLSHOPT_UNLOCKFUNC, /* pass in a 'curl_unlock_function' pointer */ - CURLSHOPT_USERDATA, /* pass in a user data pointer used in the lock/unlock - callback functions */ - CURLSHOPT_LAST /* never use */ -} CURLSHoption; - -CURL_EXTERN CURLSH *curl_share_init(void); -CURL_EXTERN CURLSHcode curl_share_setopt(CURLSH *, CURLSHoption option, ...); -CURL_EXTERN CURLSHcode curl_share_cleanup(CURLSH *); - -/**************************************************************************** - * Structures for querying information about the curl library at runtime. - */ - -typedef enum { - CURLVERSION_FIRST, - CURLVERSION_SECOND, - CURLVERSION_THIRD, - CURLVERSION_FOURTH, - CURLVERSION_LAST /* never actually use this */ -} CURLversion; - -/* The 'CURLVERSION_NOW' is the symbolic name meant to be used by - basically all programs ever that want to get version information. It is - meant to be a built-in version number for what kind of struct the caller - expects. If the struct ever changes, we redefine the NOW to another enum - from above. */ -#define CURLVERSION_NOW CURLVERSION_FOURTH - -typedef struct { - CURLversion age; /* age of the returned struct */ - const char *version; /* LIBCURL_VERSION */ - unsigned int version_num; /* LIBCURL_VERSION_NUM */ - const char *host; /* OS/host/cpu/machine when configured */ - int features; /* bitmask, see defines below */ - const char *ssl_version; /* human readable string */ - long ssl_version_num; /* not used anymore, always 0 */ - const char *libz_version; /* human readable string */ - /* protocols is terminated by an entry with a NULL protoname */ - const char * const *protocols; - - /* The fields below this were added in CURLVERSION_SECOND */ - const char *ares; - int ares_num; - - /* This field was added in CURLVERSION_THIRD */ - const char *libidn; - - /* These field were added in CURLVERSION_FOURTH */ - - /* Same as '_libiconv_version' if built with HAVE_ICONV */ - int iconv_ver_num; - - const char *libssh_version; /* human readable string */ - -} curl_version_info_data; - -#define CURL_VERSION_IPV6 (1<<0) /* IPv6-enabled */ -#define CURL_VERSION_KERBEROS4 (1<<1) /* Kerberos V4 auth is supported - (deprecated) */ -#define CURL_VERSION_SSL (1<<2) /* SSL options are present */ -#define CURL_VERSION_LIBZ (1<<3) /* libz features are present */ -#define CURL_VERSION_NTLM (1<<4) /* NTLM auth is supported */ -#define CURL_VERSION_GSSNEGOTIATE (1<<5) /* Negotiate auth is supported - (deprecated) */ -#define CURL_VERSION_DEBUG (1<<6) /* Built with debug capabilities */ -#define CURL_VERSION_ASYNCHDNS (1<<7) /* Asynchronous DNS resolves */ -#define CURL_VERSION_SPNEGO (1<<8) /* SPNEGO auth is supported */ -#define CURL_VERSION_LARGEFILE (1<<9) /* Supports files larger than 2GB */ -#define CURL_VERSION_IDN (1<<10) /* Internationized Domain Names are - supported */ -#define CURL_VERSION_SSPI (1<<11) /* Built against Windows SSPI */ -#define CURL_VERSION_CONV (1<<12) /* Character conversions supported */ -#define CURL_VERSION_CURLDEBUG (1<<13) /* Debug memory tracking supported */ -#define CURL_VERSION_TLSAUTH_SRP (1<<14) /* TLS-SRP auth is supported */ -#define CURL_VERSION_NTLM_WB (1<<15) /* NTLM delegation to winbind helper - is supported */ -#define CURL_VERSION_HTTP2 (1<<16) /* HTTP2 support built-in */ -#define CURL_VERSION_GSSAPI (1<<17) /* Built against a GSS-API library */ -#define CURL_VERSION_KERBEROS5 (1<<18) /* Kerberos V5 auth is supported */ -#define CURL_VERSION_UNIX_SOCKETS (1<<19) /* Unix domain sockets support */ -#define CURL_VERSION_PSL (1<<20) /* Mozilla's Public Suffix List, used - for cookie domain verification */ -#define CURL_VERSION_HTTPS_PROXY (1<<21) /* HTTPS-proxy support built-in */ - - /* - * NAME curl_version_info() - * - * DESCRIPTION - * - * This function returns a pointer to a static copy of the version info - * struct. See above. - */ -CURL_EXTERN curl_version_info_data *curl_version_info(CURLversion); - -/* - * NAME curl_easy_strerror() - * - * DESCRIPTION - * - * The curl_easy_strerror function may be used to turn a CURLcode value - * into the equivalent human readable error string. This is useful - * for printing meaningful error messages. - */ -CURL_EXTERN const char *curl_easy_strerror(CURLcode); - -/* - * NAME curl_share_strerror() - * - * DESCRIPTION - * - * The curl_share_strerror function may be used to turn a CURLSHcode value - * into the equivalent human readable error string. This is useful - * for printing meaningful error messages. - */ -CURL_EXTERN const char *curl_share_strerror(CURLSHcode); - -/* - * NAME curl_easy_pause() - * - * DESCRIPTION - * - * The curl_easy_pause function pauses or unpauses transfers. Select the new - * state by setting the bitmask, use the convenience defines below. - * - */ -CURL_EXTERN CURLcode curl_easy_pause(CURL *handle, int bitmask); - -#define CURLPAUSE_RECV (1<<0) -#define CURLPAUSE_RECV_CONT (0) - -#define CURLPAUSE_SEND (1<<2) -#define CURLPAUSE_SEND_CONT (0) - -#define CURLPAUSE_ALL (CURLPAUSE_RECV|CURLPAUSE_SEND) -#define CURLPAUSE_CONT (CURLPAUSE_RECV_CONT|CURLPAUSE_SEND_CONT) - -#ifdef __cplusplus -} -#endif - -/* unfortunately, the easy.h and multi.h include files need options and info - stuff before they can be included! */ -#include "easy.h" /* nothing in curl is fun without the easy stuff */ -#include "multi.h" - -/* the typechecker doesn't work in C++ (yet) */ -#if defined(__GNUC__) && defined(__GNUC_MINOR__) && \ - ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && \ - !defined(__cplusplus) && !defined(CURL_DISABLE_TYPECHECK) -#include "typecheck-gcc.h" -#else -#if defined(__STDC__) && (__STDC__ >= 1) -/* This preprocessor magic that replaces a call with the exact same call is - only done to make sure application authors pass exactly three arguments - to these functions. */ -#define curl_easy_setopt(handle,opt,param) curl_easy_setopt(handle,opt,param) -#define curl_easy_getinfo(handle,info,arg) curl_easy_getinfo(handle,info,arg) -#define curl_share_setopt(share,opt,param) curl_share_setopt(share,opt,param) -#define curl_multi_setopt(handle,opt,param) curl_multi_setopt(handle,opt,param) -#endif /* __STDC__ >= 1 */ -#endif /* gcc >= 4.3 && !__cplusplus */ - -#endif /* __CURL_CURL_H */ diff --git a/Framework/ext/curl/curlver.h b/Framework/ext/curl/curlver.h deleted file mode 100644 index f3cc1ea..0000000 --- a/Framework/ext/curl/curlver.h +++ /dev/null @@ -1,77 +0,0 @@ -#ifndef __CURL_CURLVER_H -#define __CURL_CURLVER_H -/*************************************************************************** - * _ _ ____ _ - * Project ___| | | | _ \| | - * / __| | | | |_) | | - * | (__| |_| | _ <| |___ - * \___|\___/|_| \_\_____| - * - * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. - * - * This software is licensed as described in the file COPYING, which - * you should have received as part of this distribution. The terms - * are also available at https://curl.haxx.se/docs/copyright.html. - * - * You may opt to use, copy, modify, merge, publish, distribute and/or sell - * copies of the Software, and permit persons to whom the Software is - * furnished to do so, under the terms of the COPYING file. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ***************************************************************************/ - -/* This header file contains nothing but libcurl version info, generated by - a script at release-time. This was made its own header file in 7.11.2 */ - -/* This is the global package copyright */ -#define LIBCURL_COPYRIGHT "1996 - 2017 Daniel Stenberg, ." - -/* This is the version number of the libcurl package from which this header - file origins: */ -#define LIBCURL_VERSION "7.55.1" - -/* The numeric version number is also available "in parts" by using these - defines: */ -#define LIBCURL_VERSION_MAJOR 7 -#define LIBCURL_VERSION_MINOR 55 -#define LIBCURL_VERSION_PATCH 1 - -/* This is the numeric version of the libcurl version number, meant for easier - parsing and comparions by programs. The LIBCURL_VERSION_NUM define will - always follow this syntax: - - 0xXXYYZZ - - Where XX, YY and ZZ are the main version, release and patch numbers in - hexadecimal (using 8 bits each). All three numbers are always represented - using two digits. 1.2 would appear as "0x010200" while version 9.11.7 - appears as "0x090b07". - - This 6-digit (24 bits) hexadecimal number does not show pre-release number, - and it is always a greater number in a more recent release. It makes - comparisons with greater than and less than work. - - Note: This define is the full hex number and _does not_ use the - CURL_VERSION_BITS() macro since curl's own configure script greps for it - and needs it to contain the full number. -*/ -#define LIBCURL_VERSION_NUM 0x073701 - -/* - * This is the date and time when the full source package was created. The - * timestamp is not stored in git, as the timestamp is properly set in the - * tarballs by the maketgz script. - * - * The format of the date follows this template: - * - * "2007-11-23" - */ -#define LIBCURL_TIMESTAMP "2017-08-14" - -#define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|z) -#define CURL_AT_LEAST_VERSION(x,y,z) \ - (LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(x, y, z)) - -#endif /* __CURL_CURLVER_H */ diff --git a/Framework/ext/curl/easy.h b/Framework/ext/curl/easy.h deleted file mode 100644 index 752c504..0000000 --- a/Framework/ext/curl/easy.h +++ /dev/null @@ -1,102 +0,0 @@ -#ifndef __CURL_EASY_H -#define __CURL_EASY_H -/*************************************************************************** - * _ _ ____ _ - * Project ___| | | | _ \| | - * / __| | | | |_) | | - * | (__| |_| | _ <| |___ - * \___|\___/|_| \_\_____| - * - * Copyright (C) 1998 - 2016, Daniel Stenberg, , et al. - * - * This software is licensed as described in the file COPYING, which - * you should have received as part of this distribution. The terms - * are also available at https://curl.haxx.se/docs/copyright.html. - * - * You may opt to use, copy, modify, merge, publish, distribute and/or sell - * copies of the Software, and permit persons to whom the Software is - * furnished to do so, under the terms of the COPYING file. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ***************************************************************************/ -#ifdef __cplusplus -extern "C" { -#endif - -CURL_EXTERN CURL *curl_easy_init(void); -CURL_EXTERN CURLcode curl_easy_setopt(CURL *curl, CURLoption option, ...); -CURL_EXTERN CURLcode curl_easy_perform(CURL *curl); -CURL_EXTERN void curl_easy_cleanup(CURL *curl); - -/* - * NAME curl_easy_getinfo() - * - * DESCRIPTION - * - * Request internal information from the curl session with this function. The - * third argument MUST be a pointer to a long, a pointer to a char * or a - * pointer to a double (as the documentation describes elsewhere). The data - * pointed to will be filled in accordingly and can be relied upon only if the - * function returns CURLE_OK. This function is intended to get used *AFTER* a - * performed transfer, all results from this function are undefined until the - * transfer is completed. - */ -CURL_EXTERN CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ...); - - -/* - * NAME curl_easy_duphandle() - * - * DESCRIPTION - * - * Creates a new curl session handle with the same options set for the handle - * passed in. Duplicating a handle could only be a matter of cloning data and - * options, internal state info and things like persistent connections cannot - * be transferred. It is useful in multithreaded applications when you can run - * curl_easy_duphandle() for each new thread to avoid a series of identical - * curl_easy_setopt() invokes in every thread. - */ -CURL_EXTERN CURL *curl_easy_duphandle(CURL *curl); - -/* - * NAME curl_easy_reset() - * - * DESCRIPTION - * - * Re-initializes a CURL handle to the default values. This puts back the - * handle to the same state as it was in when it was just created. - * - * It does keep: live connections, the Session ID cache, the DNS cache and the - * cookies. - */ -CURL_EXTERN void curl_easy_reset(CURL *curl); - -/* - * NAME curl_easy_recv() - * - * DESCRIPTION - * - * Receives data from the connected socket. Use after successful - * curl_easy_perform() with CURLOPT_CONNECT_ONLY option. - */ -CURL_EXTERN CURLcode curl_easy_recv(CURL *curl, void *buffer, size_t buflen, - size_t *n); - -/* - * NAME curl_easy_send() - * - * DESCRIPTION - * - * Sends data over the connected socket. Use after successful - * curl_easy_perform() with CURLOPT_CONNECT_ONLY option. - */ -CURL_EXTERN CURLcode curl_easy_send(CURL *curl, const void *buffer, - size_t buflen, size_t *n); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Framework/ext/curl/mprintf.h b/Framework/ext/curl/mprintf.h deleted file mode 100644 index e20f546..0000000 --- a/Framework/ext/curl/mprintf.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef __CURL_MPRINTF_H -#define __CURL_MPRINTF_H -/*************************************************************************** - * _ _ ____ _ - * Project ___| | | | _ \| | - * / __| | | | |_) | | - * | (__| |_| | _ <| |___ - * \___|\___/|_| \_\_____| - * - * Copyright (C) 1998 - 2016, Daniel Stenberg, , et al. - * - * This software is licensed as described in the file COPYING, which - * you should have received as part of this distribution. The terms - * are also available at https://curl.haxx.se/docs/copyright.html. - * - * You may opt to use, copy, modify, merge, publish, distribute and/or sell - * copies of the Software, and permit persons to whom the Software is - * furnished to do so, under the terms of the COPYING file. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ***************************************************************************/ - -#include -#include /* needed for FILE */ -#include "curl.h" /* for CURL_EXTERN */ - -#ifdef __cplusplus -extern "C" { -#endif - -CURL_EXTERN int curl_mprintf(const char *format, ...); -CURL_EXTERN int curl_mfprintf(FILE *fd, const char *format, ...); -CURL_EXTERN int curl_msprintf(char *buffer, const char *format, ...); -CURL_EXTERN int curl_msnprintf(char *buffer, size_t maxlength, - const char *format, ...); -CURL_EXTERN int curl_mvprintf(const char *format, va_list args); -CURL_EXTERN int curl_mvfprintf(FILE *fd, const char *format, va_list args); -CURL_EXTERN int curl_mvsprintf(char *buffer, const char *format, va_list args); -CURL_EXTERN int curl_mvsnprintf(char *buffer, size_t maxlength, - const char *format, va_list args); -CURL_EXTERN char *curl_maprintf(const char *format, ...); -CURL_EXTERN char *curl_mvaprintf(const char *format, va_list args); - -#ifdef __cplusplus -} -#endif - -#endif /* __CURL_MPRINTF_H */ diff --git a/Framework/ext/curl/multi.h b/Framework/ext/curl/multi.h deleted file mode 100644 index f93e511..0000000 --- a/Framework/ext/curl/multi.h +++ /dev/null @@ -1,439 +0,0 @@ -#ifndef __CURL_MULTI_H -#define __CURL_MULTI_H -/*************************************************************************** - * _ _ ____ _ - * Project ___| | | | _ \| | - * / __| | | | |_) | | - * | (__| |_| | _ <| |___ - * \___|\___/|_| \_\_____| - * - * Copyright (C) 1998 - 2016, Daniel Stenberg, , et al. - * - * This software is licensed as described in the file COPYING, which - * you should have received as part of this distribution. The terms - * are also available at https://curl.haxx.se/docs/copyright.html. - * - * You may opt to use, copy, modify, merge, publish, distribute and/or sell - * copies of the Software, and permit persons to whom the Software is - * furnished to do so, under the terms of the COPYING file. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ***************************************************************************/ -/* - This is an "external" header file. Don't give away any internals here! - - GOALS - - o Enable a "pull" interface. The application that uses libcurl decides where - and when to ask libcurl to get/send data. - - o Enable multiple simultaneous transfers in the same thread without making it - complicated for the application. - - o Enable the application to select() on its own file descriptors and curl's - file descriptors simultaneous easily. - -*/ - -/* - * This header file should not really need to include "curl.h" since curl.h - * itself includes this file and we expect user applications to do #include - * without the need for especially including multi.h. - * - * For some reason we added this include here at one point, and rather than to - * break existing (wrongly written) libcurl applications, we leave it as-is - * but with this warning attached. - */ -#include "curl.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined(BUILDING_LIBCURL) || defined(CURL_STRICTER) -typedef struct Curl_multi CURLM; -#else -typedef void CURLM; -#endif - -typedef enum { - CURLM_CALL_MULTI_PERFORM = -1, /* please call curl_multi_perform() or - curl_multi_socket*() soon */ - CURLM_OK, - CURLM_BAD_HANDLE, /* the passed-in handle is not a valid CURLM handle */ - CURLM_BAD_EASY_HANDLE, /* an easy handle was not good/valid */ - CURLM_OUT_OF_MEMORY, /* if you ever get this, you're in deep sh*t */ - CURLM_INTERNAL_ERROR, /* this is a libcurl bug */ - CURLM_BAD_SOCKET, /* the passed in socket argument did not match */ - CURLM_UNKNOWN_OPTION, /* curl_multi_setopt() with unsupported option */ - CURLM_ADDED_ALREADY, /* an easy handle already added to a multi handle was - attempted to get added - again */ - CURLM_LAST -} CURLMcode; - -/* just to make code nicer when using curl_multi_socket() you can now check - for CURLM_CALL_MULTI_SOCKET too in the same style it works for - curl_multi_perform() and CURLM_CALL_MULTI_PERFORM */ -#define CURLM_CALL_MULTI_SOCKET CURLM_CALL_MULTI_PERFORM - -/* bitmask bits for CURLMOPT_PIPELINING */ -#define CURLPIPE_NOTHING 0L -#define CURLPIPE_HTTP1 1L -#define CURLPIPE_MULTIPLEX 2L - -typedef enum { - CURLMSG_NONE, /* first, not used */ - CURLMSG_DONE, /* This easy handle has completed. 'result' contains - the CURLcode of the transfer */ - CURLMSG_LAST /* last, not used */ -} CURLMSG; - -struct CURLMsg { - CURLMSG msg; /* what this message means */ - CURL *easy_handle; /* the handle it concerns */ - union { - void *whatever; /* message-specific data */ - CURLcode result; /* return code for transfer */ - } data; -}; -typedef struct CURLMsg CURLMsg; - -/* Based on poll(2) structure and values. - * We don't use pollfd and POLL* constants explicitly - * to cover platforms without poll(). */ -#define CURL_WAIT_POLLIN 0x0001 -#define CURL_WAIT_POLLPRI 0x0002 -#define CURL_WAIT_POLLOUT 0x0004 - -struct curl_waitfd { - curl_socket_t fd; - short events; - short revents; /* not supported yet */ -}; - -/* - * Name: curl_multi_init() - * - * Desc: inititalize multi-style curl usage - * - * Returns: a new CURLM handle to use in all 'curl_multi' functions. - */ -CURL_EXTERN CURLM *curl_multi_init(void); - -/* - * Name: curl_multi_add_handle() - * - * Desc: add a standard curl handle to the multi stack - * - * Returns: CURLMcode type, general multi error code. - */ -CURL_EXTERN CURLMcode curl_multi_add_handle(CURLM *multi_handle, - CURL *curl_handle); - - /* - * Name: curl_multi_remove_handle() - * - * Desc: removes a curl handle from the multi stack again - * - * Returns: CURLMcode type, general multi error code. - */ -CURL_EXTERN CURLMcode curl_multi_remove_handle(CURLM *multi_handle, - CURL *curl_handle); - - /* - * Name: curl_multi_fdset() - * - * Desc: Ask curl for its fd_set sets. The app can use these to select() or - * poll() on. We want curl_multi_perform() called as soon as one of - * them are ready. - * - * Returns: CURLMcode type, general multi error code. - */ -CURL_EXTERN CURLMcode curl_multi_fdset(CURLM *multi_handle, - fd_set *read_fd_set, - fd_set *write_fd_set, - fd_set *exc_fd_set, - int *max_fd); - -/* - * Name: curl_multi_wait() - * - * Desc: Poll on all fds within a CURLM set as well as any - * additional fds passed to the function. - * - * Returns: CURLMcode type, general multi error code. - */ -CURL_EXTERN CURLMcode curl_multi_wait(CURLM *multi_handle, - struct curl_waitfd extra_fds[], - unsigned int extra_nfds, - int timeout_ms, - int *ret); - - /* - * Name: curl_multi_perform() - * - * Desc: When the app thinks there's data available for curl it calls this - * function to read/write whatever there is right now. This returns - * as soon as the reads and writes are done. This function does not - * require that there actually is data available for reading or that - * data can be written, it can be called just in case. It returns - * the number of handles that still transfer data in the second - * argument's integer-pointer. - * - * Returns: CURLMcode type, general multi error code. *NOTE* that this only - * returns errors etc regarding the whole multi stack. There might - * still have occurred problems on invidual transfers even when this - * returns OK. - */ -CURL_EXTERN CURLMcode curl_multi_perform(CURLM *multi_handle, - int *running_handles); - - /* - * Name: curl_multi_cleanup() - * - * Desc: Cleans up and removes a whole multi stack. It does not free or - * touch any individual easy handles in any way. We need to define - * in what state those handles will be if this function is called - * in the middle of a transfer. - * - * Returns: CURLMcode type, general multi error code. - */ -CURL_EXTERN CURLMcode curl_multi_cleanup(CURLM *multi_handle); - -/* - * Name: curl_multi_info_read() - * - * Desc: Ask the multi handle if there's any messages/informationals from - * the individual transfers. Messages include informationals such as - * error code from the transfer or just the fact that a transfer is - * completed. More details on these should be written down as well. - * - * Repeated calls to this function will return a new struct each - * time, until a special "end of msgs" struct is returned as a signal - * that there is no more to get at this point. - * - * The data the returned pointer points to will not survive calling - * curl_multi_cleanup(). - * - * The 'CURLMsg' struct is meant to be very simple and only contain - * very basic information. If more involved information is wanted, - * we will provide the particular "transfer handle" in that struct - * and that should/could/would be used in subsequent - * curl_easy_getinfo() calls (or similar). The point being that we - * must never expose complex structs to applications, as then we'll - * undoubtably get backwards compatibility problems in the future. - * - * Returns: A pointer to a filled-in struct, or NULL if it failed or ran out - * of structs. It also writes the number of messages left in the - * queue (after this read) in the integer the second argument points - * to. - */ -CURL_EXTERN CURLMsg *curl_multi_info_read(CURLM *multi_handle, - int *msgs_in_queue); - -/* - * Name: curl_multi_strerror() - * - * Desc: The curl_multi_strerror function may be used to turn a CURLMcode - * value into the equivalent human readable error string. This is - * useful for printing meaningful error messages. - * - * Returns: A pointer to a zero-terminated error message. - */ -CURL_EXTERN const char *curl_multi_strerror(CURLMcode); - -/* - * Name: curl_multi_socket() and - * curl_multi_socket_all() - * - * Desc: An alternative version of curl_multi_perform() that allows the - * application to pass in one of the file descriptors that have been - * detected to have "action" on them and let libcurl perform. - * See man page for details. - */ -#define CURL_POLL_NONE 0 -#define CURL_POLL_IN 1 -#define CURL_POLL_OUT 2 -#define CURL_POLL_INOUT 3 -#define CURL_POLL_REMOVE 4 - -#define CURL_SOCKET_TIMEOUT CURL_SOCKET_BAD - -#define CURL_CSELECT_IN 0x01 -#define CURL_CSELECT_OUT 0x02 -#define CURL_CSELECT_ERR 0x04 - -typedef int (*curl_socket_callback)(CURL *easy, /* easy handle */ - curl_socket_t s, /* socket */ - int what, /* see above */ - void *userp, /* private callback - pointer */ - void *socketp); /* private socket - pointer */ -/* - * Name: curl_multi_timer_callback - * - * Desc: Called by libcurl whenever the library detects a change in the - * maximum number of milliseconds the app is allowed to wait before - * curl_multi_socket() or curl_multi_perform() must be called - * (to allow libcurl's timed events to take place). - * - * Returns: The callback should return zero. - */ -typedef int (*curl_multi_timer_callback)(CURLM *multi, /* multi handle */ - long timeout_ms, /* see above */ - void *userp); /* private callback - pointer */ - -CURL_EXTERN CURLMcode curl_multi_socket(CURLM *multi_handle, curl_socket_t s, - int *running_handles); - -CURL_EXTERN CURLMcode curl_multi_socket_action(CURLM *multi_handle, - curl_socket_t s, - int ev_bitmask, - int *running_handles); - -CURL_EXTERN CURLMcode curl_multi_socket_all(CURLM *multi_handle, - int *running_handles); - -#ifndef CURL_ALLOW_OLD_MULTI_SOCKET -/* This macro below was added in 7.16.3 to push users who recompile to use - the new curl_multi_socket_action() instead of the old curl_multi_socket() -*/ -#define curl_multi_socket(x,y,z) curl_multi_socket_action(x,y,0,z) -#endif - -/* - * Name: curl_multi_timeout() - * - * Desc: Returns the maximum number of milliseconds the app is allowed to - * wait before curl_multi_socket() or curl_multi_perform() must be - * called (to allow libcurl's timed events to take place). - * - * Returns: CURLM error code. - */ -CURL_EXTERN CURLMcode curl_multi_timeout(CURLM *multi_handle, - long *milliseconds); - -#undef CINIT /* re-using the same name as in curl.h */ - -#ifdef CURL_ISOCPP -#define CINIT(name,type,num) CURLMOPT_ ## name = CURLOPTTYPE_ ## type + num -#else -/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */ -#define LONG CURLOPTTYPE_LONG -#define OBJECTPOINT CURLOPTTYPE_OBJECTPOINT -#define FUNCTIONPOINT CURLOPTTYPE_FUNCTIONPOINT -#define OFF_T CURLOPTTYPE_OFF_T -#define CINIT(name,type,number) CURLMOPT_/**/name = type + number -#endif - -typedef enum { - /* This is the socket callback function pointer */ - CINIT(SOCKETFUNCTION, FUNCTIONPOINT, 1), - - /* This is the argument passed to the socket callback */ - CINIT(SOCKETDATA, OBJECTPOINT, 2), - - /* set to 1 to enable pipelining for this multi handle */ - CINIT(PIPELINING, LONG, 3), - - /* This is the timer callback function pointer */ - CINIT(TIMERFUNCTION, FUNCTIONPOINT, 4), - - /* This is the argument passed to the timer callback */ - CINIT(TIMERDATA, OBJECTPOINT, 5), - - /* maximum number of entries in the connection cache */ - CINIT(MAXCONNECTS, LONG, 6), - - /* maximum number of (pipelining) connections to one host */ - CINIT(MAX_HOST_CONNECTIONS, LONG, 7), - - /* maximum number of requests in a pipeline */ - CINIT(MAX_PIPELINE_LENGTH, LONG, 8), - - /* a connection with a content-length longer than this - will not be considered for pipelining */ - CINIT(CONTENT_LENGTH_PENALTY_SIZE, OFF_T, 9), - - /* a connection with a chunk length longer than this - will not be considered for pipelining */ - CINIT(CHUNK_LENGTH_PENALTY_SIZE, OFF_T, 10), - - /* a list of site names(+port) that are blacklisted from - pipelining */ - CINIT(PIPELINING_SITE_BL, OBJECTPOINT, 11), - - /* a list of server types that are blacklisted from - pipelining */ - CINIT(PIPELINING_SERVER_BL, OBJECTPOINT, 12), - - /* maximum number of open connections in total */ - CINIT(MAX_TOTAL_CONNECTIONS, LONG, 13), - - /* This is the server push callback function pointer */ - CINIT(PUSHFUNCTION, FUNCTIONPOINT, 14), - - /* This is the argument passed to the server push callback */ - CINIT(PUSHDATA, OBJECTPOINT, 15), - - CURLMOPT_LASTENTRY /* the last unused */ -} CURLMoption; - - -/* - * Name: curl_multi_setopt() - * - * Desc: Sets options for the multi handle. - * - * Returns: CURLM error code. - */ -CURL_EXTERN CURLMcode curl_multi_setopt(CURLM *multi_handle, - CURLMoption option, ...); - - -/* - * Name: curl_multi_assign() - * - * Desc: This function sets an association in the multi handle between the - * given socket and a private pointer of the application. This is - * (only) useful for curl_multi_socket uses. - * - * Returns: CURLM error code. - */ -CURL_EXTERN CURLMcode curl_multi_assign(CURLM *multi_handle, - curl_socket_t sockfd, void *sockp); - - -/* - * Name: curl_push_callback - * - * Desc: This callback gets called when a new stream is being pushed by the - * server. It approves or denies the new stream. - * - * Returns: CURL_PUSH_OK or CURL_PUSH_DENY. - */ -#define CURL_PUSH_OK 0 -#define CURL_PUSH_DENY 1 - -struct curl_pushheaders; /* forward declaration only */ - -CURL_EXTERN char *curl_pushheader_bynum(struct curl_pushheaders *h, - size_t num); -CURL_EXTERN char *curl_pushheader_byname(struct curl_pushheaders *h, - const char *name); - -typedef int (*curl_push_callback)(CURL *parent, - CURL *easy, - size_t num_headers, - struct curl_pushheaders *headers, - void *userp); - -#ifdef __cplusplus -} /* end of extern "C" */ -#endif - -#endif diff --git a/Framework/ext/curl/stdcheaders.h b/Framework/ext/curl/stdcheaders.h deleted file mode 100644 index 027b6f4..0000000 --- a/Framework/ext/curl/stdcheaders.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef __STDC_HEADERS_H -#define __STDC_HEADERS_H -/*************************************************************************** - * _ _ ____ _ - * Project ___| | | | _ \| | - * / __| | | | |_) | | - * | (__| |_| | _ <| |___ - * \___|\___/|_| \_\_____| - * - * Copyright (C) 1998 - 2016, Daniel Stenberg, , et al. - * - * This software is licensed as described in the file COPYING, which - * you should have received as part of this distribution. The terms - * are also available at https://curl.haxx.se/docs/copyright.html. - * - * You may opt to use, copy, modify, merge, publish, distribute and/or sell - * copies of the Software, and permit persons to whom the Software is - * furnished to do so, under the terms of the COPYING file. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ***************************************************************************/ - -#include - -size_t fread(void *, size_t, size_t, FILE *); -size_t fwrite(const void *, size_t, size_t, FILE *); - -int strcasecmp(const char *, const char *); -int strncasecmp(const char *, const char *, size_t); - -#endif /* __STDC_HEADERS_H */ diff --git a/Framework/ext/curl/system.h b/Framework/ext/curl/system.h deleted file mode 100644 index 95c72d9..0000000 --- a/Framework/ext/curl/system.h +++ /dev/null @@ -1,547 +0,0 @@ -#ifndef __CURL_SYSTEM_H -#define __CURL_SYSTEM_H -/*************************************************************************** - * _ _ ____ _ - * Project ___| | | | _ \| | - * / __| | | | |_) | | - * | (__| |_| | _ <| |___ - * \___|\___/|_| \_\_____| - * - * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. - * - * This software is licensed as described in the file COPYING, which - * you should have received as part of this distribution. The terms - * are also available at https://curl.haxx.se/docs/copyright.html. - * - * You may opt to use, copy, modify, merge, publish, distribute and/or sell - * copies of the Software, and permit persons to whom the Software is - * furnished to do so, under the terms of the COPYING file. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ***************************************************************************/ - -/* - * Try to keep one section per platform, compiler and architecture, otherwise, - * if an existing section is reused for a different one and later on the - * original is adjusted, probably the piggybacking one can be adversely - * changed. - * - * In order to differentiate between platforms/compilers/architectures use - * only compiler built in predefined preprocessor symbols. - * - * curl_off_t - * ---------- - * - * For any given platform/compiler curl_off_t must be typedef'ed to a 64-bit - * wide signed integral data type. The width of this data type must remain - * constant and independent of any possible large file support settings. - * - * As an exception to the above, curl_off_t shall be typedef'ed to a 32-bit - * wide signed integral data type if there is no 64-bit type. - * - * As a general rule, curl_off_t shall not be mapped to off_t. This rule shall - * only be violated if off_t is the only 64-bit data type available and the - * size of off_t is independent of large file support settings. Keep your - * build on the safe side avoiding an off_t gating. If you have a 64-bit - * off_t then take for sure that another 64-bit data type exists, dig deeper - * and you will find it. - * - */ - -#if defined(__DJGPP__) || defined(__GO32__) -# if defined(__DJGPP__) && (__DJGPP__ > 1) -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SIZEOF_CURL_OFF_T 8 -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# else -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SIZEOF_CURL_OFF_T 4 -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# endif -# define CURL_TYPEOF_CURL_SOCKLEN_T int -# define CURL_SIZEOF_CURL_SOCKLEN_T 4 - -#elif defined(__SALFORDC__) -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SIZEOF_CURL_OFF_T 4 -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# define CURL_TYPEOF_CURL_SOCKLEN_T int -# define CURL_SIZEOF_CURL_SOCKLEN_T 4 - -#elif defined(__BORLANDC__) -# if (__BORLANDC__ < 0x520) -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SIZEOF_CURL_OFF_T 4 -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# else -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T __int64 -# define CURL_FORMAT_CURL_OFF_T "I64d" -# define CURL_FORMAT_CURL_OFF_TU "I64u" -# define CURL_SIZEOF_CURL_OFF_T 8 -# define CURL_SUFFIX_CURL_OFF_T i64 -# define CURL_SUFFIX_CURL_OFF_TU ui64 -# endif -# define CURL_TYPEOF_CURL_SOCKLEN_T int -# define CURL_SIZEOF_CURL_SOCKLEN_T 4 - -#elif defined(__TURBOC__) -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SIZEOF_CURL_OFF_T 4 -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# define CURL_TYPEOF_CURL_SOCKLEN_T int -# define CURL_SIZEOF_CURL_SOCKLEN_T 4 - -#elif defined(__WATCOMC__) -# if defined(__386__) -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T __int64 -# define CURL_FORMAT_CURL_OFF_T "I64d" -# define CURL_FORMAT_CURL_OFF_TU "I64u" -# define CURL_SIZEOF_CURL_OFF_T 8 -# define CURL_SUFFIX_CURL_OFF_T i64 -# define CURL_SUFFIX_CURL_OFF_TU ui64 -# else -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SIZEOF_CURL_OFF_T 4 -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# endif -# define CURL_TYPEOF_CURL_SOCKLEN_T int -# define CURL_SIZEOF_CURL_SOCKLEN_T 4 - -#elif defined(__POCC__) -# if (__POCC__ < 280) -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SIZEOF_CURL_OFF_T 4 -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# elif defined(_MSC_VER) -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T __int64 -# define CURL_FORMAT_CURL_OFF_T "I64d" -# define CURL_FORMAT_CURL_OFF_TU "I64u" -# define CURL_SIZEOF_CURL_OFF_T 8 -# define CURL_SUFFIX_CURL_OFF_T i64 -# define CURL_SUFFIX_CURL_OFF_TU ui64 -# else -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SIZEOF_CURL_OFF_T 8 -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# endif -# define CURL_TYPEOF_CURL_SOCKLEN_T int -# define CURL_SIZEOF_CURL_SOCKLEN_T 4 - -#elif defined(__LCC__) -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SIZEOF_CURL_OFF_T 4 -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# define CURL_TYPEOF_CURL_SOCKLEN_T int -# define CURL_SIZEOF_CURL_SOCKLEN_T 4 - -#elif defined(__SYMBIAN32__) -# if defined(__EABI__) /* Treat all ARM compilers equally */ -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SIZEOF_CURL_OFF_T 8 -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# elif defined(__CW32__) -# pragma longlong on -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SIZEOF_CURL_OFF_T 8 -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# elif defined(__VC32__) -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T __int64 -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SIZEOF_CURL_OFF_T 8 -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# endif -# define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int -# define CURL_SIZEOF_CURL_SOCKLEN_T 4 - -#elif defined(__MWERKS__) -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SIZEOF_CURL_OFF_T 8 -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# define CURL_TYPEOF_CURL_SOCKLEN_T int -# define CURL_SIZEOF_CURL_SOCKLEN_T 4 - -#elif defined(_WIN32_WCE) -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T __int64 -# define CURL_FORMAT_CURL_OFF_T "I64d" -# define CURL_FORMAT_CURL_OFF_TU "I64u" -# define CURL_SIZEOF_CURL_OFF_T 8 -# define CURL_SUFFIX_CURL_OFF_T i64 -# define CURL_SUFFIX_CURL_OFF_TU ui64 -# define CURL_TYPEOF_CURL_SOCKLEN_T int -# define CURL_SIZEOF_CURL_SOCKLEN_T 4 - -#elif defined(__MINGW32__) -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "I64d" -# define CURL_FORMAT_CURL_OFF_TU "I64u" -# define CURL_SIZEOF_CURL_OFF_T 8 -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t -# define CURL_SIZEOF_CURL_SOCKLEN_T 4 -# define CURL_PULL_SYS_TYPES_H 1 -# define CURL_PULL_WS2TCPIP_H 1 - -#elif defined(__VMS) -# if defined(__VAX) -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SIZEOF_CURL_OFF_T 4 -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# else -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SIZEOF_CURL_OFF_T 8 -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# endif -# define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int -# define CURL_SIZEOF_CURL_SOCKLEN_T 4 - -#elif defined(__OS400__) -# if defined(__ILEC400__) -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SIZEOF_CURL_OFF_T 8 -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t -# define CURL_SIZEOF_CURL_SOCKLEN_T 4 -# define CURL_PULL_SYS_TYPES_H 1 -# define CURL_PULL_SYS_SOCKET_H 1 -# endif - -#elif defined(__MVS__) -# if defined(__IBMC__) || defined(__IBMCPP__) -# if defined(_ILP32) -# define CURL_SIZEOF_LONG 4 -# elif defined(_LP64) -# define CURL_SIZEOF_LONG 8 -# endif -# if defined(_LONG_LONG) -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SIZEOF_CURL_OFF_T 8 -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# elif defined(_LP64) -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SIZEOF_CURL_OFF_T 8 -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# else -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SIZEOF_CURL_OFF_T 4 -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# endif -# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t -# define CURL_SIZEOF_CURL_SOCKLEN_T 4 -# define CURL_PULL_SYS_TYPES_H 1 -# define CURL_PULL_SYS_SOCKET_H 1 -# endif - -#elif defined(__370__) -# if defined(__IBMC__) || defined(__IBMCPP__) -# if defined(_ILP32) -# define CURL_SIZEOF_LONG 4 -# elif defined(_LP64) -# define CURL_SIZEOF_LONG 8 -# endif -# if defined(_LONG_LONG) -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SIZEOF_CURL_OFF_T 8 -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# elif defined(_LP64) -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SIZEOF_CURL_OFF_T 8 -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# else -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SIZEOF_CURL_OFF_T 4 -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# endif -# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t -# define CURL_SIZEOF_CURL_SOCKLEN_T 4 -# define CURL_PULL_SYS_TYPES_H 1 -# define CURL_PULL_SYS_SOCKET_H 1 -# endif - -#elif defined(TPF) -# define CURL_SIZEOF_LONG 8 -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SIZEOF_CURL_OFF_T 8 -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# define CURL_TYPEOF_CURL_SOCKLEN_T int -# define CURL_SIZEOF_CURL_SOCKLEN_T 4 - -#elif defined(__TINYC__) /* also known as tcc */ - -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SIZEOF_CURL_OFF_T 8 -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t -# define CURL_PULL_SYS_TYPES_H 1 -# define CURL_PULL_SYS_SOCKET_H 1 - -#elif defined(__SUNPRO_C) /* Oracle Solaris Studio */ -# if !defined(__LP64) && (defined(__ILP32) || \ - defined(__i386) || defined(__sparcv8)) -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SIZEOF_CURL_OFF_T 8 -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# elif defined(__LP64) || \ - defined(__amd64) || defined(__sparcv9) -# define CURL_SIZEOF_LONG 8 -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SIZEOF_CURL_OFF_T 8 -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# endif -# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t -# define CURL_SIZEOF_CURL_SOCKLEN_T 4 -# define CURL_PULL_SYS_TYPES_H 1 -# define CURL_PULL_SYS_SOCKET_H 1 - -/* ===================================== */ -/* KEEP MSVC THE PENULTIMATE ENTRY */ -/* ===================================== */ - -#elif defined(_MSC_VER) -# if (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64) -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T __int64 -# define CURL_FORMAT_CURL_OFF_T "I64d" -# define CURL_FORMAT_CURL_OFF_TU "I64u" -# define CURL_SIZEOF_CURL_OFF_T 8 -# define CURL_SUFFIX_CURL_OFF_T i64 -# define CURL_SUFFIX_CURL_OFF_TU ui64 -# else -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SIZEOF_CURL_OFF_T 4 -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# endif -# define CURL_TYPEOF_CURL_SOCKLEN_T int -# define CURL_SIZEOF_CURL_SOCKLEN_T 4 - -/* ===================================== */ -/* KEEP GENERIC GCC THE LAST ENTRY */ -/* ===================================== */ - -#elif defined(__GNUC__) -# if !defined(__LP64__) && (defined(__ILP32__) || \ - defined(__i386__) || defined(__powerpc__) || defined(__arm__) || \ - defined(__sparc__) || defined(__mips__) || defined(__sh__) || \ - defined(__XTENSA__) || (defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 4)) -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SIZEOF_CURL_OFF_T 8 -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# elif defined(__LP64__) || \ - defined(__x86_64__) || defined(__ppc64__) || defined(__sparc64__) || \ - (defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 8) -# define CURL_SIZEOF_LONG 8 -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SIZEOF_CURL_OFF_T 8 -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# endif -# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t -# define CURL_SIZEOF_CURL_SOCKLEN_T 4 -# define CURL_PULL_SYS_TYPES_H 1 -# define CURL_PULL_SYS_SOCKET_H 1 - -#else -/* generic "safe guess" on old 32 bit style */ -# define CURL_SIZEOF_LONG 4 -# define CURL_SIZEOF_CURL_SOCKLEN_T 4 -# define CURL_SIZEOF_CURL_OFF_T 4 -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# define CURL_TYPEOF_CURL_SOCKLEN_T int -#endif - -/* CURL_PULL_WS2TCPIP_H is defined above when inclusion of header file */ -/* ws2tcpip.h is required here to properly make type definitions below. */ -#ifdef CURL_PULL_WS2TCPIP_H -# include -# include -# include -#endif - -/* CURL_PULL_SYS_TYPES_H is defined above when inclusion of header file */ -/* sys/types.h is required here to properly make type definitions below. */ -#ifdef CURL_PULL_SYS_TYPES_H -# include -#endif - -/* CURL_PULL_SYS_SOCKET_H is defined above when inclusion of header file */ -/* sys/socket.h is required here to properly make type definitions below. */ -#ifdef CURL_PULL_SYS_SOCKET_H -# include -#endif - -/* Data type definition of curl_socklen_t. */ -#ifdef CURL_TYPEOF_CURL_SOCKLEN_T - typedef CURL_TYPEOF_CURL_SOCKLEN_T curl_socklen_t; -#endif - -/* Data type definition of curl_off_t. */ - -#ifdef CURL_TYPEOF_CURL_OFF_T - typedef CURL_TYPEOF_CURL_OFF_T curl_off_t; -#endif - -/* - * CURL_ISOCPP and CURL_OFF_T_C definitions are done here in order to allow - * these to be visible and exported by the external libcurl interface API, - * while also making them visible to the library internals, simply including - * curl_setup.h, without actually needing to include curl.h internally. - * If some day this section would grow big enough, all this should be moved - * to its own header file. - */ - -/* - * Figure out if we can use the ## preprocessor operator, which is supported - * by ISO/ANSI C and C++. Some compilers support it without setting __STDC__ - * or __cplusplus so we need to carefully check for them too. - */ - -#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) || \ - defined(__HP_aCC) || defined(__BORLANDC__) || defined(__LCC__) || \ - defined(__POCC__) || defined(__SALFORDC__) || defined(__HIGHC__) || \ - defined(__ILEC400__) - /* This compiler is believed to have an ISO compatible preprocessor */ -#define CURL_ISOCPP -#else - /* This compiler is believed NOT to have an ISO compatible preprocessor */ -#undef CURL_ISOCPP -#endif - -/* - * Macros for minimum-width signed and unsigned curl_off_t integer constants. - */ - -#if defined(__BORLANDC__) && (__BORLANDC__ == 0x0551) -# define __CURL_OFF_T_C_HLPR2(x) x -# define __CURL_OFF_T_C_HLPR1(x) __CURL_OFF_T_C_HLPR2(x) -# define CURL_OFF_T_C(Val) __CURL_OFF_T_C_HLPR1(Val) ## \ - __CURL_OFF_T_C_HLPR1(CURL_SUFFIX_CURL_OFF_T) -# define CURL_OFF_TU_C(Val) __CURL_OFF_T_C_HLPR1(Val) ## \ - __CURL_OFF_T_C_HLPR1(CURL_SUFFIX_CURL_OFF_TU) -#else -# ifdef CURL_ISOCPP -# define __CURL_OFF_T_C_HLPR2(Val,Suffix) Val ## Suffix -# else -# define __CURL_OFF_T_C_HLPR2(Val,Suffix) Val/**/Suffix -# endif -# define __CURL_OFF_T_C_HLPR1(Val,Suffix) __CURL_OFF_T_C_HLPR2(Val,Suffix) -# define CURL_OFF_T_C(Val) __CURL_OFF_T_C_HLPR1(Val,CURL_SUFFIX_CURL_OFF_T) -# define CURL_OFF_TU_C(Val) __CURL_OFF_T_C_HLPR1(Val,CURL_SUFFIX_CURL_OFF_TU) -#endif - -#endif /* __CURL_SYSTEM_H */ diff --git a/Framework/ext/curl/typecheck-gcc.h b/Framework/ext/curl/typecheck-gcc.h deleted file mode 100644 index 7454824..0000000 --- a/Framework/ext/curl/typecheck-gcc.h +++ /dev/null @@ -1,677 +0,0 @@ -#ifndef __CURL_TYPECHECK_GCC_H -#define __CURL_TYPECHECK_GCC_H -/*************************************************************************** - * _ _ ____ _ - * Project ___| | | | _ \| | - * / __| | | | |_) | | - * | (__| |_| | _ <| |___ - * \___|\___/|_| \_\_____| - * - * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. - * - * This software is licensed as described in the file COPYING, which - * you should have received as part of this distribution. The terms - * are also available at https://curl.haxx.se/docs/copyright.html. - * - * You may opt to use, copy, modify, merge, publish, distribute and/or sell - * copies of the Software, and permit persons to whom the Software is - * furnished to do so, under the terms of the COPYING file. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ***************************************************************************/ - -/* wraps curl_easy_setopt() with typechecking */ - -/* To add a new kind of warning, add an - * if(_curl_is_sometype_option(_curl_opt)) - * if(!_curl_is_sometype(value)) - * _curl_easy_setopt_err_sometype(); - * block and define _curl_is_sometype_option, _curl_is_sometype and - * _curl_easy_setopt_err_sometype below - * - * NOTE: We use two nested 'if' statements here instead of the && operator, in - * order to work around gcc bug #32061. It affects only gcc 4.3.x/4.4.x - * when compiling with -Wlogical-op. - * - * To add an option that uses the same type as an existing option, you'll just - * need to extend the appropriate _curl_*_option macro - */ -#define curl_easy_setopt(handle, option, value) \ -__extension__ ({ \ - __typeof__(option) _curl_opt = option; \ - if(__builtin_constant_p(_curl_opt)) { \ - if(_curl_is_long_option(_curl_opt)) \ - if(!_curl_is_long(value)) \ - _curl_easy_setopt_err_long(); \ - if(_curl_is_off_t_option(_curl_opt)) \ - if(!_curl_is_off_t(value)) \ - _curl_easy_setopt_err_curl_off_t(); \ - if(_curl_is_string_option(_curl_opt)) \ - if(!_curl_is_string(value)) \ - _curl_easy_setopt_err_string(); \ - if(_curl_is_write_cb_option(_curl_opt)) \ - if(!_curl_is_write_cb(value)) \ - _curl_easy_setopt_err_write_callback(); \ - if((_curl_opt) == CURLOPT_READFUNCTION) \ - if(!_curl_is_read_cb(value)) \ - _curl_easy_setopt_err_read_cb(); \ - if((_curl_opt) == CURLOPT_IOCTLFUNCTION) \ - if(!_curl_is_ioctl_cb(value)) \ - _curl_easy_setopt_err_ioctl_cb(); \ - if((_curl_opt) == CURLOPT_SOCKOPTFUNCTION) \ - if(!_curl_is_sockopt_cb(value)) \ - _curl_easy_setopt_err_sockopt_cb(); \ - if((_curl_opt) == CURLOPT_OPENSOCKETFUNCTION) \ - if(!_curl_is_opensocket_cb(value)) \ - _curl_easy_setopt_err_opensocket_cb(); \ - if((_curl_opt) == CURLOPT_PROGRESSFUNCTION) \ - if(!_curl_is_progress_cb(value)) \ - _curl_easy_setopt_err_progress_cb(); \ - if((_curl_opt) == CURLOPT_DEBUGFUNCTION) \ - if(!_curl_is_debug_cb(value)) \ - _curl_easy_setopt_err_debug_cb(); \ - if((_curl_opt) == CURLOPT_SSL_CTX_FUNCTION) \ - if(!_curl_is_ssl_ctx_cb(value)) \ - _curl_easy_setopt_err_ssl_ctx_cb(); \ - if(_curl_is_conv_cb_option(_curl_opt)) \ - if(!_curl_is_conv_cb(value)) \ - _curl_easy_setopt_err_conv_cb(); \ - if((_curl_opt) == CURLOPT_SEEKFUNCTION) \ - if(!_curl_is_seek_cb(value)) \ - _curl_easy_setopt_err_seek_cb(); \ - if(_curl_is_cb_data_option(_curl_opt)) \ - if(!_curl_is_cb_data(value)) \ - _curl_easy_setopt_err_cb_data(); \ - if((_curl_opt) == CURLOPT_ERRORBUFFER) \ - if(!_curl_is_error_buffer(value)) \ - _curl_easy_setopt_err_error_buffer(); \ - if((_curl_opt) == CURLOPT_STDERR) \ - if(!_curl_is_FILE(value)) \ - _curl_easy_setopt_err_FILE(); \ - if(_curl_is_postfields_option(_curl_opt)) \ - if(!_curl_is_postfields(value)) \ - _curl_easy_setopt_err_postfields(); \ - if((_curl_opt) == CURLOPT_HTTPPOST) \ - if(!_curl_is_arr((value), struct curl_httppost)) \ - _curl_easy_setopt_err_curl_httpost(); \ - if(_curl_is_slist_option(_curl_opt)) \ - if(!_curl_is_arr((value), struct curl_slist)) \ - _curl_easy_setopt_err_curl_slist(); \ - if((_curl_opt) == CURLOPT_SHARE) \ - if(!_curl_is_ptr((value), CURLSH)) \ - _curl_easy_setopt_err_CURLSH(); \ - } \ - curl_easy_setopt(handle, _curl_opt, value); \ -}) - -/* wraps curl_easy_getinfo() with typechecking */ -/* FIXME: don't allow const pointers */ -#define curl_easy_getinfo(handle, info, arg) \ -__extension__ ({ \ - __typeof__(info) _curl_info = info; \ - if(__builtin_constant_p(_curl_info)) { \ - if(_curl_is_string_info(_curl_info)) \ - if(!_curl_is_arr((arg), char *)) \ - _curl_easy_getinfo_err_string(); \ - if(_curl_is_long_info(_curl_info)) \ - if(!_curl_is_arr((arg), long)) \ - _curl_easy_getinfo_err_long(); \ - if(_curl_is_double_info(_curl_info)) \ - if(!_curl_is_arr((arg), double)) \ - _curl_easy_getinfo_err_double(); \ - if(_curl_is_slist_info(_curl_info)) \ - if(!_curl_is_arr((arg), struct curl_slist *)) \ - _curl_easy_getinfo_err_curl_slist(); \ - if(_curl_is_tlssessioninfo_info(_curl_info)) \ - if(!_curl_is_arr((arg), struct curl_tlssessioninfo *)) \ - _curl_easy_getinfo_err_curl_tlssesssioninfo(); \ - if(_curl_is_certinfo_info(_curl_info)) \ - if(!_curl_is_arr((arg), struct curl_certinfo *)) \ - _curl_easy_getinfo_err_curl_certinfo(); \ - if(_curl_is_socket_info(_curl_info)) \ - if(!_curl_is_arr((arg), curl_socket_t)) \ - _curl_easy_getinfo_err_curl_socket(); \ - if(_curl_is_off_t_info(_curl_info)) \ - if(!_curl_is_arr((arg), curl_off_t)) \ - _curl_easy_getinfo_err_curl_off_t(); \ - } \ - curl_easy_getinfo(handle, _curl_info, arg); \ -}) - -/* TODO: typechecking for curl_share_setopt() and curl_multi_setopt(), - * for now just make sure that the functions are called with three - * arguments - */ -#define curl_share_setopt(share,opt,param) curl_share_setopt(share,opt,param) -#define curl_multi_setopt(handle,opt,param) curl_multi_setopt(handle,opt,param) - - -/* the actual warnings, triggered by calling the _curl_easy_setopt_err* - * functions */ - -/* To define a new warning, use _CURL_WARNING(identifier, "message") */ -#define _CURL_WARNING(id, message) \ - static void __attribute__((__warning__(message))) \ - __attribute__((__unused__)) __attribute__((__noinline__)) \ - id(void) { __asm__(""); } - -_CURL_WARNING(_curl_easy_setopt_err_long, - "curl_easy_setopt expects a long argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_curl_off_t, - "curl_easy_setopt expects a curl_off_t argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_string, - "curl_easy_setopt expects a " - "string ('char *' or char[]) argument for this option" - ) -_CURL_WARNING(_curl_easy_setopt_err_write_callback, - "curl_easy_setopt expects a curl_write_callback argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_read_cb, - "curl_easy_setopt expects a curl_read_callback argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_ioctl_cb, - "curl_easy_setopt expects a curl_ioctl_callback argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_sockopt_cb, - "curl_easy_setopt expects a curl_sockopt_callback argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_opensocket_cb, - "curl_easy_setopt expects a " - "curl_opensocket_callback argument for this option" - ) -_CURL_WARNING(_curl_easy_setopt_err_progress_cb, - "curl_easy_setopt expects a curl_progress_callback argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_debug_cb, - "curl_easy_setopt expects a curl_debug_callback argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_ssl_ctx_cb, - "curl_easy_setopt expects a curl_ssl_ctx_callback argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_conv_cb, - "curl_easy_setopt expects a curl_conv_callback argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_seek_cb, - "curl_easy_setopt expects a curl_seek_callback argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_cb_data, - "curl_easy_setopt expects a " - "private data pointer as argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_error_buffer, - "curl_easy_setopt expects a " - "char buffer of CURL_ERROR_SIZE as argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_FILE, - "curl_easy_setopt expects a 'FILE *' argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_postfields, - "curl_easy_setopt expects a 'void *' or 'char *' argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_curl_httpost, - "curl_easy_setopt expects a 'struct curl_httppost *' " - "argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_curl_slist, - "curl_easy_setopt expects a 'struct curl_slist *' argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_CURLSH, - "curl_easy_setopt expects a CURLSH* argument for this option") - -_CURL_WARNING(_curl_easy_getinfo_err_string, - "curl_easy_getinfo expects a pointer to 'char *' for this info") -_CURL_WARNING(_curl_easy_getinfo_err_long, - "curl_easy_getinfo expects a pointer to long for this info") -_CURL_WARNING(_curl_easy_getinfo_err_double, - "curl_easy_getinfo expects a pointer to double for this info") -_CURL_WARNING(_curl_easy_getinfo_err_curl_slist, - "curl_easy_getinfo expects a pointer to 'struct curl_slist *' for this info") -_CURL_WARNING(_curl_easy_getinfo_err_curl_tlssesssioninfo, - "curl_easy_getinfo expects a pointer to " - "'struct curl_tlssessioninfo *' for this info") -_CURL_WARNING(_curl_easy_getinfo_err_curl_certinfo, - "curl_easy_getinfo expects a pointer to " - "'struct curl_certinfo *' for this info") -_CURL_WARNING(_curl_easy_getinfo_err_curl_socket, - "curl_easy_getinfo expects a pointer to curl_socket_t for this info") -_CURL_WARNING(_curl_easy_getinfo_err_curl_off_t, - "curl_easy_getinfo expects a pointer to curl_off_t for this info") - -/* groups of curl_easy_setops options that take the same type of argument */ - -/* To add a new option to one of the groups, just add - * (option) == CURLOPT_SOMETHING - * to the or-expression. If the option takes a long or curl_off_t, you don't - * have to do anything - */ - -/* evaluates to true if option takes a long argument */ -#define _curl_is_long_option(option) \ - (0 < (option) && (option) < CURLOPTTYPE_OBJECTPOINT) - -#define _curl_is_off_t_option(option) \ - ((option) > CURLOPTTYPE_OFF_T) - -/* evaluates to true if option takes a char* argument */ -#define _curl_is_string_option(option) \ - ((option) == CURLOPT_ABSTRACT_UNIX_SOCKET || \ - (option) == CURLOPT_ACCEPT_ENCODING || \ - (option) == CURLOPT_CAINFO || \ - (option) == CURLOPT_CAPATH || \ - (option) == CURLOPT_COOKIE || \ - (option) == CURLOPT_COOKIEFILE || \ - (option) == CURLOPT_COOKIEJAR || \ - (option) == CURLOPT_COOKIELIST || \ - (option) == CURLOPT_CRLFILE || \ - (option) == CURLOPT_CUSTOMREQUEST || \ - (option) == CURLOPT_DEFAULT_PROTOCOL || \ - (option) == CURLOPT_DNS_INTERFACE || \ - (option) == CURLOPT_DNS_LOCAL_IP4 || \ - (option) == CURLOPT_DNS_LOCAL_IP6 || \ - (option) == CURLOPT_DNS_SERVERS || \ - (option) == CURLOPT_EGDSOCKET || \ - (option) == CURLOPT_FTPPORT || \ - (option) == CURLOPT_FTP_ACCOUNT || \ - (option) == CURLOPT_FTP_ALTERNATIVE_TO_USER || \ - (option) == CURLOPT_INTERFACE || \ - (option) == CURLOPT_ISSUERCERT || \ - (option) == CURLOPT_KEYPASSWD || \ - (option) == CURLOPT_KRBLEVEL || \ - (option) == CURLOPT_LOGIN_OPTIONS || \ - (option) == CURLOPT_MAIL_AUTH || \ - (option) == CURLOPT_MAIL_FROM || \ - (option) == CURLOPT_NETRC_FILE || \ - (option) == CURLOPT_NOPROXY || \ - (option) == CURLOPT_PASSWORD || \ - (option) == CURLOPT_PINNEDPUBLICKEY || \ - (option) == CURLOPT_PRE_PROXY || \ - (option) == CURLOPT_PROXY || \ - (option) == CURLOPT_PROXYPASSWORD || \ - (option) == CURLOPT_PROXYUSERNAME || \ - (option) == CURLOPT_PROXYUSERPWD || \ - (option) == CURLOPT_PROXY_CAINFO || \ - (option) == CURLOPT_PROXY_CAPATH || \ - (option) == CURLOPT_PROXY_CRLFILE || \ - (option) == CURLOPT_PROXY_KEYPASSWD || \ - (option) == CURLOPT_PROXY_PINNEDPUBLICKEY || \ - (option) == CURLOPT_PROXY_SERVICE_NAME || \ - (option) == CURLOPT_PROXY_SSLCERT || \ - (option) == CURLOPT_PROXY_SSLCERTTYPE || \ - (option) == CURLOPT_PROXY_SSLKEY || \ - (option) == CURLOPT_PROXY_SSLKEYTYPE || \ - (option) == CURLOPT_PROXY_SSL_CIPHER_LIST || \ - (option) == CURLOPT_PROXY_TLSAUTH_PASSWORD || \ - (option) == CURLOPT_PROXY_TLSAUTH_USERNAME || \ - (option) == CURLOPT_PROXY_TLSAUTH_TYPE || \ - (option) == CURLOPT_RANDOM_FILE || \ - (option) == CURLOPT_RANGE || \ - (option) == CURLOPT_REFERER || \ - (option) == CURLOPT_RTSP_SESSION_ID || \ - (option) == CURLOPT_RTSP_STREAM_URI || \ - (option) == CURLOPT_RTSP_TRANSPORT || \ - (option) == CURLOPT_SERVICE_NAME || \ - (option) == CURLOPT_SOCKS5_GSSAPI_SERVICE || \ - (option) == CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 || \ - (option) == CURLOPT_SSH_KNOWNHOSTS || \ - (option) == CURLOPT_SSH_PRIVATE_KEYFILE || \ - (option) == CURLOPT_SSH_PUBLIC_KEYFILE || \ - (option) == CURLOPT_SSLCERT || \ - (option) == CURLOPT_SSLCERTTYPE || \ - (option) == CURLOPT_SSLENGINE || \ - (option) == CURLOPT_SSLKEY || \ - (option) == CURLOPT_SSLKEYTYPE || \ - (option) == CURLOPT_SSL_CIPHER_LIST || \ - (option) == CURLOPT_TLSAUTH_PASSWORD || \ - (option) == CURLOPT_TLSAUTH_TYPE || \ - (option) == CURLOPT_TLSAUTH_USERNAME || \ - (option) == CURLOPT_UNIX_SOCKET_PATH || \ - (option) == CURLOPT_URL || \ - (option) == CURLOPT_USERAGENT || \ - (option) == CURLOPT_USERNAME || \ - (option) == CURLOPT_USERPWD || \ - (option) == CURLOPT_XOAUTH2_BEARER || \ - 0) - -/* evaluates to true if option takes a curl_write_callback argument */ -#define _curl_is_write_cb_option(option) \ - ((option) == CURLOPT_HEADERFUNCTION || \ - (option) == CURLOPT_WRITEFUNCTION) - -/* evaluates to true if option takes a curl_conv_callback argument */ -#define _curl_is_conv_cb_option(option) \ - ((option) == CURLOPT_CONV_TO_NETWORK_FUNCTION || \ - (option) == CURLOPT_CONV_FROM_NETWORK_FUNCTION || \ - (option) == CURLOPT_CONV_FROM_UTF8_FUNCTION) - -/* evaluates to true if option takes a data argument to pass to a callback */ -#define _curl_is_cb_data_option(option) \ - ((option) == CURLOPT_CHUNK_DATA || \ - (option) == CURLOPT_CLOSESOCKETDATA || \ - (option) == CURLOPT_DEBUGDATA || \ - (option) == CURLOPT_FNMATCH_DATA || \ - (option) == CURLOPT_HEADERDATA || \ - (option) == CURLOPT_INTERLEAVEDATA || \ - (option) == CURLOPT_IOCTLDATA || \ - (option) == CURLOPT_OPENSOCKETDATA || \ - (option) == CURLOPT_PRIVATE || \ - (option) == CURLOPT_PROGRESSDATA || \ - (option) == CURLOPT_READDATA || \ - (option) == CURLOPT_SEEKDATA || \ - (option) == CURLOPT_SOCKOPTDATA || \ - (option) == CURLOPT_SSH_KEYDATA || \ - (option) == CURLOPT_SSL_CTX_DATA || \ - (option) == CURLOPT_WRITEDATA || \ - 0) - -/* evaluates to true if option takes a POST data argument (void* or char*) */ -#define _curl_is_postfields_option(option) \ - ((option) == CURLOPT_POSTFIELDS || \ - (option) == CURLOPT_COPYPOSTFIELDS || \ - 0) - -/* evaluates to true if option takes a struct curl_slist * argument */ -#define _curl_is_slist_option(option) \ - ((option) == CURLOPT_HTTP200ALIASES || \ - (option) == CURLOPT_HTTPHEADER || \ - (option) == CURLOPT_MAIL_RCPT || \ - (option) == CURLOPT_POSTQUOTE || \ - (option) == CURLOPT_PREQUOTE || \ - (option) == CURLOPT_PROXYHEADER || \ - (option) == CURLOPT_QUOTE || \ - (option) == CURLOPT_RESOLVE || \ - (option) == CURLOPT_TELNETOPTIONS || \ - 0) - -/* groups of curl_easy_getinfo infos that take the same type of argument */ - -/* evaluates to true if info expects a pointer to char * argument */ -#define _curl_is_string_info(info) \ - (CURLINFO_STRING < (info) && (info) < CURLINFO_LONG) - -/* evaluates to true if info expects a pointer to long argument */ -#define _curl_is_long_info(info) \ - (CURLINFO_LONG < (info) && (info) < CURLINFO_DOUBLE) - -/* evaluates to true if info expects a pointer to double argument */ -#define _curl_is_double_info(info) \ - (CURLINFO_DOUBLE < (info) && (info) < CURLINFO_SLIST) - -/* true if info expects a pointer to struct curl_slist * argument */ -#define _curl_is_slist_info(info) \ - (((info) == CURLINFO_SSL_ENGINES) || ((info) == CURLINFO_COOKIELIST)) - -/* true if info expects a pointer to struct curl_tlssessioninfo * argument */ -#define _curl_is_tlssessioninfo_info(info) \ - (((info) == CURLINFO_TLS_SSL_PTR) || ((info) == CURLINFO_TLS_SESSION)) - -/* true if info expects a pointer to struct curl_certinfo * argument */ -#define _curl_is_certinfo_info(info) ((info) == CURLINFO_CERTINFO) - -/* true if info expects a pointer to struct curl_socket_t argument */ -#define _curl_is_socket_info(info) \ - (CURLINFO_SOCKET < (info) && (info) < CURLINFO_OFF_T) - -/* true if info expects a pointer to curl_off_t argument */ -#define _curl_is_off_t_info(info) \ - (CURLINFO_OFF_T < (info)) - - -/* typecheck helpers -- check whether given expression has requested type*/ - -/* For pointers, you can use the _curl_is_ptr/_curl_is_arr macros, - * otherwise define a new macro. Search for __builtin_types_compatible_p - * in the GCC manual. - * NOTE: these macros MUST NOT EVALUATE their arguments! The argument is - * the actual expression passed to the curl_easy_setopt macro. This - * means that you can only apply the sizeof and __typeof__ operators, no - * == or whatsoever. - */ - -/* XXX: should evaluate to true iff expr is a pointer */ -#define _curl_is_any_ptr(expr) \ - (sizeof(expr) == sizeof(void *)) - -/* evaluates to true if expr is NULL */ -/* XXX: must not evaluate expr, so this check is not accurate */ -#define _curl_is_NULL(expr) \ - (__builtin_types_compatible_p(__typeof__(expr), __typeof__(NULL))) - -/* evaluates to true if expr is type*, const type* or NULL */ -#define _curl_is_ptr(expr, type) \ - (_curl_is_NULL(expr) || \ - __builtin_types_compatible_p(__typeof__(expr), type *) || \ - __builtin_types_compatible_p(__typeof__(expr), const type *)) - -/* evaluates to true if expr is one of type[], type*, NULL or const type* */ -#define _curl_is_arr(expr, type) \ - (_curl_is_ptr((expr), type) || \ - __builtin_types_compatible_p(__typeof__(expr), type [])) - -/* evaluates to true if expr is a string */ -#define _curl_is_string(expr) \ - (_curl_is_arr((expr), char) || \ - _curl_is_arr((expr), signed char) || \ - _curl_is_arr((expr), unsigned char)) - -/* evaluates to true if expr is a long (no matter the signedness) - * XXX: for now, int is also accepted (and therefore short and char, which - * are promoted to int when passed to a variadic function) */ -#define _curl_is_long(expr) \ - (__builtin_types_compatible_p(__typeof__(expr), long) || \ - __builtin_types_compatible_p(__typeof__(expr), signed long) || \ - __builtin_types_compatible_p(__typeof__(expr), unsigned long) || \ - __builtin_types_compatible_p(__typeof__(expr), int) || \ - __builtin_types_compatible_p(__typeof__(expr), signed int) || \ - __builtin_types_compatible_p(__typeof__(expr), unsigned int) || \ - __builtin_types_compatible_p(__typeof__(expr), short) || \ - __builtin_types_compatible_p(__typeof__(expr), signed short) || \ - __builtin_types_compatible_p(__typeof__(expr), unsigned short) || \ - __builtin_types_compatible_p(__typeof__(expr), char) || \ - __builtin_types_compatible_p(__typeof__(expr), signed char) || \ - __builtin_types_compatible_p(__typeof__(expr), unsigned char)) - -/* evaluates to true if expr is of type curl_off_t */ -#define _curl_is_off_t(expr) \ - (__builtin_types_compatible_p(__typeof__(expr), curl_off_t)) - -/* evaluates to true if expr is abuffer suitable for CURLOPT_ERRORBUFFER */ -/* XXX: also check size of an char[] array? */ -#define _curl_is_error_buffer(expr) \ - (_curl_is_NULL(expr) || \ - __builtin_types_compatible_p(__typeof__(expr), char *) || \ - __builtin_types_compatible_p(__typeof__(expr), char[])) - -/* evaluates to true if expr is of type (const) void* or (const) FILE* */ -#if 0 -#define _curl_is_cb_data(expr) \ - (_curl_is_ptr((expr), void) || \ - _curl_is_ptr((expr), FILE)) -#else /* be less strict */ -#define _curl_is_cb_data(expr) \ - _curl_is_any_ptr(expr) -#endif - -/* evaluates to true if expr is of type FILE* */ -#define _curl_is_FILE(expr) \ - (_curl_is_NULL(expr) || \ - (__builtin_types_compatible_p(__typeof__(expr), FILE *))) - -/* evaluates to true if expr can be passed as POST data (void* or char*) */ -#define _curl_is_postfields(expr) \ - (_curl_is_ptr((expr), void) || \ - _curl_is_arr((expr), char)) - -/* FIXME: the whole callback checking is messy... - * The idea is to tolerate char vs. void and const vs. not const - * pointers in arguments at least - */ -/* helper: __builtin_types_compatible_p distinguishes between functions and - * function pointers, hide it */ -#define _curl_callback_compatible(func, type) \ - (__builtin_types_compatible_p(__typeof__(func), type) || \ - __builtin_types_compatible_p(__typeof__(func) *, type)) - -/* evaluates to true if expr is of type curl_read_callback or "similar" */ -#define _curl_is_read_cb(expr) \ - (_curl_is_NULL(expr) || \ - _curl_callback_compatible((expr), __typeof__(fread) *) || \ - _curl_callback_compatible((expr), curl_read_callback) || \ - _curl_callback_compatible((expr), _curl_read_callback1) || \ - _curl_callback_compatible((expr), _curl_read_callback2) || \ - _curl_callback_compatible((expr), _curl_read_callback3) || \ - _curl_callback_compatible((expr), _curl_read_callback4) || \ - _curl_callback_compatible((expr), _curl_read_callback5) || \ - _curl_callback_compatible((expr), _curl_read_callback6)) -typedef size_t (*_curl_read_callback1)(char *, size_t, size_t, void *); -typedef size_t (*_curl_read_callback2)(char *, size_t, size_t, const void *); -typedef size_t (*_curl_read_callback3)(char *, size_t, size_t, FILE *); -typedef size_t (*_curl_read_callback4)(void *, size_t, size_t, void *); -typedef size_t (*_curl_read_callback5)(void *, size_t, size_t, const void *); -typedef size_t (*_curl_read_callback6)(void *, size_t, size_t, FILE *); - -/* evaluates to true if expr is of type curl_write_callback or "similar" */ -#define _curl_is_write_cb(expr) \ - (_curl_is_read_cb(expr) || \ - _curl_callback_compatible((expr), __typeof__(fwrite) *) || \ - _curl_callback_compatible((expr), curl_write_callback) || \ - _curl_callback_compatible((expr), _curl_write_callback1) || \ - _curl_callback_compatible((expr), _curl_write_callback2) || \ - _curl_callback_compatible((expr), _curl_write_callback3) || \ - _curl_callback_compatible((expr), _curl_write_callback4) || \ - _curl_callback_compatible((expr), _curl_write_callback5) || \ - _curl_callback_compatible((expr), _curl_write_callback6)) -typedef size_t (*_curl_write_callback1)(const char *, size_t, size_t, void *); -typedef size_t (*_curl_write_callback2)(const char *, size_t, size_t, - const void *); -typedef size_t (*_curl_write_callback3)(const char *, size_t, size_t, FILE *); -typedef size_t (*_curl_write_callback4)(const void *, size_t, size_t, void *); -typedef size_t (*_curl_write_callback5)(const void *, size_t, size_t, - const void *); -typedef size_t (*_curl_write_callback6)(const void *, size_t, size_t, FILE *); - -/* evaluates to true if expr is of type curl_ioctl_callback or "similar" */ -#define _curl_is_ioctl_cb(expr) \ - (_curl_is_NULL(expr) || \ - _curl_callback_compatible((expr), curl_ioctl_callback) || \ - _curl_callback_compatible((expr), _curl_ioctl_callback1) || \ - _curl_callback_compatible((expr), _curl_ioctl_callback2) || \ - _curl_callback_compatible((expr), _curl_ioctl_callback3) || \ - _curl_callback_compatible((expr), _curl_ioctl_callback4)) -typedef curlioerr (*_curl_ioctl_callback1)(CURL *, int, void *); -typedef curlioerr (*_curl_ioctl_callback2)(CURL *, int, const void *); -typedef curlioerr (*_curl_ioctl_callback3)(CURL *, curliocmd, void *); -typedef curlioerr (*_curl_ioctl_callback4)(CURL *, curliocmd, const void *); - -/* evaluates to true if expr is of type curl_sockopt_callback or "similar" */ -#define _curl_is_sockopt_cb(expr) \ - (_curl_is_NULL(expr) || \ - _curl_callback_compatible((expr), curl_sockopt_callback) || \ - _curl_callback_compatible((expr), _curl_sockopt_callback1) || \ - _curl_callback_compatible((expr), _curl_sockopt_callback2)) -typedef int (*_curl_sockopt_callback1)(void *, curl_socket_t, curlsocktype); -typedef int (*_curl_sockopt_callback2)(const void *, curl_socket_t, - curlsocktype); - -/* evaluates to true if expr is of type curl_opensocket_callback or - "similar" */ -#define _curl_is_opensocket_cb(expr) \ - (_curl_is_NULL(expr) || \ - _curl_callback_compatible((expr), curl_opensocket_callback) || \ - _curl_callback_compatible((expr), _curl_opensocket_callback1) || \ - _curl_callback_compatible((expr), _curl_opensocket_callback2) || \ - _curl_callback_compatible((expr), _curl_opensocket_callback3) || \ - _curl_callback_compatible((expr), _curl_opensocket_callback4)) -typedef curl_socket_t (*_curl_opensocket_callback1) - (void *, curlsocktype, struct curl_sockaddr *); -typedef curl_socket_t (*_curl_opensocket_callback2) - (void *, curlsocktype, const struct curl_sockaddr *); -typedef curl_socket_t (*_curl_opensocket_callback3) - (const void *, curlsocktype, struct curl_sockaddr *); -typedef curl_socket_t (*_curl_opensocket_callback4) - (const void *, curlsocktype, const struct curl_sockaddr *); - -/* evaluates to true if expr is of type curl_progress_callback or "similar" */ -#define _curl_is_progress_cb(expr) \ - (_curl_is_NULL(expr) || \ - _curl_callback_compatible((expr), curl_progress_callback) || \ - _curl_callback_compatible((expr), _curl_progress_callback1) || \ - _curl_callback_compatible((expr), _curl_progress_callback2)) -typedef int (*_curl_progress_callback1)(void *, - double, double, double, double); -typedef int (*_curl_progress_callback2)(const void *, - double, double, double, double); - -/* evaluates to true if expr is of type curl_debug_callback or "similar" */ -#define _curl_is_debug_cb(expr) \ - (_curl_is_NULL(expr) || \ - _curl_callback_compatible((expr), curl_debug_callback) || \ - _curl_callback_compatible((expr), _curl_debug_callback1) || \ - _curl_callback_compatible((expr), _curl_debug_callback2) || \ - _curl_callback_compatible((expr), _curl_debug_callback3) || \ - _curl_callback_compatible((expr), _curl_debug_callback4) || \ - _curl_callback_compatible((expr), _curl_debug_callback5) || \ - _curl_callback_compatible((expr), _curl_debug_callback6) || \ - _curl_callback_compatible((expr), _curl_debug_callback7) || \ - _curl_callback_compatible((expr), _curl_debug_callback8)) -typedef int (*_curl_debug_callback1) (CURL *, - curl_infotype, char *, size_t, void *); -typedef int (*_curl_debug_callback2) (CURL *, - curl_infotype, char *, size_t, const void *); -typedef int (*_curl_debug_callback3) (CURL *, - curl_infotype, const char *, size_t, void *); -typedef int (*_curl_debug_callback4) (CURL *, - curl_infotype, const char *, size_t, const void *); -typedef int (*_curl_debug_callback5) (CURL *, - curl_infotype, unsigned char *, size_t, void *); -typedef int (*_curl_debug_callback6) (CURL *, - curl_infotype, unsigned char *, size_t, const void *); -typedef int (*_curl_debug_callback7) (CURL *, - curl_infotype, const unsigned char *, size_t, void *); -typedef int (*_curl_debug_callback8) (CURL *, - curl_infotype, const unsigned char *, size_t, const void *); - -/* evaluates to true if expr is of type curl_ssl_ctx_callback or "similar" */ -/* this is getting even messier... */ -#define _curl_is_ssl_ctx_cb(expr) \ - (_curl_is_NULL(expr) || \ - _curl_callback_compatible((expr), curl_ssl_ctx_callback) || \ - _curl_callback_compatible((expr), _curl_ssl_ctx_callback1) || \ - _curl_callback_compatible((expr), _curl_ssl_ctx_callback2) || \ - _curl_callback_compatible((expr), _curl_ssl_ctx_callback3) || \ - _curl_callback_compatible((expr), _curl_ssl_ctx_callback4) || \ - _curl_callback_compatible((expr), _curl_ssl_ctx_callback5) || \ - _curl_callback_compatible((expr), _curl_ssl_ctx_callback6) || \ - _curl_callback_compatible((expr), _curl_ssl_ctx_callback7) || \ - _curl_callback_compatible((expr), _curl_ssl_ctx_callback8)) -typedef CURLcode (*_curl_ssl_ctx_callback1)(CURL *, void *, void *); -typedef CURLcode (*_curl_ssl_ctx_callback2)(CURL *, void *, const void *); -typedef CURLcode (*_curl_ssl_ctx_callback3)(CURL *, const void *, void *); -typedef CURLcode (*_curl_ssl_ctx_callback4)(CURL *, const void *, - const void *); -#ifdef HEADER_SSL_H -/* hack: if we included OpenSSL's ssl.h, we know about SSL_CTX - * this will of course break if we're included before OpenSSL headers... - */ -typedef CURLcode (*_curl_ssl_ctx_callback5)(CURL *, SSL_CTX, void *); -typedef CURLcode (*_curl_ssl_ctx_callback6)(CURL *, SSL_CTX, const void *); -typedef CURLcode (*_curl_ssl_ctx_callback7)(CURL *, const SSL_CTX, void *); -typedef CURLcode (*_curl_ssl_ctx_callback8)(CURL *, const SSL_CTX, - const void *); -#else -typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback5; -typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback6; -typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback7; -typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback8; -#endif - -/* evaluates to true if expr is of type curl_conv_callback or "similar" */ -#define _curl_is_conv_cb(expr) \ - (_curl_is_NULL(expr) || \ - _curl_callback_compatible((expr), curl_conv_callback) || \ - _curl_callback_compatible((expr), _curl_conv_callback1) || \ - _curl_callback_compatible((expr), _curl_conv_callback2) || \ - _curl_callback_compatible((expr), _curl_conv_callback3) || \ - _curl_callback_compatible((expr), _curl_conv_callback4)) -typedef CURLcode (*_curl_conv_callback1)(char *, size_t length); -typedef CURLcode (*_curl_conv_callback2)(const char *, size_t length); -typedef CURLcode (*_curl_conv_callback3)(void *, size_t length); -typedef CURLcode (*_curl_conv_callback4)(const void *, size_t length); - -/* evaluates to true if expr is of type curl_seek_callback or "similar" */ -#define _curl_is_seek_cb(expr) \ - (_curl_is_NULL(expr) || \ - _curl_callback_compatible((expr), curl_seek_callback) || \ - _curl_callback_compatible((expr), _curl_seek_callback1) || \ - _curl_callback_compatible((expr), _curl_seek_callback2)) -typedef CURLcode (*_curl_seek_callback1)(void *, curl_off_t, int); -typedef CURLcode (*_curl_seek_callback2)(const void *, curl_off_t, int); - - -#endif /* __CURL_TYPECHECK_GCC_H */ diff --git a/Framework/ext/curltools/curltools.cpp b/Framework/ext/curltools/curltools.cpp deleted file mode 100644 index 8f5f381..0000000 --- a/Framework/ext/curltools/curltools.cpp +++ /dev/null @@ -1,42 +0,0 @@ -#include "../../src/headers.h" -#include "curl_tools.h" - -namespace nef{ - - size_t curl_tools::process_download_data( - void *buffer, - size_t size, - size_t nmemb, - void *user_p){ - FILE *ffp = (FILE *)user_p; - size_t return_size = fwrite(buffer, size, nmemb, ffp); - return return_size; - } - - - curl_tools::curl_tools(long fl){ - if( fl==CURL_GLOBAL_ALL|| - fl==CURL_GLOBAL_WIN32|| - fl==CURL_GLOBAL_SSL) - flags=fl; - init(); - } - curl_tools::curl_tools(){ - init(); - } - curl::~curl_tools(){ - clean_up(); - } - bool curl_tools::isOpened(){ - return opened; - } - bool download(string url,string path){ - if(!file_init(*path.data(),"ab+"))return false; - curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION,&process_download_data ); - curl_easy_setopt(handle, CURLOPT_WRITEDATA, fp); - curl_easy_perform(handle); - fclose(fp); - return true; - } - -} \ No newline at end of file diff --git a/Framework/ext/curltools/curltools.h b/Framework/ext/curltools/curltools.h deleted file mode 100644 index dcf7480..0000000 --- a/Framework/ext/curltools/curltools.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef CURLTOOLS_H -#define CURLTOOLS_H -namespace nef{ -class curl_tools{ - private: - long flags=CURL_GLOBAL_ALL; - CURL *handle; - bool opened=false; - void init(){ - curl_global_init(flags); - handle=curl_easy_init(); - if(handle==NULL)opened=false; - else opened=true; - } - void clean_up(){ - curl_easy_cleanup(handle); - curl_global_cleanup(); - } - FILE *fp=NULL; - int file_init(string file,string method){ - if( *method.data()=="r"|| - *method.data()=="w"|| - *method.data()=="rb"|| - *method.data()=="wb"|| - *method.data()=="r+"|| - *method.data()=="rb+"|| - *method.data()=="a+"|| - *method.data()=="rb+"||) - fp=fopen(*file.data(),*method.data()); - else return -1; - if fp==NULL return -1; - return 0; - } - void *upload_buffer=NULL; - void *download_buffer=NULL; - public: - curl_tools(long); - curl_tools(); - ~curl_tools(); - bool isOpened(); - void download(string url,string path); - void download(string url,void *buffer); - void get(string url,vector *key,vector *value); - void post(string url,string data); - static size_t process_download_data(void *buffer, size_t size, size_t nmemb, void *user_p); -}; -} -#endif \ No newline at end of file diff --git a/Framework/ext/libuv/android-ifaddrs.h b/Framework/ext/libuv/android-ifaddrs.h deleted file mode 100644 index 9cd19fe..0000000 --- a/Framework/ext/libuv/android-ifaddrs.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 1995, 1999 - * Berkeley Software Design, Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * THIS SOFTWARE IS PROVIDED BY Berkeley Software Design, Inc. ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL Berkeley Software Design, Inc. BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * BSDI ifaddrs.h,v 2.5 2000/02/23 14:51:59 dab Exp - */ - -#ifndef _IFADDRS_H_ -#define _IFADDRS_H_ - -struct ifaddrs { - struct ifaddrs *ifa_next; - char *ifa_name; - unsigned int ifa_flags; - struct sockaddr *ifa_addr; - struct sockaddr *ifa_netmask; - struct sockaddr *ifa_dstaddr; - void *ifa_data; -}; - -/* - * This may have been defined in . Note that if is - * to be included it must be included before this header file. - */ -#ifndef ifa_broadaddr -#define ifa_broadaddr ifa_dstaddr /* broadcast address interface */ -#endif - -#include - -__BEGIN_DECLS -extern int getifaddrs(struct ifaddrs **ifap); -extern void freeifaddrs(struct ifaddrs *ifa); -__END_DECLS - -#endif diff --git a/Framework/ext/libuv/pthread-barrier.h b/Framework/ext/libuv/pthread-barrier.h deleted file mode 100644 index 43282ff..0000000 --- a/Framework/ext/libuv/pthread-barrier.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -Copyright (c) 2016, Kari Tristan Helgason - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -#ifndef _UV_PTHREAD_BARRIER_ -#define _UV_PTHREAD_BARRIER_ -#include -#include - -#define PTHREAD_BARRIER_SERIAL_THREAD 0x12345 - -typedef struct { - pthread_mutex_t mutex; - pthread_cond_t cond; - unsigned threshold; - unsigned in; - unsigned out; -} pthread_barrier_t; - -int pthread_barrier_init(pthread_barrier_t* barrier, - const void* barrier_attr, - unsigned count); - -int pthread_barrier_wait(pthread_barrier_t* barrier); -int pthread_barrier_destroy(pthread_barrier_t *barrier); - -#endif /* _UV_PTHREAD_BARRIER_ */ diff --git a/Framework/ext/libuv/tree.h b/Framework/ext/libuv/tree.h deleted file mode 100644 index f936416..0000000 --- a/Framework/ext/libuv/tree.h +++ /dev/null @@ -1,768 +0,0 @@ -/*- - * Copyright 2002 Niels Provos - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef UV_TREE_H_ -#define UV_TREE_H_ - -#ifndef UV__UNUSED -# if __GNUC__ -# define UV__UNUSED __attribute__((unused)) -# else -# define UV__UNUSED -# endif -#endif - -/* - * This file defines data structures for different types of trees: - * splay trees and red-black trees. - * - * A splay tree is a self-organizing data structure. Every operation - * on the tree causes a splay to happen. The splay moves the requested - * node to the root of the tree and partly rebalances it. - * - * This has the benefit that request locality causes faster lookups as - * the requested nodes move to the top of the tree. On the other hand, - * every lookup causes memory writes. - * - * The Balance Theorem bounds the total access time for m operations - * and n inserts on an initially empty tree as O((m + n)lg n). The - * amortized cost for a sequence of m accesses to a splay tree is O(lg n); - * - * A red-black tree is a binary search tree with the node color as an - * extra attribute. It fulfills a set of conditions: - * - every search path from the root to a leaf consists of the - * same number of black nodes, - * - each red node (except for the root) has a black parent, - * - each leaf node is black. - * - * Every operation on a red-black tree is bounded as O(lg n). - * The maximum height of a red-black tree is 2lg (n+1). - */ - -#define SPLAY_HEAD(name, type) \ -struct name { \ - struct type *sph_root; /* root of the tree */ \ -} - -#define SPLAY_INITIALIZER(root) \ - { NULL } - -#define SPLAY_INIT(root) do { \ - (root)->sph_root = NULL; \ -} while (/*CONSTCOND*/ 0) - -#define SPLAY_ENTRY(type) \ -struct { \ - struct type *spe_left; /* left element */ \ - struct type *spe_right; /* right element */ \ -} - -#define SPLAY_LEFT(elm, field) (elm)->field.spe_left -#define SPLAY_RIGHT(elm, field) (elm)->field.spe_right -#define SPLAY_ROOT(head) (head)->sph_root -#define SPLAY_EMPTY(head) (SPLAY_ROOT(head) == NULL) - -/* SPLAY_ROTATE_{LEFT,RIGHT} expect that tmp hold SPLAY_{RIGHT,LEFT} */ -#define SPLAY_ROTATE_RIGHT(head, tmp, field) do { \ - SPLAY_LEFT((head)->sph_root, field) = SPLAY_RIGHT(tmp, field); \ - SPLAY_RIGHT(tmp, field) = (head)->sph_root; \ - (head)->sph_root = tmp; \ -} while (/*CONSTCOND*/ 0) - -#define SPLAY_ROTATE_LEFT(head, tmp, field) do { \ - SPLAY_RIGHT((head)->sph_root, field) = SPLAY_LEFT(tmp, field); \ - SPLAY_LEFT(tmp, field) = (head)->sph_root; \ - (head)->sph_root = tmp; \ -} while (/*CONSTCOND*/ 0) - -#define SPLAY_LINKLEFT(head, tmp, field) do { \ - SPLAY_LEFT(tmp, field) = (head)->sph_root; \ - tmp = (head)->sph_root; \ - (head)->sph_root = SPLAY_LEFT((head)->sph_root, field); \ -} while (/*CONSTCOND*/ 0) - -#define SPLAY_LINKRIGHT(head, tmp, field) do { \ - SPLAY_RIGHT(tmp, field) = (head)->sph_root; \ - tmp = (head)->sph_root; \ - (head)->sph_root = SPLAY_RIGHT((head)->sph_root, field); \ -} while (/*CONSTCOND*/ 0) - -#define SPLAY_ASSEMBLE(head, node, left, right, field) do { \ - SPLAY_RIGHT(left, field) = SPLAY_LEFT((head)->sph_root, field); \ - SPLAY_LEFT(right, field) = SPLAY_RIGHT((head)->sph_root, field); \ - SPLAY_LEFT((head)->sph_root, field) = SPLAY_RIGHT(node, field); \ - SPLAY_RIGHT((head)->sph_root, field) = SPLAY_LEFT(node, field); \ -} while (/*CONSTCOND*/ 0) - -/* Generates prototypes and inline functions */ - -#define SPLAY_PROTOTYPE(name, type, field, cmp) \ -void name##_SPLAY(struct name *, struct type *); \ -void name##_SPLAY_MINMAX(struct name *, int); \ -struct type *name##_SPLAY_INSERT(struct name *, struct type *); \ -struct type *name##_SPLAY_REMOVE(struct name *, struct type *); \ - \ -/* Finds the node with the same key as elm */ \ -static __inline struct type * \ -name##_SPLAY_FIND(struct name *head, struct type *elm) \ -{ \ - if (SPLAY_EMPTY(head)) \ - return(NULL); \ - name##_SPLAY(head, elm); \ - if ((cmp)(elm, (head)->sph_root) == 0) \ - return (head->sph_root); \ - return (NULL); \ -} \ - \ -static __inline struct type * \ -name##_SPLAY_NEXT(struct name *head, struct type *elm) \ -{ \ - name##_SPLAY(head, elm); \ - if (SPLAY_RIGHT(elm, field) != NULL) { \ - elm = SPLAY_RIGHT(elm, field); \ - while (SPLAY_LEFT(elm, field) != NULL) { \ - elm = SPLAY_LEFT(elm, field); \ - } \ - } else \ - elm = NULL; \ - return (elm); \ -} \ - \ -static __inline struct type * \ -name##_SPLAY_MIN_MAX(struct name *head, int val) \ -{ \ - name##_SPLAY_MINMAX(head, val); \ - return (SPLAY_ROOT(head)); \ -} - -/* Main splay operation. - * Moves node close to the key of elm to top - */ -#define SPLAY_GENERATE(name, type, field, cmp) \ -struct type * \ -name##_SPLAY_INSERT(struct name *head, struct type *elm) \ -{ \ - if (SPLAY_EMPTY(head)) { \ - SPLAY_LEFT(elm, field) = SPLAY_RIGHT(elm, field) = NULL; \ - } else { \ - int __comp; \ - name##_SPLAY(head, elm); \ - __comp = (cmp)(elm, (head)->sph_root); \ - if(__comp < 0) { \ - SPLAY_LEFT(elm, field) = SPLAY_LEFT((head)->sph_root, field); \ - SPLAY_RIGHT(elm, field) = (head)->sph_root; \ - SPLAY_LEFT((head)->sph_root, field) = NULL; \ - } else if (__comp > 0) { \ - SPLAY_RIGHT(elm, field) = SPLAY_RIGHT((head)->sph_root, field); \ - SPLAY_LEFT(elm, field) = (head)->sph_root; \ - SPLAY_RIGHT((head)->sph_root, field) = NULL; \ - } else \ - return ((head)->sph_root); \ - } \ - (head)->sph_root = (elm); \ - return (NULL); \ -} \ - \ -struct type * \ -name##_SPLAY_REMOVE(struct name *head, struct type *elm) \ -{ \ - struct type *__tmp; \ - if (SPLAY_EMPTY(head)) \ - return (NULL); \ - name##_SPLAY(head, elm); \ - if ((cmp)(elm, (head)->sph_root) == 0) { \ - if (SPLAY_LEFT((head)->sph_root, field) == NULL) { \ - (head)->sph_root = SPLAY_RIGHT((head)->sph_root, field); \ - } else { \ - __tmp = SPLAY_RIGHT((head)->sph_root, field); \ - (head)->sph_root = SPLAY_LEFT((head)->sph_root, field); \ - name##_SPLAY(head, elm); \ - SPLAY_RIGHT((head)->sph_root, field) = __tmp; \ - } \ - return (elm); \ - } \ - return (NULL); \ -} \ - \ -void \ -name##_SPLAY(struct name *head, struct type *elm) \ -{ \ - struct type __node, *__left, *__right, *__tmp; \ - int __comp; \ - \ - SPLAY_LEFT(&__node, field) = SPLAY_RIGHT(&__node, field) = NULL; \ - __left = __right = &__node; \ - \ - while ((__comp = (cmp)(elm, (head)->sph_root)) != 0) { \ - if (__comp < 0) { \ - __tmp = SPLAY_LEFT((head)->sph_root, field); \ - if (__tmp == NULL) \ - break; \ - if ((cmp)(elm, __tmp) < 0){ \ - SPLAY_ROTATE_RIGHT(head, __tmp, field); \ - if (SPLAY_LEFT((head)->sph_root, field) == NULL) \ - break; \ - } \ - SPLAY_LINKLEFT(head, __right, field); \ - } else if (__comp > 0) { \ - __tmp = SPLAY_RIGHT((head)->sph_root, field); \ - if (__tmp == NULL) \ - break; \ - if ((cmp)(elm, __tmp) > 0){ \ - SPLAY_ROTATE_LEFT(head, __tmp, field); \ - if (SPLAY_RIGHT((head)->sph_root, field) == NULL) \ - break; \ - } \ - SPLAY_LINKRIGHT(head, __left, field); \ - } \ - } \ - SPLAY_ASSEMBLE(head, &__node, __left, __right, field); \ -} \ - \ -/* Splay with either the minimum or the maximum element \ - * Used to find minimum or maximum element in tree. \ - */ \ -void name##_SPLAY_MINMAX(struct name *head, int __comp) \ -{ \ - struct type __node, *__left, *__right, *__tmp; \ - \ - SPLAY_LEFT(&__node, field) = SPLAY_RIGHT(&__node, field) = NULL; \ - __left = __right = &__node; \ - \ - while (1) { \ - if (__comp < 0) { \ - __tmp = SPLAY_LEFT((head)->sph_root, field); \ - if (__tmp == NULL) \ - break; \ - if (__comp < 0){ \ - SPLAY_ROTATE_RIGHT(head, __tmp, field); \ - if (SPLAY_LEFT((head)->sph_root, field) == NULL) \ - break; \ - } \ - SPLAY_LINKLEFT(head, __right, field); \ - } else if (__comp > 0) { \ - __tmp = SPLAY_RIGHT((head)->sph_root, field); \ - if (__tmp == NULL) \ - break; \ - if (__comp > 0) { \ - SPLAY_ROTATE_LEFT(head, __tmp, field); \ - if (SPLAY_RIGHT((head)->sph_root, field) == NULL) \ - break; \ - } \ - SPLAY_LINKRIGHT(head, __left, field); \ - } \ - } \ - SPLAY_ASSEMBLE(head, &__node, __left, __right, field); \ -} - -#define SPLAY_NEGINF -1 -#define SPLAY_INF 1 - -#define SPLAY_INSERT(name, x, y) name##_SPLAY_INSERT(x, y) -#define SPLAY_REMOVE(name, x, y) name##_SPLAY_REMOVE(x, y) -#define SPLAY_FIND(name, x, y) name##_SPLAY_FIND(x, y) -#define SPLAY_NEXT(name, x, y) name##_SPLAY_NEXT(x, y) -#define SPLAY_MIN(name, x) (SPLAY_EMPTY(x) ? NULL \ - : name##_SPLAY_MIN_MAX(x, SPLAY_NEGINF)) -#define SPLAY_MAX(name, x) (SPLAY_EMPTY(x) ? NULL \ - : name##_SPLAY_MIN_MAX(x, SPLAY_INF)) - -#define SPLAY_FOREACH(x, name, head) \ - for ((x) = SPLAY_MIN(name, head); \ - (x) != NULL; \ - (x) = SPLAY_NEXT(name, head, x)) - -/* Macros that define a red-black tree */ -#define RB_HEAD(name, type) \ -struct name { \ - struct type *rbh_root; /* root of the tree */ \ -} - -#define RB_INITIALIZER(root) \ - { NULL } - -#define RB_INIT(root) do { \ - (root)->rbh_root = NULL; \ -} while (/*CONSTCOND*/ 0) - -#define RB_BLACK 0 -#define RB_RED 1 -#define RB_ENTRY(type) \ -struct { \ - struct type *rbe_left; /* left element */ \ - struct type *rbe_right; /* right element */ \ - struct type *rbe_parent; /* parent element */ \ - int rbe_color; /* node color */ \ -} - -#define RB_LEFT(elm, field) (elm)->field.rbe_left -#define RB_RIGHT(elm, field) (elm)->field.rbe_right -#define RB_PARENT(elm, field) (elm)->field.rbe_parent -#define RB_COLOR(elm, field) (elm)->field.rbe_color -#define RB_ROOT(head) (head)->rbh_root -#define RB_EMPTY(head) (RB_ROOT(head) == NULL) - -#define RB_SET(elm, parent, field) do { \ - RB_PARENT(elm, field) = parent; \ - RB_LEFT(elm, field) = RB_RIGHT(elm, field) = NULL; \ - RB_COLOR(elm, field) = RB_RED; \ -} while (/*CONSTCOND*/ 0) - -#define RB_SET_BLACKRED(black, red, field) do { \ - RB_COLOR(black, field) = RB_BLACK; \ - RB_COLOR(red, field) = RB_RED; \ -} while (/*CONSTCOND*/ 0) - -#ifndef RB_AUGMENT -#define RB_AUGMENT(x) do {} while (0) -#endif - -#define RB_ROTATE_LEFT(head, elm, tmp, field) do { \ - (tmp) = RB_RIGHT(elm, field); \ - if ((RB_RIGHT(elm, field) = RB_LEFT(tmp, field)) != NULL) { \ - RB_PARENT(RB_LEFT(tmp, field), field) = (elm); \ - } \ - RB_AUGMENT(elm); \ - if ((RB_PARENT(tmp, field) = RB_PARENT(elm, field)) != NULL) { \ - if ((elm) == RB_LEFT(RB_PARENT(elm, field), field)) \ - RB_LEFT(RB_PARENT(elm, field), field) = (tmp); \ - else \ - RB_RIGHT(RB_PARENT(elm, field), field) = (tmp); \ - } else \ - (head)->rbh_root = (tmp); \ - RB_LEFT(tmp, field) = (elm); \ - RB_PARENT(elm, field) = (tmp); \ - RB_AUGMENT(tmp); \ - if ((RB_PARENT(tmp, field))) \ - RB_AUGMENT(RB_PARENT(tmp, field)); \ -} while (/*CONSTCOND*/ 0) - -#define RB_ROTATE_RIGHT(head, elm, tmp, field) do { \ - (tmp) = RB_LEFT(elm, field); \ - if ((RB_LEFT(elm, field) = RB_RIGHT(tmp, field)) != NULL) { \ - RB_PARENT(RB_RIGHT(tmp, field), field) = (elm); \ - } \ - RB_AUGMENT(elm); \ - if ((RB_PARENT(tmp, field) = RB_PARENT(elm, field)) != NULL) { \ - if ((elm) == RB_LEFT(RB_PARENT(elm, field), field)) \ - RB_LEFT(RB_PARENT(elm, field), field) = (tmp); \ - else \ - RB_RIGHT(RB_PARENT(elm, field), field) = (tmp); \ - } else \ - (head)->rbh_root = (tmp); \ - RB_RIGHT(tmp, field) = (elm); \ - RB_PARENT(elm, field) = (tmp); \ - RB_AUGMENT(tmp); \ - if ((RB_PARENT(tmp, field))) \ - RB_AUGMENT(RB_PARENT(tmp, field)); \ -} while (/*CONSTCOND*/ 0) - -/* Generates prototypes and inline functions */ -#define RB_PROTOTYPE(name, type, field, cmp) \ - RB_PROTOTYPE_INTERNAL(name, type, field, cmp,) -#define RB_PROTOTYPE_STATIC(name, type, field, cmp) \ - RB_PROTOTYPE_INTERNAL(name, type, field, cmp, UV__UNUSED static) -#define RB_PROTOTYPE_INTERNAL(name, type, field, cmp, attr) \ -attr void name##_RB_INSERT_COLOR(struct name *, struct type *); \ -attr void name##_RB_REMOVE_COLOR(struct name *, struct type *, struct type *);\ -attr struct type *name##_RB_REMOVE(struct name *, struct type *); \ -attr struct type *name##_RB_INSERT(struct name *, struct type *); \ -attr struct type *name##_RB_FIND(struct name *, struct type *); \ -attr struct type *name##_RB_NFIND(struct name *, struct type *); \ -attr struct type *name##_RB_NEXT(struct type *); \ -attr struct type *name##_RB_PREV(struct type *); \ -attr struct type *name##_RB_MINMAX(struct name *, int); \ - \ - -/* Main rb operation. - * Moves node close to the key of elm to top - */ -#define RB_GENERATE(name, type, field, cmp) \ - RB_GENERATE_INTERNAL(name, type, field, cmp,) -#define RB_GENERATE_STATIC(name, type, field, cmp) \ - RB_GENERATE_INTERNAL(name, type, field, cmp, UV__UNUSED static) -#define RB_GENERATE_INTERNAL(name, type, field, cmp, attr) \ -attr void \ -name##_RB_INSERT_COLOR(struct name *head, struct type *elm) \ -{ \ - struct type *parent, *gparent, *tmp; \ - while ((parent = RB_PARENT(elm, field)) != NULL && \ - RB_COLOR(parent, field) == RB_RED) { \ - gparent = RB_PARENT(parent, field); \ - if (parent == RB_LEFT(gparent, field)) { \ - tmp = RB_RIGHT(gparent, field); \ - if (tmp && RB_COLOR(tmp, field) == RB_RED) { \ - RB_COLOR(tmp, field) = RB_BLACK; \ - RB_SET_BLACKRED(parent, gparent, field); \ - elm = gparent; \ - continue; \ - } \ - if (RB_RIGHT(parent, field) == elm) { \ - RB_ROTATE_LEFT(head, parent, tmp, field); \ - tmp = parent; \ - parent = elm; \ - elm = tmp; \ - } \ - RB_SET_BLACKRED(parent, gparent, field); \ - RB_ROTATE_RIGHT(head, gparent, tmp, field); \ - } else { \ - tmp = RB_LEFT(gparent, field); \ - if (tmp && RB_COLOR(tmp, field) == RB_RED) { \ - RB_COLOR(tmp, field) = RB_BLACK; \ - RB_SET_BLACKRED(parent, gparent, field); \ - elm = gparent; \ - continue; \ - } \ - if (RB_LEFT(parent, field) == elm) { \ - RB_ROTATE_RIGHT(head, parent, tmp, field); \ - tmp = parent; \ - parent = elm; \ - elm = tmp; \ - } \ - RB_SET_BLACKRED(parent, gparent, field); \ - RB_ROTATE_LEFT(head, gparent, tmp, field); \ - } \ - } \ - RB_COLOR(head->rbh_root, field) = RB_BLACK; \ -} \ - \ -attr void \ -name##_RB_REMOVE_COLOR(struct name *head, struct type *parent, \ - struct type *elm) \ -{ \ - struct type *tmp; \ - while ((elm == NULL || RB_COLOR(elm, field) == RB_BLACK) && \ - elm != RB_ROOT(head)) { \ - if (RB_LEFT(parent, field) == elm) { \ - tmp = RB_RIGHT(parent, field); \ - if (RB_COLOR(tmp, field) == RB_RED) { \ - RB_SET_BLACKRED(tmp, parent, field); \ - RB_ROTATE_LEFT(head, parent, tmp, field); \ - tmp = RB_RIGHT(parent, field); \ - } \ - if ((RB_LEFT(tmp, field) == NULL || \ - RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) && \ - (RB_RIGHT(tmp, field) == NULL || \ - RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK)) { \ - RB_COLOR(tmp, field) = RB_RED; \ - elm = parent; \ - parent = RB_PARENT(elm, field); \ - } else { \ - if (RB_RIGHT(tmp, field) == NULL || \ - RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK) { \ - struct type *oleft; \ - if ((oleft = RB_LEFT(tmp, field)) \ - != NULL) \ - RB_COLOR(oleft, field) = RB_BLACK; \ - RB_COLOR(tmp, field) = RB_RED; \ - RB_ROTATE_RIGHT(head, tmp, oleft, field); \ - tmp = RB_RIGHT(parent, field); \ - } \ - RB_COLOR(tmp, field) = RB_COLOR(parent, field); \ - RB_COLOR(parent, field) = RB_BLACK; \ - if (RB_RIGHT(tmp, field)) \ - RB_COLOR(RB_RIGHT(tmp, field), field) = RB_BLACK; \ - RB_ROTATE_LEFT(head, parent, tmp, field); \ - elm = RB_ROOT(head); \ - break; \ - } \ - } else { \ - tmp = RB_LEFT(parent, field); \ - if (RB_COLOR(tmp, field) == RB_RED) { \ - RB_SET_BLACKRED(tmp, parent, field); \ - RB_ROTATE_RIGHT(head, parent, tmp, field); \ - tmp = RB_LEFT(parent, field); \ - } \ - if ((RB_LEFT(tmp, field) == NULL || \ - RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) && \ - (RB_RIGHT(tmp, field) == NULL || \ - RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK)) { \ - RB_COLOR(tmp, field) = RB_RED; \ - elm = parent; \ - parent = RB_PARENT(elm, field); \ - } else { \ - if (RB_LEFT(tmp, field) == NULL || \ - RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) { \ - struct type *oright; \ - if ((oright = RB_RIGHT(tmp, field)) \ - != NULL) \ - RB_COLOR(oright, field) = RB_BLACK; \ - RB_COLOR(tmp, field) = RB_RED; \ - RB_ROTATE_LEFT(head, tmp, oright, field); \ - tmp = RB_LEFT(parent, field); \ - } \ - RB_COLOR(tmp, field) = RB_COLOR(parent, field); \ - RB_COLOR(parent, field) = RB_BLACK; \ - if (RB_LEFT(tmp, field)) \ - RB_COLOR(RB_LEFT(tmp, field), field) = RB_BLACK; \ - RB_ROTATE_RIGHT(head, parent, tmp, field); \ - elm = RB_ROOT(head); \ - break; \ - } \ - } \ - } \ - if (elm) \ - RB_COLOR(elm, field) = RB_BLACK; \ -} \ - \ -attr struct type * \ -name##_RB_REMOVE(struct name *head, struct type *elm) \ -{ \ - struct type *child, *parent, *old = elm; \ - int color; \ - if (RB_LEFT(elm, field) == NULL) \ - child = RB_RIGHT(elm, field); \ - else if (RB_RIGHT(elm, field) == NULL) \ - child = RB_LEFT(elm, field); \ - else { \ - struct type *left; \ - elm = RB_RIGHT(elm, field); \ - while ((left = RB_LEFT(elm, field)) != NULL) \ - elm = left; \ - child = RB_RIGHT(elm, field); \ - parent = RB_PARENT(elm, field); \ - color = RB_COLOR(elm, field); \ - if (child) \ - RB_PARENT(child, field) = parent; \ - if (parent) { \ - if (RB_LEFT(parent, field) == elm) \ - RB_LEFT(parent, field) = child; \ - else \ - RB_RIGHT(parent, field) = child; \ - RB_AUGMENT(parent); \ - } else \ - RB_ROOT(head) = child; \ - if (RB_PARENT(elm, field) == old) \ - parent = elm; \ - (elm)->field = (old)->field; \ - if (RB_PARENT(old, field)) { \ - if (RB_LEFT(RB_PARENT(old, field), field) == old) \ - RB_LEFT(RB_PARENT(old, field), field) = elm; \ - else \ - RB_RIGHT(RB_PARENT(old, field), field) = elm; \ - RB_AUGMENT(RB_PARENT(old, field)); \ - } else \ - RB_ROOT(head) = elm; \ - RB_PARENT(RB_LEFT(old, field), field) = elm; \ - if (RB_RIGHT(old, field)) \ - RB_PARENT(RB_RIGHT(old, field), field) = elm; \ - if (parent) { \ - left = parent; \ - do { \ - RB_AUGMENT(left); \ - } while ((left = RB_PARENT(left, field)) != NULL); \ - } \ - goto color; \ - } \ - parent = RB_PARENT(elm, field); \ - color = RB_COLOR(elm, field); \ - if (child) \ - RB_PARENT(child, field) = parent; \ - if (parent) { \ - if (RB_LEFT(parent, field) == elm) \ - RB_LEFT(parent, field) = child; \ - else \ - RB_RIGHT(parent, field) = child; \ - RB_AUGMENT(parent); \ - } else \ - RB_ROOT(head) = child; \ -color: \ - if (color == RB_BLACK) \ - name##_RB_REMOVE_COLOR(head, parent, child); \ - return (old); \ -} \ - \ -/* Inserts a node into the RB tree */ \ -attr struct type * \ -name##_RB_INSERT(struct name *head, struct type *elm) \ -{ \ - struct type *tmp; \ - struct type *parent = NULL; \ - int comp = 0; \ - tmp = RB_ROOT(head); \ - while (tmp) { \ - parent = tmp; \ - comp = (cmp)(elm, parent); \ - if (comp < 0) \ - tmp = RB_LEFT(tmp, field); \ - else if (comp > 0) \ - tmp = RB_RIGHT(tmp, field); \ - else \ - return (tmp); \ - } \ - RB_SET(elm, parent, field); \ - if (parent != NULL) { \ - if (comp < 0) \ - RB_LEFT(parent, field) = elm; \ - else \ - RB_RIGHT(parent, field) = elm; \ - RB_AUGMENT(parent); \ - } else \ - RB_ROOT(head) = elm; \ - name##_RB_INSERT_COLOR(head, elm); \ - return (NULL); \ -} \ - \ -/* Finds the node with the same key as elm */ \ -attr struct type * \ -name##_RB_FIND(struct name *head, struct type *elm) \ -{ \ - struct type *tmp = RB_ROOT(head); \ - int comp; \ - while (tmp) { \ - comp = cmp(elm, tmp); \ - if (comp < 0) \ - tmp = RB_LEFT(tmp, field); \ - else if (comp > 0) \ - tmp = RB_RIGHT(tmp, field); \ - else \ - return (tmp); \ - } \ - return (NULL); \ -} \ - \ -/* Finds the first node greater than or equal to the search key */ \ -attr struct type * \ -name##_RB_NFIND(struct name *head, struct type *elm) \ -{ \ - struct type *tmp = RB_ROOT(head); \ - struct type *res = NULL; \ - int comp; \ - while (tmp) { \ - comp = cmp(elm, tmp); \ - if (comp < 0) { \ - res = tmp; \ - tmp = RB_LEFT(tmp, field); \ - } \ - else if (comp > 0) \ - tmp = RB_RIGHT(tmp, field); \ - else \ - return (tmp); \ - } \ - return (res); \ -} \ - \ -/* ARGSUSED */ \ -attr struct type * \ -name##_RB_NEXT(struct type *elm) \ -{ \ - if (RB_RIGHT(elm, field)) { \ - elm = RB_RIGHT(elm, field); \ - while (RB_LEFT(elm, field)) \ - elm = RB_LEFT(elm, field); \ - } else { \ - if (RB_PARENT(elm, field) && \ - (elm == RB_LEFT(RB_PARENT(elm, field), field))) \ - elm = RB_PARENT(elm, field); \ - else { \ - while (RB_PARENT(elm, field) && \ - (elm == RB_RIGHT(RB_PARENT(elm, field), field))) \ - elm = RB_PARENT(elm, field); \ - elm = RB_PARENT(elm, field); \ - } \ - } \ - return (elm); \ -} \ - \ -/* ARGSUSED */ \ -attr struct type * \ -name##_RB_PREV(struct type *elm) \ -{ \ - if (RB_LEFT(elm, field)) { \ - elm = RB_LEFT(elm, field); \ - while (RB_RIGHT(elm, field)) \ - elm = RB_RIGHT(elm, field); \ - } else { \ - if (RB_PARENT(elm, field) && \ - (elm == RB_RIGHT(RB_PARENT(elm, field), field))) \ - elm = RB_PARENT(elm, field); \ - else { \ - while (RB_PARENT(elm, field) && \ - (elm == RB_LEFT(RB_PARENT(elm, field), field))) \ - elm = RB_PARENT(elm, field); \ - elm = RB_PARENT(elm, field); \ - } \ - } \ - return (elm); \ -} \ - \ -attr struct type * \ -name##_RB_MINMAX(struct name *head, int val) \ -{ \ - struct type *tmp = RB_ROOT(head); \ - struct type *parent = NULL; \ - while (tmp) { \ - parent = tmp; \ - if (val < 0) \ - tmp = RB_LEFT(tmp, field); \ - else \ - tmp = RB_RIGHT(tmp, field); \ - } \ - return (parent); \ -} - -#define RB_NEGINF -1 -#define RB_INF 1 - -#define RB_INSERT(name, x, y) name##_RB_INSERT(x, y) -#define RB_REMOVE(name, x, y) name##_RB_REMOVE(x, y) -#define RB_FIND(name, x, y) name##_RB_FIND(x, y) -#define RB_NFIND(name, x, y) name##_RB_NFIND(x, y) -#define RB_NEXT(name, x, y) name##_RB_NEXT(y) -#define RB_PREV(name, x, y) name##_RB_PREV(y) -#define RB_MIN(name, x) name##_RB_MINMAX(x, RB_NEGINF) -#define RB_MAX(name, x) name##_RB_MINMAX(x, RB_INF) - -#define RB_FOREACH(x, name, head) \ - for ((x) = RB_MIN(name, head); \ - (x) != NULL; \ - (x) = name##_RB_NEXT(x)) - -#define RB_FOREACH_FROM(x, name, y) \ - for ((x) = (y); \ - ((x) != NULL) && ((y) = name##_RB_NEXT(x), (x) != NULL); \ - (x) = (y)) - -#define RB_FOREACH_SAFE(x, name, head, y) \ - for ((x) = RB_MIN(name, head); \ - ((x) != NULL) && ((y) = name##_RB_NEXT(x), (x) != NULL); \ - (x) = (y)) - -#define RB_FOREACH_REVERSE(x, name, head) \ - for ((x) = RB_MAX(name, head); \ - (x) != NULL; \ - (x) = name##_RB_PREV(x)) - -#define RB_FOREACH_REVERSE_FROM(x, name, y) \ - for ((x) = (y); \ - ((x) != NULL) && ((y) = name##_RB_PREV(x), (x) != NULL); \ - (x) = (y)) - -#define RB_FOREACH_REVERSE_SAFE(x, name, head, y) \ - for ((x) = RB_MAX(name, head); \ - ((x) != NULL) && ((y) = name##_RB_PREV(x), (x) != NULL); \ - (x) = (y)) - -#endif /* UV_TREE_H_ */ diff --git a/Framework/ext/libuv/uv-aix.h b/Framework/ext/libuv/uv-aix.h deleted file mode 100644 index 7dc992f..0000000 --- a/Framework/ext/libuv/uv-aix.h +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright Joyent, Inc. and other Node contributors. All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -#ifndef UV_AIX_H -#define UV_AIX_H - -#define UV_PLATFORM_LOOP_FIELDS \ - int fs_fd; \ - -#define UV_PLATFORM_FS_EVENT_FIELDS \ - uv__io_t event_watcher; \ - char *dir_filename; \ - -#endif /* UV_AIX_H */ diff --git a/Framework/ext/libuv/uv-bsd.h b/Framework/ext/libuv/uv-bsd.h deleted file mode 100644 index 2d72b3d..0000000 --- a/Framework/ext/libuv/uv-bsd.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright Joyent, Inc. and other Node contributors. All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -#ifndef UV_BSD_H -#define UV_BSD_H - -#define UV_PLATFORM_FS_EVENT_FIELDS \ - uv__io_t event_watcher; \ - -#define UV_IO_PRIVATE_PLATFORM_FIELDS \ - int rcount; \ - int wcount; \ - -#define UV_HAVE_KQUEUE 1 - -#endif /* UV_BSD_H */ diff --git a/Framework/ext/libuv/uv-darwin.h b/Framework/ext/libuv/uv-darwin.h deleted file mode 100644 index d226415..0000000 --- a/Framework/ext/libuv/uv-darwin.h +++ /dev/null @@ -1,61 +0,0 @@ -/* Copyright Joyent, Inc. and other Node contributors. All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -#ifndef UV_DARWIN_H -#define UV_DARWIN_H - -#if defined(__APPLE__) && defined(__MACH__) -# include -# include -# include -# include -# define UV_PLATFORM_SEM_T semaphore_t -#endif - -#define UV_IO_PRIVATE_PLATFORM_FIELDS \ - int rcount; \ - int wcount; \ - -#define UV_PLATFORM_LOOP_FIELDS \ - uv_thread_t cf_thread; \ - void* _cf_reserved; \ - void* cf_state; \ - uv_mutex_t cf_mutex; \ - uv_sem_t cf_sem; \ - void* cf_signals[2]; \ - -#define UV_PLATFORM_FS_EVENT_FIELDS \ - uv__io_t event_watcher; \ - char* realpath; \ - int realpath_len; \ - int cf_flags; \ - uv_async_t* cf_cb; \ - void* cf_events[2]; \ - void* cf_member[2]; \ - int cf_error; \ - uv_mutex_t cf_mutex; \ - -#define UV_STREAM_PRIVATE_PLATFORM_FIELDS \ - void* select; \ - -#define UV_HAVE_KQUEUE 1 - -#endif /* UV_DARWIN_H */ diff --git a/Framework/ext/libuv/uv-errno.h b/Framework/ext/libuv/uv-errno.h deleted file mode 100644 index 139b9f3..0000000 --- a/Framework/ext/libuv/uv-errno.h +++ /dev/null @@ -1,421 +0,0 @@ -/* Copyright Joyent, Inc. and other Node contributors. All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -#ifndef UV_ERRNO_H_ -#define UV_ERRNO_H_ - -#ifndef _WIN32 -#include -#endif - -#define UV__EOF (-4095) -#define UV__UNKNOWN (-4094) - -#define UV__EAI_ADDRFAMILY (-3000) -#define UV__EAI_AGAIN (-3001) -#define UV__EAI_BADFLAGS (-3002) -#define UV__EAI_CANCELED (-3003) -#define UV__EAI_FAIL (-3004) -#define UV__EAI_FAMILY (-3005) -#define UV__EAI_MEMORY (-3006) -#define UV__EAI_NODATA (-3007) -#define UV__EAI_NONAME (-3008) -#define UV__EAI_OVERFLOW (-3009) -#define UV__EAI_SERVICE (-3010) -#define UV__EAI_SOCKTYPE (-3011) -#define UV__EAI_BADHINTS (-3013) -#define UV__EAI_PROTOCOL (-3014) - -/* Only map to the system errno on non-Windows platforms. It's apparently - * a fairly common practice for Windows programmers to redefine errno codes. - */ -#if defined(E2BIG) && !defined(_WIN32) -# define UV__E2BIG (-E2BIG) -#else -# define UV__E2BIG (-4093) -#endif - -#if defined(EACCES) && !defined(_WIN32) -# define UV__EACCES (-EACCES) -#else -# define UV__EACCES (-4092) -#endif - -#if defined(EADDRINUSE) && !defined(_WIN32) -# define UV__EADDRINUSE (-EADDRINUSE) -#else -# define UV__EADDRINUSE (-4091) -#endif - -#if defined(EADDRNOTAVAIL) && !defined(_WIN32) -# define UV__EADDRNOTAVAIL (-EADDRNOTAVAIL) -#else -# define UV__EADDRNOTAVAIL (-4090) -#endif - -#if defined(EAFNOSUPPORT) && !defined(_WIN32) -# define UV__EAFNOSUPPORT (-EAFNOSUPPORT) -#else -# define UV__EAFNOSUPPORT (-4089) -#endif - -#if defined(EAGAIN) && !defined(_WIN32) -# define UV__EAGAIN (-EAGAIN) -#else -# define UV__EAGAIN (-4088) -#endif - -#if defined(EALREADY) && !defined(_WIN32) -# define UV__EALREADY (-EALREADY) -#else -# define UV__EALREADY (-4084) -#endif - -#if defined(EBADF) && !defined(_WIN32) -# define UV__EBADF (-EBADF) -#else -# define UV__EBADF (-4083) -#endif - -#if defined(EBUSY) && !defined(_WIN32) -# define UV__EBUSY (-EBUSY) -#else -# define UV__EBUSY (-4082) -#endif - -#if defined(ECANCELED) && !defined(_WIN32) -# define UV__ECANCELED (-ECANCELED) -#else -# define UV__ECANCELED (-4081) -#endif - -#if defined(ECHARSET) && !defined(_WIN32) -# define UV__ECHARSET (-ECHARSET) -#else -# define UV__ECHARSET (-4080) -#endif - -#if defined(ECONNABORTED) && !defined(_WIN32) -# define UV__ECONNABORTED (-ECONNABORTED) -#else -# define UV__ECONNABORTED (-4079) -#endif - -#if defined(ECONNREFUSED) && !defined(_WIN32) -# define UV__ECONNREFUSED (-ECONNREFUSED) -#else -# define UV__ECONNREFUSED (-4078) -#endif - -#if defined(ECONNRESET) && !defined(_WIN32) -# define UV__ECONNRESET (-ECONNRESET) -#else -# define UV__ECONNRESET (-4077) -#endif - -#if defined(EDESTADDRREQ) && !defined(_WIN32) -# define UV__EDESTADDRREQ (-EDESTADDRREQ) -#else -# define UV__EDESTADDRREQ (-4076) -#endif - -#if defined(EEXIST) && !defined(_WIN32) -# define UV__EEXIST (-EEXIST) -#else -# define UV__EEXIST (-4075) -#endif - -#if defined(EFAULT) && !defined(_WIN32) -# define UV__EFAULT (-EFAULT) -#else -# define UV__EFAULT (-4074) -#endif - -#if defined(EHOSTUNREACH) && !defined(_WIN32) -# define UV__EHOSTUNREACH (-EHOSTUNREACH) -#else -# define UV__EHOSTUNREACH (-4073) -#endif - -#if defined(EINTR) && !defined(_WIN32) -# define UV__EINTR (-EINTR) -#else -# define UV__EINTR (-4072) -#endif - -#if defined(EINVAL) && !defined(_WIN32) -# define UV__EINVAL (-EINVAL) -#else -# define UV__EINVAL (-4071) -#endif - -#if defined(EIO) && !defined(_WIN32) -# define UV__EIO (-EIO) -#else -# define UV__EIO (-4070) -#endif - -#if defined(EISCONN) && !defined(_WIN32) -# define UV__EISCONN (-EISCONN) -#else -# define UV__EISCONN (-4069) -#endif - -#if defined(EISDIR) && !defined(_WIN32) -# define UV__EISDIR (-EISDIR) -#else -# define UV__EISDIR (-4068) -#endif - -#if defined(ELOOP) && !defined(_WIN32) -# define UV__ELOOP (-ELOOP) -#else -# define UV__ELOOP (-4067) -#endif - -#if defined(EMFILE) && !defined(_WIN32) -# define UV__EMFILE (-EMFILE) -#else -# define UV__EMFILE (-4066) -#endif - -#if defined(EMSGSIZE) && !defined(_WIN32) -# define UV__EMSGSIZE (-EMSGSIZE) -#else -# define UV__EMSGSIZE (-4065) -#endif - -#if defined(ENAMETOOLONG) && !defined(_WIN32) -# define UV__ENAMETOOLONG (-ENAMETOOLONG) -#else -# define UV__ENAMETOOLONG (-4064) -#endif - -#if defined(ENETDOWN) && !defined(_WIN32) -# define UV__ENETDOWN (-ENETDOWN) -#else -# define UV__ENETDOWN (-4063) -#endif - -#if defined(ENETUNREACH) && !defined(_WIN32) -# define UV__ENETUNREACH (-ENETUNREACH) -#else -# define UV__ENETUNREACH (-4062) -#endif - -#if defined(ENFILE) && !defined(_WIN32) -# define UV__ENFILE (-ENFILE) -#else -# define UV__ENFILE (-4061) -#endif - -#if defined(ENOBUFS) && !defined(_WIN32) -# define UV__ENOBUFS (-ENOBUFS) -#else -# define UV__ENOBUFS (-4060) -#endif - -#if defined(ENODEV) && !defined(_WIN32) -# define UV__ENODEV (-ENODEV) -#else -# define UV__ENODEV (-4059) -#endif - -#if defined(ENOENT) && !defined(_WIN32) -# define UV__ENOENT (-ENOENT) -#else -# define UV__ENOENT (-4058) -#endif - -#if defined(ENOMEM) && !defined(_WIN32) -# define UV__ENOMEM (-ENOMEM) -#else -# define UV__ENOMEM (-4057) -#endif - -#if defined(ENONET) && !defined(_WIN32) -# define UV__ENONET (-ENONET) -#else -# define UV__ENONET (-4056) -#endif - -#if defined(ENOSPC) && !defined(_WIN32) -# define UV__ENOSPC (-ENOSPC) -#else -# define UV__ENOSPC (-4055) -#endif - -#if defined(ENOSYS) && !defined(_WIN32) -# define UV__ENOSYS (-ENOSYS) -#else -# define UV__ENOSYS (-4054) -#endif - -#if defined(ENOTCONN) && !defined(_WIN32) -# define UV__ENOTCONN (-ENOTCONN) -#else -# define UV__ENOTCONN (-4053) -#endif - -#if defined(ENOTDIR) && !defined(_WIN32) -# define UV__ENOTDIR (-ENOTDIR) -#else -# define UV__ENOTDIR (-4052) -#endif - -#if defined(ENOTEMPTY) && !defined(_WIN32) -# define UV__ENOTEMPTY (-ENOTEMPTY) -#else -# define UV__ENOTEMPTY (-4051) -#endif - -#if defined(ENOTSOCK) && !defined(_WIN32) -# define UV__ENOTSOCK (-ENOTSOCK) -#else -# define UV__ENOTSOCK (-4050) -#endif - -#if defined(ENOTSUP) && !defined(_WIN32) -# define UV__ENOTSUP (-ENOTSUP) -#else -# define UV__ENOTSUP (-4049) -#endif - -#if defined(EPERM) && !defined(_WIN32) -# define UV__EPERM (-EPERM) -#else -# define UV__EPERM (-4048) -#endif - -#if defined(EPIPE) && !defined(_WIN32) -# define UV__EPIPE (-EPIPE) -#else -# define UV__EPIPE (-4047) -#endif - -#if defined(EPROTO) && !defined(_WIN32) -# define UV__EPROTO (-EPROTO) -#else -# define UV__EPROTO (-4046) -#endif - -#if defined(EPROTONOSUPPORT) && !defined(_WIN32) -# define UV__EPROTONOSUPPORT (-EPROTONOSUPPORT) -#else -# define UV__EPROTONOSUPPORT (-4045) -#endif - -#if defined(EPROTOTYPE) && !defined(_WIN32) -# define UV__EPROTOTYPE (-EPROTOTYPE) -#else -# define UV__EPROTOTYPE (-4044) -#endif - -#if defined(EROFS) && !defined(_WIN32) -# define UV__EROFS (-EROFS) -#else -# define UV__EROFS (-4043) -#endif - -#if defined(ESHUTDOWN) && !defined(_WIN32) -# define UV__ESHUTDOWN (-ESHUTDOWN) -#else -# define UV__ESHUTDOWN (-4042) -#endif - -#if defined(ESPIPE) && !defined(_WIN32) -# define UV__ESPIPE (-ESPIPE) -#else -# define UV__ESPIPE (-4041) -#endif - -#if defined(ESRCH) && !defined(_WIN32) -# define UV__ESRCH (-ESRCH) -#else -# define UV__ESRCH (-4040) -#endif - -#if defined(ETIMEDOUT) && !defined(_WIN32) -# define UV__ETIMEDOUT (-ETIMEDOUT) -#else -# define UV__ETIMEDOUT (-4039) -#endif - -#if defined(ETXTBSY) && !defined(_WIN32) -# define UV__ETXTBSY (-ETXTBSY) -#else -# define UV__ETXTBSY (-4038) -#endif - -#if defined(EXDEV) && !defined(_WIN32) -# define UV__EXDEV (-EXDEV) -#else -# define UV__EXDEV (-4037) -#endif - -#if defined(EFBIG) && !defined(_WIN32) -# define UV__EFBIG (-EFBIG) -#else -# define UV__EFBIG (-4036) -#endif - -#if defined(ENOPROTOOPT) && !defined(_WIN32) -# define UV__ENOPROTOOPT (-ENOPROTOOPT) -#else -# define UV__ENOPROTOOPT (-4035) -#endif - -#if defined(ERANGE) && !defined(_WIN32) -# define UV__ERANGE (-ERANGE) -#else -# define UV__ERANGE (-4034) -#endif - -#if defined(ENXIO) && !defined(_WIN32) -# define UV__ENXIO (-ENXIO) -#else -# define UV__ENXIO (-4033) -#endif - -#if defined(EMLINK) && !defined(_WIN32) -# define UV__EMLINK (-EMLINK) -#else -# define UV__EMLINK (-4032) -#endif - -/* EHOSTDOWN is not visible on BSD-like systems when _POSIX_C_SOURCE is - * defined. Fortunately, its value is always 64 so it's possible albeit - * icky to hard-code it. - */ -#if defined(EHOSTDOWN) && !defined(_WIN32) -# define UV__EHOSTDOWN (-EHOSTDOWN) -#elif defined(__APPLE__) || \ - defined(__DragonFly__) || \ - defined(__FreeBSD__) || \ - defined(__FreeBSD_kernel__) || \ - defined(__NetBSD__) || \ - defined(__OpenBSD__) -# define UV__EHOSTDOWN (-64) -#else -# define UV__EHOSTDOWN (-4031) -#endif - -#endif /* UV_ERRNO_H_ */ diff --git a/Framework/ext/libuv/uv-linux.h b/Framework/ext/libuv/uv-linux.h deleted file mode 100644 index 9b38405..0000000 --- a/Framework/ext/libuv/uv-linux.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright Joyent, Inc. and other Node contributors. All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -#ifndef UV_LINUX_H -#define UV_LINUX_H - -#define UV_PLATFORM_LOOP_FIELDS \ - uv__io_t inotify_read_watcher; \ - void* inotify_watchers; \ - int inotify_fd; \ - -#define UV_PLATFORM_FS_EVENT_FIELDS \ - void* watchers[2]; \ - int wd; \ - -#endif /* UV_LINUX_H */ diff --git a/Framework/ext/libuv/uv-os390.h b/Framework/ext/libuv/uv-os390.h deleted file mode 100644 index 58f9261..0000000 --- a/Framework/ext/libuv/uv-os390.h +++ /dev/null @@ -1,30 +0,0 @@ -/* Copyright libuv project contributors. All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -#ifndef UV_MVS_H -#define UV_MVS_H - -#define UV_PLATFORM_SEM_T int - -#define UV_PLATFORM_LOOP_FIELDS \ - void* ep; \ - -#endif /* UV_MVS_H */ diff --git a/Framework/ext/libuv/uv-posix.h b/Framework/ext/libuv/uv-posix.h deleted file mode 100644 index 9a96634..0000000 --- a/Framework/ext/libuv/uv-posix.h +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright libuv project contributors. All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -#ifndef UV_POSIX_H -#define UV_POSIX_H - -#define UV_PLATFORM_LOOP_FIELDS \ - struct pollfd* poll_fds; \ - size_t poll_fds_used; \ - size_t poll_fds_size; \ - unsigned char poll_fds_iterating; \ - -#endif /* UV_POSIX_H */ diff --git a/Framework/ext/libuv/uv-sunos.h b/Framework/ext/libuv/uv-sunos.h deleted file mode 100644 index 0421664..0000000 --- a/Framework/ext/libuv/uv-sunos.h +++ /dev/null @@ -1,44 +0,0 @@ -/* Copyright Joyent, Inc. and other Node contributors. All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -#ifndef UV_SUNOS_H -#define UV_SUNOS_H - -#include -#include - -/* For the sake of convenience and reduced #ifdef-ery in src/unix/sunos.c, - * add the fs_event fields even when this version of SunOS doesn't support - * file watching. - */ -#define UV_PLATFORM_LOOP_FIELDS \ - uv__io_t fs_event_watcher; \ - int fs_fd; \ - -#if defined(PORT_SOURCE_FILE) - -# define UV_PLATFORM_FS_EVENT_FIELDS \ - file_obj_t fo; \ - int fd; \ - -#endif /* defined(PORT_SOURCE_FILE) */ - -#endif /* UV_SUNOS_H */ diff --git a/Framework/ext/libuv/uv-threadpool.h b/Framework/ext/libuv/uv-threadpool.h deleted file mode 100644 index 9708ebd..0000000 --- a/Framework/ext/libuv/uv-threadpool.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright Joyent, Inc. and other Node contributors. All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -/* - * This file is private to libuv. It provides common functionality to both - * Windows and Unix backends. - */ - -#ifndef UV_THREADPOOL_H_ -#define UV_THREADPOOL_H_ - -struct uv__work { - void (*work)(struct uv__work *w); - void (*done)(struct uv__work *w, int status); - struct uv_loop_s* loop; - void* wq[2]; -}; - -#endif /* UV_THREADPOOL_H_ */ diff --git a/Framework/ext/libuv/uv-unix.h b/Framework/ext/libuv/uv-unix.h deleted file mode 100644 index 54b3123..0000000 --- a/Framework/ext/libuv/uv-unix.h +++ /dev/null @@ -1,367 +0,0 @@ -/* Copyright Joyent, Inc. and other Node contributors. All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -#ifndef UV_UNIX_H -#define UV_UNIX_H - -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include - -#if !defined(__MVS__) -#include -#endif -#include -#include - -#include "uv-threadpool.h" - -#if defined(__linux__) -# include "uv-linux.h" -#elif defined (__MVS__) -# include "uv-os390.h" -#elif defined(_AIX) -# include "uv-aix.h" -#elif defined(__sun) -# include "uv-sunos.h" -#elif defined(__APPLE__) -# include "uv-darwin.h" -#elif defined(__DragonFly__) || \ - defined(__FreeBSD__) || \ - defined(__FreeBSD_kernel__) || \ - defined(__OpenBSD__) || \ - defined(__NetBSD__) -# include "uv-bsd.h" -#elif defined(__CYGWIN__) || defined(__MSYS__) -# include "uv-posix.h" -#endif - -#ifndef PTHREAD_BARRIER_SERIAL_THREAD -# include "pthread-barrier.h" -#endif - -#ifndef NI_MAXHOST -# define NI_MAXHOST 1025 -#endif - -#ifndef NI_MAXSERV -# define NI_MAXSERV 32 -#endif - -#ifndef UV_IO_PRIVATE_PLATFORM_FIELDS -# define UV_IO_PRIVATE_PLATFORM_FIELDS /* empty */ -#endif - -struct uv__io_s; -struct uv_loop_s; - -typedef void (*uv__io_cb)(struct uv_loop_s* loop, - struct uv__io_s* w, - unsigned int events); -typedef struct uv__io_s uv__io_t; - -struct uv__io_s { - uv__io_cb cb; - void* pending_queue[2]; - void* watcher_queue[2]; - unsigned int pevents; /* Pending event mask i.e. mask at next tick. */ - unsigned int events; /* Current event mask. */ - int fd; - UV_IO_PRIVATE_PLATFORM_FIELDS -}; - -#ifndef UV_PLATFORM_SEM_T -# define UV_PLATFORM_SEM_T sem_t -#endif - -#ifndef UV_PLATFORM_LOOP_FIELDS -# define UV_PLATFORM_LOOP_FIELDS /* empty */ -#endif - -#ifndef UV_PLATFORM_FS_EVENT_FIELDS -# define UV_PLATFORM_FS_EVENT_FIELDS /* empty */ -#endif - -#ifndef UV_STREAM_PRIVATE_PLATFORM_FIELDS -# define UV_STREAM_PRIVATE_PLATFORM_FIELDS /* empty */ -#endif - -/* Note: May be cast to struct iovec. See writev(2). */ -typedef struct uv_buf_t { - char* base; - size_t len; -} uv_buf_t; - -typedef int uv_os_sock_t; -typedef int uv_os_fd_t; - -#define UV_ONCE_INIT PTHREAD_ONCE_INIT - -typedef pthread_once_t uv_once_t; -typedef pthread_t uv_thread_t; -typedef pthread_mutex_t uv_mutex_t; -typedef pthread_rwlock_t uv_rwlock_t; -typedef UV_PLATFORM_SEM_T uv_sem_t; -typedef pthread_cond_t uv_cond_t; -typedef pthread_key_t uv_key_t; -typedef pthread_barrier_t uv_barrier_t; - - -/* Platform-specific definitions for uv_spawn support. */ -typedef gid_t uv_gid_t; -typedef uid_t uv_uid_t; - -typedef struct dirent uv__dirent_t; - -#if defined(DT_UNKNOWN) -# define HAVE_DIRENT_TYPES -# if defined(DT_REG) -# define UV__DT_FILE DT_REG -# else -# define UV__DT_FILE -1 -# endif -# if defined(DT_DIR) -# define UV__DT_DIR DT_DIR -# else -# define UV__DT_DIR -2 -# endif -# if defined(DT_LNK) -# define UV__DT_LINK DT_LNK -# else -# define UV__DT_LINK -3 -# endif -# if defined(DT_FIFO) -# define UV__DT_FIFO DT_FIFO -# else -# define UV__DT_FIFO -4 -# endif -# if defined(DT_SOCK) -# define UV__DT_SOCKET DT_SOCK -# else -# define UV__DT_SOCKET -5 -# endif -# if defined(DT_CHR) -# define UV__DT_CHAR DT_CHR -# else -# define UV__DT_CHAR -6 -# endif -# if defined(DT_BLK) -# define UV__DT_BLOCK DT_BLK -# else -# define UV__DT_BLOCK -7 -# endif -#endif - -/* Platform-specific definitions for uv_dlopen support. */ -#define UV_DYNAMIC /* empty */ - -typedef struct { - void* handle; - char* errmsg; -} uv_lib_t; - -#define UV_LOOP_PRIVATE_FIELDS \ - unsigned long flags; \ - int backend_fd; \ - void* pending_queue[2]; \ - void* watcher_queue[2]; \ - uv__io_t** watchers; \ - unsigned int nwatchers; \ - unsigned int nfds; \ - void* wq[2]; \ - uv_mutex_t wq_mutex; \ - uv_async_t wq_async; \ - uv_rwlock_t cloexec_lock; \ - uv_handle_t* closing_handles; \ - void* process_handles[2]; \ - void* prepare_handles[2]; \ - void* check_handles[2]; \ - void* idle_handles[2]; \ - void* async_handles[2]; \ - void (*async_unused)(void); /* TODO(bnoordhuis) Remove in libuv v2. */ \ - uv__io_t async_io_watcher; \ - int async_wfd; \ - struct { \ - void* min; \ - unsigned int nelts; \ - } timer_heap; \ - uint64_t timer_counter; \ - uint64_t time; \ - int signal_pipefd[2]; \ - uv__io_t signal_io_watcher; \ - uv_signal_t child_watcher; \ - int emfile_fd; \ - UV_PLATFORM_LOOP_FIELDS \ - -#define UV_REQ_TYPE_PRIVATE /* empty */ - -#define UV_REQ_PRIVATE_FIELDS /* empty */ - -#define UV_PRIVATE_REQ_TYPES /* empty */ - -#define UV_WRITE_PRIVATE_FIELDS \ - void* queue[2]; \ - unsigned int write_index; \ - uv_buf_t* bufs; \ - unsigned int nbufs; \ - int error; \ - uv_buf_t bufsml[4]; \ - -#define UV_CONNECT_PRIVATE_FIELDS \ - void* queue[2]; \ - -#define UV_SHUTDOWN_PRIVATE_FIELDS /* empty */ - -#define UV_UDP_SEND_PRIVATE_FIELDS \ - void* queue[2]; \ - struct sockaddr_storage addr; \ - unsigned int nbufs; \ - uv_buf_t* bufs; \ - ssize_t status; \ - uv_udp_send_cb send_cb; \ - uv_buf_t bufsml[4]; \ - -#define UV_HANDLE_PRIVATE_FIELDS \ - uv_handle_t* next_closing; \ - unsigned int flags; \ - -#define UV_STREAM_PRIVATE_FIELDS \ - uv_connect_t *connect_req; \ - uv_shutdown_t *shutdown_req; \ - uv__io_t io_watcher; \ - void* write_queue[2]; \ - void* write_completed_queue[2]; \ - uv_connection_cb connection_cb; \ - int delayed_error; \ - int accepted_fd; \ - void* queued_fds; \ - UV_STREAM_PRIVATE_PLATFORM_FIELDS \ - -#define UV_TCP_PRIVATE_FIELDS /* empty */ - -#define UV_UDP_PRIVATE_FIELDS \ - uv_alloc_cb alloc_cb; \ - uv_udp_recv_cb recv_cb; \ - uv__io_t io_watcher; \ - void* write_queue[2]; \ - void* write_completed_queue[2]; \ - -#define UV_PIPE_PRIVATE_FIELDS \ - const char* pipe_fname; /* strdup'ed */ - -#define UV_POLL_PRIVATE_FIELDS \ - uv__io_t io_watcher; - -#define UV_PREPARE_PRIVATE_FIELDS \ - uv_prepare_cb prepare_cb; \ - void* queue[2]; \ - -#define UV_CHECK_PRIVATE_FIELDS \ - uv_check_cb check_cb; \ - void* queue[2]; \ - -#define UV_IDLE_PRIVATE_FIELDS \ - uv_idle_cb idle_cb; \ - void* queue[2]; \ - -#define UV_ASYNC_PRIVATE_FIELDS \ - uv_async_cb async_cb; \ - void* queue[2]; \ - int pending; \ - -#define UV_TIMER_PRIVATE_FIELDS \ - uv_timer_cb timer_cb; \ - void* heap_node[3]; \ - uint64_t timeout; \ - uint64_t repeat; \ - uint64_t start_id; - -#define UV_GETADDRINFO_PRIVATE_FIELDS \ - struct uv__work work_req; \ - uv_getaddrinfo_cb cb; \ - struct addrinfo* hints; \ - char* hostname; \ - char* service; \ - struct addrinfo* addrinfo; \ - int retcode; - -#define UV_GETNAMEINFO_PRIVATE_FIELDS \ - struct uv__work work_req; \ - uv_getnameinfo_cb getnameinfo_cb; \ - struct sockaddr_storage storage; \ - int flags; \ - char host[NI_MAXHOST]; \ - char service[NI_MAXSERV]; \ - int retcode; - -#define UV_PROCESS_PRIVATE_FIELDS \ - void* queue[2]; \ - int status; \ - -#define UV_FS_PRIVATE_FIELDS \ - const char *new_path; \ - uv_os_fd_t file; \ - int flags; \ - mode_t mode; \ - unsigned int nbufs; \ - uv_buf_t* bufs; \ - off_t off; \ - uv_uid_t uid; \ - uv_gid_t gid; \ - double atime; \ - double mtime; \ - struct uv__work work_req; \ - uv_buf_t bufsml[4]; \ - -#define UV_WORK_PRIVATE_FIELDS \ - struct uv__work work_req; - -#define UV_TTY_PRIVATE_FIELDS \ - struct termios orig_termios; \ - int mode; - -#define UV_SIGNAL_PRIVATE_FIELDS \ - /* RB_ENTRY(uv_signal_s) tree_entry; */ \ - struct { \ - struct uv_signal_s* rbe_left; \ - struct uv_signal_s* rbe_right; \ - struct uv_signal_s* rbe_parent; \ - int rbe_color; \ - } tree_entry; \ - /* Use two counters here so we don have to fiddle with atomics. */ \ - unsigned int caught_signals; \ - unsigned int dispatched_signals; - -#define UV_FS_EVENT_PRIVATE_FIELDS \ - uv_fs_event_cb cb; \ - UV_PLATFORM_FS_EVENT_FIELDS \ - -#endif /* UV_UNIX_H */ diff --git a/Framework/ext/libuv/uv-version.h b/Framework/ext/libuv/uv-version.h deleted file mode 100644 index 9e664dc..0000000 --- a/Framework/ext/libuv/uv-version.h +++ /dev/null @@ -1,43 +0,0 @@ -/* Copyright Joyent, Inc. and other Node contributors. All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -#ifndef UV_VERSION_H -#define UV_VERSION_H - - /* - * Versions with the same major number are ABI stable. API is allowed to - * evolve between minor releases, but only in a backwards compatible way. - * Make sure you update the -soname directives in configure.ac - * and uv.gyp whenever you bump UV_VERSION_MAJOR or UV_VERSION_MINOR (but - * not UV_VERSION_PATCH.) - */ - -#define UV_VERSION_MAJOR 2 -#define UV_VERSION_MINOR 0 -#define UV_VERSION_PATCH 0 -#define UV_VERSION_IS_RELEASE 0 -#define UV_VERSION_SUFFIX "dev" - -#define UV_VERSION_HEX ((UV_VERSION_MAJOR << 16) | \ - (UV_VERSION_MINOR << 8) | \ - (UV_VERSION_PATCH)) - -#endif /* UV_VERSION_H */ diff --git a/Framework/ext/libuv/uv-win.h b/Framework/ext/libuv/uv-win.h deleted file mode 100644 index 196a80b..0000000 --- a/Framework/ext/libuv/uv-win.h +++ /dev/null @@ -1,510 +0,0 @@ -/* Copyright Joyent, Inc. and other Node contributors. All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -#ifndef _WIN32_WINNT -# define _WIN32_WINNT 0x0600 -#endif - -#if !defined(_SSIZE_T_) && !defined(_SSIZE_T_DEFINED) -typedef intptr_t ssize_t; -# define _SSIZE_T_ -# define _SSIZE_T_DEFINED -#endif - -#include - -#ifndef LOCALE_INVARIANT -# define LOCALE_INVARIANT 0x007f -#endif - -#include -#include -#include - -#include - -#include "tree.h" -#include "uv-threadpool.h" - -#define MAX_PIPENAME_LEN 256 - -#ifndef S_IFLNK -# define S_IFLNK 0xA000 -#endif - -/* Signals supported by uv_signal and or uv_kill */ -#define SIGHUP 1 -#define SIGINT 2 -#define SIGILL 4 -#define SIGABRT_COMPAT 6 -#define SIGFPE 8 -#define SIGKILL 9 -#define SIGSEGV 11 -#define SIGTERM 15 -#define SIGBREAK 21 -#define SIGABRT 22 -#define SIGWINCH 28 - - -typedef int (WSAAPI* LPFN_WSARECV) - (SOCKET socket, - LPWSABUF buffers, - DWORD buffer_count, - LPDWORD bytes, - LPDWORD flags, - LPWSAOVERLAPPED overlapped, - LPWSAOVERLAPPED_COMPLETION_ROUTINE completion_routine); - -typedef int (WSAAPI* LPFN_WSARECVFROM) - (SOCKET socket, - LPWSABUF buffers, - DWORD buffer_count, - LPDWORD bytes, - LPDWORD flags, - struct sockaddr* addr, - LPINT addr_len, - LPWSAOVERLAPPED overlapped, - LPWSAOVERLAPPED_COMPLETION_ROUTINE completion_routine); - -#ifndef _NTDEF_ - typedef LONG NTSTATUS; - typedef NTSTATUS *PNTSTATUS; -#endif - -#ifndef RTL_CONDITION_VARIABLE_INIT - typedef PVOID CONDITION_VARIABLE, *PCONDITION_VARIABLE; -#endif - -typedef struct _AFD_POLL_HANDLE_INFO { - HANDLE Handle; - ULONG Events; - NTSTATUS Status; -} AFD_POLL_HANDLE_INFO, *PAFD_POLL_HANDLE_INFO; - -typedef struct _AFD_POLL_INFO { - LARGE_INTEGER Timeout; - ULONG NumberOfHandles; - ULONG Exclusive; - AFD_POLL_HANDLE_INFO Handles[1]; -} AFD_POLL_INFO, *PAFD_POLL_INFO; - -#define UV_MSAFD_PROVIDER_COUNT 3 - - -/** - * It should be possible to cast uv_buf_t[] to WSABUF[] - * see http://msdn.microsoft.com/en-us/library/ms741542(v=vs.85).aspx - */ -typedef struct uv_buf_t { - ULONG len; - char* base; -} uv_buf_t; - -typedef SOCKET uv_os_sock_t; -typedef HANDLE uv_os_fd_t; - -typedef HANDLE uv_thread_t; - -typedef HANDLE uv_sem_t; - -typedef CRITICAL_SECTION uv_mutex_t; - -typedef CONDITION_VARIABLE uv_cond_t; - -typedef struct { - unsigned int num_readers_; - CRITICAL_SECTION num_readers_lock_; - HANDLE write_semaphore_; -} uv_rwlock_t; - -typedef struct { - unsigned int n; - unsigned int count; - uv_mutex_t mutex; - uv_sem_t turnstile1; - uv_sem_t turnstile2; -} uv_barrier_t; - -typedef struct { - DWORD tls_index; -} uv_key_t; - -#define UV_ONCE_INIT { 0, NULL } - -typedef struct uv_once_s { - unsigned char ran; - HANDLE event; -} uv_once_t; - -/* Platform-specific definitions for uv_spawn support. */ -typedef unsigned char uv_uid_t; -typedef unsigned char uv_gid_t; - -typedef struct uv__dirent_s { - int d_type; - char d_name[1]; -} uv__dirent_t; - -#define HAVE_DIRENT_TYPES -#define UV__DT_DIR UV_DIRENT_DIR -#define UV__DT_FILE UV_DIRENT_FILE -#define UV__DT_LINK UV_DIRENT_LINK -#define UV__DT_FIFO UV_DIRENT_FIFO -#define UV__DT_SOCKET UV_DIRENT_SOCKET -#define UV__DT_CHAR UV_DIRENT_CHAR -#define UV__DT_BLOCK UV_DIRENT_BLOCK - -/* Platform-specific definitions for uv_dlopen support. */ -#define UV_DYNAMIC FAR WINAPI -typedef struct { - HMODULE handle; - char* errmsg; -} uv_lib_t; - -#define UV_LOOP_PRIVATE_FIELDS \ - /* The loop's I/O completion port */ \ - HANDLE iocp; \ - /* The current time according to the event loop. in msecs. */ \ - uint64_t time; \ - /* Tail of a single-linked circular queue of pending reqs. If the queue */ \ - /* is empty, tail_ is NULL. If there is only one item, */ \ - /* tail_->next_req == tail_ */ \ - uv_req_t* pending_reqs_tail; \ - /* Head of a single-linked list of closed handles */ \ - uv_handle_t* endgame_handles; \ - /* Timers */ \ - struct { \ - void* min; \ - unsigned int nelts; \ - } timer_heap; \ - uint64_t timer_counter; \ - /* Lists of active loop (prepare / check / idle) watchers */ \ - void* prepare_handles[2]; \ - void* check_handles[2]; \ - void* idle_handles[2]; \ - /* This handle holds the peer sockets for the fast variant of uv_poll_t */ \ - SOCKET poll_peer_sockets[UV_MSAFD_PROVIDER_COUNT]; \ - /* Threadpool */ \ - void* wq[2]; \ - uv_mutex_t wq_mutex; \ - uv_async_t wq_async; \ - /* Async handle */ \ - struct uv_req_s async_req; \ - void* async_handles[2]; \ - /* Global queue of loops */ \ - void* loops_queue[2]; - -#define UV_REQ_TYPE_PRIVATE \ - /* TODO: remove the req suffix */ \ - UV_ACCEPT, \ - UV_FS_EVENT_REQ, \ - UV_POLL_REQ, \ - UV_PROCESS_EXIT, \ - UV_READ, \ - UV_UDP_RECV, \ - UV_WAKEUP, \ - UV_SIGNAL_REQ, - -#define UV_REQ_PRIVATE_FIELDS \ - union { \ - /* Used by I/O operations */ \ - struct { \ - OVERLAPPED overlapped; \ - size_t queued_bytes; \ - } io; \ - } u; \ - struct uv_req_s* next_req; - -#define UV_WRITE_PRIVATE_FIELDS \ - int ipc_header; \ - uv_buf_t write_buffer; \ - HANDLE event_handle; \ - HANDLE wait_handle; - -#define UV_CONNECT_PRIVATE_FIELDS \ - /* empty */ - -#define UV_SHUTDOWN_PRIVATE_FIELDS \ - /* empty */ - -#define UV_UDP_SEND_PRIVATE_FIELDS \ - /* empty */ - -#define UV_PRIVATE_REQ_TYPES \ - typedef struct uv_pipe_accept_s { \ - UV_REQ_FIELDS \ - HANDLE pipeHandle; \ - struct uv_pipe_accept_s* next_pending; \ - } uv_pipe_accept_t; \ - \ - typedef struct uv_tcp_accept_s { \ - UV_REQ_FIELDS \ - SOCKET accept_socket; \ - char accept_buffer[sizeof(struct sockaddr_storage) * 2 + 32]; \ - HANDLE event_handle; \ - HANDLE wait_handle; \ - struct uv_tcp_accept_s* next_pending; \ - } uv_tcp_accept_t; \ - \ - typedef struct uv_read_s { \ - UV_REQ_FIELDS \ - HANDLE event_handle; \ - HANDLE wait_handle; \ - } uv_read_t; - -#define uv_stream_connection_fields \ - unsigned int write_reqs_pending; \ - uv_shutdown_t* shutdown_req; - -#define uv_stream_server_fields \ - uv_connection_cb connection_cb; - -#define UV_STREAM_PRIVATE_FIELDS \ - unsigned int reqs_pending; \ - int activecnt; \ - uv_read_t read_req; \ - union { \ - struct { uv_stream_connection_fields } conn; \ - struct { uv_stream_server_fields } serv; \ - } stream; - -#define uv_tcp_server_fields \ - uv_tcp_accept_t* accept_reqs; \ - unsigned int processed_accepts; \ - uv_tcp_accept_t* pending_accepts; \ - LPFN_ACCEPTEX func_acceptex; - -#define uv_tcp_connection_fields \ - uv_buf_t read_buffer; \ - LPFN_CONNECTEX func_connectex; - -#define UV_TCP_PRIVATE_FIELDS \ - SOCKET socket; \ - int delayed_error; \ - union { \ - struct { uv_tcp_server_fields } serv; \ - struct { uv_tcp_connection_fields } conn; \ - } tcp; - -#define UV_UDP_PRIVATE_FIELDS \ - SOCKET socket; \ - unsigned int reqs_pending; \ - int activecnt; \ - uv_req_t recv_req; \ - uv_buf_t recv_buffer; \ - struct sockaddr_storage recv_from; \ - int recv_from_len; \ - uv_udp_recv_cb recv_cb; \ - uv_alloc_cb alloc_cb; \ - LPFN_WSARECV func_wsarecv; \ - LPFN_WSARECVFROM func_wsarecvfrom; - -#define uv_pipe_server_fields \ - int pending_instances; \ - uv_pipe_accept_t* accept_reqs; \ - uv_pipe_accept_t* pending_accepts; - -#define uv_pipe_connection_fields \ - uv_timer_t* eof_timer; \ - uv_write_t ipc_header_write_req; \ - int ipc_pid; \ - uint64_t remaining_ipc_rawdata_bytes; \ - struct { \ - void* queue[2]; \ - int queue_len; \ - } pending_ipc_info; \ - uv_write_t* non_overlapped_writes_tail; \ - uv_mutex_t readfile_mutex; \ - volatile HANDLE readfile_thread; - -#define UV_PIPE_PRIVATE_FIELDS \ - HANDLE handle; \ - WCHAR* name; \ - union { \ - struct { uv_pipe_server_fields } serv; \ - struct { uv_pipe_connection_fields } conn; \ - } pipe; - -/* TODO: put the parser states in an union - TTY handles are always */ -/* half-duplex so read-state can safely overlap write-state. */ -#define UV_TTY_PRIVATE_FIELDS \ - HANDLE handle; \ - union { \ - struct { \ - /* Used for readable TTY handles */ \ - uv_buf_t read_line_buffer; \ - HANDLE read_raw_wait; \ - /* Fields used for translating win keystrokes into vt100 characters */ \ - char last_key[8]; \ - unsigned char last_key_offset; \ - unsigned char last_key_len; \ - WCHAR last_utf16_high_surrogate; \ - INPUT_RECORD last_input_record; \ - } rd; \ - struct { \ - /* Used for writable TTY handles */ \ - /* utf8-to-utf16 conversion state */ \ - unsigned int utf8_codepoint; \ - unsigned char utf8_bytes_left; \ - /* eol conversion state */ \ - unsigned char previous_eol; \ - /* ansi parser state */ \ - unsigned char ansi_parser_state; \ - unsigned char ansi_csi_argc; \ - unsigned short ansi_csi_argv[4]; \ - COORD saved_position; \ - WORD saved_attributes; \ - } wr; \ - } tty; - -#define UV_POLL_PRIVATE_FIELDS \ - SOCKET socket; \ - /* Used in fast mode */ \ - SOCKET peer_socket; \ - AFD_POLL_INFO afd_poll_info_1; \ - AFD_POLL_INFO afd_poll_info_2; \ - /* Used in fast and slow mode. */ \ - uv_req_t poll_req_1; \ - uv_req_t poll_req_2; \ - unsigned char submitted_events_1; \ - unsigned char submitted_events_2; \ - unsigned char mask_events_1; \ - unsigned char mask_events_2; \ - unsigned char events; - -#define UV_TIMER_PRIVATE_FIELDS \ - uv_timer_cb timer_cb; \ - void* heap_node[3]; \ - uint64_t timeout; \ - uint64_t repeat; \ - uint64_t start_id; - -#define UV_ASYNC_PRIVATE_FIELDS \ - void* queue[2]; \ - uv_async_cb async_cb; \ - LONG volatile async_sent; - -#define UV_PREPARE_PRIVATE_FIELDS \ - void* queue[2]; \ - uv_prepare_cb prepare_cb; - -#define UV_CHECK_PRIVATE_FIELDS \ - void* queue[2]; \ - uv_check_cb check_cb; - -#define UV_IDLE_PRIVATE_FIELDS \ - void* queue[2]; \ - uv_idle_cb idle_cb; - -#define UV_HANDLE_PRIVATE_FIELDS \ - uv_handle_t* endgame_next; \ - unsigned int flags; - -#define UV_GETADDRINFO_PRIVATE_FIELDS \ - struct uv__work work_req; \ - uv_getaddrinfo_cb getaddrinfo_cb; \ - void* alloc; \ - WCHAR* node; \ - WCHAR* service; \ - /* The addrinfoW field is used to store a pointer to the hints, and */ \ - /* later on to store the result of GetAddrInfoW. The final result will */ \ - /* be converted to struct addrinfo* and stored in the addrinfo field. */ \ - struct addrinfoW* addrinfow; \ - struct addrinfo* addrinfo; \ - int retcode; - -#define UV_GETNAMEINFO_PRIVATE_FIELDS \ - struct uv__work work_req; \ - uv_getnameinfo_cb getnameinfo_cb; \ - struct sockaddr_storage storage; \ - int flags; \ - char host[NI_MAXHOST]; \ - char service[NI_MAXSERV]; \ - int retcode; - -#define UV_PROCESS_PRIVATE_FIELDS \ - struct uv_process_exit_s { \ - UV_REQ_FIELDS \ - } exit_req; \ - BYTE* child_stdio_buffer; \ - int exit_signal; \ - HANDLE wait_handle; \ - HANDLE process_handle; \ - volatile char exit_cb_pending; - -#define UV_FS_PRIVATE_FIELDS \ - struct uv__work work_req; \ - int flags; \ - DWORD sys_errno_; \ - union { \ - /* TODO: remove me in 0.9. */ \ - WCHAR* pathw; \ - HANDLE hFile; \ - } file; \ - union { \ - struct { \ - int mode; \ - WCHAR* new_pathw; \ - int file_flags; \ - HANDLE hFile_out; \ - unsigned int nbufs; \ - uv_buf_t* bufs; \ - int64_t offset; \ - uv_buf_t bufsml[4]; \ - } info; \ - struct { \ - double atime; \ - double mtime; \ - } time; \ - } fs; - -#define UV_WORK_PRIVATE_FIELDS \ - struct uv__work work_req; - -#define UV_FS_EVENT_PRIVATE_FIELDS \ - struct uv_fs_event_req_s { \ - UV_REQ_FIELDS \ - } req; \ - HANDLE dir_handle; \ - int req_pending; \ - uv_fs_event_cb cb; \ - WCHAR* filew; \ - WCHAR* short_filew; \ - WCHAR* dirw; \ - char* buffer; - -#define UV_SIGNAL_PRIVATE_FIELDS \ - RB_ENTRY(uv_signal_s) tree_entry; \ - struct uv_req_s signal_req; \ - unsigned long pending_signum; - -#ifndef F_OK -#define F_OK 0 -#endif -#ifndef R_OK -#define R_OK 4 -#endif -#ifndef W_OK -#define W_OK 2 -#endif -#ifndef X_OK -#define X_OK 1 -#endif diff --git a/Framework/ext/libuv/uv.h b/Framework/ext/libuv/uv.h deleted file mode 100644 index c0442c6..0000000 --- a/Framework/ext/libuv/uv.h +++ /dev/null @@ -1,1561 +0,0 @@ -/* Copyright Joyent, Inc. and other Node contributors. All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -/* See https://github.com/libuv/libuv#documentation for documentation. */ - -#ifndef UV_H -#define UV_H -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef _WIN32 - /* Windows - set up dll import/export decorators. */ -# if defined(BUILDING_UV_SHARED) - /* Building shared library. */ -# define UV_EXTERN __declspec(dllexport) -# elif defined(USING_UV_SHARED) - /* Using shared library. */ -# define UV_EXTERN __declspec(dllimport) -# else - /* Building static library. */ -# define UV_EXTERN /* nothing */ -# endif -#elif __GNUC__ >= 4 -# define UV_EXTERN __attribute__((visibility("default"))) -#else -# define UV_EXTERN /* nothing */ -#endif - -#include "uv-errno.h" -#include "uv-version.h" -#include -#include - -#if defined(_WIN32) -# include "uv-win.h" -# if !defined(BUILDING_UV_SHARED) -# include "io.h" /* this header is not correct in a shared library environment */ -# endif -#else -# include "uv-unix.h" -#endif - -/* Expand this list if necessary. */ -#define UV_ERRNO_MAP(XX) \ - XX(E2BIG, "argument list too long") \ - XX(EACCES, "permission denied") \ - XX(EADDRINUSE, "address already in use") \ - XX(EADDRNOTAVAIL, "address not available") \ - XX(EAFNOSUPPORT, "address family not supported") \ - XX(EAGAIN, "resource temporarily unavailable") \ - XX(EAI_ADDRFAMILY, "address family not supported") \ - XX(EAI_AGAIN, "temporary failure") \ - XX(EAI_BADFLAGS, "bad ai_flags value") \ - XX(EAI_BADHINTS, "invalid value for hints") \ - XX(EAI_CANCELED, "request canceled") \ - XX(EAI_FAIL, "permanent failure") \ - XX(EAI_FAMILY, "ai_family not supported") \ - XX(EAI_MEMORY, "out of memory") \ - XX(EAI_NODATA, "no address") \ - XX(EAI_NONAME, "unknown node or service") \ - XX(EAI_OVERFLOW, "argument buffer overflow") \ - XX(EAI_PROTOCOL, "resolved protocol is unknown") \ - XX(EAI_SERVICE, "service not available for socket type") \ - XX(EAI_SOCKTYPE, "socket type not supported") \ - XX(EALREADY, "connection already in progress") \ - XX(EBADF, "bad file descriptor") \ - XX(EBUSY, "resource busy or locked") \ - XX(ECANCELED, "operation canceled") \ - XX(ECHARSET, "invalid Unicode character") \ - XX(ECONNABORTED, "software caused connection abort") \ - XX(ECONNREFUSED, "connection refused") \ - XX(ECONNRESET, "connection reset by peer") \ - XX(EDESTADDRREQ, "destination address required") \ - XX(EEXIST, "file already exists") \ - XX(EFAULT, "bad address in system call argument") \ - XX(EFBIG, "file too large") \ - XX(EHOSTUNREACH, "host is unreachable") \ - XX(EINTR, "interrupted system call") \ - XX(EINVAL, "invalid argument") \ - XX(EIO, "i/o error") \ - XX(EISCONN, "socket is already connected") \ - XX(EISDIR, "illegal operation on a directory") \ - XX(ELOOP, "too many symbolic links encountered") \ - XX(EMFILE, "too many open files") \ - XX(EMSGSIZE, "message too long") \ - XX(ENAMETOOLONG, "name too long") \ - XX(ENETDOWN, "network is down") \ - XX(ENETUNREACH, "network is unreachable") \ - XX(ENFILE, "file table overflow") \ - XX(ENOBUFS, "no buffer space available") \ - XX(ENODEV, "no such device") \ - XX(ENOENT, "no such file or directory") \ - XX(ENOMEM, "not enough memory") \ - XX(ENONET, "machine is not on the network") \ - XX(ENOPROTOOPT, "protocol not available") \ - XX(ENOSPC, "no space left on device") \ - XX(ENOSYS, "function not implemented") \ - XX(ENOTCONN, "socket is not connected") \ - XX(ENOTDIR, "not a directory") \ - XX(ENOTEMPTY, "directory not empty") \ - XX(ENOTSOCK, "socket operation on non-socket") \ - XX(ENOTSUP, "operation not supported on socket") \ - XX(EPERM, "operation not permitted") \ - XX(EPIPE, "broken pipe") \ - XX(EPROTO, "protocol error") \ - XX(EPROTONOSUPPORT, "protocol not supported") \ - XX(EPROTOTYPE, "protocol wrong type for socket") \ - XX(ERANGE, "result too large") \ - XX(EROFS, "read-only file system") \ - XX(ESHUTDOWN, "cannot send after transport endpoint shutdown") \ - XX(ESPIPE, "invalid seek") \ - XX(ESRCH, "no such process") \ - XX(ETIMEDOUT, "connection timed out") \ - XX(ETXTBSY, "text file is busy") \ - XX(EXDEV, "cross-device link not permitted") \ - XX(UNKNOWN, "unknown error") \ - XX(EOF, "end of file") \ - XX(ENXIO, "no such device or address") \ - XX(EMLINK, "too many links") \ - XX(EHOSTDOWN, "host is down") \ - -#define UV_HANDLE_TYPE_MAP(XX) \ - XX(ASYNC, async) \ - XX(CHECK, check) \ - XX(FS_EVENT, fs_event) \ - XX(FS_POLL, fs_poll) \ - XX(HANDLE, handle) \ - XX(IDLE, idle) \ - XX(NAMED_PIPE, pipe) \ - XX(POLL, poll) \ - XX(PREPARE, prepare) \ - XX(PROCESS, process) \ - XX(STREAM, stream) \ - XX(TCP, tcp) \ - XX(TIMER, timer) \ - XX(TTY, tty) \ - XX(UDP, udp) \ - XX(SIGNAL, signal) \ - -#define UV_REQ_TYPE_MAP(XX) \ - XX(REQ, req) \ - XX(CONNECT, connect) \ - XX(WRITE, write) \ - XX(SHUTDOWN, shutdown) \ - XX(UDP_SEND, udp_send) \ - XX(FS, fs) \ - XX(WORK, work) \ - XX(GETADDRINFO, getaddrinfo) \ - XX(GETNAMEINFO, getnameinfo) \ - -typedef enum { -#define XX(code, _) UV_ ## code = UV__ ## code, - UV_ERRNO_MAP(XX) -#undef XX - UV_ERRNO_MAX = UV__EOF - 1 -} uv_errno_t; - -typedef enum { - UV_UNKNOWN_HANDLE = 0, -#define XX(uc, lc) UV_##uc, - UV_HANDLE_TYPE_MAP(XX) -#undef XX - UV_FILE, - UV_HANDLE_TYPE_MAX -} uv_handle_type; - -typedef enum { - UV_UNKNOWN_REQ = 0, -#define XX(uc, lc) UV_##uc, - UV_REQ_TYPE_MAP(XX) -#undef XX - UV_REQ_TYPE_PRIVATE - UV_REQ_TYPE_MAX -} uv_req_type; - - -/* Handle types. */ -typedef struct uv_loop_s uv_loop_t; -typedef struct uv_handle_s uv_handle_t; -typedef struct uv_stream_s uv_stream_t; -typedef struct uv_tcp_s uv_tcp_t; -typedef struct uv_udp_s uv_udp_t; -typedef struct uv_pipe_s uv_pipe_t; -typedef struct uv_tty_s uv_tty_t; -typedef struct uv_poll_s uv_poll_t; -typedef struct uv_timer_s uv_timer_t; -typedef struct uv_prepare_s uv_prepare_t; -typedef struct uv_check_s uv_check_t; -typedef struct uv_idle_s uv_idle_t; -typedef struct uv_async_s uv_async_t; -typedef struct uv_process_s uv_process_t; -typedef struct uv_fs_event_s uv_fs_event_t; -typedef struct uv_fs_poll_s uv_fs_poll_t; -typedef struct uv_signal_s uv_signal_t; - -/* Request types. */ -typedef struct uv_req_s uv_req_t; -typedef struct uv_getaddrinfo_s uv_getaddrinfo_t; -typedef struct uv_getnameinfo_s uv_getnameinfo_t; -typedef struct uv_shutdown_s uv_shutdown_t; -typedef struct uv_write_s uv_write_t; -typedef struct uv_connect_s uv_connect_t; -typedef struct uv_udp_send_s uv_udp_send_t; -typedef struct uv_fs_s uv_fs_t; -typedef struct uv_work_s uv_work_t; - -/* None of the above. */ -typedef struct uv_cpu_info_s uv_cpu_info_t; -typedef struct uv_interface_address_s uv_interface_address_t; -typedef struct uv_dirent_s uv_dirent_t; -typedef struct uv_passwd_s uv_passwd_t; - -typedef enum { - UV_LOOP_BLOCK_SIGNAL -} uv_loop_option; - -typedef enum { - UV_RUN_DEFAULT = 0, - UV_RUN_ONCE, - UV_RUN_NOWAIT -} uv_run_mode; - - -UV_EXTERN unsigned int uv_version(void); -UV_EXTERN const char* uv_version_string(void); - -typedef void* (*uv_malloc_func)(size_t size); -typedef void* (*uv_realloc_func)(void* ptr, size_t size); -typedef void* (*uv_calloc_func)(size_t count, size_t size); -typedef void (*uv_free_func)(void* ptr); - -UV_EXTERN int uv_replace_allocator(uv_malloc_func malloc_func, - uv_realloc_func realloc_func, - uv_calloc_func calloc_func, - uv_free_func free_func); - -UV_EXTERN uv_loop_t* uv_default_loop(void); -UV_EXTERN int uv_loop_init(uv_loop_t* loop); -UV_EXTERN int uv_loop_close(uv_loop_t* loop); -/* - * NOTE: - * This function is DEPRECATED (to be removed after 0.12), users should - * allocate the loop manually and use uv_loop_init instead. - */ -UV_EXTERN uv_loop_t* uv_loop_new(void); -/* - * NOTE: - * This function is DEPRECATED (to be removed after 0.12). Users should use - * uv_loop_close and free the memory manually instead. - */ -UV_EXTERN void uv_loop_delete(uv_loop_t*); -UV_EXTERN size_t uv_loop_size(void); -UV_EXTERN int uv_loop_alive(const uv_loop_t* loop); -UV_EXTERN int uv_loop_configure(uv_loop_t* loop, uv_loop_option option, ...); -UV_EXTERN int uv_loop_fork(uv_loop_t* loop); - -UV_EXTERN int uv_run(uv_loop_t*, uv_run_mode mode); -UV_EXTERN void uv_stop(uv_loop_t*); - -UV_EXTERN void uv_ref(uv_handle_t*); -UV_EXTERN void uv_unref(uv_handle_t*); -UV_EXTERN int uv_has_ref(const uv_handle_t*); - -UV_EXTERN void uv_update_time(uv_loop_t*); -UV_EXTERN uint64_t uv_now(const uv_loop_t*); - -UV_EXTERN uv_os_fd_t uv_backend_fd(const uv_loop_t*); -UV_EXTERN int uv_backend_timeout(const uv_loop_t*); - -typedef void (*uv_alloc_cb)(uv_handle_t* handle, - size_t suggested_size, - uv_buf_t* buf); -typedef void (*uv_read_cb)(uv_stream_t* stream, - ssize_t nread, - const uv_buf_t* buf); -typedef void (*uv_write_cb)(uv_write_t* req, int status); -typedef void (*uv_connect_cb)(uv_connect_t* req, int status); -typedef void (*uv_shutdown_cb)(uv_shutdown_t* req, int status); -typedef void (*uv_connection_cb)(uv_stream_t* server, int status); -typedef void (*uv_close_cb)(uv_handle_t* handle); -typedef void (*uv_poll_cb)(uv_poll_t* handle, int status, int events); -typedef void (*uv_timer_cb)(uv_timer_t* handle); -typedef void (*uv_async_cb)(uv_async_t* handle); -typedef void (*uv_prepare_cb)(uv_prepare_t* handle); -typedef void (*uv_check_cb)(uv_check_t* handle); -typedef void (*uv_idle_cb)(uv_idle_t* handle); -typedef void (*uv_exit_cb)(uv_process_t*, int64_t exit_status, int term_signal); -typedef void (*uv_walk_cb)(uv_handle_t* handle, void* arg); -typedef void (*uv_fs_cb)(uv_fs_t* req); -typedef void (*uv_work_cb)(uv_work_t* req); -typedef void (*uv_after_work_cb)(uv_work_t* req, int status); -typedef void (*uv_getaddrinfo_cb)(uv_getaddrinfo_t* req, - int status, - struct addrinfo* res); -typedef void (*uv_getnameinfo_cb)(uv_getnameinfo_t* req, - int status, - const char* hostname, - const char* service); - -typedef struct { - long tv_sec; - long tv_nsec; -} uv_timespec_t; - - -typedef struct { - uint64_t st_dev; - uint64_t st_mode; - uint64_t st_nlink; - uint64_t st_uid; - uint64_t st_gid; - uint64_t st_rdev; - uint64_t st_ino; - uint64_t st_size; - uint64_t st_blksize; - uint64_t st_blocks; - uint64_t st_flags; - uint64_t st_gen; - uv_timespec_t st_atim; - uv_timespec_t st_mtim; - uv_timespec_t st_ctim; - uv_timespec_t st_birthtim; -} uv_stat_t; - - -typedef void (*uv_fs_event_cb)(uv_fs_event_t* handle, - const char* filename, - int events, - int status); - -typedef void (*uv_fs_poll_cb)(uv_fs_poll_t* handle, - int status, - const uv_stat_t* prev, - const uv_stat_t* curr); - -typedef void (*uv_signal_cb)(uv_signal_t* handle, int signum); - - -typedef enum { - UV_LEAVE_GROUP = 0, - UV_JOIN_GROUP -} uv_membership; - - -UV_EXTERN int uv_translate_sys_error(int sys_errno); - -UV_EXTERN const char* uv_strerror(int err); -UV_EXTERN const char* uv_err_name(int err); - - -#define UV_REQ_FIELDS \ - /* public */ \ - void* data; \ - /* read-only */ \ - uv_req_type type; \ - /* private */ \ - void* active_queue[2]; \ - void* reserved[4]; \ - UV_REQ_PRIVATE_FIELDS \ - -/* Abstract base class of all requests. */ -struct uv_req_s { - UV_REQ_FIELDS -}; - - -/* Platform-specific request types. */ -UV_PRIVATE_REQ_TYPES - - -UV_EXTERN int uv_shutdown(uv_shutdown_t* req, - uv_stream_t* handle, - uv_shutdown_cb cb); - -struct uv_shutdown_s { - UV_REQ_FIELDS - uv_stream_t* handle; - uv_shutdown_cb cb; - UV_SHUTDOWN_PRIVATE_FIELDS -}; - - -#define UV_HANDLE_FIELDS \ - /* public */ \ - void* data; \ - /* read-only */ \ - uv_loop_t* loop; \ - uv_handle_type type; \ - /* private */ \ - uv_close_cb close_cb; \ - void* handle_queue[2]; \ - UV_HANDLE_PRIVATE_FIELDS \ - -/* The abstract base class of all handles. */ -struct uv_handle_s { - UV_HANDLE_FIELDS -}; - -UV_EXTERN size_t uv_handle_size(uv_handle_type type); -UV_EXTERN size_t uv_req_size(uv_req_type type); - -UV_EXTERN int uv_is_active(const uv_handle_t* handle); - -UV_EXTERN void uv_walk(uv_loop_t* loop, uv_walk_cb walk_cb, void* arg); - -/* Helpers for ad hoc debugging, no API/ABI stability guaranteed. */ -UV_EXTERN void uv_print_all_handles(uv_loop_t* loop, /*FILE*/void* stream); -UV_EXTERN void uv_print_active_handles(uv_loop_t* loop, /*FILE*/void* stream); - -UV_EXTERN void uv_close(uv_handle_t* handle, uv_close_cb close_cb); - -UV_EXTERN int uv_send_buffer_size(uv_handle_t* handle, int* value); -UV_EXTERN int uv_recv_buffer_size(uv_handle_t* handle, int* value); - -UV_EXTERN int uv_fileno(const uv_handle_t* handle, uv_os_fd_t* fd); - -UV_EXTERN uv_buf_t uv_buf_init(char* base, unsigned int len); - - -/* - * The following functions are declared 'static inline' to ensure that they - * end up in the static linkage namespace of the caller and thus point to - * the correct (caller's) copy of MSVCRT for resolving the `fd` pseudo-handle - * to the intended kernel `HANDLE`. - * Thus, they are also not included when building a shared library, - * as their definition would not be correct when linked into that environment. - */ -#if !defined(BUILDING_UV_SHARED) -#if defined(_MSC_VER) -# define INLINE __inline -#elif defined(__GNUC__) -# define INLINE __inline__ -#else -# define INLINE inline -#endif - -static INLINE uv_os_fd_t uv_get_osfhandle(int fd) { -#ifdef _WIN32 - /* - * _get_osfhandle() raises an assert in debug builds if the FD is invalid. - * So if you plan on using invalid fd, you will need to install a _CrtSetReportHook handler - */ - return (HANDLE) _get_osfhandle(fd); -#else - return fd; -#endif -} - - -static INLINE uv_os_fd_t uv_convert_fd_to_handle(int fd) { -#ifdef _WIN32 - HANDLE new_handle; - if (!DuplicateHandle(GetCurrentProcess(), (HANDLE) _get_osfhandle(fd), - GetCurrentProcess(), &new_handle, - 0, FALSE, DUPLICATE_SAME_ACCESS)) { - return INVALID_HANDLE_VALUE; - } - _close(fd); - return new_handle; -#else - return fd; -#endif -} - -#undef INLINE - -#endif /* BUILDING_UV_SHARED */ - - -#ifdef _WIN32 -#define UV_STDIN_FD ((HANDLE)-10) -#define UV_STDOUT_FD ((HANDLE)-11) -#define UV_STDERR_FD ((HANDLE)-12) -#else -#define UV_STDIN_FD (0) -#define UV_STDOUT_FD (1) -#define UV_STDERR_FD (2) -#endif - - -#define UV_STREAM_FIELDS \ - /* number of bytes queued for writing */ \ - size_t write_queue_size; \ - uv_alloc_cb alloc_cb; \ - uv_read_cb read_cb; \ - /* private */ \ - UV_STREAM_PRIVATE_FIELDS - -/* - * uv_stream_t is a subclass of uv_handle_t. - * - * uv_stream is an abstract class. - * - * uv_stream_t is the parent class of uv_tcp_t, uv_pipe_t and uv_tty_t. - */ -struct uv_stream_s { - UV_HANDLE_FIELDS - UV_STREAM_FIELDS -}; - -UV_EXTERN int uv_listen(uv_stream_t* stream, int backlog, uv_connection_cb cb); -UV_EXTERN int uv_accept(uv_stream_t* server, uv_stream_t* client); - -UV_EXTERN int uv_read_start(uv_stream_t*, - uv_alloc_cb alloc_cb, - uv_read_cb read_cb); -UV_EXTERN int uv_read_stop(uv_stream_t*); - -UV_EXTERN int uv_write(uv_write_t* req, - uv_stream_t* handle, - const uv_buf_t bufs[], - unsigned int nbufs, - uv_write_cb cb); -UV_EXTERN int uv_write2(uv_write_t* req, - uv_stream_t* handle, - const uv_buf_t bufs[], - unsigned int nbufs, - uv_stream_t* send_handle, - uv_write_cb cb); -UV_EXTERN int uv_try_write(uv_stream_t* handle, - const uv_buf_t bufs[], - unsigned int nbufs); - -/* uv_write_t is a subclass of uv_req_t. */ -struct uv_write_s { - UV_REQ_FIELDS - uv_write_cb cb; - uv_stream_t* send_handle; - uv_stream_t* handle; - UV_WRITE_PRIVATE_FIELDS -}; - - -UV_EXTERN int uv_is_readable(const uv_stream_t* handle); -UV_EXTERN int uv_is_writable(const uv_stream_t* handle); - -UV_EXTERN int uv_stream_set_blocking(uv_stream_t* handle, int blocking); - -UV_EXTERN int uv_is_closing(const uv_handle_t* handle); - - -/* - * uv_tcp_t is a subclass of uv_stream_t. - * - * Represents a TCP stream or TCP server. - */ -struct uv_tcp_s { - UV_HANDLE_FIELDS - UV_STREAM_FIELDS - UV_TCP_PRIVATE_FIELDS -}; - -UV_EXTERN int uv_tcp_init(uv_loop_t*, uv_tcp_t* handle); -UV_EXTERN int uv_tcp_init_ex(uv_loop_t*, uv_tcp_t* handle, unsigned int flags); -UV_EXTERN int uv_tcp_open(uv_tcp_t* handle, uv_os_sock_t sock); -UV_EXTERN int uv_tcp_nodelay(uv_tcp_t* handle, int enable); -UV_EXTERN int uv_tcp_keepalive(uv_tcp_t* handle, - int enable, - unsigned int delay); -UV_EXTERN int uv_tcp_simultaneous_accepts(uv_tcp_t* handle, int enable); - -enum uv_tcp_flags { - /* Used with uv_tcp_bind, when an IPv6 address is used. */ - UV_TCP_IPV6ONLY = 1 -}; - -UV_EXTERN int uv_tcp_bind(uv_tcp_t* handle, - const struct sockaddr* addr, - unsigned int flags); -UV_EXTERN int uv_tcp_getsockname(const uv_tcp_t* handle, - struct sockaddr* name, - int* namelen); -UV_EXTERN int uv_tcp_getpeername(const uv_tcp_t* handle, - struct sockaddr* name, - int* namelen); -UV_EXTERN int uv_tcp_connect(uv_connect_t* req, - uv_tcp_t* handle, - const struct sockaddr* addr, - uv_connect_cb cb); - -/* uv_connect_t is a subclass of uv_req_t. */ -struct uv_connect_s { - UV_REQ_FIELDS - uv_connect_cb cb; - uv_stream_t* handle; - UV_CONNECT_PRIVATE_FIELDS -}; - - -/* - * UDP support. - */ - -enum uv_udp_flags { - /* Disables dual stack mode. */ - UV_UDP_IPV6ONLY = 1, - /* - * Indicates message was truncated because read buffer was too small. The - * remainder was discarded by the OS. Used in uv_udp_recv_cb. - */ - UV_UDP_PARTIAL = 2, - /* - * Indicates if SO_REUSEADDR will be set when binding the handle. - * This sets the SO_REUSEPORT socket flag on the BSDs and OS X. On other - * Unix platforms, it sets the SO_REUSEADDR flag. What that means is that - * multiple threads or processes can bind to the same address without error - * (provided they all set the flag) but only the last one to bind will receive - * any traffic, in effect "stealing" the port from the previous listener. - */ - UV_UDP_REUSEADDR = 4 -}; - -typedef void (*uv_udp_send_cb)(uv_udp_send_t* req, int status); -typedef void (*uv_udp_recv_cb)(uv_udp_t* handle, - ssize_t nread, - const uv_buf_t* buf, - const struct sockaddr* addr, - unsigned flags); - -/* uv_udp_t is a subclass of uv_handle_t. */ -struct uv_udp_s { - UV_HANDLE_FIELDS - /* read-only */ - /* - * Number of bytes queued for sending. This field strictly shows how much - * information is currently queued. - */ - size_t send_queue_size; - /* - * Number of send requests currently in the queue awaiting to be processed. - */ - size_t send_queue_count; - UV_UDP_PRIVATE_FIELDS -}; - -/* uv_udp_send_t is a subclass of uv_req_t. */ -struct uv_udp_send_s { - UV_REQ_FIELDS - uv_udp_t* handle; - uv_udp_send_cb cb; - UV_UDP_SEND_PRIVATE_FIELDS -}; - -UV_EXTERN int uv_udp_init(uv_loop_t*, uv_udp_t* handle); -UV_EXTERN int uv_udp_init_ex(uv_loop_t*, uv_udp_t* handle, unsigned int flags); -UV_EXTERN int uv_udp_open(uv_udp_t* handle, uv_os_sock_t sock); -UV_EXTERN int uv_udp_bind(uv_udp_t* handle, - const struct sockaddr* addr, - unsigned int flags); - -UV_EXTERN int uv_udp_getsockname(const uv_udp_t* handle, - struct sockaddr* name, - int* namelen); -UV_EXTERN int uv_udp_set_membership(uv_udp_t* handle, - const char* multicast_addr, - const char* interface_addr, - uv_membership membership); -UV_EXTERN int uv_udp_set_multicast_loop(uv_udp_t* handle, int on); -UV_EXTERN int uv_udp_set_multicast_ttl(uv_udp_t* handle, int ttl); -UV_EXTERN int uv_udp_set_multicast_interface(uv_udp_t* handle, - const char* interface_addr); -UV_EXTERN int uv_udp_set_broadcast(uv_udp_t* handle, int on); -UV_EXTERN int uv_udp_set_ttl(uv_udp_t* handle, int ttl); -UV_EXTERN int uv_udp_send(uv_udp_send_t* req, - uv_udp_t* handle, - const uv_buf_t bufs[], - unsigned int nbufs, - const struct sockaddr* addr, - uv_udp_send_cb send_cb); -UV_EXTERN int uv_udp_try_send(uv_udp_t* handle, - const uv_buf_t bufs[], - unsigned int nbufs, - const struct sockaddr* addr); -UV_EXTERN int uv_udp_recv_start(uv_udp_t* handle, - uv_alloc_cb alloc_cb, - uv_udp_recv_cb recv_cb); -UV_EXTERN int uv_udp_recv_stop(uv_udp_t* handle); - - -/* - * uv_tty_t is a subclass of uv_stream_t. - * - * Representing a stream for the console. - */ -struct uv_tty_s { - UV_HANDLE_FIELDS - UV_STREAM_FIELDS - UV_TTY_PRIVATE_FIELDS -}; - -typedef enum { - /* Initial/normal terminal mode */ - UV_TTY_MODE_NORMAL, - /* Raw input mode (On Windows, ENABLE_WINDOW_INPUT is also enabled) */ - UV_TTY_MODE_RAW, - /* Binary-safe I/O mode for IPC (Unix-only) */ - UV_TTY_MODE_IO -} uv_tty_mode_t; - -UV_EXTERN int uv_tty_init(uv_loop_t*, uv_tty_t*, uv_os_fd_t fd, int readable); -UV_EXTERN int uv_tty_set_mode(uv_tty_t*, uv_tty_mode_t mode); -UV_EXTERN int uv_tty_reset_mode(void); -UV_EXTERN int uv_tty_get_winsize(uv_tty_t*, int* width, int* height); - -#ifdef __cplusplus -extern "C++" { - -inline int uv_tty_set_mode(uv_tty_t* handle, int mode) { - return uv_tty_set_mode(handle, static_cast(mode)); -} - -} -#endif - -UV_EXTERN uv_handle_type uv_guess_handle(uv_os_fd_t file); - -/* - * uv_pipe_t is a subclass of uv_stream_t. - * - * Representing a pipe stream or pipe server. On Windows this is a Named - * Pipe. On Unix this is a Unix domain socket. - */ -struct uv_pipe_s { - UV_HANDLE_FIELDS - UV_STREAM_FIELDS - int ipc; /* non-zero if this pipe is used for passing handles */ - UV_PIPE_PRIVATE_FIELDS -}; - -UV_EXTERN int uv_pipe_init(uv_loop_t*, uv_pipe_t* handle, int ipc); -UV_EXTERN int uv_pipe_open(uv_pipe_t*, uv_os_fd_t file); -UV_EXTERN int uv_pipe_bind(uv_pipe_t* handle, const char* name); -UV_EXTERN void uv_pipe_connect(uv_connect_t* req, - uv_pipe_t* handle, - const char* name, - uv_connect_cb cb); -UV_EXTERN int uv_pipe_getsockname(const uv_pipe_t* handle, - char* buffer, - size_t* size); -UV_EXTERN int uv_pipe_getpeername(const uv_pipe_t* handle, - char* buffer, - size_t* size); -UV_EXTERN void uv_pipe_pending_instances(uv_pipe_t* handle, int count); -UV_EXTERN int uv_pipe_pending_count(uv_pipe_t* handle); -UV_EXTERN uv_handle_type uv_pipe_pending_type(uv_pipe_t* handle); - - -struct uv_poll_s { - UV_HANDLE_FIELDS - uv_poll_cb poll_cb; - UV_POLL_PRIVATE_FIELDS -}; - -enum uv_poll_event { - UV_READABLE = 1, - UV_WRITABLE = 2, - UV_DISCONNECT = 4 -}; - -UV_EXTERN int uv_poll_init(uv_loop_t* loop, - uv_poll_t* handle, - uv_os_sock_t socket); -UV_EXTERN int uv_poll_start(uv_poll_t* handle, int events, uv_poll_cb cb); -UV_EXTERN int uv_poll_stop(uv_poll_t* handle); - - -struct uv_prepare_s { - UV_HANDLE_FIELDS - UV_PREPARE_PRIVATE_FIELDS -}; - -UV_EXTERN int uv_prepare_init(uv_loop_t*, uv_prepare_t* prepare); -UV_EXTERN int uv_prepare_start(uv_prepare_t* prepare, uv_prepare_cb cb); -UV_EXTERN int uv_prepare_stop(uv_prepare_t* prepare); - - -struct uv_check_s { - UV_HANDLE_FIELDS - UV_CHECK_PRIVATE_FIELDS -}; - -UV_EXTERN int uv_check_init(uv_loop_t*, uv_check_t* check); -UV_EXTERN int uv_check_start(uv_check_t* check, uv_check_cb cb); -UV_EXTERN int uv_check_stop(uv_check_t* check); - - -struct uv_idle_s { - UV_HANDLE_FIELDS - UV_IDLE_PRIVATE_FIELDS -}; - -UV_EXTERN int uv_idle_init(uv_loop_t*, uv_idle_t* idle); -UV_EXTERN int uv_idle_start(uv_idle_t* idle, uv_idle_cb cb); -UV_EXTERN int uv_idle_stop(uv_idle_t* idle); - - -struct uv_async_s { - UV_HANDLE_FIELDS - UV_ASYNC_PRIVATE_FIELDS -}; - -UV_EXTERN int uv_async_init(uv_loop_t*, - uv_async_t* async, - uv_async_cb async_cb); -UV_EXTERN int uv_async_send(uv_async_t* async); - - -/* - * uv_timer_t is a subclass of uv_handle_t. - * - * Used to get woken up at a specified time in the future. - */ -struct uv_timer_s { - UV_HANDLE_FIELDS - UV_TIMER_PRIVATE_FIELDS -}; - -UV_EXTERN int uv_timer_init(uv_loop_t*, uv_timer_t* handle); -UV_EXTERN int uv_timer_start(uv_timer_t* handle, - uv_timer_cb cb, - uint64_t timeout, - uint64_t repeat); -UV_EXTERN int uv_timer_stop(uv_timer_t* handle); -UV_EXTERN int uv_timer_again(uv_timer_t* handle); -UV_EXTERN void uv_timer_set_repeat(uv_timer_t* handle, uint64_t repeat); -UV_EXTERN uint64_t uv_timer_get_repeat(const uv_timer_t* handle); - - -/* - * uv_getaddrinfo_t is a subclass of uv_req_t. - * - * Request object for uv_getaddrinfo. - */ -struct uv_getaddrinfo_s { - UV_REQ_FIELDS - /* read-only */ - uv_loop_t* loop; - /* struct addrinfo* addrinfo is marked as private, but it really isn't. */ - UV_GETADDRINFO_PRIVATE_FIELDS -}; - - -UV_EXTERN int uv_getaddrinfo(uv_loop_t* loop, - uv_getaddrinfo_t* req, - uv_getaddrinfo_cb getaddrinfo_cb, - const char* node, - const char* service, - const struct addrinfo* hints); -UV_EXTERN void uv_freeaddrinfo(struct addrinfo* ai); - - -/* -* uv_getnameinfo_t is a subclass of uv_req_t. -* -* Request object for uv_getnameinfo. -*/ -struct uv_getnameinfo_s { - UV_REQ_FIELDS - /* read-only */ - uv_loop_t* loop; - /* host and service are marked as private, but they really aren't. */ - UV_GETNAMEINFO_PRIVATE_FIELDS -}; - -UV_EXTERN int uv_getnameinfo(uv_loop_t* loop, - uv_getnameinfo_t* req, - uv_getnameinfo_cb getnameinfo_cb, - const struct sockaddr* addr, - int flags); - - -/* uv_spawn() options. */ -typedef enum { - UV_IGNORE = 0x00, - UV_CREATE_PIPE = 0x01, - UV_INHERIT_FD = 0x02, - UV_INHERIT_STREAM = 0x04, - - /* - * When UV_CREATE_PIPE is specified, UV_READABLE_PIPE and UV_WRITABLE_PIPE - * determine the direction of flow, from the child process' perspective. Both - * flags may be specified to create a duplex data stream. - */ - UV_READABLE_PIPE = 0x10, - UV_WRITABLE_PIPE = 0x20 -} uv_stdio_flags; - -typedef struct uv_stdio_container_s { - uv_stdio_flags flags; - - union { - uv_stream_t* stream; - uv_os_fd_t file; - } data; -} uv_stdio_container_t; - -typedef struct uv_process_options_s { - uv_exit_cb exit_cb; /* Called after the process exits. */ - const char* file; /* Path to program to execute. */ - /* - * Command line arguments. args[0] should be the path to the program. On - * Windows this uses CreateProcess which concatenates the arguments into a - * string this can cause some strange errors. See the note at - * windows_verbatim_arguments. - */ - char** args; - /* - * This will be set as the environ variable in the subprocess. If this is - * NULL then the parents environ will be used. - */ - char** env; - /* - * If non-null this represents a directory the subprocess should execute - * in. Stands for current working directory. - */ - const char* cwd; - /* - * Various flags that control how uv_spawn() behaves. See the definition of - * `enum uv_process_flags` below. - */ - unsigned int flags; - /* - * The `stdio` field points to an array of uv_stdio_container_t structs that - * describe the file descriptors that will be made available to the child - * process. The convention is that stdio[0] points to stdin, fd 1 is used for - * stdout, and fd 2 is stderr. - * - * Note that on windows file descriptors greater than 2 are available to the - * child process only if the child processes uses the MSVCRT runtime. - */ - int stdio_count; - uv_stdio_container_t* stdio; - /* - * Libuv can change the child process' user/group id. This happens only when - * the appropriate bits are set in the flags fields. This is not supported on - * windows; uv_spawn() will fail and set the error to UV_ENOTSUP. - */ - uv_uid_t uid; - uv_gid_t gid; -} uv_process_options_t; - -/* - * These are the flags that can be used for the uv_process_options.flags field. - */ -enum uv_process_flags { - /* - * Set the child process' user id. The user id is supplied in the `uid` field - * of the options struct. This does not work on windows; setting this flag - * will cause uv_spawn() to fail. - */ - UV_PROCESS_SETUID = (1 << 0), - /* - * Set the child process' group id. The user id is supplied in the `gid` - * field of the options struct. This does not work on windows; setting this - * flag will cause uv_spawn() to fail. - */ - UV_PROCESS_SETGID = (1 << 1), - /* - * Do not wrap any arguments in quotes, or perform any other escaping, when - * converting the argument list into a command line string. This option is - * only meaningful on Windows systems. On Unix it is silently ignored. - */ - UV_PROCESS_WINDOWS_VERBATIM_ARGUMENTS = (1 << 2), - /* - * Spawn the child process in a detached state - this will make it a process - * group leader, and will effectively enable the child to keep running after - * the parent exits. Note that the child process will still keep the - * parent's event loop alive unless the parent process calls uv_unref() on - * the child's process handle. - */ - UV_PROCESS_DETACHED = (1 << 3), - /* - * Hide the subprocess console window that would normally be created. This - * option is only meaningful on Windows systems. On Unix it is silently - * ignored. - */ - UV_PROCESS_WINDOWS_HIDE = (1 << 4) -}; - -/* - * uv_process_t is a subclass of uv_handle_t. - */ -struct uv_process_s { - UV_HANDLE_FIELDS - uv_exit_cb exit_cb; - int pid; - UV_PROCESS_PRIVATE_FIELDS -}; - -UV_EXTERN int uv_spawn(uv_loop_t* loop, - uv_process_t* handle, - const uv_process_options_t* options); -UV_EXTERN int uv_process_kill(uv_process_t*, int signum); -UV_EXTERN int uv_kill(int pid, int signum); - - -/* - * uv_work_t is a subclass of uv_req_t. - */ -struct uv_work_s { - UV_REQ_FIELDS - uv_loop_t* loop; - uv_work_cb work_cb; - uv_after_work_cb after_work_cb; - UV_WORK_PRIVATE_FIELDS -}; - -UV_EXTERN int uv_queue_work(uv_loop_t* loop, - uv_work_t* req, - uv_work_cb work_cb, - uv_after_work_cb after_work_cb); - -UV_EXTERN int uv_cancel(uv_req_t* req); - - -struct uv_cpu_info_s { - char* model; - int speed; - struct uv_cpu_times_s { - uint64_t user; - uint64_t nice; - uint64_t sys; - uint64_t idle; - uint64_t irq; - } cpu_times; -}; - -struct uv_interface_address_s { - char* name; - char phys_addr[6]; - int is_internal; - union { - struct sockaddr_in address4; - struct sockaddr_in6 address6; - } address; - union { - struct sockaddr_in netmask4; - struct sockaddr_in6 netmask6; - } netmask; -}; - -struct uv_passwd_s { - char* username; - long uid; - long gid; - char* shell; - char* homedir; -}; - -typedef enum { - UV_DIRENT_UNKNOWN, - UV_DIRENT_FILE, - UV_DIRENT_DIR, - UV_DIRENT_LINK, - UV_DIRENT_FIFO, - UV_DIRENT_SOCKET, - UV_DIRENT_CHAR, - UV_DIRENT_BLOCK -} uv_dirent_type_t; - -struct uv_dirent_s { - const char* name; - uv_dirent_type_t type; -}; - -UV_EXTERN char** uv_setup_args(int argc, char** argv); -UV_EXTERN int uv_get_process_title(char* buffer, size_t size); -UV_EXTERN int uv_set_process_title(const char* title); -UV_EXTERN int uv_resident_set_memory(size_t* rss); -UV_EXTERN int uv_uptime(double* uptime); - -typedef struct { - long tv_sec; - long tv_usec; -} uv_timeval_t; - -typedef struct { - uv_timeval_t ru_utime; /* user CPU time used */ - uv_timeval_t ru_stime; /* system CPU time used */ - uint64_t ru_maxrss; /* maximum resident set size */ - uint64_t ru_ixrss; /* integral shared memory size */ - uint64_t ru_idrss; /* integral unshared data size */ - uint64_t ru_isrss; /* integral unshared stack size */ - uint64_t ru_minflt; /* page reclaims (soft page faults) */ - uint64_t ru_majflt; /* page faults (hard page faults) */ - uint64_t ru_nswap; /* swaps */ - uint64_t ru_inblock; /* block input operations */ - uint64_t ru_oublock; /* block output operations */ - uint64_t ru_msgsnd; /* IPC messages sent */ - uint64_t ru_msgrcv; /* IPC messages received */ - uint64_t ru_nsignals; /* signals received */ - uint64_t ru_nvcsw; /* voluntary context switches */ - uint64_t ru_nivcsw; /* involuntary context switches */ -} uv_rusage_t; - -UV_EXTERN int uv_getrusage(uv_rusage_t* rusage); - -UV_EXTERN int uv_os_homedir(char* buffer, size_t* size); -UV_EXTERN int uv_os_tmpdir(char* buffer, size_t* size); -UV_EXTERN int uv_os_get_passwd(uv_passwd_t* pwd); -UV_EXTERN void uv_os_free_passwd(uv_passwd_t* pwd); - -UV_EXTERN int uv_cpu_info(uv_cpu_info_t** cpu_infos, int* count); -UV_EXTERN void uv_free_cpu_info(uv_cpu_info_t* cpu_infos, int count); - -UV_EXTERN int uv_interface_addresses(uv_interface_address_t** addresses, - int* count); -UV_EXTERN void uv_free_interface_addresses(uv_interface_address_t* addresses, - int count); - -UV_EXTERN int uv_os_getenv(const char* name, char* buffer, size_t* size); -UV_EXTERN int uv_os_setenv(const char* name, const char* value); -UV_EXTERN int uv_os_unsetenv(const char* name); - -UV_EXTERN int uv_os_gethostname(char* buffer, size_t* size); - - -typedef enum { - UV_FS_UNKNOWN = -1, - UV_FS_CUSTOM, - UV_FS_OPEN, - UV_FS_CLOSE, - UV_FS_READ, - UV_FS_WRITE, - UV_FS_SENDFILE, - UV_FS_STAT, - UV_FS_LSTAT, - UV_FS_FSTAT, - UV_FS_FTRUNCATE, - UV_FS_UTIME, - UV_FS_FUTIME, - UV_FS_ACCESS, - UV_FS_CHMOD, - UV_FS_FCHMOD, - UV_FS_FSYNC, - UV_FS_FDATASYNC, - UV_FS_UNLINK, - UV_FS_RMDIR, - UV_FS_MKDIR, - UV_FS_MKDTEMP, - UV_FS_RENAME, - UV_FS_SCANDIR, - UV_FS_LINK, - UV_FS_SYMLINK, - UV_FS_READLINK, - UV_FS_CHOWN, - UV_FS_FCHOWN, - UV_FS_REALPATH -} uv_fs_type; - -/* uv_fs_t is a subclass of uv_req_t. */ -struct uv_fs_s { - UV_REQ_FIELDS - uv_fs_type fs_type; - uv_loop_t* loop; - uv_fs_cb cb; - ssize_t result; - void* ptr; - const char* path; - uv_stat_t statbuf; /* Stores the result of uv_fs_stat() and uv_fs_fstat(). */ - UV_FS_PRIVATE_FIELDS -}; - -UV_EXTERN void uv_fs_req_cleanup(uv_fs_t* req); -UV_EXTERN int uv_fs_close(uv_loop_t* loop, - uv_fs_t* req, - uv_os_fd_t file, - uv_fs_cb cb); -UV_EXTERN int uv_fs_open(uv_loop_t* loop, - uv_fs_t* req, - const char* path, - int flags, - int mode, - uv_fs_cb cb); -UV_EXTERN int uv_fs_read(uv_loop_t* loop, - uv_fs_t* req, - uv_os_fd_t file, - const uv_buf_t bufs[], - unsigned int nbufs, - int64_t offset, - uv_fs_cb cb); -UV_EXTERN int uv_fs_unlink(uv_loop_t* loop, - uv_fs_t* req, - const char* path, - uv_fs_cb cb); -UV_EXTERN int uv_fs_write(uv_loop_t* loop, - uv_fs_t* req, - uv_os_fd_t file, - const uv_buf_t bufs[], - unsigned int nbufs, - int64_t offset, - uv_fs_cb cb); -UV_EXTERN int uv_fs_mkdir(uv_loop_t* loop, - uv_fs_t* req, - const char* path, - int mode, - uv_fs_cb cb); -UV_EXTERN int uv_fs_mkdtemp(uv_loop_t* loop, - uv_fs_t* req, - const char* tpl, - uv_fs_cb cb); -UV_EXTERN int uv_fs_rmdir(uv_loop_t* loop, - uv_fs_t* req, - const char* path, - uv_fs_cb cb); -UV_EXTERN int uv_fs_scandir(uv_loop_t* loop, - uv_fs_t* req, - const char* path, - int flags, - uv_fs_cb cb); -UV_EXTERN int uv_fs_scandir_next(uv_fs_t* req, - uv_dirent_t* ent); -UV_EXTERN int uv_fs_stat(uv_loop_t* loop, - uv_fs_t* req, - const char* path, - uv_fs_cb cb); -UV_EXTERN int uv_fs_fstat(uv_loop_t* loop, - uv_fs_t* req, - uv_os_fd_t file, - uv_fs_cb cb); -UV_EXTERN int uv_fs_rename(uv_loop_t* loop, - uv_fs_t* req, - const char* path, - const char* new_path, - uv_fs_cb cb); -UV_EXTERN int uv_fs_fsync(uv_loop_t* loop, - uv_fs_t* req, - uv_os_fd_t file, - uv_fs_cb cb); -UV_EXTERN int uv_fs_fdatasync(uv_loop_t* loop, - uv_fs_t* req, - uv_os_fd_t file, - uv_fs_cb cb); -UV_EXTERN int uv_fs_ftruncate(uv_loop_t* loop, - uv_fs_t* req, - uv_os_fd_t file, - int64_t offset, - uv_fs_cb cb); -UV_EXTERN int uv_fs_sendfile(uv_loop_t* loop, - uv_fs_t* req, - uv_os_fd_t out_fd, - uv_os_fd_t in_fd, - int64_t in_offset, - size_t length, - uv_fs_cb cb); -UV_EXTERN int uv_fs_access(uv_loop_t* loop, - uv_fs_t* req, - const char* path, - int mode, - uv_fs_cb cb); -UV_EXTERN int uv_fs_chmod(uv_loop_t* loop, - uv_fs_t* req, - const char* path, - int mode, - uv_fs_cb cb); -UV_EXTERN int uv_fs_utime(uv_loop_t* loop, - uv_fs_t* req, - const char* path, - double atime, - double mtime, - uv_fs_cb cb); -UV_EXTERN int uv_fs_futime(uv_loop_t* loop, - uv_fs_t* req, - uv_os_fd_t file, - double atime, - double mtime, - uv_fs_cb cb); -UV_EXTERN int uv_fs_lstat(uv_loop_t* loop, - uv_fs_t* req, - const char* path, - uv_fs_cb cb); -UV_EXTERN int uv_fs_link(uv_loop_t* loop, - uv_fs_t* req, - const char* path, - const char* new_path, - uv_fs_cb cb); - -/* - * This flag can be used with uv_fs_symlink() on Windows to specify whether - * path argument points to a directory. - */ -#define UV_FS_SYMLINK_DIR 0x0001 - -/* - * This flag can be used with uv_fs_symlink() on Windows to specify whether - * the symlink is to be created using junction points. - */ -#define UV_FS_SYMLINK_JUNCTION 0x0002 - -UV_EXTERN int uv_fs_symlink(uv_loop_t* loop, - uv_fs_t* req, - const char* path, - const char* new_path, - int flags, - uv_fs_cb cb); -UV_EXTERN int uv_fs_readlink(uv_loop_t* loop, - uv_fs_t* req, - const char* path, - uv_fs_cb cb); -UV_EXTERN int uv_fs_realpath(uv_loop_t* loop, - uv_fs_t* req, - const char* path, - uv_fs_cb cb); -UV_EXTERN int uv_fs_fchmod(uv_loop_t* loop, - uv_fs_t* req, - uv_os_fd_t file, - int mode, - uv_fs_cb cb); -UV_EXTERN int uv_fs_chown(uv_loop_t* loop, - uv_fs_t* req, - const char* path, - uv_uid_t uid, - uv_gid_t gid, - uv_fs_cb cb); -UV_EXTERN int uv_fs_fchown(uv_loop_t* loop, - uv_fs_t* req, - uv_os_fd_t file, - uv_uid_t uid, - uv_gid_t gid, - uv_fs_cb cb); - - -enum uv_fs_event { - UV_RENAME = 1, - UV_CHANGE = 2 -}; - - -struct uv_fs_event_s { - UV_HANDLE_FIELDS - /* private */ - char* path; - UV_FS_EVENT_PRIVATE_FIELDS -}; - - -/* - * uv_fs_stat() based polling file watcher. - */ -struct uv_fs_poll_s { - UV_HANDLE_FIELDS - /* Private, don't touch. */ - void* poll_ctx; -}; - -UV_EXTERN int uv_fs_poll_init(uv_loop_t* loop, uv_fs_poll_t* handle); -UV_EXTERN int uv_fs_poll_start(uv_fs_poll_t* handle, - uv_fs_poll_cb poll_cb, - const char* path, - unsigned int interval); -UV_EXTERN int uv_fs_poll_stop(uv_fs_poll_t* handle); -UV_EXTERN int uv_fs_poll_getpath(uv_fs_poll_t* handle, - char* buffer, - size_t* size); - - -struct uv_signal_s { - UV_HANDLE_FIELDS - uv_signal_cb signal_cb; - int signum; - UV_SIGNAL_PRIVATE_FIELDS -}; - -UV_EXTERN int uv_signal_init(uv_loop_t* loop, uv_signal_t* handle); -UV_EXTERN int uv_signal_start(uv_signal_t* handle, - uv_signal_cb signal_cb, - int signum); -UV_EXTERN int uv_signal_start_oneshot(uv_signal_t* handle, - uv_signal_cb signal_cb, - int signum); -UV_EXTERN int uv_signal_stop(uv_signal_t* handle); - -UV_EXTERN void uv_loadavg(double avg[3]); - - -/* - * Flags to be passed to uv_fs_event_start(). - */ -enum uv_fs_event_flags { - /* - * By default, if the fs event watcher is given a directory name, we will - * watch for all events in that directory. This flags overrides this behavior - * and makes fs_event report only changes to the directory entry itself. This - * flag does not affect individual files watched. - * This flag is currently not implemented yet on any backend. - */ - UV_FS_EVENT_WATCH_ENTRY = 1, - - /* - * By default uv_fs_event will try to use a kernel interface such as inotify - * or kqueue to detect events. This may not work on remote filesystems such - * as NFS mounts. This flag makes fs_event fall back to calling stat() on a - * regular interval. - * This flag is currently not implemented yet on any backend. - */ - UV_FS_EVENT_STAT = 2, - - /* - * By default, event watcher, when watching directory, is not registering - * (is ignoring) changes in it's subdirectories. - * This flag will override this behaviour on platforms that support it. - */ - UV_FS_EVENT_RECURSIVE = 4 -}; - - -UV_EXTERN int uv_fs_event_init(uv_loop_t* loop, uv_fs_event_t* handle); -UV_EXTERN int uv_fs_event_start(uv_fs_event_t* handle, - uv_fs_event_cb cb, - const char* path, - unsigned int flags); -UV_EXTERN int uv_fs_event_stop(uv_fs_event_t* handle); -UV_EXTERN int uv_fs_event_getpath(uv_fs_event_t* handle, - char* buffer, - size_t* size); - -UV_EXTERN int uv_ip4_addr(const char* ip, int port, struct sockaddr_in* addr); -UV_EXTERN int uv_ip6_addr(const char* ip, int port, struct sockaddr_in6* addr); - -UV_EXTERN int uv_ip4_name(const struct sockaddr_in* src, char* dst, size_t size); -UV_EXTERN int uv_ip6_name(const struct sockaddr_in6* src, char* dst, size_t size); - -UV_EXTERN int uv_inet_ntop(int af, const void* src, char* dst, size_t size); -UV_EXTERN int uv_inet_pton(int af, const char* src, void* dst); - -UV_EXTERN int uv_exepath(char* buffer, size_t* size); - -UV_EXTERN int uv_cwd(char* buffer, size_t* size); - -UV_EXTERN int uv_chdir(const char* dir); - -UV_EXTERN uint64_t uv_get_free_memory(void); -UV_EXTERN uint64_t uv_get_total_memory(void); - -UV_EXTERN uint64_t uv_hrtime(void); - -UV_EXTERN void uv_disable_stdio_inheritance(void); - -UV_EXTERN int uv_dlopen(const char* filename, uv_lib_t* lib); -UV_EXTERN void uv_dlclose(uv_lib_t* lib); -UV_EXTERN int uv_dlsym(uv_lib_t* lib, const char* name, void** ptr); -UV_EXTERN const char* uv_dlerror(const uv_lib_t* lib); - -UV_EXTERN int uv_mutex_init(uv_mutex_t* handle); -UV_EXTERN void uv_mutex_destroy(uv_mutex_t* handle); -UV_EXTERN void uv_mutex_lock(uv_mutex_t* handle); -UV_EXTERN int uv_mutex_trylock(uv_mutex_t* handle); -UV_EXTERN void uv_mutex_unlock(uv_mutex_t* handle); - -UV_EXTERN int uv_rwlock_init(uv_rwlock_t* rwlock); -UV_EXTERN void uv_rwlock_destroy(uv_rwlock_t* rwlock); -UV_EXTERN void uv_rwlock_rdlock(uv_rwlock_t* rwlock); -UV_EXTERN int uv_rwlock_tryrdlock(uv_rwlock_t* rwlock); -UV_EXTERN void uv_rwlock_rdunlock(uv_rwlock_t* rwlock); -UV_EXTERN void uv_rwlock_wrlock(uv_rwlock_t* rwlock); -UV_EXTERN int uv_rwlock_trywrlock(uv_rwlock_t* rwlock); -UV_EXTERN void uv_rwlock_wrunlock(uv_rwlock_t* rwlock); - -UV_EXTERN int uv_sem_init(uv_sem_t* sem, unsigned int value); -UV_EXTERN void uv_sem_destroy(uv_sem_t* sem); -UV_EXTERN void uv_sem_post(uv_sem_t* sem); -UV_EXTERN void uv_sem_wait(uv_sem_t* sem); -UV_EXTERN int uv_sem_trywait(uv_sem_t* sem); - -UV_EXTERN int uv_cond_init(uv_cond_t* cond); -UV_EXTERN void uv_cond_destroy(uv_cond_t* cond); -UV_EXTERN void uv_cond_signal(uv_cond_t* cond); -UV_EXTERN void uv_cond_broadcast(uv_cond_t* cond); - -UV_EXTERN int uv_barrier_init(uv_barrier_t* barrier, unsigned int count); -UV_EXTERN void uv_barrier_destroy(uv_barrier_t* barrier); -UV_EXTERN int uv_barrier_wait(uv_barrier_t* barrier); - -UV_EXTERN void uv_cond_wait(uv_cond_t* cond, uv_mutex_t* mutex); -UV_EXTERN int uv_cond_timedwait(uv_cond_t* cond, - uv_mutex_t* mutex, - uint64_t timeout); - -UV_EXTERN void uv_once(uv_once_t* guard, void (*callback)(void)); - -UV_EXTERN int uv_key_create(uv_key_t* key); -UV_EXTERN void uv_key_delete(uv_key_t* key); -UV_EXTERN void* uv_key_get(uv_key_t* key); -UV_EXTERN void uv_key_set(uv_key_t* key, void* value); - -typedef void (*uv_thread_cb)(void* arg); - -UV_EXTERN int uv_thread_create(uv_thread_t* tid, uv_thread_cb entry, void* arg); -UV_EXTERN uv_thread_t uv_thread_self(void); -UV_EXTERN int uv_thread_join(uv_thread_t *tid); -UV_EXTERN int uv_thread_equal(const uv_thread_t* t1, const uv_thread_t* t2); - -/* The presence of these unions force similar struct layout. */ -#define XX(_, name) uv_ ## name ## _t name; -union uv_any_handle { - UV_HANDLE_TYPE_MAP(XX) -}; - -union uv_any_req { - UV_REQ_TYPE_MAP(XX) -}; -#undef XX - - -struct uv_loop_s { - /* User data - use this for whatever. */ - void* data; - /* Loop reference counting. */ - unsigned int active_handles; - void* handle_queue[2]; - void* active_reqs[2]; - /* Internal flag to signal loop stop. */ - unsigned int stop_flag; - void* reserved[4]; - UV_LOOP_PRIVATE_FIELDS -}; - - -/* Don't export the private CPP symbols. */ -#undef UV_HANDLE_TYPE_PRIVATE -#undef UV_REQ_TYPE_PRIVATE -#undef UV_REQ_PRIVATE_FIELDS -#undef UV_STREAM_PRIVATE_FIELDS -#undef UV_TCP_PRIVATE_FIELDS -#undef UV_PREPARE_PRIVATE_FIELDS -#undef UV_CHECK_PRIVATE_FIELDS -#undef UV_IDLE_PRIVATE_FIELDS -#undef UV_ASYNC_PRIVATE_FIELDS -#undef UV_TIMER_PRIVATE_FIELDS -#undef UV_GETADDRINFO_PRIVATE_FIELDS -#undef UV_GETNAMEINFO_PRIVATE_FIELDS -#undef UV_FS_REQ_PRIVATE_FIELDS -#undef UV_WORK_PRIVATE_FIELDS -#undef UV_FS_EVENT_PRIVATE_FIELDS -#undef UV_SIGNAL_PRIVATE_FIELDS -#undef UV_LOOP_PRIVATE_FIELDS -#undef UV_LOOP_PRIVATE_PLATFORM_FIELDS - -#ifdef __cplusplus -} -#endif -#endif /* UV_H */ diff --git a/Framework/ext/map/map.cpp b/Framework/ext/map/map.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/Framework/ext/map/map.h b/Framework/ext/map/map.h deleted file mode 100644 index 929a424..0000000 --- a/Framework/ext/map/map.h +++ /dev/null @@ -1,14 +0,0 @@ -#include <../../src/headers.h> -namespace nef { -class map() { -public: - map(); - ~map(); - void set_ak(string); - void set_width(int); - void set_height(int); - void set_center(float, float); - void set_zoom(int); - void set_copyright(int); -}; -} \ No newline at end of file diff --git a/Framework/include/datastructs.h b/Framework/include/datastructs.h deleted file mode 100644 index bd8b49b..0000000 --- a/Framework/include/datastructs.h +++ /dev/null @@ -1,120 +0,0 @@ -#ifndef DATASTRUCT_H -#define DATASTRUCT_H - -namespace nef{ - class Font - { - private: - TTF_Font *font; - public: - Font(const char *file, int size); - ~Font(); - void Open(const char *file, int size); - void Set(int style); - void Free(); - }; - - class Texture - { - private: - GLfloat texcoord[4]; - GLfloat *light_mat_ambient; - GLfloat *light_mat_diffuse; - GLfloat *light_mat_specular; - GLfloat *light_mat_emission; - GLfloat light_mat_shininess; - GLfloat *light_mat_ambient_default; - GLfloat *light_mat_diffuse_default; - GLfloat *light_mat_specular_default; - GLfloat *light_mat_emission_default; - GLfloat light_mat_shininess_default; - GLuint texture_default; - GLfloat texMinX, texMinY; - GLfloat texMaxX, texMaxY; - GLuint texture; - int width, height; - - public: - Texture(); - ~Texture(); - void RenderText(TTF_Font *font, const char *text, SDL_Color color); - int LoadImage(const char *file); - void setAmbient(GLfloat r, GLfloat g, GLfloat b, GLfloat a); - void setDiffuse(GLfloat r, GLfloat g, GLfloat b, GLfloat a); - void setSpecular(GLfloat r, GLfloat g, GLfloat b, GLfloat a); - - void setEmission(GLfloat r, GLfloat g, GLfloat b, GLfloat a); - void setShininess(GLfloat shininess); - void Blind(); - void unBlind(); - void Free(); - }; - - class Light - { - private: - GLfloat *light_position; - GLfloat *light_ambient; - GLfloat *light_diffuse; - GLfloat *light_specular; - GLfloat *light_position_off; - GLfloat *light_ambient_off; - GLfloat *light_diffuse_off; - GLfloat *light_specular_off; - GLenum ID; - - public: - Light(); - ~Light(); - void setID(GLenum LID); - void setPosition(GLfloat x, GLfloat y, GLfloat z, GLfloat w); - void setAmbient(GLfloat r, GLfloat g, GLfloat b, GLfloat a); - void setDiffuse(GLfloat r, GLfloat g, GLfloat b, GLfloat a); - void setSpecular(GLfloat r, GLfloat g, GLfloat b, GLfloat a); - void turnOn(); - void turnOff(); - void Free(); - }; - - class Brush - { - public: - Brush(); - ~Brush(); - void setColor(GLfloat r, GLfloat g, GLfloat b); - void beginPoints(); - void beginLines(); - void beginPolygon(); - void addNormal(GLfloat nor_x, GLfloat nor_y, GLfloat nor_z); - void addPoint(GLfloat pos_x, GLfloat pos_y, GLfloat pos_z, GLfloat u, GLfloat v); - void end(); - void HUD_drawText(nefTexture texture, int x, int y); - void HUD_drawImage(nefTexture texture, int x, int y, int width, int height); - }; - - class Audio - { - private: - Mix_Music *audio; - - public: - Audio(); - ~Audio(); - void Open(const char *file); - void setVolume(int Vol); - void Play(); - void Pause(); - void Resume(); - void Rewind(); - void Free(); - }; - - struct Posture - { - double pos[3]; - double dir[3]; //左右 上下 逆顺 - double pre; - }; -} - -#endif \ No newline at end of file diff --git a/Framework/include/globals.h b/Framework/include/globals.h deleted file mode 100644 index 1b6858d..0000000 --- a/Framework/include/globals.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef GLOBALS_H -#define GLOBALS_H - -SDL_Surface *screen = NULL; -int Neffps = 0; -int Renderfps = 0; - -#define nefLight_0 GL_LIGHT0 -#define nefLight_1 GL_LIGHT1 -#define nefLight_2 GL_LIGHT2 -#define nefLight_3 GL_LIGHT3 -#define nefLight_4 GL_LIGHT4 -#define nefLight_5 GL_LIGHT5 -#define nefLight_6 GL_LIGHT6 -#define nefLight_7 GL_LIGHT7 - -#define nefMaxVolume MIX_MAX_VOLUME - -#endif \ No newline at end of file diff --git a/Framework/include/glsdlfuncs.h b/Framework/include/glsdlfuncs.h deleted file mode 100644 index c41a5a0..0000000 --- a/Framework/include/glsdlfuncs.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef GLSDLFUNCS_H -#define GLSDLFUNCS_H - -#define TRUE (-1) -#define FALSE 0 -typedef int BOOL; - -namespace nef{ - BOOL nefInit(); - void clean_up(); - SDL_Surface *load_image(char *filename); - void SDL_GL_Enter2DMode(); - void SDL_GL_Leave2DMode(); - static int power_of_two(int input); - GLuint SDL_GL_LoadTexture(SDL_Surface *surface, GLfloat *texcoord); -} - -#endif \ No newline at end of file diff --git a/Framework/include/headers.h b/Framework/include/headers.h deleted file mode 100644 index f983a3c..0000000 --- a/Framework/include/headers.h +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef HEADERS_H -#define HEADERS_H - -// std -#include -#include -#include -#include -#include -#include -#include -#include -using namespace std; - -// posix -#include -#include -#include -#include -#include -#include - -// gl -#include - -// sdl -#include -#include -#include -#include -#include - -// SOIL -#include - -//uv -#include - -// opencv -#include -using namespace cv; - -// nef -#include "datastructs.h" -#include "globals.h" -#include "glsdlfuncs.h" -#include "neffuncs.h" -#include "settings.h" -using namespace nef; - -#endif \ No newline at end of file diff --git a/Framework/include/helper_3dmath.h b/Framework/include/helper_3dmath.h deleted file mode 100644 index 501be77..0000000 --- a/Framework/include/helper_3dmath.h +++ /dev/null @@ -1,219 +0,0 @@ -#ifndef _HELPER_3DMATH_H_ -#define _HELPER_3DMATH_H_ - -namespace nef -{ -class Quaternion -{ - public: - float w; - float x; - float y; - float z; - - Quaternion() - { - w = 1.0f; - x = 0.0f; - y = 0.0f; - z = 0.0f; - } - - Quaternion(int32_t *data) - { - w = (float)data[0] / 16384.0f; - x = (float)data[1] / 16384.0f; - y = (float)data[2] / 16384.0f; - z = (float)data[3] / 16384.0f; - } - - Quaternion(float nw, float nx, float ny, float nz) - { - w = nw; - x = nx; - y = ny; - z = nz; - } - - Quaternion getProduct(Quaternion q) - { - // Quaternion multiplication is defined by: - // (Q1 * Q2).w = (w1w2 - x1x2 - y1y2 - z1z2) - // (Q1 * Q2).x = (w1x2 + x1w2 + y1z2 - z1y2) - // (Q1 * Q2).y = (w1y2 - x1z2 + y1w2 + z1x2) - // (Q1 * Q2).z = (w1z2 + x1y2 - y1x2 + z1w2 - return Quaternion( - w * q.w - x * q.x - y * q.y - z * q.z, // new w - w * q.x + x * q.w + y * q.z - z * q.y, // new x - w * q.y - x * q.z + y * q.w + z * q.x, // new y - w * q.z + x * q.y - y * q.x + z * q.w); // new z - } - - Quaternion getConjugate() - { - return Quaternion(w, -x, -y, -z); - } - - float getMagnitude() - { - return sqrt(w * w + x * x + y * y + z * z); - } - - void normalize() - { - float m = getMagnitude(); - w /= m; - x /= m; - y /= m; - z /= m; - } - - Quaternion getNormalized() - { - Quaternion r(w, x, y, z); - r.normalize(); - return r; - } -}; - -class VectorInt16 -{ - public: - int16_t x; - int16_t y; - int16_t z; - - VectorInt16() - { - x = 0; - y = 0; - z = 0; - } - - VectorInt16(int16_t nx, int16_t ny, int16_t nz) - { - x = nx; - y = ny; - z = nz; - } - - float getMagnitude() - { - return sqrt(x * x + y * y + z * z); - } - - void normalize() - { - float m = getMagnitude(); - x /= m; - y /= m; - z /= m; - } - - VectorInt16 getNormalized() - { - VectorInt16 r(x, y, z); - r.normalize(); - return r; - } - - void rotate(Quaternion *q) - { - // http://www.cprogramming.com/tutorial/3d/quaternions.html - // http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/transforms/index.htm - // http://content.gpwiki.org/index.php/OpenGL:Tutorials:Using_Quaternions_to_represent_rotation - // ^ or: http://webcache.googleusercontent.com/search?q=cache:xgJAp3bDNhQJ:content.gpwiki.org/index.php/OpenGL:Tutorials:Using_Quaternions_to_represent_rotation&hl=en&gl=us&strip=1 - - // P_out = q * P_in * conj(q) - // - P_out is the output vector - // - q is the orientation quaternion - // - P_in is the input vector (a*aReal) - // - conj(q) is the conjugate of the orientation quaternion (q=[w,x,y,z], q*=[w,-x,-y,-z]) - Quaternion p(0, x, y, z); - - // quaternion multiplication: q * p, stored back in p - p = q->getProduct(p); - - // quaternion multiplication: p * conj(q), stored back in p - p = p.getProduct(q->getConjugate()); - - // p quaternion is now [0, x', y', z'] - x = p.x; - y = p.y; - z = p.z; - } - - VectorInt16 getRotated(Quaternion *q) - { - VectorInt16 r(x, y, z); - r.rotate(q); - return r; - } -}; - -class VectorFloat -{ - public: - float x; - float y; - float z; - - VectorFloat() - { - x = 0; - y = 0; - z = 0; - } - - VectorFloat(float nx, float ny, float nz) - { - x = nx; - y = ny; - z = nz; - } - - float getMagnitude() - { - return sqrt(x * x + y * y + z * z); - } - - void normalize() - { - float m = getMagnitude(); - x /= m; - y /= m; - z /= m; - } - - VectorFloat getNormalized() - { - VectorFloat r(x, y, z); - r.normalize(); - return r; - } - - void rotate(Quaternion *q) - { - Quaternion p(0, x, y, z); - - // quaternion multiplication: q * p, stored back in p - p = q->getProduct(p); - - // quaternion multiplication: p * conj(q), stored back in p - p = p.getProduct(q->getConjugate()); - - // p quaternion is now [0, x', y', z'] - x = p.x; - y = p.y; - z = p.z; - } - - VectorFloat getRotated(Quaternion *q) - { - VectorFloat r(x, y, z); - r.rotate(q); - return r; - } -}; -} -#endif /* _HELPER_3DMATH_H_ */ diff --git a/Framework/include/neffuncs.h b/Framework/include/neffuncs.h deleted file mode 100644 index f41e019..0000000 --- a/Framework/include/neffuncs.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef NEFFUNCS_H -#define NEFFUNCS_H - -namespace nef { -struct process_info {}; -void nefGLinit(); -void Delay_ms(int time); -int getFps(); -int getFps(clock_t,clock_t); -int getRenderFps(); -void getprocessinfo(); -void getmem(); -} -#endif \ No newline at end of file diff --git a/Framework/include/nefsensor.h b/Framework/include/nefsensor.h deleted file mode 100644 index dd92ac3..0000000 --- a/Framework/include/nefsensor.h +++ /dev/null @@ -1,131 +0,0 @@ -#ifndef NEFSENSOR_H -#define NEFSENSOR_H - -namespace nef -{ - -class Serial -{ -private: - unsigned char *TX_buffer; - unsigned long TX_buffer_size; - unsigned char *RX_buffer; - unsigned long RX_buffer_size; - bool get_buffer(char *buffer, int size_o, int size_n); - char *dev; - unsigned long rate; - -public: - Serial(); - Serial(unsigned long rate); - Serial(const char *dev, unsigned long rate); - Serial(int dev, unsigned long rate); - ~Serial(); - void setdev(int dev); - void setdev(const char *dev); - void begin(unsigned long rate); - void end(); - int available(); - int read(char *buffer, int size); - int write(const char *buffer, int size); -}; - -class I2C -{ -private: - uint8_t devAddr = 0; - uint16_t readTimeout = 0; - -public: - I2C(uint8_t addr); - ~I2C() {} - I2C_set_dev_addr(uint8_t); - //read - int8_t readBitW(uint8_t regAddr, uint8_t bitNum, uint16_t *data); - int8_t readBits(uint8_t regAddr, uint8_t bitStart, uint8_t length, uint8_t *data); - int8_t readBitsW(uint8_t regAddr, uint8_t bitStart, uint8_t length, uint16_t *data); - int8_t readByte(uint8_t regAddr, uint8_t *data); - int8_t readWord(uint8_t regAddr, uint16_t *data); - int8_t readBytes(uint8_t regAddr, uint8_t length, uint8_t *data); - int8_t readWords(uint8_t regAddr, uint8_t length, uint16_t *data); - //write - int writeBit(uint8_t regAddr, uint8_t bitNum, uint8_t data); - int writeBitW(uint8_t regAddr, uint8_t bitNum, uint16_t data); - int writeBits(uint8_t regAddr, uint8_t bitStart, uint8_t length, uint8_t data); - int writeBitsW(uint8_t regAddr, uint8_t bitStart, uint8_t length, uint16_t data); - int writeByte(uint8_t regAddr, uint8_t data); - int writeWord(uint8_t regAddr, uint16_t data); - int writeBytes(uint8_t regAddr, uint8_t length, uint8_t *data); - int writeWords(uint8_t regAddr, uint8_t length, uint16_t *data); -}; - -class SPI -{ -private: - unsigned char *TX_buffer; - unsigned long TX_buffer_size; - unsigned char *RX_buffer; - unsigned long RX_buffer_size; - bool get_buffer(char *buffer, int size_o, int size_n); - int dev_address = 0x00; - int dev_bus = 0; - bool open = false; - -public: - SPI(int addr); - SPI(int bus, int addr); - ~SPI(); - void setaddr(int dev_addr); - void setbus(int bus); - void begin(); - bool isopened(); - void end(); - int available(); - int read(char *buffer, int size); - int write(const char *buffer, int size); -}; - -class Camera -{ -private: - int cam_id; - VideoCapture *cam; - vector *cache; - unsigned long frame_count = 0; - -public: - Camera(int dev); - ~Camera(); - - bool isopened(); - Mat get_recent_frame(); - vector *get_frame_vector(); - VideoCapture *get_cam_obj(); - void delete_frame(); - void push_back_frame(); - void release(); -}; - -class Gpio -{ -private: - int gpio = -1; - int direction; - int level; - bool opened = false; - -public: - Gpio() {} - Gpio(int pin); - ~Gpio(); - - void gpio_export(int pin); - void gpio_unexport(); - void gpio_direction(int dir); - void gpio_write(int lev); - int gpio_read(); - void gpio_free(); - bool isopened(); -}; -} -#endif // !NEFSENSOR_H diff --git a/Framework/include/settings.h b/Framework/include/settings.h deleted file mode 100644 index 50d7368..0000000 --- a/Framework/include/settings.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef SETTINGS_H -#define SETTINGS_H - -#define TITLE "Nef @jsTST" -#define FOV 75 -#define REN_NEAR 0.01 -#define REN_FAR 10000 -#define DOUBLE_EYES 0.06 -#define EVENT_LOCK_FRAME 90 -#define RENDER_LOCK_FRAME 75 -#define DISPLAY_TO_TERMINAL false -#define KEYBOARD_CONTROL false -#define CVMEMORY 500 - -#define BUFFER_MAX 100 -#define DIRECTION_MAX 100 -#define IN 0 -#define OUT 1 -#define LOW 0 -#define HIGH 1 -#define POUT 21 - -#define CAM_FRAME_MAX 5 -#define I2C_OK 0 -#define I2C_ERR -1 -const int SCREEN_WIDTH = 1280; -const int SCREEN_HEIGHT = 1024; -const int SCREEN_BPP = 32; - -#endif \ No newline at end of file diff --git a/Framework/include/userfuncs.h b/Framework/include/userfuncs.h deleted file mode 100644 index 33497db..0000000 --- a/Framework/include/userfuncs.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef USERFUNCS_H -#define USERFUNCS_H - -namespace nef { - - void onSetup(); - void onLoop(); - void onEvent(SDL_Event event); - void onHUD(); - void onRender(); - void onExit(); - -} - -#endif \ No newline at end of file diff --git a/Framework/res/mus/1.wav b/Framework/res/mus/1.wav deleted file mode 100644 index a2bd9d8c55363799d0f8cb77cb98cb3f90c67d01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 260044 zcmeF)g_m4a+V}k~>Fy*1g1ZJC2rw`}7+iz9TW}q0u)%e3cXt@v-6goYyE}s=-DUm! zKIi7#4{O$X-{&8g`mU9#t~zzj-q*ftUwfa*+AED3_1L&t*9J?kzx;N)>^0+rU0q$3 zu4>ot^}D)`*|5@8@0ze{n=SX+@{%0$-^YI?@Lvi1R|5Z)z<(w1UkUtI0{@l3essY|UjOlZZTRE4|M>ckZ7Hu=o~yi;=knZ+DZgLq z`oEONl-Ks`Q6BGEJ6fUrJLT*DIr4vG2C?bB*%4 z`t7{%J#ulL^0oK<{YUi2HUIdTi;l|+ohlBGwueJ;h(}y|3>RG89c1@aa80s*JG>EI z4flr6!n@(Epl`lwjLUJJp=*ZX+TRU)H}F(=Iy@4t3MYnx!au?;;ow024~2Wer$IZG z34agAg^R*f;jZvlxG`K8?g)Pi!^5P(^^C#ZVfV0kSRw2eT*vj!3)h7&1Nko!jKQJ7 zbuJ9ogp0#2VT<6HDFeBZ{YL{I6=P2p`u1AT&l|#N;ka;7paUO=uLBv9*^9w<=+Se* zGhOuAJK>jLeDnu%hq(fsnKjH4j2)dJBW*M8D1FJV1HTTu5RA{5a9=QfF9&V!3v9@F zU4xF#6h?*x!pwpGJNI7#`}raG4&88m`o;#?G+lH2biuK7hF+4fIA?DSWA$j5th&KSQG zj6a>%AAQg#zT>3uP;gHD`gbr!3x%zM_HPsR4El3MI6E944iDRh)q`sq3$i0aHh6A0 zI$Rkp4z~n4$hW;8*pN0a9YzP|J0Tnyyxu#oi_HW1Vbh>Z#?E+we>7Hn#u-7ME)4p~ zCmOrb7QJ_S&_3<)tj+wZW9crtDfNlY%^vs}zKguc_0PXUkLazjHy(7Cjj=^B!}*LE z`(V5GhbIDAvm1K!Z7@zh1^Q_W_0KiPckSQVqic_@9m1A@o~;?S3rhuh&yQ-maTO=% z&_BaD;kG~r$O?3KZ1_B|XZ>SiQ~VD5VjJQYAFx7joc^;}Ifd_NtA2hF^hY1rn|?q0 zJI01DVE_DzbFhCtWu2h?uCZ|#73dPb#CNcj#e(*TEk0wvp7{^5Co{2uJ{e2$r;Fk! znSK!HiSM&>us<=4+{uEx9j~qQg@2_($A%-r>47dE5xmFevQJ~FpX`_)nz3ufu9btn z92AV%PJz9g7tRld1>?qU#9wifJ<~bur5k*JYv9(vcKKGm!k8H=ZHIB9qh!i9oR@B_ z71$0L)7dii(^GwC_vA$f*@5ed4dREs$tlQAzvwgFHYQ|g%=u{kmF($~Hqk@R`X zVi`SKF3=m-5tHa58`fqzO>fFPLm%|f_vt#lGrnH?zVVsGT@GkW8i zcZa(IoswU=hI7L>^CP9-V_%?K&PRu)4RlT%cYfnW7IZ?a;p57-(=GP#ufPZEJ6)ht zVvg%;PuUj!gDt`L=q1~r6Ke#r^t^4@EUX_k2|EUVi-Y7$2FBmB>p8z%jNJJ`{!u&? zU+E|Lk~1BrJI0)UVn2MYXLfsLI3oC4&N5#hU;1YZ%Ig`&YeG4md@k9uE7vORf{lo| zrQXU#jHkSZKf}+#dvXUk4Bh85=z#Z)$%cU}{u+!uyWum95qXdyIU5K4=jX&cIjlHM zANYi_Eyh#-=(ll~1MC~*HT;;I^^_nVxHO2{?7;Yl6?8(pD19=YDp#fFe8BnP>R>KI z-?fMTAs=zdSnzdXx>!Pw^jE(@Ci>0KEg$HFu_q%kDdz{`p}y&N84r&iIKIdcJZlqw zu05`6JlMZ@z{bTH*KvNnoISG#wk z6CcN~@GpEJf5PVIy=T|-8M(TK>v_NQg>0Mc$tCC(op&95=S%1!TVn%a7+IVg_?}&Z z_(ngB6S+GFUFP%Tg8I1R@31|2$wq9=;u75H;@$49xo^RT^ZgIMM|{6Al}bJ#v; zhqm!Q`XTRGDUd&%K026_nTK5-P77>OTs01k=f~MBeWTZG+BniDK8JpZIpm?A<|_OP zdpAbxR~%tquIpT4hlg=wKl*2kykGi%Ht%mXMpx*d&%_pai}#GPW8_xs%6OaaiZAqm z&GENljrQ=t@?&~0{?hw0-pN71?~*$`p>M9w?w#ND950s9X?^8SOPyd_#zr1aPWq)y z`ey8Wj~+RmFXY#?wTzAA#dFVGe=%YRvYv<)R*@f%#7v@fMmCo{`{3ILVD;Evg$3Kvt@n#F+ zC!3|OeDqnt9FPpOkq^}NrGEE2{L}uydHE!@id_T$XiSYqX_xHGHTVU-fB#_KRI079Dk6<3$(PMwxSv7yqr@?96;m4(&b9;;zr+2IR)h$Y1P~OL#8l<*rlu zZ?9dOZO~JCssH){zL`JdV=-f(|8f+uOZ;<;@#n+DFn-(kY!S>i%qxwB>(f(xbREcz z#B2KIS>8eq9AoV1h3nEiHg7zPzcJ=7>4Wn+jvx6jkO}*yx5hz^Kt^RQE{17`{^^Im z`8T%B_V^6G&1-td294RNL9IZ1=V#4z^}(_1gKqJ!Wlm3*#k(@*$))L`Yk}XVzhox| zpr`u7Pw+wf6d7oPYiOs3u`>o9j$a}e-!cZWH|Joh^uU;b9LwYUZS3dOYt49S^8q~B_qCDT;mJa=|95G!JLrp@L%G+Ytef$(gyh)8(@3- zr|ftX5;8w>`VU1AJZ}8>9u3{WO0)}F7x?v z-r)Omiu}Q5=r{Seo;<)DP`<|>s6jc0It<-+yf{E!d@Q@6GyDWS(l77Hapm89om`2n z&=s;XPV|=lFLgy*#9rqh7ja44_RMbiGuJ8OgSah5@Xh9QWG~n9nvKu+yKb6OmvcyV zO0TsY<^0%r^@aS%fIR4m@z7`Ue0eY*&%YQ`I_#N#8&kIH`{DyzHU7@UUtb=4mrnDq ze2MtU$Cz{QGj!T}`c8kGlaA3tf0u2gOXWO--p~W>q%-Wx-=)scP3}Q7E}!B{=qaCLEI$lnQs$SXZIdTm)Gl)O zY<%_6YwgrV=hY7STGle0*LPfl%{q_g@>*gVnd?7UvZd0#jT>Dif1myFdwdlgp&$B9 zU->>d$}jRM^0+c@Tq^N{uF*Zdx0C}vq#ychOkGEwYn<6Lo8-6Hs(zJyV^3_FKl7P> z(|bB*-1T3d=$2T{*U$~)N=~kCT(nn??{BfdalXUujI;PgR^%qW7sHpdajj++4%?#6Hj3NQcOS&T6;u)KB(74*KBQY{a$oy{xP1vvW9}p75vo zq%NiVTa^xoas)P@6&bj0=}r6AM(j% z9A!tw0CWrVj{frtAW!|&R@W=-O?&j69N3cnYOiBJUfSd}-C-AWpFiNAj4^+q-~M)v zG7l(o0dnVK9ZSB>;X3?_cFihJil)Y#TUMb&9hIkp@U?mf2DrYC$cpbe2??;U7&mV&hHxYa$J0$ zJ&>WXAP+X{S%286n5FMzK}MeWQ#z=>`cL;g8wb9Of1|VBX9vcZEs`z$qBGjWpJ}r; z7)$+foR~n@^ilrE7Ri&mpwE!o@*7J9e>=DD>7$2dcB5_juKmVLe&>4HU&aOfcWuww zPA444cj*uPA~)C4W&{Yw63h z-+7I{KD#b|R^~hExB71#R833Wf(@DzuzUJ1Pm0e4)*ADHXH*A1@^Go!ytbJ)S z8T*WV(Y5m7JM@&jX`k&YLyXS~F8D?~)I>IEVI^I#1tyPS0JBoQ#(^#74YFmikJ*`s+QPi7j-1?~@bjulBKb zdTy@eeSfp5(#JVp>5thq9XAGLKJIgR`C)KPuZ^odIF?WFzTBO@Ymc#{3v5H*w2L0< z3wvefK6ef}0DaIVy5uwdoPO~!`ULGJL-OH2jUgG5wfD;Wk1vMy@DV;ELv7P$x~M&l z(H9SGkykDi=s3Mmk0&$dpo@-iE!Wj&=X6anqNmQ!_SrJs(l34H7rZ7bzSEd{uy1WM z?rf9ZcuhX8W8S76WC${X_Ba>$mOj;(mHp#$w8^#g#d+C8IR__O`ccm9`E8$RgSM4( z9DQ`&GET6GvgW0KuE&n`!#L83X8i@GYC=Tm$~|Mi7Ekg>ST)?LeW z$(L>!H^!~S8#&Dw zoR=)<9vg9PeKwYK$asm5{5G4FU-_GU_)H(kpG=&$)LZRi8}!b(%A7*JDbCQ-vYw;1 z48DpDme-?4;(>k}Z`XnM^~3r3AHK=^;xr$i&&Hg-u_f&?e#T5YjB}Y==mXh1)_2L! z7^)LHpRx6~hjx&)@f9Z=>vQLp+v&Ua$ijH=$=c7>>4R~mLu6_E%hz&S`H;40hx5<_ z_DkM!6wluCz4DnqHy;%{_;U40xX$1~Z8S#*<3T&t8R9o2X8G`7yi4(K@@ zwU)!*kPAQLbr~B=TcAI_Pp`?M^c}{YpQ7XXWGsy-**FhfHwOA7X3!DGiF52hf5csX zdyt>D8bi83cH~13=zM7l<=FE*Y|^o0L2ua~eIX0qp=a`Awy3S3pZ@k4nK*~nzE{eJ zY_!{FWUnv!MNWK(IIZojqYzC$v`^*sOEt3%}`_#*?qt7jmaNe3-fzohoy6 z=Q1xaS95Le>pMN-Z|SEob6(f-pxg9_ZSZG&6JJEf_$B>hoBCGjit%);2OAKR^wGJ+ z1m}YGkvmz_5qjZTrQdPRhXTLooO~tOihs`Myskt4_!51UyRxe?e$z$sAb#Im-}<5T zD{}+;xyZ>m$d_)&H?-5(@*!oP$cO%#$7rAS`kuCsAN?X<_T@a~7&wlvBS-CLBjN}d z@;RmbIw$?+Z#?)xen!6>ua9)kejD=$?V=xWUa~S~+UPU-K(5el(jGRx0gzu$M%eowy<}4L+<=7 zc^D(|&|l}5Pg{r7F5|%WxR(5ytc?+!b4_Dy54`vIZo1~$n*&n?&R>ofJ zF74NGazW2zILzN2g)j5s1HdzPMcZdb_h@P>3xd7WDSGFZzb$&KsKbH20NuEE9 z-;#%K5y(P2{Y^)-gN)e*xv-xZe~(u_cMkr7{Ma?Q(cAI1Bhdv+BbwD8pdo%QtJ+fo+Ay4bL^qvnAtJ#p) zK@Z57Zqq|;;_J$q2D@`SeWlOZrXOTz{IrR_$Y;b4@t&>8eSMc)eMbMq0N3(8K7qZl zG4c@eoeONjcj+40%U67E9ZbBTPsW#B=mQ<2PrgehoKGxpj4?GwaV|O3j={KEqcAq^ zhhoFx246zYjG^^5I$+;}Ik4*+6Jt!jwLu^FJ`Xiv{h|wEAzSmkG6raeaT6QaI-j5o zbXz;=mU~I;4VM2I4|@ijOFX1M#!TDPSlK(jLx<%WWaJv!CjO8G8PEf@XYDdKcfXf= zPOk2{y3qZF2No`3hV!UX8%tyNw;(Rld-*j#M&IQN^vQ!C;A{9qzFIxoHMEZ&k`G_w zwfO@3);IB*PI>Kf$I}b*J^DabJnKKdq|fBdp2Qx1^Xue6SNLN2Az6{5`$)(Jbdt^- z7WNE|e_qar(|c^qIvRN%6_yHgX0NWjx(*5Snja7k979LN z5wH1uZKU&LBc95;`A_kJKazWhoyPx=K&Q!!9Cr%hzOi9L_Tcen+9dXCKb`a1Jy-mV z{K$3qUHZfZ#27xF+`Vr-y|c41;wq@-trg&R-e>_ZNv7Y}tI- zo?EuO+`w|h{f_jJoVN+~57T9Gb^jz^<-QrRF^^m#Xoo#c^ubr+rU!PMo1T zJFZ>9dw5LlSj5GbwC;pY5>$}`af60O!8&A1inMd*c z`l}De1jp*9bFejI?pWhNzscUdcVjM2+oybN;8(Ok8|g5A=U984>5FU9FFu5Cm6PyI zWUs$+WS@EFE3CV081@bNA%5xuIot0?UrrAC?0o#BbMe{Q>Op5u4`K%yUC?zw*8_o% z5(}*d=pVVj!yYSp{e6eNI+lN>Lt=zH$6ix@#~5j+ad)gZ!tVGyV@W=I2iu@mbcWvY zHRc@bfNu~B`7V8MtnbPnj2)fVcYep%@_l0V0ioQ>!3UK3pxy4-;Q!eN=pMb|Tj`Rz znb>Z8wad7=hH<8|@+)IS&y3^!;ncuqv2Sg4pO<;Lm?_r~JG{qNnAd6Nz2T-n#$vZv zY>r}l$$)>8i)kO-AwS0$13r;IAwPc9*o%$yTHIkb#+q)(MSN~gz4MX*`SJ^8eMVoM zi!I7G`9Ai?_V^+GRm|QZh;ii4SIPgi-L>r9Clj$lZf;EYxN=;{fqrfh#O$KY@gDkX zOyzoNPIUjkppR@^&VO+bYqeY4bv=KxEjCM+=%D@7VgmgK`4urW{)#Qr5%M5&c?Ufg zf7yiluGzSLiUaZx_vjfn@tuss0^?8bjH&iO%w+RB4D3*>i;^GPGq0mRV1Gx(urQ@E> z!Hg3>Vq9H^%$5mcrOn!Tcl zjq0=9TYg1m>`K3k3mbQS_HT^kAkIq{*%W-s{R4xTEze+o@`yu%9E_dO1Nyf| zkXO>DKq_RA*t0(}#s*o`q|2Oow`SiiD<<+N}{I67<}b_$z^5#i6_ zfUs7mhLyvtfzNw1xK~U}r8Cy3K~D7I@1fMm2RjdT_6nDV6T?5kAz|(?epo*&7G?`Q z;r{mh?H|L?&d`qMU&6mbcc;6vR5&VJ9li)F4XiY@7#y7N~1t@cde%GQ;w?ZPtQf#w6ng4TtN z3mfZ&G5uru*9fzOr~97nJ2spfZVA)%PuG80n58jGjiE3kz2kuJDUu9lK}Ca<(-C-%$E$_9OS zzq}e2tt?tOGb~(PxVmGQ>UZ9)yj!_DoFA?UUxdl3lT{B7&xMh-k+ogJvSGjKepNa= zTVR(fR#&XfTbsAG@9%tE{kZyc*fJbaIiw;MuHIR_^K)x)r5w`8ww&#xUZa6S37`np(;lglVcs_g{s=d|T)p}OznXr4p;zxKcs$Nu` zr!r54?D&hr+K06-XkF0iYxXsl4BIufYdqTjX#c9=i@q=V{vOs37lup1c41_gI7}6G z2;YQT`fusKzj1%#wB~8eOInw-K4^c?zNK?Z$NW+3u~%!t%7lfFFa`@%7ZN(EUst}a z99KQAx=wAK+T&q^`Udrt!kF5a+L>YJFi}{&x_Tk=+q-Tras)9-TomWzKyswD!z`hb z$D9Lm4$Khz&dloJna(qv>%yDix$tB#-!kWxlYA0xtlU_6GfYyQqQ2>0n7%fB?UCvu)%C(;mB}jVXXD!A+MQ;n`9kA`#-9Cq_IHPQ!c?Kv*XmomfARi{ z!qkna8`p=wH2>1vHyj_f2=XtsP%KzJ6Bs zS>0#%oZWM5@3Fm84w`b%jKSm0-Zy*S>3OGT%0Lfa2q%Ph!n!@{_Dm7_y8F5}2{Y7Z zsLxWHrS^Q~`HK0{uz_I%hqMoAk8O@^9^VN4$M@I6r+uIHy%)xWcLHDbPS~KaL1UBf zk8o0$FH9cJ3m&^PcWEBeI;Qn}`}y`aoo_mFM6u+=%88Ykt20+m3D1Pn!sswv=&$rw z-U)1cwXjrR3;KRs;6twHx}wMd}EtF%{%=iE8HIi!7K zn65Kj=hLw9z{Z8IlAp*a%vsFm<$UtRlY$&ToLaQHX!VIOqBf#-P1uO^;emdVf%?Kv?Vs9jG~Z|rZwzmo(tk?-Mq$@5LpZhX)V{4kwZGc` zZs5meY|dEtj#ZkgG&c$BhPT3wtsPqvwkIs|jFAH)2jrAJsRi@4Rv6jhjBaIrh!5FNSr;tvhb>zRmmS-~x>W z8jprfIIekI^Si*8uNmGCatAiD$iN~+eQ2A?HkE^`2Ui!ZEn0grEMH%~zFSx=d|dlD z8b3?zrs_?F-?*=GUuB8lq28k=B`0Uge9u#zr#kb8d)oK32ZhC2i?xnw9@U&HkmG$} z*4C`8kztFlZF}4HlAR?xUxl*9C{_Dnc2kmt+Qm#Z6vDFS~~^7u-bs%b7G6bs>7wmJNRjKX!iX+#1*d?hPl0FWXc~j@U8UCN%*73tB)7)@~rAv)hEOC;e;SB zyQy+hc;fh#_L+2SL6tU46Rx zCgGg$Ns!;HU0=I?RQ0H;xv;+O-`u~*!)9yD*7&^t^ZwqjZQr(ie-3+wfA#;XU!FEY zbB5-3jqe(Vg(RX zoOAG;gLe<>h8qXnIOvJqCweChH}~A!bAK2SPU$|S`|xmZI5un;9;`oD->tS=?Xk*Z zMgD(!=k(4}?WNkEH9u?a-PpS^SN~l73-&G8cjLGl#~m6@3{&<^+4pN;D_b_UY+M%Z z3H@PEb5PT3vGbU)U~|FdudQEO@-ejzb-BwcmsjK{4+S~qkJTR&kru5!U3t3lVOXrX zSarf6ZyrBvk@}Xpf|`X|*!baJoqu(<4)kWd@KNid*71Sw92y>LJ{HM+)AXJkd5886 z?ae!zOV2tR4Qy1@meg6zgI5n%he@lGRwoK#_^#ojKo{h|{Omem#c)>mG~5t|g>!4? zCX$Y*Jy?CPdS0M6=4kpfe(+c;JRc^lO)2$7|WzEZ)yN8z=FE#!YRtTSlqnk%JzYqMjICy0k z+#1{(9c~DBg~P%(q0{cPzwLb6QE&XE>zA(YD&JK;tbSOP3%_1}y*{RUO!vk;8~0om zo(zYE54u0-{xIAcUaG%TpE>*`%o!#QM+SauNLahJc8%?=P+6g3eO3K;&(5BmjoKTv z_iF9c>TmWp9}O1kv z%lnQ$KbW`n4D<}l6*dp*V`@n62lbZ|f^q&lM9r#00v)S|S`g>NbNaG*Fh3Hj__)Uc z9hy5lTY0vaM}AcKsPa{i*G^EKpzwd^RL`l-R+}xeg2`)imR~f-X$C&?=i1M;dF%7m zrwI#%O@lo9q1r<=bIf*EyGxyANcd~#ubms(H?;p0-fh0yoF^E=BwQix>9KRQ&=jf zSzH}f4O9J&*f>r1G~FA8tHNPn!SF`?jrt^Er`k?6^PK%E`&InrjJeb@sgWA13Bxt* zYub%gqnK~((b}W+mvBdzqCG|X*4C}9ADcfmFA9f-rNf`YkBuK2R|Eo-lieK5llhd7 z!zS%b+J}cHgSa-LGorIkPzT#L(4*tRQUgmB`yi~Hs$a>$t^J%E*s?V;>xS~OeS`c) zJ;7SmKf`K)U8*fw*Dz0`)7C)MiNylzeb$K8rPWQ&2-aAi5Ar_wlRDVU!JKdXaA3G3 zJQxO52Niy4iRuzX+$2jnb5rf6+NAYK>;1L<+WhtT>qmuE!fmO)>=KM0*-u`dyuNw3 zBd9m+5JrU0YoFKDD%4!W@U2o)J|=b6CBuH5{W>eRS8iX`x~iyk?bzJ0IY(G5%oc`* z?r?JBx7@e?%`wZ+eV9j;f z%Ctr8Wx48dMGmlhb@}SULCtH^+NQMy>kHP;4Xt3_sXiue8y()Mzf(UhbixeXGj!iq zzpwskI6B-~yS27SIHr0`VVixGzRJZxZmQlWU$y38?Z>zb9~eGBKduSvVPyCqHHw$Q zVqvG&POT||ocplwX<%Cqg~?izwVr7{(>yX<5mpFOgtbDZqN#e^U(A8LH%-_&@TYXv zd_vyW)9y*dao6@<;e=q`cyN&Wn_ui6o(NM6Oi|3$tX*xA^_y$M&p{j(kNK$EL#0+J zYI5q2pH@Gu?pNEdc5yHt{4mt>kn=ws7VBOtS?=E5bN9^MlX7qO+Tpb@Y0soR;)p`R z);(MI%oya$=Y?5oOsdJqDAes)o!&< z?VQ@7yVhIEJqXWrJy)y~@}2io?kRG|nQAjd8nf3{5A5XbATJmd)R688a{1q?zg5k9 z7Y`d{uA>IEXLz{l;Z&DyFZK`f7xodef3?Q-0{<))-POLU$fM_L&(}8pxI7#ijPnv< zy0C0mE64$s3-rr;XQJR3_1w9`k>ShmKp5H{+Wu!yZ@wkSVIK_URhNV>gZMgku$K9F zutsMM#rli9_sTH5GQ4tXkY6tw_~uW7xHWNg;_8(_?en`pkH%KVR^JQngkOWY_K@0; zSm&liZFJ+>#;H=jRhy+gOa1BE)A1~y*XF3tQ6C=Ey8jyFU>gRy@_pE~d)Mw2!xYI#19@*!-K6?j<+aMcf^`G?8q7D$S?+D$+nzcs-CDYJP4k-O0<8sF@~A~xi?mh_ z8#Fg)zS(#)Gsc%2bA%20H|RenEZ$hWu~iU1{vBp(%~s@~#^b@TaeL!Jj`I%8TkMg$ zr0bGYd9LXCGE7jJpz>SSZ(Zgk2UQO$@;&tldDNipLESrq+v~R%^#*fh^L_JIF||D%3V?WEc()mI8X-l#MxbA)fZzU^ACvR>umu8)f~K|s> zOSn8-AAV^4(7G-h7{u-%wV!Ll6+xbLSx^g=%P$|qOM6rv3HGS?&27HNo|x-{^_mNU82RrYu2`#) zAMG7p5BG+n!vgYJ`1+sfKh@9dKC^pd_&94L zI>EuEOHOEd^x^(B%L=;+_bZ4=ehQC?c0Mo)J@Hsnlra% zF6`{^*5NI=mAu1zY3}e@|7ZPAhP%Sujk_BMH4kcz4jTr(|LyRn)}K;wJSHRcL(3Z5 zWCN2GduZP2dZ);%)HxRmY7jk@p30Gd&GFZKvwF7r(3)X|@M!hX>UCj}+9I_F!xQ1) zAU2wRsYO58^`tU)@f*+l?IYp4AlI^wM2+(5tlPcYez#c18QvLQto^C&&k&AnAKP9j z@HgVvR$-yw^_Ah;aB(o7k?&jo($DVT_32@Q_6F^}!*pShz%T6>4h&a@tvXwE1`iA_ za*NpqW*<7FoeW!_ZUZ!GfTk=2pOfLE;UA7-e{ASJKK z55}*JU(`kUAoo|Lw_d~NyK=|OEvz5E`;zmKkuu3sGX537e}tyx#EwMeY;SgXM(ZW$pK%&OseH=itECpV>UKxqkRO+!*!< zS?+48TVL3JVgFKL(=aMngB#Tt)tIO`QFE!lmgNpNgvDEnw>}K7wqI>qqu4oX)nc6e zY4#I67PikCvU-~O_50QLtJb6Bf{%t-gSxQ#v05HIdLgJEn-lWQ)>J;IePAkE#5)D3 z2g2*&&@gS7G;Eap7GjFuwd0TF)y8(>@N@g;_TM^x>wMJyC>7QP+E=%(P6cl3)^1^` zaCP(QVr|h}U;Xs&&A&JA3H&#oJYj3X*79M}ASU|miDAz$e%LmsMTx1Og#$YW7WFGW z+dc*QW50@dx}1IYuuo7wm@w-~QwR2OeC7CxdfBmI=CEy0J5vkyzP01?!y94c+RC-_ z!j?gPFf3dd9u8^_%LYE?{%~pdCTvsR#`1Mhmw%=9KREubp#HmeeeY!J^Vi?3y;=J< zTo`<|R8Zr(FQ~E19@fuZjWJm(_^tC>=f3uRZS!k+!?Dd{n;V6-!z4lOB<5Wd-t2#~ zf7;OB*WWi=|7`s`h0%@CjftBRH~$*ssNV*$K;H3IxTt+mTh1$2Q=4suH7aXVo(%lu zdBHqb&5oYzS>H2OG`fCWFmJu4c1>;J`ogv(6zg(Z)wil26DA1LhWBgl7i$sQRky2( z2jGk4A?n3%1v$8+{Lox^S6-9SEP z1@Dg+ZfV}qd@;z=?+oma-%=;uH5?q&&&`=PZf)E;B}~wsAe#KMtt44FdcLhT`gX9c z>^E-hm$VPfd`S#v84wUJdF}j|REd zY(cGma4-&6R<103*wD(*iak3YWM8oTGWHgn);X0ypc~NV)wQ*}>`|xo%zj=P7Jzr1sK zXM%wV2G$93ceU!H!Zg{3=Kn>oALN&CYxUOZv9)7siX36#e($-_1&k!dtv78 znY$+r*VM0xL}w`co_X+7)u*Z(h6jV(cEKRuHD22V`N~Yee!UMmAH>T()9DW{h6lnC z;fMAQ?c2inVX81uc)s;~p>zD59BR(aoJAhKOlO(SvSG&XR`zIY7sj;46#h-!_=v_4 z#oGVwjopj6A)l{iGi7Va)|;-wSVt55jnZ#v3%yJJ9=D=o!>A zXk=I;+!XE(+l0G&@9urP=kcBigIw$N+UqrA@J8j0%C=$pV0`SO+%Q;I*(E%c{W7gQ zjtlajL&A)K{mE57Y<$=_A-o77X$hzHEo^WcYVDy?uJIf5|$GdZLrs{amO z1a)ESTO)&c&OrD)Oq=zn8^UT?yE`$=**$0Xy5W)fBgsscF6K5{)VC<=staTWU~QJ2 z(aURV*QR2>TXDWKv!-=hI6eG5sOhM$KN>vj59N}Sw}%75L}8zC`-~gW zH=^&2a6|tM{pLnV{2n;D|D~Wy?)R7 zJ)?U^_wEwT3QG)HV$fD$*D!DJ-eY08LCX!gJ^UJ08obir?*@H0Xr}Od@AJj?j_*0X zXZr5xyTw)WgN3sP$XwfcsP+2|gZ*fug8WKOu~87i=vY~UIk9B#Ox8PDZ>y)(b8zp$ zz4L_8J)?W>=)R+S%b=dqstIFTr?RvL}t@>|GP#t6cU>)(8@MhSsvSCHs zXVc?##_Md@-mu8&7wRn3`OCmxiki9KcmH#+uiSo5`_m8a9NsY&YJ%1?R||aqk9|KD z>uCFq+jrdiW8WY9*|^Wfos_lDM?+74Pya!E2lb5~HtgT9|C?}HGWEYRdd}#%cF?thz8w7J;9*0C4LN%7(Szp- zYlTz8Pr)X`y$A0-_{Tv%4tgk@94_g-q<5E|U3%uo9s&C%j!A9s{_M3_A$3~w+ig4B zc3x?{Qq=OMZBE-9)ELy5J)9ZN38yztFLI|{o4Xcu=X0CqW@T`OV!Z9$S~vR|%&#YF zPuAW)j7$yDx~qBptJ#Cb-d_pF1#1jv1hKp~*!ODPWAE(iHn*@|xk`{@$)AqQ{zduu z2I0BNa~11q+BbLK+ z^zQNQ9&gN$F++YB^uwUjdr$Ap@=DKz*|VswvsF+#Guh!o9|-as`=XW%?Ml1yP4+79 z*WR!Fc=j6Edw6U(qj^S=lk#()geTfhw71EAUc*|)fUef?rjguFuk`1opfwb*ZBefFeqO4v52PmBuJ*RQX? zRC}qYH%?ufx@L}V&2Vhj*siq()*2Yx8Qi(Cbz_T84GH|zBjKv%Rm~GK?^&U}LQ#9R zW_DPRgOZ26SX%^ob!+Gk{F${YHJ05&Ppv1j+GcI$toy0?TLYB)i9;UN9IV;eYb@@Z zntjcmbw0~3rRh2og-OE&?F-u0BIPR|G(Kot8TJb&h9|>uAn`qG+*!93V#{wg-Y)EZ ztNyKueF2O2E#5a_|AhTBHD_vex4SbNxw(B|Fn7?#2g7c`7}{57oj{Cww*72-T=qEH zi*!=`r26bVv-jNAdt2|#gKi#l%-~}N_k}Bh9Bj$nC3~%5(3e@Vug3c5o4J?g^e|`m zu=8Q({;+EhPlkngvMtu)7BSl@NyVhN-)qIn6t;>S^NWEc|a8Ot* zypet0)@!V}Swq`3SeG+VvloBiAaPzGd;7)sOT#N+%gUCOsjE|0HwfxTO9y)z%nPiE zsEwGzKa;(H+H+GF7k&zA18M}*2m8{F2qy-zajhxBR>3vbt*l#_Dtm9tDJBYz(T_3N z2V%b}A9zdGEnVi87i2%JTEG35oAhte|G?M>#_s#;zQ3;Y%SylO5Z3;6?O$IAYlhc< zdHt7Ve_i(1&Bksvw$<0_vlhZXjNcx=eN~V%o|}C~AJsmpUD16-_li9$7JGV!3>q?M zox$r2zI({sL#`U{s`2g#tA}@oygOv`a8%eJj2Jv(@N>P-^-kL}ZI3m?rBa9JR5}$k z-Hoyb!@T>o)@!Y&nol)U>)d^fzO>+n zhS+>UV0Ut~Lpz5SYai__{x6?6zFF8Qu>HlutbzXRm3xrnuh!;QtFBhmp{;XlmwoAc z`U>I8+Ly&%^$BYe*7m9HQ~fCG`FjLw5p@3Y@UI{~%vG7I*e5Ec-&nn|sAb!$`9*M^ zZ1v5IY*hV}Q17mH|2fz=J!4){~$r(&J*i>@zJzDo?|FXH#)ji_^vsndCc# zI{m6)R+lxK%i}Wv2%(dR?d#mrxuzUaR{W~;vXs9>Y zqw>$}7qC}*Q09j6PdUR^;j}PKu(#sl=nseUev%xR7X?~2;_cVkPk1D z`)LlyZz{N#S)ELrRQr0R`ASh6G#8nqHA$-(Mzlw?-wX?+wj;-%EqhTG>RzaOy`J@o z`vK%{+w^YJdqh|$Ox!bZ&mr|g>h=gHL{#a&qUPxA(H9Tgt9Nea+@dCFJ|?fSp8ag& z*~Ulx9~Jw6Z|J+BZ_OYtZGR)2pkSQ|V# zTplLtnXG5$uu!e)CXPso!h7SL~OQ`&bt` zuz6s1tB)=AZmr!~yQrnAPwyW1rP0A_bM`}n*YeG4!pxnSx!I1KcH-2}f6AWfdNwlH z7t`PFFTS&J)+MJ6GlkuPy-k~SHcJI)gJL~h4g9^ZV}3K@$m~_ImMHFs2XZ4d?oWdn zZ7xlf=yf%whogAV==lmy7pt`$I9bfj~Dlo%I&N#^WoQK zop7pwsfzp3?T48y_r%D*_=SDy`_%95zPtN~o+ElL3U7vI!u&yg{CNHG`j53AYyH*! zYNqNHYxLs>e#Tm-8rVd^{v|abx#v&WQ?g@_!<-Q254VoHb=)c8(Qt3yy?t-=ztR6y z1H> z?tMjAJKU4CE_?pB5Bkrp=;eCB9)cr-HKoA{g^2vTu51*d&|~ZVBRr*E@&F zgIcEV@Re%4))@X4mJj01zTxLYTYi!3#|vlX{}OyP_ph%M*v0nk?c0-ttFniQF42jb zg1lkbAQq}gf6)Iy{|@1haCW#YEYw)2xDQJlw0>S~RpUt~X+09mq3yq2bzs#2dn)X~ zIX%ej=<$KsyJd~ZI=~{?=XY1IPkBtR?)GL->ydMsC(9SM3D&?b3hpPOBjz<~QtbJW ztm*#!_um+D-(1Ra>jJCJrZO4*?zF z%f$Who8uRI2{&(UUhE~bKY|STuHjiXCRcg=pHl;xC#)INvqlGX%Tt2Aoa#ezaPzLK z!eqHWX~!TJ-!8lr*w4IS*|2i3zO-nt2lw1ypUKKue`A02Nxh~MjQ{mPU3SlKRJbH; zALR7yYP;B*xl`_wS|h0O*jHcu&K&fFU@dW6XIy8| z@Ob<2qK0pev^{J~2KBLJg7w}zvR~2OfxDY`7xz#t8Yx<5Q>Wg%wRu)TuWmi}JM_{V z`=%f_H3z#W@CWAywIMYrYs~mHSg)}^g74N(H6Uw2?qM?LA06zaI3oNltQ5>yzRKPL zvHO$UyT-@32WGY)zxh7!Q4a-qmGM+(y)E1y-VA)h1>wRV=lQ1nO;MA0FuP@r2=)z# zcbS%CCFJ>HkJI4nV}3LHO}`7C&kB2mtHJ|8-Nt^2OTtHCh1Lqing?IKMz9}4{qc@5_BAy7*wqc}pB@*~ zrqtu<$-&{O0s!F~X1cQ*!m$m~COxB71GJUA|Q zWels1tBlJ|?e8j21$!A9U5(=RP|Qu#>3hQ2?XwH{jcku>PaKZRy2(^wnXI!No0{0r zV6On5v~pwRVy#F*xLHsy`z9>eTC(+Zu#dyK-2tNOocL`+lNanrPCfJM`NR~P)YLbJ)GGUJJZtjykB}@_IY+~Cw!E1AWwE}x7rwZmL z#!RmKYnV3mfFC+P6gq!q=gh)Si9c$5TZBc!I^mq~@1W*oFVYL`7t*U^i_eC)hqvEr zy;tP3?uD8y*b8RPV6Ld1cW+R8-71_HDs1EQ&SiHJ;;md!BoUpi|9>yvW_ zd+|>V)N{B!Hi@pQkoE^A-b zp0+b>v8H)W?p$0v_XgT?Vh$lL@#pV{sZ(FMBG|j6A18!q0)O>&_3L8qy!r8yft|5A z`+8ojyqZ#fv(Mdr{U7&*e8Y3mYG)7rNtcbYJK+y1tFK;Tmj3)_Z;16><0sPmh*(3`!2m}m`gpYXTv_h1joZDHN) zI*^N58?wgvRf&^CLdWnu~l>y@*b1k$c=P4`Tcap%M6S{)i6z z5ZpuNeSaSkwRB1C+r*SF4c5)xZoggZ(N)7*E12)? z71Y9a3F;ho2H$mWf;?^Aa9{W-$ioi|kA!M+19{#P!JZQ_TMS$<*o!3&z8s9(ts$YI z$k7kXJ>^#gdrs9<&9f%SeR=kY+#Rk9?9n>wnqkgh9%Jn%VY9feOAHvVI$m)6c!is@U`7OUwqZS}1dZqnJ zJosd7Yx(Dd)x$D@p4qo#?+AU{Ay_XQ9PE{wqcumdubgg*6P-X;&B4v3X3OuKoEXxr z?3_5d_{|j8C&w+rhCw~@;jnpri{+a@pKcE9RSx-7_##+~6z|mt?G;d4x+cgy_(StM z@ptcVa(FGcZ_Hd}#$a80^I$CfcF+Z3onRjJS}?!R-bdPx6#H`Nko)H@3GWBG^J$o^?hsR_RQ_~bC2>rgZ&sA2DM}J$R*lKw7(A45r+;8Eq+HMODIKs zee(Q1nD{P-*GBpLtii(`@(Y8x>&&@lWvB39P*<0G@;leJ=r4sJ!~4> zv*EtHYr@e%jr8%{&o(^pf#ys{h9!dd`e+bS)!^+*l&_x^tns8gU94lP9Y2=etdMt1 z6YQHXmwqsu5tayYuE*MsW##^?A|{BJrQGBp{1e~5Y?wU^4erCUR{BVoraetEwUNc% zelbCPh<@!KUJ87M81!kFG7&I_wVCnF4kTb0k_78rWi9cc!PlX49{OXXP z@BF=aik!fG33rCRFjsx9`p>y%%w8z9i5&u4HwUl=aarZEVr`GEEf>r!mIz|2wTWlC zo+;`M7v~-)bC2zUb@pR(-)2gI19CKLR(#eot!G;I1-i6Hcs*q|#4bS{V(IqMh3wqlVhqG<WarimRo?67s!QL?T`Fh|} z+^?rbO5gSjY}8sa-BZi4rY=9@178eskW*8QR!ev&_tZ_3J$UPccWUp{jtS*Vn{aQ8HM*;UTC6q4zvjNT z&4Sl62KM`MkYJ0;*0ygCe+$+Kz6@+geT~f6wLUHr_%eQe+OTK#42u_22fF8P_l(RJ z$Zo0Ne)|i9+{E16{=AiQ&)d^si_R9s-hJzq>Z(1Jp2Ek8dDhm|8$JyaXWe7IFkX1A z_F7TznyfZijV{W!%oFS}dpyXs$oYfH2gSbXT`Rj5G19r^JUa)E6XS{b<1ad26tO^E z`lN79cp%7?YN6R_7IP~(@aDmsiw!Rkwhr`DE@vH8E{w8bl27rsPY3??!XQ?D*Z!_OJomlJ@2qie9q!Kk5LfqK-9K}%aq^VrDNXyG z)S|4_SofPI>=e|GuMKK-`a5^{EG!k&}Nt`ob&@S_9${I%=XuBU@}kNtyWH8Q_fGA8?z77OYiCkN+xF<9GBE15U@Ys@{r z3g&3$3xk5WZFdlh%q8TC*4o4t?;X=QrlY3Dj#kLtB>kX={P#1VUac3k{nv9p&Gmu* zvk%xDK@CE#rcS#>kP}`RtRM2B)(q8owBeWRl9a#lxi^G42IeT%N!9Rv4A%Pjs>{O> zp*M*CJBBQs75;A9+%tQ0AeT|O-{;662HhDx4F?4^hh>9$AK&xB?`!0~BhQ#Ne4YD= zjtOM7dRQR*miyfP)cI3!?<4=H&Utj;Tg8W!^BZnI1^v=a^TG|XHeww`%%$IS*PLm_ zux<9Pnj4r~i3_6x-?MvuW7~cTb4PJZ4yv}mcgzyRG5e=R<@f%K3;UF#trgg(brE^o zSz)ViNbsOL=5NDt-@sDAJw58Z&xSEUe3u{k{lZT&kF@slRr{;<*zj>UIMAatJ8O1w z`*26{drDpI>RU4`7+VKRn-gzQ{rB+v88a$QrU*&>dml)Xr}UYFr-& z^Qq~>uDLHgC83I3+Y-r%#82;>`&Q_RJV)&NCj1b-4bxPnDfT1XmwhG1(%ekn#8+*Xce|xmuV``svU)a90eUYD7^E8*bt?Ra~XLFDK1=S0R{g&3~ttt48j&p-O z8VBdzs_%1eqg>$2%9oX6gSMG3&Jyf_G1iNO*@D{lNx_((7oH9DahYTd=CX8Bythv9 zez1qf9xih{@ll?rzDfV=Ih!ZHp?hHXFie~K3T6-HBIkw6gLwH-?w7F6Wc<$x#|3fH zn2CjQCv|vxWy~`k4C1N%&)U0K;OEp?<+)Qgr*3Z1*rG8q^n};?U+do`tPxgitlCh& z9hToX+%|h7*%W!pU9EF`R{gBHOnsSpE7;Ff&Ax^S!j``?Ywi`cPP=Znt$thXjM=9C zRPCwa{#w4t97(N`ywtJw4J(F^J0BPG;T<|Vbj)q|Dt^@(#-4%SK0mA*77XS$bkzKs z{mAvz96t%i=XYq0V<#+}JIu{1Ru8x5cV*@Xa$oU}jmcXNXdO_j_0(E5Q;%YAvHU^J z==0#dr;D-|Q7!$>U~SC$=u6@JFhx*PwFh8Rg`Z+4UNn)SheIe#ttn*%& zdyKXUO9wt#?M=N?-8|a{D<@?(AlESmpEJxH~*D&pXXj5K3y${4(}fJ z3x@@NzY~q>Zuz@#n|B|}WrIkx7bBDLP-tIarm}~txyprG6us7Xa z2mbS?)XK!{*V?ZYzuh`h_DFn~`y}by=pf(UIoQLxN`8;;gJ3SQb@mUjC%LSAZqxie znHcm`z=WsGIP= z@?AE=|F0d`vvu|{VZQuswlxX!Tz;Z4&?x@D1T}B_*wzbEh2cSt!|q`|B`0wY$ob*L z@NxJsd=~grHm!!sj^ugri4(&Hfz0GKDFwIZ4fgV=RjOsEbq>qkQg-=4u#Ut3OYqsR z>u(U~n0c8#h_UJo2L$oz<6!^LM8O&opT-vDgLF?VTpai%_jsw*+V3g{FrSuVAC_M; zRueN9GKbtJToCNjQU5oW{4U&;Jqm~BK8NAe;ng>TH5Thy*9Z6iJ`ni8c>}*-9`<2= z!^--_Cs`Xc{~~*FK))X8JkmKkSoc)hH7AtQs98)E)QJuWXNBLw0>9t?<+#Z^lgC5+ zv*SEZ26d^EgM7svLVH=QTbhga1~$e<)!O7od;uRzmTX3y%`qngvC29w|K&aoKKawE zH^@8X7Gk_S%e;!8w5M0C?%E({WK-sazAxW4-=>FG208yd;l{w%c(&J2AKd5Rv(tij zqb_4UGbV_K<_`8D=rcd99k&Eyqb9OdV8`OjvBBSQSH}e$5m%4G#w~ zcDHaz5M%AJAQ$_byymCY3(h4*8AJCD{xyhI@*fGY`R^{_q(DzL3iF0#10Qb<+5TNQ zS37$+)W~KI_ADF`)X&BX=F@VoErNcj$+H3NHm7WHOLG6t1 zqR)qiYr<8*vxhZewkw|$2h_;Tx%lF#b04$4R@Rf%{^`bRfjrE^_#MZ}Bd-ePj%tjf z!x}-Z<&Z2zw`SQa#Qwbj;gLgx26w0 zfh@#l{XIFTPmvjYU?UBSMq3ewK7|N zqmU`T^L_X_n4g({sXYt{=3l?$cj(+dLVgPdbEK()_l*Ic!$xKfVi`XouURw5UDyKb zH8Iwg1vyE=2K(LB`RUdSSr1cZHkYzqX}`eO@LqT{oEy~Z>;>bq#7A=fGV7W4 zVv8%I0)5n8dS~vzM)`L0-kSpZW7Fyb?ytEwzxhd5&ig-1-363n)%8B?RNY(MJu|pV zU~mlt2*E8#fM9{(5Hz?;aCZv?2myk-J3)fOKnM~fSkS>e*hp91TgCT2_5Eh8f1kCW zyQlifIa}WS?tS*jP=_&VhT2km)-@Th+>IHZX8bJmV+UkBoB{8zn3^SX_+`d|$r1BO zXJ=S<0<2D0{{EjC-ubc&b3~@d7kN^<<7aWi(HZM!i2KEr{%?NSr!6!13VAx*9{s}$ z+YiSF&wvp1d#n4kwu}d?z_rD#JYa-hgpoQ1i=%@mX*hzKIhs9}gd}S>$ZH3~>S7!*`0~ewTrJT_gjy zXNVgP&wxu;&)72qU%FJr1{t`uM>242<`F)zhWJqY_RSe|fPTSMY!4empFBUi@45K^ z^9=*RAN-^FP*Xy-%mLiRx0o9`&Ti59p^P6=2M9~E!+a%97VhN#*myE?V1{*uqwuSI z!)F=nw;Vp1E7KfK?lXWX2DyFV%ehbKP4=Zn9^fov8Vb$y2Wz^LpZSsax? zR$*b7fh^;G=)UJ*zaGhWEyEXFI9mppkcZ@p=$tsq+|V7ez+SzX(axB}(TSbO!0Z{~ zrUx_l;Ys@KZ*fgxn)P-Dt_2{lVSdV9k6!d zu~8Xhgr7#7DxM zo((=x&+MJW%jO*BBA*vzh^gtk;b+_@nH3k2S-yo2Vjsz&&v`C5=eP`b#Jk`{*+qIk z`v1;aIwp02{2ERd|200f126Zqm1&$GKgwKAJ3S7@@=~4!_FFq+z6|(}O*5C~5BCD+`WtrJ-?JsI$^JZ<;s4|gw*rTgcY05L z=sP)vU2sS27~F~{{&$AY_&wY0Gvtj-yAC}Yo54OA{P$!OuMfNL@) z#RJxx46s}HK{&+sd>K3slfX=_PY&?&Vn*{}KFzV8?R|i6ygPlTf949_pQMZQPz>(* z@ku_<#m<+M@*mc| z@P+)Fn4f&Q&H?{-E}B@%P_M?nkW2e{#cgDj{IUo1gZ<+x%oRHgugQPVaqmn2=`%aX z->~^~Q*0&Phv(HsnMWKn9TxkLOL$KV#SY*%_)>m@ezHyE&)j%N@?p-*9jw9TiXr4` z=!uvc&U+)nyZd|blvt2V`I$_c8}saa$rSw~WB3r97i_kF#-9d~YscB0n2GLw?Da@7Ymyha8Y? zpJ7AIxAlMp$gp)`cU{Zp;6m4yi}rtV1;gM9H_w1=46(gFNZV%6Z@8R)QZvT(u*2q* zuBfARE$?HUsdcOhYXt|c%6K) zp*R=sB+tXQn?Eu~4?L%Lf*0tP_wZik$g{u=Fg=-Yok`b)$y~#HxgY<pw9v!2{e2O)~H^5J15iU0e=FI)!0?$cL$fEgxQ9O$;^GxPp9N5*h$OC<_w(PCp z`8_9FN=~ga9W%FZ6P%(zwgbRdGx(&^ZC{XW_3@x!LAwn2A@Hv@gj7d-(dIMpB=R}bl7|I zpXQRS6Z60<=9hfyQsNnXZ^`e{YV(uCBx8!CjO19`nP_kX7>x^RfeeX4A+gdEpzZi+3fb-pl9c zKfN<&;!(2X8h&T6?*=*bfAheXdOpv@yi)=g1|S$L^Rb zvdS))FT=IX6P=s%Y@UH!co*+vKCKHI;~r$z9I=gLm=2g{^Wux0@Z7H9-qzmVm`}3i zUHv<`plAI3B)#>{K0E21ysyuDM)T?(Vt>!*eaMu1`<#F0JNSNfj-0@Ra1bBM-g|e? z=Xb8hUBfi&slSTg7 zy!dyriJ;@JwF*oGFeZ8O0kSXs@Kk0^d^d6qc|ND!S z|M1u3%Db9F&*R$W!Mu4+w#jo$l5xNDd_F@i=&+w%o8Mr^=LnwTN34l^`K)!dHtZQa zCZlx6XZ-Abo*6bWkKTjqdVcpbf1b@8`f^V)bj;tgAMB2Mkv%%+JzzGn&AyUj zSlYF%vA-j`e4Kap?CwX_>9zSLU#{oxT#w!LUf#pnkpnp1vym~+&;HUM&%?j@y)VAg zm-vLt!8fj__Sk#z*YpJsK{sI`xCE|XSFH#AA=myLFM>lO6XwFT;16?y!(s=l?<9L` zUHDC0J=-WhORjveKi&aO!IAL&@T}{@O5~Hg(n~xFEG1Sm-`)$}q2uCj*MtGtAkQe@ zL6+q-V663X2B6PAmHr82N^KCn*|p5ow&4LhD|yBj;QRRk_mD?`Rq&B)fZPEdm9N96 zh(D}7+d|*z8rfpk#Lk{s?0Z?TtM|07cq-g1ehDtcy;*DWCm$onwp|8$V;$gV>ta64 zyBJ(-CMIGV`5*iuU4m)IJ3HVrVo>#=G>};j$l1K3{nWuB+#2WgdC*E1i&6ar{K84=FvgCD=eY0ln z&o)~J*YtdHU$6yR*o6I?|x*5K6?i5tp*DRh?kPD5|_9h z8N}7l6?>okj-4fQY$|?&u8})>Y#q&!x%y?!vZtqhXKv(Xt;4IS?Xga3DR7bW&2#co zPo-M5GSjlvF3heBk`LPGWd8g z7rpRoF|Q4BcWr7^<)4p89SwW%Zt7LpVfkmZU~l!_>em7-5e^=IdPi#Tq&>=X$`jbQT1AG8}m)+pY*-BWCjgSWuGcK1pGw-f` z5^p_87ug&fI2%nC@htS5ZzXr;lDv>FI71Bzdn#AR_gm*Tv(F6IB~Qa&stGe+>LuL^ zm-K!1Oz~SQrXG^ck4X&+Sy7uxzi`t&$Ck0%>^j-92KZ&qMV^LJ8$*`8k9U1BwPx(j zaoOL_uicvSIoVvYu6|X0r2H;<@P5{8Z1yYQb<{0*ZtsrUwQgjP?&0&;8vAX$zkAU& zcA2eYlh^}uKJN!7$xV=HdbDzed0{X4 z9h{W)^(@wc{Ht-Jmu#eYqMz)K`WW_B?pWR##{(ad2R07h!v^uq@DNO39|`;G{pmk$ zgYNs{uUwz6^S<&3-uIZ~kMKx*zWNV(KUwM)s3O0)bpOaJVyU#3Jhzi~l8)@FG7C zZ@E6XC7M)2jNPG!^wRHP?5k5tetX7#=|kiFk4nwfAJeOWE%zQJ-Nm|ebglFml_d-l{moFPXB zJJ3J=M|>yFC4=C*e_;SzVGnA8)6Z^zo^kelLBdZ_Kdf{FS;k^Qhk!ys<|1 zR>&Y@F~=LdH+piA zr=?HZCD|YFS;o4JbsOf``y7+1Z#MqEoCe&t>FEhGXE+u$o#d7dkY)7|d>p+atL!KH z%)T#?9)Pfs+CsR3-Q}OmpWLU|sMG88tlO@s4fU>%rsj|>n>)1*KRQ?bPr;lcB!?4E1&Q>n?k6YW9`E7UW9(Eu7bAHkz>0tvRRE zb?JSp*=k;%THG1ZBadI2qnM+BbC>Nd+m%0FAbUXUMY=gXK0nELwE1Y0ojx>Y0kC6( z*&9Nq>8AME{wZ~$IAXQK?4F>ClEs=<^iW?$r{`AB&^^Gjag7O_b` zXB_U9{S~LN`R>Ixh>y3)xuu@f-b3=XUU~xZDe`RenM{hK*jRNxcV{1=dz_QrYo3Sh zE|YygbadnFCFZAn#{02FFt_JtYs6h-3tz%-v-_{7?;e{oU+U4Vw`Vc;zTj9gZN0=Q z_M(z)>kD(?2JB~n*QMixprqKI4SO3H>=CqxLL$Za$c7 z^MicnJH2;$)??Aeq7C~&#-|R8%{RQ8zfs!YJ?e9%*V2}kYu{T+YKrt<%=2meIA=@>as z#|G2MGmvAPm>M)Vfp3I&)MdkXzsz}7;`M)~_YbUTFB_ToF#C(y@2k_x0C)V0-Yf8Temno9XNfsr9km`oV~G{5!6L?coPtVR+vh!(jIQSi{*< zABv+RtDXs7m!}aU(qWi^&s#2i3E6yex@z`7s(F4k{eRUnt(3u+ADZ4IVxFDT&j|0p zrjlp64bx1Yo^fjL)wJUaJg?z?=3TwJ>xe1H1e<2A*@FkN!x+cK9^tqsBf0W!Fgx6Y z7ZmT|0^w427Vcqdm(5;m@dG=iMro$3WftM{?dh}1VOz@0|Xs zo>?qu&Bgs{bzxkCe-Mwtfc8%fGzJ=M6kWfmcTGOzdf(_suT#ILeW4#k>FJBG| z$ZgRjatRCY4PrsH%+^Fd7`p5C{2SSg?h!znmr|IT&w}TAV=)v zw%HFa@5rySf%qzMs5$l?Y_n$*pTHG#Pdvzfiv`(6^=0mFKNp`4^Rth*7Wj$m;5Ni( z>h$?$SjSqi6XcvNaetqIZCuAYz(U^D8nE;HIE?z!>@8!<#q%&CPDGq09ujxK*!)-D z-v2nqkFdUV$3M8A_ZNqXpYa~-ly@cHWR^_%J^Ly~Py@tXnqOQed&lSVr;~Vila0lPMN(LJPKk8TE-{m~458H3e*(lG>?ph!I$FuXb zIAAse?`i(Xxb>wEVlTFf%@a$Re|$h+{)40GuDQiEkV*U>tVt)_N6kLJ0NZ#rb^K}= z@t$zL7!-eM?%8*F0_%+LGUq?$3x|RSU{l9sA2E(rT@@Qg*Tiyo7r0bxMc@9L^Nw&< zze}If$Fd(6XRuhhn(-;-7uJWL#8>kC`iY3IKkt3skA3Gz?=$i0*V%`IE$qEm zl^lxu;Bjj!&ZDP%hFX6z!XJ`Fyd!@~9^sr1bDj!a^Zf9>-{U>(?{N>Y3^^6=v5oi^ z>q1`D+gf|IBkZZ#dHRjd#e>lqxdV3Jej@k6H^IO75YHl~A*Q@6{ZsHD?6v2B@m(Kw z!)3EaVt-h|ywNE!l>3nvF{bx}dBvjq2|Z?m>45l?opWux0iMRXiO_;-3yS|@x2d3ZN{7TA|bTpwHNx!@b}K`vLx-bgaL zUHYtv|HRVve_01Q1oL`Na!UTi19-HxdTaHpDVt!8W++2R#p83uju_8M9B&n#0s5uf!r`S2L*FWU*z!bC9We;fbp_r}B9{W@cf{Iq)p-zv7n+rbB7a&hiK z*|$%h^zfk{a0xyQEAN1ov{j=BY{f8MRVeYfiQ-Ga&J3TPPMlYs^#}4Vk%YKGOh6XtyuE&#=j>Jc9q}RdhRCZN8qP+|-t5j9 zhz^lOeDO5txjrsu7U(rLSR8F?e2N?c{P2zqIpFVN5s~OaZgAOk2TY;ZRYf{dm|_NkO6pb zh2{!PewTi2kbSCr8adb~=eXXQyvGdTzWD8x(m(U(=`pcxy2ZMt&(IU=M~`4ZT#nzV z>Hb;zGrB)KATF@>`1;e*zn)I=BL}3{DLZ1Fd=@_h!rx6aFyqvs*ZQ6Ca9v9qoP|i4mr#H`e7H|uD*~!>8T;=8IHw>dLnZ8u~ z(}C%eUNnp5Z8-x>?1>BdSNcP)pT0P=r5};!@;vP4Pt!LZuOmK(uk8(-ESx&~1S=nv z-galF4`tP?n&!Lc7XAKSyEJ#{_mYMq^)`Aoe(knl5K);z#+ZQyQl<>|yy&_di{F`}6ced_R5uP7kMaTX9*oRXein>IFWeBAlC zBR_F)ad7`^y-%x8EB#s@NT0K%Gdv?a2Rn;{=qLU2y)~e759VAI_-ohn+gu}OEl(LP z(D&@NSYyNVYll@k%}#SLeNw3kgf@?gS-dp{#^qZ59hqk-=z=Y zEIC`owb{<)Gsxxp>A}Bt#@XSiPt4f?>H)+MW0R+tzd3&sFSmL6akKT$rEkBUo%D^I z;1TpKSo6m<``AFtIeU7Fu{-?5{OQqZj&L|+MjXL5f0;e2^b+s#$KDx!BE|*Tfwmp<$M8gop@l2oEe4R{<_FW46|>} zw%aOwur4kyE|0H{ulR{m(npyOJ2z*qi^X6-96Ou4S$a*eqx&`XYry()1n}^q#iIqC z{3gBO7D}H1xhJ+-%)3c?adL$3Wo(oaEbs~!v@U4vmOdZk*|Y7}-LJbz`X{jEXXm_& zy)))Y4{)zKDlhAoK@u%rSJe={HoDwe{ z>QtSI4((X(Sn8=UBIgEu+xWJD^MVI=Os}*TGP;d!!~Mk9V)K8dPs%USZ|t1LIgL@t zCCSO0&^)0@w--pyTKNCP^yxhyg`zwKfgE)RuBsg_6CCl z9`Bjs>2hASxMua7_s;ga))&PW1%1A|b9cu+;~jD~^Rwx#x<_}9?xs1X6eem6HU|Hh zb4On2ywHKe-pV;PcjufpJO*4iMR$rWtTl5vb19ZzvR<<0TZfy&{j*9|N-s%#B>otu zAZ`{jlM(+$=U_v9c*z4?{#AM;%Of3~!I#{Yo;gk<4P4=QbS3OtZ)!$05;EU43#5~}pr^>l0WMsE;w{n_l zn*JHbOO#8L{O`;;mq@M@HsA+6^CmgZ(mbtLuUK!{+p_oD^j^e&!JI{}NCxJcp7&X> zSg?2|XFi>oUO(HG+m^7~jJ+9qc&!;T#JsSAo+0>2e(tICk@S4GWL#EXRbV>9p^VraJEhxBm1HRleAg+5OYbR0W-hR4-ck50l?=5?9$KQ(V^4EQDU zwn)zOlSi~(@&S7Gh-t;D|LFdsi>IQ0{0$sRZs2fvPJhQo!sJ_K;FgZhxnS~NHxxG% zIN>?cL6xpwpL1#+4M(+KZ@+$zs#TNofq%%~husgmcjo*O90$(#LC zwzlTiJ@#$v+o12{x^C9ZZPVrSujx};)m8m@@p<7KlcDt4{&$8r9L9lj*`lK}m#GvLWRiaiRstLM@yo}QgvoL=zhWw-3|`FErj zqk|)Q*xPbt{CE|j1|&<3kNCo=kwVmd=?zy9{Rw-Obc`u=$@Fqx42I65Z|(N zFq;@j&S=x#rakue*XbSmV9tKSSMm}37A^=jS~0d4$@vQc_XF7Xw_qI&V;K2jTnLded0N$Ux zv5|Nlz6n0$n_N@vP)vQlr!GC;Ed7OknY<|e)?CnEw&v2_r9JOO*Dua+@x6L`_56HH z23{V=nev;SocE$R)AW^`e{J6AB@91n&KKc(VNJ5BJ_45mGr}61=L{UWrCozvG zOdJ+&*LCH!*>UlT`QkTENl$$K`Of5Taj)vTt+UVIAjI@v=gb@2_>t*3|8Q!e;9U4b zo@8u#t@AHarkAz&^@9wx4eHd$!?cZQ8}wZ44C~?Nj!BIwjsgEkF5p>lIqnq3rH8Je zUKYN=>5k42httR3=d4~i515l2%5CZwfLos_y&zyxeh2sBnb>aYh@0fM_>VJ!QSo-- z4}QWs)4$EqV~%{`^Y~)+z>q$htWS+-#p;w_+>J}9?FA#nEG%z1Tm;MNt~g+R2>mHQ`?8T z!DZq##JqhjD!PTIw|4xcc!+$fEy1g?DQscUC>n4dLJvoeSB7WExcCN6xhj2p#ff|x z*|8RQX!cSJOMci4&nZ^GeaIb;&N*zyrziiR8Mqd9maU`z<{K_qxv_G?z0{?wp1#56 z;;Zx+WPkZGYbAao7y5tjyD$KIC02pU$t#{3RY5tI} z_QkHUM{Kcu7;+>qot(aB7MJ7x@ul*qauj?tZcrSH=fzLbReTw2s5Z;mKa-q4yNfqB z59$VS_hLwM>Rs*SaZU1p&ybg*qn?@0v6=XAdFO9~?H|v$Jm>wv%1iW?NF@7c4?pOA ztSQ@!5Aiv*!gQUDc`ZG4`~EUD-Z*h!CI*YqQ~km$ThrVZp9q1 zFicL)U>S9s>!r4k?7NS>2l#V5mb@DO&abkYaGN**N5Ef`X+8uVV(Znhz&_*%j*?Hn z_sDOF8DYE88ETK%v4eXD2boUn!8Xu~^@>;{ox9 z7v~J|R>q~BOFJ=F-EUgowA66md-zTES58c9Voj_kyd+1$SF`i*BkV%HS4kd_Ki@Y4 zKK?8`<-QpoHa={~Wmu>4y61Jt<6^~P#b-G~;;4*A(xV?oEEW?_umgBM`9M5`cbcg= zQ`4OCx8{@`5P!`PE$LGu& z9RA_yRlIuoV!o7NuJF4!HT)Oe@0y(HBQ`W&H`h1U{9UtX7SreKM7Gs)v$x_6*AUA+ zoO6F?&G<|AFJ18;tfVIzJMl`+J9sB&3XaRUud5ZS6{nV`mT%>3mzOid|7;^az>eS? z)%NiH?3_7d8_o4rId?#g{otH=0H-gR-st-@_vv%|Wa}qM0^yz2ZK!oUCbfvL0L%&> zZ%}MdbixhemtW4Ac4F*h)3;upguKhSADe#rw|8&vZj;;_JHQ{}waERKIUjeyU2|0&vqhh0CpYA?gHkwbt z0l_47Q5T-&z3RQ{>6{5OTk3A;|DlaT8?*m7`;YE_e9kk6bLAPx0KHl`XEeal1NA_? zM)EFrJ9UZ&rgnL@jE{3BqWRmh-m->I<+J2+XHNYu3@q@iVxT~jgCiw}) z34J?vR&`djMX^Qy9Nm5$Q`Qj2D9?FZaa?g>&KXpfdvbAdF>7iv<-11oM)bB#9i|+> zKT_*Q4#kA9DSx|VcgwDMo*`$m$Q$yFFg_o=XJgM~>pt$=q}S@#YTOHZE%wC?@nx`! ze3IPW5#1xY?7N|`$ByQEObF}L9sx_WW$pU-;%Rak1UTYakk>e2Xf}+>DB4g&vIVb|62cR z;o^?3kFRk=&o-ZJzEHeSjLq3;?CPVz#kg!Z{MDR=!XDi>YGO5QP7}I5+}A4^ zaN<;*sXFxI+Tz;c@zh{!S8rG2#2*aDCO>di&aQd7^K|FP@IWiIR%)@)=U3-f=6;pb zq2oeh=9}kd{4@35>?S<7NzQh*4qJpT;upk6>MgF$x!mRg4y($l^!y9e3)SO_amDkE z=NsqN=l1;=zXZ#`R`P0W^!RdoDW`Hv=a$ZJIb80ZaY=G_|HxTi_G+B3OLgKtamX_{ zC$t-mQH;V?sqXDL5$f6gt%W1BCv zjF)HNk?@vmzPRD&oL9%5tChk;M&AK;)gj5>lFlrXGuywt9Rh2)#raP!5sihtWbw)+^LFBf~Ufn!r! z2Q#XD5$DoRwUK-jTY5!m?_pvwG&_t7-=Vuhm*3nkdkV$6d>p=D+nj+(p8j0?xrhhq z$uWPDGrn94u7qFZ|DVaZj%Q|kUVq-NPvOJNx#z{D-kpB^=0S}K?58GykHiPrs{)ho z^N(iSlf2$9GH}+OZ_|3ynoT|+^&|f*{#pDo=WyY*#qw%QU~p^8U!2rCsYi$K?R+tR zCNH;Z@Z~zGrxBxH)V!$A6DQSJA5k1p@RRbL?4Nj=u8W1`0bmIFv0ctrwuc6{yGPDO z!SjeS@H$r|r#_T1b2y+fUyJ2D5dM{{UteBdF56tTDgO_HA5tDt%H{knJ>_v&d@25q z-&i*L%sk)YIXeL!l-qnW!}sbjaWQm4?&gAwJL@}Z@h!XhZN_`qkFs06Tg}hBnX`e# zgz)dwsbhop*n(TL-%ad;)8MDo67r|~IJ#UYo;;!nhYJ78i{|wdVk~6?Xh&|M% z@hRtb&+p>J`5>{u2K5H@+s=K6oXH))p!DPuSh)^Uj6yhZo%q* z%{kc96w?%*>7)9iy7ObFzsFQ=MLkNZZq>L8nEv7Lui{@eia(HN5Lby~;Nwu<4R%fZ zEYJ3F&as8N`22Ii%i}T01q?_3&FAttKSl0OEv`J?3&~;MlzpZA{JW_Ir3a5S9_wR| z3wsy#@S5gQU7l;>I(`f>>pJ_@`_=N*SLVFVBeIwO;Ovi?kh3t=Qx(^N8Wq)G*;v#CFFfp1&>JI9%-AaU6Ga@91uxy17M*MT?)MwrkCti+O&|lw!xP zZCu+pHYbp;oxMam7dsc?g*Ccsbmgs1$l%At1>a?OzSEnhH|3hu?(j(`XW$>~&B7PP z+%)8`;7oIhJA@I%jbbeK#h<7boHYX`QwuEr`c?)`8c%g~_KD$GzQ`G2!;RsF`P#F) zXBYmQDRC}eYYpYQaT4B}?{yvg2AMR^auDpwd#N>)+rVZ0Cg(EHdHN=vfOr3rq4qDO z0(~8tEcIdA^tMTK{#k$jv>45`-#i9H~CXdasmvJThU;ai#42is^$OCyD=;bH6-wDKHHlNvyVN_6V?Dc=E$i$3%Ah zA17&z>A!dZU&a>WaJFu4-NeO-(eVVhR?iFziHqS=eurGqe?ElYu@{Zayfb?r%#-&p zPwb=jojvtG&-9P^)L~-NQc_?&m+`1=jAZ-5Z-+C3(0!^-1Q6zu_N`$v880!8ayP$M4_-_39DF z^Q(BQzAPq>gtxfi`~!r7l-KMm!JGJ)JY`U@_mblhyZVAn~9!!8B|1*68~nwdqGEZcww#SFjzpI9Qm>$dS*O zy$5jH0oj9L?$}Iure7yl1PjPRvtwk{d*g+0oAg87KMc#a>1hx9&YZDv`lN(T>F*2i zJ}YO4L+r29YfN2-pZRw9)*ceRoIb)@;z2PeJ4PnyFkLg}aJzjF_Rhcw>Vp1|+I+RX zAEy=_F2Pr>ne)@Eqq>*d!^7iE`DwC^ALfJc25=kRh`q#FR^6(L1HGtmQJ<&63BpSQ zje-7p;p@o~AJ)$eWWOpOhgV%SwF9T5{)ycXBe*|)%6l9ep8CG*%i1pcXXrK_pFXHr zSS07qusNHgW=w4jY~xwvD8=&XDW1wc1w8oujr$uoo2Bce`*`f8oXP6mllWS>ZkR&; z$$j_F5WB&#_)$Ehz8-L?YqKNrd-znc@o;i@_-i?2axdQ`9+Gn+f8wH3lUJ5ggAZ}U z6Em9m@^3H=IkUF#yn14`9zTMYIj(zLcdhK}hQD4-t{qO9ko^d3yq@*zX1_e1+x}8= zad&Fn6Xgy(E2Nyg!?c%Mvg9Jby5pAf*|m9_ z^EQ8#GsITyt=hL^xc+(4`-6OqP2DIRmzxx`($~6I_c_#Vqub{_9?L#CK2u%Mis4@Q z6MhuG^&l=XB5M$}6&=t|woM`?1zfHJ)nVdEQB`6<($n{GjXNZpq`u z&5fIvWxv!+-I=Hy^M;2?Poxd1urlj@UdHvgUGJ7HSqYns2CdpGyg9N9l}UU6O_ zxA=bQX!uCBl|0fn@#O2>*Sm)#AD=02-qN_GK}Vj3}T0L65mGSG;+-%j_s>QDm2;Ac9Im7huoQ*YQbIN|rNK9n~ zo8u`x(}u-{1%J0~&LI9%<4+C#5vJcJ=h^cS3)c(R7Zw*5_!Rqo#5&%cjW{8-qquYR z21Cg++}^&u4I}SV?o^(hI*fCwbE@}Kldev0Ae^`RofVGolblU=ZtL9EgWU(SqhZ~C zotbwNf3qEZK5Fmo-d%Y8z2H@E-CTbJla#2UG`C=Ii3*%O2=F(82ksN0=*Pm+YgE zqoI5FIXL;Q&Rw1P!!hHYHcL(Rp6xx`@(at4SboI%sk^;!_`+c}7#D~y{cZi*`mpM- zO1;jxgXa#OP@Pa&2RNMm%+s5v&u_iZe4#0~!~Uzq;-kE;`V96JZ{z-ItKo{#-O=5R zb9TG^0lzPPU#P3W$GxBNT;sV|)sGr~tN+&LIhW5l(eqdHSA6}5?5C0sWrNO1-j;p7 zzr4TXSMb1mtr(4MV3!Z-9@M?QcYSZZV!nb+V=vi0*PpyMdGD*vSDia^Zunozzm@~t zfiCWakK4bwf0KXMrn^m740>B?Gx;NV&Q*G=^zc}r-phG9^K_=Frm8j_*mOWXLvB9P zFg#1nIo@_~+rhKCXLY9^KmGXci|>mU2VWdi*K|pJNquN_XrEVpY2c-SU*(+YKV|GO zVviBG*03cqI8sH6O3nuh(jKzAe5j@CR@w{(zkwksODb=kKcTD(iOFz+D3$bw27`ntdjG z+K%b7w8V%dMr_~NzVrTs_a|(dGwK%^T4YE}b9;4r^xVtz5=`Qi2C-)0#x%Lv$Uf$b?-xkUVU>E78b)UuB3 z7HR-sp9$53YNMQgven>LgX*WgX@AqE1Aj07UXl@9^#vJl-17s^55W1?cCPJgkX|9M z(&5G7g}lOw)ryt4a*fn-{w3qK_=F`UE-{g>K5*25qvTlTo;deJapAtreVfa-mT!HL zn)_?VT{{jgzHsou!3)X@N^<>7>bw8e{#$#xq3MR!99VPUmg<&NkWW+bu~)aQZXGmm z(7^c4_|9qV)7pV7FQO}CIWASU zhA(ek-h5)@6C;0D|E^wT{3_!wEiWyP95`}-{gvx^ICYa>6<-zd5Svw-RqDg&4!eF` zYOmDFi0##Q?NaViep7!_Khk-mgPX%~v$<^OR_WVzdU)~sTKBbPOC8Y`?Je4$Bwz6Q z;Om3xw{Pv-+Bqi!&pK*o)X-A(Qgu-kmDpwOa_;h@;-kWz#y2}}_V;#7oeU*^D>e<3 zt?^x#h3m)X?%Le7zt`cq`nr0HjHjDVH`|SN!yY0$!Z!6b^?#fHZPE>SVYn0)XGiud z_AJEw^A68Dd{^VH#^9*IQJ>YH)oV{!djbybv%${>U5owNF?%TQ?%v&fsC=lLqL`xp zcX;V%>u2i~TPwEa$R5*EvR44_y<7IUifNV`T5bqWAU`7~{M}E!>+@u6$km;zJM?`2 zf&B+I>1@)$FRU`K$^a}lPc=_vefcN(>(f)0;Q##4>B&oOTy9+A`(LeJtygcY-uk-w zx_Z9-e0$`;$bpA)-u>$B)!S_HqUECHOWl{cIJ(o4Fa1sRn~G0dqqRm$jDB!+aP@Wh zb=i-FgY)Js=PlJfj7c50Jk@*IYspqjo*MtzQoo3A)T0speY||U+`YMblO9}}9G|s2 zwRvju_KX#~D`p4ZPThYu|J^)3b$L@|Z^;Gq1vPF>{_^GG*AHeR?|HTHadT77qH%`pg<1d31Rqr9zWxtP3K6c%D-C9kU znm)Otxd!GM_*ea}AlT3A>s!~iMy9q$&QDD#Jyttf<_+Z(rswZ5?NQTL-hm$O4^ zBKzEOvus}3xU#Wp`dG3D_*ya{fAw|a>xLZ2@);|K>q^EZjNEelIA??K+Shik?LM9y zs{6AkWY~Md05GWf4)_Sq`)+Dz?XB`&xOMlzf#bdLK|9qu)%dP2i!Y0tQ$MWEj14{{3~W2T{K@ROS}!~C*9fj&wOqBopZ&J# zw(9cKhx>?JW-j^|bddZl3al2eJ{qoE>9eg=E zuygiX;A3A%?p<7kqf$4pbGW*HrmhwK+&uNkIL+BpQ^?oQc{+4$_NWxSqSwe54$E`M zZ>ujQGjC;|@L+GSCs(?7bMYoDcXev3ug`upd^w(tO~xJb7vcllhI$~mak3zfCTB`_ zj`_cQw7op|kVjK92IH`0um;~xPWgKHSv`aNgMK&S#933fE4TM$#;VDG@OA2))gjB% zycPb4ZklH~$8D4IhEKN7u)gZo@w@h|ST8c*`FvJwn_RK_R`^oB=l=Aww&y_Z{>ap# zd4GP54G8Vh@A1g*E|L2Ee`UWrJ)#S%Wd8$swTG0QS4$zEZVlmS`A)GneZpgX*!-}$ zO>(}tz15nlHO29+BiHep3^_%0J=V&**QsN4ZMF{&YhK?;y$!ZPu=4sB;ucdyu z`*K%IHL4g@zSm#)xVp$nVA zukWU&VQlh}{{F!qAME!Ekxwt{vXm^bj$tUptcxE+)WQIJc-+@)- zu&+u@8-FH7mp|UT*u21l9Z(-o@0T7#6H=oKW3uCqq()`-@B!B7p5mUu9>BTlx$6zf z4NJCLzlvj1dyOkNwm!DLEcy3q!Uf{`KTHoKvCSc=edM!ouxg9t0@x8bp{xQ$&SF#0igzIiEW z75Je=dyDqYP45Yu7dpn#q>qOXIzxJF4#jY)mQabwRsaWs9T4d z%*}r3SAj3Vzsj+xlaMd<%)NZE8R8M^Be#ZwAj^wnyqKO0Yz#X=SJk8QD^F&K)%Q;Q zmVHE*C4cf}27XsA;HivD>r3m+vVT?Xgg(o4kIndH{mYvDJT|q)kJOLUa#O?2;pT_g zKdq;PxXnA0UC+&CKb9H*??~R|GSoccUrq?;3Qxfx6Y2>y?qs22p@Kj9WA~5!T6}ru zBh#Njz7f9!bMp`4emIp+S)jE*i|yN_+N9dIwQuXb~R&aFhBZy>R_!0Igu~< zE_Djx)Ek>OHs$31Q~jsnH*p2zN4~jGV-noZ zlYP)PcW&-XmAdsy!?V1R8Wr=vpNJD z2JFG-klh6{M%E+iS+nnbiq;e@KHQdjF_$BdJ1c`3*)2R2tg~=((&Cn9Gx!p|O-zap;Mdjgh*9_h z{$)%CTeNX{b*)#dR~(bQ9pBgA*S|_$X64q(Eq3j=>bUB<^1AYg#uE)3#bfD1gNL4} znyLCYc{mvClg=ld15&G~{$*S>u2RD)Mw`B#zHa^4`f>H<>V1Bme5yNGsamNL8-HJZ zUyiIsR_frlE4M3`OHJFqa)!izGdzb}UANV3vF9@m&p2#7cO2YtP%h?;>WzvITD4fU zIJ!K#lu!6?`@ikK6n`o3`~U0wud_q7L-j-RhvuBEIa@`y=pNHKrgK#GX}r*Sp=A%z zC7nw;+oz7>?$+HccFcq5V%wv_HE&&PU3^%5Sjpv09$sf`F}9d8_{ml6tJ=8FUk&_f04{hkysg~*x~+9v zY@~Si*3_`^e{vL;7nc`9^-!{|Th})iHy8X7ybn)^J7DISvgd1t>=hG(@-1wl8s}f8 z*T$9UVc71pJMh9?t-D%q<#L_nI%Ak`4ib-%cKBEp~#tit9evxUu zbhqrm{d@iQ`iSNc&5^~({$7|T>nH0oi!%$gQgVX_ln0dRBCMS{oK~~doGN?a@CWa7 z-s!NVlMhTjV4oG6f?FGrsO?Y9KQ(vEej5DJVa>yu^A__K?QXmKS@l^3C!EnbqqS3e zr?#B+l_RbkAvctgm+_-Vjvl!|xck*7u0HX<#ea)u%V*2AQbP?t$f3bdY#J^|+&H=% zU1Dp*hZoejj15~Gwnk^1-8s8+LI#X}*U()<$25;=1{QtK_gp&prIWv! zeKVK0FK;hiEneN2x`(sVPYh;UroBx2z4E;hPFtZ`p*pN}SPQ@Y`ta++_At#cILF|N z^^5T+6Ked3znw4nIQ1lpXRjK2592J=T&lT41`hTgoqu$!(WgV74jr7HIEPI(%SkzlZ-ld~$tq{cibgdB(^yMlN43 zU#~NMo$=?T{l1})`Ybt$hXO@x-Sm(!;Bk-Zx|k(Jfu9ACdoTUX?48*=Fu+W$ znOZoa1JgrNy(FJbk6)PZ!h|idXKBx&J%?UuztkQxJZ5-gzK%`}-UI2scT(%57QAy| z_Ac>DD;FyleAPXvi|3=&$*>n{5{kNql)}OfkMA-SP z!LtV0oin;;1Qq?U-#Z4^>u<)i$F#*r>c{wCzUzqWSNgL4vL^(cBKBdMN{Jr>l!MEd`_^o$R z3-xCA&92&4c=NjAx?;Q3$-x94q#p*I606KNINx9|0lqoGHJn(USmG+x3gHE<=ds1H z#c~;NBs@npj?ez68M5c=qVl4?Tz%2`q671<-CDZ^8@$qfrEOo(hpi7=Yo#7>`+EBt zuZS z4Ek7gr}%Kpz?JG*w?D&8voma$m1 zShY)cm+pb(f#s(e{O;)X=r)d00(7O+n7=#x?l3Oh{Qo;cy!~D0yN>$LZ(HBC#2nXD z*Hmox8yWi~&wpL=Zm{Jo$?dBH5$CfF|4gmEXIv^d`Mt6?ieKgfxJa>)I948k zj;cext$SPd`}Ej+sd%aQd-@8$lL14XmHNupTCcS>>Tc9!`#s|?%U_l_HSy5-o%1`( z7RwguQa?!T>)PeoC0*I7+Nu(d{Ji*i!N=nxcI@of`BiFDo*R0uukYuz&uinCMr2>w zCmCw0C*zE966G9w-sn;N`*yZd(4zv1P+Zhqaose4l-_V_;jVw3HU#Y^(dxTa0A zFK_wmZTM|^xILb|9dIJvd}3-cuF0T}S7*GR{Ul;|9Hn}SZ&H_YLVCBESGh~|9cxx= zR%(r>E~oDI(UgP3Bc4;7Q}83-+b5Me*cGxr?T;CIgnt%8;ZgLyQy=q8`AjJv0w2Jb z%Qu&AvYR;I2eRi8M%pO#RccSZ?S9+cwcNE7yYr9YEZp}3scDca{b&8pc&RUH^Rs(; zsx8o7ppApvyR~|&EKh}S&k5(ldG7~9@{HN__y$dBQoH6 zYrSoT_=?|UhslT>=!w}ch=Wt(cYkUZ={5f+2QA((ANDYc@jq*R);v4?K*WAx=dF1{k^FvG3wa^M7LM`r&MRku}42@}KG) z$*h?(i!o8E8wd+Hy`o<=c= ze3Kk)zy3Y@Wjv#`ox~C0Hnzz=3b;o6h9jM+H&b8d7fW98g47w^S>0K&?|g(fdrUQ^ zT0H$K$Q?VwHu1%BE&RNCE&Su9#ihmF)!o(0;WznU^+I#z%sqD39Lc+?8$Pu@wU$#8 zD~hYxWO9MK_&WI?_CYL#?>;2^L&Yf5XH1dY<~gYm#%m{JO@uv5V<>wPaBlM2N2ESi zUQUhyp4>FOj!U*WBD{gy`k&L zyQ@p*Csxc}0rhv}cZbwM$epj9+HbhDXcYbWM7)*!?UxyEr{_729RIgZYDwwOCiN!u zJvldU&GhhoH@%F-9uIUM=-!c<$ZIm_9j@fK^iqUb*GSLz<-&i-(W=>TBw0vL_GUqz32F)QZXh*jps;bVu^; zczqa|+|C|en*4p!_$F-oWBvTnZS`&St>J?BkFV4771rS=*DlsBt_!ECE>YYeXLC$> zOo_LhE&HP{Pv7a+8?QIiB0ZixH;-qJ`Jp*Si_K(@#Ub(sI4_uemejzJv(>Uc5O3Vq z<;0EjknNVwTPXX**@-t&+o!Hw%y?Dyzs;GUu8q%RZ ze)w=W?rX)=oyl1oTOM2Daryi+a^{*mshr?@$tkU!f%AnC{!;y=dN)11S1ML2@aQ;G z`3O7$dwxgu+Toj9jaGyHtMQNvH$~e4(noWV>>0!<;4~J?`JeQX{aLSCui``1`WAIjkIlYi@BCi(z3!voN7)d5 z;=A&@lCOLy_0_ZXX6^S`yezd-d;|Q3QxpI5F={ZMNxvie^`!o;JVQRqx*GZ`&au{Fe#f1_sYlZo&6S%Wbej)+0%Jrabt0G#y?W~_Hy>q zZl50ixJ3HzI&ykyn&|vS0~-yTkUHZ9vbW@#@|sfY%r38+x?Nas!;GU^N3~8$-@}`$ zo2!pfCnnGIT6#&S?Q1vN%}cVE=)>?^e@~ypsasQr8Q#71`S9n%@8v92HgvX(pQhfQ zUAjFrt@AbJYy2#G;pC6xOqWjW8$Jv+`69K1&!iUoxYXXiH}1W0$A){~XmF!JF&v(a zecz+rqc(r?IAVVOnarQsIkj_JYARn$ZTiKj>4uxcTKZk7i^WgRUd&$bAMaN0R_etc zE*>t#f%2I2-d@{zk`K1dc<7fh7H=)ynlfXVYME-C49{*3)isEh_v-G|9g|uUb#Uww zPF+qP4%;?${nvD^>998owH9i9T7O#0q0<|<>&W!J_$>X8;Fog;&K-C=`M}=}|8^MP zW<7Sx{%Cs+8a`?Ghvb$A z%fXT_BC~&}|4_5R%jHZ!^-HI9PwQSjbotO3sc)HK;tUgUa<7)JmN-oF{GasC7juzS z-0Eh{&6;b~Yt?=hm&=3QU)*27wpXWLz98nU)?2MR(_@wole44u_WHh^-eoYzoW-1l zT+UCcpH`lK90V{4`@s>W`1lKB33kkGH+sKL-CXc=N=YC%#a

mTiW)!YQ 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

K7Mw@Ae`X2aPB_PJkZShE&vZk;tIK-nWfgS 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

Nu6SxF3x;dI}Q#F4wZ%X;!n^@;t0?Y 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 diff --git a/Framework/res/pic/1.jpg b/Framework/res/pic/1.jpg deleted file mode 100644 index 9616fd327ebe91951de0bb3e4aedce603e977462..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67160 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 L{{U_P|Je-+J0*Vo diff --git a/Framework/res/pic/default.png b/Framework/res/pic/default.png deleted file mode 100644 index d4f15eec462fc5024c18952430ef765db477f87c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1SBVv2j2ryoCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#A-fclJoD-KO=>_P+02lL66gHf+|;}hAeVu`xhOTUBsE2$JhLQ2!QIn0AVn{g n9VpJ@>Eal|aXtCR|Nr(3tpAw)-8mEa9Hhb1)z4*}Q$iB}+L9%y diff --git a/Framework/res/pic/map.log b/Framework/res/pic/map.log deleted file mode 100644 index 6568aed..0000000 --- a/Framework/res/pic/map.log +++ /dev/null @@ -1,7 +0,0 @@ ---2017-07-28 09:33:06-- http://api.map.baidu.com/staticimage/v2?ak=vVItcY8yFfj706NEgOpYSNNdGUGNAvzO¢er=110.000000,23.390000&width=800&height=600&zoom=11&dpiType=ph -正在解析主机 api.map.baidu.com (api.map.baidu.com)... 183.232.231.25 -正在连接 api.map.baidu.com (api.map.baidu.com)|183.232.231.25|:80... 已连接。 -已发出 HTTP 请求,正在等待回应... 200 OK - - 文件已下载完成;不会进行任何操作。 - diff --git a/Framework/res/pic/map.png b/Framework/res/pic/map.png deleted file mode 100644 index e539eb27d148ad5b512ba230a64135566615debe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76533 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 Tw!pVG00000NkvXXu0mjfVX$z> diff --git a/Framework/res/ttf/segoeui.ttf b/Framework/res/ttf/segoeui.ttf deleted file mode 100644 index 698c56ff57255ce64286a0ed10a316cd20d59075..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 925736 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[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%0Dh1uvf4i|bl?qN9oNvv2Th!s_R02dIF^|Qm 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

rr?de6zUXlM4@sw;y@&RdV5> z_Tx%6fXJ>Ct1G1gT})g;E)o+m&1RuPZP~J*mSW3tEmF?fayMF22u!(= z@*j!d(t#v}B$q84&6H_+LL%R?@I4a$28s!8o`%pZaoNrQrPT*&6$J3Yk}pE=92KJL zGn_IC_)d!bhWut+iUNYA{N%AAbq9Okj4a};xUA;xrkvB-f!dK{G&vE?L`Zo|@Ep@5 zwhm=^@p;TAQ;P;e+&^NCDH?qq5pF)SH56hO;6FM z(C&{AFss=ZNy70HrIVftQmHiZ31gX-{E*%{ga|T3Rfdwr^{n{HQN#UOR5+1BcDN{>d+fG7ZJpr@A0A5$pnj2B+EHRQ zUxR%MFvmg@dR!9kpO=gLrc`T@r$`5JQR7a$UvEnLYM}MHAJjwALb(t{Sauq!D-~vo2IaEkvf@nwja(^c#~?Q^Sr# zIGsdV*O=%qCWLi5r8;afGMTh&aXF%fR8PcVQnFUNE-s^l4$4x}QtFyElt*)-US5`d zDdfiC<@j80l!c+yxG{hV&F3d{TkA6?wJ9a&M5fY|WUQ_ktpIkGYmf6xe@07jvfZ2I zi-9G**)gQ1d96^)z9(aSl@Gb`AWnJyEVN-nSwUe@eG#H)PrAN6oh(f!`tp^#^9LTK89b6#u=;Kna*F=g+Nqu!~ zBs)FB4*sR0EP^C4r6^E?M6>2^NT^?OATe`F;SvS@)aMRZPt?_-MC2y;A0^^3+Y!wa zNjbUr`uf3KdK_|%tKTd4!y(aZIy&wT1OsK|DqnnVJtURz3C7((*VKj zPkmHMu=lNq#s)?USr<%*%eNZ>;ww_dZXj9^*+}jjx-C+;aOtl6`L_Ps2cm@e1`LqH z1l{QTG(WRG)Pz21U2an4CfROsESX@?tUo!J%pP!^aIuY6GR8t03}hyHezY-g+?>we zCV1W6A}{ClW;)yKJ|~yjX|iygIy$J24s)hni`IR#^q0^wu$U!^+9TSY0H-&-D74Rv zHZ?=1wAk4%OhNT?{J!q)(alNAjy$$>-G1bj?mdr^C+CT7^lIV;Jqk}C69Gn-{5y(ZGDC)4$$N;_8DtmUee^pGeA7h)v4 zojmV~O|3OLJISLwInDnTaU72^?Fl?Lc3@d&wvH(y+(yDw>bBwDj!FBnC{&AixfL< zU_P+cBD9%ICcReKsaCUEGsaZ%w9^BPW+*(Ag{{Bjs&o@{`RPB4wE6*zs+3pX=H13x zS;t@g(ktF6-qp*^VCVKfE8b1lei3$NJXk6uzYZZ!-SjTK|oO99ZD>IRV zo#e2UpfJ#0mxn9rWVcQQUq)MM&CxPozr(rGy==@eSgdy2M~$0`rp4W47bF&zx* zi+0G3n~EhUq?2Ox_`az;QQTE#q5`+Z)-|FZ_XJ} z^a@$<33+zWqv7$j>rS@Z`pe@}=G^~>gW|BS$`|Y%lRKtN@~S_&R>AMXURjv@ki%?N zwy9Kln_y|vn>z);h^n-)GX_Ny>4^hlQ^8<1XVRgBEYP6%bAUcDbyYTJ((in2tIP{lwMNI?zDz)0VxPm;?{e3^QdSx|P zUQU)s?JjZpc^g`+_{c#Y+2JFHyggoaCyoqYC>pytjciFJqhQGeazahoRmWAVUlmlb zb`|O3h;;F;Bxf63sIIQGEkoO;a}{*vIh~b?PBUNG2^fysz}`!8ARXGrzy>M^Xp}Yd zyuKs_^20#0T?#aArSxh!TfV`Q25kB6H?OR#o**jJ(~x|E*&a ziBkM$aPiSOQ#%#~Yu22Y`}pH!vxa$`#bb&~r&OeH8&-aQRj?e^pAKw?FBsEw;`b*i zy8gWM`|E0|SKc{e-rehK#T|dn8MCA+Fl%@wm)*3SvXOKy_sG{Jr<|)SQ=PYE8~@hz`~+Nr)0yrmXuNJD*pX5jQ0MNFeqtQ+)J&i_^5a{tn0jU zk8(%FZKC)gNhkc*B!}AC{y&f~-dp*bsC@Eo5N<(!7EBptPUlfZhz8(x!V0$&EEa z#@+@@(T1@Q;M|$*bLJkNU)F{r;D3ts^y`u6$^7-SF*?uI>L4y42vQ$xE7k z-y9+gdRt+Xd|HkW2c~X^^eyRZRT^nep)=hZ9Mc`F0#oSx4vc{%73@Kl?MQ~$p0$5s=WLg*ee^^@ zaU(uo4z2ZPHR^0=c(QwyVyEIZ1*gW{va967>Dj4VszN2W+^!-Q=W=nG+BTJYw~<3D zLoU^sl-8(8C7-AMcPfkT>Qvh7whSBhG=jIM0gKLSFKge_a$2q0Wa$(PyqfcN!V1IC zQH(8IMN7k$k`1>|E@MM3bsKL<#vVG~SD)Q@ zv5z5pl8bycQa}o*E_<%6;3uJAQ_tKRns-)xQO!QclS@2NtJE4*n^J+ZT?!>;kaK*S zHo>ap71{)~hF7Q+e49pX)zDH6?Lr0liQ*TEj}@Fk3#Lxr211TQ2hBzlgDNyy9#hFV z20cL$EPYi-J0lV#{^8)IgNGYXulSP#e6B$7NY6K@DfOn^(8rL#-9a2h$8M5l1?5TpsL#_dLShK7`DMr+u+bIGpU!x+n$lhf%ZOZ=PsVLw;o zFH3K`r-s~KL)vP{sv1(GEfe%^6cOr2m$fmDHm4Jo1;4MxUpd_AG#6=E)4*3u!v_IChgSI84Z9DK8l=%?AQ!X1mbd4IYhl3+7S(Q9x zHB-ssfN{AbyyXR8DGlsAMe+P23+r}m+ZY_)Si1aFYZM2)6Yls;&y<#_)=)#eW23Wv z)ClJ$@mlADPn?}IXU&Dl-U%~XiYg|RI=`t~J|^3lQ;|0D^+Ss<-7%wX{oO6MzI9^S z;zzzZbWZGBVl1z%v3$>7H@wO`v-Qqh*~7^2fZ3aj&WzbqwqhvU$jk^;U^u)_SE^&X zv}lV`rDc0LGLs_>9El-trK0V!24L4@XfqlNtfEtGPKe^~L0Hp5C$Y)AmN9J% zcZ-chE zlLkA5VZ*6mDlU@3Hh5&%AaBqO3xv=iUBxpd2(@H?6jk4T@3q;llhIrLL1w)1@mmiP z6`9$W!xe~U``=*^U4E)MX?(qFYMx|hTFLFi_y^}N#UD$)8F=GO$ig(NtcPwxM=|F`{r?mHmFaDI zeJ*T^b9h->Fz8e&p?4X6CG<_*sVq~LnX5aC29!;G%TnpT{t%HY}58r zlPC9VAJcQRF}$c^`W??KnS1`wboOk~%w0{xcg(LO2S&Ay_TJ{HUtB+I?yyu>*`(50 z;aPe4GxtnAaxsfnls4~dT>kyFm6_Ap7nDvaPxg%lmL%8yj=fEm_I6sRB3oCf8>8#i z@h7yzuMKJ&w44;szQd7O7+4NQp^bJuH<;9INMKWaQgP5HdH%cqB zRDdemjIJ~n>q4MxN~a;CbOY3L$YG+?*HStYB=vPg@q*l9RJbx&5EHc*#80QDL?Kil z+V6)32jI^Le@VRa;9GZ%FJF0b$$*t?|INv1Bib%*6mQGq{>WRG*;aKw*ShfjE%nq8 z?*3)ZjETqJIk@`gkA%}#-z9#96@iae_#x?uOkF6e+T3Jj+qK8FY(zuaHN>wW-3pSU zAc=s)E&yUxr?s@3sVAm}RB5i;l5TWz@OW-@ce>e9 z_a?Lr^19mAfUNQgO1H8|$tjg4KjZZZZAMcX&^$sLAswdLE;+gDcLsIL&^Fnn-E?a# zidsz6i{9#>zF~-_LPbuIwcoiZICRzLB4?M`mUdohU3hv!ZERDTI)8a^^{eOFuqmi1 z!#aEqyV8MmNJj3XVn-rbkw}sf$#JRULZ*rM1(Ks9QZugX1Y+lirOn1D+te7CR2)tz_#`N6rp zH7k!!BeS_5C5+y5deNpmogZ~ioN~|SC;Fb}TITm`XwdeJfR~D~E?G{ zWU-U72v57fRJPeC3Zz;<{R$Bbc14>~nbDSQ$A`NH(r74bb5{y^onAgm=+r3VJMbAJBZnMd-+FDW0kc%=XG0C@r; zC&iUoUEy$-=4D!v8kZfKdzqNUC&b^2^?zmW{T0!@xGgYe!Z4e&a`cSABT-#_8B$?l zR)$8stNm|45-k~}MZFpwoibKUPEcqbH4%ir2l^)rubX!S|l|%&6E>OumU_4=Dt5r=ZHnGj&fK|~tb(}fM5JcJW zK~Wu;%19%~fnZYMpM2uogV*!lpf{RsLVC+~MX>|dV`658%I*##lhV9-Rmmm*8AMmQvxIA)cAFl^7(htwT*c; zJu@*B7^Nct9cj{%VOk9IJ4jEYA-Kn2x^a=R3C3<@M} zIz~^*pb{QVTqUmTW$V})_T`7;wE>p#D0cX_*x^Ft`%Z_J&(0@}=%wzXz3^6~lGzwp zEl(SEk{M32%(}(OF41k$g>~Grge?i|N)_3uyiLijM!+uchPI+2d)p+`t>^L$o;J6; zs*Nu!()%n&l$hEzJB$D94@=$t|fE!&&bJ|d7xSRYBH}Vp1E_vntNB4 zmae>a&4|@aS?&=l8V}!2B2{y0J>I%G<)MYc(^1bde12?)ABR>aL90tKU2VI%L(O)n zNDoJbapO5Q7bQ3px#*IO;BAvSNd`g(YbScG5k-Q5lhRdD|4;(Q5M%V@;6Yjx;-NPj zg)}iX&k;~OF7ABl;>?5dz~*_z%vx2y?b-17gx`@*M!)^}P&RL5`0_3UC%`p|Z*Zkn zOcTgp4uqPs(@8dF)+CY)8(CrAW@c9ywi(#vs;w$^Ilq->9lMP*eUjkbeN;&p@^|VqA+xY82>T!!G@aq=R*f7-DBLd-Q8~f52@sA>cvzRv}9Q-MSk3; zN#tx2IhI6%NexNUlQOWTbUUeUmN7+W*+}bJK54n8|AE#0fcy8%p|1K5W^5;c67w zN>b6XftCW&!>Lm9VmL$e){Fb&r^|*W^CrLpVO&;Q_|hfjCm4}0jhBvJhBr=N+RZT$$mzi*Nl-{DfFO_>u_XH%@XV-ft$S#P#BH;=SSu zMTz)~_z!$MM@or}Bop*cVA^q~4bY4<28YyfuhXis#%8hES!5R`Y%otey!rLD4Y#^l!d*@b_ot zJXW?aJYmhL#f5La-n;k5d+N?-Pu)GOY3IzMes}hWX}O{1ibV2x`wP2kMz+6v>-g_2 z9;ReJOsZ{a4(>QC)}=1ob8=?gl1U*~|3pn-<}UV{r^uUx?6Ht6)fF-PQRX#eGWgC( zA)C&b?r+pNHI_y-eWs?*6ql}j_C$)Oka@6@@}Y)3$7xrg(jLY3cCEtDBow!;dojA?9Ob(G840 zlt7#seIvttiwF!n`crs8INhVl!jCJjrh+uO~LAkXmsykp?l=G~mwN*vI`VIV{ zF^WYjMuk+3saS9qwciZ?0tqU$kb?A(X&ZNt>*6>r#Ox&@mfOoRg-KTl{v~~obQLxW zR^LK`7x&zu)QXo#qx|!=B{DLkq#bZUTxb%zfMs#yCFeH4AqLTD@QwF?fnqsT$K92hUd$z{=8huN0YnB{oX_+#VGjhyi^#-uqe zkt(L{{S8+)2yf+H-5^DXEmz;q-Eb98H(;^nwdBrgX_<$Q+!j!RG29IWfG?!eU2A!{ z-D@;mNy?EfvD(tC8oRG3v7{;JwW#N4k_yJQjxLy7<8|hTGIMIOEQ*PS)I`DHOcRoF zQ%&x&hOuMP+%xCRZOl(C8=L2?D{#3Ahk4|ceu{kqtD|IcLiPv91@aQ%jw7H);S_@c z2c-go;0iw|xr(Z#tI^i|v}_Ui>L4KtUS-SsONdGFi?dJNOGTjzkyN)YUV*C?X#&6-< zd5(nB)adCG7F^n}TJ84O^?H{g;!LqyjV2Amu#TPM(1>OhjlFg0eNa%xX zU85P1vLIzA>7;aghF?KPLbM-59C7qa>#o+j&V0W5@R>9GnqRb@O1b5C;v*K z%k6Aq|M$iJxX{Tq_A&Q8vw8kowas*s{Ble zL3=+{zN2JYIk4AGdzcWXF+mm93w*?a5+A`})Vnm11QZ@4Z-sm({2;>V5?VY-QDqcC z5a3_x>Y`;l0b4*)dG4Dtf8Kd7`%%9e*SqQc-p5H1agtF_-!4w-60;TWJoLi5S1A%$ zfNT6Kt`YD96aU7)>Ur10X1L4T?5nBorm{;?Nki)NRCZ+2v?O+gp4OSXrg=}pvWz8c zH@i_%!h4hV857bH*aWi?eGCnPA}yk}^DZVrE2e3Rl2)G&P{M&g{~OVBK+?MVrRo>D z%n0-0&l~}Ga+rrW@BP=`o#9vg=TAN-%&-4r9)IS{1AC7B;OxGm4|m}{*aNQ+%U9P( z@!2DNU1;Cm_Q-F3`q-;4Mc4jCY3*A=30d@jUAyVHi4%~23>6C2MulJ#`~ugmMBQ~3 zM^?b0FlM?1*a3|-Vz=q|h*8iQH8w(v8s+<-%a7IXFG0jfVMuNZim0N?k4$TH>G8xX zFMo9DUw<8ooJJSF{}Rv8l@~L*=rtlL$w95Eommj7mFCn7PF$KsNEEUK?p5Wxz?(u^ zdLv{WK_v)mO*lcNaw1V|R;!I@#BH=N^fK*KM(8TXLM3{U(uoTyBZw4X_(0AMm1-*B z9zLhv4Kayc=Na}RZiP5WeCFxfiL<|mUMK=)Yg9_U#A=$MyURnPUQK&9jm=0cOJ!e8 zem9wINS>a|j&x3QvgcIfHU2%G6%1jko-xyjTbQ@yN!phN%0q~lU3#O=5kU*+lnA=Z zMrDISJ(=~O(h(JF3`Dt3DriI>FBshFc(Hh2+#3^&^8+&R&!2R0X9k3Vt~k6MU2zSQ z5wd8M8YM!^Fi}Q$Bg>#gTvTG^Z3bgiT!eHBmI=Sv!+q2D2o|W{%|4>|QnYsU7sY9~ zm6;1E!$3JpyX82#5DiEfT95n9vXp(MAP_XF>{iH`U9Un5M;=pbbVew-i~ep|U1CD^ zGL;);xcXv*UoWSnf|bzki;rQIN)-G6G>LY zuh*N^kper4q|NBHm1Lx21aa{oUE=C*0PZM-ank}Ef|?o`oY%6zb_1au6bQx(zz!M| z%b7?F2KV{iS<5GmE*PF=<_adX*3P_bQ4m5Kdh1Yg_l6MZ>B*b1cUr@yX@zAA_D>{p z?^(HU+QQ7xWU`>Dr5>lG4vy}#E8cl>!Rm_TM`w23Gv(mo@{(CwM@hZr3(vpyM&-KuSM9vCy(YBt$xX!4`-XT( zymszhh2q{LjjI~cxh>-DtuG#*J>||_Wy6Q)hwzTBxCujU1zv#gE#MsPs`lPUEcHLD{3FB=9X5 zM+?`o?F^QG%X_4moj^iQcYgav)r9CILM@lFE~v;iOVyswLvZ z!HPszL4-Cxp?ZT+pj7_wzYi3{T!~i0c;LjNHM|4a0;wt{5G@KC$n2N`%7im~QpL#0 zB@6d9rRg(9lq1jP!F{F^R+A9b18F7O&oY!Ss@eJzye>Ok}iarimS8ond87R>5q> zSVOnlUF60IUv=i^U{(aZxzUL2zZ~)y%#8wolmU$c_PN1PTD@>-dd{FT84ZKe4qw9P zH#+7<9?fz!wQW{pX* zwu3fyGmO8Agp&x9r07IriNeAhBb}ah6vtyw7O&W6#C!lxTG$9_Tg~iZ*s)AAq`WZE z=H%^3Np@|->$kgYc7}Qd35Gzzq*}d}udc{qhK4JWkX=Qmz)HxK)PacJQ45L7wNizp zqNPBk3bL6J8ZQ7&MCO%z-8eUB^$(v>GJ4f$U*7mual+a=%1OtDF?(8qXZS@gPrH42 zRrZ|D<=n=Rd$(;Y8@+P0FVMWLA#29=<_2=luWA;*w>i7{mLqdS<$ceTEQu^`e(0ee zw#YV!e@nu{v*6JMLdRMj7dRvJ=y?=38f`{Ds+1JR6>JtuR8QOI~R#K=t>#9{AW4;T9;qP|z&yAElBMKQBIG;U1(?0j~Mk7g;j z-R6O8j)REJL%Ad>522m)ieCcUv&S_ky6^59B9n1TQN3Ee07`4!aEl|c3_hBc74s_ zwh>}#|7+jB^x;Rh|K|$PH+9>@jG`%PYxk4Zglcn5{^*S6vv0acHIJW?Dl&NL z=`2ib$loK7+oa^`7LF`O78!M*`UG6Q1nsppjnNzd_?N{AeHOmDQi36o(f#1A!}WAG zFx#G*G}*ensQ5Bw(r9Q(p5!h;$`SQ(FGI=;nGK;a%ksD6v)gk?WBROg7OZ^-hw^uF zkR^8+$r9rxV;F>mB`HZ8KIJF3`N?XW_;P1w7hBM4Fw8J+47_wPOkPAm2fLIYk0~8+ zl&aIDK{b*eiE|#7SW3!jfVV(05m10utCrR(qws#g$SwEGnRCyUk;4}64ewn%EGaOi zh=~1vnY?FKVf3xT`}ZGaJLVo+UQx09*xb2C*3N7iHGWRDZ&*Rnv7(t<8z*dS8Q(Z| z?k!Di?d>T2k&r+4jTFI9TW-3+mTQd?7P^@&|ND2?a_hfs%dOvG%c;86-PD#3iQ=)9 zG=i4_ek_EPcai-PLjkjqi5~t`HaVM34*E$?8tF(Q-AL)DlBHTQT0@qr$#Oz6v$C?$ z96sA*;=&lunrjH#y__jKE0U3kS@UMeV8H-D*JTyK^Fml@R38rNJ~hyk&{KlX!*Ne~ zlo^``QV%A%mMf=qhM5>qu40#%ETz@OqpB*>6U-CH55=h)S1a{4qifuZS(#QrC!Qjz z`L~lZiRIqxh1Erk!-r?10d2#v73+1rtZYmAwAr&VEg3?hnN>d*UMA_hm>uPg=7cK1 z9qreFAljm1+tFg0qa);5a6xw1V!@RVRx2VYce_ZVYZfYiZ2E{3{lH8_3qt4$dO>`J zhF~pkQ9}Sa=n9=;6Q4hpQU*gqvxk9oKaAbhDoy(5gpY&8h+8+l2eR84Rk68JyAkE>yST49`aITMawO$2431s z`+zD^j@A*Yuc2B>XZDi0=_NHK=_9tCU9zNi+lcYIzkl}owSuiMz&_SLv9h_&ljW@$ z<=3tqadg}GobjuMAHO5DptK+rXHBvjLZQa#!CALX&#qj0`?P5%?>Mk$N3}8E;4M4m z4b7>@pX?4!Yib-(wSH@OLiK`?{uL{|!)u2PZ^+CUDeEqO0PE*KbXH8=F$(|&7&egf2Wan2mT+ z34}^8T6{(V!Arf6pku~WpgD|<(_zXaW^EghQM?W~?g65@bnTzi-r#c|1%&i-C)=!5IfJ7YP_KmzG=pqU)t%Je35e-5qn4vogU8k`Dy#X0o#)kvn?Lxl&IG+Da}1Tj0255~%3gK-dF=7JT`k`?)^ z0^$K)5dZOC?%50GHx>2>M*iTH`$9h|a$Y~9SDqh#svrR%Ru>Ue7Trk|gjbN0wBBR6$T8+&j?ZN>aO zqfgYVnk+GUi2ab`7+^7&FsA_J%3W+saw(u9S#TZ}&!cmB7O3 zQZc~a4_YL8?CO>N5_FuA`ld+Ei3Wc*SO7_2%{GB%@Nr5LNAX~zh@8Whk>S}h{PxdZ z{_vmg{&Y3ZY5V?u<}4Zez@Es1_Z+z6k#qdHCx0e>^{IGGeEkRFOUUbU>+jg}*dJbh z_=TU!v6D0*ljidGhtd*53G8@;X?9Fs6g1SXYN#0nA&iH8IGyx0HNy0BC;{)gk+DCD zoc*P1A4E);2yH!aY71!DSn4f$kL9>K)uEg0%ePhR1`ASM?QtDPutXwXK< z-f?Idq$X8rlC36{+!(Hv<5KsbLH0hTP~i_Jn)g|P`b3LGnV6{1mqq+RALCR;3iXx* znOwOpk1r?kZ=T7==F&=~OdP@k2ZKaDRdzX}kJ2=n(wFkX(R{v=Uq`d{<95z06rbqb z@KWd0$0`A!q4rVv~NL` zn*A_!^o->-qt;Ex?*Afn;jWW2+n&O_Oa7gr>VkAVnK6-iHPk)Ki$;=}H{q2mMhguj z2e>6fVv+%%+6lu3tXw!qF?l@KyHt}$F|YrlL9a%3QNKD!GWB&qGBG)mOo~pL z^Gd;dUT4v8wnx*9g*eZ3>Drf3B=9ArhKy0c+VF8@WmK3fa_NAS>F45}|F&TG@Pfkn z*nrG>u7b|T3}KLS-{W{TVg#OH6>>l>Br>lcD-sN)snqI(jodztoz5-g*ijtGoTd~Go za28D`-2`38wphq=3)!Cle1!5k1n)pgkdCm?9QLHR62p$YMl#Vuj2?%>W90nU0WU&% zr^c9UjigEOd=kA9>dW7v*p9}WUx8#Q#6UWfkX-@lrH_N&<_5HLW7zD8$3N_@!3bJ> zJsu44RX2pw(R)0Jd(1+fW!8Q-S?1p2W@oy|Nf$wMzn=yuTTtO>#{iB@WbXh{v$Akk zZr@%XTW2PMYQ2i}nN=#YkIP97C##uAYNpW|@k{AFbXQ42ijPJw(HjPW>3<{cmT70> zLIJl8I1_*0H_Q3~dR-@`NN%Z5#^(XW*9VzVcK3}*LGI;${$S{uAW2A9LClWs^sS*O zcczp54zkR##lg;WkdtO|hyzBWiB_XNA?!*^0Z#XZS+{Gii`}Ck0!v)TD{EYw-xju{ z@)3`qjU+QRqcdVK*@@1krj|!SZ#2%KJVtEJy5K{g^>NdB2A&^K9|3Gd<)~GC3)b&D?&DMNn$Dh7%orHcII1^^=Jv za#=2)BRs~sxU4~S0XPg03rXW`0!7V z%DPbk@_yTTQVN0|kEXY7E(kw~CJWF93z=mtD(G@i>rrIXB)f1Nkrv#m0oNhfT)vM% z{^d@eDfdoHvSNIKkM;S~$>s#rooae)u7oxVX^~FmOLZQBfGplfz0eq*=H7~nEFL6F zanQ=e&4HyMib>VVnqq)*W!PXyIz0u$FHC=hA`Xl%Qx_;_+>u% zw-QE8ZVe$_Ll15W1izK;nYofWA2>mJj9L{03l?BE{J=71&eEc??VDF*jN+;-#YH)~ zv&KMOg9ra_HzJE)qCh5tDSeu8k@gE_t(NioE|K<&45u}7KK&)K=Yn1Eb>oJq0zeSx zz2SFN;`amwh*GfcK{;Oz1f>LA?k<_yy0&#{$&Tfj(`QceH(ppi=g_>Oz?7BiR!#}9 zcg<>CGh<|RRcJzBdW+eemvnboaqh(R4WZ@JN7YtV*JVi6fIG!W+$CIH4l^R;vUj*F zeopQ6s+kU>F;DF`_ox-FREtI7#5F#dDrkEYC~1_AuF!p^91AX!Rwv=2aj^<1>zx^t zv)srC1d%T&rHSt#!W2+XQhhsjY3%-|*S)^8^VzXGW)zAWwr(Jc#J@Hjtv~quoI6)k zh#xoYnq9&!z)`IU=Qn0Hff6V5Z2r;7?_p=ph~v3e5d?af z;L}Vp+5d#Yp=PkJj~mrytk+X%X_J=^T{lRNl##${`G>5QT=K56K+idO zo4HpT_y1_)D+}-Jp0ImX;g6n335A9w7PBY%|B>QuOupsG-NTbxAKFo0^T@n{DVrJ& zpJq9pV}E{3oWpW8>+Yqxw2pT3Lq)TjDP_u@Fy|&R&qAF%Od`}tr_JcWuvk^aSzFC7{=>Wz=%A7@dPV)P72|Sq#@bzanARYz$g(PLnb}NDWYELC?P*!DdfsT^yt!%q$|X}1`-{1w+`W|#z4bS=IQg$z z_Y%;Se}1Jq_ZT9q=4+pGeONUwEMXHfI^?hDP}d(aD{N*pKA5DAf`akB4n|=M^b8xO z&+blhj_%PbCEbN4d=(?qp%y@>h#BNg9W)P89(U9Oq`Djnff8ZMV`;SLf)1qBqOY5M zBNo@StR1%c*o>LSR@bbZQ@dz{Z{*I0moIy0SHt7kO{<32tsI}5J#J-vZR_~F01~Ce z#WO=0{?N>l;LN&oa

ek}1y8`xj4aUsPVPsC~lX`%9fumTat?cWPa2?YdK|N30%~ zoilEAeNF46g52?|*x7-Z!~Gek%v72JA-jj^P&)*nEVsi^ z)NM4I6&XFrLY%N;EhJkRRX8e2w82w)%sfzYkPuoX>D`AN}uH{*S)X^5geJ zEkAzGvkZgRQCo}Ga4>isvtCNwbJFXmJ;B$XmtIG;7q4+-AK$+K8t^qVK&iXzqOYTJ zim(4f`g(MK@cISGlg@zlQ#nQ`#kfNP(_u0t**dhA9;3?9qrll?SaK*jwcrDrgZ7cZ zQmW~0_)<4LUB~qe-}%HXs~_A{Q@7*7X7XaM_`+bQ^q@nn<==^OsQ(;A|MxZUslUUWp?~`rNhG*Qo7wvEr6Lph1;Xq zNhw1jiy&>X8r7#bPb$@_!{|nnS{$D}dO=0e+?kWT4G-^}b$o4I=EQB2m+l*%#=h2f zTh`pj>ItnO7oT3gXt+D6Ae4E2#OT1Hqb<`9?O0#cxNP?9s=G$dJ>1qdv0~Y>R$S>$ z?7`Ex(rmDUCH9Uai;q*Mr%V1dS6!KeQhS01l07LtbC1Q6qAJ5dVzr=lt2wnA&X(>G z&JeZG?nf{q^yzgTS2oWvl^XQ8LmlqZWA;C@{_6J5XPdTzXjv~i+^+o{&o$qq`7UJ_{Yh-x_s7F>TiJzX8;*ee_If;qt(tK zmC9k%@ak?2lJH8CL8+u$8^D6o15lt1sC0dov;F9!cxT(xzJ0Btr*Hgm@li7Q$jZNb z^N$UEnY2`f=I+j^9;O|9|qkHbukhFmxEyI}DK%!RZX|G#-&&in6rUf7Qr*FKXxk{0rG zFqCA(S@nb-B`zLRx>^k?9b_aPI!sYQ9-lwDh_{Q-;f_{hrQoY>Q;43cx9aH+>FE#Y z=@02Ua4P5{N}S^JuPK{PUsD2=j8uISBb*(}NgfYRlHUGb z|NSTOf_PPSbxyQ4X(qc!d%p(AZS)veD7+tcyNBp`rsx&F8NGvFJ%KC7`(Iy7AmceMK}$^p z?m;dP3>4BfHE1J1-2=3bHZN-dAB~2nK|gBOf7ACi87V$Vz9u7%^397+o%rXk@QWAV zO0PnW9L)bi+Is-DRbBt%@4g{fk~OVidC2mRB+DaK>+nO?LSeEh1kLgOHhsn4ag#tZ4fPqnIey4B zq)k1-O3^9`18}W?|K=u#<}ZS8FiEy|f|Buc(_6=AjAn(4=~3QayZ9X{_3O>a?Ga`Qz&t@9(GG zG@%Y67l#e^IJT{{Ff0y^AO4PS_+l~PTMNqSPqgsS(TvBcwB@0%4q6+0%4x3Q8^mJQ z=b5h#zF|dMA(-ENx7>dFliz==^8Rk%|y)9fDK9+SyaxX11%M0kuWjak8_enLbxAtIX) zk-dd-(Z!%XEWGn2j`xq!6ch~x%knhhr&|nki(w0P%e+BEg7-HGfp~wLxSdO<@l5`6 zhBfGnfyNFd2;M+0a7srNX@3Ie3-mYDhGrS>AJ~R;--Va|;P>*9kDmUW`s26%fnCvA zx2k{JaM!o5UVr;eWy>8Y^&$1cpMLT3FX088$&&0c_FVs{hc3S5^&{JEe+a}d9o+J7 zpbmrZblP$eV`8o#?^X<;$#C4kXnDb(>`S1&ftD!P$o8n}r%!(GZS^0lc|iE+=;z|W_2(_w_Q%iu zseb;QtJi;9{Hwh7qdQ)Ba_8sQ$Sc)P5B}oy``~PTfAQ)|=R7rk(ZA3C*?C*8Kl^Qv z0Cpj9tvtU<3ocaOtZ3{v@1+J{jK zIfR!S!b=X}r8s8`i56WfXIRr8_(lXxXd6O8KHZZ~_vF((`CF_yF8Mny^LKn>&ES#@ zIIcVaXH`)yrUzLOH&n11fkV!ZTuuWv&r(1dc@8dGkth+S`{S`9A6k3ekA5wRb3Quy zDU)7)<1_UY_4AvU;nMHidF`6--kp2bDAvr189VmxpZtPZ)yLFl)r-_VrTx&>+aA7a z_1@Qjv#x(7nrzHIvb_DzsP*YGT&VV*tYZU{+9W!2oUl6qPXt?X$munP5e94Atp$4Bmeet z+__bnAsNL~=FU=nCq~?j@9x8h!#Jfbn$BgOR~s9fs8{Y3U79tNMOef>OzzissPxX%nT+tDqhk%gRbNENmDV8N0ZxZTZBi`o*^|zxc@d zv`an9Q{GfoGO{5sySrx=;cg;uaJMuUqioKMauBa02R;)YCftcF{5#8GkqI1oz!1m6 zpE(xjlOQep%7u@MYRW(MXvsD}19vOIsYK^(z|T&l8Z*1X zhO*J&xeiC-0V#)L0csOk!9BzpJLa|K%hsx7M_KE_F=3R=8JS)+y`gUI*4cFn!#TBe zb$!LD%G|!u!M13jzq)l%Y|fSA3!=q2;jxQb+s~a)8C!bml5-AUJv3cGFWhB#A@!HMJKX&~IC4F?$o zoTOr@l*Muo{EJ{TMoE?rty0_0J;WZ_H}7`Qm}O*=h_h9soh(oNSdR5y#P%q@!U9Wn zVPUROJrDf;0GR%F@m!A(z}YXY>0(EjwaM!>2u(%#Wl4jhv^kpJjvVTILte8nUe;^? zAX>O*E_v6XZ*qUipo0Rb1U#Xb$0ex-3o>dO5;>Var0=$zy}b{$O3t3Jenxb~LMp}f z$*R?xR$X*;>yDc?-F^A>EIxYmz{%DrEV!<@^j;WBu zGY3ACo{~qS;zWMh>TNRG1!pQdk)IM9^##wXWQD+aGVbI|l!ANJlhRY0esaZ&H;kKl z$J^K3f8n}Y7vFV$b7I-I<~@8xb^F8{p1*A48@ErbzAN3f@~%a5Z#_5FMHB~2As;RV zPU8~_(l(*V;z}BvDP!D~(viYLBv@n=9|0bMf<(SWLIBFfPn~=JUv{b=vMScf+8%7Z zOaojIj8dYXLU=k*N5?$iQst_%u0#DoW$YQSu(Dh zQg#E28rls5R8WyADKTzNv7u>MHAo?F4}wSl2@(PLj}+vEqsTl${* z*jBY3U1_r<2Qf<}#HWHmW56yX1DLH~s<>D@VZt=J{!H7vNokd5nz=-h!pCy((7PLc zacke4eIH)`>~-6pS+Muwj?{U#FX%YGPF2~yadUgOzj)c@Kfir?YTuOhRd>vuw|hmi z*UK#1biB$bj@L*!CreH$CLzhBR92Q^K6#;09zCIuClkP+!iH5jb#MQ(`}T?Hd)ePr zE2eEcJEHf>h&m*}@i_Vu<1{0bA;xcyv8mX?5d%(~1D~8WMVn&?LC}6>A?eLFCC!$>83co6dyN`)+m){8pWO=vvRprQ>(pCLMc$Dlf&2=cgo|O0k@e%MYc^6hi4zxVZ zN8ANXW?#ylDAwtKA~4a#{E7bJCOZ~gLCT#7 zr_7BgjigBy5-Zvhp{N*@Qc@r@Y@DKkCt;zxq?~#Fd9ZiZH{xPkN&W|SdA}JS?*Siv zp^PF(UX$Q#$}0jLc(a-jOb9fC9?X0haXzStzW(RQ`h*y!3BNl&cih-z9Yv{SH%_^G-27V_ zdYcMu(dk{i7mf+C{81}=t1M1$_CubsJe#+?sidf(E)gmnGht>ty}Y|Td~b&*919di z>k}p6u@gvM`$26hfL)^yNZZ7uB!Oo@av9V`aNk1YW2^Q zzPAm1+=+D)MjsxM`9d81nq7h(!{{;3oEP^G z^_Zjcu$&l5QbB(s^^J5n{UJHhRqqw%$&ykKeB&|ohQ03@abS>aa5x>tclN3`9C*v& zwVCkfyu#n%sq<#7@)fLFB<}k9RdJsuIbuXXQD-{k?mrvfomW4xxx(gKHA}n)V+>#> zJ_1C3Kx7fDamye?x+DOz1snim2tMhfAF2N~*s>(qW>J5{)~omYQJhzRc_$YR z!}=NaRB6AuX|H}^h~y&Z=~TXuUYy8z5+|=^sH6-=bc4$5Y}M@pwj2JKoABcC&Kz z?Tp68%Gp0ONuvA#Tp=LT3X{`Oe_^r+70-q8CW}wV4W>K=DfsH5{&xR>U-J8zCtjLz zBx+KI#=;^ELKJ4g3ur-2N)908E{9oD93gCmbKcTHKts;(Fea@0q5nZc^Q0N28-I37 zZ{O~>uM5rWj!I$+oUFI0=dfS)Z%Ln9HT%{Ttu5#6I%^hqdhd=G*IoUKZ%r~744MXN zklYqa`^r7DX5W6n2wI7-i6zo3tU_bjpOu|tNRU%d07=A219$<;**cCnxSaDvpQj1V z=)A^w59O#Hk=WxUr8BF2v`cSIC>osBrtX9>9X?CO! zx{G}O#G78b`ohOYZ|b=&k(#*kjq4Wf>$tpkU3V1Y<{3MdB@6S# z#+o%^&2ep z(qS^4PK<&K6Plb}QUwjoUQe^di&vH|*g4XOCNUgTB+bZ+Qslm256B z_n*qK=Z4Go8r?p!!E=b1WG-^-n(W@Zq&dsr&q{esCW9wsiRWdECCn912Y8-#8Iw%a zQHnKy0${_8Cjx4i0kvtiQw%exXql{2oHm6|iMbk@wJYxZ@lxM5t+hFSH?FP(mQZ>WCW z=IPa)@k;Y;uDqPej=E@XOGsH|D2R@%9NoFw|6H7QS9g=|4j0bF{I-M+hv_Yr| zdc$woZGr(~A-y%i$NLwI*C2FWMx(`!0%p}mdtwWtuwD3+LwRZ&8m-pLTPsf6i$dej zTI`rY;}8cs!8itv1A?nKEPvNvc|hw0u`3;x>mf|Chqc(QLo(Q6;E!lgXdpFaqDrKcQG~Dvw(EN+H>BP=y zdYWi2V`XP(vz;wJLmPrw>*p<~PN(gM!=tr%8wVZlA`bIL?KOZQcoih5F>b2y>(lCTH z<2wbcFw7pG0ggEhyT4%v^m~V}OPEXX)r|-Mu<(|k>TOWfi!cYNO_+Ncx=s!(@o{OJ zFB>i?lujg{l+Q<1yu2tW>&-Ew;9NKP@KS8%VGdzvnDFXA?P;ju@_d-@gls7Y(>OK) z;Rl)RM%s449ax(-kqc|nCOEUmk0n)Y*?@mr9)9>?@UuD_S6?`W_>!-VHo0YC2i8io$#!Q4{=<7i9QU%TLs#kIp93nnmnLhi)>|j;{W1_G?U2G z!JR}WwR|o8gWtKmPrDOo8pG~{K8ichLNKs9&l|jN@G6}-lOsQn>2K&d*3{Pi>DqO9 z9e<9-qqnoWbZS7#=g^bL7lkLG4Z#RH(VvBTiI%l{-v{s0pw#b$o^wDwOWsVF5gO9D z;baJzkXfNTUotnC;|uxYcEJZ%BX%7ieS$&>q|Czp;?~H?8#Od z_CFmghuiD!XNTNgcjsiBlN}fIiCL0}qeZg7h8XT@HbE zCqbay`F`)oclvQBd@E?7670~FJp4{SsD0=<}Fp~KOsJVBs9u5fJ+Al z7W{1=_O{zK*N*!57PX4~Y6}~;jbP(aobw$``o2BLEl-m4oOZM}zs4MDBRIJY$yKe* zJFN2bZ4AwWZQf-g(S~bP!z8_?R}h71J^hYNK3yxwXn3ZyR$Ttz%oB`ZFoOgiyduxFM5-qUNZU*bnsOt_rkq0v?i?J&3w%j>kuR3Ngp|HL!4f3^BdNt zw;AHtT0fwEz0Lc=jd~k1Gwc0;=wShU2<$`C5+YbPuqOC3-OxHJk(vK~l-md96}d6 z^`VW>oi?E~?XZakMO5tA)+WIfszm|mEj$aBL7oSC(_AS~OSGMDXL9qihuAJQ z^&0~o?6=#tjr)d}hXys*I1Hq5=(9rlfPw1+L;hc@P?EOGk`=?T!#fbs%3INt& zh^+@&wV)K?l|8eU9XY0c84TdO+hB=`NEuwQ&rX?N09SDTNd0LP_rlY@$~>J*dIOjA zlF$uAPQc7c;2;*EF6|d3gHg7a@yfQsS8fo^DN~Fg+{GNF9raB%!~5^Zx2Ej>YKD0^eO;mMj@f7TJVEVj$Ek%2_ET zj)8DWrMmF6AA~zak(|Zz7>QsR2m)z8#nR&Aud=Jv?~3oLRu)kYh?7RK-?L{X-k@Hu zo<(EPWfh(cX@<|bw;6N_?gdOv8u(xNF}V$S0+ooJj7gUkxmYr3N0ouxWT+u&DoQrX zf*h!Bw!7>yUZNv`GNzi}mWwg|3$)6ql^@`P;51dG$wZ_`yXN~?$sH(hPZh5+EI9{b zb>geLbC*4ES!d_E2hR5H_MP*<+Ky3|-M`fD8?&;fqOy18m`B{BSM^p^^sF4a?bcgI zth#gl+}qA=Ub(X6yxV5azjM_H@yGo?jEr9~X5=~D<^4Yt+aulQc8pmuE`sp}Fi3dw zF<#0bVZs%d%O3&v`GkAe5H{p(c#??hp)Lo`t#H`#4eq#&TwK^)t~=oLv2l@2xf(on zV&L(tOeDpNu(9~5|F+HF`QW$y-Tt>ezH9SsemLY8Y~8|cR4;n|4fRWw{qvXT?=4%! zy9tt+faEARLX}YYv|wkG08)reN?R3kDwwErNuCsQ0}k4Q3o_ss=FDo?LB(#b4~7di zybmi=CmM@!-sa?u*Cm$RG;7YzWy$NWQYSHM*V*a7(Co)PaJ z@;H&T{|DY?&=rJ!Xbq*f4yf6A+u4PB8{N)BoB!ww(pDz#1uK(Fu%$XQL;jgleGmVu zKWRvYbKG+YwNdZqe7#LIa?`j*I`BS($$$1L{WsbG$B(iV@>jF6cZ`-ay+b$9NvA9s z_?z4gx-3Ms(_oGzne7KfI*|#TZ78ytQ#mYGxtddtga-Lx#Z@3sl@4gUFk3zn-6 z>He)-)z_-0ub=#_d$d`T@(krd*m|Cu&~)=M_)Lrqpm7e z-4qG9{Eda;xc`~CZ9y!tbjQp$f4p+tnoFenm)(2)xs^RTSB|pp@RmA1`7_cY)hR<0(+wcopZv6!xa_g%pL! ziVFR4mhx##s6D1_In^Q}AUE27nz3UzQv}5&_2@q3c0m;KbRehn_aCfWci|<0nOo=8 z6VNz(OWM1a_3zEVwRI3s6zoU-OecFr9Yq|n1U!Rc!!F|0cEo8QcwvPxx7m=g+q1AN zkaD19?r1gs^u?gB1SBP$xC(+!dC9&Dmmc4%{tCqZt$ubXD_b^S^>LzqK|QR~jr1w! zFz|qI4%4A?h9R9h0sqREWO-ZRX+)cMgg@zRP&k^n2Vg&-zAr}syMUP4Rtouw60fk(&dc;OX5vu?>y@V4_$F_e#@M+90P->ntajN3~5c8UpKnSox$Cp4xiy3fXYDJ15mou z_hi`Hu$yy*QRz~9QnV!71hRvwiU0D7+mFAsdv5EJ%4ue?@ot>z)^DtdM5foN@3CV1 zJh#-e~nGw8K*l1SqtqX7WW z1{%r;U`V~ln&i)ITre{i1|a!dW>}&KIiEUMZOe1_NgyD|ASyJggXNBWdBp%!hFn zP18RO7nhKBaz>tgdM2%}np3QvLCX;^pJ0vXU56V5U8ur0910vXd4^O0*~nO2=xcjHK~vwTg7&gb1PP8!)=D ztoddZvkz$PVg)EbVu z`@)hm8}PD9NzrT&<5_wlC#&LH zuh?rZ&)l&jky=iY=Hd;PUk0HJ6(%ERzEF2foxgAfS**laz5o=Imzhs_6s9J3Zqo0@ zt59+z1$(n3;V4!|Gl0a{LC=~qg*M5O(n5lRbLot-LN+Paxgbtr2lk!>hxj+jOFk78 z)eac6EYZ7kXz0AGCb!$4fr5b0kTD1W(d+3Se#(PS_fVSosgMcJXY_4PQ$* zq>QK}o62jnAcbjA7-+>Lpl;*2NodvyD(pk4NqmbdSp}GglE~DnpFI4cP0eCod4BfT z1J`XhaNS$CPMWmy)hm8{^$)t9xOdCr_owfwp7^adw`_P}OIJJ50%A;t&43~geuK_q zLMe2}pxJ2_n)1zfRXehiR!g(PQ65Nn6SlZDR<5TA4a=DwrbOzQEm&xoL~HHjp%YVC z4V%fowdRL6_9_3`yH~Z%xZ&BgXGrTEfBiG7Rb(8hZOb28KlB| zF`Z0htwR2m;%iOab^M`K?xzT3h7Gxk+LzdRfd;ff&51nlM$zW zLWsq6W4xH$8&nluj7h0|cY4ERW$xRKK9QAQT9w-}H(ioiwqrV*yZ6BPm(p?I>_}FA zL#6sMTkHsz1x!+QL-*Xom{pUiFeR(!&8!|>pQmvYDNp_v{7^+{Y!pxw6WpSPA-^au zcL^BD)kW($9+UFa)L!<^P160xXUMVV(MKHP9>C$07;3tpK)%KV_Giq&c|18eS>9cC zCK-1XpzONh;rZ}jwKQs;G|O4yP_93PO?gTWd=PrBo2OVB*r!(Sd*qSyRnJ}3b!BPo zhVCgFrdNq;rHhYmlP=!onRjUGRFmmjHfwU>wY^rNX22uUVVQ-*Q7rar+&CoO%3J_Q z*_Fp^u3gv-#2iD=kROEOAAS)oi8IgE%90I(N@n-?rdLn7tS9uv7XYdGvZt>aaqBGQ z0@OjHhi@B#$dZ9X@#Ex}YUDFUo#oe52o=GyYh30~MX01CR3YV6fo!|NOoVwF7vu+#0tPpiv>_x>Ys+`o;2@D(*wd4bK4HT~eR_J*M?5nft;o5?o$CfwRhBqFSXPG{KOrI9oVBJ)%jm$CA|*-PKdddR&sPI5~4c(wDBD>GRF3PRr*^N!ndK-HI&CZ7GOG zM=dR@Xp-9s5~HxGpe=<8DcoZLa{+4{Rz0t!s5vgUyu<~vyYLOAbt=TANhzdIL?Sud z`AF5-e7ycdB&MHfOv&|$qz7lhBSR65aVIgw9BzdejQA5b$Ooh2Mz$1{PCxg`@pEol z(Yozge_hyDH)Ykx^oog9OP4lIAJ-m;#j}jx%`&(v)76DFHL>E{#{9s@{$TUszEK60 zz0()B)%2u-;f}L@=P$3%9W|M`iz|JzCOKWDv0#3E*jqXIlJOUPx6x6R=qzuY-5w0K zPHmiZX{EcRYf9C$pRO!y@cXL+>FYLKnG9CtS+Y&n+AP}~g^}D5izhaFofWBZ4bd^R zx#C+zwE^4cmb_?r&{EJtIxO^ahf|5cU2v_+wPrgG!$vt})Z+3jP_vE_~kya`=I=huMXge7UmcSpivs*e8o~;_wncBZWR2}?sgCSL9F7fYj|tw?FQakn15c5&$lWE0ex8ha`5gP z{cb3o@)CY`Tjtr)xA)%-vZTOhD%qU*O-?h`-5v%O6dB=V8hg@V>B1So7`gpMlw5 z@zFOa8#28q85#@XSy}v9QR&B-ZwH?>5BI*$zl|t&4nnRCm2kr=%L_lnvz+`{5%r&} zRrm;>?ff&om$HSQ!UK%&p?NtOpr`xPe~SMUJ{r7k*RRw4eXSH zN#2B*c^Fm{?+;EcYIhTRQ9LMpDMsizyA0W04uQ@>0qwHCqN0XHSeQ~^S)kl*aDH{776Z@59(bJN$?-E@<@?k3Xu=c((JSCoT7 zIcDb8bj4a1@?$G*w#fB23;xf`0)dO^s3D`BK(Z4^+OZE;#PwPyc>fa>=Aid<6tD&3 zb#XBsZ?2&`YUqv{8br+%Mk*6zq84Qi;*vboeODkZ?L8Ve!lKHS1T^KJnz!Yz!-V z{PDK+Pj76TJ$q4$BOEESJIX7{oeOqfyT0~+ZoF~J*57`*dGj^bvxj+D;hsA{sKTWKpC~s2 zgB28Q70yYwicKvR*(H}niV6~Cii?fjCFewMb;%JiWGZSZOIs2x1+vc?`b(Mbn##s& ztk%jhZ0`_+uJk5T^aE1LNm746FDL%u4pInfF4Cir+;Evv@VgkB1hpgNLi{MQjK3GV zF>r_#>M`SwOrb|A-jRdNq?)LXH7Ga#e$R92XJ_xfbR-*lN7K@+eG{*oRbM<|{p_=! zn&ztry4Y>(LHG4)V?o`>P{X8D;6`=Pm{+bJy`VL}dgAi7ckg;4wQT$J{{1g(qoRp5 zlP*YioHu`Z&H3M-T0H0MbEE3t-gaLv%aP8y0&M21J^$P5`s=!WxubOS_^A!e^E%2v zcZUZ)XE$RNQ1(P1ZI>i5=YT1PiNY0<{HQJZ!5bgYi2I+X>Mc^Kl*6rB(oeK~q3lxk zYWHDhpxo!H2smAM_m&61-@g8rZ2b3g^f&(w@2&tu3lrw3pRpd{XNZ==_v_9+=#jAF z?NQ(x+ZhGNmpG$GS97Q~ZGx9T0iDfBPH^Xy=helUMg`+zB5&8sugvviJHsX6RBumm zZtp0t1X@F%fkXI^%~~#$q@BtE&{*(bh484^SL!Z(w2(g}`T;$rolLot#)3M>*i#WX z;lZpAaOe8U15O%;7c=tZiJ(Z|^HmhNTtyW=G{RsjzCPzPz=^2*^|@3J>ZGc94QY$t zx2r%l)g1`uWF2KvI@?tIXjPS8xW?s5_@V!U;_&mv2ORVLIExzx-hyTj{0H9oL3g^V znTYL_an%2;epIDvr9ISEGvln{wrP#`uit&|l+6p`>JKrB+{{c7!1Aou9<3aiYAzYq zQ{OkPtD8^FS`dpvQ*K#+2+vgIDSI@aQ^xZEbQr9sp@-0EuCcu*!lv#z z@w03>6|mF7$_Tq`A%_)51ZBHrpmjJpaR$ffQFt=CPKO>^eQVJFGTy%@ZE|M=4?~NO z`p!Ac@Yek2(V*u=`nvYgy7t-*`V^<&eAF_0UGptVCoZo=`SoQUe_?rEw60||t?b`< z>+7Q)e~$I!wY^;ZOx(r!Mg=_BZg+M?@xe;Wp+s{yd=jG{@F~O^kAdEl(+ueUGKZ(( zIH#FHXd5_fTe(E}2ego}KsbuNODheF1vd_SihMhQGbch~C4(}^s+^R~NZQ>#WgpJz zhNeud*;E6nGdxDs5FdX6^;eV-cJ~gozYhexjrZQGwHL0{dS}+PR;wh1;A9(YJ@64U zv~ig2urRp~y<3kDtb}HS-iwY7ETVew<`63y*84nF;TB1lEE0jBS;{r21u9NyGqeKA zad@g7WBR>3@>xOfq_f2aCrUJ1;!#I#h{hyTaV__0^hCBy7`sDxPsnZ{UF<$pp);*< zy+^-(J-?3j+=2)Tups!8M-R1^bJ2dX-u@?<_S}L9lb4Iy3&>j0`WK&;U1&cI*9|tu zXLPj+n&t+MHMqGsmM;U=fQP_QmV6=*AUqTg;Z3*pA%xN7IHOxLdR z$gD1N5O?_sSBI}KtY8#Qb6OO)+w!QQGem6#lVz{THj1edLu84_n0RnhQ>+eR&OIS1 zy&f3VJ2%WmySPvx6!cw&VT(x$`T8dNfl+$Xj!_x!0NDD zCDw4>xOJC~UAtyocjdS;r8*RfglkTKkf8z z#DpwSDa&I<^!f~l;T~{bilYP}l~>^vhpVU|N@k$W;~#jO-{KohUKoN5f?`ezPYrw=32X$a03;Yfr=h+ut~@p}=6ZXTd5u z+ifj~me{Kk?WK-lq*M4~^-=GNY_HpCFuQYuz7z0JC-gpMDtt<@z+Q6$0q%&!65%+g z&axMp&4qU9OgP|VjoJeb3l5Ni(*I1mYEisGMJm-mH7LUZYjm=M175H5Cs@}D;*IhdA>RBmIVuUwT z?+>*Ukya5GEHS}3%jlGxnCO(Czta8xlL4s~~jM&gerYC?GR=J@gVAxB6lKPrEH zq$xUvjcLVShocRwA#hCo8pbCqthx9PH!$sqfuE3jxiM~X3i8rcutzg{ddV$_n!3a@ z5dLTwAt&`9sva-ED!|x7LzP-U5{6&ct5cn!?%kj5{qAqBZ!u-5FR(x7N$OqyM1vsd)49+$rH(uq^2HQn4-(2{pwxOGA} z)Kc!XS)11_PGj%ZdiXmQDl=hkP^Ph6n0MG}vk9iBlx(C{O@xASN#*d`s%CM%FKUbOO`?q8h$kl!W`lJ!wjV| zo!vZE$uGT_f6N)!bXg` zb^ZkK+bD`lhHy#~^Im-M-5;rL_9@osi-tn6BI|eXkwt~-r*ZD072%m2#hNyG!=@Uy zEl^!?4E3SGulry7-K$Xqs$L~u0GJRw&KZV7hQ5}w3mc6tml#U;k|b6fLFiko=zFkp z%!=-CDBj{NM4VuzqcH4&H$t)@yFE9&;GD&GY?x`-u`tV&9f*}z#EYz1Mx4ZTiF#$Y zvDk?!$jt8YJ4{`owg2x}b)AMHwj%2(1jh4((t|#q?J2-*6#R1k!CW(Fq93+jwExXF zDZUWHuKpYVLJ2zIjMtoGM-E~ror&_|>O4zf&MaSUQPcP;Usc{aGiDfWa{9`fg6(UP zsSS;-vquC?W-&G$SWFt$v!5AW24=IL6hwstJ>h~*$4Ro=)#ZkldjOr)Fozv6{ts#^ zMTNvcuPNuKVmn;s_m@@T57>BKzdvY;)JRe=Pl(pO6m59pRjhMb_MFMlV$Y!@&4y%r zm?yzNjszo|287^nB!tX6;(D~w1H~i5pt73$s;0t%#&Umq3~{!oyVT*Sa+Y_Mvbi<+ zg>^-~%DCZASy@bMZ7GSD<+#ccWi7ov#jC{aMRrBXG9JLh1@jVq8=Qm~>p&^{*}$rk z$4V!D@v-jUzIk}**fz;2hHc1#A@3cS;uvTXd(_3s&9X-fo45{XpN-OqOZau0;Sn)M z3}=y^WaQWF*!A+{fWrPJ+0oC1+I1n1VXr-17ayYQCU{z@y>=b-7zbog8G-ijKQg1~ zO5vmaX|#VY+RJ+N{Ng7E{w6*|ZRlR!W;Jiaq6wDJcgZ}c-e)|EKlcLO|0MBY^+9^B zdfy4pog{3c>%xNre=?pWLnpLp?I(*5%OZyp&!X!(oRft+>AKcld3mt?l;Q2^y54?@ z)}Ed#Kg{8QKOf_r#HOnc3JiGo8(oKvHie+* zU(4n1|Lg~|QVW)^pV4z=EO|}Or1j@6JZD``FgOYI!Q%7AxffkAE+BS2_~M5fZH>WT zEP2+-l#(B>%6B`y?eY~?HB<-Ki&+(gRV^XM{)#bk<5jcA*J(JDAC?yaH-lr99s}j| z!GkMGPofG|#bfz)NX{dMf?~H@dWH+iVhqbeL&It6IHQ6~OG>@a)IP2Qx=>O|9|JG2 z8IJTVyf3wLLqUDI?7pUng~r^PF$r&RdsB^F$(y|7;t|bz#@}zTjP0r2dEiI$_p2Xn z3{LE<+3zS#Rn)YG?Ad10ggI2oTtEvOjn7P>{4k)sqkq6O3o|oQ*z_2@IEwk85|~Qj zesUzzjrX* zK*R>shYV+gKZf&3RA9mV#u?#st^dyKNcRZu+?7QJUvtOUvg+QBMwjewA2p_^qtCBM zZ5v;?dF!#2QM>InOLkfBm9x&dWp0(raYt6RVwgFvq`j{2PD`X~x4p6}#hzAobS@fM zv_Fw5uFNw-g)A+N7G{To?3!QR(ldI)6RXo(dd6=^&A(=HS^WivuA1`H+V+)A9qo?F zt|n%AzH`9{c=z~9FgyZ$PZX9PiKGH!aVh}BIb3MS$#uC5 zxg#4JV==20viIvl)upyvESf>2qRt=X4)7P22b~`W=Qrhxy@3}#5jXx%NF^Kt*Q9q2 z!{4w!&{g@ zHqItOky=_%qqX$B-1+M5qZtvF|F zzHs>ugfLKBB+SL{DkQ~#q9<2PF2c*!=HUcxn>%;Hgx1y$xr&x(n=ls3bGrO>+DiIu z6am<%i@EYh^(`_*O`-|Z3^Jw{9m$oH!H2%S&d#Q$NMwY` z^EBqchVQuyK=Cm`F-Nk7^g&eXXf7!OqVfM^Le>-}p!PIKj&O~N{LfJOfZ$IK4G52( zlV4iv9!|=Uj=BQ7^-TC3n;gXNhzw>gc>1;rispRoWd>`uy`HlOBJSKsEWhpolzsjN zgx;UQ=A4~JW&xKP<(m(1dCfgU_DRaiy1WLC`E~N`K+Z}5oY*J|{((PXMSKdccAGHa z7%UO<;b_#-0*Px*JBux$d{3#zV`*urtV9iTGnYs}b0g3V6&oQkot8n)M9Wlylu|xO zUp|FK3Fi^bQUm)zj7S>7C@0zS3>gkX)6^%_|9yVvh+xglGqZ9mcS*IE?${T}psxFx zHH-U3c;@_3n%Q&BBMXO-nq)8;_QMb4t<97Fe!P%%uA7tWZy|KeySgt_GjaK)SG5CS z7DI?uxK zYfDOsaR&4=@_=B$Ser6q<@3xJRC^2){f+bdUk&`^slE^#=Rcr8n`}bC;AFRU*2VLb zZ^T1puCX?BT8C6X#ssYa@%Q@L;52~i$aXmKI^hl1HCXE%vSWDr$* z3H@_jnXcO&8-AU1S!q07&q6*A`kySIkfE**io88}RtK*O5B9%={>8!mr-~2vzefG{ zzhpd%uIv5l*9V^Le+m8Ly59d(v_yNlE{nXq*1vvT*fTH<5o7FY&}y< zs;wvJ&O8*H4DqnAmW@aGc4T`8;9-UMV~b4AqG(>v<&Rx){yi%an$EoB;-DP9@cKKZ zT=Lu)b~-&SNpMH8w=Mz+UtDZ>3JAhJ1E2`0`uJWY91y*5yznj;spE z{(v%MN^pi;zHsA&z|4K0+$4?fU-s~CuT487i@Uh7yTN zhU=~!bBS1TK%L*WbKBN&_Nuztuy6mkX(i27*c&4XDOmCki^t$A87WLXCbY4>BSl5t zJVVt}m|qmLfCS1zy_aUFkBA?HSvZRHaTDqAMRj%DNMbY=8VWhqVD0K9GNHOdk%acH z&86n9(mln#Qkqi)od=aiWl;E%1uQ@8oxHqQ4zK8~U%FsMSx=|Q>9gJEFD&br+w5x_ z-94(sGwOmVjTQqokE+v(;}K6FHaar?{EFgHqdIr*Z%!mya(p?9XNTu5URZhdGo!mM zo1HSPy63`m3obrAMZ^a?9g^Nu4BlYe#nF7j<`aGzMzBrcX}WibvEHo*z$)8eKejbTmAA zzP9d_nbI7r`=4q2fPF`NNaOt{_)jL0KLm;Nil}N4nU-@nbsS z1bMuEJYIb*KLDxtgl_q`Pyy5=dmZK~-aJL31?Vte?rurmV`E&OPG` zD@M<*pHNupHV|S_WH~Tu;P!CSNB{rBA@m3M9Hr^ttF6KW;jG8}*}&kDhOuKCTHEkf+T;>K zH90vh7xy%@dEKEWfyEAT@C2d(F_6RpJ`^<~gPGgEuzfSm2L$)vhR`B>@MURCiAxr8 zw}Ptlz>gf!7j=e3bK^@-zvJY1*fX+c+T`y1=+yR*H-f$FY_$3;>q^8K2uT(r?^v zsJW~?Hov>ZT|555TNe^Z#-^N;D4#aEX6)wYH|(Ez#iX#eq}p3Hz7=W5$XF&!iBG_6 zZ4#y(EGjAhdJZQnmP7;5oKuj1i6#+%yyD@$(aXB3vlWYc zF^YC1^e9(N-1zh}StHgwc=7CqmWVf6L)DE16!BVr{ZiSc{;RsQI5nXk^uo_&5%Fjy2! zbXVk-+akfNx+KamRM@Q5_GGfD-d$~F=gpjfDB!@`h6Q4E7FFnihg+C%*qxFa5NWd_ znY#qP8-#Yndf1rA4`fpi-P|e^#btM-rbal1C`USgX%DhZ9M-=)wz=pprvjjat$sPA=n@^+2Bh>Q>bC zE^Qn&WA5C#ql)l&PtB0mPx^)js{h}p z3u##Yf2QZZBFbZY4$BK_aE?YxZ9(~en8Q#*ps>F7za!x7G|`3KRgvaMPEM#PRM!>E zOmx1&)_U5)HkUThbkf%Nm8I%u-Z&O=X>lobx9anZ@G4gRyu)VryXq)aq8|B)Y9K7{=iJi5i>99KyLCpxQ$to4b)Z(SNweo15!B zs<6Y7DLdOlk!dqu`;Ip;NXMICeSH0c63GRHgXc8X$A?c_%COjDycF$V!F(V7(nG2! zqpv9|C-aIV#ag)}0jFRWSqmLCBesuG_fKO!Z$WHqRZ+3%D|h;%o{o8;g^Atuvl|_D zmI&0-9;n)au9U@X5@SX7qFj4vUbMvk^P;qT%EH-7UZSu#S?)DdIZK>ILu2JxE!$g1 zNMgsxvZjdJ4T@@??zcFyUJaL^OoKDODc=SsCW_tygUr|h3>FCOkJ*rLVtvBtEX)JG z;AHPVod3;8qVq}zV}U5LdRnZ6!0%5xQgtV1?x&35C~@(B4$f^Was-ziO658eG`Vdi zQ=2xql?KCTTsd3~VC!jS)2XiTe?7COOe>M~8AdQPuY6Xa$p7D_H8<*RU0Uyo%}Ozg zfi(u|M--nrt98w%pH)S&*``?SOiZWCQm4#mo+Gb0&jtrH&Z6OS`X@f8LBx3ZtR8mK zl#-m!7XtqU^}nf2EzglU16DG!{2S)>^z+NkCP58IyOl6|CaVMX7J@;-w5Nqa$mghF zz{<60>260X5x||R=_l2IyTs%3!KHe}Rjb2|P!Luucb1<7y(YVTQl_AQuJPq)RRwq& z#0dkc(N^Wk^3nAL1@)uLD@WJm=OY=uPWv}BSFvWk0ND=;>N~<=#3~Bv=)Jx`{XAA# z5sz0?V)GDY2L}@~)M2L;7ZlnsJEWR8g?vm+o=}9elK|!W^dBa!1m(8>5G_IIVo^u` z^I%N%uzdqur@*96mw=~0q;}9SWkI08^vhA)NTbFxhL49ZM zj2bP>s|Ur~#$Pa@KF>@>70n{|jKX%RgC4x}U``IaJ?6vhb#?76_~UV$Ox~_^k_+TW zVYHYPL+yu;s3nYO)62VMOjHxqo^y#<4|rPnFF+;>r?}Z zt_@ETkdt)8*pNXbC+6HtX4FNay4EIY8jVjsWtqDB{o5$FkS7CBV&Q@t7mp}&NQD`* zDsTODFsp2X#?-W~XV2fi;pxlUD3h@LhMw_PBq)v0Uo)b+uZndHH?K5nO6ryt!J2B# zSXZ#e>9e+bwOd}#?os|IP&N?CHiH6B$r2LTDOp0F@Jyn`@JJz(NQjuOq&CPFsuRl5 z*7mq84dxWZsXi}7FZL=U1n%*ttRlTn7Oi15nWzA~R>)2gwCtXtK8wYN@C=F|49h^G zj3Nb|em$dT2F{$-WAmsb-vCd&7Hyd!td?HKn0QoWSVmFb88V9cw2UGxN&*`+(?8m0 zq9G?_IQ0pew5W>u`LGP92r{%D7XHFL^qEX2WMmDCFz}45p$Nn&@F6NQlp!@3DKOfn zo&mmLQJfRto0@@-<7+6RYWf-apMHk^(f+jKpRV=KJ&q46Uf>H^Ni@G~dVdX{vk7d% zu=#yhq3DH{xzxv|OOI*x{R!DylPPhEl4*a^^{HpLK3%`g^H*de`l0-l2%`ANUm>`Z zNtq}cB6ajV<+0#Ptpgm<$h6X5?NWTx)#eIAY@b-iGG7+sk zo;O7qqpeLuB!}{5@IBo}-_vt}Up;>Y{c2eUlMSsII4QFO*R`yJ$xclfBu9N=6F%=e?RU+5D0jtL>S!t+}GKi1v@AgU`}9KYw58D?O5rOzt26c9U%KvdJc!WMh)I zFT2^OT>js8?hFjZB>Voqmx%-1Idkth-}!nw;Du9you}3r(I=jm7@1p`ks&Ws08|Qr zz|!GoCj7J^p+P81A~Xb%j%L_MWkEEwNicbiF4wS zD@8C?gn-LYb{(LR1OK8y@eRV{!U85cGgGCKBO>{7o-x@Cu;(Ur%%_e1AxX!TjXq1T zax7kr9DKfJ9EOb1i1jIcRC{t3XSRGexO|067mp215_|4(dWQqeaTF8P6XV&idh9EX6y> znkOUhI*yl}p&2$+65X?l?wNU0A!X!92A+1)t-p@A~$0-e)AGKsfiO{e&XupmGUG5}z~$d&WBK}&M$17j~A)sL@x&Ra|s29WXEHiZoxZuDY6c;)Laz!P80#Z|H zc8vFp=0RbNA?=$dK>^}6w4M<1We^aORJ|JzkP_?!5MTp3euGXI7&|aGI5an>pOFu( zUh$i$eUq#APE6Ek|9S)d<1Dq0jI@_c$qzfBfNl~4CPCflPcr^X57&S4#E+gQ5JNFi z>Stw2`5>slKpl=$bs>x)&p}%fcTX9B>yEHyHY@0P|{6fedXDXQws1w$+Xm$&|n_IoUvJd->+ zp&i}vB$cUp-vN#8iAkWM^`tO>SBYlS_`8Lxlz8I>$-6-zXj#FkjVtP;CM;KN!cXu zcdhqt@DcP>LxD|+wmrxJr~pIX0(2yNl!xk5;HQnqf5FFf>Q0>RI%ZT!*HNxuMwKrI z1LlW*EtzKg^hsdxFz>w(Jym)hvG2HEgn~)~K4YGdcF`s#ThP@}{ zNq$AI&ye~GvHB2o2rNAE=>^iLvECh!D;D9M?(u|%pL+t$kHy_XZQ&iX=)4|Hw9usM zU~x&7-n}wQynNI@|9D>C{AB5Ve$N35QMzB(jXw35Uhg1!vie}R|Mhj$lY)7|;7Rd$ z)9xBiuLJ*HCp%6y$xlI@Zt!)GPjJ8_Bkw1rel%pZZyQ&aeY5z|cE) z9K*DD$3Px1k{QB{`hzh8pH}25=fS$yNII^RnJ@XzfsP?F->duf@>y8V&-h%y7fXFE zl~n)s`Br;^~l~IkW-%_1;`&J?Jl}oFt*z ze?B#}KlWUJHoEYh0r_B1L>rovoe>(Ek)6a3$m`z^#ZwOI!tSe}%%uKjdN3+6m|>_V zv;hP72JqEm6Z~(qVa{h5{KpzGSO=u~f2kIOiEt0i*jEAKqbsUW%IX2em|^XNy@CvD z*c;F+d*d*2hzUp)DH1(`eFhpPbi07qlnug)Uc8mGQQ&dEtjh@b zL#|rtYkUD?^;k*`(g&PtG)M{xtv7p$#_6&9Jmkyx)ywlzAqWSi1J<-*CSk9{a!OUG zGJmhDL#@qv~ude5ltDHo5}~zuN^&M-XPoW#80k{sU0J?6vU6^VrL9WEln~x zODANO%^fwsN=9UqCFl!N90eH(nlAC%_hvqMd}~I4#uf}6x1qk?Yt0f(19+58{I)e_-^0iX_iKI~1Do+(cF#7LwaP(p?OFig<)0PEGI;>!?box3}=}Nuq7+Omb?qBS_;-sdDt-im*Gl-<5*-3DVlgt1au{U zcbbv<{|;TyEWJ?$$kF;WP|JQD)Z{VQ;+c_IBbHSr@sS1pCxB;*XI7m^tzKLbXpktG z<5#1^4){Igo;46Hq;+s2)SpmEE=3pVbx1W>({;-a_bZ?}`0zEX4!$ySWC^8%#|1T0 z!X#pP)zG-OVW87r8D0XfYAxpaUu2UKD&Zn~epE#^l7o_xhO2-`)S-2`3S6uUEoUSV z22}m-i$-4w6|I^Ai@EECT1q5c?_%{3O|$cniYq(Yn`{UM0O)VzKiO2%FOdwkXhDa| zukPo6Ksxqo*GSQ|YyZJUu15;m^TW>*kl1qR(j~B|a7X%3(L`nnbM8D)3}kO#079As zV876>uC8C-of(fiGob`t^>k;>vvuRqu2N2RO(YXXR#dp|u|F4*Did62Zvh2f9tJza z-(!agzK8y)zAb{&<1pz%%AD_EXue(2{uN#0Qf4HYV86oJesQ0`apFgO|LLZ={{tfY zn?DhXoBr?iko;Ewm#eC#OifLVehjjsr@(GZtp%~K zIzM#iM7kSwQ{gpZ`jm;V8|UjM7g7FJQC>c1kgI}JjDbHd^>g(n{jp=tl~nAPBhW1Y z$0_WId+5+UJ#%_?1tQsQA2~@J50AB`vI}>m%bO36QKetn8vm|3@caM!HjP+0eM0@R z;kNLB37j!w0<_>+Jvf3Nbb7}B&nHzp%|kD~+L zmhO!@A>NyPz<2LbQtCHac81E6si>E6si-@PF_(R*(k z&DG#&YR@^rCjQB2uYrmd>KgF$70R{&Obk9b&nI}VpT_F}fAGIfJ%y`f27kRk$}Yle zA-wL*Is(0bdIn*}Qkz&8ZZWYkxPs}%poU7@GjqhEih@Gn>c z`iT&7P`^&^`Hr{+?#a<0cW-U|BRJM;QT%jl9Erm%fwkT}$GV<5jwNGz#;}kj)H}yI z#y7{A#5I%5^q=Ftd(5#8EE#EzMWjf&rxd5S#~kl5mO0q99D1TX%sOf9eLJjr5=;Kw zk3zENjyOtohJ}cpW-^83B=VAX3`iBZ62Dz_N!=z|V*{)%%J0C*J`qq2GZ|?)r}JlSYU;eZg**M9+zZC_y%!iXXiX+jD+sC; zt}*#gbC;IZKbpmgl#BiQ52f0fN5P_Np)4jY1*M9iaLACtLbPRn){vylO1qv%H@IX< zN~LK3flds)2!6Sr>91uHJEL=)uh6;h8 zBVm!pm4T`78rK6vU;|a|OsNWO#F#N7Mqtb`4prI&Y`5|=;KYt+KLMyu1k`>P;kTm6;NegBW}=En3WqAPy|^635PTHb3jB2|-WFXi`82p!X7KlT|@ zNh&4ofRZ=hs89iv267t52!p#mq?9%r%Csb&DtRYi3`*xdW0sI5J}v`w<=^9dP$uIT z_OSOpb)>F$3}heTeLxcT8Pn%k0Y~|((tIGhpg|aT=g+{`=^XI7)Va)e9c85OJzl4} z0E}lJ!0~t;cs!0rso!%Qy~M)z=m}MT`vbVyNGX#=%5d?^i1A*>`~2rUY9OBRK=*A@ z3nynnXHPtXTC%m*t_ff}VsC@n&}Ig|A!p*R;dd?&62POSA;?%T z(=Q6%Z&PCcj5*{V7O!!2U9yA(v|L!}>EtDPub6W@LvKRlj|(igdRT$=&4X42gFT4N zBH#cyw5(x1IHRdBCr+A^_dbD4;ZqC`D-md=102poXBY%64%y3rfeg^m-Ls_j=1m@Q6!_9;gG@)4glKr}!X` zkPDTdkNyN)3|fzO!A=8}c>%Z&mlT9(gK%3fs00-P@1i;|@F$@2t_c0n^w-|!#dufe zU77e~@6J!fC$rrz06HbHQ{c>4CsT6X>BNG-3mg{*tuxgZBV|SbU`MV*G0u<>j)OUo zi!L}th-C_D!S@C(0`1#f;57hAg(!yJIJ6pn#hID&>$ZC%n0UY9h-AC>%bLh{@-HBr zC7wxq3VPP57(1hYvZ`n%49chsP6L)xowGte-#>%1LQ63ib^{J+f%Lt*%w6=%_IO+| z=U|p=m@~)}7`<$m69T;U?D7O#eop^jbGC!jge693lOmnNZ6R5**KBr{TQEN~ImZ@1 zILii(RYPdCAtJ^QM^y$$Bd--DsmGc9lMrD>5vw`+zY}MPMla+T3cJ{&8T>~wp6~PP(ux&CyJ7`=ccyp%6m-H^gc7n0Y!?l}RsjwG zrGj7?Fzm)n>>vr>wVND}W{zj%q_7q;=^HqblOG$PG0PjKCk?L{lQD00!JL`%;9h39 z7urE?rsNs~npEeLtdIhux*$&p2Z~X70{Jj2tAWP<@_1kkJE+#% z$KAi~=q{~6YtI>;G+zz-(yPmwP5xojI@Xdbhj+?-=h>Art&1(Ch|7oThPcFKtR!&g1*}7fgNRfl6cAWlfdtM`sC@yuy>W6*EXk_K zS&(h1xjde<-_>&0TiBU3cjJ)Y%u;O6YtI@qyux7+xI>BnX^o)LXdqZK;amo|B$el# zp725i&_D>Ih4%oO;hqYv$~adj2@MDcgf)8tk&}Be7*|x3sWue1K%P`OtRXrvFi@0bgrnM*bF zQRGKjYX#S39K8;L1T^=a>*8@?FxGt0@fhcZ@$fnPq`3w!iN~SCAbyVDyT|8UHxSQy zo;RBONb_Z0f*f|(8}IiZld1Q*Ft}%an4bsZ{pW+<>zOCy(|G68^L?DJ-}il=_nGfK zzTfjX(nZhrAy?#Q;Ny3_&-lup8Si&p7>qtmFFZ%$c(B%L$d5h`=m0VRSrz(X>8{Yx z5_IV(7)`$geqNrlHIhcZ(J&XV0P)^1Y7+T}*Ge2sMtiM9X`gWn-0|nfz@CG3C*g>) zf&56VKKfmHo#Kde9W>*Y!0&VvIw_}u%mEo61Yx(#%n}b{vpJBU6ewLhp0qRu`3O)a zlZ!T+w?h|j5m1P|eB?C@mSGVRZ8i-89z+Z_@J-=B@SyBLwh;ln5;-ZR#rqvlFgvJs{t~F0AyL^LGnzwx7V#lQC1dM z;0}Z%*D=709TlhWjC@J+u#26q^B0FqciU zp7NLqb`i~$0sN72+%zqHuLExZyy_W0lKsHPa}e5aT^iqW9q|xz`@HvuI-1`5)9cds zp6hu3p7{Xp!tu!4*w1>OLqEsw-Ss&`x{h~$MarP2!o-9;1-pp?g@b*?wgAu%z}usM zc7nu42~wK^5QAOE*ZyVRh$X{g4>=0PHLM#r`IY*U8ig!o#9+ST_N3}%Ba%#lQZ3z| zC2;=;IHAEDh*oZZIaI5qCp17UA2jWh9wgPNfkXmfYNn*SL5R-#ZTSX}`nX z$=>IW?*0c#o37)KWeJdk>(cXkuEP%A_8UK;dmhGUr04mKr`JLKgD$FEBddhYu5gME z?szC;Mjbj*>(a8&G!%{?>h3WBQB#moY>C$Z1k&^wEg4=Sjdemt@{Dj>TvA@D&RDYI z#1!}3?A2qd7MDgO+Y-jt3}=H9OF*EoloBApYJ zzy~DQk|0_gO|N6e1C4aO#{W7G*@4n^$TADM^Oo;EtkQQK>bh>wcvW`SZElO-^$IqT zYNFX)f8l5Qu4A?uTlB*;s)<5Xj3jMfZt&fnxgiC?cd7Q^H^-jOQLg!2r&3s&d$s>{ zzqvQ~&3&_PE^z+|%#U|Q_}1iipUOV>x$avlXxDx)pz;=<3vn|X5BLVK^GRp4lqBiQ ztnX%p#k?Kvf|@wi3S{5uPa!aj4D&(&B6ct)$v4KYyR}!$!z}3->_UzAf!TYzP)pab zTeSB&?G_DKNXG*fW-^7>Agfz>J|+f^!%|*IO6u>e*n$B6MOPY0(}9I|#T7-Out*1# zc0fo8CsEEy7OA%oK$5k0bt6G@j`x~#;K2}VxyAN?sQ9Rqkqu2-ihHa$+xTNG*RN@< zp;m4D=yhWNnMs2oG$Jr6At~3LJ+9aluJYM#4W1#Z$GZm&FocIj#JU|><2|6aN2DVj zAMAQdSWNfO3kB%-@h2~IKE(5dBq%7>@VQV00DckZ8y*Qz=+BI~2HlaAmy(msfdaO^ zykIuxsNttaB?JTr3Z*hIFe)GbI-3Dd02Z`wD7I=wCkp(JnTNog;WQG=lS9a0M?=&@ zq?Rpx4uQK1B)&Qd1Rpoyz^hFeJTLy9e5%$**B)Eb7br>o&=bqoot_#w*pb~>H+V(C zu%>ZoKLN^JAfzzz$0n=}#9rwXcFzOsFq(OhV$f&;`n3c{W_#B-h^_WK2k4?VYAW3;a?@+p~cCJ^fZp^a*EuWcxi6rhW}r>X`Ly`*E>k$iZ!oj=|6 zkK*l1%1ifrcK@pHKYOFP@yGApAHC-<#}^cb516{TsnH2_G<;Cl> zIqJkI38ibNaYzDMB2qa6@uEI*#NlEiTABUtpj6x|6^ivP+^JQ>CvxAxD z>AxP%JyepZ3Nl;1QqG2iM_NPI5Qd8q2#HY#t@P!WkCJ2iTR9}^W@WlZE4)fR5CM_1SFAdiDXXVszkOrnp8VT7KCAJ zWJ@p^989)a$q*|v#wE)vq{Y0)%uY5hG=s@VHX7Ou>{0`f8%VpJY|@iy`XzdHDIwDc ziA!j5#>51KMp~NScM88y6R9hoeN5F>vg#$-XNml*EHi zEybYp!K@Z57HiR+kN+TL1M>|q=Mw({6ha}47t&H01m4g5X8;i5E2E#?1~7H_U}}`h z@CD~Sz$uyDbBW~;b8*H_duY)&4-aYUoRYl;7_|pwOU3N6GCi(Dl$}dwfkdFJpN_^vB7c-`ILdfG(&_0fejMK*TNlv z7051L&&YQLa4`Dc9)(Iaj0C_N{Pn#@5d?n)!5jU{7>Iwt8z+|&@U+1O1o9YCp!M~M z^gpaRhyMZT7A}PUNn#@49yU76zyJ|nf9ERK@AeBf@}`iAHwbnCL4o^Jeahb zh|ILf#BMT@6?&4ZC;fHgpqfkzBsK8Ae1@EjiHd81Lr4v2p&P=YS`5MlhB0s~tI!_M zlG$3KwIzjy#@J#kiuNS4t=$4gfif^otZkRX7b6I+5K*}jTt^{=^y{RYSCoC z36@a;O;+-wp?GRAv&}PpaM{?hS!LX`VluF}x|ppWKn^L$$^f!Mc|^&sQIh#evN@OR zP9p1)$ke1oa5iCRE*w-H9i7&a3Mqe?<(?KnuNMr~cD+)i%1w%nZ+C=7XiM9nB?Ev8 zd)dQ(w5NTK>Pod)OSYGIBsNrA>uWs-rM?)v#lo7b-pDRM#A2e}HTVo$N2yr@IFI09 zN}mUt9Xj{)s-mb7>*`Wx<+`gPqa#A2!biGW->>P{=t(UPfrCWsVZ&2{%z@bz>6W5Z zr=JZUP+Kr|)41f=@yse)GpI1 zpg;I91)OvXZ$K-G7Sq-4?=HYK{7EUwW=b`&@YhG41Q=j41#6JtG)nl22EU?d;k0mp zL&D>Nk=`I~~&DF;a9XWN%N+NF(mPCo4-}ndP& zdB!Zs*qFg8l8F#!ieqPolMW^6z_@Em!GHmlRF^xUMW+w4SPI=OL6IA5wx9xrN$sz2 z4R(!nA^VR@C9YJt&881&H|q(s)6nZ;wEf%V(7_m`7G=R;?I3<2J^82$eue51Ag;Sv zaEw>W@XB%8912hfoQ#fq==>y=V99Bm-5dDn=j0ZsMs2$`edOMS#WAJz1*EBXLQcrs zdFc~|=V*@W$2T7yUA}o*o^#;T0piBy6>+5#GY2dgpQR{FNS*%B@}l(dEh9^t=T(Pv zhUO0*oi?mCG_#^#^@g#@j=>G(#Vcoyj@aiuv>;rV!Dwsk~ zl#DQBg8=Cmf((*rSPn7+0_1XDkhL=b8iBNPCV+(-^eLbjkT(6>~G(HAb!7?cVchbo3Zaive~RnIXI6`|!xf z@UF#?;o*_r$Gg`?YhD+M9MKy7)7#Ia+HC!xacV06perg&To4p!bA`h^o&^}R0SrPJ zr^mpw8I9ovp)HW_G#CP`8hHQ!p}-B3Ksco1PgGrH4!cgug}@1bUrcBB{=&6|g^Q+C zTU2_Q!^z9sCKq4o$ikt{*%-n2GfSY2>8MpbYBN z=`0EW!3Du;k;CJuH4hto^EK={f)BPwW%P5~bzUfVpUw443K5qL97qzyS8)9#1E(RZ zxb79AYzY(Y~iwrHjkS;)u9`VoF3DJbeu=U0Bhza!LaHL-;v&RTK3Kz}E+oVyI=ec0 zAPwvMOZS)DB6yC4ad>p3O)d{MwgoCWjYcgWti=_2x7NF}zFqY#j&5zbnOlU55vNC` zdLJdn{KJoDmrqbf*SVF>*p#;hkJy zpiUla>C^#;Z{n(vQ^B%nE-oIl1vDi00h@Mo1S*pIjwuHb#O*!UoNlwFuRrke@#D`P zoHKdaqJ=XiEa2xaKV`Y|bwp?=i1^@#m+pP^^nD|0YDQE~s>fL^Wq#n!^3y@OhBA>J zjkZmp2c#?bd*ve%mPb^>lz`;eYE?@fElBKUMUHaN$q^36Ub1q9b1bJzLJ+aC*o372G zjyHzI8*LVg%@`jhB*wNuO>KM_6m`gq21kbsC*wlCqR*yIJMTer&|^tD(H0;CY9Cc^ z=*+0oUG9_)l5#>M#s@14ng3bE-m38jY6fjO^xXs1o5R8q8ZIq4e0oIH;L@=bW$X_- z{y2Vj<(LO%)?I!2#G7wUoISJBnd?X@U-Hn5!+$(Ae(KywgNvGya24~!58$A@Ltqu; zdBPcccu1R?Rm)@sW1w20&;=f3!=b39(<}q4!Ie(Ak{hHgBu==WPsfE|c`jlY%TW)k zJKZ9+7mR{=!}h{DSh?J+w{Y3t92~f~Xh`1bijDU@cW}$Tv~v&a_^RdQv!wAi)5Q-+ zHJQtnHRk3Hc{AZ+)1j9J?;X1F%S{i7xAM80;=fvPrc1?-xMRW=(D^5Mf*Dt0T$?5+ zTH}IO8fP`ijIyw(HfzvTvc_XdPQgYCF*8@qGQvMs*C3IPG6Gb2VVPXF@ZejVl!$Y%kT5{?pw{H=j zTe)r1dhtyX-}>CN4O12$Snb^77C+j$XQVJ^WdA`mmBAb9R<-P(K4DzlzEKD24^NgQ zKD}VWtI>S?wV{B~bG!eC9|S9n0UNpEa_m;EVrvq6m2C7xMZ0VUPAf}_)+R+qCuuo% zSer#=uo+yODkfMK-+_!2^lPxN(6;yD7hspp0vm-dSX(b@QQXHYDBLc~rH!M-_OMfUmV=kM>h<8ifVQA?wXjfq7P&7addJ#~>Cr`l@(0!Bj6PT2Jmp4A z*0zH6FU?PM2wTp7GWEtgsY#ROl-I4AP&Z!uQQWn$b`yDRCvj!$BK)EGM7J7Ouv7eq ze;rnk$xQXQ`L^fO^0buwc6D1#~n>JtuJQU@y~gYUUuc8(wf~(1*=_?#x=jQEU$d(lHB@-Hh%o_nl;7ynn(!y@sfFK zjv1Rik($}p~`Sse0X@gj7u~l!fH%RXS}^r5f3k&NfvUIG@sL~DQ9N1p4)oo&}H$9{iK*}Cs)OBUC)VsC&KIV&()6|I%s+(3#)1FzMsz* z_JL;N@|ewxG7zLmpq1aM4^%=Z*({THs3Cup>V%Z8aL+LC0=oiv?veoo7Chv9;11}) zTd=?D+sfefMRTvsYh5RHwJ&*Q{(9p0QpoN~x{;SVx25%B&5IZ7FE%z3ft-h8F@&i2 zIqv{Y>|}~Ob|(|v#_A2)Rx=ZBFthNA4`>T#4mzEBq0=Ta=)Jf@RaA;XcrrayySVWm zObhKfFQ_bN>;OAP=sCSyTH;;gzkfG>?4)J=H@*7%mHn$XXU31d`1R4jZycNRa9zhv zE`9XzNlQ0O^{hGhrw=<8XU&;YIlN!gh*?kFdh_hK2Vb9jddB+SWdgU_$L!&c@HZGW zMEgPhhPE+`EuhU1*a@1YaZJ-xonZzr4eS6JyR~?={_vFOK_RV;-UR<&5!xh_Z z?c4rI)1Gej>G}t1r(c=d`O3`8VnN&Y+YfZ_*?eY1xWt=iaa3!Fu0(6r&hovvLsQQ$yuU-7y z*`?=a*DX4>CWhS_OBmUU6eU6%0c?I?cK3(AXmQTr2<*`CoQuU-a4dzkPDWT zFCLsZC@tESS5sIrzQ`5cUoVpzqq8b$mg#zCkFZt91iy5Dk1?c8u2dORa=FUD#V}Dy zt=7x|!C#Ds0t#XZUPyl%bzoQq$|o0!T?9R#vUl1}If^FV2AK8Ic0{vW*6n@7^LqXM zQ3qNSsrQYa-16ed_P?xH`Cr>Fim(4;$RZ)L>rF9c?$Zl?^Ql#xH)MRvp4rWZc8TJV zqvAh1ejxuO6UTze%xq(Z^1A@`;Y=b#UI%(&liKtlZEkLBgj(+okI=g#BHVf|C$=px zDqNk)o8vp=nVn|TWvL+T;ZxMl*DFn_IPJrLdlWdi0Vz&8VK6-tgeuk}NOZ}qX*06Tjz~;`w8_NE4bng>ga|@OpIkfUh>xSc8dcnzMOD;^B za&F0*hqGk;c1@ddVD!kn^>cQ+#RDZ%hor@oOfFlvYaGZHalU!P=#RQuejgpqhvf!%S;JrgN1Ku;TWGwfTYeSti zrCD8%R=CNT@o^42Yc%jMki1-LnS$+3svUo~m;~>ib z#E?E%7E0Req4r>VT%0|agKnR&LXTdj4~>YD=_6!%JskO?PL!K);cBWx_0Ss1Us!lA z&LWS6b?c0%XSlt1YGb%8x86<(5VR)5Vx6-WnYrDLnNQ4APhYgT`;2%-%wE1sc8d*L zd3j2|vS+6+-Y5$RPZ&6+uzD)rD!#dB&jVw{9}XNBf84`nup{elUz-2Is+F@RHSAbU z8i}sR)xYXDu)mwZt9TSvX@~5^VvjP~hzkt0r>9&c>n{pIN^}&iQN^fC5iF~U2u|o! z`3y6Z72txEtWv6epvb^oqiSzHWI}_frL$Nh6^br{q-SBl1XV1c(q#D5eG|mLga$`W zIr!qD$T4H{oy5C{nknM#V^ia^a&(i=Op|Y87l$Vp!p0{|yK|*JW6Fl}i@VMb^)8}~ zeB!KGa&&6a<}X{6F=)#z@BTs-0BcHv?vo7{BHOI7SIH(%a=tz~B;Oj6pC4l7iq#oy z^0bh!{C?@3T1TfzuV$5DYExpE)@0I#ampN6^@YS>CEEFZ3NW%zBw8rh0tpW6vuA(l zWmvw`Z@Wx7SUC_Y>@Y-RGGLb}XF>*r3E?SRMog4k@-YKN1JFpUZ~4_zm*2m$Iks~2 zn4y8|WpSr>riQAgbiBAwg3-&JTPb8tO_S%&=NDG`AR#`GnP=7K%(PhXQHi-&>S6^dB+%y8kBR0+jNY8IS=_S}td+;3dyMjVn4lIUzbBJUk(q z%a^wrnNDk(U9MHyldVprRcX~a<=S9S!`7Y4rdTfNVW>YNi32Ez>+4=j_v)qq9I8$N zKJ+34QZ$4F;qXkVS42x<6X7J6!@=kDBxIn26qb!GoL>|as2QGISX);%_8<^HdykQMJ^otnrR5CR&q=A7bgrNmF@^l?Xg^Y056{{7wKkAHV`&+=t^_b*;_fNeSR?YCzh z|Ln8J7oIvjf7yd4@z}5K$GG`I2;@>mFqs~OS>MLOTx_AZ8-dF34hTI5cdBHRwRqjD zAO%~NKc5?W#}_{xrIp!0SpVt=;w%n^9a+q`QqP|F)?cn9a+7yQQ0Wo8op|| zePA@v1(Arq26Q$p?l}Lk_?_4y->%|HVy@0x4LDNU{UjgDf5X_AVdo=+Fq}-dR;4A3 zLd!64C_$82B}7EX1K~vsoxw5&IUk`oA(Y5Vq{m;ceoSvGGm_4U^6%R*jLD%M)mm&2zDV_lau+bA78o;vVP?cF_jxvO@ ziuiboMxz6dmyRk-3Jbi1$j)dPe~mOl-599qKD!FkVX&qUyU}IglVx->jxh_ z`FQ_#f5!&a)nVakb$A$;XlgZDS-qWCh8bl}+$q#$ zB}2bgFM+K>ZPsf?vC!xZh!K&Bl4=&ixv6=d#X&&P>9bn6?^4BY*A0lA&^c=K!3mN1 z&Ensa9*$Z%zou${bzFbl#Kzni#l)Z_$x&0?jfL$Eh{VzU|{|oq;AumHqHl7EcByOXMz;R{l?mCYYT}mI^xf%xjDV zrlk!ssKM1>P;-JSCWf)a;atNMa>3ZC3u2Pxv7L^P&}2tws3VzU!#jgyiMRtSRgZiU z1}2H@6LU%2&`19H9t$1>Ef5XP9b7E95t8+8F*(tiw}9?0S!viF3xd362mtf4YfpbE zzIXJ{N6&^GSUGD}MbykKjwLIfIri9wuU`=lf4u9r4`vrX|LB7gYR?_Gs7)`Oy^24< zh1tuTjzb}JlPl*vdjI6cT%@L_y1(O|7h=Fq?77JCS`FOqfsY#a6b{pY^r zc0Vfye6jEqa^vvi-E#(3&KbUB-;QU$fEgtM?8gf65P8bGtYx%Jh#K_IjnFSzV60Xx z8>9iqUXW{L;5_g_*bR9qNU4(0Mgo@L$>;!$=_K$7bh8PAR9XDk&f~Ym*W_1QJQHHs zC%VRRAD*AKV%mK2CTXrLQ?wQ=J9)%4N4z0!9M&_N_rYo$0+o<34=AbCg_{`06t3f) zY8y=LibAk-8pDDhIt3GpkU9J(_L>`A%RRaT7&P9!_MaP_qlxCxz^O*}oG7`Z+kURZ zQaZ5Ty(XNLwRYK2nXVuyt7q!KKb8^$_Y(gA$U3O%rc`!8p$O%WiC7pJSX~ANFco(6 z7rozD+=dfmZHqb%&tGtG|Dq+&Ex7r3;|q;n@`_XI)}B4Pw)v6HrEjf$N$g(v*6P=9 z!IP6A3eXBs02B2Y2U=BaYK;kAj!1mCj4=bGI8FiR)qF`G9M-9zS|^%*Ju(jzYUI3q z6fSU|Ag{{cP|x%d1slXx4BvL){N~+PcMdLS$tWs$V9d~}!DSQ1bJ?uv%7Ja?ZXCJO zf5szm$yMcCzGM2t*%Jp3od`R-8g%1gm}4wcMfCtrv_csQuQ)5W)o#!#6`b8>)tVJr zv(0AKD)^v?PKR8MdmH2xfxYfGH`N$l!)>PG1JlIN@&<cS!$9CvL9cUjOYsVt1}zQ}&yZ>reky z7(S}B_OR{HoSkO^+SMyRKq}T?ZU(F+kr{st)D2*xOt@B?9PY3<{<-wdwk_ z%TL$sJ-&TS^-h;IaKF5D_WVuy{pQ(EEI!)+xP*Bp&kNUq6NEA~*8z1lLReZ3D+<%G zoRMfa6|dt|I*!w+xNs098s5k=!LY0=%3w~bg_0Mh05y85>GwDmP?bdwxFiV;gjfh# zX%xM*S%iQD@fxiQz&miWQ8X`I_(bQCCq5S~TyRzWQ!^??&l9eTIpl>UV(vPzd-s_? zeSDUL{EJ+_lQHg{hFAVHqZOQ7P#@m?g`k6-iDJqv{gUPYUF6k~jpASr}8BnAneOgbtbK;-rJl0(DR_rFMT zC5J`E6)xSfef9pO53HA{;daK&56H3jOktmL*IIGn=AF~Ia+q-;z%?B5s*&8m-)73D+~7$x&KW6ojKxPPrbJB1Id3 zu+g3bnub+K+30r%wy3=Jfl=FV)WFW!&B(pvj1!iu(twQA zBr;ne_GPErs0dO7G4Rr(L+esVaCE2M$JKy{XcSBexFAg-+5vkrpvyWFeAaMe3^Fz< zFTGAJhKr%c7f1{JL(&_UmR_C0vrV1%-+201>+ADcyN>-^{3wgPSkyYe-cmVn**wl6 z?iF9%4Plc3IkP`F`{0eI#Lk;H#HY`a1?1ScvXWgV7S+w&h*;SS>&ge3GD3{jXk>sh zz{|{U1+EAE-;5HQ^972iV3p9%>(7Sv0#pq#c=<8LOSsiy!~BUm7k_!Gb#>R#$G@7p zkn9ucy8dhbpT^DJLUL=~dgRkbR}=XG)(LQJg6HoOE`hOSWyYYF(_|)WU=U+wgMwHy z!-w#QRt9|#1bSE!$PvN?a%!_l9)LI{IbXaULY$HWS1&uJe^Y$~XgUU6O8`b>!PMOZ zzp-pMIk!-(6x$kKT0Z&2$OW(e^NjfI{y)FG;Pfl(OtNi}xa45RcN+#5FS>Y&W8>{wKvuB&$U*G)arZs`QL2L%~|VIKN}1|JVW-VMCmPcrqLmJ<#}lt(kb z@p?#V{jBpdrk$Hse}3A`ve0cGZ>Sbu6(3>8G>xrVyQX?<6ZhHNCmUv+n^J#frn~Xe zXYw}fW}RgEgbiD#j#<4KptKL>xd-M6xfRR+kA~xwOlt%WuNZ5q7HnRasL~h|#MwKI zGX5Z>CV)}F~_Av&$GRTY)q=8kVm(5l=C32v2^&ycrCHB{WF5h*VAkE}#uaQ4J{!g!W06m&x@k%Ii3Rv}tK4Aba}Jv=Pn;>xX7q z!cv^>%4N;tDz=W8d~xxJP2mY^hu?qYfms8GOn89%Tfx%Omv+rN92;y-(cQ;yuBqFy z?8U`9K3g}+GpPLOW4Ax!Lq{yTZ{8i683KM!Ay9aT?#(Dqd_*gwZM6n&RR)AYTOXBG z$yk+OiE%NqRv0D(aH>$=sD$cZq&p+sDWp4pijyQME|s!yv|hL@y^v|JV6m>xyadz- zm#4IR;%wjW%{Rx7lZfa3((&#`8}~FmH-G*!i`k>w7A$JpJ8MQenY8&<&0f-3Bpy3E zk8Ca$?>koi--{bAO`mqIvF^o!{%_0yWJ7;FuEqiT77hN*Jf^{uoz}lFye3iLH!P2*@#UaiKCdG zFsZd}(PLA$OjC>gv)7TbnzLnNN%XXjtEVil zeQ;7elyYCnP5f=^w1+3GnNoFN?4$>ZMjuI!Z!aIUcnX(P-L$x}plv{Znil~{F#IO~ zCl}ziS>GC&)G9>6D;mILWrA9xt-;{^X@*d2P+X)b7+#E`Gfqa(2M8QmB2OyBBx?^< zLy!sx5=oS$rMffRHZW;oeJk`~H{v6| znW9aZOWY+BmgW>qe{}k~zi#MyTU>d993jrBr|U=OS+YZ7=j1Fqv21BoMa@80{(#7a z0VB3n?EL3eac@^Qa2>z}{wA!^2~=F+F+{ftrq&c8g<(S!jjdJAd9``?0-oV=jw+3nNhJ;JZ(xQq00|+0@u0PiqN~WBMFo?$L(Ioim z;zz`fkFcLTLdL8RcaVi$;{y%kpCdnNeoZ_#a$oNMkPMV)%Rmn(6b4amEaaI&uoHZ- ztujT2MrP{p3I^B;v0lI)p{6YL${JVGu+HL{wr~sb7S4ach&JKQ_8c(Xd)flX7O^!%r zTII%M4is8BmuwVVv8_6Vqth5{x2vo+aDgOrsH}VkC(#9@qQdMjTOH>qv3=0)s1Ze( z1h9k*&|0;2$+$pl$g~?&2Ty(Um4B$7};L*4eTA}y5i|1V`hR@4*l57B#CLR3W2Btqm z`}Dy9PG_(IUPKF2lH7s5H=oB8qg`Gi@va#Eg2X6DU8Jd}`7+5om-xS=*aGGAC=4VO z-);BTH-ztQfBNEYOBd|iw{t=1mCj-F-5Z(?%$v2f_5CfM5Od2vPT#kndOgqIeq&&= ztE4#9RWhkz$mF7wf)PMPj1^kyXoVl|G3fi`xPlM1xYCm_Nlb8L8@g&h(-nia+iuVBMQr6Dyn*asdmTDo7({Lt{?PT^pCOSyTkuYIX;_Zs&1^GN@bUCYIr#PCpi=fFdoR%~D|?i9Zl zzgY0j?sXRieZ4T&_hnxoq^{o0st zvnIr>VHk}$gwG6UO^UE~hVq@Mq5959JCJ2as4S=>&K!dK@U}M}2&(bk?z0uX%t$W= z!nwB5jwl}a1TTpsFpaSm&9^T=caSx}J8Y0Mq}4O_bY5?eEtNkYe)QN|;)|yblZcl{ zAW5kmu^{W@Hz(P%jiajWKXXYu|E}0A?s@JlvW;jzB~xDs;=&0>cK!JWF-p8Ho)^RZ zN#>9djoU_wL%n<1_3+3qKfEdKdzM()D6)<$g!d3pOcGz0xR1QlOPBe~N>53CYcl6( z&B@J?g||j%RjrofoCspD==Bx@iO5Nod-}B|7`4EjJ7v(KCBC&h|gNoQ~+e4w)tZTCYbq9 zBLh%{Pn}n}B;8RlYS7+Cb5f6q&&9d#A6tKN@JKJtkjH(PBHl#wen?sDDH`VZ!>Rhm zbKCc1Ul>D}Bkf`>*}Hy?b&EeHb+vf$ryG&U$I0pdVj8FqOaV9BtAk>{Yd9&k( zodHQ(O7>lOa@Q+wK0(T!V+VDmPc1E5mY`fQr(_~-H-Gp(@y^La_fv;{^AfR>h~JZm z&)sp3UZ0nG-%-c}hBLUk8QJGB`vjl@53}5p6i-^&xK}q-JAeSd^ULF(r)b6_d)zhEZaD}LL%ia*j+<7Il_|4xvN@O=?l$1=LG^Biz zkoMz`MF3(ykH3z?jO+W6x9_SupRRy3^vhZ&C+w`)~0TG9Pi`7nSSYWR3A=`K%&r`2XK1r)||oWsGzm|F7&~+HjgLRQP63Zbp{m1$Aj-JyCc|I)}gjCsi5`)n}-*0 zOX>KTpRi4d$w*?4%65ntg6u=^La4#Z|NX>WmcwWGc;!7bqLfTmOm^-|MGhS;F#-hu zq-LzFI5~IoqG3g|mTy_n+?m!{erz*v-^RJ@^?6?voSfYF^xU!mcY>x;{yVL*oBc7y zR+2g;VPH~m_kx#SF3W(7r+5DH^nIIl{{FN1z?L^XkU-gT&9s)kcN`VpAI1Kj64o>S zLka7Ed-b%%d;Ytuc^v2pjbKfUhb%n}Hp^ULXQ*ssfS3^i4)?7 zCr^qWp5Vu?{jYV+AFgToaNW9(*Py<-xchV2Vwg`TlYbFnk!ElxLiVUtX0}?*GA^9@ zhys-im~UoaN^;yrFifS&BrmCZ9ad31)XoZ!;tL5!zUj)H(ZJoJxy28QUmPXrQyzWl z88Z2!kIAH`pE^64q#YH%;@z#^ZV|tIcI9l6^~e>He)>`IjmwXSFU?x{EYWTG7Az~M z+k?dY0sNmKuAjh^N)aNx5TM)|8M9RBH)y1Q(D(;v6D|BzNvTC}eG$fBw(!$C2B@SOO~N$yhXS2ZwZ`{{t063UDM1 z5G~+k_u0)-w3$Xjz=Pwp1~GEr=*gDvEdxO7nR{c&%d6h|>$qvBMvYuozHiy(%gb60 zG_7r)aPsrU$7T+$7(S7Vo^)!;3#-OgWY_0RT72J}F%|O`*FP}k;JCUC$q5HwPZojC z{RsaxSQY8abWf&vtHz)Y-^vASbtEK)=wmpCM$b7C6CIphBlJtz8kd+L>kJBs4YDN! zB?K9mgSKGM2q;gGd^+%sYExgn>QjPo$-n}<(GZl4hG z=K8JM>P&Ohb5X{T#;VZ5;Os?tFmr(gwH?>Eh3r?s7fvF&a0O7G*-_zWjTHODSz%f( zd@BiNx%fbD7&}xE$qo%=M=IE6Ak;pya{v+SA8HHZ2KXxyaLCJ*1)T$a3Z8UOr7+oe zc7$W!AEYJYDbju-llo{84K^>< zNSGA7Y}VD7xZHjH-Fxb)!;*t!PC|~aPe8c9D(;;W^9>KL;MQcyVc?@0OxWCJh?9a8>6zGBc* z?gWC-?iInjAs~7%y=WNVZN<>8&FE9Q&>jcA!0E%Do*MtDYd&a z=-i6fbEYOb#m)r%%2Sq-$(=gG!S`b*aIX~?m-qp z;$ekFgi57^B*TL7D?+DW9=zZMMv;;yvw1N^J6JZ3dT-#$<4PAh%VN1>r(kIBuve$U zfR~Y0BA%8`N&xC$HxymG$;#inN4i%|J$}df$znsv_RZG%_ycvVTU~5_UhcfrDZFRombz?-!(t8F>jp4Cn7CkQccUeJ@*Q2)68WPjCwD1RCY|+0$R?0$+g1G ze28(UU}gZ^!dWHqQ6Z%A5wSH;1k!&_AQB33n7!w`qr%4?>VT;LSWl1M1Y5R1Yye)& zav&>d^+Z#d-M^--9a2r!48Og&XFv7!{{7Tj`xe&~XU|yt;gZE4E&lKt`(sqczEj+>l7dr%-nZkXI| z2M?nTp`;B5?r6b;wKs=jqkgsRpnkJ$M=sm9Bj+6l7F=s=cyU49^NkHJ)Ul@TrM}s@ z8%g%=LDHci>g%EAm)qLzG_}0k(tHQg>axef93`AbMVQQ?)HJ15R>y z^dbw#3y7`94C}-^;NiG}p$+8NbBb}Nf!aXi(S^RF*;uCT1?y#K`NHCTBmg>+_8+yW z*?BvtA9qtFXn#UB@@l@(kk`GWpd`7q;&|oBDhT=>MlM@f(|1ze?A@=dL=jDQ+F(vz zS6b7;s^fDiPtCDW-(fsIzR%tVCyxMIxWlaW^7a;c4EO~Ph)H1->1PlVe$YrL_9K(x z1{`B-0*rgJNaO7#gq5Rgu0Z4Er4f++u;8}mG*=F(+n#d-G-LWRlsclsL54Asdz7=r zh;(2$JOKyWAokD!cnnapZbuX@MYM}`(0A|?>`Q>GH*q3BxZ_eqDSKbug84H}Zz$Mb zRxnuF{KJI!ImfF);^st$=KIW#XxO^7X7%G84H+@cy5Z?JrzafCJy@$X&PoRxCu7>; zarM)uJzsaVI!r$!WnR?yHMLb+c2PfX`D}Zx18Z_>R%LW5_*!+3|H&C(zX*OJ_8FQW zD=;9`=`_j#z0*KAXFwC`E)=Wu{BVs>AFk1a>xJy3V5_?h0;rKTF<+nxm3w;&0&H?F z)Cu?4vyE8P0RG{ZosXUI5o(1LQ+qT=vhO?#In+8UDiP>z8a?31(+T`mEB-tYY?y z&faP5l`CG$(9Vuox%W_SeYy>$S8v!n_i*Mc-{hg$apSzXv-GA|zmkNI;p?%vISEk^ z5hH<;KH~fpC@Bi;gYm?mc_LwrW?P-&tzjCq+Dk4^hI!G!t^>(lRzFs>!6lJ&3X66M zONK4DVNTJU%yCxtWLKL!(O_h`1PAkCZAPwIqY){AmeRr4JuQ;cnOeKvVFWe(l?LI{ z(Na3A!uYAU4wD&LFrt2Fi{+WDimtx-zbkJaZXWsudGjp=QRDr>ijoTVwaq&|m)n&(UG(9WEw-lk2% z<8BUShGZ`#+waeAw+?RC4b9CgsZ+Rq_WiEry}RT`A52P6#p##%Y|L&ywvl=;#CNQ* z^qoA}9Fw!Pq&kUu%Pl`YXxstdS&%lIR9Y7L6P1?;A*eTz7ueU%RvzIc+Dw6!=o-kX(QZiS3H<=^kgs4uR8Sgfdf*Kw^MS0u(bC2KK=L zWZIZw?;6goI#sn=|9)RqvT34nP585m`wm-^`jYz=m$1%MJX?9L%4=3!X7ZHu&@j)b zDHScdkFVaD;T`E^ZYb`x>&#SIN`w=IXMBA%P-fU?hS5Om0gYZm5E?yc4DlFn4jq*G zBAcJwPYMq|(B_7#c6v_n8I?-w1RMr{Um!2-1|S_{17ZeIpdD+Bh(^&tV*?`rLT&me zdo&zNO2Epy71_I~pLXu2e%fBNzO-`Py2_Gde#2kd>Tb4vhb}z&HrdaR;*=a86wBt- zytraF_5HpBNONKcsR#Bq)gMgIn!Dd=Yq`~c+z;(}Oax@kn3gq}xi8p{M?orv6Ak7B z8DxFK-7L^d5KM-v2zj_l6)q>((4(rB%R&c1{_(lN-fnCG|C-<@0ZS&}^93@}10aFR z)O$|hpe#0TXxf8$D@^zBSTE_xYuGBI5&87>M|7mU>J@Avn8&Zd9ut6poi@C2!n~;F z{oNZj%-hkzUoyMI)Kata*$@31ig%T;YN`D*1G;2Bb$WdYn>TO5%!t|b6{Vf&N@>js zzvleUPv=Zqe4uD|$?%aBe|L|d0Bj|dLRI3|Ko{+urKwd8>{23ZG0+ zv$=0`&OjVr4Hl7?dO%1FD1;8s@hc>?Y>SJ^=FZ~{I?B~V5I_#!B9SS zA22_tA$+Zdq$??O!+atXa^HS1IJd043L>WGub;nh78N{(5H$;-{ilwfJf55}F@EFn zb!)AxohS_@Q#YxL!?Rgy5a-uFsK>*&U$^q{7d#Q1(hI6K)NZa`7M9Y&b!BlO#KCf9 z`#4*~q}L!z?f_+Ku5KeivnQSes6Ol_gENdn$f77FMJIX6aKq6rp6JoLbMyar=bb;Q zdbf4A???Kx$C2mm{D~VkRvbd^TaW@}LqPqju@<*un`RA!aAFrm~g;*+c zP9>Z(1m{E)at&0Mh6E095mzo?0cHepcBuP+r$*r*vgy2ea)m-5Cqv-iK(Mhev;~)I zjB$XVW@98I{?yU!;cpCC`yFuRQ7U8NcsSt2<0*#=r%he3sBzZ*S&f}FRi(DF1vj6s z+oIpe zy7t*1wJ{%4=`4tP_3&PzZI@bej6`g*@CZw|PUjY6@li!OlDu$(kC+$k;}gykvya&w^buf;aFAKvB@` z??6y&Xbl*HJH~7oEi=UCjR@4No(pdSeid=U7rnpo=sWMe)qUb9_0y`ly3LJC&Y<#- zho4(myr{#rTXppE>G!%e&75;+de-IBi>td2v({XouAM@j_di4ncIEA)zPoUqy0I(n zAX@Uw=cwS;s^YD=6?O3g$M&^3^)s=43NP>+7k7_5}Uib#?z+f(IwlF zY7Hi4NHAewfFOszjqxfWWkQG18Jn01_i*$ugThO93O&q<;)PIyw%l3iBn1og(-)PeImkl^eKZ~xIWXLfCK$KfIC;1)!Ff9b8` zbC+y+eE10U&C4wxqi2xgk7)k&NeUCxL~K9@(OVQnMNqF&Z@|E6OyZam21t>UQ)H+v#^x^I@sbFI%F8Pf z%HX@tD1#!gKgZA-W;5V3V6?F+fhIMqEU}o7(cxIE66`!h|KTHaV?kC@ABBku{!U9a zEhFM^LW-7kEO$5A4=I_s8!Gdc26B9t7Zulsb9G(iD52}~!BzE37oIs*m@_kXUrzDt zynUI|Bc_Hf@#u$S-B&29rxhkGaX>AO$*dqL5EAxySox`*2@L`DWyLayJs~12FInm%D z(K3A4h7!ZKePX&qJvY$|pP#xtRJ#WiGz|lga^H zBlwi$wR6MM!k1P)kb`B7=$=U0bYvK1L==Npgt>=yHAiHz8y3aaD~~Q%dF}h@0hZl5h$-4f;%<|dsmB}*8)-}iGwob^~9~8E>Yx}G^)|$)I z^%F?`*?m+$H2JqLXeRgw!29-DYSk*!HnjWl-_gWl>w0?EtcW{YGP_pgHIRI9YyG{3 zTI&AA3-4$3QSZD??M7mN@Uq9ha)QX8X=@8=d!Dkk2Avt}@qd_FbaE2sY4F|HtaomI z^2zO+_wV0)hWcUaW+Z<0IFfAIO8v0n`jKZ}{L7Ie*Ee>3y=Ch+OS`__y5*~Gj9vWM z`{1*KU;|Xy6(SfxfDAfbmYL-d5{uG5f{2hQm9hwe9jmc8%OPABdJ!!#3;m;Pq(3|k z-eBeH2I)z2SSi@6+{Tz>bUioYupql<&!|p&DHy0nrYZz0Qaa2RVbbe#rZIJ^EdQ3G z(uH4LzwqS{3cm3I3O;!EdTo8jM+5Iue)dq2%F&TJt2%>Pm){QrQG!7u!Lx?J|SAKk4_*-T&8n@wmv4`SmW3cm~ zo_5rQXZqb}N(PbV$Jn`aMunwmYf33~=eg8PTxz*6H2mhC^T(=+SwwMVw9$}Eu4g5M zgoo>4dd2j#w1UdgEl1E?Z$pTWSBQbN?aYx0>B%`K2B}@P6DPN`cRZ{wE-x=eGp83# zN=lkEqiJ%p8`RB>n^BlDIsa5rkdIGbppQ?GoqC$de}a7(OEg{~!hw2V5gt%an8{P= z;A(MqFp2z3B6oL@$&Vecv5;aYH;{YVxCWaa;qTzd_4oAmB%Hb2NT4cvap9902~gz> z@?b12jfEc$u3-xdYeg*iX*)A2ngJQidBu$QIN-WP8ixY#};XWFwfCg(3S@woLfirYG-19=1lnqr)h>f29{ys2e=C-u!IuTfw7 zZb?9<4fl4eU%%tEEhk%8dGlIklrBOsEO>iNOrU=P!&TpNvN+3#c!(JFUBdiyHrd~z zPrnQRawY^oWKts5nUEywoe9EOpDf{IMp(RLLP#PlF?%?Svyqw*q0-qQgw#8b4y01g zjg1;q%E9j*sV$~!t#FVPR0+h|7|rpN0YSqGGu{(I11OAyH|SZf03sfK1yrXmz{x%? znadMEP!1FiL>8bDp9UBWODXH_g)I#|?KAQl`QEmkRWo8w<)u7(!1%%U8je3@ge?+o6bjtmL$3alF=~#|8z&#Rdk((GfTXnyJKOqL_H*1tI|Tf@7Ku zz|<3Jpf=HXxn8Ls9~wGduVf2Lc^2%Yf(Xl>vMMPdKZ%>4l$6gUONEwLXOw00N~59d z8xfo^4Us8&uV7yaDBp9xjq0dv^7d{VFuU>*thj)C+joUyLLWkXCQ z2@Q29nfb3k9SPF>FLXeDk9muD4D?6mhygOlQvR;B{{ip+ft`~#6I%)^o9^3@LAfUQ z`^U%o2gI`z-2$4X{uk&^{_p6zgvc2QB}J`0kA5FP59^A5e1bk8J|3jOl*hla4{>TB zFCGaqyd2~fj^CxhNdrw^?kva? z@*&|bu*02JCODr=hl?240<7T$hSlM1fI#K|SZEQp>wK+#j50yz z##@ivI&K?(BqQv2<~zZeeqrn5zeJp+-)_4@J?N;J(b`&E9!~=(F!oa9^;3IK>b&=$ zhP9eYx$s?)RRlUEESq(DqtjEWUc2U5|3RL62aL?=(BhEE1g`mmBP2@ruHv zs7_B_73%4gF7Zka4Ndowurq@#M1su_6T#I*z(bA$Se%ZLy8-RNZg#mlR~_&~pD;l{ z%f-8_>GIK(C>re(o9h6~|}nucH1|IyE~aGvE-KHa>R-NXmv8B`uwm-8XB{3xRQQ zfdR2`=+PgDXst5MNv5b@D_;vQD`u~MSXsI?|0NWC=xX|^%H3No9=}}8Dwxw+P_}T{ zchR)ijMwWEX>IZwX9q}4T)VXN65#}JQ;yeLbSbMi9!6rk&d5=X*Ks(y@nlZ8Ma6J2 z%iR_|(Z*K?6RhZ9zK#{m=SQ}_$=>H)uY03ivWYYCx36A|psw`+@-$?+Y>yAn$H)2W6Oo+LR#?=!c+MNt@A{1FG=s6APs#fE_J5I` zcVewwn%KNak(r720^)&1V@GLI2^*135CP~gJ92#j#TJp;qKUxjD20dzI4gohnv~$+ z6pe_T9%vzAY+N5QI4U%hgo?T)X7?z$%H|-mxjMij(#SQ2vs3YNc`eIl4_GD&J9oC(^`Da?Jv;Pz}Psf$U)eR>%*xo)G5cK2&bE>|TA6brSn>KN+PochK_;{JLC)BV0Q;P65sQ74 z7H48m#&sLSuiq*6wDuBUp*IyUn9#cJG z!u;a>^{rRt4I$x)1IYcz@J0_ktVh@B92%;TV(Xks^)*)-x1V*2%+9KwpPAE>+5GOB zt%$c_4fS9xwQi2yL#fw!Ds@=S0xsB7xm93hh7(0E5TS5+66Q|yL92!XfIt&KNCQY| zK!B7ajXoBkSQ*R>CzMix%XN`SdA_4FJ)xisivj$MI^ZAyM(ia>nvJRtEDCf{ZV0Mw zWH9lZHjXeb#;9g8R;QbjHD%6%mzM5*Xhq95-HF>^C}~|?y|zGK{anqgb@u!2(ItgU zshBr$#>VMgUu{G|FzX(1cSd&}vMelG-`SX3GE_1D$!($Y0w}MMdz46r?t~IzrCFO} z(dTJ+mSo=yX((GCVwvD-iP9wNlP5r~GHODyo-?xus~ay*$M|%p!3bpA#swDGd_y%b zZY3ko+gmZo7Rb#7o<65gL=4(HAL(cwbREm+ig94$r@Gcg3>vU~7}X2Xk)B)y%y1#TJ6)x(ZxpV&X` zaOPAshKNGER0jXTmW{8ky+++S-c#S+UY(g$9Um4ksRhc6S{yzNYSX^K!;KxlQ5<$aHBdk|oLT4WcR4hHyvivNX zT#`)Uld0T+NO6QFGBryBF^{ZN_Vf^oBExYSksYH7;725h*=~*`5fGz=g=MfKj&##< z!v@_I=8-JH6D>u@J{SreL!+2OF&;(?QQFL;!Hxyk@lP0Fzis-o8Fk$|JKT5~xlE#H5&a@+dC72W^Z5TH>GNB>Av>|f3rTM{o2R>aD zoEI9I61wl?@}bCdZSA4Gm)>rj+0uBUVSZ+2HFbVUu(yvMb&dj^jk%qM`FJ81=zkvZ z+$EwAEju3_A_Y$GE96q$JVTLz0*%@$h8_j)!)NP{qVR zd+vt83cwz~{uEy9@&nL;4gZnM9^i-h7g(Iod;>fKz86l(GP-Om3K;JBAL#RYB6G1b z5oJW92qPK1;s0a`X^_hJPr-+oZNyZxBa$v-vhy3Z^~RtFBL+|c8&mAc zgTrGC8!RZLBNI6FSX$z^MKr^#%*Z#|zaA?KSrO3%?gn$-ro3YF>_rf@FO993vav9# z<&B|+`VFOrP(#MrLq*9d{|RLezpw85Y}wA*#%(J;TiW(YJFw$V5gHg@F~-TM!9HpJ+c=FC`f*_t}p%b@ZJ^)0tje zvk9?x??G{=F>?;TFDa0PMnwc>v5LoFv2yrZ&NlV|i2q>Qvj0rHml|{BX$78+1Wunp zYYhiID_7I`C6qGzf=^n1&pXYLI+mrVKLr9L#iZ$T12S{lvp> z0sO#NxG{t;qmYf=jIH0D4_Lm$thRH zXtlTEgGQmb07H>>BO~n7g_w8-V-$|?0e%k+W;(70X(t-O3`9-f9*vY8nV4P=fG_MB z!gb3S%mDsT6@@W?zhlB0CL9jN*olHdBo3g6MoKgqgB8{T)td>2w<%&GXU?CHS>s-u zer5Tpq}g@HUtqZ`$@5Gw=kL?FN@6D#Mb9XY4R)zW21Xd)@_I+f!K$YK<$5)W&$0z7KJ^hBuMo^fn%>3ao0o`kVtW-uV%~-G?*GDJyDo6>fnVY|P z+CQQ@nwG3hE`rVFzJcoY&bS6;+7!$j4c8kRPn5+x6so-a3`z62imuFY)KA&P8Bspa zHy)s4U3`LX+JfbtWAA}_^JJpZ?7*^w6Gpwo1;$8%yK736NKEQ*ql?MpVhm@eh%D+j zn?xm(x#9>ZRQoE7gfH~`8V2o?h;Go9JaEYvju@3%7-zr`ux*CMiY^KUzQM*B=&>@cK_B_cD5t`RSg<{>ooOCuRat5>LkiM@GDXce-t)Wf~wR-%{O2A`~gN_J0$Mc|?$ zNEd=|AxUosi_pap_oS$}Oh*d6cOrI-=KvxKAT7f)-Ebb3rga{z27s(-(NFNcet?`x z6QfR*kBha%<{m(j`mFZMe(I-_iZ9WH=eEL@z*u?K$<*xJFUsQDi&j$Kud~5$TibRx zTl?c)SlPB6ri8?pp(01?=j`Lk=Sw{;t{j_>qr0O!A%bEt?Z{RMFh*#4fYAfM+fZGF zD^YbU>|E1{Fj@*?$p_!r84?#Mh{?I??AiSVEyc>(izz9kix$>Q`=xf=zAxuLcQ0mE zWyMO*C6HDbDvVwgFVDL@p>X!P=KghE+pML#Ev01?tSw?rO1=dr4F}pbdczQCp4<}T z&nBcnJOL3DL!hreVEzKe#+d4temdm&V`Ex`>Y$LZY*qXHC5lp zLGvU%TL0j!8PjIUp^$>cP!HT&19O5rJS}Y4`{CmwV3EEK7Kz&C;{)T{%0_(J(jzokfkb|cS(h*BUnk6CB#txvS2@FTtl*=C?&xK)Isgu;#>k3dr z?;5>$V7=KbkaZaSrC^GuHZXkyb%Z+hOVG*)Bu3q6>CyUGGXi!epWMaS$-&ucOiPbB z$H8HaGkdaOY`PRC%)(YHsa!DNA{ykurV=(G;E`;6R%V7IEn6^703{e7Sf=x zFj8D5l7cA&OSYmFKU|-*?H?Hjdzv>+AP?{zs%sP0CpdAA55F_)u(qQD*^qDkE*LjZ zAlXU1@N*6dMk(}}euIjE?L;tc!Jd47DAr~V`pXqI+;7Cx zpTJ@0tSFp|wzC<65aFX>Ee~_#M#l34MD6;AE;oil!yI(v>9Xm^ov~|6X3c8oYBqm( zV%kt~&h|NTJIZDcE-8pw^+U_^)Mw|s*;Pl{nT-_;W5b-9XXq?rH^Z_UQm=! z6PcTpH!r2(!?i!5pHVB^qw?`@oH+nn9ZWrSQ6Fuh3;ZF=P3lFo{3#P`vRYf8(XAZCF z_xBsOr8_DtwR7h$TBls?Iq$;8`W<;m&2f>zz58c{I|2%h4j-g`3kZ}4|A;0JZ0MoB zqOOJ_B~n=CoSIin{XuoXttS>Qe)d?$(qrgE+iM+*?zMKj(b9UaqxIxiebtjYpS0y|oP+r#=C%KKJ4?rW!?z!H;1OFgxKY&HfFq z*KW&RU9!@))n)yUt@XE;O&!R7=@f}4Qg*>7;M;mbeUXwl?Cq`ga&%+EbVIq-QRqf` zu|3^jm!bq_P>5|I~^SAKYD_t`l!GCEeZzltG)C?1ALH=OrF`n>68 zm8()IKu{^9_O=l2R-Pvy2{Bl*IYIYu*C}%BacTDlPWv{q`4l$+0lE-x4B_Cyen!3l z^q{AN2W4;PoVcxTE^fKo(Rbgx+;3xX*R!XW6|U4-0wab$9j4HqsN-Hs%d3m5of$Lc zoatG5xI8arO7t+U_J*^v`EXV|9jN52#Oll9T!wtBf$#^%&Be*r;N)cRC8JbU&+yAI z1%(Cq{-tI|nAGU$$!C$SF#oFSjGVB6s$*6?Kwt!mXN+!I;o)zXc?ue)cnfY~cLiVz z;D69Uq;729la<{ub$au%S!KPgZ}lv{+0bySe?3hm#TMHj6*Q9AWPOt3*ppwpqOY{` zwYIh&)>9qper&6IX<7bqpdeIp@&)S6k+h|qYx$h7VdhgjQGbaDL%kOWC#yd+3_?#6 zIIGe8Xu@9^9j){y*oj)J2wd2uW_budBo^jMkfE^NI4lGy;jaR3o6HZ>INonV-?uch z6kp$N!Y}}!%V;qaXyg1zm=u_gMk+MGfXEc#5(XNruq2Y^MLov(Q*|+}%S&eV#{@<_ zyftvErupWw_y5H(4AO4e66fdWG_$vh&dmn+$Fmlf_w~=5nySh)?Y>;|-YQn!z$bOo zPal>Km0UeN`~`JlR@c8&2qG2FeT9D42(8sE0-i{PJP<20 zC%#+}p@?9MZQdcHyv?u~7R1onjI9RdrVxD`q1n-vNf5kr#{%4!spA`okAdc3hw;p{ zSySf4siM-;B0aGL4C$N*^04ELg&jn zvKbSnHZ21Y*>q=7Wb3@8D_5EVgB=vw2{f*Mq9ruU1}Da!^RU7oRPeQX&8}V~;pIh; zq)u%W5h|eKCFdO+T)8%>7EeL9Q!|K)F>RC#ULg-{S0rF@VtK*X{UcZ6;dyT0__7X6 zYdW#Ga>!%x&br)%eT&{`1-ZVnjk;Md&ap*VuR2%PeX?z)gRMS$rz-uA4NbS&K)`RH zLWk3<*y}qWDDs3enO-diPJk48v8?tQrc|9`j(K;|HW_v>VbsLV9{C zT--Rqu?*SL0Ki}VgI0TIIyw5qZQV%S-)1e|IAL4e>+5@OG}qj=+%wPt!>lY8*K=kM@g!)qI3({%?N;ermbh`{9pU zsh3yU5bRDzFTqqBns53)um9yESnJKO4XVeSQUwzM4s*VO&9fl@Vk?is<2Vr3wH19pHo$8 zc;nM?ol80!dpeRjhjJ30$9INarby1`pyh+lJ6fHbB%}xreT5N4sOtiWkL1K;8sSJ- z`r~0ca3Uizk_>OqGjqTrC9BZ4hu-iHUUIi_>(QlY$zO9mAMWMXTy3BN(4nqNUc<=@ zgxOa3GzaJkabO_KbAlDGuoaEq@Da&_!S^(rA-PE}3B^-%X=9L)K=cPQutrrZ)fp5V zfMGq4^ZA3<;n7Px5B_T8zB(z-SB{qu2W3b z7j6Wg#_WPW1pW#JJ2WTTl^8%8I!}zq9$*As5t5&Dbj-cnaqpi$zl;Q1sfyJ*53Vt{ zr;~MSsiDPZ%6_lBqTjaZ-tfb z<~az1xk#zaiN{RwdHP70pYfsSkxnBqPtdYPD5oAV8Px2;j;+)$cYgZky+v2%c2GZN zEHtkL9(K#E5Mnq62H4vFW3 z!Ju-21>iZyk@M_B_5kxEY9FXkjeE|KdM@iQH5q+AJOw>N1p@|-uI1#}p%25`==z~T zbASiz6DA$30lonep^_V*)CUCUm1MM6s8uF}smg?hgzFLvV`?HWLYNV}7!kBtH)g~D zT{A-i0`ndKgAvlBb>rChfI2t)RW_#5KyMlyLJ3wCSv;wzuDq%Q=m3YKF=R8a}Q(J#0De-nIW2ZOWHYdK+RChM9CU9vsnChKb-9c3k&yE=G*kkyJ zjR3pY+A1;|T%7fUm#-BnYsGHPYSI}L65&in862!qx9~x++5_^~K{gK_;q0u(S7v&` z0qJmY05y;x1MPpm^r(u$L0CpXF?SwSQw&tb-kJ4ttoitoj$_Huv$IRM-W#_HPLK^J z2qy9`;VJ26L68Hfbs$wL(m~5M_+v5V3TAB=_`RNBA8?&jDrYV!_J;7e-)I2B9=-WD z(+&c$Kw|a;kX;XAkqZl5ppykg3F!4wpeJa9u{WtjuwnwjCPgMq+El;m%EEX1V3{He z&$%&Sin46p#*cca{VR9Q%Zp?E;xtYlkyDgBZ}aOT`03te7ZuavP~i)L$RK@5rK;$M@Wq} z@357C4Zaax$KOW)5n^8jD2v(d1wg>t;c;0rjy*zl40|oGP>V4am_^QDU|@X(G88sL zfsUrFMqCKZ>`}#WolRA93Vg>WEtnTpRy57mC%8gW6sip_nW{5PXi0A^uBe|=yP+ne zH>J9*zc4aCuh0}dv$)LEzEBs%QfWL*+5X&kaZ}yHy-h-yzrsrq<3nB@$cPCvwoK2z z>Q>epKcluV2Mr&#EsL9Avp!O%*TS3N*W6lmT5+oDqxXINr~1uyvePox3nq(v_Zqi^y2{T5Eh~{>J%-e}8V|u88K_8(clq zKh&E=d`m=(l?(;f00dM7>F)$nwfoO|I>D3dkF~PIU8_*2q682#B%|WvMO<4H-t^LS zR-|yk-J|pvG5WGNYUFkUzKrNmFsm6d8V!PhBE{;8kzHUh0BJy#yc>a~8eQ7J*f#j) zbj>o>ytK^&?<05Tn)n52=fC{f<67nPh3yHO&maPM9oafmbadbT3q>`RhJ{N)HXgjV zd&`*_X|YpSy4cC_X&U zIV5TN#1MiAnK(U(QvzNH>?$%5IVoXcy-l8xz!yjQdhw^qQ@mhaVdM;33Kv&%osCq4 z7@oin%nmwEP8T!b)Et2FsScX4ki<+$2hTx5fu_SYA(SM*pA6i_6wETF!ib3g3S$K5 zSd@)PdE?R&(3@jDboL)6?UH}3J$`}#EOq8IjN)P=mcobbK13Y?x^Y;gh+MK(6Gq@ zz$E7ZaZ^?d^%8aOIp}sgzUZyaGw-Lhr6w0m4%d%k=$6wD@G(KvEkMW<^_@%f7Ybtx zSco~&gzI8VbTk=_CdWkfI5{Nh`_1kevrR6v`OD$)7D#L+B2dST2Vr*FTLH6Dx=xKu zvw-1dSftrw001Dnc|z+9n(;A&Xa&LWG*isYD29I%aCZ5I_e4Ie4%p9C&FODy>hcfM z&Yl`nls85Vtgl(nSJRfK4+#i=bj~jN-RtH&tgURQE+s$ANXsn4Qh&I4RP??E+HN_QY7~o|pdKz2Ah$xU8kM1H0DLfX?hQFIX1SeDlSo#<(HQ*@;cl({w)3In8_Osh`p^Kt)Ex z$D-ZaTG#O$W3@r)lj6#||9<7tpUdLM@99Uu)>qdqh}9-e4eJEH`x^M}D9{yDg@f>YTKs=#z(_#l+>!u{Q>0tNun|-2*)FdxkaE!?2>Z1!bbCPty zt{jeQu#Roy+maa9%g7jqb~xdDAZ9-tsd!5A(X~7HRs18nz#FN1hcL4mf@ve^ZcKFl z2}l4U>``H?WMhO3#2ovmNxN6GW>!sq)a(qD;P(C6a~D^wKb#Ww1ddBrw|}tW6YAkd z1v5WAzpr|3B`wSL=g(>=j+zm%>h$`x7nam!&U^yDLxT(U&iMIN6jH6T7Tc~AgZKij z>?6|2Enrs&z~_T3ILsU;ym=Ox({?dwQ)0pyn+2zN25cy}6&RK#rXJH?VI*SxSUxFd zagK3%=;Vdt54FC$V(#YLj`tRCJ4W`L|JzCG@WrMJ6^BvT&_AiJD{GP0bMK&;H>h{8 zhgVJgOiq9^7zo%*L0H^9E&lF!;j23t2F>8TW`TpVud^>lZVToL2gmN=86{%70E9#p zCP?gI0UYruMR-~jz#kvlzM=+x?1mFtB633M%0pA)JF~Ne-dv~Lkc^Gf5~9boX6xM? z%2dJ_P0K4CT~@OEJ8B$tfA8eZI1v!_EHoAUe)s&HYt-R&O=|;W?jC9LwiF=&+VwZ) zE`7uRyAtk_Oyrz%j^IZyXxKyDMa8-Q(FQo)&!s-!1wAKPJduBQx20}#=Nn%PQ# zLLM>6>_6TjNy&1SL~5NOJ0fw`Mso5)EpgHyTT)6=u6M3C+muB*rX~Rhj5lNvScGFX zd)l_Z*%y6}iu>q<+i3@V|dcILSXoo*TR^SZ2( zgaD}|tGX(31&!n*G=XzJIUESm1 zE+`0YElrJ|SZDS(@bfr_c6>jd`jPT{_`_HC(3~}%(aw^%A?o{Wn=XHh_T1TYDbraj zoJiv}gIok>G!mJYa2WV3FVx}>D_Hu>N;SdrSF8Pb1UpJ$6+23U*iyFCHHfDg#1UL=6CWbY}i{b+m28D;*k;4s$ zD#|RF6XIpktJr}-VKFXTClyRIOOh#N5+`x}R;KJvt z!Y0Ggh(NB(nT^yB)W@e#=9}A**M~h~k8qWU=Rxg%3@_ihbnCb9OogY)U1KaQiPEK| z`3CqWd1Z_@F#P-YH}Wfh0Q4%G0|-m7*5atQaDyGWQYqIlm~A$}kfO*)pDGS>fYau)BKKWTRrSTi&aMc#R$r4NbfqW3}AkrR|%G9A=^6(qfZjAp1(1{Cx z%3+%|wo_r#sElLL%k%`Hmyt$|RieQiU&2sfr~>Gs`?RA1N-JX4=l z7fEyl)Q_=|f;m1ywZL1D=OgpZVcn8U%6emZb)d>sAaM25K}jlk1g}Jm3@!fKus4tG zM$QW<_j@Oj)Y~PD5$~}Gx&7c1+rJ8xfutGySu{GLOMg?1};oEMf_X1 zkE0=?VEzTHK$Z~X7%Pp{^DpXcs2Dn-P=lBY-4JI}*#Wz4Bm^UC+ zE(RhH!Gaq5U=@Zdc==7cK7q2(U)C(BUVG%&o}F7-$hR`6fBZ&0qCSt=n{)5>^EdP1 zrXj<%u>WH>@|i#fghFUI(eg@%PIg|La`=;lXJ@ONo69R3 zyO*E8NWC#H)L0&53?Hu5`aiQ^(HA>eerM(s&S{ucTl3ZZ;a${g)G=;iRCrlrNLVBd zIk?Gta1%emY?gcK#g2Y%7LH=jOW_2?hGM)0&&7`p^^2itmoCgq{(iJ>&puilmSVcy z3J){kGt=Yz1MDCI(=-}lGDG#=7;;#&mM|t=RZwL zjgBtN+_ZK@dzJo02FN=ysK5UUL!DLn=0)W?pQ+tDHg$U86PMdzuO>3gDsM-D#Z~0$ z2#=Pu$h^Eo4&Dylu)tl(b%dmT*BOZ%Phx>HW4VZ(uP5;*#+%3RW*h`xlRF99546!D z+!czWBybC<%w4BrwVr%om#qK>^uK!Ogzj?EH^{fv`Zo2r?_b-RUr0!Km0Wvd$Hr|* zzB{Pj-=RM1Jc3Hml(6q#Tk&R-&SytJsQuKOlK|%kqVN*zknA(7IdWN0kT)^ls^Pf0 zax`S5x5Zbj36k?PaycZ+{4w!fU@0U@n*om_g_z-J9Ad1J!%dg=o?ryyQ9xe9&|=#9 zz}_>+hLN!nxEk0UPu-+%MSqpLb51^3ut?G?Fz99mluRwJ7wi($mgklPzCaD;9JaI% z1O!+Yt~`(fd#t}}t(@W;8WI*^B^RAsKdIF^(3Z9CBz3@d#{~4&oe!JJTU%x|eDFHH z>q3wNQ7|<+9Hx=!6jm2+3)h7!4h|M`UD(F(0iB4e(1^vFpx|IPgDpS`lSN=bWY;M? za|$Z{>{DXsRL8$nc>%8M${HqQGj0Z82d?-;nZfio;1YENpbd*fq&#)Aqi^xTtO(^6 zYja*ec~VM7L2K2VzrI3!PyLDFQRw+?2M&Gt8S8864E0_?Zt=v7`1Hxft_?x!#6FW^ zjnh-(E%`%3s0pn@X0#RU&3UGl+DR>E=#cvzjnSE~_mHPlx@rd^AoSU5RtJhA0t3Ot ziFCC{*iH~a5h?ldKoOrW3M9k4>nad$9T z@QQDsT_MN$|H9@>eTbmfeNpWL7V&>z@=?DfA}l0Sm(;KbN#MSYke^Iu6X2@`nk7ya zJ`_B`Zbdf|np4?4t}`B}Yy?9S-vHwdXp(lvX@)WxVHT-Y$71;f-K@L1{rBj@@xKgS zY5WTreuYXn^%=|XGd29#=jYK42Ci&BfU7T&eF;Wrz-&+ljz!`i@$r#3kU9?w;o}W? z@ug-V&ztAu#Pf#j;@dSavv)+sj~eGs!4d>Ml-Gc%uEuK9&LNDnvMWyzQ9eXDOZdj; z)T00j!_C`H-r(A10FPL&MfsZF{MAVbx6wHD~Hj zBKn->bD;fB&I8EeXPqL!f9^9YTpcYOS0#r7^?APT79XVt>FNOwffLNp?R&V>q=K|J9cDQ z+k!Q}fHGq%%JTO=vd*trGv~_*OQ3e4J>Er`vn%$nu8l8J55j)eVR$xyD-2^DQQe-U?{r?FenieM-b4=E zdsJ>gPH;{TI#JOvZuvIqZ%M85AFiO^UkC4o_v3%x{b4Wl`HRm}pCT>L-%oJu^#BW! z5Yf@UGw>e+ZNCb)f$R)yEkWz|?17)NAqV#rH-P&UOlc1$Vjx=BbBT~ZJ|I?Y(aUjQ z(1Az>{F?+stlmK&aL~sRobe$RV}ebXO89VX9=>6L(K1K5kB1|8zaC-H(P17wY==~? zgB*rR(x9{tGoWK!n5FPT2miD==`mg&^}~Qm_zlcOupi zSO-8o=IGx?#;)NvMRNn1cedM>Pue+iZ_|{_yX)57L2Ek~t*_tJpFKZocw=G+ELjQ( zP8z89LI^q(i<+WA!)E1p!$Eivy7OuPd%G&nJK9Ba#nqORu{vMK; z6wLg?#1KPb66DOp``*OOh$ntGs0YY7+MHG(vO&_><84^vOS1cG&l9o z9>lUV*0(7xcdvT=?z+V0Jb_^WKCeNq-Hds*hk+W4fQdWac3WY&AtU^R1#TC zy`YOo$YTqIY#ynSxY1`53!uqEB*9B11+HQq3?Rk1eq(a-t0Ptzo%^(>3FxL8AWht+ zLK~0-5AzwE41y0psZ#c>cea=oZ(iQ;S77Zu`_REA>Q3&8u8oc7W}$=Ie+%hUpRKKE zp_Wm=@%XF{|Fn!BpSufF7EHK(0B6NJvLJJds~g2iH9Q=Do}&b6z(gXxfDao0`^|EW zmrX9=+Z==rQn`cNfpmrjEZ>o(izDZz2?u1stsBs91IimTHwf*KP>K%>x`e^^(I!a# z!H!sWH4C%eQx)IjgICs4bxWuZ(5&$tsD=7vJh&v(CTsP|wXdvino-!)P+Zi2($>Ag zDnKD<+J?RNH}uwQfI@(e%U@YDWl?+Xl+F(9Z4n@|cLL9NL(aeGoa2C$F9p!|UC>G4 z2_e7<0TzK!kkmUMz|9+$r19bLR@qoGZ=QA#_o0LJai6h@fimn$8{f=+BTOpcVWXnM z2usmu>jH}plW;`RjLiu)?`+%Io3pEQU+b1T8`i$Et!d%LhMoPBs&h!)!fAO6+ow%i z$er6$TYU22P0wp>>+arJzwnxpEUj2jT>NnSG!PP#5>FhfH#9;078p@1_KC#eRMjd#=)I*4bX5+5F|LI zWUh-f6TT@kyks;9gRL)GJ&lct{TCrA0dEmpR#@k2lwv_?GD2$xs4B(+g%{XjTDD=~ z*fsJu))nfDS6-pM_~3oC7hPSx;wsw1`s)XKURb{T`4{?^zrd9ORE`eWr;3=o^Csnx@CR`j|NPH}r&tF8XEL$?Lpx)a|>}cgQ+$7sZ_Cp~YM7tY7!ahWNPY zw3y6qp?0sLzF2XwVB>V8v~pIrU02DMw=}KX`Ry*%o}l-J`~z`Fp*u+*?V)`hHqhvm}vTh z^NjRH$=osIv7ZESc`$qMDDe^6

q)Mh4>^VCI-jumGg274#t4doDX$y$$Q17!#C^h7-$3HEB?!9;t<%G zNW(Ha6;9Df1g7CI1}aW+yr?=O4pwxeP)^}o#C4jxC(8faz!_5)Z|8eBE0Vl++Y!6o zSumw~&g{5sc~g0Vqxmo~JuN%XEVO1f%`(IZe_L8Sws^|8nZ*mM(x%Sq_TXPbLzkA9 z`YU7_Q2um`(J6ZbT~wV+S-U|Gl3I(_DcIzhtU5kI4>L=Io^v@iC>g!pN^~ZS(V(F9 zFHcL^$Ukp*PM1MZFNHQmptSR}x+RSu$w7vZ9dRQx<55(wST`Sq^ihH=wC`SiyL`ue zqaWB)Fl5O{p`-TssYHF~vAQZ*84|NAzWDOfvyV)=^76wI{9}eRE*mD;`v2`($>(hw zhmyke7{f@6VJvth4i=U1JyC%eZ0m%^*o5_v!RJKAgvCH(bVeo`jfs&?J`+Cawdj@S zj^vFvtSOWVW5jybr>zo;iy{yE)|*r)(O^Kt$t7E|xa~6K*t^IQD$0#e8CgJo!F<}e zZRJPDt8*&)=0+@EzU_y?Bg2Ge-oA1zGH*b6Z(WZ=iyL+b2S$!A@Fe+y`3L(i8LCYg zHF9uOP1?L=#PFV5_^t5#%TE+c965B@yu1a|7w_9C=u6U*dKRT+l~Ou=2jeeA)*LF+ z(_Us6szc_0d~rmXHmX6g=&mP&ZJBZCx{AB9NmmKRfC!YIjNc6hNNm1mAFfiPaRg{s) z$~x-b{$w#AtO10hF+&cfXS+rV1MpgG*|j)AnGFuD#(_f*%VJ}@%>f@)<7xdZ!c5u$ zONy0f@unaJQX`=xiW_+vWQkxwZED-pQw;+a&ONwr!wJHle)**E&eNM;3?Z4P8a^Y% zdk>#%9sa>T-a-XcjsGAkj5iOFtV#ul|lhmUssDCX<@K)ucYmn`f%fbg>w!rTwi@{)u~tLny}>s2S4%D3e+QS zyYGS4;d7?_2qrW_p)z&tS-rwUEo5CQGle1$WFM%h zK&MSE$qo9EWK5a4aDDW(BkyH=`qZ&Y>8FpJN+rD~*X-WQeb%A+=Jk8G&3KdR)A7=8 zIy+Ihn<3xI+E}^vJ7|=hov#ZA*mC?HM}H>@=Dp5`|M3N*K2I2%MlFjaNm=x)e?S3E zPy~0K#U~1nf%D8hHDOHRX(m}5lav)Wdo6v2V$_YZXE7(pC?@1IOCIf9;!}xNu*4`{ zLa)iX6D|=>K{2W89?aIx@5o5T_83DtKldrMS_+%4>!EW5K7O= z6*hII1t9F{QwFeTd1&o*CS)iO@ z6oX^^A9dC<7R-?F*ahGl6J(~q0eiq5p27B$&K^$BcKbi*I{VxOZ7@As9ExcV2@z{8q8LYh>);&Tla?k?(ADV8nI{9+))jqXuA&5TAhX zg%s8)^7tFTPlZC$braQ@qhNI`-|(MMzc(_31g5$RjCl;X{}-{~{}ky!<1sN>q&Nx{CQ-=MGXO;Y2Tj ze?z!{USOSJSe<-n*V+68&|^R8Y@MFY!;QgG>N zm}vP5+0(FNTABWcZXUsmMLy6>W-hakS<2KgE15OS24)M>%(O6jnFF8!mlbJINR0A2 zITz4}4W|BoWBh*tJD49iz*21qwiv>}|5baNCxdt(WNaoD)8WmYNPyi6{?Xt$w zpIP)X?ZWQGJAR5U4(|jVbB%b>zthj+d4bPa^mn|tsNI`3js1}g*)?m&l;H}(vWnsU ztdJg2rcjeo=ZLmsWQ2NpL`P@Z)FGiE8Y4_58f%2vkr1H|^%O+M_}JeG-`0$HeAxAi zU$pWKUsnCpTG`6|rM1fc=QlfEyLRmwcdQEkIxf87*H%`t(Qk};^ZG}X_$QlQRmCr# zHs}~RDOBL~R5V@ZPe=(YDa`S zG$t)ltKs_-wRu3C(8_K4vU2zC$}e~S)bd43RaMIu^r^Dxm6g{&dXsE^^ZNR#DpL9; zS56=8*8mEC=Nos-p)`Nc*jnfsU%|BX3}wbB`aR!jrrL{~5j0}47f|8LBv=cMqb z6|oV%9B*z(uYMysEdMv=bs$^TZ&6HIXnyjL*rMG2DnIp{o%md6xrky$eUzuMqIDy(}!Co1+O|ms$BK&`5vdQ~N-D2W1lH4&v zdnP5M^yt;MG9_!+pk5t&{yUT2`&Tiusv_73K4P zLrSl@MLhrMS4ijOV|X@5KCx^vujKgZt;19@Hb^;aV@Le2pI`Q&TjjJc{#Q*c+DDPZ z47W-6Epckn3e&zOCp#k}T%m&MKbc#O+1XjdEtEZq{e3KK86!^HU_)#2X%ie~goqoI z9H&ii(QnjpZKT7jj6*MOn8xeR8yd{S>_)ULl=7ho zrPK*V8@#!)q7iUp^P(jzHSI%C)2J7>WbfyUNF74uQ6t1Tn>y;5rCI08URZQy}OWI+9SLBhre4OV`ut z2k^$0VL!d!zT?Qnll%8QLH{sg zS;L%JOE9V#onOd~%My@9Q4I~N{&Y_-^?)WbV@T6^yJ=7iXNM)V>CCVMnV6TO?rR^` zx9>1Jr%xV2zt_i@2GNiRO+w#X8Lyh?ndm95#TV^iJ&Hw2P)U>^SutR(Lt2xFlz>H2 zto9|E`u&$_yA|kZ)D9_CPoj}FRAUq4xfKzdoi6NgViyLQuM)vg%cWH=kA;etgX+&Z z=yDM(fwD*KmsGn$_v~%E#Tiz;~cIEITPAbNGsql7&M(D^?Uts_GZh zuV0X2yMkj~-3BH`W@Y8YhUP{%OFI74d%?IeXU?e6(@XNk^odU?n@XahGYcbYrV)EW zcI3Rd*09We9(QSObo%Jc!#6!&V96>Tl3p@4>W#*6BhlxvZ$Uax|+m@C8HHSLugA*Zd=D2SI(Sy{=l^A5ffe~8sYD! z*rsKLADw9Y^MmilZpjq>=bgqa9}a^hbaCfp_Cr|-ETL)4$o4QMmXb~?6NMaAg$$u56y6o$jq3Bd1nk7nUW4v1!M9mpEa0MXiO?yutE{6gF#6SS4j{gMEzN7S2(>VVqGy6~0KT$9IK$Li6D+Etg zT3j)Cg^sCJ*vp;c4xxfZ!fBm~jtJ4SNY1lxR;`*+(rFa(r$w!3JsJpak#1aZSuWW7 z+%#@M>>-8N1^R(I*JhCoIKA7)@7h&2aps2Bp4AV}5ej4q|JC{H_cgI*|KJDk%v7No zwqrA%lyN!;&!o|8O0w2xK#nh}YcN4=4Kjopv{B*}#iv)SgGn&~DsW~Ik_9{v;^a%O z|CycWf0BF4uVzF1FL7BybqN>6@#UNRd43oh2<-I#!|ev|#4^LqT4H0};c!B>E1k%} ztUoJ{kcZJp@|m>`tzI4}XA8AuT9_i`T9=JdrV$=pT6s#OOmUvX$~Bk|fI_YG@Z@3v zL*Nz%E~4a!H?f?em6~R$|6Oj!4;mZI?OwW0sOvXt94DKwIF*nKE5=P}ocBl!c}_?S zQjm9roSq$v8&itN%MD=($=MC>fA8H{a=xu$_`n9?Y#C(qeC&qNDgnD;En?H=oYqCs zmC6EB?JE4$1_?8`(0?`IVLeBA1B=$k} z!HyqRb1HIKP`y9O+dFr9&A|23>mF+%qgdl4HY8(iwSO?X|EI5H=AXWv{LaYn8Ckt* z*Y#dJZqw;42WstSxXn2BQQ&e;vR<3?n>)3Jsl#xdB;F=jIzYD9=bWyEOdn6!E` z26!&qZV3;9=t1-|aahBN)k?xS4IQu%BgT>}NkMTMB{jr|rCJ&{G!yBs6c>iSUy(?T z8U?zB4g&-Dk3dXuR4er&TjA%!J~&~Cu%DD|neZO33cm9B&&PcI{>L60LcSM5$bzsq z;WZKyjxjI9{Psq;Q50s^gDCyBbE)pw`P%f!g_iCTFg5H#mQdwZLuk&dm(~>hIlanJeIadsFL+dVBEDbRvCf+4t z0^<%i1}QcWQbId{O5}a{%2%L++t3j}2())By4ZQ$WdkOLXow_oC!QA8PVPJ8%7D@{ zt1E|;&6~8W>2TZ175svZA69`>_T0po+76thuIydht#R728HM$!)2lb6^Ks47)^b)# zGk3us8p%RB7eJ~Qnf^W{qC|C^(x3qmz>z_##vs_yXObJ_`ZmdRhp(t*VJOm?4_?M!>FByxnl2?#v;qca^dfS|DRm>F7A&cqe~Id`rmr1dxU*RVJM(3ahaL+5{&<;M&?V z3K@}>;ApK=T!L-J2xFQSW_XX0AkI@-iFx>y>)UNXJXMzzUFs5DlWT7i_Fa(yR6U^t zf-GPv6sfKRYg0gvqL`zxjkoAhPWFnZJBjKPRj8&{4WB3~R767_5BhC&!?K|w+|iq7fV*9J*XyQ!T~^Ba{Gbdw_$8m7YI4xyQ~YuCDYyLT?$ zv}jt>kIR>4_gS#LvRBU`KNp@It9x#mv}oa&jeU#ejhHpHa;YJ+U#&NO;GwjssRccf zC)3^CLSS!EK$hmhI?xOnoX!-vi^o~F3Dygdp4eV_y%JF~zs{%5%*!l^%#6&GMC^G<#FkLZCMLSN zFe}Phsz%&~T~X%VRQl+$BSrR!A8_^!H2*TO`^&I@cTv2MuG(snwR6|HxqC1Zi>Iyb znu#LckbfnTf61(@!mKQj*|D#7pp!#3GAz$OfxwB?*l1?aS&0jYiA%;24O_$N_Ck$O znut97O&c97kG9#O<-xqN5Mk}B+8HHiyzY!nr=rW;1$0x%NzI8wjV{baLTW;HOM)dK z(t&`oy7MYk0|FDe)6*j(ga7?(5YJ_7*aJe7YCk`x_Zt(T5SN5(3FYFV_sg)qYVx3g zBOcpK4hrwwcjDlNIs6O>@tOaG1!9{D%Y7SzNZZ_Vnhgu)ZI_n8UxM?UonOlYSs3V9 z1zV0AmJP@eCvYCl#8I5v)mD2r4zreOlWBC7g2J0fY2QqgtXZKjvq~aM<3wdb#q%n) zH8MV4QY3XDktrbv;}0=3sE7&?Ep=xM2C>M{-2{oGV|gUJiXr(w$14;|Y;3I50utEl z{W~E-<~JcDZzUVbDm%WXT13{amUVM??^v`^B;6&F5b+IVjqIW6X>O`K{CljSCIOc6 z2w4*FHTHBgWM-336;2E>F$TiXw27uOiYSJ?gasoUUi^9_TR5>Kt0KaqBO;>1xi~Z3 zJZOMmX#?K1bch-yRWrN32<*a*T_z4{_QJ*?;FRi8IgCy|!vEFSeKWfCsyj2MV6G=~ zK|adUCOdmgC?bN;Ldu0xD8N3P8_;-c^z4i4`rGaMVxsfLuj$`=VNITjJl-ID+aP=e z^$3wyPjKgu1DYywU#3r)pHaxgTdlo3P(04Z7o=x!IR*-RD3fyocqkUqUI#3JB~Jn0 z83M&n8w55w+9e2P7b`W_pl)mq8l~e0W({8=*xzo}aY%1dp!ABJ#Ib*I+mkHrDapEU zeRh)YT=)KoCB1sOqKit)JQbzZ$x(4G&!j%R2lQ(?J3T?z;Q6lS^Z^N^U1KCk?I`{w^SGvBaK_S$!rmlcA$O8xm`vMFpW+W#wcl`22iT zBE>|cXq`ZDa$0CN57bL1kj@}fWvT&SzR=IYXv?^X2x_-7(MUnqo^JIrLZ$Lb0fgK+ zSI;UGeo@PBVqozL+sj8Be!o86*DW{P)xBHyn9&Cp^o;2_GH(qRzMyXia#r359Xxn5 zs?OaQcJ1+RcJ3$4g^4nyPSt9(=@k{bURzOfuwhgv`|5+k#wldt9=|hQ_5{BZvp(*$ z3lW`7?NLc$X-}=q8f8M%9S(UEG~}jsx!yrhV2U%_3`u-kRBCDpi9=guc@%aF7`FI> zZWyEuu%so6dV-hMKcNUwK$V1IDcawV8Ubw*F@#x24Fp+JdjW7DVg{aB8MBNd-WGjo zc~6B}@yf1`H<78=@~Uz|TUz+>Po@m*EUfciX03(Okx3(L6S_Sn%x1UD zBS!DgY1#g7xI;UShh~%{PxTNv*8V8)ZnJ2mi9{r80wmrMpWYMgH1S4@F&l8G<3i@?H=g>X!GK)mj_sEv<)ND9_(#lKTu39oF}xN#%9 z_t{S2!uJJ_vi&*v8X=#TFRgZPmE@Api@q9G)C)1>xAaxNg8uV=m(pCtE=^oJ_>l}M z9k6$ieF)6i5Xm@{S$ewL04nO-NS~nL?GcCrfb}jtnn{nqp>PMo;<(1ARG5R?WbR(& zP=xAz+H4sPgjcC3e{57ExUGFqDn)hN?@M_JV|6S^URk@)U%^M*6u&E0$MP)TF)UQ$@OeR8+hlF3DVy9*PW^2YXw zU)e~$&Ry8!P)JI*$fD|OTVmPVQt#CG)CoCJxo(@qofFl4ME8iuev5|{E>0)wj`-h| znG>s5RTnR+?WyNN8`!sm1edS2+tdXe8F48S&|ci8wx;FxNlYJ77;84{3J=pdVr>y| zp%#@TDYtKWN@Y<(XfT5v24Xj4Lx5#Uoo?(4y{HCW#7sMz@0AhiH$ehpsfIFSwm zAHkt6c+$ip%j*V(Ay6W4aG*Se*Xhjx&E?>e+r>$KHkT~$PAwkzK2A2|@56W2yjioO z_N#05CyrFDD*t=slEHr|YaIIU^Y#xrbS=S`S@$;E6aP4DTkty#%X9kZ$*fn!vz#_+ z+*>TKF%`jP^RW;uy|Dcu7lqzkug2x#KcTv?IBm$O3*J7SL1);JMZVFsJt&=43xDGi zWVML;Nk<04gtHb4@xlkwbXJvtJPZ0E+-4$hVbo#U1PflfJ`DT~_k`79Wlegk-YN@* zvQmFW7ECki&{`BjSA3r_d4p#6aYhwQ>Fb-) zFK$kUz_AC<_OClJdh(;2%3DeF(tGb+>L0fucU<3u?o-wcD6Suqn^`^2zikFqFNBD5 z2S7Uxrq}skhYi*~EMaRdXjDPaspW_l1qa$t4na*U4LYI=f&~@UE*f|X@dJrNbq{I) z5M_?jh5DhQ4HrZ}MGqoziIn#W{+F~7YL@Z8(g?_60a*wjv(qdmIRr(r!fI?Yv1(4GQtE9wTAW0tguK-dG&`~@ zwVd6~X_dU90jm$lx6396@}-;3JAYzkATQ|pV$HECARG{-lSLzSsK)3t=CDt__10T^ z-p4=TP4<6or}=OR)`)oFDO6zk5Y_sIFw>ZN z#47CZDK{5rBFeHoF=8HpvEP)T(-R|N`c0qSFD4>UW*J2{BMVX6Xq7L)GA*X8EL*c# z(a=y3QRJ91ep!v9CLy85!RfOh-?NK0Y|zgcKVCuG@Q9d&>I(sQ!_bCwAB?eUpk7)M zqDv*DHh)kde&9kc4f3_<5NHfxMC*DVvd^M=&un|CA*;5mcVzdq0~3opAyJvd zF|HoDnIUO|UCzp!ip_QNay*6G4?i-hNAs`@-?;d?C+Z6PVJTC6p?SSZ6G!h^RGAZ+ zJ$di=;FN>}_Jl5>--2PeBa7nV2hJ{y$V+#t>voYMgEP|=Uyx`sIn%?_isDT_Z8p0? zjYdbbA+shvWeEHA;FHH%=Jqm0CRp>b9jQItNku7kU5L|M_4j>ye_yFe>s6Le>K)zB z!}b~(ogY?|q^sKe^x@M&XSLbs(B+L?xn)Puj1x=yC=(_x-{t>n`qb(?XU|bRdd{y( z*N4Ri3ze)dJU1yMI$}Pq(j#A^=+Q%=$>*7m=e zYse9;J;JPyuxs;Ev^JxPd@BeU-7;47D{ic>>zP;ED<-nrkc`ODOE>l(aNvQ9Q%l!R zMI#2ejtj~zpXnR4ea-T2^WLa{*)RPQenwJ$jKLI}pE&B_>g-9igJ21bh8`9ru5)he z_PtEQnY5%7806NRk7B}7JTXu-p*=*fA;E1a$tG<1>(7VB=)=*lmWnYa@hHgP6fziQ zDmV~JQQ{~ioRIJojtfZ@EuT=ix_0TcNz_&+E^vW2TH;WYco|nj_a{}cpi3ce-wu&Y zH|YwzW7k5}460?J6(Gb&Hf;om+)21W=|*flscC*8ao;MAW1H@C44&H1_u$_3>)C1! zOV#6q6W*&`9*rp4T~YH#a0eQ{uV2y_9Ab_!HFO`{%O%vZ_ckogiwIq=cM2aA<}PMy zXL$3ldJRBi#ZE+4(Aq7j%tUnYN=>ob^l}|YF50Ex;iWJ`b`zb#aY-~BhvO%LXQ4}> zJzq2yy85$hXs`=uO!cQVRK!SClBpd@6eOZ22M$FlZUXA1%mvT5v?&Yh+~V9&Fy$^$ z8i>0zj2lWP%a1pXST`)W$D&j74dV^{8Z&d&^-my0$6r6j;9F;6&nZDs4%4~$kk^pMOMekdtTE`<4Co6XiwyuWUUnftr4eBF8f&WK2q$R2~S zqnI&jYtdB#-Q}3x=flugLnVhjr~bS?nA3-{NYki?eE?HEcAx^i`EIMeoIPS&AGuMt@aD2K@G3CVk+BM!se|Pl2 zQDHcl=n;NwVuMuuFAY?3y2c}o$mE|vU--z%{3!HugnXP6Df~!+Lb1w?#_n+qc8?{@ z$TQuYHdNhR0}TX4BHEowYFa((mb(ddljw|@)+Y^3hV|}9H(Quimd3i%+-b&cZH30R zuv`6!x7nCQGd|s8yTIa-`w%%l;BYFhrA;8RC~MplLqu}u8B-Xl^9)@xrZmqPF;=IEb6HJeZK1Il zS^YdHt(BTsxw@tgYWlFuAW-;vPg*(XTgdKDhG9(fh~G z-MVYK|Bd-Gs#euy_f(!Zp+C}2qDk)42f|vnk*p&F$@RD7<(#ker?0lovGZYJ&;lL+ zoSOls9ebN-=vFDrqVpO4di6P-pZFUQg)+TEp1bP>ZdJ=mz&>?-5fz3{>7>Oa8zr+Pz+zdhyfb@qF zLxY|~xn!j=jF^3lo=&XWn2oKE5gr<&S^D(>5zGc*(d@l?UUT$h? zI^%1}keTnhKdA4Jrdda$dHwOV_fHuWbm_^fzFC*Ug-jKBK}aFj*kqxW+$-$uF>_y- zFk1&aY!*B!74+$Fn8z!aDpZzkd4e&>P73f3!<-cr z&S68fvXFlGs=bim=wDPJ;l#o?U3+oSyTvz{_i7J(1vJqaYCrZNa0ed=LDJz(i{ zkDfqq)q3$CxXA!&@LzIZA@l=UH(e{~KgnbU$u7DXC@%z*7oa1c($J7GSs(yGRC0JR z76BnZBHM_1koU$y>W&5L$nYW#g_D{`M!b? zJrjbJTZ5tsNbk9W2Tm;vHHO7ncGzP=v^{3+u1Ou2Da<>5oVbo1BlSIJWmGNc>r9?- zWFcRE{lKc%wht;;aNm@?Ma9=gPbBriim|K9q9Zbk%PJFjZAU`4F-390G*`~JH3N%R zE?=CNzj9@LZr#(Xi!9bzM~@zboSX$qd1k=-lS(tJL!o9U-NBKZJ~mblPcQ0ySyXxr z!nirk@^fcTJ8{E)QFkUd*obfk*u$g23DJ`On|_~?a=WvKmT-dK7xXBZXuFnGYM!Nb zaH@6R=HcP~o&T5ZA>U^c)C3R*nb45r~V9xF-}bbUS(iRZ%Ey-ioKY#YIrpz`sY@qC0~n&Wd3a68a>+`JnleMD(p- zjg#N09d{#e;*qT!yHj+I-yMw*RqcEZ`-D6a7*#NlPcSkpUUGyltvScak(EG|R0v{G zg}{VU^9x?2{2o?yk33QcCZE$6wI|{}q+Gm@8QE1RX3nxG2LTmV+Mr2SNtfX4A!s90 ziL-T#{;WpLq1OlmJ@LGXXUNP7j&qx1b7Y*Ci{&bXw_acRz{5*k7v4-Kks-SsB#OUK zAp9_dIE7D!5M{yo8DxNPb_RtZN%(}+F#o_<^k-S-#`CdNkA)UMYECvb{=@%gHiVvg zKiij!U_ZvWy0fUszn2E|KoJ+I+Q~)u*RxC5zAg03Wu2d+(bC7zQ?zH4oSY6ygw%dZ zJm%lMB_&>OX=!k2hPQ8DZwBr5C0@rbrm<6u^@3H2PKX-d76YYGQ?J4-dV54C4CF9^ zQgPpPH*ess+?vvij6QubGD4*ClEyh;zD`1DXa#jTGq z0}(&a+h&xOrU4%}Z|z?oqJ}VxaDscc6U`MQ%(UH(nRh!9xOasUC<@JDmyCR0?jKk! z)Qs{px=uN0TijSUYP^W+ra$>U&k4s!&GW*6u}=&4li^PbM?OQ9#x25pVY&29?=$7L z`=F1HcpuSq=H;m0$IF)rN1r0K!o5#T5{^AjCJ6hVXJ-jZ$vU!0SSYH+mPMmJ2EzBfF&e8B+Z*!9F^6_O{U-eyKHgF z=)_>F#uyik-VcLvYRifv^6&gg#1bHG2|%3evsw}~PMFY?!7&kx{*+RgWQ{o$;rTrZ zrQinuy#-b&I93d#76}Z-Q>iD9R0E^yJ96*sun8@<|IVxL1njP`5{g|iR)p2zQ)?_d z(0VI6nL-*o_6yK;H}p`RT!8ye67O&IDJ>e{f#N_My?Ae_3iR#6Tk!8kgFBBCz9NH| z-(X#_`&2evyIp2vjHlGntqp$%+}K%*kuNv+73drnnjT|ygvWifN&L4D=s%gm_kP(F z-il$&AcOv?YMI5NJ|zoqf;5A4{}_;2(w@Xlvfb!BU!3br1JPRs;J)pk9)f1)aH~*GBeydksOHXR%I^G%RNM{* zQQ!Xi-N4Gf3#1&grSmg+wd^$F6VjQ1jL#QtKyy7Dz6@K8Pp#HkS+h3Cj3YcRsU)27 zT=iU)q9(5zu3j-b3n7ee0{hgfl<37Oo~R(#6*C2eG$%H*fQLnnhhc}>_4pi11b!Fo zb@*M!^NmxtJuP$))!R$QRBhXG;o|nDQ61W>G3$?Bnl$Os(e-1pZvEVlJb2Ff1C>J$ zte-PDS^PY-Qv6K%_WtRK4+x*tT6%WRuJ%FK@4QyL&*;kiU6<~!lr9x-LvuUlFzsY8 z|1ng9aAdH)h_$UNBa^NIMsXM4<;C#8!jl8-tPsA85@c#lM-1l*WPClrJVz$_uH=X2 z2IqJznaQq5_|zs$T)KPrgLPXuv+{WC>g?XD_6+H#v|SN* zDf9$jc-`W3wz?%=Sun6vF&;}VMk7VP^}{Dh&=~N2YO;tb1M55Cq}qR zVlt!SVx#>lenlb|8##8*k=jA2aRUePZ~gk5sbr!H*4RB?BGL9IlTn}iHO=M9N^@b? zEk_fQ-emHma7Wt7d6A(Z5&mw!Dz$6dE^=~1&%v*+Eh=Iln|>(|)-mg-UxPVIs(nvU z{cGX7bT(+geL&c5=qu+h^3Y?pRcwb96&PW7B5v-u9Xuv#2N^G1&bgkGr%U4OEP{v+XZfBc`2QW@jPQ_tm~7l^ zV@y@O5?sQ&t1HKU5UEiqi&rej88LZsZ}Qa9?d$igTh|b>eE$6NBTt^tJm*e@5?TF>cX)t>$9`hZ#j11sUk&A*^u#l`QD|2D#r1>s;15A z&UfokJ$*Kx^G_Bx7}_Xn-TYy=+VvUzS}03M%NkvYL$o!}4B-KG5?EH?m%D!acf?j|Q>ekI>vG*qmWj#CJ zU&W}-vYzgwJ7cV+HJj+U58pgjng1`&J>2=7+$Jl;eNnH4-j|07i{6)CAl{erRFmq! zed)O;Z=S2nzvJ97WK7^(#@{L3S2yaP+_wgHD+ykDu6SSR+`HWO_H%8r2~1qz+%)Eo zfb-{Y>(0wq&J(ywtYalTKC*ntXo@yrZr@K5)bB9 zXHUD^RW{l18)KV)*Jr8D@}62$qPZ1!cU<$cC*6KcoB#QsXX!lZ$I`jcSCAL|FHs!I zPfByIh!W?X_sk$O0?)xU%Heljqs;&3*K|Jae~EvZUZc#Hp2Mv6|3;+UhotAg=16Im z_f(R~uIF^J5^O;~NObeF`?H>TWZunlC77gh?||i&b2}dgPuv0v_~&*QSkFK*klvSJ zJ9Yee=5LDah%Sm{l6+dN7Ok%>QSxw$-Ht|s+3?tMq#ILswGe5KSBdBSr#*Rc7pOK&fa zE&1w`0oCIcPOMq8e7t$~s;%Q?3CMR~dgV{B>Q@wP-!*zywFF=GN{NBwRjN=)*F77*^=uJ|r>`ZX@GCaG%l07&u5g|DZ4hz}o5`?iyB_2VB2`te)*`%(B2*y#i6xhOvj zS4@u291*ESFptV6(=w_^E&AD892ZF*69fu^jo@mbI4SUnUiDn2r39%a5TGM5z57OL zA%ZYOuQm&GE zr1n&@vR)WvXENsOZ4vtkK8;GnYZRQCXBA30r51FPpm;!&X__hbB8UaB01k=;8mNrH zlX0K26&38eGrlGa-}?RcEc3+|KL|hI&Qbg}=J&X>jtM)f&@n7RTXNe~GDNT7mTzH* z5=oeiVkviVSeV9bi%nx|LQGo6oCu=DJYD?D`-&1Jc@`DsFmqqx8!PT<0EH=n42+V_ zRZw8AU|a%hMg`P-H|Wf3wxeFA@v?qr-=^r2sq126R?o!c_ooQ!Na-kHILip_6UURm z;+=2cLCv^*Y6ZumV-l;l6AhGSym%0u4T<)U+~zf|7Oq!R5LpG^`uXQ9^X8lMo@^)2 zZ(us)M_>!GGGXVG7Col{TJso0xCUmKq5wd1x42KZK&cBPfX&^oW$E0N8)uc(jwnCM zZ)je$YWvm|D|V7=(?*S$_QI80W>10pbG(9KMJB&7Z6ba$n&2N2QAOjOoYusO zHnN5aDe`!qKDge6>pv1H57#S|svuFkA#zPb4S{pdD_zgoU38D>%0UfsyEiB2qlX?C zvz#?eA9eEhnCUt;WTL!P5QJBv9_k?clcDLyaBn&HA#)w~Rx=4cl~Rr%eOApVkfWJ< zMk(tOepkVTBDvgef=GM=AnY)!Vw5mc4btfW%x~hpdIsj%Aeml+iBzey zikkusFuxk0XiCtSM6r)IunVGISzY!}#n`@8<$UXF>E|ClF*oT8fs&T+I4Gzj0Iyns zuoX4(gq1Q#>D+b&Cown$_f~jmj7HZXJYMli#mit8KnwheFM8jdSP5o|@aFgoO1V~r z9#Lo(#_Ab71vfvdy%im|JOHr}bh8BcoF!qT>q#WmKMPNKrDEVMxS>(hzz-MT&%?lb zC~CF)d=9tL5ozWe=17g(;EauQJDu*xSl$*Ua;*&@24u4od?6V@Ksj^~g|qKgE_O$| zDWxI{h*n>b(*iaMtoU|HxN+?Kb(@#YZ`_bz%g(TB6Wl=~dzY50!qY1I)&!M0%z615 zT|WcAVcU|%=FN30nqLVGF=+Z%52{q71$yPcU`J^9VPI<)zn;thw(LxrPfJ)W4wFq` zVtDJ5ph*>@2eg63x9}>3Qi|fHXoAc&QXajXkDS(P6~C*RFsy%Zx4hDsYqzW*zmXVV zVol|<FQu7uId>LuE!bc=cuQss(XD-Fzm!-Vqd`W{6d9QmaE*nb!0qWJW0b=lSq{ zi>p6f&p@{(suo>Eq_3nFNipN#;hdbVN_19*=scm;)0ZpQtSN)4j@~nEWIx}mvlT0P zrBCPvS{z(kQM4sEcxA!Rv`hWWs>IZ)p*{+g6Ht8usHojN#is)sne0SOWQe1-AVGtM z76x@qproK--rj$fu4m5M<%vzK#V%KTBJAN0SM}>Tcjk(<6DQ0b!q#`IP|8-e=M75V z)VOF*h@T31jkoA%-Ay4X_0{Y&J&_C)bB6@g)l0Bnqbjtfie&9-8 z<}m2P;OHqRSuQa0W49?RUxUXL^ZPX51Thv?BBnk ztaj*>rOPJEvP){%nxf&ui-b?h`&H6{pTZG-BN+vHF=3I*_Zh5+6p|YpN|~HjDv|E_ z6evc4iIM{hq&-QLgGG>vUy0>KNPrNW|Tv4$@yJG5` zMJs3Q-M5?H*szdl2$PmpL>aa6dS#l3g9WkI}@>${OZt;Z!SM*8)501oQ z8$$L3GcrfJ}mCZ*b7 z2vTu8ijm~DqcDLu)m|^e6!Z&P-RK4pUV*hs5*Fxy3q?_3$MQ-;|J=~Qz1`wa6@m@& z^!R?*fVBP@gND9SF1vSXG{U?W_IdeA{-#acUx3vD`289*X97efOl7$*%4E`^{iEKd z;nBKA!)eVHrB<(DWvCCJu`#rJPj0)CmliU*<&eUhs4?y~4gr!S`4Q&^L;%i(JOj6r zrhalRyFKTksS!$#y4pIj`X2JZ(IF%3$FGjSdf9p=?)?v}Q)=s1gnsd5=&}a#M6(|1 zrqB*3%S4GD#!U64*zM+E6e!{?p(d4)4-MswDw9kbY|sP+X|${?RBf~;`z6@KmiVg#z4TNzDd(mU94ZCD?Qk93O zR3UPX;gq@t8KaapqY2Rtn~ihr2r=@iX3m5b8F_DIh#_|PgxqrfSoU6nW>bLAAcP0tw<1+(GCz(a-{rNw1Qj$5Sv5n6+O4 z{v6~R5Mwd96=bxff=YEez!YBNUjGSpl>bA{=08G~6XUYU z6Zcj0$;(^0WLEL2{)1DqGw03oay>VDIxhb2w59>^zO>o($%h;l8w#P%c!R ztWYGYLphl{Q7P9qum@B zMT~c$ocd|$f*8O#sz}`p?{*3ASd!@M96|I_K1IH;1eLYs39W46k)507^{N{?wx6%p z=5$Nr4EwBy}%Uv8HkjC z=+Pmp9UVM!xZf7OT>DqyZzo^dwjgs~>!_{6%hr$jhHynYwjEfOOESm*uAp07^7#|Z z?@cPLtSufsBPR372)Y@C)aLqm&A#O9o=I!7QYn8v(fKX=A|#5DiS+4}^>U^`Z!mBQP7^>B zXgUy=87t{4*lPsVGB5k$rlob8j(1N<&e`)*-IlhUeBJd`Lwo1hdsZgPK+A)H;O$k*AP{v`r_rG*aq= z;VUdU5HSABqGCu>$ek!fB<7GCOgYH1q_Od!VJq$MmLlvGHXr}pr^4f;&vDWRZ_khw zK z!8m2$T5W2q-+Bgllp=T#Apvkiya!|ooWX!D3+;>KR8=*^-UgkO^9ldEX~R)6PWWG< zK1$Sh8#|qJKYVQTF!E4*>)J;jUAsG37&-(iHtLUlCYul3*^oa{=?hK@uU8mc@i=(9 z-dtx-tqbC#Vnfi*Rpv7&Q06EW2TX=s#txW2#lEd#AsI30i7wlySR!H&cr|)2`w?9$ zi;kh@1Deu_eL8-M0gOCtA}B`V-C|on|*NBU$ZdUK1)22EX-k=Op={J-wl_TDtdtQXfl{HHj!P>32;MLzdG7x&wv zTdvI^FRi~$V7QT-p&8W+r_e6$X`+36CecpxaQZoxwKC1Kcpa&q!GMK);_y`uMm&&@dm^wS-Yz{Si%|=9o>JuXqJ&9am zqFENor?{K7C`>2zOQwmpwX|<0Ld2n?h!rF-LD21^MXM%nvRb4zGNSCGWg}w5Xt6j~ zG;Ksmg$kV(`dMx{K56d0=Sk{)M}^m~jCym#@ONsT7k+c}2uXeM@buJe<-ZlaCz|hO zUoGtQ?80w|UieWK(z`wBG2wwv-WSfCPfkooIZp<>_W`MXDycmx7Hwm{6}}c;&Pqa? zlyqVvMuO-Pf*$Ih%dbE(CV^k#G*Ox;xqEe}akV@`_ob5gGD@RS+I&h)sm;c^l!jnS zOCpt&SZ~qtG0&59x3SWmpfn=rXK`@S+Jk|Ln4q-DxT3k%ou~HvaS2iVwsG>*RXdM8 zbL_r`#v>=5x^L&|snhDWf3#Tm+n-PN8s7A`eczM#v89)B@M<2b`_kpx^ zKOFi-_z3zrJbL_a%$Nl>zZ9RH38{x(&evIWj%EgBId>TOkmew&m(kW`Vko%yPWN1a zb<&B})m@NTX>U?k0yDD7S`z;9m;d{LFr;63T%xC7>mJs1_`sh&YdgYqd;QY$pYgJL zR$I54UVF-4w|1HT`^}WkQCNX@0H1Q~eE^G@Zwd`%H1^dD*J3v7`Ib#x6W)DvlJEKZCvRb>q+~6HGNgt+hUguQLYWK(#b9Nom$+C8kRD8}%LYviUvy37wtl2D5lgID*w8BG_?F(1bhlOcub&R?`NTX|3C^YDIYKm;;c}KHJ zQV!`>pHd&KI!ix6qowjOiV?kGu=k6yGltEfJ=skVk*;WVOdD}Ng?fY|BFT{B$A$L$ zgby#gD!hB(5#djte1{(2zx$T`oy7W=Yvd>> z^o?B~FD5bH2@A+(vK??CLP;?g^r^>Qzm#@-=6%sJUS_q*cn%;b>Vw#3i@aHF!4YIc znNW^rsI-IqflfK-k!CDmHR>u1NmJ{vLqN6&^`gM&Zl)z(4BdxwENn&n*U zOV_KLG`8^7qRGb<)?{SNEe-==A^T!ljjTp*Gis^zN2Ap<8f#Qw(GTc}5JLDbrdfFl zMS74dKC~_y6-PG=J^}D!QEQ0q9cUe*KzCSb@!|dan`6rRE0izyVJ;`aQqLK<$a+yh# zr3&cO9$&CRiFnv|)g=sl?-VkBfelHt2 zq8ek4z`!Q~)9}|pUd1speVQn{E}H*F=9IZ?sGgPTOAOKLWFZDah)k!KsbF7Kv_?fo z#f7)(j3GLGlrBoAvbX5d5)?#?Do)PHO!^%}TKUAq1Z&65nKV4_e^ug7m?3V+ z6^Zsm(pL<=&fkzLBm5ap z3w1}2lE;tT;23#u@yp4{8uErDG$5`;&M7H=Z25|TRGW?v5>S1y4HkHh&mK|_V=aWT zBN#?)lhtJ6bj?f<*19XuXsG5)9g0-@^FkmKgbgS-x-Fos4(LVzyo-W8sMo^{l<7i# zm%MrA^flVU+VbS?k>qR}t9e@ZW4KC&2VNah;=gx8{qn{M{mc2rpC)m|BP)KQRuBA< zr+5p2M=dzy8$hG7r~=SfO?q8RkPRG;dPx5Y9NKuH3mh5?X=Lw}=}jv=OGdsOc|ews z;LeLCi3iBm2c8U3(+92{nk}4KGv$l4l%gv3yAFo64eNP*8K5Z;8f2NkjT*U8RvGI0 z$<+-EwSB0du*gWWic%K#6^2*4w%|aE8S9he7Iqp7o<7e0`S|twga+0jV}BCxnj}!` zT7j^McZ>8v@7zT13^ON;AGot#Mp`I8{_8vMKFX?&V$-_`Uhst-oA6?UO<2|RLWBGY zV1`D@^zcQZt5m&}Yv8RobczOSGJ@oc@oOzdEXroN2tOL}W*AMg7Gz zWC07V$z+C3=tSinC%^8Qeb@c_X76}W!++{`2)lHTEny$zh3jqp&&WzTP@-iYC;9vT zu`@9~lf7OfE*tx`8B`7; z2QsMYE(!=ymxJ!BK-w_~TH!7k}_15VFyPHaai_7{~rpk!_8D99u zXF{p)(_-sEwP_ZLNrsW>`>%tB>65>c#Q_UO`eb7h^dp#>SPWa$BC}zp?s&3`g(4CD^^7f8;a{5Qri`|Od=*Q~` zw6HJWLMeTqhP~%>HNc6qveYwaRoHZbjUYEgda4{OOB{k537`@%ncXMZ<8iqRY=l7> zz+e@EjSD*lnmhlp2EVdUTk#>1b(dz#86kD52v8Pcl_v_NR+j~i9%8dZS^ZYd$)$hsPf&ocH@R;iKF)2xA`oDf4+?@(mxbjXN}exm*uZ`Ng^1SjVW=@Ku9 z9`lSO-Vt(zrmVfZZLGb$g!ndIjmnV^z`X#s;!nTA-yylLUZ83CH>%jp+RWYA+R|NA zg;s-glYrL4Vd7(W0OxaT@k#s=zkwFAj$r)jBG|IiWVgZ&1N(I_R)7Of77M#sXLDj`&Xy8|mUluXp_1KyUr@)PYZKzjyu?vB}=Ws1=-R*02z$ z)BsYYXgLEG%k-}h3%m%p1y|v-iXva_uAl36T->JIiNdq^=cd( zWI_X`*BE=bTGhz-Iyud9cbC#J?~r2~+IB#39I`ku9hQmm0M!9;9hel^OAxOv7$aaB zaK)0KXUkTzgNlTNd^|4FrxcVGVR=@Bo)kuU@QK+PJIGU$r>Zw;+T6#Buk=|>5jbwZ z-{YrvKZ-_B$4J_Jiow8VjZlOtWXA}8cKzkN^UH7kI``6>h^w#udG6kKFK$}6d77Ge z&ZJ+OxqFzIdAh039$1_^^Bn2`*@{Q&Pj1Z_iNwYD6yA9K1_;2$RbzY^RLPvm`&K$5#;&+=r2fPcf-z0pax(RNm& zuam8>udNd;qtR$&-YDbc;1J;IIz`I_d}(|uV#oX$hvOw>nDzH99*KQr#7HTld>LT{ zWJw(4BoBo6`o{(L@36>`jcqM3WSgFDZ@vssh!2}inXqjyHeY{^-dsy<_FB85rK@Xn z<Y||?^G4k^Cw4*YqNgK}&7)CUT)q&0{qi^b8NGG>?y3Wy z-#UH%)}3>Q?_9lh@;26TGBtIuGdFQ|HW9zV%3lkSgikpKp+|rt%Nr`yC9rZ>B~a6F zIje^?1YH+Tur9McLT>v{FFA(To^o1W#He8vHY;|RJ$5QzD0TvrXL+omng!#p1 zWyecsksTE=56P=|f5m)+Pw>CkhMfF&qz03`$QDZQkvHT=fARUIEpah$^aX@bAg6>l zvY|{Oa}-|9QJhRJ6rcX#3y4o|@{%=K(Eg5fCKv3O{I~DEf6IcC*%2yhPq60X>yzLA z-EZixSNZw1RdornE6Q?=I%=2u1gu)r!q+NltuItkHfR;y*EToPnPCAP@U+d%wRJ4b z?vht+D|76oZD9cy%)7MBEwtbZs+4@AYi5RjB7Xx{u&aMmOknVwIVd_HDmE}EJWP}j z5ET;?7#@aV1EQj51wvKeIREGv_-eLDoBSAlgJQ^U;EhIh_J*c3U%9mvmFpC|lAAZ> zak3f0WX^;uU>`?MPH^rm`+lt#F@`b zPMe*ctvJQ4*t>lZYFX6g&C#{dvTSZK*Rlb#l2wF{@JcwZB=(UNoIMPH%A~0*XHQLs z_(Wl%N$4E2Ioe)6Gkg-~`1s68qH&rwYDWKDl%=^r1#LpB{g_fT3t(8WK^2gq%ZIn zlfHPPHR%KXc+$@VlfK|spQx@rakaJekE#=k7oWJ&(!$P^Tp4|SeDUJrS6f;}pGmIJ zH~;o4$VgPe5!_qcM97bpV|haT8qjG6xl<4{L}Gi&P%_h`D6SOz<4t`JaeyFfcn17} zr6jJV$SlO5dx(ErY{0|TO@k6|MY*@q-biI-v42nFCSoI0kL%IrzyFRthu3;+1g1C3 z2uJWv!sx_fA+CP-wr;|ngU0g8P&1Hy&>V6D;q?$Ok&Gq*Y=*j_ww|&%B_pM-r>8C@ zLzye{6by8=OjHy!rdjAi1xU^zh$oQNPn<(0h9)|YCdGj*khX$_iiv`PiHZfAR+llC zhRkKoe#l%V&_jJaNtP6&^(H@otwD;EkAKe;H2}>h(WuNDn7hM7N}>u4>Xu~EkU$XG z(2l<+pP`eso)TQ6Pn|uRb>v7^mgp|FMz_g>PS1kOXvqii`r4H|TV%1@j*y=o`Qr-t zAtyg;G&f6>_4Yk-%*x7obDdluKIR%~FCE4CfsvZ51FAAm^bAhqD$6R$LuGQ7Ctraj z3*J8#jd+}?2)d|GnX04;_Oz_jRApFdA>JiL+CPcCa>T_9xDX#mh1CM^AjvNiU1AoK zOT?QmuoJ4;@znS{0bfWYOCThYrS`h!kJ7T=tE*p?mi|6(e^}VQxVU{`;rrs)v+rKL z`pG9(ug+|1Te}t>L~pETpGR4oU!b_2(h+I4G`pTK+O_G7j{uTl!P8?m;r2nZ^QDI5 z&iAfADK(_HhvPUmx_x*{+k23cYX^UKi*uT#$TISjM~JHcHFvl&o-{2#r5?&wO}}C5 zY(=yXNxB8g5nvZGOBe*87;8odYC%@h%fUIILTiS$Kt+9_KfAtihJRq3n~|QZR6agW zc9Em(^YldqR)xdTY!(k5fEkjg3XJd$q*UtPfC?$n04w$X30Cy4uu^ik4C3miMnS5r#oa4+ssI06nDTqkkP*iiS7!ZZBpH5Pr(ZG0)J z{)zA@cxl*tjx0c?0?}7JWtnGEvP~*d@Q($~8u@1uz`AARWR*GH)VQDKF92g4M+{t! ziW6}0De$WHftx0&rC~K{>cbbm(Y=Ol;5M<3<^!}Fsr-U}8EwNX_EQ{+uMx^F#3uAZ zu&MN6Z>yrOS~FEayN08n%3-l(sSaJG4q2$lL*i~E>jJWKp25hHbTK2QzK1wZfzMbV zOe-)bUL#m|^!l1j%dVc;g5%y|i3Tjp^O+Q$+GOeT~b3sPM;L^`euB&`%=}=vkye2sE z?uz1r8J1gTHI!to4$QpJc=)rK01@mzrt|}b>{%tA?#4CRW>adoDpqtY+nlYhuB`$^ zdu;94D%$G$JXw2LJ1feH;;MI=$+7h|&U~D;6NtVkoQRf&#JydgR*=}8~rMjG)zNw{(kv>H4HRYwc#TjRS z2?iJMpyF-zE~%wM?D3mW92@iulVeKi%ji1T{|N!4dEMLj^Cd{5UBA5gFxzEk6lB4C znw{1J`HS5>n|e`&gE?{>HbpI;ViPp_2xpiMpeNuHK0F_I)AM{+d{$tUiDY%8vtNZk{?C zFO*f`A4{%DMz@K;_9L`aohB^}un|x3U%|#`KC#~qAcMFXAEKv!0UoE%zds>uh5qWk zAbeu@P<)?{%;v*w1Dnx$fvb<(9BY)167b%yoeXS);mw|}V$g$8q66iy6X$cloC(Vc zPLT*KmFkqIXx5ro>D0+u!9R|&oGU>Ss(hL zSb8dQ%)6({>62L+TWP6uD=Pv){{PMrT=igm{b`zF&%LHvfq0rOK5mYqPudgfms862 zFiUH%W#zfS4&O+Z7NDE>inJ=3q^=fB5*+$R(AB5YMwe}~hf;pb969{=a6LI5&oaR| zoS8sD9oUsW#!10D2}3j!+0)9a?|lX2s_#yhm^*{SD5Tbq*PAXdT=kJMnLwAp|lVoWqU*>}wOq6s4QAr%vTeQ-zFPscuEZsS4A&p-$#h zs(boW!1P~0c9GfQOCWm(FqT;TLYu3Ih0C@a{p^hHFup-g#W%fwM}meQ`a|;l&(1!+ z^Z2KDI$hS@KE}ciU$6YGP8IyGfG_YM%K*NhiLj@FOf4xSCk3Z}I;PNaos`(wO`;(r zAp_I`lO^XMK?$+Ygmj}@YW~MrKePRqxWhrc6L$+} zKJo!nI7jTLfL*Y-XE0f@$b(2GTTkL9flT$=ezRNJ21U+%Uc1&6{UCb}XwzJO9DgwKYOHb3@`GtAd0P7i)K9 zY#2_;2#w8Tcm%Iwcti>68ECL-r8!EqGScu*9)JdUqB?m~#i=A8OJZkC`VL8a0aZo^<-d@q6UVu5i#b; zad&a*J$!<;cKofseAm3hy?y5JYIgZOlra1}v@v9uelm)*g?+jP7q0f4$El)LYButW z>`fEF&Xn~YHsL|aC#;20p4xPsA!rU$&02LsWp#CBLs~|uR$ix0Mgvp`_?0JA$PsMh1DFrW2>|(<9f2T|SLZ8q9Vtuk1^htT{>y{BpX@pW7$;e|=it$H8rM%Cm z6tl?C36&yND;;?|hQw+Gu!>E%tALY?;cT5M{frMv#aN?Bm9Gf7Nqkxw^bB+_ft6j_ zi0BqwmiY_LQy3v4Wf?I1M2OXCP#zD5*8E<=IoErwsjCsjd0NJl1E)tNPht?81Ae|_d~k2nZr3DdQVt8q+~4KRLTJu^&|xx639cJGmsYi#bur z1QXy#NLV{6(pL)^JeE}Us0xzh`R>}EzqMn>+4bd;IzZarTnJ9nmi zv<&C5kqX~mp)des{Cidy`z1SxB?WcTxh&#Fy9jokjkOT*1spXcfdl%U_8-YbH#k$~ zjUL}a`{zz!W4n2~MvoCKHTkbu+_!&?kWkG~K&$Z(`{n4d9rLgqTWTIf&!RCLdxSfn zo4I@GS;XFEjUD4waV=qdC8+A53T@rxS<=!f)^Kxr8nhMjP(n&l;M;@47qFT`>kV=? zl)SaEh68;=d=xQD#;GEf+_*pnp37oNonmhGLm66sj1n>Xv#^M?bB0{ zk)GZSheka_wl_RPw-kVTh)qO#^#JEF?Q4{Iva|}1Pctd2(5efGOL)^t6a6h9z6;lB zn-6rLVHLehJ|$%BmPjZBjQ7OGXGcp56m*Q$)l7606m^W%RKW?%PPnyqI=Ck^>gami zh<$0c33a$?_NuVB(rKc{qA*os9Yy#P=BJ7}CZx*RF02FDt2$uorLrJ>hLwuW!Yjo} zVO4RoIDGKR_(5HJ17%x|mxkH2@w)b;0z48o7i07ImKeu9bxixf`b2VB^*m*@SaOQmQ<1EW z7Og--ek$P;&~!KLtZv%E>WB;>ZJ#upW17x6aNs~bX*x$9b_#}2Oh$+}a|hwSx%iFv z6>;zzdaMn}e-_;rjlId!=P%mui_hU5I!&HrNAI+u(`~@LkH(JiG&tXbtzyn{0i74a z%7WN!9jl$CRiC}`?L0raO6-*nVi)a!~gbz^A1FT9V z<}J9_h%-PRyuHNH#*CpVu0{^V2{GX5vEhn&hYLA{g;O4Hsu&(xIQU4q$i<#laAaO3 zr4ZEha z@s#|6Dc^5gJUpkiD?L^Cqy*V=P~V_7!4t&Hz60Hj1uD~948q~2uLbeFc&yt z@=8wm84}tH$?eGZkBX)|8d^9sT#pIVK*Gx0BgGthm${l250_;n@V92fc1JbE z0b zPfi>V{pRD@w9z~@Keij+vly&%_laH;TSna+UcCN^R6#zc@NjO`@RkZf#QB{3BlDa) z!@ND0Zm>vN5Z8?a=7USz0;0NNiXUhxmv2p*8)vXJZRyE|_?)F*nQF$aiAmpz%NjOW zq!z^Wg!^MJi@`>Bzi9aReJzX6TXNzAn}NnL^^rx*56m>9d!w_4LE8zTXIn5-T{B{R z0?QGX^~E2MmwN=U6rnw-Au@9SEg`alr<RTp<#&nqk5hoYAn zAKHF3{l51Kud5#I9v>-xZ1Yg<;mj2?uX!w=Idsk8ea^3cByopdUFO{u$rb)IAAg1f zQzZ}%&Ww45oy_2#Vr32 zD-|a@zKe5jlI84dp=)+ps{MzP=S(1QpM-njFP79J2iM@lTLv5nJfvTyq`l%eRIfjA z=?>Hj@iH?B%5+JNvyb)Q>)E+!xh`>VYzXqGOcIu6*(3#+dgQN~6V^Ei$XWd+#eV<#9?^EQibDjNf8rQL*nhs|7_nCjfnfj# z!^VLUHMZ=*dg$V{7JMCl`gYVeruYrw)KLpXYl*Y^&)6`ZbYIf1$sKG`vKaFi``n$f z9j6Lke|)6ZpDwO-ghrhf!C6AP7Rn3f%gRVe%gpI4^bRQRi`epZ?AIQ>-s;u?R@Oe| z%2JeSGc?FUNH4H7B4*JX$k2ONDlDLq^4mFr=7GcfU?RL7pJ{6f0Tneg(Th|J?Kof} zn}qb3%31ofqV>!`lYsIlOPhox;W;Z~1sb-YxlQ2}f%t2qS+0hfj}Oe;1Uc&&xC9y52ivIqiLYfR z!49dV;0>67Y7d^i8yyn$)00NSoKZeq)kZSdCTj*W*waK#x)UQ2Z#huh*p*p@p@HzY z?2w`dI+W6QU45_<;p6z|qqJ*rjD13ieWdFQmyB9p-`Wh98LpA`DGBy5#jZL+V<AsVYuoz1#SS*p^Gul;*34IP35c@s$@13K_0ICKi3)I0 z<2Q%RO!3siv!o4d-1L-84b;^QOqKN9Yz(l1hN)1;z}ebVMa9(G*+55Vs`2lsE@nW| zadT1=TX7Ez0h-`V@r1```1)Q#dUVylqdL<0TdKc44^&?@>u;!z?h~pT&zeN_w>&G) z=udDI8p0yVtd_(n0>%|&@iH4*I2}B$Md=Tt>#UQlY%>m{BrDs@!E>o8$Kyt0C0cZY zr)S-7%dYyjieA^B_id(E;(}A}p}K1q(Uoy63hU8o^qM+AEvC5O%O$pjEv}n#ou>-t zc0E|WtT0v~YZ2IlZLD>m(@AGQVuXRYz}3?gkaeDTnn*6&RvZ zuIFYQq-P6_^?riV0WW^iGZxOK4`$^~T!qAHg^8lqphKCq6B3@rfJn^>$t@@8AMn+ z&(Y&cLG{c3u>1zq&t%i8Mt0gh?g4&Yc0BI*dz%;!10_{so?}5-UEnx}Ec$o4`PBaw zk04o&xK*kn6C#qB7nb54&?;g>LhZjT_f)1&Dir16=sWuxxTRZVmpB*2JE=Ov`*_CK zs_wvFU$|@|HY-0Jbe^I-LK$$nRIuQB{~K#bwhJR-v+>GODz^ra<#Q zMOqXT(NvO|p0S`Y+-K>A;$3T+I(8QRJH0;ezeP(WsD@zYs3^3fD4K61{ol8|Z-uqH zbG(*^)#mIDtu%>>O|tnnpoaqbBjb@bZGdWhO0)fQB~%tkgfyr9Ex*n?5yW>_=>}!P?}1y3N=jyA(d&gk`_HhQpQUh z+J}&_ot0TKNz-<=B~K7SHY4$5<_ZZ6!tr@{K>nhT9NFMON*D)O`F*0n9za^Ae-xU-WoO6f~&Ozk5vS5kfKcltMW4xDL$ zQYVuS?+I*~JXYW?CT+lxiZ5KXCNHmJMd50un?5M-Fkj0;dvhks5mRU07Fi zVqa`v^ZK8LW0q-YnHC-{AJ{!7I>;|REP(ob)u)M_5pl!0smIQ4`{<*Tyxa(ZE8jf0 zeEZyiPj@C}=BEXD*O&v9_Tqa`I%Yl8(P1HqCc*)ut1)3K@J0zFpg?p07B_nF^M3y_ z?^$luVM|wB=x^z<*+0DMY2)>MsANM9zK3E^J{3^n>N@Kq(?d1uuLgC6EPc|v9lv&` zpJ7r}4zbSThxBt!3q<8%rr;POvtD?{(!lL%(CHNy`(t07gDWj~fTCm0rKWtkQ&Y2(X6c`(!u{3pYV{cAULTXQB zU)Df6*X(R@(+vZ*$?*`NW!~7YY=3~n5VGc3h>RjhMkYigK{$d6U>y>sQv=KkB-N^z z%9U&nUTE8v+Ica3@#`;U*Y9Z!mEJ1rRoT;7>CG15tk{Uc=()MEoEAgNoD&DvmYvH? z?g%@$D)sont}T1gy`0@`!#h{jH}wxE`o7s3oRAsfy(%fQli(){sPTe<3SwUpx1hvv zNPG#3ifTMqmZ01>015CZ3Q>Zk!Kylk90Tt__rO$_sQp>>8P^Pj?H)_67MbxmEeF2N zymr^xJZ*k(>f)r-MEnQtSeo37ZmvdF4jqWSz6dE)!?@1)A-fXBbp#;B-H(&TRfS<0 zPb5Pyp#yn=#0O~QCpnF+M@v5|tsbcM6Pmg?N0j=-cGh@QTcst`->q~D&MbG$+P?J5 z>$SB$JvC@L^<{ZM?T}K;ERUd739$~lPbK+&T%c8ct0sJz8`o&0C^SF7v`2rIM@k97 zh~?NT_7Z@M$i}#QiN%AICt*>L>ZAxca*C2DEFqVjkZxDiuG*V2(p0i9t>)`hH}TWP zjq`4<=|1j0-`yj`r`&%!`k0fkXKw5Mw$b%R@Z(0Y73}g497=4lx|hNVPZ-351SJ1|rU4;b0^H zjb18>PpfolzHxhzQ_M0)lc+;K4hDTNG=E3x+SRme)Yi0$rcBS;k$*f`TPB=8KVr7M z{+xMdUVpSNVau)b-E)^*as-|ivDQF`fosqei9{g9VQa~J9N|neVf%4;=dyF62XgX9 zQcm>D-J69Mwm(?d{<>%7*EMU#sIyta$vH>!*S(*61bZz1=gPjZHOro@UW?y!fi5c^ z`<~s!*$;9BQbl}WP(@WDQbe!3GczLEl)GYb*@b--2l7%&he{nhT|LTI4&=GT&lCpe z^VxTFW8(X8!y^2;IUzWMr#DJoOFME*Zt*qY2zD6nQ6^ZGMS4O(OTDa(o zm51=HUuKnZ97P{t!~CMiaW2_J;F}R

Yd^2a+82hFNEa+HDPZfsEv@%~16_Swx{MXJxoGO5H2FWEv6OyC?i7^BqH5CRe zM5Kgj1U5S+<_7r?kVP%zQuJY~rc`xH`|jfRR|PH#Tlmq3`|!OjTad;1Zc%yF!)_n% zgvQ?DCDdo%a8i;2lAEW^2<8UWR8@M0)Yo(8cO%r@fkKc&Y3S&Uies6y<4|bE`9jkj z3sh8g;ava_YsT1joNpzZBtHCOC!v-ui-tXbI7ME-XkP~fVoXX%N{8}uPvy$ylr9_F z1Jx^?t17v#DXm3EGVBA+=aenwPS-Z|kMoMjWVhmvO4kg>0<4pey7o5Mwy z7ca_7D_m8DN|1uLl~eQvz}0V1l}8p}(IYugOt*SwwPe!GAU2?;Mpy~BnZST-h2ror zEE#I5^m~~-N%$*GjTssJS4wBZ#k&iT1cKNM{AMWAMChWBz9*a4PL*k!DrqH}W{)1t za>!^pP$oJMB7tBz`dScMKA35~>`9}vA;9AT@LUIYY?yelVAAAO6aW-pBVZ`VM{*Dn zuQz~2n4Y-1!LJFaF%pNTqXW$1@i;g!nN^!s*BeDd#f3~=!ZqH#+FDaKW9^j%VwkV5 zYhxhYnay)8VlRjohYSxpx~VI=xN6VfX3U9bSjW{c%^EwB$xNWvlL30^4~^2gIzZ9A zP=6x|pmqZsGD{WU?JeTO3Qt#w5dk9sQ<7VZRUQv)ENIXHGvV?rDaymE$XjNr+-wW4 zj{;mfc;-pIt)D@LS|%Y)F|p=0NMQ z*zWkei}jtK9(?uF$&)_~uBoc*>MbknqZ;?Tc(Lc?ci){{uyc1&<(3gRS8qCY zf?ms+4p|JK?>Pnv4vG$M@24UU5oSi62>^`a8#68w7h;wn9V z1Ee5>biSRkuBL45fiK~#M63J3dl%tt^r zOGTaotxo)n7ba>9VRTvAp5{w@_WCEyQvNG{tRkky} z=T&1;(vuO=?p3*?;2;!hx_aHb0gCi%MKDk6qjdfdxRz2~u)bF1Wo{kjtv#Sb~ zSG>O|A+p*;Euc3H5Bsk(s3cT5G*F(*qk|jp{qC$x>+n_4 z(W}C(GqbypFjTSbt&@P)$WZ%o8dY@_36pWx31*FQY3 z)wgKgyfFRT7Jm7nb3-SZetaJfeA%&ii?h$gy<3u!_xBx=xAn_g%-%+8=>-V*>!+ut zM-=SclwRUW=JmzcPxQAOL#ROpG-h!Gjx6!A1mp6?wd}X}#2BmiOC;=@7g6Tf9(i%o z{ugxTc|7Iug7?w2f%MM#{t@$Mm-nnX{}}EV40Bq@F@YLk%$!&XKpSQSR)hGestT#T zBxEmKxAhIa$vf8QnPfzr62;RG4rDLPEdzxxUL#KP$Yn-KA&a>Ojh?O82-Yx6HgtC!RUZ18>W z>}JmFNWbI(-SzWV@0rpqyXYQ_nhT@ugi%R@4YB$r5<-HojFiCe@Jak((*Bl5fA-Ph z2d&5PCv}TbUajceU!3CT85gQ#l3cX1rz+Hg9~#?oCAW_HeZ{vm?`0o3o7%N?Wo^uA zEBUFtyw<#;X2o9Byi;ZSz*|kREC7PfVas zC1TROad>tQ4VgG{dZat*aLTgPIdm|fkiq9J&Pirx$YZvoKuBgf<9K8?DnbVXI04UC z08H-d_$Cq>uf!ft&1pD%@BC0}bDC9bqDSQGBj+-F@e|bV6T=-~?^?2KacjPr#WQ-k zmTY|B%$XeC!t#P<<2FqvK^T`ab8$w_EXwa5GBngzQ?ygm2}%tJ@Cl>&fay@c^ku*S zoTwu9HV8DFxwQwc?Zl!fv9(z=oZ$g8QVi8&^A8SJ9Lr!+HS0EAJ3G{RtDsdh^a?)| zQir@-XX-UZq*NBreB6a^bRt&oOqaZS`?g#=gV#N~hR^Op#b_uYz_(*tX=?sbz|T&A zVIELh8IU!;Wml4j5!s*9+i+n~%IdNwJ6o$ogD0QnFF-w_zNWsC1(R7@OGc zF;Z_dIe*A;cf&W04c{zj`nn$8&_>6bo8CLQ6q0wTeKnsislQ)Sd%q5zo8Eh`Y00Um z9=JDB8T*>8$f=R&m3QtffLv;x!8;jCNM+uEx!L=(vkqkE257c_*%X6s;9XQ)O?-4+ zZA^R({aya)!g>2Mvi9WKm3(u~t+|sDpq!+pw#>NdWs^oDH7i+2o~#&-LKR0QJD#XS z&@QT~6WvCD@N7lA1Ah>m`<`!^We^#8?!K&?gY!f?YGPw+YGUK6>F@AS(Wf2FHmm2L zjsteE?akUhxA1gW^3s~vjP^#LHF&Mqf4~eO|5&nn7Vo3T@(U_PEac;ZOAJkt#l!HO z0-s87@VnYkFkqyi zYN@b-y(~7hrSeMIs_z;iJp+T!4!!w~tvRQ1MZu^B(9?75JJ2=TnaZ626Yw}KROC1+ zsZrvS^+XZ~U1856+49ldP0yci-HLQBe6{wIhfCL#Tqr6!S4IuC7nd&Ynm4x_r7e3M z+lAJ78XqgXQF_iUlS>fTF?ENLFS3I0Pm=81n{#KFE-VO%D4XM#*MI_I_XWfwgX}M3GOCidq-E_)OFryswz)NXM^bG@bYFbh zuy@o(Ta)hK$g&LDJf@~B0@AgeT7ibqK*Ku#H_#HAH$rJfu^R-iGp^SdS~4qyc$s22 zNd?NAM&Cf*=t@jiOl+;t(kJ*_bNV^&X2)_n-=qo`@0`6k4c|72KE{i-p^Zq8xjQS$ zP0e|_(R`Q6ZIu<#VX^*J?lWf;&YaU0w)(d=+$Dl8uoPy8(57 z|2j>Su}wz_E5}43jURn>;V(B*-|a$i3-KznK$JLD3H=uSu>L0AAKv5oD}p}v=oGAL z%Q%6O{f|6YIFdq{^rZKkWp93X`ug?LAKvWj-?XW(cW7uW)r&{)b`*=^pvEP*_Mu;c z8sb7J%OCL%cocyr56;&@9S&cP4XhV>SDj6>q3j{nriwA=C!qc-tsk4ZTw~TisG0hZ1$TE z{4K0}eXOl~(+X#$ds|vKMl4ELy~Wy!U0WdT>%f0v;$eQpiIOI zkx%`c5UYFI=|v6ebZkWl?149#9GfnDSXblm-jp*wph;fA7{P!CWu}@h3rZOiN;7sX zp#~WWcngRD`a+_`9Js+)_sh@gu9kGxQnw3`(}<`FKSN5}yVv=zZ(i6$9a@e5i60l= z?QA$SgW>}I(G#r3;NLhoY0b{ZH(+i_qT}4hJUyr(1Uov)fDirUpd>3>tP{XCgb6Y! z|74PkR{**}>4L)>fZmSD|K^W%8V2;mGq5YF|lY^rk(B z@qth97+!PX4s-{R{|05gFGFi18g<gz*tdp+Y zYn%_pA=bujoQ%4b)T*~k#M7rlDCNSaAZm%5^@_nVz**oJi#rNqn=*B3nR7RME=y0`f6Y!0IGPgtY3U{< zPk5wY9wYpAwg&Y0T1DU*9eERv^YM!nSk!o;pLXNbR~c%a=}hg7$vM|_6iw^oet_df z-*@!+=+a)qy*Ag^HwTI_rg3ck_ygVl1OHlhth}r}&E`0gf)mh=L+7G578h(!-HrD@ zw+^Ix-rNm#D62U_TSwN_L`UQo!f6fu*ta}gm;qU5Nu^!ZJ16{z;)2~eA5_?69R`)b z#U>Cqo1u{TWYY5$#3u_$Wga6VuBwIWveHoRc~vb7>(|+=3m#eqVpWn)y;tzmVBgkO;c6@JJ-RJe<|LZ@~+=}#eZb$mtw&4fRTIj(xc4FNZ z4fPLdYaTQ-d|3<9Za?;jYY$^Fky|!o(sLk^HfcPbzyM4EAoULXco5lU>^*Z1r9b=< zrJX&qFCEzo;-_r8))y`K#rZ{fNVw}LvfaHGe{f_MzB+Hwd8E+t0^*w#oWx~u_1X8q z-v+)ap`@hBgaITrOC^ov2)9p|Wqx$}vTsWctT3P55L~i8XJ6`Cn9n+VbI<5Ty2HlG zGd9@PE}*yO)0N%7+xYr+@ok9pZETmAY3vu}*B5{GZ9?|W$nb{Xp2{OfDjWN1>bjFg9+jNP4GNo` zf}+xPW?WvJ80MVil2*22eq2~VS=Mk|e?n@Lg=rs|`v&46X8#B)H+c8OH50`1Q!*fX zFNuXLiL#2;_GA*Dk~Ri?CgWKy6&r;Q)yG?cD|r&Z;hQ!hG$W4U!icW-dyCreL;>@ym{!t zC|JBGmgCr2t}Xi}*jYq#0zg0viQXg!J;C?`6iGJH0&*alMGGL8i@>czjqi-WB%^wq zT*5amt>08Q&)UOGZK?vtK-a`ZwoR!qGi9NYwuNVq-Iw@$&Z?O|ZMHa9trvY_9fe|r zPLV0$dDK-oZhS%A@P_h~4uN6zk|jRAsxuPO)q4i(79L&{st1+ZuNXc+bE5mdw{1~g zeJ|B1D%vZ{gO>pSv(|!ye84_UJh^a0RcvK5@mFHkgLy`Dl^%IDTDxsq(qL+DT~1!_ zV$!8(aW7)it43qqyN$e0&7XfdtbI;rd{jbFZ)N(v-VwMrngw#G0~}+?&<%p#lF%kN zG{deSADOh`hNAjv+Qea z$!|Kgal+cYNPxWHJXC=@7q;8>z6#RD+80^=Hv<8r=jR_^lh zi$%qkN>*kDtvEY~)q7{=>dA0L330MCuzi;m2@m z)=St6Jc4mZRF}+%Bxn%f9e1gKE0yu=iTM&VIQ!9h{9+?cLc?yMNT>8-aa4UxY?4QL z#-6NwIk2xALDPDv=mGq6Xjn4~*_K?dsD_QdZ%Jj&p6sms+3WC+fXN4A57-z+wIw@D zD6S9cL}C~c(G>@iVXjR1pK+H9`G&0Dz$!xKY&8jQsIqZX{`|NDow38Iv1^k{p9i{T z@5!-n$#%4g(VcHw+}oSCVr+e}zmtrSDEd;g+wSnK1$?`7KTya1k=5Qs(UGSMPtCIy z#Chd91gtE`>DhpP?)j=eT#B0G6P)Eptk|@%Updw6b70{x`(Xs!|C`qKlKlrqsH zI|D-xIRD8?^Y=?n4hl|WpOcy4Ta~r!mOnq!sby$eW0BuF|>?)!4&tld%8x+6HFu4(@7npZ|j2cM!DQ(9vk0t~Ga+~YS_4tfEkyEaflHDZX@Ip)Pi*7CVR|7% z_{6FnxJT@K6`Pu3OOum~xx@I`z(DCqIi%ZHJ=DBw_tM%;A+tu0qu01E%6)OXOT3py zWYZ5TuGC!Ff*+X;E?T^8>ENvVHOJ9!jzQWBlRSxxd;+6$fdjxwhp`#$;mCw$7|H_n z##bCbtvF7g$Ki@XbN1(~5Pa4Y>>-?`xzc85b<;?jdy_{~brN+jV`tXk9G!HRAdfIV zD{HL?uZ*&ddsYni&#>3=EKY2M8LxmbXER(!vY7ajb*AFPoS7*T&Vs#x0E$5~yha4X zku&>~jL?nvr-5PoQ-4B7a@OkASxFvKiZ4_YUMl|)9Uc9_!_d-es)wtYGn*r7?H9%Vv?{w5UmN!btoOK@9fN7UpA#CGf7yMH?Z@bVR7PyB&q-prJoCq_r_-)|xdL+mK2R6cr4G zJ?P^-_`zl2ag=rPK1w`&8gF~J0)GNoi7ZWF$k9K$@gM2a_$q z<316^M@Hl?T#!DTzF=`)PV&0c{7a_`d-SI0_7qj@P7AhPvnIR@1;0d!h;`+M(SADT z>D4#*$sc%GrLYc-d<}_&g=O>e$~WV)U#-P!VhEmV0h$fGs}k+XWY93~a6l^?g0Yik zFV?Q(!5u~mD}tI5aN%db^orcs3qNbwb@!7y^?P^WpV|uxyBE|PL}?F2Cn^&cE?T!y zd)LVWpVoDyWN(WOK6#*eUi}EQ@+dyLA89?fhw?W>4d5S-9>EtkxNJo=JHA1&m)jG2 z!!rt9mwTM(F8ZJZ3Ob$W8jW6oFQ40d8W}J&6JhRmymaU>18!>43{{ULt`T1YyhlCGatVy$<8b&T{JS- zwzdb+&yL^OGq_l799gMLpzKK7?tTALDLNz_> zmJY3eCNrn-e!NEreVS6yJhb|!>-g1NuFmM8vv}XgeiVvsKS62G<;+fmt?=bfF;O`z zf0)}Rz$NbBzhpL4M36|YtnnAk})0cuH8{&NW;iI4=S6 zslZe3h9*>jFvOCgAeJvy3gYbw%t^9&(-qK#g()eE3X?M{M8|Uxr*lNq)cnm7Iyxg` zf6?}<&CmMZM_$K{;QjC8GpE@)^Xivm@CTcH`krY zIfS?0xsP|Ah73AZFktjUvD_hsSBwM>YQVUTQ0(yEh&$9S{t#&T$iE_b*1Y1A_eDd0 zDg3CPv-b5N{0+XPq`XUA|MKSlXI;SIg8a<{`FjZR=fQ#^Utj}*B{nX9j7k8n(UmN53CL<`>T(^R4fnFDP1cfB9$l506rxC0=xNUcQT|z{T0v%o!bxt6H3S=_kbb zWaA&pTV4;GeJSYH9%(E)ocY<2jE?X)F1IAk#93$ty^08gmq9NLaUOvT6WTHmN+cKp z$l@}G#J3OIBVa;tIE%-hFbgMbr9n)@HSq|y+8a^!6(wHDD!gfhvuaz94vIe7bYyo< zBE?F~aR4D(eFwJ(`gzRWyB2R)w|8GZ zG^;L3OiN2dDbWcb?(QLRC38yUIUIHGxOlHQG5g)kbahQlb#)==4_W$v?_Kn-ux`QR zI1HB(T|_hzaV!C<#Zyq>kDK2@Mq2?<=m`%g0H1r|>DA%X6$UyTnM3C;ZaG#JH#>4? z+?<$7A&*-WmsqhVnrZbUbdo{ZKYW4IOUmXi#!tVvg`XJoxFKQZ?e!fU>u>e!E2E-v z%i@w3A}0zuLpeE_8oL3MAB;WY^l_Fj-DD_!6s5hB}6Y8@#_ zM>qpcHb88TK{V)8xJ0WT?I~`kii=q=WyZRO_BiMLQC>T@*nR$N4buH%?-s>fDxW^N zdA7=}ufe3;&B-|y6$xCOOa-oPXiw|bvW$eXym-D-%3^t0e!qr+y6O)%Hoq8lHLi?x zwJ@I9b;Q9sX2F`&rGrXSIXWx-oXt#JoJ~z#U>`9)6VgE~5%>rEx_=4kxcN(_#F(Ui znj|<|#6MA*G^dHIdzd1c_HC@-$OJTc9c zf!@^lxc&M4L;H+oY(m9RzIV5(P9Ocg@5lO2cNA2YCB;_UGIb_!xd4ATjQx{q2Qp2% z6_NNH5do4s3L?Pe5%FZAbs*dlY2d1iOSIaAH~^s}Rp`X>?67NduK2873fY!t^Ol`YPyzm$j0n7X)_nmD_l(N~C7o+Hfm!1$k8 zw`@`q*&T1Pl6zyWBFAl~{MxfN_8i-Davl|%T^^fSx#UMjMo?S@f|*2~w~f8zoC8T= zeBaC&fN@S@!bG4bfj783@$U3r1cf00(1GzC2`A(I|4{ZGa7~@-7c z@&CN%1jOEZzrWA_rdJX1oM-R%d3jo;N5+h@p(D#SSA}H^?Vg1E@$v*ixIWMKp#E3)()_{$_@DQB} zjEgr0#&$yAy+)psGgg=DdqwN-H7#O(u8kb130O48R!sJ2C?9)t@}}t{^I1E_k0cWe zc0&eOT!$N8*U;Oc-UT@cYKxHU)qGBuSq@>xM#b+z>J6Kjhx>Okzii%$ytZ9>k#}Lv zyeox;pVQmdGf(&KWuDY;MDks`kz!-Z&#ykKx?VEVtCWdH-Gc2@Fskl9v=AU zQ0&6?usy+UD-+q93F3}MlI~YpwR+m;bLU^kpPwJ1=#<;5*Obi0g3^9HGESP+PaQCR>SvYPT9%@D zt1rgag^ny;o?Dw?$UQN6^h!HW4f^De0b?fh8MbQ3oJXrr5Q;8C{7o^lb}cR&VVPAp zaOBo8Q`$iS>%1LcI>&z>Iuip3JV1)KjA3U1M<2l%a<&-%%E5{YJ2)<3%@mu91C8N? zr2Q-kt?F=E1#UwEAJ09FzW=1Kzg`pAZQ|pz1<~V<7LK_zx#yPL-ji~B#bhWAp6TUt z#!O!@G;4cY-dyj*;l+n%Oio@pVJHf$w+%Fe`l)>4UfJ>EO(+bJhIna01BREZx>kFJ zY2G)tV8)Ex-l@3>;gNkypj}$D=IdJ0)Y+0RMXtL?1i zrhsi6+MHzD(ccw0P8k&MRx-Z0c0t~N@)185RLxHsd2%=EGC$R;>Bwc~UklfE>)WSu zb7c9YX}zXQeVNropWG!ZDcg=U>Do75Iju|osKjYQv!+E2SzP@3_Kv&Dg44sII)`mP zuwZLccU|7DZ6Dq$%`PcCH*HGq-nq=N0m0rr1~ls}rZiMcIZS)PhUSsPB;Ys1Z@ApV z)fPKq!g^u&_J5^<|666k?mQZ<8E(Uyddu~WB;b`@Z_*W2UD((G%bx#@DwBReKBB%8 z`t_M83`&9f!R?f&hz?YF`bYfTCI(-wJFQEM==067jyV4(k#>Hzd5S~y$lg;5d#W{_ zQ&O{EFJ#F={iQW}8Vz3Ra9eddfheNen-_dP(1w1*FxckWE(vVJ-L9@|X$-K$OI*2c z@&ud>#(D#L#W}@cWd`R!b}{0P5wHT$Q8f?~lc5MTr>{=WG>@GLiEUQgm;tMXN0;2# zI<25CYZscpC$xxX#tm31kUHf~5YJ9@{vW_#%rTxs8d*C)u zL~m(8@rSV3*uIfxsKTNn15?S&cEW(2Sa17{ca`1&Q8T^^mq3u2NVzEjtm18lIXH5F zPlX8Yt<@0NtpJ=N=wK7bNTfXX#j~b<^HTf%J}NFQqofbee46->Y2@t#==%^^#6+SP;Aj0Plp9#kIZ$IENNB5S$8t?{033F<;dUQu6Wj8D zHe&$xfeS!mai)gRj)pon4{!%b0EIvu(51R+ZYDOZb?X$BJ*8Lg$%@SGCl@SB9-F`K zW74G}-80cVbi1!e9@l3?%&?reV3#o|z}=oD*UCrkoX~9}Ge)cQ%*mODv|Y5p`Uu;) zeG92$Jrnhwp8mE`ZL~@8=>0ov$A81TT;vg5*<k6riFM@;^*GeKb_E#kjgD1}e0hO)UMKtFRL!T1<7M3GcwRX;*4y zT%1ffGmjUo$yN;r$5`i|nEvOrYk%LvRbTocVFfUp1qSln=e)i+VO6 zVqR1m!Y~pCQ12c8LK@qh@F`PG<;y<$4E7LoX<<4*jvUbux`4NyaK^K(h-D~ev-JOQ zJp0tlRm7np!=(EA;KBx?Vz_1b{U@Zg)2Wu4w0owH%3A2)-59V}<+YmQ!2a*@0&gea# z`Qw1wFX)34Ymg~APMvz7YrlaHN5#(=v50xPas!+g+pr$qLcD~xRKZ(x@D@FZgFUur z!m1nm0hdthvFNA!7$G%3R*WG(dVfDtG?W;j?EHcb%)FCdD{( zo*0>$HYamd+01n{OX~)$8a|^mHuqc_nk1jA3kY7*V{o<_pXdAlU^)XZ`2tKnFdx9K zW{^tpsZI!*!AE0NWaSN#4SEtY*fn(bbdLos$g?bb4Re5byfOntRI5ws{0_8nHC%J&OK4>N8_Ik1_xi3e|;0dIZ7+sB^rm9o`jc26@L z(o{)7)niGDigEk>Y~Qs%_t-hNcvUZIhl68oUZN#Y$lGW8(&kuOJ_c<-enU6I2x5kO z6Z7%&G!%?F!;_~%{vrf?f&m{XeipW#a0a67d@tZ-H$QC85Y!Ehh9a@c>SvqcYDbP9 zJ#9|0`Mdptw`QiTA3w2t)Yx?u8PUsrFFDQJJL*kOfFiEx{s_yUE_o51QpS|0Si~2`5hmXi(uG8j4YrLCQKZNKZ)^ z9tJ339{IA!KakL8||K3G+-F+I6BJ}S7naddqZSnYnlX97t%;S;bGT3r(4&BC3Tmnk(1t=69q#PyTmg5x`~yJohL(7oG|M1%4QWq97A*r;@R>2r`rI*37(AI{U`-`QOGZ z)-M`fbKw2Tk*oa3N#)DRua_3zD7Vatg^``vb3PnD3{$&!JHOC{{V$EN*tIv z10sL5T?z@sAXOiHZw`R80E2qD1VH8S&{-QpRz#+EO3!JktU5A&Sda2$Gp=B85hHl_ zJu+C)ZI8);3b^^qX$b%fvjze*6CD-uOK;9Dxl~^By?KHEs?0g>9hx_Mk$!Ptr0uSa zL9bBx^^%e+GndZlF>L(dxs^>h>753|*ub8Xc538vbJvL5m5+&xGXR$6?S8MFMzB`4 zW6?%ZK4?hsywRhoOTU=A;QX{{&GRiR`7#%8SjPml6`RN()12lG&0JWMHS6m1>Azc; z@|Dk~=YKYD=mMZDntb46=4M+d2}1?Ezs!3Kv*`&y=eJoHNB~O;m>>Y?q_}X&5<|kB zxPdMO{B_4_G5TV`$n5!@0;5}+mo!fN#uy%NUSA&d#Zs zpFOCnrg!X?k0#$3Gd$`pNCV7y zL5|eMrS@4N&@r~z-7dXt=?6X_c~@Z0OC2yNUK8EDTa+i(hLBl(KsU;7lzBxC7#1BI zAk%0RidVf#dPHU=B#p_Rk~=jwYR;~G^M>^qR5TCNrRd_!sM1N5ix$NO20OaxdSQO{ zgwumq8#Qnqp?y9Q+!mHf&PBHYBfzI2pe#pD9bB}3_PDL?vp3}rEUTG$qZG7r({$#1 zMi-|Nj{?on{Hg=fvmG}S^xLHA{<5y9c{-?R9TR5jK7qEBhjx%5cHYAuxMi}tPq=f3 zm6RAL;Mk)lj&m$D_?Q1+S9P|~$v=M0D(3sOOEXvXTAP2(Qhly?@`c6CEzyCU=8Yb? zU=FTbVzIiPU5&&cx{*210?a>nx^MM}c^3-u?=D7{mwlaka&v5NP1ivq7uIA$c@nq_ zgEJ&i_2xP40CEMlp<`RcajXp_0UOqVDEUZehrhlCc`3P2{oS)Q%;$?Xz)I~{^cf5> zvvM*2e!+`7E~qaj7N`IuVf&k3sGoU{VBa1g^M^Y(RB$Ghw;kQ^L_vW}xF>Uqr@Z<4 z(t@g+yl5Op;VsG3Q-B0~yA1B`z)ZpB4NsK8#XC6thU}XyDhL!C))X(i`1ioNJyjE8 zS9dMjWU1(~rz)-5NK4U;?x{~tWo+3rfBb~3&>MHV%&M4GIJZ1`*4DJd)9{uom_7*N z-N&{L?p~!h)f#$ZJVFoL6u$Iq5FUn3Fy$%0H4cIk2)HxXM|n zRY4P4jm8#;nU{wvPBucCZ!O3c`PSq0gnr-Ii8 zFbhVF&dcm4!GE*6vT|>az^c^Qhxg6xS81G*bR@s<^Q7d9h10LkD8D+rv^hED^Mbs? z$#fe2iMjg@f^48(Z=TR6dE244r~+blIK|TOL<@cLtDoEM@A{lcJ#za47enAp=7}CPCe}ZS@*pj6@r%+&Durk5fdl(mh z8A^jei32(=gTuCoykZRR8YzjYyef{pRqjFJ>|g%(0&s>nBb--0G0mF*5Ab$_b0G^q0JO!mH&cz-&64u7cA^ z&^5$f8s6^(9S7Vp#32jRP_PGAuxIBngkXW#lmo*I`hr)p;XQ2JU+KApOE^+)oG?Da zuV?bqN#UbL4EFO09^*SAOcy+IkUq3mN%zvsF$LrE>L!O&cg~$Ye|Xf;^x?5F*_oqa zXO!uqNsX^(Y`*}0f~+XNWm}O%72xLO*2#xDwWLR?Ss_mW!KLr0x%%i(yb``aL;}r*(J5CAcOzGBuDvc*i!#9~m` zwjs7ltm%cHqn-_nb;#&;?3d^6XT}XFn~`Wej0ohld(GAn?{9DXV8rBcp=A{zt9BmW zQh#_@x3~eMKCXX4w>vApAG%d5k)GXxM6lK`HZZm5gaKd8Up*D$Y zwP0>KMrORwSY5@xYxnKv;ASqIujAlmu^c@1)sO9Hc3oODx_r#28jsFnI!zpBO9|Kc zMMU`N!g&Y9-G>bxTGdl?djA3zliB}XdYnZh9^;-fxcovAhy2HLwp9dnoi?g^L1vT* zg{Jy1DkzjO8M<)xS)idJ(9nMa*3j@lz!|Pi0{6pnP7ZcAu*qO7?i6BmeS2aD_+t+h z07LSwGCqCM#>IzszrQ2zMCf>lGaVKZmNS){R?>lQC9=q$bC$XAhxb52e47f2j1jFz?fR+6AK#KUZdz^@^<9r{y+>iyv=z6D{}s^9d7BouPMjJSM+avl zI9HtFjm9I46ab;;o1o*w_rf=EmHkP4uhK z^t$zxMML9#5@J{z6P6y-Ic`v*(%sr{OHlcK`-t-K?B ziiUL4`^2ObHxw{`bn5}8B{CrnZCP8oQs5M)3+moCKBwxz$q!%6OX%4!9|bSHQad$H zmozAR7J!U=0RH?$my;hOTVP!wLzWumckV zZ7#00WUr1(DTkcCX|vNzL&Ex(_1snZ`NE0Tf#tVnuiZ<{J@(T9rs;Um2V~qYQVB?N4&nYXs15PGD+{(7AI2HnLArsa{Bg(ikr0vjv0vz1YHw-IIv@Bl!HWp4%qeqmtV z!V)F5cL$()1S|v6fWpHUv{IBmzMFTvcTlvGqas;|+>H^FIv?LWB;0Y7rz}ESaQR1-=&a6;NR6R47rhJU@ zkZwogfWThV97WjhcjE!yUT42>-T`zo(6E}=W zyG!G`9IU#tSqxhtip8i<55~+1l!OH6bmEwn>Mmwj}MUO$g{zA|-WqERXD+}!&YRQf@rZb)Q?sn7G(j4(M;4ci5X^KU+- z7Vvhl^(|~Yq597Y18_odcDA%9vlY1daH zcE=~0#oZ+mZ*|Y^Y9{~Y9Dr>m(BvlY9@}(Q^f(X0Y9?kMn|=XZ@Dwiqh9wx%bxx)+ zpd9#^c2F2Bk_Rehtp4ouqA#cC?EN|?Rxb_=``}K)l4(V=RiQqxufo?`cgdT-sILKTm@8#tW~^g&xx`UUn<>P2uvh?mc$`oILz{M`v=d%ReQnu1 zCC9}%DlsuUD%!z)xLeTRE*lolSn2HCIVvi%AxGDvr;nqL{Jk;O->S(S%o^sz@na_I z>hRfxhmOtvK2PK!QuKch4JiB-IiA`Ov3hYFT&U%P1Ur$gNvYC?d8s4LF^~l!q6sWw zBgg?nhxjfa9CJbJ-3Cu|lnmF{S@q%bQEY6aN);KKOshbL8bketDm_#_B7M)EI=_?@ zAB|xm>gw1{7a^7FGni*_QLf{CBwAN**K{A1cN*C&@0)sKNN%7;R7Umor4*oXLER1*4j!tSs2|u9uXxokV`kuL`GrEdJLI?0ApTeFt9__~E zNIYL68fK(nahRN-I(R_x!M~YXP*g`Rk%sy4_2J9c_a8ld+6`%+zyQ6D`K7f5w#)AP z=ETvPm(F~06@2St$l|l%sZeRgl$XNt1mH(B)Ia zebIyY`7frGx!-A9+Vu;k&*SNH>8;xP`3L?>#$6E&P zgK8pzDPpYX?Al$(njoYES>@Y@O>y&4fsawKFK2&MDtOCYPn{{Rb`8~M8%GYxDRABF znwK+hWZ=ily0oUnGnN>QOUoARNP`_~PfEuP@CyqGk6cR4JYeZtx^&6()RhOA9ex{o zp)W3eSCms)GJ4v#*MI^%keg58*d^9uyIq7Mp={{Ljb*Y`11jDeYbdL(r3 zZ<P;%8z%){=L7$Ol-#(_TzT!V)gdUlSJKkChmXB{T)UtWo0yM~k^JM=@0c;) zhfCFlu<#X2H*90Rf+Y(j%=kfDlhA#531pzZ(9e0V+0G)K2yP<}2pAi_vcUnXO0X72 zN^Y67(^#5vAUZ6)ba{T(^0j++&znAV#S1VOwA-kmjjcLe{!0+i@@8G2cZHu z2;ij%Fe%Uu8r0ALf1+U{>LcC*{v*N%DomYlj)nK$u^vq);UXw(2cX8z?f?bD3aL2! zgx&Q*d7}O6wiAvjY<+nTiZ{*Ju%Pdz>}^E@dS6<(@*=98HPceCd49hsskT)~AtA}h zA;HPE>&YQOW^+(TGAf&%KA=24X>j`V+_`xp_S5m2tTAOPFI}#k@sUq!bfUKj1dN*mN7+QC(s z;6N}OzyYw?<%cZP{g~QO4G>aI?7FJ~k&6oprn`Mqwd~rZm9sx~n~n<4pSRUcPain5 zAaiI5rDR^&o|9Y6eWDVimM;DJhLvu;U|o4>W9iFdk%DM+b4Up)96oU7bS#%pf8~V$ zy`f$WaIu?JpsFjtOHWJ^Ef4NJzRtknI7fkyaWTs&|+F8V09Jp}K zs=}kA(a!aMh0M|($s1F`%ws^5@C#aAE$-QK;AZRxV_`qp6?g-;$phF6r+Z{@7&s;t zs>XZ){6ezJQaUz3=_{9OnfwaoTQs_7IVxdZ^n^>_nbk{k7u8<26b&0*G%a()G}LY7 zWikVWpuu(9zOSpETnEL*A960Q7%+3jzyY($F$YZ`i`RjJ-gvj43^2i>6l;PNC|pMc z>~kz$h{=j)$BK}tc+>Pv)oGivwwKmltgF4ewy12?v`zE-=B82lvcc(PGX@VX<4>HM zmwBM&yyuzeD=%HNl%4UQvc^o!%xvj77(_39dKs8H0r`B6Nb4#@RGz;u8@2^n8D`Ff=Bn!R7eJ+n?jRAT zfo1_9^_@AX0I}wRe)hzJ;8x0L16RF|ga$UIBJ8!sz#}~#{K1*MPb}|r z-Q2LSnJ?BJI4d~HT)4zMK}(lhLYzc_^KMe>_Yd)R{HsEq?MyCX_ z%r<=jH*gZRH`J*&ACY?DaDpHV!ck-%{4Njs|9%bo_fS_PCc@wMB#1M}%>E1s zit*0RWd5(8d9#sMMoi?JNxpCb{x{4+UK#R$KO2M--awiMZ=66J!GH5+BeNW4w}-+{ zPGp}BaRQ~{eF+dwW`Axpf^-1h>I2_@kNrL@27rG*8vV+C|2PQK8TR{Ax$l#E+3!ce znGhZO{dxB9{|Ud7MBbZ6=rZpR;R2f7&m1bDD%DO-8V|V(Uty8EScot=@`3T*D&hcf zow!Tz<*-YM?_qJJ1s1-HNO_v_6t2by3(Lw9KNUYkVJ4GF8W(1I90|9bb46fQ6!Zqk zJAcZvT)k=;G=BV`w%^H}S1p#SYx((u2j}yt#twe~7)QWN%^*9B;bygjdfEn~pq}qi zPbli;9`&v?K=T#*c^3>;hwX=;44g){{b|Icl`AL3#K*_9{Z36IE#t>q$a%bkn3x0} zdG4J*Vmp{gzK?!jVevA%5&|eJR66l30>a|Ly&r`=mco@Ga8C#~#HHXI7WyG))~uXe zckb-sx%21e}Zb}}QVm%Jxn&BM%UqQ;32A5Vp(MyhbJszoxw;Rz*G zu&+*e8rk8s5#ieQw?g!bjT&@8;9_jNdYO9p!Tx?p{Zmf=UbdsLkuLiNjkt9a-i=(z zG-N(rXFJJzVw-%H8HH(JWVF0$pn;YcX^!w#Rmz;yRE1cfbysV|TCG^4cIWx(2)R~a z@s`#R1mD|R?d5LqpqyaMlA5JTB!C9e4F7>_1CVe7j0$8O{s%WhJQg>f!(z^MD)CYi zAQZM}&&o7AK6!Zga~<_qTNAIH}3Jn-I6-`yC5s%)S17?={Akj?yg;6Ni4 zi1v9tK75sVHE`RcL#sDzHIZ`L#}kM7F7rXbWcISx(aa4TvJw;CJf?*p^L|9CS>@-h zMn10Y$ki3D@zFb0D13AlPl9(G@yxDn?tUI_wA7P!b+$;cy@^Z#*u_sxEJGf*;eiDN zSOH0+!O-RhA=n1kA))k(jYhD?p3NzB0xHqjU#9oIdGXf!AAU6Q@OTJbZz9#dnBM4v zRU7*c{&?6+%Djw%bMxyqR4yC2)2O@iY4g`44Ocv&Xg}XQ;Q{Xf{CY-1od-?xC;FK6 z{vK{%JUs}dRxCC+)+n`pRt>+N@bvefG;VG(jacMtm3eZogEXn)Oq@7@p$I!C!PfJ? zfgi)dj}zi|;V1uM;s5l9``faQXHVQS_7!s#dHv1|MYZeqqyhYYpcO3qyVq22jSAfu z;&=bz`THafBM{@~yCFQ_G`9N#-#mos_j*DKCu^e3?lLK=6gj}h$4e{`TU1gnFIq|o zEi@>?(-c+-o|;ftyK%tO=6X17Vh<;Xkqi>(SREdP79h&ncv3fB>pj|-Gt4%Qvs#*pa7ZNHA@LYiC7MeeX&p`WQ>VLS&atp=deGG5dGpsy6_|6uWD z5~9Xc03UCSSS5iUs~0JptQ4jxE8d`*ZB`2a<5Gi;aG59$Fn|nE1NQAOW*CD8296kJ zD<$XeX(V|R<;0gWJyI@y<1An2A+6kyR6to;Yshr3NQFS|E>X)&d(pwl~84s=_r4hv$M>f((wX(<^EDVEw?C;htk*AK}m@$4y>nSsc16UA}^<4 zfZI(8XknyX0$^?hZ(HkNP5wz%9;K5}*5}W6p7EK}B~B(5G3k)IzW6KnmIKzdC1D=DVS zS0b@}OaZ~bMx`Am4w?VL2CyJn!&_FcxcrkHu<)|wEla5FfXzSoQqz$$cQ{NC1SkY0 zq)jkaqc=+-*%Xqz8UfEr!j3wtg8+QZ_YkUt*9W?2{B z{;+G4?`>nJ^lm*e7Fu#EH|TeCNlWfGeAe=bi*^PmG1uT1hvy)RDu6ABNHKe>oINR? zUIxjYOcuh^dnzeQkXB23O8Arf74TtH3Sw1yESPXNFjJ!9i^po$b_KY zr!wK5w+RjeYAHm4J%!9w0AII##gm>`Yuj22A@e>|pyUflTH%Pw_K^Yj+d0ghdwf@t zCS4qU!N~__# zNGIrBW|_ks9f`jZ#G;Gc9!B{b*jv`tLTm$fyop~$o(TgXfS$iU4l{5}2pKFy8`12NZ;Uuj*~R|& zui2_7R0N^&&LvsV{%^meW_f3ZBh!_XTJNNVgSPB$q$l5)VbRl(yQi!^1bsi#7bjM) zIsai3`u^{EMRZYNO3>dMmij{yjj~u=O4~jSK2jM8sr9#j5@E}68a|DFk!Vd~U z3aQ#6mU&s6Xg#8^!h*5HraTUGAPkFXSX>;4DGZ^>pjl*!X{#1N(xwId!6O5>s7*)& z?c7%a+qVcEoM|n}fr?ZBn#wF=KKqS1)y39OOXVZ!4^NPodHLuk=Han>JZHE&NGSM` zx1JfJaSQ$t#WB-hI-r4>^z;;yk3L~eqbQ_6o+yU-ka@X{94iXfdWTDFn=pPL1N>tk z1GqXAOAImx6Y}7iaHnvOYJE6-;-acu1v=0@qg5?-b+$^v>*W%{$w?xPwbG!FPg4Lp zX&iR680~iM(dHc{Ks2bL{-43}pAuX4D;N=j-yd zYP#DOlkdJ}UOcG2>w9F~#%gY7)!OK6H+oeyx zzIN*L&3g^Zgx$3xeHGb5Qb&R3Q@(j5hzHGbFYFheaYkMh%Z@*WZ6jjS@7m_3w60kw&Vpb&svl z$(2*t*S|t|x~BtUAQuC^cmZGV_N4*lAWco6)FF^0YWxD>V+yTSi~L1urPU*_UMlqv zIYd~Um890nQ$p!7#U71v;WYTbbNAZ3Hr7XgA0p>}>K@ljiN?{tUGXHQ4&2~-ZK20r zFI^i(rJR|(ZZBralu20IQ0}aflGTl^2968cPGpSF8pY|Aq;w7_7BlZ(b=wZDAk$il z-l0Dv(|$mIF=Q^0X0?JxI0=QG&U`{-ad$^zo{Q9pQgG^I5350$z@D%X2&+u!f7np0 zJLo8MTEz~?dervxL(B*AcsubSDyog?tsbbP3t9V^Pa6M8dDzFNhCowKbT|7s(={qr zZ*Mt(7oe;5kbBqjR4UR{ZKaT?ZPU#?+)KrR2_Drq2$rZ5*A!sG)@%b*bY(PG+Isz(CU6N^CveZoh0}-qM!! zS}bivaN~$C*ep*%Bi8U-00TdsuZXh1<)d;rEq3BloXg?_JkA8R91<4{dNT+Nj`Z6- zmR4q>U^g)&+jb{qr@l5n3mQJV31a!j8$NpNEenD)0jKt zINL@@Tt|~zY@^qZi@*jk1;_%{s5OaY2uiS9B$obo4m=EMB?0a#wK_th@UC$}VFA@5 zfl4HDu}Zx?!|L4>K2Asb0>4+Ub$@Vma_dnruL3Qh5(1__XQb+Bs&A~Q@@nZSn36j;t?5ic5d2W{-F;)k2@$dP&S^wqufh5Z>@rMY*juoQ4Jn#5E|M#X{DYZOWN%NYw?_c6W>1eZT5$zW3m=`6!s`>Y+Jzu3GMSSDSDC_f z0I&ks6WWa~Hn_0>Ea&A}kz<=hz6OE~gxC-@deWwEenno)<-b1Mu<#N}Mw^*h=Gs%Z zg#b1?z`hw{{Es=P6AWp}QJr`sOO)M55g7A>K z@+*ao0*PatEA1wwoSXzIX9@{$EX_(j&f~!>HJk3?_>wiNapGpE2x)b2jEUVu4pkGA z0#EE?^#!e;_g##Em$<8@*8c{m)K8^O>X8cLwA(KechZY<;vcNVIeaT2| zzoRD%?#G^Nr&4FL*2!509|uQAu}I`WxmCgiIWEr5l#@!zb3l|BND82sRA8!c;C+uJ z4~7D`$r=d!eU2h3q=4lk2<}gYu_m45WK%m)b|8l)wES1*$>sdxKr*n;*>=jDMA|Qp zGs&pOz1uUt!<54nrJe1xGMlxetVZtY;OfAW(>xyBt>^0K;6U;vt~}aVuAoIw_)dWg z0n8N#Af^xihGp#@E?i@%AsLFrpcyb|z|5VE9Em1Agqw99o?Dl^gKp$KX-&aIn)3VE z<;;m&o6nk$u(WEEC@oY8f~0Z}_=qJEwMwNE3bd8LIw!JD04p*)+}*vULOGNl#5_uE zryAxU221j;biG49T#kE3u>MKLcjfCJr2L1V{UhyEuw?LJtR`o`(=6^H2yykTF100wj$+x7 z<{gFe9lFzp>{6Nly6i{UNYJzZu1B!fvs7^)mMq8b;iwq{Apnx2 zRx-t=UbCB0+p5-*O<|PQhVNzr*+O@CPYD4LWLENPXrcz5OOp!IrsVpcjjJ35Pmm3Fb92p-hk zurRR68YcxDtZ#J~+Z3(hB+F*f%rUg3buB#E3m$(HY=)2sHY*$*1y0yh5Y8^xR$x29 zh9h?Fpg6D+&m%wSU>xv+cP?7gxM&ea=$16d#R!P`9e9Vp#;Bn~nqr3F#z9yi_4d}P z-6}{z;wF?>)D9%c^R&3i6c)Hm5$9asZS0ZT6)=%F=;U4{i8e`bswsnaL8Z?JF3{40 z<0POXj&sh~(Q;Id49E**sdC0B;V}94%pGREoL-|~zWsvvT`otWi$5Zsf~?#C16z5_ zX6Ew^aBgKitd$Je@CrFFzy7x2Ask|H{0oSTVW$s(@8MuiFnc*T2%M_j)ZWr+M2MwM z605fWOq;^$qV%-V*#G=6M*5g*4^aa9{YlVys%2g7CU9T3bx9?#B|`;JbWT)v_} z$vpe=KJ&ck#Kwl*P20A7Ky{BZM@8sN@;>ABS@mRJQpY+>%h-;8LVeN?jYJmI6=k9g=QpqaysadY1=~d5smCyXz58d5 zhk~`hLwqk<7>l>FuG(niORF`Sh_GtDyH%m|v5Lgb1Ql#`6zi=NTZzFP;{Sp-EEi)3 z830R|mx7R!i|O8}yU5~zx!+vJto-()qc_>#Pe5eq2C8oaJ1m84 zzo*$xRH0V$J+VWE+MAODp8%C}sB=V)a`^CN79qt4yKHZHLm}yDB<^`Pn_fkp#XTI% zRp2L%u;9cgIB5x7=7R%OO2Rb;(Kt}0Kby91M@#M@l6myUsRR3uF$YMmP4in@=hJRK zUA)A!kPmD}HrF9oG(r+yjFC7wbe4W)v4Dk(HY01L9GS<>_AYvFf2xS;Fh#xS~VQ>{^E!dp^&@y%?!%lGQ2k4aj zCFkzG{^r6|8l^Hv8yg#|R`1!oaQOk|`vvr-Ba_B4zdwSFzn9-;RFg_jrUE2wmKN0nldA}nHeM|Vfk%_5=5w?t*#9rO~|GCE65 zXr!`La~S=@Q<9jbY`3zFrsUM7kpqXzH!Cl$?}C>6%ygit?I+S}WLivAOt;0m$p`m8 z??_yd;4wyC51_3ECRpOkUXIni@@jW4(zS*VsZ=f^55mhTc2Q9NR=yb7Nea+ml0s_u zI5P6qQw*O!OGs`2m>v9T0~SM@K(c&c&(#9q!F5j`G#|(0 zTtZEUOnJHnVkKETt@6;qr6VR6sQE3|EeHPVK{5<%X7m*gPNKy&_l zx*jNQ0x##Ms}2bvq7^mHJYJMh6Hwz$Xu_>NVn?gQLu7Qf8lY$hJ#4m?4>JmOEO02% z5e-QF?8nHWV>v9~h&;vuOL#kDSPkUd0(rall_SYrb)9tqUJ*Xkb;hhAsU4VO=LqJ) zfs5$R{sY9~)s6zbwVDZ>-J4<~rXWxTA*ZP=9kES>Yvg62P_2u3iFx zmn)_Bt59eyYT8-k$ft!u7Y6~%(71?sxTkG0HAmXc;Otxlb`m=|wlxS=6VgeX`x5x5 ztw80k5U8{U9^@m?*Jd3?N3TF9qp1yL-4Jj2ZRT2!H^h=bQ!3hggzaTVAHX|=jXo6Z z2S)7NK74)D_U*%xwQWA3Rl=O?SeD0{oC8(}+kG|oyZ+`NxvGZn7t`<;N+m&32JdR2 zR3!Gax{CR}RtFVXFQ=$52jrk+nU}@NA6tjVg|GIOJ+AoT@d;>fLJtmH0e9R&1(^-o z1?@P|7EMiMj-ph0%AaQ+z4_*5HVyG<Ek0`5t3DvHLgN% za(CwiTZFWh+pTY9ADs9%rN%c7TgiR zjy?&HO8XAKy6#8BzPCKW{=0T@KI$}XYTkU*e0lg1X3tSLctAn~*4|WM5>e{Bc3xpN zUS;0T>W@~<{UEY$U(3oBNk58__!*i z0vKb%0Y7jNQvWOMXkpLJA{6Zh;}>jjufwrF_T{)*k%*j;Q$tPdLBIF>ko&Fc;L3ly zi2nG3?3-+8UOmgYq4wqfiz{h&ceQ7wMxmkM z<0E$@JiIIlHBu$DRcO5dlF)ncP(sAcMJ&jrzUOn?6 z>dDfL`GvX*bn_y5nf*L!TxrO+Ya9qD?6^Akc*&jQ5~~^^N3~c;5%msyN65lWSFogl zp8f}%XIMDFUE4v@wymdX@BD(wlA9X0Y-zL=k)L1e(IsX|c-+jm3d_N-YS4W~Qv*4r zTiH3(ZBCc8n3z>jVQXiVGdI2ln&NuTLx^~a;Hd)#nS&oa{c{y_c9;`XuLSN~=cr(k z2>niNvW*~jwk~P$Oz}(XP8UGaD1x2Ue)H%}EOm*#0q}G&`-w%+PLa_9DUU}22qaHL zDdhyfD}nsOD~4ulDu^TCsDCV((J0w!kcaN+JKHyS{xk>mX%i{30` zK1k6BXr5Sz#Cw@Z4P!q2oGc`VF*C_wtu03eC+d56lTTXVbOjTG`RNXQh8&<%Fp*|9 zs8t%BuS|pt8aJ7NaCCHoJrkksZW@D(QV09GQ6jZe2%QJ44p48!U;%J#jfOaAG=MO2 z|AFPfIaJ%psn}RpR{`C7tRrkAf`b~5HsG%WIZR1n>Bg~|2u*lI!bI;x<})XlVu1Od z+n+KcKSU8SAe7hzB{iT}NVX~3$q7M2@b#iEFOFv$4}-SRYTsS~J$ttR&s&akPj&AV zO80F!;M2!P+f`2wz?iC`4{-pdYJy>+#$T=S#+Vws-$B&i#UUyZT6rQh7F|4s`Csw; zA82x2c>$i>fW;VqU961z0wy?QyaUXUxZ#T?dq#Ogg$$ga3;CY!K+=@-=SJq@`?q)k z(t#2^ssECPPm(%(MH4N@POMDhIjoXq7AzsZSA@I!#o4qp(aK0dH6alc(b_5t@sx$R z3P>@(8h}B(tPqC^P=< z>C4Z30=Gr_Zd_qm5sNl{e#UxD=nQxz176Pb_y2)cHH%j@;AQ;>UiE;N^}piv^#8^S z&s=sK8wEdur!L>(Md(uvaecC~p#XpS7944PK6vNgAx-J;eR20%f7FF}wfTHgnQ@?z zHp#_3;`*cwW-29L9c%u@J78N>;Krqv`e-zNYt1yPPy#U!woo|FmBT5+p=PC|!d>Zt zghEGD$%pcwMX9j3IMcwcV?0Nmj}q~Yzd2)ec69BfM+t4k|zGVxC0i(4MIZvFJAh57l969@Kvz#Kry%vt*PiQT(TjJbRH5@RFp z+m39gL*6*zgc}*@bf{u-5ofTt+S>s>1}DA>@?N#dL*a=VM!r@TM^w)zNt$pGyZE?J zE)bQ1Ez1Idf}E#4=4{648YgquRdLmG$akR$(IEl;NAla&7{N&!oBzJeeYw&ovmPgG zZ1QWfc1V5SrFJ*74yf(U_foc36@b`q^qNvy2qc2q0_}i{3O_`Cp9N&a&cROEcS;K2 zM(rg9$ZGyc+grCVb>F4!kcso=O{5S0^e$=NrEID>z!|2V4Q?uhLdI9Il$Cf|MYygY z^A?4PNRbjkdPk0`ko#u+5Xq4h^ZrI;d)4EUh;S8KQ+Su6|D~h=RAtj(uA%^qr?*sn zxqzQ-%W0=6^LoLL9jJ#KgK)9E@U5 z&zXKSuBnNpTwTzzqqa?qQBc@&NgClr-FiI%+p?YT+yIapA)z&kpr_?RIn@wOlmjIF z>|?p7Vvz#bu|E|2v;;arPC@bqd*QxiBk#5?$}}mABwGo_2+xFSCzS;`hmn9x-LpcZ ztKfT!oJ4%S$cYM47`>e=LZKT$S@bf6)Z%6@+f@XXV#fOUhqe7x%*=WSffS~a-jDKh-&ePPv}qjxmH5C z(y2lN#T|_vDHJM;)RnOK!7Qj$=3^1qqkg-Q0AaQp2e55yP6{b0=UwoeChS{l>+4Ho zZS+?tP&M-t^0F?d*z)0m0XI&j$HWZ1|EhQQh?vf?)U-8omu*}(yXrlr?j`esdZz)+ zB?W^!$MhM{buK}^nGVy<3O=qr+M%t%&{n^N)(X&CS!g|dtk9ldQ-c2mE!eYIfR@X# z{ui`Aef_m%NyUbJ)!CO%cJJD|>)lsf`zM(a6R758XyM|`Xl?ntrq=N`<`18BA!q{K zC8K9jYI+~oz=eoTK--HT%l^1`uc+{KfRDkGtQ2{AL)V9AadwufW&TicvV+N52vEef zIRmI)*ymQbiFR<@a6Xm0s?6@y;SYKpn!RD^?D+hc=)9y)et&u8hiBl)e@QG$jGG&G z?W@|AJkNd0SMCo8+NSesy>J^j!|DIi%tB_6TDe2xgZiTGNNfXWyE19iRW{F!GP^6P z+n}uxIq<9isi(J9?QfMr#QQXi8#BOJ*8e|HNgb-*xMEgZUTjQZ?3pM3zViJO*nIR; z;`GG0d7W;3X{n=D99vO;$S-KE&a378SICLk21`?xF#VPCO#tc;)ElW0rfdMYn2h7? z0V(Kq7>cFBQ;Ir5MtvlyE-G2` z@!s=)h+JpLCEFVolnv>UGRWB#bS&phS6&YIWOtZLNHYf-+-ek#d|0gN2pIy*ML5z% zZM9fMD7>sPv6G)w;GzTxxANGm%+_p5X$A)Z|FtKzxMB_;e9#D)1mNHVx>#-qt*wB7 z|N5OW5PfpR@PdQGR}4Q&7yW+b(VMTn$e|kt|Gjhen)kLZU-Ulec4En?Q~R2c4?)m*D66v*J4Dfp zp~YabRUZrlZoI-Lwhhdkje|2*WU!F%p1j_C0>74fzMzq{pIPQeja!Yo4#t%OYFH{k zD$S8e%A?(BoyJ9B_4g5bh@@@`k_fO0I6ASfHn9~?Jo1JQi`dT_VbcVItDJpmgM(W; z*>*=7cT$QidO|~m9qr>Yb})}ls>of{_;~UPI5w4cW71~NqMy*9!5qQJzPmP@UIeFp zb5Q8vRkq_avF*h4>|4wz2Ik3Gs_}XOR-Q0*=r0%7NMI7aBim^St#G!g#8Qz2%C%Mj zW;oyhV*t2R(1rr0-_w6W-+sJ{0~+>C(mPg+;5hty`8I&HL>T!Gp z25-;Vudgy{7B(>cCus|Gq~f81?*yx-VG*{(qP zjal1%0E$gFOtAe5hVu;|fH2+-a0jC*DRZK)#pygeG~ z_6Pc=dA7f3;*0)M)u0_9Tl6*>_umbW69tR-&efh87^{|R2-?jLJ_2_ievLrnQ_th^ zz3UxBe1%#mw`x4ziX2;C!~p;trC=QraGxcc1iFNH0w0V!^l7+iq5?oxy_HCq{N-E| z`SaRPb6U?v6m#{^%8A|yfw_bGujtQ`)b`7aqN<6-$Rj<9$)eHH)uYxpQ;tdf&g|L+ zV>>}e%HM0@9eI+n^e>JXp8lVCO1v{>Q2+6Fq-||H9s=jLriWf!r)=d5R z921XjgD`{csHHA9ZXpHEM;;Rr{JdRteGf#$u3(b`%yM3Zt57cYbgv*_9>YPVa}|{)vzg52ATjTKOLRL)oyM+F3w)nqytY0SsNTQ zw({62Cnhfl`#Co5#dBda7=E@J9IGb`CK`(9gpOdtNOq4f8VUOde=ucxQ~jA=PrgPz z$e($Ai@CVlvZRsus=i5$JpcLwg?eeo|Btpefotl@9>;Uvk^q713khT+Bmu$_2!tKN zCYvB22(kzWqN2FqzJMFneZdM^*VaxPgdeif#nAMxH3G&9ACHS0%41KB?s6q>ILf~FO zPp}XaVM=My1?wnE7fi-P^dKlZu?V0sGGXr*%PC$z;iVMT2Xhf;?LoPWFAT+Ic*nh6d1aW+;|OrP;rCTeVl87MO9#F|@kja0m!G}I{Qc>_Xw);$ zovTSL%@AosPi?q&kfsLLYj;*vz4E6ug4e#g{D*_zwVEcH$E~`0_{diG;+V9U07YQ^ z>BSrOW4eO+e5wezSO-->ko_LgBT)84@x+2CgrWpwoUw-z+d>3_U_cL4QNV}?#YGr%5jC;D?rK5D4{p_`PgQU^LX&8OyOSVMOmkKjZ+Jg zN@c^zs(~}3$ZatxLe+f&>AG;9P=LY(@D&-ljuM&%!F_Cl=o-ZvAiO2LfD|ybuc8U^ z&bTlXn@+-_1>1qE&bXij^oPI|XDmtv!i$d|divTMe|~^@b}iEW{f{W{ofj0+&cUY| zTRKCIA3w2~d46kQ>z?w4w_dyL&p-bCr8CTb8cjK-vhCDe#|LJtDyt5zdU0Uu5lr7k zkgt9~Z!}Nq4kUU>5>zP}-47-Wa1vXbf~5{yXJ;h79P+^YjVm2AfjI*{UIO|U$y2)n zczp;__+{Y0Y@A4kok|c@R;t zriLPs=#bFAe-)95K4U(6^9m!F&s>3g=!?wXyu8h3mvIpFu@D6-`jo+vfe?vW3=j@I{&4Semrt44}(1O z;>pS|NF;Mhpe$Dis!Ra!tw`c8##QDw-kp<{!_V+ats5lPHG@}N0pyVTMxCekv*(3c zr;+)|Ah;9Qqk(KwF(gv?>o`)v#zP#=CgzMad|t>Q(;m8GK}xf?vyqG4Vu-#%OUY!@ ztk2sgpcfL-)-fBuU>-)suWFAit$4Z|5Q040n>1m{D0HS)Vd`W|WT zE6|}=3kXSb3z@?F?ZAa6Z_i(qU$8d+1LlkF`oB`VO@F!n$oqE3fk*>VeKhcLD&9$u zbhvkeKhNTp`Sl`!KuGnHL_bYK0w)h=bwD~da6dlLotQ^Jr(zp3NU4%*-MAqGv7HRW zZ5XhBi@5$7cpDtRK%nOEYTVI0zdo7SC<~;Zkdlgx_`6o19;8S+&u$si8FfZGvg_B0`n1Cq1GscrYTwy$4pf%KzD2KYW?CQTbKG{O;0Ew=Gn)(oVA5vac zA@~Xw`t|t-QesJf*iWgFV-a`p72ukScri!dVddQ~Z6c|eB2JG;fj!&CSV9_xho6lz zUAKaC41p-K0k%V@MLpsmNO;HIFBI6X6^msQ6fsi${#Zx?GeNZg=O)K|b&=K6S#`&R z6LIlI8hIr693fkmYeB~on25WWIT957;X8*8Uxu{Y+a=9Yb&xs|^`{N{&;N~iOM`Y2 zJzp?iwcK5eW}&G4piVAIe`pf(B{ZjDAta~5>V!aLokpNg=mN!%gsT;62LgfSWdmxJ z|L7E4Oll)gfio9QGp>djH-p0dMV8ng5qE|GDc@N?bHSQTPiR0B{e%A#gX@soSoBEI?r|-w(b_dekeIXfz@H zDhYz5OM_p(TrV@oqz0ArY4FuUT;w6Kya<1H2L%Kb`TMIVA*^T+yP~-K!ftP3W0TlU z0FGhJ1z2lu{uO2$uP{t zPFEh(_^*L=H-Tq2p4Z||42$Xu67obLAsStuJyHd!JOhRhwOAQD5E>aKqypiMC=nT? z4GPo-`pG4qp?cMtR*_-c! z`tU~8o>_OC{ILb?n)lq$_Q>rfksc|)$+MmL%C_C+`H$!2BI5h$JHFbuG8wKe&|%MJFqnW5}3>-hVxAemJy0Bp~IA9)Q58eZxD3|Gt9b zVi*ZX!vL@$zy#Zc(ZSU(78>ea$gi1a(fH4q|6Dk_dbPI#rVQQVX=$vZ(DPl)5HjX| zcr1E*H1#M~3RBVlg|P*|#cNN04Qnq4zmb(!=Z+8bgQ|gEi$D+&Oi7{GK^ADSiY0PB zPblR3gWm@9NFrE62PphVkxYh4(&$`KsmK*k5(&wm6*11vuV7~!lAOj~9|!`cIN zDWw(?I>!4XJ1sl$7ifCf4PmlZm`-Nn(47>8tXD$hB*95|=ykSsUmBV3+1`u(#T2CN zOS|?sv1m0TL{E@PknYU7cGMT;xYo|ee$?KE_XTGU-v)f81RQJJv0zNHyF$QweZeG% zHP{*wc197bhMiHu&iFyEQ>i3KO!9BGFDx&yh;ewr#$Z~)II$b!b?qh7N(*Ki>bC7i zJwG1Zwhg<HmQ;qw zEd6+QxcX0!ayOC|8*GhpKErYe>=B3zZkxbyg^PT!C4ysCYG^Uxb!n-w?<$FwO0hVQ zoj|AhE+#$EPafYBS2h_1z4(3Min`51L!Yj>8}b<6Gq0#6{`IGn1BU1iqhwaud| zW^P0Egz*To201f!Wf1AuLO)@8{+=Tkt^zo(`EUkB@fzIm;vTTjm6{$aWeo_hQe?Ez zV2o5nL6}Jnj)N$xCQ3nxp_gcXsN6pwkc(hl#MUjx*j`AV17QrWfXi6&GvsBxfDJEp zR`l@62}Z37i>Y5`AK2&uWWQ}L3VHjDsjL2P^YQBK+2}Fm`xRZx58qe))#?6g^MSon z?`I;2xgBLkyG~znK3TW0y=+FAVb5UGgrWAwUW_xpkXqE;RkCdI5x@>dK<&UAHeQ=M z$%?43b#gVePGr+5q$0IQrxU5kNPnGSKni)vJcU(mlgmVu%%+BPHmxKea6kYD4mgo- z#1A)E;qZeUlDq(RJR}0MMlWaKddqLINe^kVY@f8@&B4~Zg|r{a&im^_hZn5B>z$k# z%w5MPmi+bDZ8PTI-Y_>OwGx#RQOUN>icLo{A86a@EQ?yYJvC-wb>Gq0Vt^nzg1 z0?-^zfn>{PPnA@+UfrtzA)xW^70Jn7N(pMZTqvaYkkk$ohjn$<0RaU%2m&@-QoB!Q z|3zLq2r=pa^i&IG)7f9#$EotrQ;pz~*f*Z=D)k_Fh<#)!D_zyRriVbV20n@cA5qXj zK^iqBfuA3eBdPdNBytBh)NVDQR`Y_SkD`DxDxn-+eHfxheBx2W2O0Ze0_gNmtqDT4 z39Jg|D^Sjg1uRr+{Snj@Ij%G`d8-Y<`wX(kOoJOpGj$!B(bwAA$Lw7<}A*VsnDv9X`*1{ITN>e%A2tD>9x232_TKoapi9WvpsJ zBSQQeEH?X#1p4w^PQV1hW3#`oX$_jA&r0#Nc!5MB*@&OkiG`~G9iDHe%$>>ep|64P zj)n{^kxBWZ3-REEQKaP|75 zjHR`;b~v6=TRo0a;VoiEm9BF`iB-QU5*j<@Ha|=Aq}A z2hQCOl`@F_)5VYAL3#q}xOW{Q#sdaVLS@7Pc$yyKdcjJ0FU<>*$&5PG%M0QMlS-XT z<`1-(jj0@a^RdN+o5T1PlrMnPIWAR@GXq%@5bRlGe)70LKn2Uu*H!2%g_@$MyFO%! zoMOHzEQrZ|9eNsNrEZzn7D1I?g~2)YEp6n}S31Zq7p7#?>aK+XWZ-W`?Eo3);p$~Q zTwJz_&%=fDRIv92yIk<8pyl!WW$+2sBN!;8cw(g@+@KE*4i{5YfKC@_10yn+GE@Gc z3L$BLi&<*%CJwS0lB~=GEe_kWP9Pc+!nM^bJ~t#p;*3Ff0kGxLCCPcr%klsck^}>o zx6h$7H{?P(Bz_d7MwWBTtmm0`eHoLKcAVK_8E3vR74lSSS>hzB;!4MGq9pEE3W<^Y zw;@Nv%KIMdRU7XK;sPKnAkwI0&v~BU3?Yr?Whdb)S6%;x|0Y~%3;ddb=`6$7^4U-N z!w4xu3|z`yTXOwde+_rnEBMOqf!NQ(CqLmY#CPYO!V{e%32h7t!cTw?VrZ^^%fEXB z8X}d_c+L-BFF1o7_z@VIZE)phG@fkx4+{$m36?Ctok}%ua2NWnTr+&-4;<8EuPpLi z8OJ_-AJ0mpjKUA!6QF>#AX9x;VmKcffz!8YfnPv%A&|;LBw@#wvXHKTYcJD>;I66O zyZ($Jg=-7F*X9jh3%fzjAHJ`5od8?#KH=41;p^{Htu!&K7D|F{}@0DzF@e|1on5V zKY*_Qejn%ioszKc11@ksxSkJ{aqvE10{k@v?*Ae14el*t2A`c;+8Y)|2lT+9AKF7p z%>4pV8pf4XkH}S4@&JQ`gS3BgpDV8OirW9FPvvi$_}=_}pDk7zgX zWA`h}rzbjQZ24ecmFFC@&~vV8-v?V}OuK+2CyB>B1t*#BFHEC}tApcje`hOU^SrzD zo!iG#od6@OEnYj2v_`ImOWGSA&ZD3(F2*hl?&U@8654mEh494-fY@EIw+h^Qma!?9 zY$79jCV&(Mub&TMND9RBbRZ2Hdc|ISj5nw&nKX_DrqkL-6sBtg{tr35s|Vd9&Q9 z1--_Jj?7+7mQ~~G9dFc(AFnZzu=vr@HS!+1Dti}n?3$RhOPis!!WS=20=to^8QBf? zT){3zFdEq7o81_%CJQ}Su$z&sgc`e32+lkhB;<4^;R%09FmB7~L>&5f9fp^Lgc?Ga z1Bx?>hgap7d&>OK?cL1AX?M;|OP_mWT0N3*>(o86azphQE&1V_mZGWNwHv$j+?F3q znRRg5w1HN~H7B=@BkPL7i7;(ud-3gChF2DM8~l>O{aiFWh@0|zqUj=%9Hc<1hcN%Dw3xW5Hh5UQnCv0g+YFU747U1bO| z1cfPj=s<@T5Xu;eLPItEda&%XU%_zrfPp;&{R_yFhT3JE!ZYlz!z<5DYfOft9Zvou zS5MW?dKLxUg<;z8>eiyd4Noth^;qTpIl=RuMbz$NNPBSs0M>f!{T0hE?W>DR@Ek_# zv`|MtUw@gdrC;Fr@xt9=NYNAs0%!q`4;2nH$&32{LIY4Cz{Z?XU&4M3B*lNFCh|da z%=5PAZ8U@^)Pd$PZ!-q;35sNPQh+se182Hm2G=xqaNMdiX|FX6zE}>;$#$_knuW8m z?7*qn@Pk{CoWd_l@9oW6&i+{N(I+&2bXl7YE8B;IL z0~y8ATYFyER8+L-`IXzfEM48Yr9SGx3tKY|4>=|+Day)dsGZc9F^a(_Ce1&ya>3c& z+y*a$&q-@vS2A>e>B^lIbMp12k5x6-6ftK&Is>=+J;q8^%P8;R#O7}2Ubb;sGng4VeP!>P&j}KQh}2T zSTf+%94i}=Zz2aQ!%`y2Cpj`9xsx5_&I%ET`U0hz@JI1F-)!lUcR{lO zT?`yLShx9sDg`Zw@3#$p10BfBY9SyMcxW7DL+9WO6Fm&x^D2Ue%>nGi2KO~(yZSD? zJ8mBKiJfEu1e2knD3*t3VX(qkiL-poA`-7NmoEc@SlIBoo@CD|DU=wglbt00aGMJ>>D|4xAK`eRH0aSGrwV0{MR z%^n8Nn?1>a38CPi9VTM0<=<-r52kzy-KzmsrvNOzay1+!E z(J6~AOhQi#Ka^b){$Y5g1tM_lBu4N>_)rIfP6U}0!z<%m3N+PU3f<5e`(I~KKHzLx zv+w?<+dh0~gCiRjggDMUn`j=3D^ps(vML6O4U{q7)wp`{M(mFPBr5QT^H>G}8vz60 z#ohb#J7NnR!3RR)^Cr~Bun41K?s<2Jql!||6HI35obmD60F13?zW4T!j_%pvmC=>oi!#^tU9p=OPi(}gl&TIWc zd)Jd~d*9xet;uZPb8$mLS!G*s>FW68_2orfO%t2CikP3zpJ%>0e;(zYKTn|4-pzZf zau-gDx0?4^%|$EjZcJIUcwtvtl%K??5i7+9Wonhl7N$lX(OI(h?Afy*`7zA*0nBb* zK4>%J+5Hi~<^WZ|o`|4J)9->F$H_S8!`yn>I&NlRaNCaNczWB@ixPe(DsP@Y|AP+` zf0=(vZ?W!p_M&6copY9~F8DoIUHkkjd5pyhsQehU60nK@igWN1q3aJ9i^a4(cJT!w z8aja`IejQ#0#9G@@v9f=Q(I=NtS#?#Cij(Btn6%^xxCzHU$E=J*Z#4QSabgTA2?t| zm z5swr}Q%V$5drI^~(a9J8w)%HL>ldlBr&}b)BgZu**&9k7BXILHkPrE9h@cx`B~y4A zKqF46ItyeMt6$s^OFmSs#$k+B`4G^D=h9?*jAOLZ2W2ux4zJ1Oo#H8H@PNkJloN< zx+V^IoA1v*4(L^Dwm7Cg8}y z1OS5o09?qMgH1)S@K$1YyZ`Tn*H;!`>Oir63L%G&Z5Zrzi!j&?-wbkKlXV=t)v+py zKm;Zdb)1&^CyPvDvM1dKcy#$_z%Sp6Hga9c16m-4>Tt!dRR?eUB}N0OHQRfNXu1g0JqpGc61 z7$bHkZp3F4{rtvuj74T1AaesDjop?p)I`<|qml--Dq3*%4b#$1Hs?lM_;9)(6O{5Z zcrIQE%-XKvP4dm##wQvL4$0(XJj^Z&MziB14zyN$vM-%WC4>+m@77)tX8s);n7I zY8`5tR>s&|cVNxo2VG%tfy-#k7;iOZO2b$2P{{~V!+?WRrt){ zS#E+doB4tl!E$Sqv1~y14CA=OrLgK`sjX}J_Y_{hZ1$pKkqf-R9E!=&A)1^qD5jo2 ze`o}wI#Wp%V6?6#R!L!YL+Gth*ktFH+zcCv0BquTdAveiDR^Ec{sJ4E4mo@n`nc}D zLyX(J5KT&Vo+`SfxzUy|Z_&cUU!s^|57Fc;Y%pm??cxn6PMpMUT5h}5pFA!QL03Yx zkd-VqqMDUoVh^4$YU5bC^`ijO99|7%k~Z;LdDDOoN73n6G>1vnr>Xjg`!`6KdSDd2 z4x`*)b1qrCxnP8HL81Kxp(Dme&9Dxz)#i{<>wu{lUBZ;>TZA^7cM*cMLF5PpV|{Q8 z!6%K7fgvjo)@C$O)4cuH&Ov9kWuPZ;8W8x?@FYI3JH^MxJ}Ze+-LX!TMJ2`3K5hoq z_vsIqld1bE8go}nNo5yfi7O-`L{zf(^4&+?+mJ36?GXmr+wWOE{r2{B6EqG836Dt# z(E)vjrItk4%75ZGnCU!!UTuk-&|QL&uC9riv1pZh;Qju>oRyC($=+IC+T&{OtG4PA z##J`FrYR^bP7lXiYe|n#1(62e*`G3jV`+|K>F`k;`#Tf%1yGXFDw-hh^mE`L9BV)VeH2=vD%S^DG7`!aZO6!n2x1@ecp z9&sim%a9!XC6m~Uz{d&1il9X`>=D+%Spsx5_IJ1(H4E_B5tAr*;&Ea19Ut$xfdE^! zwPl4%NL`R6Ix!RoP`mQBX_Sch_Xq)sM(D5T>8|6eo>-B2Bl&4!vWlzhDA!t+X~pDM zT4gII&iSYh@%A&P=t@?X;URD)Kra+_wma)@7=;Ougww$A7Y^Cbl@C4iP|BJ&4{kWu z6&EDhD-@b1^h}<9dy}2{2$}G|0}oM+>$*HcJ3c);sbJM3-P!9(i|+&v|GK zk>9lrhP5*vfQSQa>IdQ;fB;*&J_v@*JU3hL&nmV(fI6pnslw?!todveiu1HgUeqQykZbY1)*wdetKD){xSIgTPtW9mL zQPZC+C|cH#>OcRkxp`)x=cB+-huJc@Jn`s#v^dD0jAqp!R-#`2fyKcLJ=~Ic>EJEB z!MYr_i&%`H9K;N1SU6OTV-ditK8pzBfVCWLc5Ql?P?21{Y*Oo%x+wdkHMOp`x>7^Z zzA0!<)Q*}do!X?Tl!Wr^m6A`dHWfLMs3xF|PKA6qo3(k(J&Idok~uKWU1WkH;^pqW_j!wSF3i)Dd0aJ5J61(Gg z8ca~UDS73F3v;Hg&bH<`b!Zfoi9{n*M)B4%61tyy8GHqto#8zbZe(20tyw-%vVIz9 z6eEJPK8Sk&(oQyOh0OuN)`;3icEo|*&o4-MP4rmF2-T~BVSbe2vobyg2v>TN$T zJH=U6U*@!xFW3un`hs+ln5^yNnBz6jl_}I&Xg8RihP`T7Uj8Xjw?yT7JzMPp)Y z=@f_686E3xET~!4kS@C`$Q+*&6`2|roi-sYzH`Qu!YDeBq%8Kj)&^RerVC4rQuBW< zfo;V0E^~}1qO-s!r-clLE-D$7Ma=}tg{)d#u#vAtj;>{$_l6{+9#5k z>W{3cUNboc-m&J?I^tVwQoSiEz3Qs#Cb)VD>yG25q=Lfy5OZi)xG6d=D>1FHFy1Jt z*l?yTdqshJZdS?4MyJY_WDK=CauSkiv%;d&w3(S{(OR(Jjno=12%}v|9V`&$BOX%SLpd$ZWZ9!w;`MiCYUdhKs*hJ$fn?CbvKP=k+Op6{H#%v7+DXx`v||`szfll zA!z|*w$G|0;FjXgGwqr|nrFl|wyQ5(4gs9l^>8a)WN(Hps5UF}%+|sDzm4()L zoltB}CZ^b=lX7ovFc^AeBxc z2~`G;f)Z;7Je)S}b2t8X(CY1CerSAgf-1X2``ilPH)A+@M+7dG&~Ik?0XlO%ZJNx!UxCl_IexA_dZkd+&-LAQzn z*OWRwTApbgHt8l6UFbUAadu+`K>W#Q1CBAXQj=h|kqkK%ytb9B*NBHTK{gbRRYf*9 z1mD5>RC?8Q>=hg1{^Z+kbpQDzDkLQqS~XZ(3{z*9RN4}zlqCryk;SQ|btKA}zA8%+ z7BJTP8M1bie~9&yZQx|gJ+#1SG$#5SVwMRjCK*+Fy63_9i3kZs9E6<9Gq?S&5q}Uk zIkB(Ivk3SVpA>*I6$&^f4|@Z#B*Jm9-$oVKdW^Hvhb;xkysY1EES4gR|1YrAq;6r} zxCN$n414{46G?CpzIiJ=A)d{56G?&-P>IHqv!)hoEC?W5vNzEJ>sac*Kuv5;^a>%gb)@~nQ*7q6NVOs|Gg6`C3p7!taDyS7 zfCN0io7qGpUH|8Qk2kZ)hwM%8b`vZ7y5XLH_pMjccFT3Hy2&~pzR7F1So?#wfDDqY zVMjjjy8>rVC1kS9W_N`?ood#v{l-pAP_0QM5em-gOCrR^5NToN_-rXZ$84l1evqvw zt+FZ0<;WIG+M#5dHd|kfatLI4b)+r82)x%0WqrEq4Wsd3j&XQ^1=!5Ka}zw^8ZRE6 zOGNhd&i@6E5Z!O$;g)(XnN2h)xDk&4nhLkR7CC|kC+AN4Ed)FOTB$`%%i$jpruTeU z!T!(x@W6}%Xe#^%C(88;{2KCgKM~ZP#sL>L;~l^~LZDJ7nRTo{c_9%j>K(`}yn5I}?#gJiC+1j0${2Ncu2Zj#%?`H~ z=yW=Lc3VMwqYHH+sm`JlhpI&~olPl^5TIb0K0edv7odvDj0h`Cwb)~0<`rhmu8fmt zP^Kcq87|g_E93?xG)@EP1NbWlzF(+!wh|0`6&>B(%iFfZH0T zM(|e>NbnK2UUI1YwqR2SU1KQJ0F3@--D$8iV77#SK)zK~!&O*X3|}=^$Nc*&J^}et zQL$eUloJ8%!axP31r>ks1@nkt`(r(e7xz2{1UmW}gvTu;(WsbtTC+2~hUNh!SOqTB|yu(w8cUhP~k>IWiB5rst+Ii#iyS*PKK?Y8xa^SPD8?X47)tSh(tl&t@%(25*6{fnbZDm-W8lZV(}V2TnK3- z{Q!3jvD$1PgiOO~0L2DGocNT71WPNYgrbIYS_QCg#vuh56<6;iEH zqIAUCgvW*Sy#anQdvui4QD10Rhe2MN(UGjKE-^TggE0kLK}?r&!o7s>3$Ebveo@Y$ zABX-u1OvMDsN@Pm6U;gESMT-YmvpxG`Xu&x2wst29(w=i`-kXkX8Y$?%czGwN8LD& z6d9f}EelU)Cb|0&!pg2ywBRB9n8Ck71-A1v$y zR+mg}!iGHe4F0DVnR5~;MN0#jQ?HA?Dxhx}-d$D=8u75E{l$lc345p?`Ux%m%~r1MP+#FhMyE z0X5BRsTDM3C(Xn#IC2vdrK_EYc0CDAq+xt_U85ure*v0TLK{xPhC6j!3-eT6<9 zDmC;bhMF!oAaEIr3#wS4ybNvrqGy5dAAlHo=_1pXdvbpdQ9X zK_TL@uj+Pm<_f>KrnHyOa+fZyvPX{Z$}3znG1iOd!iL+YC!g{R&~HEda@wprrl3A1 zenSTr;(L6AokflZ6;U_ zY+AuF$S?EwUD7AU$7vpZ@h<@;yHi&dtFfQP?=pnYx!T?}60esf6G96`51>p%M(LTcM^CPvnk(j92X4 zGGUE|?MVVAGnfwm8rL2TA`m7eJ{&>I@oJd@sO%4eFaU{UUsTtkJXWhyCgfixa zNp^JQca=p>O>^h1I=3Kc$HC|cb93WS-a!x#Tt^{p!mXEMfK)K|0sGmK)ydH8L0}_? zXVbDBD-gA+bJ+uzn9q03+44CzpB8f=OkhQhZ8O(iWS&1T{|@FlzB`scKLPzK;1}qS z3ira37qG~HXC&K_iN2+8U+!p~GC;7?Wq}?(s%<8F*8RAodd_}szAT6-`#(Es@ZBU# zhXB`dLfs$2jLgLi@!d?n;BTOBtTtlD7RlVb|EZU9mp{-oZiwj~!`sBOCAWV!)L6Rn z_1jJ}XC9sX;mb46Z<^qlLK9;++jD30sqg!H-a0UugM|JE;DvLxF(h6RXJsLtn&6c* zPzpN&261`O7I68;rgrX`V!Zo1<+y3u`Ho^a~;!z zdoL04FXng_!bG{p{`&ci(+>531Y4Y(a}q)hCk} zGtgc8RA%?9a0k$>i94YuH+GZYrW??315fbdlo+<_kW!jVEcyQK`{7SQ-Qt4MXh-I$ z?}=}Bd5)oU6>tDdk9)|Ut!o9rq5gW%H@lVKn8W%~iRTo}* zCBL}$WI|<{QRAusc`?UTvhnF9U1!%7zwz>Su4(=C$1X6t;%b+dPFOYB5mvH@e(I5F zGEcQCu5URWVZg*S0*|TVX`F29@WJf~N+KTiUZBqe4 zd=dr1KGIOzh$S-+3k@Vg2YP~s2=}$RA=tSq&?8_UtcxDxg%$EMe0#+*6f6y#Dfl00 z-FWl?Jl_lcqt09{=l;P&>W3eOh2*Wd{uNb9f5-BK&+NhO85u}3waA;Uk6G1fBe&JJ z=k+`|XUQWy?)0fWxvR5gSHwnDE-KCIDz~RN$^ChM*|zAyrqW4AzlXUK(yz~_&2k@l z_RB4^AL%P~O<6m>WiSChaS2qSo}mBnd!9)AqpsE2y0w1xJ#$mjTUX{T#ZR;pcI3pD zC5FNi2Xo)q%0BU)@Au!1RAeBm{gkoKg!f@6CdpV`p%Q~Wl2vECi-pbyj^&j8WF#UnA z*XFLAU2hs1QcYXgm(+AmPqBOPJsr-qJu^e8lO@wKLpuM!d~@<%<{uY2!qUs^Pr@Q~ z%^7TrC?9-x>*n|ORoNQ%veivcmCSd;i675P132(;4_P`mSj2wE8+Bt`3y!DZ10M!1 z-M>F$*{mvMCm9@5;D{KPo}etzmrZJnsa_ruIek%2_M%66b77KM+YKi^KJ8_xowXr` zyyS3mW@W6oc2#vG%y(!^Q5SA{p?Asu?U;a1{YhK6V;|G(((B(5+d*Q$$&m~|CPQ=$ zW+d7`azM=un*xH{aY5$@R-;>Lubf#J79Ji}IJ43oo)uF$&LzWoo6I$?GA1khn5oUN zW+I`eTI*;toe&w)Yg}(!QM}=*NjHc<3xYMFDqv0Ipp|8T92h1N?rbK#&YV&9pa2K^ ztlS&io>_^i`H!wGEZ+Fc(ghFqpK6e9m!Ep{n@f3!iz_^Ssm$ z89Yy_j|`4?!`gsNNIXqBv2BwK$|B_4vHyzE8_X;;z!Vb=o=sa&)fVL5a`htSM$g|+ z2_c96V4!8wFc1Rv80!Pjd&9<+QLr7kk$d4BWwbiY*ts}c7Zs(`+wK3^u}2utZ8=M5 z7DwoHHXC$rfaix2`-u1GyP<{^cpJ}dQYXua_n5brF@Ib4YCyod^xfC~L;8CjiHjvl z@Ln!sc991{`Z;uS+IRnj2CQnkVKe zbGDi@6=BUYJ7W&)wN31;EnVA^JZbAgO}Ot*O4lS;WW|EgvduFx%hsK0mP1rE+L@w_ zo@8gvE96SM+rF+OAXxN*-eHo>?@FFfP!MA)o3f;0>dxj^XbGfFtV&O=$j!1?t2=ro zv~O>UrKAyRU9?WDPy#L{IHz$xj8Kfbo`m+gfC8&A0}f_9{|L$n+pj&D*40vNE?<-o znHS-ndE$hLVPB`8sMe)NFAY44KldNPxvO@pW!=v96oQm{wB-`d>Z>nz!H?Bj5`-C zLQgXa^evWWa{)6ZU`-xY;W+V1%AMp#_&(fy+3$Jq@fY#$!4W#Clzp~dMpVOW zD6DovR@-OjFZ3Pw^tG5tI*BHoq!XPO9|6s3VS zpb33&Q|4E%v9!sY1)j|!n)v;CYaNfVO;))yDO`focanJ#P2VwT;gnf3 zW^EH8m~O<6%B@RE?Mme5C#22TRo8N0Zl+~r%DNRZQ=4+l1{1*5z&8?~`={ZZ1I-n8 zgOMU9@%d6_F*F$1uod2I_Z%R#o9jMgFrM5_tJlM z@#5%^2wRBGX8lGN84(&98NoLYS(V|Tp%zPMh{dYqzC(`if9O!c>es|taIA>o1RNCe zSP2^p|0Ar-wXhjEvT&JQ9TF>wN}A_dz2}f$lc&383eBG(wwR}FLi$b2M06kQc_2LI zbN^JHh}G)hkiiBL7gr@&k3^#R>km;)-?ELCf~lD+=NDD%g-<-t$(&y}CwX#q7@Eag z&(B%~I5zMNWFXv${!$TDT%L0w|6zi-&nK+2QG{|62wQ8fxp}`9OrT)s0@C3JgR#bNI48CFFrWFg8 z-&QgE_|8oekTjxda!c}@WBr>dUCm9+oy$uqZ(F`_`KGGMbs5a}07WBTMqUNl#1Qi0kT@y)6h$9H!JHpj79SbrsCL zuz1I+);Brjve5(!E7%T~4dw2Pb`d0G6|P?79u^ z-i?m=7F)%hB@u$UpN9B5e{nm4$KA~f+kbO6>gxZ?yOF8?FYkty-0W_!3nzWMfH56Q zySG|5@h@%${0HksHpAU$;6LmlF_F!lKkX)7;=lQGG`u|O3hcx8I#Jkbb`wdo;mRk1 zI;Qm3uOd6I4GQY64gUI7=qytzsJrsXsH*@bzz@!+L3oxYSy1`E#TpTeGDm?h2S~un{_quNQ+D>}@C98Cef=jtmwYa{__-qoZ)7K%8+laRa_fvm%Uq6W4aM@0i5=}brluPMqFWEnTQoG= zDGtwQ?Cne|u}h@UW$78^F)~?P#T6a#2>J|tMm*vvW-r_e#;w!N`!!^<1;bJxGPe#hH8iahU(z6&I+ zf!u@4Knl+}!1J#f-ARj;XmZ%huuWlPm@<+^q5eUT5)Y#?0|=p3C(^|cbBR^N1%isx zA!rk*qite79SjX2FR~3_ns7(;i@4p^hlU*qvrrFp9#UHruH+Vu^wQPsWG#Hv@fFz+GDmRGkBJL6h* zwRP<6a1uK`S3@$}iwdV^h5)62bA$dI@UcN}k{eL^PtTNjFS{V7UU(|%<_kFhe!lOe-_{u6ws`%6kK45iOHmyWQR@Q2oTOMN_JYm8LX)p zYO8v69NlLiMTc|Ly~6-|Oa*B-fa>CzPTm#h61NiQT+JX;h| zhDwPZ=5onPL`f;SH{wK5!#+QXhFD@mWQ44adh^?wJy)Z@8Gw(|vubLtzz?YCb+WRi z#uEtl`e)6zd*HQ!Z`ha7*4M9Y)id6gg_%y5;-%|sLZ6+&h`S`o>d zh8OOViTy()5tADyW2FN;)PuPD8|;9=EfJ|qWT=kxBgs&iOa^BFB*REp;z;O>ez5D2yz)>#ma)ImIg-_6{gotlt!hV8q^sHzyXx9=i)lZEXL=t7oWj(0_63)N2riycW#%UnD;To&`4+bfd#DR4JZLA`OCJv4}6D zNW?-1q$*2=8P~9DCJ39ENj6FcaL84U?Il`vJns3+>BFCZXOp6Zf{!3fItT5729NVS z2gMGP!67BuAo|(D46>c-thiGhPvF-?Y~rGz%plbd9qX)+OUb?t8QySU@a6za4FFRV za9{>6(ycTk_1oqB2-ySd0lbWU1sQ!q<2PpIU94&W57EaGM5;GjNON%pS)#b=3zm)prC5?M$XAlQG*S4%+hz=$`ET=i+ z60Gwg<|Mrue7X*(Q4M!1WMUHu%oQ_8y9NwO_kdCYsR_{0H2X51aEr--9&u{o4iw(l z7#qs5!K7O$_T;j@0rH0MB40q3NixP)+j>sTcGzpz)g2voxS`|TrFrgU_jSEIojMwq zAFbN9H+zZgUSFs&tYTej`TErV$ilRe{AKq}8~^l6e<%l0_^~;%X#L~et1j)XI<=cP zkkh|wQ|i!ZorW0i3p|cn*O6(rfPJ(Nc6c}Jn3897OBAqE{{3)(N&5pSZf+7gfAKQx zlOvvF&s;VHIYRGd!+XR#p4X6(`ItG)QulkLjM%uBk?iq2=A~o;h-V}Uq2oEv(F1;d z#DETu8c_HL7U^_k=zvD78j$k*2Lic1)v%y!e_=cK@EgJmU}(F%fd-`#i#lKMqN!;M z7rXeL;?PzcZ@@htw}Z#Y1QA!OTOoGsg8q^w(h$?HrHHUy zv>YP&-u|@gykbn8=20n0!_inEPc=wN>>QPXf5+>xR&s$^YWq<6o9kvjxO!Yn^^%hO zj{LB^WhZB(&ugC)HspD#Y(-nS$yD9eon1I{ocZ*@XPhN}raHW&AWN-E$tkiVm&L2PR`7)-)3ZaDHYMiRC(Iw0Sep|8Z762f7j%t} zl!cmQCD-Ol^s#y(A|%En)7Ue@D#x!;N9RV>)^htpD`0>0&}AvqEeeR(WwY@N{YuKQ z3r;^TO<J>!iia%^9^zBFf>PHvu{^#lDsSjP_z7V=EplvFkihmhfcU*8>;SjfAfwH_mpEz3VVztupgmN zJ*sz$d7-+&^mIS#fK25W@MA~ALCZ@Rg$x*g&xi|r_yWD0i!52~BPO3h#O?q@`<@P_1bE1urDYf{y&u57#wk?B@B@F~Y3`yiv#?Cym4j;uFwUzH?l*|=Arny6(uay=drvnbOZ5+L3Yd*W^wAIRGpX3G5J$j02@c`JTGh^ zgIX=m4$ZGHY~CS_Ft&qT-(RpT*Zvp;?=VTTfejenGlsH{b}jc3@I02VkB+5dBx1fD zCRt3$&{rRymB5LA#oc7lcW@Shq+#@QG*GeuYF8|7g{EH>r$7oRDc13f{Q*=||1dqL zW<$qI5U|6|B|*5c(q&k$fDr=F2+~If*w&CjN(yoQwhs^2HQxLE?()?gWuZf!S^qls z(Mvyg+@GwTec$rj+-3K6IHxyH%rvLZ*%#b-0R3ws z_O3N_!lVQ5_VvBHuSOnS)VZ?>1}N zr9`U~*`;fx+IvGG{lWkBHW%}JUU4hndh(&VF>=1vKrFjC#IWVVA98)JnuLq zri75d>?B=OXb{i|1lAzOYajU5H0~ggjFJREFCZDT(&SVlb!s+NjId$`5P>zqYHY;U zM3gU2%k$+WVmd_R=UIY?XQ3tcU8)ez4&niPjzz+n;CQfrCq4)5st8}JSBx(92TDy; zAasH{ID`)ErHLyH{!9X~jDDFkfrjMwAixlJ5x5^TZu(`=xFB)|-p`*wZafc>CL8D( zsXT{U6Dl?aCh5c)1r-w`h!{{v;=dKBEZ-9B$TjY0gg)O+Fh>#q8Qj$blCn(TV#3Ae z*hvNyU77N8K+j}TT43g z5ueFlGkMWC9Zme4FnL+gT_>)6dF-CTWpxnsCGp%w$iKkT*HfUHJI@_%whS00!K#6f z)Pabo0fk>+gia9>0oh-HArj|6pehSaE>_xeGzIrm4$MjI*WV%CFgL*nx^b9W zY|txAdiX+?AfpB!(HEU@ob?O@1X??di>;)%PlCk>!*3Je@1+KoY7zE92i4Yni0Df(nxPs7DyHT(?#;6Ybnt4m> zFP1QWcjU(?1#*)nhIyUv-zOCOL!vb&fz3(qh}3a|4KpHz@&Ao64K zdy*g{$w*N+Oab&C5OKT2F+R)pA2huJ@FSA~rzztY7#jiuYbeP%a@_e6#mEmlF?>?) zQAX~XhSS83yca)zBL5~~VykIQSq0>U?cK4)nd*xQdvn16;z)q_Ie^#-aatQ_bps(G zXdq4wU;a@8CJ8m*KMGEXSEC$(4l@lTtU+%I_CWTs&v0~`dTuz6ZPCf@G)lBNa+A%H z-;y3C8o%Ul%iKFV95{z9r=v91- zv%;H^10BALS-Yu)ky1$je+(}ddIA)5v$32V?_BWZRoAf7paara;eP%rmeBTrC2pRA8Su93oz3VXG3@sZ|Ob zL?ylHjl=1V$Xlt3>$k`gq4we@+R|oL#3fFepH+FNzzWl>nh(y+%vpB23s18uv8G60 ziY}j-S-P}3CThamf`aaeG0Z^O(iq2_tg^}?Mw;tNcZ4RD#>JO9Ln3Vrz4M+cT=&?5 zwXY9U9NT`a>a}%|EvZyw#;i(5%IpK}p!T|wnpT%yyA)+LgxPfFC@ewok@^T&VKB_k ztuz^>B&oFp2#q$O&}Jl6Q9Knp+lK9-iycqEO_+@kCP3^~!W9`1iNo=2koT;c4se4~ zUD$CfEx<}YE!K%bENcH+TV3JY8KU68qhg~pAu=Y)S~jtBhE{)+H1Pc-p*D4crb^v5 zzIh%+ddi6Fv>+okF+o%*np)F5&yVPX-8BQOc&w+DHvtS{8}A*cO`8wr1$_6UgRK7% z5V`{I!$@(cY>jlwjY?%OVSoWA0pMZ_KtgU%D9cpP3K$PQfd8;Y1C|Ev69h7Xi~9;} z3N>g3P_AWz988!dYRie$wp1LgXwk;ySU+{^%t&w4YK=r_KvY^ubi;Br!DEnWc}-MF zMoi%6&H8`Kv#sU~`QPN}z(vPEN@>ncmYm61mUb=%UGu)~JYzSC)kkH%@;97!JhZ73tuyJ|~Y!udV zs#{tjil=8MH|B;%m2_lG(j?brB{k;Tj((NYkc-DCc3nzrDoqjL8SmeOyUbu-yPW8q zxozWS6*;!tJWFv3{5{1s&J88kd*9S8G9BS-!;2D$H6 zR8{~=co6(8ahZq4H8pM<9u5DW8zBd|5eksU!k%TjBh&-o5~CQ4j08J~j3f{l&EmP@ zzl$k8$PTei8O!6vfz*JL6+5q-psR5rBOA2Oo5+i?8wUO?u8_$xT0r!NMwL9?J|ZB- zS-;DiG2ZS)%x1PGOFe(gU&l#Lkz9p}T*^T*ah*%2+NZIM=knd5)% z{Co+{Pnd(k3wqe0w@5&uUt|?2C}o6X3pOK!4NWFx;iJ=Pv(UqNQ*2TRNf=49%WYIC zAqy<`$vo<*hb3|-W}}H}=2%QsZVX>!4GWHpa7>bu?~3U3n&}DVoT!NMx|z98DJo*J zXsI#YifWw`!#;Y`^Qcm<46qm0$E9^;mn@6|9jE&G!{kep8#p>1szp_9|74yK=DeEm z5ef1LzOX>T@^&<^0yEU$_yATXbG=HTb^|gA&7JYbNB;NWKuQ)e7@&w#!UUFo^=#+!?RWh`K2 zwK)M*R>>Ebu|}p+C&Re{q8O?i(>$w!Vg14W z5*UCN!oc^K&Wm;j>jyNTOR5xpCR2bJ6zCY3SDZ4eS7I|96ll<-VOPA$B+MA_iY?;} zN+g#D2xcvY-wIoUGkXLER*U>&#yaMc?(=KLm27%uDN@f(efG9t4f1L>&h&EB^_Jgx z>J+LPt3rNTy6Ne~YhK=7`sVa5R(V9zQfBULuHP}u_3~4Hc$JZO)kg|&dstwCJ&6HZ zGKW{f%W;Rt4n#(0C&EC>n3zaO?!f;?+IPUmRa|@Dd$(#OZPWJEO1s)7t+eXWs!Nuw zVo8=&EZMSUV_Pn`;EHYBFwKCCjj@dkF%X(V2-OhN32A^s5<&~fOF}wnlqBCvUf^Nt z?)N`ucV!t&!uR_S{%bUM?%bI(XU?2Cb7sbv6$&_=S-Fq^ZMca(BO`XMnb?kI=E|b2 z?9ihVjF=GAiN^9L>RyEnLkTt73!^n(Yo{VJ3bka4H|f?_NNeb#>i=2QIjd{mcebq_ zs<>=mR#drF{-3eqt7FpJQpxa+S&!bd?;SC7qw*>-XV%`D>GId^dZ?jRynSE`JaS6{ zdGe;(vk__Umd2HR618t{w5ixQHuc;Y(zirPG8|Dq|9W8;<_u+?r-`dB2_`;^I zR7kkJ@ZH)~w_Mb_r)*-6RV+GmM{)l;9MeTK`ZH+czzzzcQnOIs;;kFcwZ+E8!tt_f zmzY^5;>Q>qciD=^jYjo&dcqu&V&l{dgBT*~Q)Eb5XuR0}!YsmOKj@FN`wvM|^jQ4a zif?|JIO99p43v0`J&sZkX7iR8{W|L}^~tKYo*dpFEH-_0=*|Lxbf zN1sBiTCkGPf%98STilAaS>;MqMMdLyiP1A|Gp2M5-{xwuBu%DTqF; z2VbbV5Ka|I`IQ{8nc)-SN_Cv&)SOVW^FP&|B-i$YaAPme<~s4VSsN3Q%#mf9cb%&> z|KHI9GA$+U5?-IH?yP{gJNs@*&WXZqOsL<5=Q4IiwPd6#j_LK941>lBZ4&Ajt0&MD zu{8?a7K?jEx<6EDvMO5S|2c5|332HOamgBZ?A?FSJn_K-@yBvukvwORw4jqXA0q(Y z(FkTI9#~$(b)}{GC3O*7ohM%_G{5sQI_- zGv z`MR`}pYVpBSbm=7iE=A{jB=Ml(w4TkK(b<^<(SD-aV$R^47$RGddS%n{mv`?X9)>L z{mir>RTE5Gr`AQeX)2Zd{tH)%h(1w}s@6I3m)|s;f5FzE;VUfQD=YN{ z)iHw(KcdBuVc_)?nqlK2Qb<$G$(ZrkPd_;pa$$Ktx0fYIf{nxP~##Q&mF;~QjMEoia%j%BAE%gW5gtRqt)I1ENZ_!x_BzT=oK zK85v*Z|?w=~k%r#=u<2Nsy-Me6ZPq#hXy`f8* zeO}?@%>ntL2Tn=@S6;n+`;OgL?16ndenifZF2)+OT6H}p<9zF*;&&)LuByc9Gu`bd zWlULb0>ct@$mHM!TbOXAV~p-}RQ&FQa>Y;NBlmv1y{GrYJ>w{Tt zez^^mF`_C)zuT$TJDdiGHO1Vd(bGuU{3>&JY6?%|32O?F@8?b7QzJsk)~}w!RjOJr zrAnB%FXAeR0}}=vFUJ6vwsUJ~i7%z1h0TX>uLe6r4mh9pcvPK2PE3rr%}K!MnNk=;f!#&bH)eqzGpH1EU%43ZhZ19_cvrcnuNg+s%wGvU}$z4*Xrxg=w0zVd|uu}kg zRxoV^^*>GWBl7*%XZM%WejSjtu(G|f$T^l~&rEH0mmmLTa)-M+Me5XV+6n%<9AApC z?(&(%PnbgXXNp-$h1Fm%q`R@`NV11D-E({M zLEuyk6e#hz{rGatH>7#z%6Q%`{E2kMos*@&-Z*@7lBSUsN6e8c29@CwRkKP`sSII* z&){(rT|rdVI2R^)`E%(yrBwfkt_982#kNb6bp2GJ{}W-Y1x*D%P7wCIDt(r)qWnGC zr`Q3y`Z2y6r4M}Bdb1YSOIxf)4D>|VBpZu~neHT2=>US{IS9OYF)V*C9JY9JBR&!P zuTw1W#CfEDuy9(#v|648GLM>X z{*FRU>_ZgqMBfQ2`lK$^3(#?Wg5@cb&61sN%v51@@`vTW!awws#Of_9Ib`r)v$@7k z-5DYZZx(kgsjXYm5s{W<+|{;Nr(4{1SH?0a(y^p2wzR86rFx-ebb65d6K)&qoH)`s zcpG+x1cI##Yf#5!;`36k>P7ytIXBno(y4GcG~nD1%BbkcB)t^F0{ zR;f3)Zn(NIP#DSzx=ojOihbrQu8`_>oRaQpnp^EOUSw0d%8SIhTWtB&x$-NDh2?Chs{FD$M?K71XiXdR}e0^fIv&zVuRTf za5v|)R`qooGq2ED(tU1UPEKv}te!Me+7-$*s<5}wG~Lu$(>9=xuN0qAC<}7^e%-Y6 z&L+fQ_~H_di{FI5XNlm)Es)Wu&S=cf%d@)Onj8(44%ETgMmZxIh;&ab5Tq+x+3Zy$ zXp=!K6F>;#RskfkQc(P+)KX(IUTevmCe=wT^(LrRsnE5VrY5P8pHoQL*fFAz|3_?7 z_syKE+{*Yv`6J~3qPHsth))ISpmc@uEOuf#TXY#T00(o_YEgi#liCr85|Ubm?_*+! zg3<7c_Jio1Tx&8_NLTEUJhL0$$}TlI^clsrg4U=*Whw9n>I$rTq~oJil^@;J(yY-g zQmJyPx{3}Iw-wuSDy9WQTC;%FN2$lCYr$G2=5B&}9Q)sbuzlgedhW-m_2T5FP!uJ# zB9=9|G?A3`iWRgobjP2^ZeLr=PIqgHde<~}Z5=2o=vh0XbIV{)j| zcuoGZczyhiM2!3)Vu}^tmkKyde=<$6{Aa0v(;((t8r3a$YcQ1tM|>pGAZFt2R6d+$ z&S%mf=2K~gKa&PAoMxq5E&e_JWkGFNSQw)cQynRe9dn8wE53_EOui~<^vkhEb}wS+PKSQg zxDeJY7joo#1+_&YDkkF9cOiboXX90OB7Wu6c-$@W-#Az6AohNphIXb-!@@R7fSm)0 z*fg9*m52oo4am1=JP8lh9m0O$;>R{AzM(uLY{R9iR$;aB%#&-@jN~qgRX&a2&Y_Wt zilT;TX-F`F1efD?AAVn}Jo7|JyV%|yd|Da*dXZjVM16qPnHQ20O{Qij)R-pF6|PB! z#DZjEX%hNJg@BE$c3O*U`po@-@L!g^Zki4noH8SE6Gl$`O4hF`tjw(KP7-!2; z)-YWq7TyMy+*dn$ZL6n#@y?cKL{&6*(boOl>a?=?SKRr`N?e1td-(io@aU4ctkR(w z&BJvUy1StK`k}Jv>-tJnrRz7W=qm|yZ|*DUd-&n69Nw0nJ-BjfbKUXov^S>QZO~Nw zwe)mr(TtLrx8Hepul&yc&c9{n5`Rvuxn^!hQ)6p^%3U2f?`l0 zyqHrdN#-R4O$_tE#DpAkCh|YS-+T$HiT2SY(m^s(8zxq$DdP$YM zmnTrcq@D2{AOWAp?RD6u1cprY?xL5%E!zJ(~Qd0KG!lpuY zjuTVmPh9cx@9UT{hEEcJmVOdTUi7(ea@Bz_||3kwju@Ld*41rM^M8kZ?>4YwB5(A(6JM;2-@C z!ce7vg+YUVs((7eqI>YK-<;`^6DDsKEsp$5W5AgeHW}PHr$wLMq07jUInOzG1cdAeyXpGwuL zR4SAW#_Gl7!;-&|=3FF;G>~TM_N; z>I@%9R7AE>x;5#Jtjy`2P=?){(c+8fU0La8i?aOoyjEKvYV$_)pHl;+Coh5mQe@{V~JI!pc zWTM|09GO;QmfmR6VB17)wrg5msKHUus%>Zwq&Y$*whW6QO_gagiJcac$>I;G6dBHZ zkFPAxrY?LV9CCU^%|AlnUAs8V)sj8KYAmcQ^tgQmH=H2JbiS^^cdZncCHlPw!1 zu6T)jQ?S&Nk!8McJ!(IxHR)aX6)uA@H|lZ5N^*R@ywS?&U~|Y|9=^owGplWSZMxo| zD>c}smwQ}#$MiCfOVm5os5eYBjJpHg0*5ZUq{$~qI*a7Z%gHgBj3#ZSPLr+;Ma zufm{R_4$uJ`IaFX$uZb-3?84#Yp`T^9HxtvDupOj*s~<%rRn+NpOS&IKM9KKgNo*0 zfAGw_o*t|ls4y}-t3IvH6TT)qBb*j~AiRdt1t5jqGp^cZxG|6K*L@`7NBqNDpWH<@vY;2w3%bS+x4@Z_(Y4(m2Xf==Z#&CL%tH+STRave3L z-m=~$rAuNf`$`=J)j8RLl3=CJVDbdA=Hx`vb!vrF>#T4(t@*WnyVp@rnO!-fAWIRH zKPa!ZJ}CCwsahkycS>>X*=;>#g`=g~+;EXqx%12u-Wr$PtNiMj5y$|ePCJlg%Fvm# zCZEx$AJ7|frl-5o=Nt5atPGd2e2%T6vMgx-x!!GXMEy1~JKzYHioa2$I}7u23e=ev z{lx7pds_t9>C5G%+A{T{xGVlOF)A(;mx$LwuQ(=tMLZ?GAbv-DS^U2Eck!Q+OUjWV zQnl17^-2TMu!LJ8aJ=3MX*JGRJSshXAzdRe7$(O=`~ikYEWBS>)%esn&8k6i=p?qq zSV^pmdEewXo64HBlIj?ghs5=d{3g6*Dwwy=X_-l#27ahhrfqgbDqkMDQ(1n&(lX;G zDwdcB^7$?QPs&9QI>8sx1E_b<>O6W4DG&*tjf5(}UMQp+W4s4Yp2r64p`XY(6WuMkyycGth8l_)EfeDdrGR@=vtadP=aFyF_<+aWJz>MsyBCoH` zVU9W-CTp5%-tv-Z`DTSADOy#kvU-1cu3n>V)k@hOBL-?^rpsH9jZU5}YRz7Ewxgu7 z-f#2!{WeF5-BRJsYiMZp&(@bkY{jwGNDWjE(u?e*ZMm{StZi8h=d`VKXHwg8SUptO z7K^{zSzJ*cayn~@9L07^d3L1MmFdh0*eCp7K%o)6t*!E&3o0983uXX0;f$P`Cauva zUt`ZU>(o|g9JY)ig<-1dapp`?=g>UX-Tl8pclSflsPds450t55N0Zm8a7Ai-{^GLS z>LQo1Rc}x!y&=&!ZQ8H@a}v3awzkthlNAdbR;&D9xkW{}zM>)@{xBj^?(gotx~E4n zzVU|qU#CwmK7Cre_Ki2rjGjKd%U;R?%Wp%W;#R8j7+Om-G)3e)fs7O z<<(zE6PiEqf28)$S5(ek{tNj;QP5kUbJ`3O(?~^uwvz2MDTk+MEvu8diu^>6d~%lJ zo{eYhmY{gMyriJqon|a<3Y*Mr#;TgK1%_qW z#@f;aMY&N*@r#LHs_%|6J9wiTEkpuS(Y%B$eA4oyvJAwu_m%zmAr0u2`G2ui^%BCZz6vw68Rf9+w z72cd^gGKQ;?q7^Zzr@Zc<6}DWvoNoSFt0R!h=o<$XqXtec-W$ets=7hy!*(8KXsKD z*?Z*0I5&MGEIn9$!{1hv&7}0>izR|_O4PXsVjSe>3?62dr1O0P&%_(@5XCBLfeYxVpU&3fb>ymn+H=ih;wD|M+;jy&Mb+2b+PeSVmp{Dm(Aht~vtE6(e_CA$6vdKQNv@;3 zyAtNnirnH@ajvs?Mj^EXZd+I1soW}s(r~Vx5H|El56cgt&X-G1o;^r)#=Q|1Rg)Cb zuTMM|u1-7`HcbpApX2U6ykCEz=X{&{2<5Mb3;t*G7harrS8R>1#TPdV!bcaQL<1AA zD7qBSB1bFU&=}?juT1|X;l=jZm0C|XD43KbW^Es^)v9d2;meY#9JKd-^8(Zge;+o zg%q#-FcGh~CKZnx&k?U5o*Ga2Xht~xv2*#r>iM9Y!FOv}VL5j^X7Z5LQzwKc*{Fnj z-K4dg=04=ZuU5y-zh*0b-ql*SN9JArnOn7{+%-J(_ahT;OKB$a=}%pxl_(M4qUC@; zjQ=r!g+28T#8<*`#auz7TZeZ1YvQ?LEpE#Dd$Vgfym6N+@`3}lj+Ni4OF|MgIhY(U(?zB6`_KNQgMkoySOQ@X>LPE zj|qj`rmTzq3@b+p3eq74+mP(JHrzH!JJ*isB)Z&=UW%R7fY<(+OYr`+4~a z)pOX-7!sc#{?L6xv4G?6llLnRV-+%lEr%5Uf;0oa#rUl_`{BQlK8rk~jEB?H)fyZd zfaALGWo$*l{s=O1Zf{OU_p~J=uy;;;?gKI_etK|t_p9*~3UW?EB_@EE^Wa7gJ zRaBc}IG~?n_}mXH8Jm1+NrV4&>h~solA~4LFR%ReZD%HKTi?08VtJ-?ulOZCnVfG2 zIJ-u^SzBFNy0R{DHo0`8tfK>=p?Ny55z8LKq_dvL#wV83#Q_tKC|B>6fA`g|%70yt z8kyxAv@<|E4|&43xHaRF$EmPdRc^Z>cidtyYIDZ*x(usGev%ii5p|;}^$}8)!9ufW z@=FTsj6cc^$`kUJZoOebePDrz9TXOEnNryYh-#lLU2%C!+UkmfRB`9<7$%IlD?g5rDc8KK!0?(lqRgni?(qT4|GiMMY4G3mk&omo-3XvRXm&G*E5KCe_nc`RDAtj z*)-7nxOC`=eK$WK-Yba9AhxTk#!^$G(1D2klQcV?!#^k-t2A#_{(}NT;HG|EdSDUp)(_ zK>4sjULxeRn5>b*exFYWV8^<`QkdH6{9!p7f~z^XWjz2}R`S^5unGH%MI0Gu;{D%f zk|u>D-}>>%#Y;|!(%p3G!ji9_{k1$dt!@3y(ot>8nj`Zko)f<|a&%pr;^*>`1&3F+ zOxdo^$1Xf7|LLXGw~3#uIeAsTv~S(xSIy3l72?^ z>#aon8@+@~+qN67rX%9U$mJ z7;|D+v6@nOtV_`%6wDroC66c=E!Z&%#voWpXvK&gz#1uH-(Ad}TsN=cyW?PXqGc7{ zs64srZ&zAjLubf8yr#|)oHkO`G+gZv*U#LuDCVkLINclydNVYR`jEHDuF>Z^HR0xY zwF_>j%F!NC_|yo zaofF?H1QVrpj!3f9kIR<-}H++f<^7ag||j#Z<^V3*`j*2$!!h!uwm4qo3pmXSylR2 zR(4ie;ld*;wR)XKl1k;T+hbmnB^q{S7gg9zwVjq|dpY?Uh;Cn1Fl&dqt~A#kuEgkc zyXuI#NnM9MCmGKQ5@{u%H3mFv|F^2%{okk6_o$BCufsS-chjgs>OT0U6}On{%7ju( zQ;%0$)tQ<8YE8(8W_!$!qsG{s75l@`EakPe?0JLrU_W)C2nNbpK(*i%IV&=tG{uX_|r3|M03|=bBbFo zJu$Y)gLfqc8@q@rx+I{Ns=Y;x1LouKC<+(pPg88;6UE4yPsRS z>sMdD();W^cq-may!m{*MDZSKl@FiwCZVP!-5mK+RaH2o7KF;D#VelD!p+qa2oxgx z^*nco&r+jl1&&msUp#WtHUhYimg5Yav%Dzq{?o&7Irkl)UrFkt=VoH(cDW z?t4=4%;}8M?o}O)Yv)ZfE7KZAFKc_~JGsAkOM2rCC?L|rSy$t-?w{pKYvr=5b`|#2 z`l#hr$bZAiuoKeI{G`%kO3x6}X-%JG21?FXIGpd1)VF7f8-3Jk+3ioP=OztTSb3M|uHvIhAb@l`Pdoyh#8I@hWw%C=JN zNt~3Hv7wloV)AfqI*>JGug(FRk^~7ic*h!gs|%}++xc0c*4q@tgL)Jyn^(SQDUDd-la&Km)J)QCFY#m zORUHw#a@!hLO5(Jxg=j9S+nlbOLe#GpSH4#&z4&k zuafqNW(-C8Q<}6icrT&%6K4ezMt>YqGr1MfC++!1PfuUxKje=am$n7{t&1B(;~fnx z&DGnyjq_r31TeI|byyZmxuxMV<#yU^Q?g}>UnpntBe+2B z;=g3wr@kP26BM7qDN{c1h086PKU41WIOYGp+@Jaal^cC^gD8uA(yt{+_%4RWbEoE{ z3)U80n)0w(p;IJI4T3*Blo38VhXzngoD%2f$YYA%%S&;Hj&k*_x1Ko$ihJX~l76N- zf!>Yo&h z#j4zm_KE^e^{mqJzL;lv?pe%u| z?u2GtNIGe{>#*N1xDVT%PP;kpFopp5iIK|~N=>JmP4dp<@rMvuS&1R=+zE)!U*O2Y z`|p2u>Y<0K;}AS9ojjTlRaDD1LR$iCeGVJTE(E zZ0Dh4$J*rg<$skgJ-SppEzeqU+r^c{pW9$v6O_<+#J9nn*d0TrTFjbEFv;NDHuJbr zDVWA3L)N%~#9eba?YyJL;SDihQr46;YCnP^+NG+}kK;EKxTUy%&%EN%(L-{rJVRRi zuOI#h7cs5Q@7*}_=$t{trSdBI(MRs3?_stj!*3OPoG@-#{o^i!IG&$x7`IqVW`oI! zBWq}$!v6J8n(%Q_Fv$sk&(nbxPLp34Jd&PYysU~7o>cPWSv42mf7uMB{Jj$=#3sYQ z&f7;mbMp$eR=4hXdMmg=ke4pKXLIwE3)aXsg4vWhhB6ilG3c+(^6>(cF~bn@$6|(@ zalgSbZkQ}*%F8jeqyAh`6CE$*%FUivya|UK9eB!>D!Mv0S@i3_SJ(E-!+Te4zOwh4 zi>k^NTseF1wrzLsd%d~k^!5u?sRX7O!4j$q9n`h{mn%>uUI54I(q>3bxj_i`AL=h#({}%uAG-g z68&OuaEGb{=T72uyV!W8A>HSyP>q+t%H*=vC(8x4ND(wyEOtPIyXvHxNayC#%rT`* zo>xd!2N$xQZh7+5^i|AQ+fy)o!_nDyZr*#(e+8R|%4V!=^EZxN-Xi|&Q$^3rj(YQ} zBY75AtZhMK&xWo*Avr{8GzDqCPFNtHl%6nlg z_L|&zW=}NNC`u)ZdP-<7cJ+=cu4?Kv)#mpOrE7Ct*ft~8FWOXXFShpXxO4Rk&%)&$ z)#frM?XPf#%P>GSOnjjJ6U?*q*o!}gGu-sW*4rFIw{<)4qxR)uve%LkzUa1T)6}(J zlBBA1L_D6Rrb>T^y0TFiN9S<$X(KCWOBXxPeLvV*k(lJcd;pg9CfqbM;gnOWCULk6 zRv>5#!xV~<_|ULKA+J{Ij7^f_wUr}}?-?%n=Ar|A_f^iH9wI8;aD!MCo-tZ^`@(&W z*~_=Kj2v6raNoTZqkFnDW{)jtEmACLUVEs&@6g(2{O;?!X>Ie}!Iq)Y(xH}M>bLBz ze0BdzxhH0A%c8e4QiTrroOjjj&0$N*H`bs1>g~)!jY4v-N55$`(hPX>7Y+ zX}dfpN8D<&t=cGxZEe#tRz>mf)X-4Nbe>gXjRq7=%*<$dgTL6glNhLAkZ6LP08~Y% z(-1Y8kO>=(1d5rJw5o@L>k~<6d56S?4+|;P32T_7#u{KCkQ&Dmp2Wu;IC$`P- z`$gXbF6|E0n5o>L>lVX`ak%i=9*@gZIc2D>-Pw?h{jV6kj!%X?10^2KuHK)fcPXZmT2Pk&Y9(iigUo8;sc@ zd$=B!wVX)MU{6ao8qFDJv+q=!4H=#-+ML3gJXgL+?@SLjM;(*BwiYPX>X*C%^zf)YLOgA@2Z158<^rvNJR959H^zN`j%vh^Vi(KaNx*~2# zK__eRaYko*i_==uP+#IP zy89O_DsYA`T6$5wzb0%A)OU6^TV1n;=5@z(t_^p*cuCWmh5dotn#vMuUf7~?&b(%= zqp5XTb-uP}?WNl{uFQ{JvhlLL$1LH_v4+B)8n4BdZ*fFJ*=mK&oK{*Es#|`;U60PY z=5OD<343$b9lraE_{Ee)Xl1`)=J^T|B$qSJE~s z$G7u&D8-@CMGJbW(|v2MI(*Z$)idwD?ckbbXu``U;>xHpf)!2N14Zl4;w$n$5swvm z)jx591Fg-EVC`L<7GO(tV&&e9^yjVI>zvZJ&YYt6CSJkH{<-IKq=zSdgms9?=g_?G zRMsZn*I0HbUOw{x-lLV(FRLy}uB>Wwxx!b@zJ>VX6K7P1)w>aog8)&Qeo4fcs(7v# zp7=lXJ*;ncE0#*?wC{2GZkvd!x}~S^H*P|}bNsEmPy9Ciz6kF_#aC}so=T%Twu^9H zJ<^=#?U&G2>5{1Am^A6}hn@Yr9f70yB2Ah#RGC}5xzy9@wOA$9#PKCI|5MLW3T(VBb=kr>CPU_YOIl7NJq5`)TXtIJi`cS0MVs|~44rc~eu_e=CrPBrCg}8g_*V-1GywoZ9un#X5 z^Ova%23NC6Re(FTN!!7ogwY?P6r|xf;;@k8yBb+8(r(3+hjYp+l{cXf{Xoj{a$C7r zm02=CIPJe}mudaJnJudfW| zRu<%>X|p|UO-cBo!J53fzGz)b4vsd>(3N&oxZLHPQCH04F0i#$n)9cX_@4Q&acRerMz=ZCSQuR%Dj6+qThiq5mu9=Nt7es|Z7!QSz0g!S-J~~`RK{GI2aNe8 z6>dkNH_N6UGn#!hJ(0+8BzGo!Eh}>+g<_ec2$s8|23=N`QIq6%@qf@)BRG4vL1-Z> zX-iX6eQj-_;4~QW;9RZEn=C$7S78-Pn6FaY4IvCgjanx)KJk{DM01e=g2d*;dL` zZ-_tE9uTqxuMmJwLWVyt4`yJKHapv<<%-c(RH_#EF0~IS#cK(z8pCav4yaYY{3M>% zsBKllEwQdBu9ldWR@%_spi!4?-uz2(Kz>B?d;j!YSOI;m^7bM}RZe|DbwSH)S7WFK z7iY|av?)LPw)o@tO_IX01b#(IA^q$hH6H0VIz8?dyI5F@yB9ANE`!v$Lbyh_UO0dX zK(D8Pj_py&Ac+_XPH``0xkSrx5Hyp&FlkDd-Em5PC{&r!&d5N|S&|Pi{G~B};QdOd zp$h+k_(z`3^qZQC;{Ig`^{ZSlXHllT*16gq&9qm! z^!9L`M{g^%XXp1xqUed%f`J3xOnbzx=l2ymMn}*7vbp)o%a=>V%a@lnr|yVE&Iv86*=C|2hrwpb$Z}+uJr#{k zT}HZ8-Cb(U%yQ_=9(w&L(K2yd`uU58mM&fT{?bR6$_D}O;SY=xXV$16P@IIkzec!O zxE0#S{lY^69pp^{KCy~H2Nhzyjn$0=LC?9T+chM;lhjQ1>T^5LxS{akryDBKPUl(+ zI!vMFXQ=+XC-3k3D*{u@u?!*`bo?w*(^d18X*zvIUPWhF7RGpGo{@xVpf+sHsI~jjRHJ%HZ#2Yump4{)mD)wU zUHlz-;C$aeRj4*>X(|38%IMb23cJmMH^h%yDWIyVs^W*DAQsD9d1Q z=uK&os8Hd|53S9lfOmD4#^AM254tNYrphdfKTWGsiey5ym3c{47q!gv6l6OMraJq@ z=_Y0VXm4e1ReRVQ6eT6}3{k{xI9pwrr=%fZ2>Ts{&NPb^hvSH?OAn$gRc8fA%7bZ- zb6Z}Ez1TORC6jUx)C^Z)SU@*LtNgp}2-WQT-gmBXC)=17t3Fp`QbSD@jdH*edV6}Q zzh!>4xahsszGACJ)EGU^tc0AK($@@mH3jE&FCAQBRQA5sU$O{w8H=W6{~M7hFI~P| zoXfpT{#rsdx*Tq7YIQgMV#&?$w5`t3IBcd1^{I;XLQAR}r5nu}yN4ua#QAyha?a8) zi%RsMiH({v@rtxjVY)CNED@GtZ__0hm3XYD*_vi@194*RmJ(z{_tIROHB_DxsL8ih%wAm7?JBYSJGTGc6do4mrJL;;Nrs-6Al=xqWm@4JJKCxy zd9!IoE?D{VnOHlOE4`C{I1C1{8RWunqMOjGH%bRUt!_|hmvDn{NH{9oBHSk2DZl|q z{P$E#jsl-IWb;y#Dj`LtYFtUWgWidK%SoZ~8Oo-{be1$EagwST85wNyU7t&DXQ{Vm$rI7%bw1X97~QW&nWGS^m}r`&J4+x?Wu}5ZNZA1XuaQHEA5Siy2EnwziF0< zB5?M1G4kKBY}rK7vSo_jr(1ECpvjV}H+G0)r zh_7^HdO=#2*ge^P5HX)_O!+5ESD-!dD=v{niH*DV44VTsIm`~Fe`?i&8>=3cr+f~F zDuO+eP$S8_##0w=#gsOj=pi6~GC;Dr~00&YHsMMfR*K zM~+4(Rv3Jh0jnX?=<*spLF_lVRcp|xLk%(23LN>Rl2Nn@m;Mg!`56E z@q1`GrT)1nnR1JBEG`sNELbua>uJyLZ;don(!~?v3Q_AQ3EKmhJ&_M3ju6AGjNgKv z-oL-ga4DT}O7|81|J-3ncNaWR zg$0#Gp3a>Y?f=7lqa%0!=Gw6#Y?2cBPB-(O~(5s%A1mIsAj z3mI@V?vGnP`VD3zWZ!vMF^>HL@527k0sGEj`A^aQXlr7x0-i0xv)?CeKYLPp6_gE% z{fPfvGQN!WLXhp}k*PKz{Set$XtxIKJz#(Mf03<-_8=tU72V1BTPdFQERfAczE3kk zXDcT6eS{O%A-sp(8j1HL?C#+F?#6qGT^_I@3Cqv^Ci(mzJx|04iCrQZc;jQ22<4AG z7@U7H-^4Bu*tW&@=rcb?5Q9d7Vj>Zv|;fnH9t|^ zoy-^U;^GN2eGjM6a6Ip3NyZBb`5N^`ajW(a)+EF53&7kp5Dpg<777k{oMCGK`ZUj7 zc|OkDUU|nXu`Q{$#K=4aq=`gIWsyI`O-C+cUTk>A%oWX^MK#O!56oOVz1$th)@j7{ z&6}Uuv`ON$o;(ML|qt{VA0cmC6QnJzp(>nsU)T0$lL@q6*Kwo1}+aQeAp-clqBglq@Mq$ z^s0HV2uk|b(E9Wr>^k3BA&A~(-@-}465V<{6n_;s9Df1$F5?+O(M|E9hcTC9Hgk9j zhu@B`7gSPV{CQv#VsxC3j`PuRK01N&(Q!UH&POLwK01-|(TS9gPNaNvoR5z4Nf%}b ze-YBfWxz}!5T6f>##aE_)Vgr^YB;iq}x50EmC!vP^Pz6X{d13Xs( z@B$|c#s2_|Fh+$%2$yp>7QY1H8V=XSZ$P*%{v@y=z6{uiwa$Prm!FQr-$r;oheuJK zfN&6W2%uCefKSAmflqSyDGomy|2ATt<9z2F<#Di1=U@=lEYU~ zX~nClwBkOFIlxa3a`;9LAL8&$96rq9BmCA;ycHB;I14NYO1=Pmj`79#;|RaR_#VZG zUP>e8F>YnNisO#}L-5~cuZQ?62uB#H)j~oghnF#~WZcFcphr0TK>RhNd6dH^8DHR- z*E#$Kk?2$G^h(2g*lO zP#8UzkSG~uN`}RJei~tHfSxOWCdNQ~C&E$i2JR&T%?nU+J#a?+6mTYTC;)9K%^2f0P^~~X9Pa@>#5p|7 z@sBXR81F*-ON^&E<`u@@bIzX-g2KoR6ed*DSHv8S_tJM!Q^GcWI!fO{O$iq>j!`+q zOF8{kPPvy;UdMPn#vG^f`YvR8L(r8|S(fl=F1EeeYsZkCznwNkdD9`zv&nS9g3HX8XT*>)d%sJ5b zULqXfm`52;GMvP0$e|pP?F7)oNcvAXB-_7$G@jyyCrA(6F%PY; zoJZAiNPbE)#`qAYd6>hGFw%Hhj`6ey_!6XCIV2dRe}$38({j)sxj~vC9&(J3M%8j2 zRm*u)Ef;B2Er-mfr(={SWHP0>ir?MK@z*gPK}-eqw>}FrF$UsG5su)k3e;r}unzsG z0(JQ=a0Vz)0hx9R*umJz*u^-&I0tg90yU+4#u!)eTdNt@Fs^01gmE3?dVY5U<3`3! zjGGy^GwxvA$+(MgH{)UXFZkA7oX`m*hu~@-)Z4!uS!_^kYsl z!5Alm>>^Z98jKpKHK%{Q zB{&mlm@_MxGb@=hE15GZnKLVyGb@=hE14%N!IShB@nj{mKEfl2slqrr03`WP1#Tpa z!lqaSS^5F6k}(E3T!mWv4A{=$4#v*-X~c9f4#ZzVcn-%eL;h8epOnLT(5*_?z_^id z6XRya?fljb#+{727^)jqnEk?ncHyh#@F3)y;x`S~i z<1WVCjF)qoJ&ac{Udeb6y)On$I|F!xOL!NT;Q_AQgJ|&>qy)9d!(5j~7$4=7CmA2( z{GVW&KgIYg)8Pfq;hUVpi*Y-0c!}{e=kN;S>zuaq9p+htL5>eI7Eo!$LdG^u+0NhU;M|zgFgj44y^MW~{rr?U4Wk2nmpKii1BHh< z%_y}mG+V;OjAKL%@e=;-I!?KsQ*Piea|>*DRHH3ilC50Y?Hsd{aW^A#0*^H@=u4F6 zRYYy{PzvwmcdzAIT*u+-IlPa*vY)?5V^9oznbOlp6vKHg6sGYghJH=qBb?_^3d3@^ z0zO}X_)md{p|93pl(`T15+T|P@n|W+Hpab-*8yuG87hD#^ov^La04&|3s^0r0bvvx zT`i=+KY^7TL-X-ka9kKT1Gc7G^!+`+4#rN#E=C%uYtico2RLSs!*e)1#9^|#)(Z1D zyp+E_#<(p0Tg0#A@2=vntY%!pxR&t}#&wMAInND@8yPn-Zf4vHTGe7^Hy?Nze``C( z?_k`?xQlT&)Y4(sX5dR4bDC4W!uUF;e1q{##@{o|$vRyte8jErF~3E&i(0lb*9vDj zeuCp=4#z2sK1-;eoY7~|Uf=`@t2wOYr|FDjO|2EJR8#a>LI-^veU{?g9OGdm+ej^2 zvuj1_xwYJLYteJ*tuSL7f2Ezj(n00H2uu0&F!nO`G4}IQ<`DE&O3568-b&$NPBThv zhu%uKm~o6a6TOwbxQ@%oJb)Pum6>?}y_KGlWu}(x?X|E+QE5pNt`$iKt`$l9trfYg z(Km@Q*K(P!MvU>*9-lR)Yhb?6tTfbD2y+_25q z$=Jm>z&M9-DZe$wxQgFe&A5hfEhE*j4&xW$dVXsI<3`3!jGGy0rBe z8Fw-6W;~1$qz>9X<#`VzPaSh_o$w%+pRAO1;9;uKBaDynTg10@!Z$h1i=2immUYl$ zDdj7SA9I=s#yBB3kWfKS!GZW9IFQ0*XRCvrMo-fjGZ~$X#8-99S9OqDl%8fxb>JdO z-^19;*vH6J1?SMyVa8FS19*mTF(XqCyg_M*6Y9|7l=HQm^K~31dtDtgwAV1BrIm$x ztUuHONtedWQ_v9VAsY#!!eU@KhbtLl*!5cvorIpQWZcGY9pUgpoX?{iKFLVdgL+sG zDCgHX<_*R-89!n?%P13~KN5QBE1(Qv2gmd?4l)igj#8eeJK8EF(~U~X>!x7Q-v4owF4w=#Az&g3** z9PWdxYrt4QIKVN39G=7BAr242UfO`MfYQ*+w}EHA4WQ?%2(RStuHtX4W?aL#7JS$s zT!Im>0eyr@vYzwYz_^id6XRw^8U-3K3eZ=!bIcCLos7E}cQanjY4$K)!FVO(Vd#?$ zkpFK1@8U1s1DW5zJ*WZlpJ+&P=LYm0!bdsfNyf)GXVTvqApf<%ml$a_-GClM_&TS2 zgYiv9lK%}@RV4a+#4#UpJ|zDeApa@;EXPl9yv*S^h0*&6X%60i-UnKt_fc3)B}eb0 zr|FEDj8>{6dOQpQSH$a6Zfx z=(&_zFJm8LKR;!zfc&Q~GFL$UQ+Sxuko<38`QO0uzX3KG@Fe6veQ_P95a;{ND*X zV-!8Bk$XWSW^F$}c$?4;Bq`d+Gq^@bOG@)TJ!M)oGOZfLQA&v#5iVvNqm*32M(B!^ z{wT1CSA?5HS`ltTU;6`aCT90-m>K;ENY?%~fvo*)0$Kap1hV$Gp+^vswZDz+{B6Rw z_^odff)fxA9v~#^dK+p@NLKoG)Tq-+ECZ*2?-63wj2O(C3CAc6><<*aik}_< zcH%ysTY);@Od&%!2&B2^Ou>khGkL6>32kfuVUnmbvG&&rY~hq`SUH*rk2}J-u>a2# zMnK7#XnVp196t)FH50Oo-ra(d&J?zC{5G7PH50iU1rq&dvISmIz&F#}b5Q!4qT_!hWF_qs#!%2pzH)V-1CgKD|tzUdYv-B1~%^y;%F8 za2MkMBU$WwVMF*kkgV~&nA=jCjf|TZH#2T$+`+h$aTnum#)tTek8${8#tFtaA!G=0 z<~4|3$O?+dWOOq6=`z7X6yyhZ)y1ayengpm+Bprl0wzpZRA1 z;q@q&j*&PYZ4PVj0CWBTbN&Ex{s43S0CWBTbN&Ex{s43S0M_mw$6HUtcLSe<+!%mI z0foPX9yB0)n~;0N0QZOi?hymrBL=uf40694IUmOmg&+%m)~WkcZZFv7H6HYD`L&jR}yY29ZCHa)^&tXdAC$JGNz zIJfzX3pj>!i6LPj=R-U;1Rf)#6`vu2R?vn7T0tA)RkI<1R?UWZ)oe(hRkI;pH5)>I zq|(w#*${f=3E&gxK|{im9Da(!FLLc(VtkiN^+*2h`&B5i-7!xy8rQxN5 z2c#s%g9LJz0)e<(5LuSwx9YLze!Uu+@WSj$8+jm4?rLx-LJz+$!~;RKe5G2xQY~MJOj15UJSpwL#|C4KS0bNaG=3%W3EF<-6Z&$|_9LH^Ec4ns zp})qc_iXVsM!jc=Qc5h}TxO)#fZ6e%%Z~pVF!6hHnVo{nPWhGDX)tkdbD5onzBM(O zqoz)$beGsICX#KQ{O8G^y&U+@Gd^&h{O8Gkp8V&@f1dp3$$uXF`-*w;p9lZYiJF^N zCSGnHJ8|<_dpMQ2viZDC2hS1{+cuxKxnLsG<`;=fo6kE}Fp+8V%S5Kl=bb2+$h7&q z=>(UEcYq6M`8mY`+H+3PQk;x`Zs95J1G8`5;=W{ydy6f+1M(|xf5Gf`x9}{%M3J?W z+3#*~SFy!i#TMR%QZxIB*E|1V&dZGDdgebV$?WBNXD`<~Z@J#N$_>`M!J0Q%^9F0) zV9gt>d4n}?wC0W0ywRFBTJuJ0-e}Dmt$C9*Z?fi1*1XA@H(B#0Yu;qdo2_}XHE*`& z&DOlxnm1eXW^48!w{b-eavR5K!pN;xx%DcyUgg%S+6$Y|lNm=N{X0FP3(9aW6LiW3Uz)%ZJ9ULid9A@$0`X z?lWTcK7NHZ4)y`#U>_h(^)AjtCQkJMW}D}LiBo;R=-CI#sjQ|xP)-xiM(+=lYo*s= zIS-WUQ?uM4ZnWfy1J_gXW8QimDElpcl3w{hxf!c|p!{1#q6f;n@jg&KhowDGZui&c ziH3cEbJ3~!qWCiSAkv-#CjRX~RtiI(BVLKmd9cXL{=s5TXe3M>Bpf_F<;1iE^LG3o z5>EN8(zjc`Q@Ts+7FS!IH<|}|uIIp4#Q{rpN@qU#VEL{%loGxk55 zgg4j%o%o`M)X_s~=ONqqknMcPRy~9tppN=_2tN=y(Jv3-2ZGVyL$>E3Rk4G-Cdhtc44PA*4-52L}*iGO}XAN2^Wx&}Hv>Jfd^Bl@UE^ihw{Dt@I^!T7*O zXj|y`s7LfskLaTw(MLU^k9tHO^{D(GmH(sie^maD%KuUMKPvx6<^QPsAC>>3@_$tR zkIMg1`9CWEN9F&Rz3egg-^U5Mc&EqgWslj*9V#b;{>75wYHLS*r1QXr5hDa*P%Z#>bSbL$IwU^*bOA?{FhV_<|EVpC@ zxR&|VUEopT$p=n>p33{kS~&A2$>@9wnB6W`JH#)ug0!}{oOjH%MbG{f;KN?~h9w{P z>xa_WomtE50%Rl&jtGCAI+(qfwT!C4Pp3X@=8m*EIMX`bkuj7zGKK~(7ZW42mNl+i z)nWbR)?Xp6x8zlEfVb(j^x z8ulaJ#QG%J&r}CX7*$s zCzF0kBBjU6-Ihc$k1LtSkqjJ=OmMt7Q9MnYEN0L8aU^pK@3*m{z9KP=eb~}sFp}xh zmim-TpSIM8WKutSVSQRupOWdr4_rz~EUFL5QhR6T34Ue z)u)vDw5~p_t4}HQDWyKGtB+X+9FSEw*al=3Iy&lO#g&$8V}06K9}?rakXSGh>nnfG ziI~1JHrA)~`jB2TbZo4zjE(h`?^)*qF;eX-KMbvG`?R_~t*#H*a^Fg#M}- z`ZzDM28`9M)9Th~b?cDxKc^(Ub)6Dk$M|~}^m+Ktb;^027Pw9eWF63&m(r?rNc;O> z53BL(w8M3H-AkbpueA=z=hxWeIwT+ZBY7SOD(!Vho4X_J;9CUM4OQmx$RTcmfHh zepddUV9g)SuJ#kpjtu*q5A-v8ISo3qmww)p#)6r>^gDa$cUI8vtf1f7OTV+1erGTJ zj9goaej`KrSt;V$GLatr#(4A_-O*oW_QIDuc=rA>GnRg52>oSdEd9<{`kgKGJ6q^? z#?tSMWfLvDo0Xl+ST;Fh+2o96lQWi0w2fbBTQKYPo1C$1a>lZWQJbrrv21e2vdJ0C zCR%bA< z+xmIueX7jc?o;J=#9MPmVse7F<-SIzKgF}BWTn_8t`fV&9kpt4Bg%wW1gJZ>G#qr`q@icKVxEVR$4@SD$#L4=&o0VCnfN_aEcPf5-iY(~OxP{Ny)@Ma~vSqX1O!l{$90GoN= z3`WA6k#MeBB1XcSmGI^=65gzYH!I=ISQPhF!kdvW_eH|Fw$t)Rcr!MZI+5^ZEG={- zycv5-{YZE-yBjL@AAo=wJF%sU)2$GV0Ip?EVnJqu$Ke@m|k(uV=j1Gv4c`-s`8{ z>sje%rMKcacNJT??|ooq)LWfVZ*@k!6|cyzc*S65)LXfGFf;0{&ZxKIA@gfy)LZd> zq4U1KP0qxPQoc>j+vL1W&fDa?P0rioyiLyAXUNCwdBAAvbVGC*&-8_X$^0rq*m+LPJffb+lsPmv7p?n6y_J$#TS&+93Y z0i+tbIZx*)k^xVV3@~P;eom1Lc#33z(G#9{hG0&S4B#1pIYlynX9(wpW4MY0o3^@CsK*PUo;7nnHeo$kW#WES@$=)_U)G>&?wanw7FquxoIxt3OO zm2uQNxo_yiQSanl!NgJL?|16jt|6T4l@A6)|-0|P#j{h#^d(>pU7tD_T zE_eKQx#PbJ8N!XZbbif_|1Nj@-(*gEOYtUi+Th8Y;(XKo@+SS|S?HWKc#{a3l;>>e zo6K7K!0cSSN#sdNa<=qMPaM3-vwt5tky>vOsg?4aEq&7-_a;3KnjRO7mw3}2_ohAW zO?%v%^tk*QFYzWlE_BY8)@bL&V4{Xi5jZmLxPDKsuhVEs-evzz(ftz&}M2TYN%$^Pz}G4`iUBsHD>ksHBm#g zGEqY{qDI@nL=DyOHt;DEHB>7THB>7THB|FNZOy2mn*E|?zo?ao8mbvJRKwD8m-D=1 zqK0a`HH1&1hHC611QRt>!z1NatpdLkTB|T>sK%Q`>LhBYMvn_7YP4q5P|c{J8on!6 zsdqeBX!UN?P_4`xL5=q>q+}1Rm5Cavm5Cav5j7fA%k+q}`7dm9-W_VZokdEC8mh75 zLrZ**sPR5^Bku`WkJ{tz&mP}i_t1mBOG$Qr_V~87$G5FLzHRMs_h*mqT)YD?2kmn$x(;UdXOFu-dwkd1tE4>V=>~lZ8^j+z37zwFgUD?ynDcal z$Ss)jbc0ANnDcal`iDXN!yrB(SLHn2AU+|O^K^swgka9o4I)s#DmB-n26#*Rsw$k<~-eCk@Iwe_U=J@_aHJ)ot&o|EOMT1(7rrqUmm2l z=1Fs&ZV>qgbDnMx`3KW02kDh?wpR|)D?{fz-5`1i<~-dXdI_da4brDlN6Dav*Y5FLfidAdO~6*}kX2GLh&rQw_Gp!PqA{fB?-e-Qf*o%3{qzTpn~ zhCApR?pyAOyoI0tRq+;kBD=xFu)T#Yf{9^!3ta>g!}b=s2HCpg#;+! z*@KCoc*~fXx7<&8pAmCQ@jmmqU0}}Izt89#+!JJ^<5xzyVBX5#XZ%fh&f0&#KFb-! z2W29)_ByZF>%4*;X@1@7ykf6o{a)u4d!1M8bzZU8dBtAm6?>gm>~&tT*LlTW=M{UM zSL}6OvDbOUKE};wihWpk@GS1Kj}bF;a$oFY6bmNz#Xd%m&>1!MF-C+=?u&hl4k=0Q zi+zj&!Q{T!hb;xO!?+I*58|KU&%7>lb{O}e@nCis_u(_S3qCWL+!y=slc}GWpMChW zUByStg3bf8+VByx<+Whq13yBllpxh$;sZZIwxJUr_z|3*MdzfZc~C*ALp?)ORe`=tAQ()~W^exG!|PrBbH-S3m`_euBrr2Bo+ z{XXe_pLD-Zy5A?=@00HLNe}p>2Yk{4KIs9U^ng!#z$ZQ6lOFI%5BQ`9@}$haIZpu+ zLk^Oi20Zn^E^xBQ`zbWK26;;bKPSzb2sGJgKz6r5-b6s&L_o6BfY>2Ob{de=>ma*+ zAlYd^cKtxI(|}~B0m)7S^40*dR}PY$27F&W`^5dhNDSn?7$iFl$lEceND=TBuVCb!wqbE!3%nI<-)z7V6YOom!|<3w3ItPA$}_g*vrRrxxne zLLGLSHbe_`YN1Xo)TxC!wNR%P>eND=TBuVCb!wqbE!3%nI_x}rqJ=uOP^T8^)IyzF zs8b7dYN4)-7V64qp-wH-@utSJtA#qXP^T8^)IyzFs8b7dYN1Xo)TxC!wNR%P>eRyF zd7~*0&l?TM8x6?X0>~Q;$QupF8x6=C4age}$QupF8x6=C4aga4kT)8THyV&P8jv>{ zkTcZf;d!G0>qOpYpjr0-S@!^ma{y=hD{nN=%cXgvDMu$;4#-X-$W9_iwj7ZCM38Jb zAlY(2vgLqe%K^!j1ClKVBwG$2E+bnGNVXi1okx(JN04keAlY(2vgLqe%K_Po1lfxO z$(93>Ee9l94oJ2fkZd_1*>dAZs-sYc(KiH6Uv>AZs-s zYc(KiHQ-jSVyy<6wHlDM8j!UbkhK~xUUwY*J$zWJ0a>d7S*rorvn$6TdFmkfAZs-s zYc*gz@HnhDbUg65tkr;==m+D0$JzJCWvvF9wHlDM8j!UbkhL0+wHlDM8j!UbkhK~x zet2BgYCzU%K-OwN)@nf3YCtl6fVZXncmUd;wHlC&A0TTrAZs-sYc(KiH6Uv>AZs-s zYc(KiH6Uv>Wxd+3SNrv9zh3RvtNnVlU$6G-)qcI&uUGr^YQJ9X*Q@<{wO_CH>(zd} z+OJpp^=iLf?boaQdbMA#_UoBfY@|KWe!beSSNrv9zh3RvtNnVlU$6G-)qcI&ug^*y z*GBvGYQJ9X*Q@<{wO_CH>(zd}+OJpp^=iLf?eo0@(zU`daqaS_3FJ|z1OSv zdi7qf-s{zSy?U=#@Ac}vUcJ|=_j>hSuiop`d%b$ESMT-eyb+jQ*Q@t>^(zU`daqaS_3FJry*H@$2K7#+SZt#~y*H@$2KC;c-W$|= zgL-dJ?+xm`LA^Jq_XhRepxztQdxLs!Q11=uy+OSb*g| zH>mdp_1>V~8`OJ)dT&tg4eGr?y*H@$2KC;c-W$|=gL-dJ?+xm`LA^Jq_XhReV6Sgb z`weQpLG3rF{RXw)p!OToeuLU?Q2PyPzd`LcsQm`D-=Ovz)P957Z&3RUYQI74H>mvv zwcnuj8`OS-+HX+%4QjtZ?Ki0X2DRUy_8ZiGgW7LU`weQpLG3rF{RXvvtp5L4{r_>& z$4QT8Zg5{Yp1DCVGtBY4$^QdpwlE%<;&^&ikgP8tSzkc1zJO$X z0m=FTlJx~7>kCNM7m%zkAX#5Pvc7=xo&}$htS=y0UqH@WfMk6E$@&74^#vsB3rN-%kgP8tSzkc1 zzJO$X0m=FTlJx~7QWzxb3rN-%kgP8tSzkc1zJO$X0m=FTlJx~7>q|Kio1Y7EiU;Hr z56CGVFuI$FMs|UDtD1;Lf}G+3zbwru9%xSSfSghRIi&(}iU;Hr5BOF2aEb?-Q#|06 z(wyRf<`fT@H?oOnFxVz?iU*q9cVONKCZfS$-U}w8!62u2z`vH}6c03~ctB3^fSlq1 zImH8R7CFTO%_$y`^-J&rujLdEG-pphPVtlz(O~chkyAX-M~a-{f#wtsm^054bBYJ# z6c6|rQ7NIv)VxUK6c4oWL3g1!#RGDR2UG%RDkYra0XfA3a*7AMUA)s@ImJT>r+7e4 z@qnD-DJNDq#Zxw_uSWY?qkXN>zSd}8YqYO5+SeNGYmN4`M*CW$eXY^H)@WaAw68VV z*BTkQ2H~H+)@WaAw68Uysg$IzHQLu2?Q4zpwMP3|qkXN>zSd}8YqYO5+SeNGYmN4` zM*CW$eXY^H)@WaAw68VV*Bb3>jrO%h`&y%YtLXkTlzuQl4&8trS1_O(X)TBCif z(Z1GbUu(3lHQLu2?Q4zpwMP3|qkXN>zSd}8YqYO5+SeNGYmN4`M*CW$eXY^H)@WaA zw68VV*P85WP4=}W`&yHItx4TA+1HxvYfbjGCi_~GeXXfTUu&|j(Lb?=Ci_~GeJ$s) z{)m$FwI+5Kf>&6QzSfizb6_m3$-dTPUu&|jHKD`~H*P85WP4=}W`&yHIt;xQY zxYYZonZDL!Uu&|jHQCpi>}yR$`dX8HEjtWpL;6}%PRxPnYfbjGCi_~GeT}!tl-t*u z&|T>CwI=&olYOnpzSd-4YeJ8ylfKquUu!~-p_Pw)t;xRDWM6BtuQl1%n(S*$_O&Ma zT9bXP34Mh_`dX8Ht;xRDWM6Btubse5ufIHjncfyKD_|!u)7u7;DGOwW7i5PQBvV#- z0`n-!nL!2F;RUm%bOQ64{F)V{6PU3Cvubn#vlOBkT&Xw_JGl^=Oj#hAvOpqQK{925 zWXb}`lm(J03nWt($i6U0rYw*+F_27IAepj2GG&2e$^yxh1(LrABvTehrYw+5SsZ@VWVjkJVJSs|>DGMZ17D%QnkW5)1nX*7KWr1YM0?CvG{wHNf zrYvYOWr6SeE19yO$&>|>DGMZ17D%QnkW5+SiS(}^QOY2hvOr>$K{925WXb}`lm(J0 z3nWt(NTw{1Oj#hAvOqFrfn>@8$&>{WQ2-KA0Fo&SBvTehrYw-CW006@8wS?>-S@AW_*MnX*7KWr1YM z0*Rjl$&>|>DGMZ17D%QnkW5)1nX*7KWtAtg1A8@ojkC94=7A^a|4-8YpG1HBB_*7_ z1v$qDa=H-Y>@65ieiA(*C7k91Ib#TN#t`I;A;=j+kTZrLXAD8k7=jPco|CZB(3_+= zdkY<(e3Cx-Bz^Kp`s9eH(Fw5mR>s!yvD<eH(Fw5mR>s!yxx)2jNksy?l%Ppj(Fs`|95KCP-xtLoFL`n0M(t*TF}>eH(F zw5mR>s!ywOXY$(X)2jNksy?l%Ppj(Fs`|95KCP-xtLoFL`n0M(t*TF}>eH(Fw5mR> zs!yxx)2jNksy?l%Ppj(Fs`|95KCP-xtLoFL`n0M(t*TF}>eH(Fw5mR>s!yxx)2jNk zsy?l%Ppj(Fs`|95KCP-xtLoFL`n0M(t*TF}>eH(Fw5mR>s!yxx)2jNksy?l%Pixkv zHS5!w^=Zxev}S!;vp%g^pVq8TYu2YV>(iR`Y0dhyW_?<-KCM}w)~ru!)~7Y=)0*{Z z&HA)veOj|Vtr;u&CG*Ajv}S!;vp%g^pVq8TYu2YV>(iR`Y0dhyW_?<-KCM}w)~ru! z)~7Y=)0*{Z&HA*H@m(*LC)2;a50dQ=B->$mGWJP1mKh}5AxO4EkZgzLDXh};gJdBn zPnE-|ayV5Er^?|}Ih-noQ{`}~98Q(PX>vGC4*9CW9MpLAE^(;s|G{%m&x8`N->fhjVX*2H-nk|PI07|;z%(? zZ#JcPfZf|Ec(A*`hYmakW>z)@A2kVFC-(d6CVzeEz%i6>4wh5d(VN2g)8H8gJ_DY4 zU=283`YiEmJkpeMhV&1M8=<{p`7pa+Q~2Txcjwe^)3er!tlV`g_#%1vJN z@5H}hb}^;=_j23J4)~PvX-l3Fe=7c+_%qwE#jCbjvQ2us^z)3HQ#j2UZZBB=AJN5> z@DF}0M|iXF~4- zH?XodwcN;>;ncEU`dKWNFDAfkn%t(zjV}wpZ5rIRfZ;X`ZlS|%n%t(zZ5rI3rzG5_ zmCqh{vOELHzYU%#o+Zu@H;G%sZQ={!OW>K<{9-U`n`g2Q$vfggkGLg!R6 z7-^r$*L)r<&&=86@~ragVgk6CH-)px=U6d2t9(8smCu4_)1DpRnc`Vu>Yt4bqxD1w=c+8|?YFtHpn-BXy!YE0>=QBqQO_UT! zloUvm6iAd5NR$*vloUvm6iAd5NR$*vloUvm6iAd5NR$*vlvH`X(mNk%geFP~BuWY- zN(v-O3M5JjBuWa5WX@MI=lgVD!Ya-yzl1&94H6{<5+zlB35`&KE`mf!fka7xL`i{( z9lF3h{R`l5F7#)Mkzn@pFDMd+aDjXJ7r3W?0ngh&N#YPLa8LgN_w+AtPyYh<^e=Ev z{{qGZ_%JR66NhjCPr0jWU{sr#oUuYk> z&^|KDHqWxnvuyJ$+dRuQ&$7+4Z1XJJJj*uEvdyz>^DNsu%Qnxl&9iLtEZaQGHqWxn zvuyJ$+dRuQ&$7+4Z1XJJJj*uEvdyz>^DNtZk!`-nHqW-rvu*Qi+dSJg&$i98ZS!o~ zJli(Uw#~C`^K9EZ+cwX(&9iOuY}-8BHqW-rvu*Qi+dSJg&$i98ZS!o~Jli(Uw#~C` z^K9EZ+csZpn=iJ_U%{fblwT=6kG*{bzY*Lh64_XO1?%EhtSd-lBY3;ztHC*mY%J#_ zva!5GK9|Vn68T&rpG)v3yUI)CbBTN|kuC}NmI@jjzGR}RL*1W z7tH?JJZ6BQ50mB#N6^`qA@@sK#hfrDe_;tAT)=p78pzj}4!q1lb1iwIh(P9f5r9 z2;^%=AYVHIvtF@)xqUD@9SfM-2eb0LfVbT(;4<%+Rp9f5r92;^%=<<(fl9FTmEAo(7_?EPKse#F&i|3&DG!dIjH(Byjr$)E_P z%~zxSUxI1R)#x|noEu@5ek0ALTLGnF<#wj!ThV0H>x@fG2dxVTn)Md-xEwHAqsYjytF%G@a>iHvHczXuZ+ z*UF4E{1X?~%8WGp6BpNNgiNb`pjAK6iXX^TiHvH+4+Ikz*J^}Js}VA-&R|=a5rt3U z;#%5i+et$h6`C;KOLb^E#VtWlRa3*=(y3GOb3)v^tw@bvE0|_=^Pa z4B?izxK{dpFmZ9Mczxta?+)k0#kDd*g=glptwzYSGN+~GW#ZymjgV<&PK$);_2F<^ z+E3r7{fywb*9tLlajnd6Q!{aKt;}yjCoZm)`EBUL#kDfu3x~wTEp!B2=m@yb5pba+ z;6g{hg^qv=9RU|Q0xom}T<8e6&=GK1EGaFfKY|mm=r}JxOBa79=Vs)`tT`X1?i`B(qwLsn-b|)9pk8TDN+e6+F z>BROdHnwN6l3%RM7c1?>N_erdU7|dfD9WIKl;;xVxkPy`QJzbb z=Mv?)M0qYzo=dRy-Q`l{xm0;B)wY)^&!x(9sq$Q^JeMlZrOI=u@?5GsmnzSt%5$mm zT&g^mD$k|HN-b5MOO@wR<+)UOE>)gOm1moyOdCFSXW5324JKBq4IeuQCRVBq***&< zR;rEhD0E__+8B?X1`{jQ#(1DG3rG7B6Qf-V%!NhO0F)9TUE7iuR z6ilpC8>3P%u~KdL;c!T-R2zOcm{_Scw6+UOtW+C5HkeqcHZ+wMCRVDAQ7o-WtW+Cg zSz47?sWwJ5XhyVPVx`&`(WuFYMtktF@L^ozE@(NwW{<25|H-wCZlMz^)yC)+OsrHJ zel@=)R;mr}8alC3ZTQ&GiIr-@(;`(oZTKfvsttb|I3`SgCgB&+X0`+Ka?W zwHv?DZu~~O@f+>NZ?qdL)o%PoyYq^6G`NfUnf0}!!C+?5?PxHVnRB}{=XPh#?arLr z>2YaoX3NPCb|0AdjdtTV+Kt~JONvjISgCg7H`VmfM{tw>u|k zcTUpoJh>eWau;+LO#DVW`-*=ACRVE5_>FesH`>u->STu8jvj-VA-AK!U}l)@&WGEL z-)MK<+m5DEo>-}N<2Txk-)J{}qum*AyYU~(gy*V%#9g--lNN0IoA4);1coRxJTjkF~38y(0b zbmBKU@ZPDJ_>B&{N?MrsjSf6yT9WvU4m@Nq@f#g@$bSMRexn1sod_m=qXWAQCVry> zyA39Oqr<(<4&DJ5LnnTt1AES|iQnkJo`Z?s=)j(XiQnjOud~Cw&JOoFJKP=UV7`&l zAc^1Tz(1!AiQnjOud{=`kf%%hMhBx$F!385c(!2TH#*$w>~OEM1FMJ}ve((+US|gu zavXHxH#!)n!Xfb+9eBcUNc=_zo-mmBjSlxZJKXE+z@ow}@f#iVsoX1jogH|{lq7zm z0}mNG@f#iVuVCUgIv7EC7RJ8NiQnj;-{sfDZ*C!>|p&Wzb1a8!@bT9dT8jxZ*(x)=GVk;bTH5{6+_T zIrS62(Ls+6o%oFo`gQ2UZ*(w2hIX%W8DqgJd{D-wW%~bR`u}D0$6r#C_>E=szF^`a zmbur7mE$Fr(IZll=!j+Xh+yJ3_E;)elYPH%dq@lcJ!8ErJ)nQu?#B;ofV8_ z`s8K$($N4mZi+COO zmfRrny)8=k-WGVX$oICO`Q8?IFZO>czA?YXu5QIQ=85>;7Wk;h_qL$3TXC!Qb}JG~ zot$~R74Mgtd~XZndt2Z~BH!C8Z^aISd~XZnds`si+XDIC7I=ie^1Ur+zPANV5VLE1 ztA6QLw2=B_Q~;GEcAJ_Pi5H7X6}wIOwg<^<50cp)%$o3b>CvIdY!8yz9wf6pNM?JG%=YDXktf`cTae85AXzU! zGTVb>wg<^`4wB~_B+of$JCRR*C9^$fYmr81GTY-T$)5v~KL;d#4oLnSko-AdR=;m! zeiE9mZh?Gt3yjU*hRuH-B!3P_{v41@Dd3-2hx|FvJ~`;9FY7uAo+7Z^5=l$&jHD-0+K%mB!3P_{v5E^_K-gZn*2Fn`q6D@ zGcqK94oLnSko-9y`E$U(mUHG3x1sAJK=S8+#1 z){;L5I(`2(<_{?+e-23g98fLe6Vm3tu+8KTfhKx?H^`p@ z^7RBTdq%g@gT4!rKL;dRDHy+TyME*Lq&0cliZH3^DFstK)#*;#^c?tSGirUa=TvTcJ!5U+mDVy+kPY;ny)8-pMzQ;T7*P!|K7Ra}^KyvPanL&LIS*-#2_7=#uw?MwV zReldSaChVoy-`)cGmIcVSw?MwV1@i4JkZ*5+e0vMz+gso&k#BE7^X)BGW)r`$ z-1v>JYpZ!9-{W4ZAg%Xy>u8-7jv#`0p9d=kI0oOhF4oA{08_>*Ab zH3hJ9oqjrB0$6Rv=?I!#kMl z3M<@gU*T^1Uoz*stNcsmoOhLX(1Y#+vx0pGWArXCE7*5nCn?Da_8qRc-r_E;fm`WuDIUeit8PW9n@#k2xbNQ4p&_7 zaK-hGax$ad9eDfvnicFj&}Qmn1^W&>YRa>MeTOTqck)Dw%R70ZU{(n^-jk3)VW5C&D`mV>z%H+-sy_#ovygv>5A)}uDIUmitC+>chqO33uZ6- zPFGy-bj7t3d43;>#}{=X&pt5onNH{Mop|pp(3!(`I*0GXZ->rovlG7^%pAVcIee#c z_)h2WowR%{<(b2GI*0FMW)eEH&`vyjFmusPJbW;7_)h2WozCGqox^wH?NgpPe5Z5x zPP~2S%;7to!*@D|?{x0bsmJTo<8?ZR?{p5|$+(cKGKcTf<8`9zd?$TpKINIichYx)N{{g+^)rrlI*0Fc4&Uh@D>zY>jv zTjua9(MT|J_?5^xbms6Yk!>(@_?6D#S2~AZ>Bzg%k$0sd?@CABmB@{n&f!-&+OBl8 zUFm4M68YrU%;8r$hhOO&ekIaKN#^if+H;ro+@(EtY0q8SbC>qqr9F3P&t2LxUn@aY zUD|V(_S~gCcWKXE+H;ro+@(EtY0q8SbC>qqr9F3P&t2Mcm-gJHJ$Gr(UD|V(_S~gC zcWKXE+H;ro+@(EtY0q8SbC>qqr9F3P&t2Mcm-gJHJ$Gr(UD|V(_S~gCcWKXE+H;ro z+@(EtY0q8SbC>qqr9F3P&t2Mcm-gJHJ$Gr(UD|V(_S~gCcWKXE+H;ro+@(EtY0q8S zbC>qqr9F3P&t2Mcm-gJHJ$Gr(UD|V(_S~gCcWKXE+H;royh?jsr9H3Go>ytltF-4; z+B0W^v4mC5DpzUGtF-4;+Vd*yd6o9ON_$?VJ+IQ9S830ywC7dY^D6CmmG-Z&)wQ{xAxqvJ$Gx*-P&`v_S~&KcWckx+H<$|+^s!# zYtP-Z&)wQ{xAxqvJ$Gx*-P&`v_S~&KcWckx+H<$|+^s!#YtP-Z&)wQ{xAxqvJ$Gx*-P&`v_S~&KcWckx+H<$|+^s!#YtP-Z&)wQ{ zxAxqvJ$Gx*-P&`H_S~aA_h`>O+H;Tg+@n2n${l;|(Vly>=N|33M|=N|33M|2-~z*EJTt z1;$9%i_L!?%owLxTS~IV(u?#$XN{%THI`o2SbFIl zX+zdndR=4bb&aK$o|1cIjir~K63iM)FFoaIFl#Km=psC`#?p%}f>~qfMHj)WvGlse z(u-bFk~NlI^b*V(OD}o}W{suSHI`o2SbAM!>2-~z*EN=2`cdwfHI`ocQ7_tz470}4 zOAiWWjiuK$mR__R&RJvWMb}4wS!3y?AEjp2SbAM!>1C%TS7nW**EN>j z5k6UC=}nGeFl#KmSWC*Y#?p(;Kw~q(tg-ac2ay$hFm%>fda2-~z*WSvv-eL)^vGlsel5f4`E?HygT(u>80&KgTEJvx{*mR{FbdR=4bb&aJLt4__VvGiiw zp|i%)TV{==mpvM!WZ&;~jiuK$mR{FbdR=45H|f&mtg-as6GCT=rPnoi>V_8iPx|_G?tg)= z&Kk>VeaLEk$ZCDaYHT&-Sz}p^tp>BkvKm_rW{qVv))hKyEUU4um0;FbR%0zG&l<~W ztOC@Ntk#pP)|0H(ldMM9`88`St6gJRjn-0m0_J?vJ)B@l3E$lV*Ygg3 z52tnJgM4uh?3dom37UKO%HD49d9J;;cz|cWxBMY*toN3~^cqXn7iX70@NCf!JXQ1q zPXPVE6F@)k?9UI%oFuxx7%3igU@7zoX#9S9cgi2I7`nVgQfznp&H zUxH^@ayIR`pA$Oy^??Il2iJ&ey=pzDb?)cnPJaD&UiBpQbAS00RzL3N99Hh~OzvC$ zRQm74oWr`G(>=Lrt0mi{w|njLyk+0dIjrz`!SWZSUy^=V`jya};@MLEuza@oCNj#J z&jYOaoClsDMpF+I_n|w#lL$s%ekT!(zVe;KU10R}fcnaJ5>pa=MP$y z3>|&ttBAWnzKRGwCx__H?;(~CVz+C+tas(Rg!h3P7=0du&u*|^`g!Pw)b&H^`XSmi zwtT3JuK9W(x_+qKhz&fFx)o z9q0ki;9ifR-{4u|*+}v+G@Fti@~!&ExC4BUK(1O>{1b3v_|xVc;3jMSd+|weGcg#C zDTl|v@)IpmT0?z2`>P%o)=4WzLYU$GSr24C#8$kZwSp7t_|vS~uvcH{h!$ zK*v{aK$6danU8HyZX1x;VbGg{NbGqqK70e#av>NWzCj~G+$&yv12Rd?c=Zj)1X{1YQBS_HsK){~a#G;);0Z`_qt?5zc-WHo zx{dfc%C+Z>+Ve)9_en~AXnAaSBUax4uIHT2MxHAr@n9SES{rF+==i0Lv~4sPzqFB7 z?Jl2C3r`?hXk;6V|9nEv`2>=@20EvepU^`-fgJK{Jl+#LZ}25C{_V%KzX4m!=-iLS zmx39c`yHM8y;ncFrd-YTtJ!`v+plK()oj0-?N_t?YPMgU_N&u=b=t2^`_*Z`I_+1R z{c5vcZT2GpTB0`l)n>oi>{pxpYO`N$_N&c)wb`#W`_*Q@dhAz^{pzt_J@%`|O+4M( zdo5W{{Klv#wNu6!t3*t-SE8w$8gHet4?*LQ( zS=zr1+-^zcC(qLI{Q9E!GWeYLea`znhjw11B=>y|X#}6;xt_x+c7wV5b67>LN;L9w zNFXI?!*l5U#qwuz`^DdGjsI z)1Y~-9bmM-1zkT`Zo#^Clv}-atJiMz+O1x@)oZtU?N+bd%C)=8tzNs;Yq!zPC(CWL zGkBIbL);{0X0?sh=GT|RSHSJwal3ci?j5&#$L-#6yLa5~9k<)s?b_;gZFRf%eZGiK zd)~W0&)xqe^mOF*ylr?MSz+18D){d#k2O9opXY7Q^GKe4sMmVlbMen3&(x0{K5uKE z*AAaY!cUg}!E0Zz!k!Ir;Z%U`g~FWBb)s13g;hZp7Wq8wh7 z!;5lwQ4TM9EtW`2cqZ^AuX@R=Uh=A!yy_*dddaI^@~W5A&db(++4?VA|7GjHZ2gz5 z|FZR8_AW1bmsh;%6|Z{5t6uS{SG?*KuX@F+Ua|fTzBYJXxue|8OnV1k8w~wcaSZsb z^gc#`SIbvQ4f9TCxjI^(t4Tm)ksRle7mtM*#wL*)Nzxu4PY zRlZb6c_n){uU3vnGOt#qgRd2TaNu_EDDgq&>aQ_tdJ%j$CFQH|e~mWW3l4}oE!o9< z=CyJ+BgJcc0XDzBE2br{@wLR@kTv&O^TYhgmto;nIV|_B98P@ZYn4&VMqaCo7RMa; zSI}dbnY>o{154_~qr?V(JzDx0@mOnqN;=W7uT{odGJ&Ultuj%%ka|K@WnZhDdf-y2yYn7?CYMQ^ECC&hU z?yTwO%$J@ke~$E?0pAlp5I+o}iyh!e;*{dk<=^|(_V>QE{XO+}mw(T-`MMllm&5CFcwG*!%i(o7 zye@~=H)z9sAYVHK_lR#5bD`gr<_o9LABcS06nY=N@eMdXS-w%pxzRT&V^SZ>34J7Y zf1}c1$+4Csw&4w=cP}_m`UI~%O*&B-Z=lUd;8d@gPR(8Pi$4O7LgTyW3!r^r7ro#* z==6eJ*#Ft!9!uV$RlDc~`8AfmOKabSonH?}$WEo%fc%pl!h+aX;}kzu><2mihAF z?O;4)zM$6w#zW>idX#7tHSSAIY~x>nv5gv5(*(vt*7T4yJ!FlxZJ{I{vZkHX%6P~c z?Sz9iQ`1A%^pG_@WK9oQtHeXr^pG_@WDU!?h?027S|uK`R*8qKRpKFQm3YWnB_6U? ziHEG|A#2FtN$7aUS|uK`riZNQA#0U*$XX>HvWBcuGaj;5iHEFJ;vs8#$eJFqriZLy zQTa6+$Hv4``(jDUlVfP;>JgN}fM^zqT~8_TcL`IWKvzySDj_`HqHgnm!@198Zb`0cm3*K6h5 zSkXZFj^6Jbz27@}zjt_w^U8PNa~~M*_m1B09ojz^I^ORcIOo@Rzjv^ZV4mU~I6qmw z<5Rq&4}3=-_>MmC9iQkOec(ITz%FXW2fm{Zd`BPn4o?>j@qzE4wP1YUJNm$Pc+z{z z_ptonQR2g5)}7v?*Zfuap1tP1^6z=l_ptn5f$2f-mAjDJdszN1aF6A0A^-QV|I|tU zdXM=@>g>z4_Oka~k9yzrsP|oodf%0(_g#s4A1VE+e4o4A0*3$l@c%lv$C9_`P4Aa) zTmG&k?^!=9_V0VI_mN)ceY~l?PtW=>I0mosJ`(#8*dTqZG~cbJWTJSQ$oI!7nM$1x z9N9l`WdDFxJyU*wzNUj2-#$u2~JCg=5Mg{m&3BxfgnXeTpId&k*vt8hVc< z?~3nP=L0b#)DZ2=Rr^?>8q)I&>3N3qJVSb(AwAEKo@YqUGgLW}71|;F&yfCSNdGgW z{~6N%4C#M{^gl!TpCSFvkp5>#|1*R&(ptUHkX~p=FEpeV8qy05>4k>$LPL6?A-&L$ zUT8=!G^7_A(hCjgg@*J(LwcbhB)^!uWS%yp7aC$*y9j!^caKLJ(j)D4#NX?Pzt<6e zud>~XRIe-dD%HJ6^=#;j_C-pP#?{(bY>$v}+e&9p>z=ufY-tt2%@XKKQ zz=!&Q5A_2d>IXj54}54p{Sb*gNuBtC56k$059y~{z<7fX^#&i>LqF6Te5g105a}@k z!0LLyso*|m9s691+vixY&sDg6`qF*)(mCZm^wkW;Gw;Kr&INZ`vPU}l+J|3Fd1lx9 z)Y?9@maF2i_n|vzWHP7xNRRyy{3k&tFWg7)JO|7y_apcOGn#ya?>z-<5T_QWREk^+ zvL^z<0fa-P2nP@jARNFC4{QP9Qz^m+gbx@#C9=I9WS$Q)&j)Ea$UGlpo)0q92AStq zN~A|g<~bnq{K^P9jF7_!IgF6Q2sw<9!w5Nyki!T$jF7_!IgE_by&xcd7F( zb>5}UyVQA?I`2~FUFy6`op-78E_L3e&bu6*F}-pGb`?DGzyOGs2JzCBQP6LLsWXa_ zw=1J*)sx^+2Ob3<4q};L?hNcJ9(RXdQiXz<}6HZutvd*DUz$l}Xj zgXPCsGG3f0=DCif4XHUpub(Hry%6lE0`+%PCaBp7Xf|{-JAtPQPCx<^D#!CI6V&en^*aF{yPJ~ecY^wzfY%B=otnod z!U5zI3HS$S_IU1i3s^nyBajn$;HF|6$kzrzqIN6C(~=%=EWPGG5K0?0DLc zUt?p(bNA4bMSNyuqEeculqM=|zMq1G`F;x0=KCq3mC{6|G*Kx{R7w+-(nO`ysNNfC z$=j7iHQq=|LXQ_Gim~BF+K}?eVl>{QZJ#Kf1c(1pIf-k7siI5f+lSq{x|Xr?{?h4OG{X2kESoUBav@*?WMLws<=M?#zBA-*_bBcUU zkzpSvoj%ky-3o-WVR<$1b1PnYNE@O-;+I(&A6jne7Yr^9V` zWs>$hNqe58Jx`+kla)!dp%09|nxwy?FG|O%v1K$hNqe58Eltv%Cuz@}lpbo%mir*d}Yq9F5p@E?k);D9u%4bZGM zfUGuvtjB_^$AYXjfUGuv%uYd88$f3Mm9sNb1zC>;S&s!-j|Ewe1zBwXS&s!-j|Ew6 z09kDSS#1DWZ2(zq09kDSS#1DWZ2(!11zBwXS#1DWZ2(!11zC>;S#1DWZ2(zq09kDS zS#1DWZ2(!11zC>;S&s!-Z2(zq09kDSndgJd^FdY{K<4%!s|}SI_KO+ziy8Kd8TN}A z_KO)jd?<9=N}+BOeA%b2wD4{FvK`-$>#q5oj7<@M0x>JO7X8oHtW80lj^ zQU6%z`ubBX|I{bSCqR#@|3k|sTIXEprcc!Q^e5<(t$(R?rb^EZeZ(i)e8eaCkNrgX z*n{oAs90RI71tD36$_!}a?0??VnOlEVo~u6{yX&BCB?PWSyapi$@nzl?h$`I;{O@3 ziT^f?*f`>0_VoEOP;q84z4$|@S;aRv*G4v|f_y^g^IFROSZ+(it0?&f)S_Y(K#}$p0t`t4uCG4&7remQ@U ziR$A!pIH1Oc>W{)f9SgKJoFde4YDOyakp!^@+w-fKv}gF-=Zu}mS0*a{r%5OPDW~7 zS1kE;?Rort4Sz?L-{87-+K?x{ma;DtXYl`J{(l;^ep`mqkZGg)J7ws1ZFUI(8%SDtTJ4hL(eY%#w? z!waZ=EjWe0=UXrQhdB(}3*S_t-ZyMnt{HCQf{*{cN(nE4L#*%{@CvuI4O{&9?rBBZ zJda-%{km1dSG0TQ*lAjIul?mvc;qg>{RDZk zd=n~Cng{-Vi7i7WvFg+&doOp1Ee%`sZ%aNBTIkcCPW?$-6|0+T{ol`hxDCJEvj0)p z9^xJiF2bt#_7!()M-I_kpbg|nhMy%`N)L!M(`&!+@w3jS zWSLLCnDSV_f8FxZBM(_sv~*BAi@oY#$#wj-1X;)bMBayVIc&k{xeKZBNp8Qb;b9N8 zNPT>g`@#M(+&6};CpIvb|AuXNTEW-9{qIujB37Ip6knGoJt*nlwCvdGTy15z7sM8Z zB{A${{-n5+zkl}cSW;TQ5LDU=w-fv5Br9mB0T@RxRAdN z^{`3yfcTb!{vx^`mfAs&H(Sn&xH{e_?YoeBT+cm*C7$POk?Zi2M@#>Vzvq73{){<% z6OJqA(yHWUKJmoH-{NuMK^`YIQFqv)ze!o7cP-b)M+|E=np|u<4tb9`ToL`ISAGdP zeQz=U#d{yL%r8^Ys+7NEugr)wJT4v7-o>(Y{g78>3Bu9u5ma*u<4`k?H8`|9+<;W6uz&wa3W z#Iqfm%?v-oq4DUT4s)+-XixelIjpsbNb`_|#D5L$kN!tn*k#EIqc6HVyZr;ZgX|Gybnz!6(PMFOgd%y?J(V9%I9wGQXc=N#@pk@sq!1 z^9J@O#krK8OUY@}$S?W*G&T08(3j$|XEV#scsI;r4)reL@2^r4-g$Gl$iFV2{zdSL zwr3W9<~?S@EnH`Fzwn+#>4p58d!}Bl_+v^gGiTu+3-2XiJUgTA|?!1p%`bFrAxoQsg z`4c!?##Q+%rI+#V#nijR`{(H+zqIxu>RtqoIsSV-zo!L}R^~7HZMa_KbNR==L`P}g zh5Y}}Q+-hxMD}w&A-_N7?~7@9_@B>JkxuGdNDK0$d4hiiH7v6{?S=kz=&6P^6^VZl z9ktd9tKJtQ*=Z`!G{QR$f4W~t1e-U@+;J^8Lz%Rm~jgcvS=PFl)fTB2X5u@?% z`(Mc##u3b$k1h^BaDbK6l1i*5mA@+Yv&Qk2qNx0FQC7~au!d9l(~(!P)-!kHW5tM( zYwGqDW!*=IRf-XZjW}#UQ66^nVQtXuhusbRFAn<`(EswVN1z`)?B$|z*ei#o(Z@o6YV@a}PaJ(B^hu+ep-&$DW#|h=UjlvU=qsSF9Q`%u zKOa38dfw>yMP>AY(chrto1?!)$->b~q1#5k0=;AOPUttr%qhw-myF?w#(aIu*P*W( za~1U5F>n|&Z_Iq?1!Iuan5)OMK(~%r54~Z`2I!4r`k^E9X_tFDhuf9lUPjw~LV@uOE3m^o=8Lfxd0z_rMh+d%*v5%Sg( zFZgdp{u@f}8+jk}4@Umq&_5jcAoN2cA1+2>IowT~sT}?V?cuV+{}kK!v%{|_Mjn3U z;a5Vxb@Q!STvUuaVm7u>88vOxH1s=t)bx)vUXHp2U6-SeAALM{ z(&&@GW;9!lzIgP-;NsDX!5yRj0X+_k9wS7c=pl%2>jg9p9BB#(f=6yCrAHNWEE+RF5ezGr#SYiwyWkAx6WPEa#m5BcYWK! z;=jya&~a9IM9VkZ&MK=dZ416tHndy^J*9QQ+_v%$ztwsT8P318X#QE{xeKpad}8@$ z3$MC%Q91XTh1Z-_-g(X9MJ?t3an1GA`B#hEu0N~%(Y04CysrG=wF?%WRsQ7K)~miz zZoT#!bFVF5x%L`Le$0qd_r*D1Jh7{axThC=Ui}NalHKNSZl7Z&vSgy?B64c!+E-iWdHha z-RIC9|5vC}=3Ujkp!f&zKZ%3lyYrT`FDX6`dJ$G{P8Ri>P={sk*ihfpcb}@ss=|3bh$LHWM z3JV*7Jsr;2I12k4OIr%)-!6^EJPzyspZWJlc2;78`S;+pp)W4(Eq?s}vG*?URb2JH z_{{7__UxVR4JoFSrYVh)ric`ggK3(^l)~P#XJ)^jc~PVh5hdupeZ5; z5h-#Jk+}1q zHEXR|kKbdh->g})wr~XJ^Is9|Vxc%joGg09q{ydSi>vT$I(_YRL_8y2k?hh~sX|hv zT4|2dA}y8HNPW_Pblq~vrrYXmb8YABZhN~uBU|MWaw%rcsd8Lyl$+$$@@Dyf)9tKu z>X_Y@I@dV2ID4J@oyVN#oY!1V*C^LmSA|P;)w<@mT3kzAYg}6}GwpXBbDeWt10{$q zPDqLfUvNz~{0F8Yo@g_e^3XaX<)PC^Auc-r(9Wicq1PQdhF*W+D3@g9M-3Aiho*nA z__piIL$Ckl($MQQhlXB%b=%PEZxjl$C8vGgSS`q?)~Fv7)I~**(d@zNOKWrP#|-e; z#i7@aZ@=w&*KOBFa;{PEWjC&AE-~qIxs4*bSvi0mA74=%eh9qN}8{Sv`K-DM{Q9ynSOW9Jt#BZ zxVA#73!#H!%v`5TAGRLfebw;&cD{Qgw66-!R6#s3O~>lYJXp1@!V+Pbuu51bY{Hw# z?RX=(M;L&PoPd^GFz+_$8~<LWoyJ1}G!%V-_^eaps_BqwB*PA|`0rGv{$(4lBhxH3|O^G8Ipsah#Cbh^IcIJhPsVSx?BUCsbmjhsK+JrRnRYpEmtj zrf+gBWQ+^9>1@dCRp`2rJDhL&G!lzAS#^=HSm+d13TuUp*lE*)8LS_B1r7_x@ozKd zh0DTq(JJPPBg7)HRK$O8i;!q(|I|Z>taB z3)18G-s`-089Q^WQob|-JIqS4|7em_iRTluC*hH1TgI6FWYhPWzA2w!Q$E8jX1q!5 z@OtyQ+w}LC{xQ?PX!v*tW{O8l3P()2jF|OBOu39qH}f@_euwF=HGQ+5$X@f>l$?lJ zPt>d@YSt4q>xr86L>1${Xuav1@*iDdUavO&EvDaR`iD&atm&J)j14ocV`e=uQ_o^1 zePc7sbhAIPrRMc|)8A(LW<9Y1^ZJD8oBfJQ#&x{V^vg`&tS=rkuV=DM5v|Eu5c5~$ zTtkBrwYOc*z3qAlt_>QBct#N2lXBAOI(O#7wWpcWhiGDAuF;mnLepP7w2WcSx46fg z*Af@Zd#-aHJM1Lv_k^uE5qk|-f|83&zr*xbn!ZWVV>>{GUkohxZ@+(zj_nVdJC?`ytC! zp>{(~c}TBo8G2o>54~4XQ`lG{cyUvv&v}b0;(DWyB z?JJ}|nQI^6x^Z_-e%Op3J3I7xR&M=BpS3b49rw?=t-RTj1o0k)pNqn<0Jh{f*aMF9 zcNPiVo?S>8;_?m}?#?1g7rMzGF_AFEXZ>tAo69J}NFOXOr^al4qiiD|l}Pt<8KUgK z6G{?Rqyr~LeOnywIB+v@GvW9VN5Uo$?%_;to-8UL2??-*ZT{Ev(;GX5vV zm#GHFA2@uC@lC?A$k@&}kFkTX%-G2|pYa`x-HbhqhcO<`xPZ!+?_@lJ@q0MFknvrN zM>4*f@hHakFfL+zFXLjy_i+iM8JBQODdRDW%NRe%cr4@hGoHk_l5rK|YQ~RoIa3%< z;}|bvA7h2FpRvkV=bS+f*D29g(kb_y(u4rZ@!(J6T_x5{E5}t&DAqS%aKT4!an$);L*uo$uoqmSN`u z94@0;oMSm$#W=}0&A65^%b0Tkho9yAO&o4!O#goMZRbJ`KgZz~4nNP~MI3&C!>t_t z3}gClqi;Ju%XkULe4a5&rjsSpxs+qR$az>Yoh*~i7dieVj%PV^evM<+F<#I3WyarN zyovEQ8EuJz-9Oa5--f_7pN6 z#kiRAc(|RO5)PMgd>MzC*Pd}49?$U;I6RTVJc4;9bGV%2xu>2=4zq-KsyTHk$9Nel zj8(=uV;;Lab2&VZ@qETCMIM$P5BJf-lH*~S@vyXbSWY}`oWGs%V#X{d9+nUf%Z8_u zD>;g#INRUF<$c-RfX!v)5yJHuIPhTA#D!Pv<-pD}CAa1Vurha5b2$(&1e zQ=I(f*(P_!$Q|#EvD_F<-~LExj9$igz$1av&{RYJ44pHy&CoML!*aFii$nucV+>uv zHRREdN<$tEN&HiCWJrx6BZhPsa$)eFX)M0iahT}g_$lKfjCnM4oZ>K#fR3{q{w?F* zF}}d~9~tx5=lCZMGo}AxCCJl=8Zv8_%%h2{aEzZZYnuFKE1`i?r!$_xn8$9pk;ANw z@>3k;OA9nLdm zjgVOvOgrE&768kk(-_HE4*y~Sxc~F#{{PqJ`{j@=dm6e_Q5a?4`=*l zTj4z%U�##zlOIIYV;R4n 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 S>JEv${JieUjE~~L4gvs`F@|#h diff --git a/Framework/res/xml/path.xml b/Framework/res/xml/path.xml deleted file mode 100644 index e604ddf..0000000 --- a/Framework/res/xml/path.xml +++ /dev/null @@ -1,611 +0,0 @@ - - 0 - ok - 1 - - - @2017 Baidu - Data - http://api.map.baidu.com/images/copyright_logo.png - - - - - 汕头市 - 0 - - 汕头大学 -

- 581a01ab9390d2dc2e473314 - - - 116.6420430372 - 23.415984040228 - - - - 汕头大学 -
- a6a100f2b37797832902e14c - - - 116.64504903693 - 23.414400038371 - -
- - 汕头大学-医学院 -
- 9a86622f9c41ebcd5fd4fe52 - (0754)88900396 - - 116.7029220999 - 23.361780322009 - -
- - 汕头大学 -
- 0a0f7ca5355cc7df35b06cdf - - - 116.64382464652 - 23.414570742728 - -
- - 汕头大学正门 -
- a080bc4037994210f11937ad - - - 116.64425861791 - 23.414779252119 - -
- - 汕头大学继续教育学院 -
- d1469ee7beb65d62843304d6 - - - 116.65942776407 - 23.41162736716 - -
- - 汕头大学市区分教处 -
- ed9f47a535484a25abf0cd16 - - - 116.70828237871 - 23.373024486922 - -
- - 汕头大学出版社 -
- cd51be873e67d86be812e4ee - - - 116.63631777687 - 23.420622437167 - -
- - 汕头大学-东门 -
- 728871461b73acd2bfa82211 - - - 116.64429095691 - 23.417361010241 - -
- - 汕头大学-东南门 -
- 4e614e4f8c0710683617dcb3 - - - 116.64076420948 - 23.415882480965 - -
- - 汕头大学-西南门 -
- ffb68366e18c3c2aacee7a20 - - - 116.63430251829 - 23.416490425972 - -
- - 汕头大学-附属中学 -
- 50f7d146ed341ec472210bcd - - - 116.6382958456 - 23.416290458555 - -
- - 汕头大学医学院-东门 -
- 9924ada1d3ccf0a22efaa7a8 - - - 116.70298803552 - 23.362000029369 - -
- - 汕头大学-校医院 -
- 7524cb4fd2ac954a04026ff1 - - - 116.63639278538 - 23.420815185451 - -
- - 汕头大学-附属小学 -
- 606289fd1c70204da20464cd - - - 116.6382958456 - 23.416290458555 - -
- - 汕头大学精神卫生中心 -
- 0d06a00aa3dfdbb94f2fdf3a - - - 116.72404009463 - 23.433783963659 - -
- - 汕头大学-弘毅书院 -
- 2a44c06aa38254c1adb22aca - - - 116.63955248518 - 23.416742457439 - -
- - 汕头大学艺术设计学实习基地-西南门 -
- b8ef689821aad61f8f55ec07 - - - 116.72410198788 - 23.407206956255 - -
- - 汕头大学食堂 -
- 2493338d73acd1db774ff188 - - - 116.63969648355 - 23.422024145947 - -
- - 汕头大学-大门 -
- e49759ec936575aacafa5fe5 - - - 116.64430173658 - 23.414926410633 - -
- - 汕头大学-文科楼 -
- d7793da28ca714fb38e4a609 - - - 116.64063063145 - 23.419727335287 - -
- - 汕头大学科技楼 -
- d96a8f181233db49cb213d74 - - - 116.64044692797 - 23.421205572394 - -
- - 汕头大学-大礼堂 -
- 3e5b756963976155c356ac00 - - - 116.63996489724 - 23.419072399031 - -
- - 汕头大学-工科楼 -
- 0ac77f26c4230603fe0eb03e - - - 116.64234585599 - 23.41948641861 - -
- - 汕头大学-理学院 -
- f96aeea6a4ca69e3ce04efb1 - - - 116.64175324385 - 23.420631059032 - -
- - 汕头大学-图书馆 -
- 92b806d22913608079b55cec - (0754)82903247 - - 116.64197171175 - 23.416633437308 - -
- - 汕头大学-讲堂楼 -
- 0e6e6d060ceee905b23c81ce - - - 116.6412144402 - 23.420324485068 - -
- - 汕头大学科报厅 -
- b1f745b675163b3d354aaeb0 - - - 116.64041611609 - 23.421320391862 - -
- - 汕头大学-文学院 -
- 89bd929808432e6449fc8d65 - - - 116.64054879582 - 23.419548513144 - -
- - 汕头大学-幼儿园 -
- 08fc93df2f100a919b68b4d2 - - - 116.63764852665 - 23.419493879904 - -
- - 汕头大学体育园 -
- f1612720489c66f0bd484204 - - - 116.64555801683 - 23.415090979255 - -
- - 汕头大学-789楼 -
- f78f5b79cd392982c6effb9d - - - 116.63683753644 - 23.420217125979 - -
- - 汕大花园 -
- 1bf85b255688dba4a1a934d6 - - - 116.66895977366 - 23.391749268077 - -
- - 汕头大学-志城书院 -
- 68298c56967147c68bfc06d5 - - - 116.64478026392 - 23.417986855689 - -
- - 汕头大学-行政中心 -
- 9881e609bb65844e29fc486a - - - 116.64009083967 - 23.420506373548 - -
- - 汕头大学-网络中心 -
- 3d38c144c103d43ab020a88e - - - 116.63961437843 - 23.416709792862 - -
- - 汕头大学-科技中心 -
- b6ac073003db2a36ca09f0e9 - - - 116.64031613469 - 23.421211790057 - -
- - 汕头大学-鸿泰餐厅 -
- 4a7561eddf9b3c13a4c756b6 - - - 116.64425062299 - 23.418185908568 - -
- - 汕头大学-第2食堂 -
- a8b92ea1d8206591f21937a2 - - - 116.63915875787 - 23.421407439044 - -
- - 汕头大学新行政楼 -
- 4dd34ef17fb17d5a80288a62 - - - 116.6399368701 - 23.420312381268 - -
- - 汕头大学市区办事处 -
- 04e969caaec380f4a8059d39 - - - 116.70291087108 - 23.362175280767 - -
- - 汕头大学-E座教学楼 -
- 0aed19acf00b3e5543e192a4 - - - 116.64265361546 - 23.418300316166 - -
- - 汕头大学学生宿舍区 -
- de684c2c7be7366fb34c493e - - - 116.63861034236 - 23.422654777354 - -
- - 汕头大学西 -
- e369a8a8e4a9ed44e3110381 - - - 116.64007520915 - 23.41504828263 - -
- - 汕头大学二饭楼下小卖部 -
- 68900b28dc5571559de321fb - - - 116.63633223959 - 23.41993451001 - -
- - 汕头大学(新医学院)-大楼 -
- cdfea806eab99054b04c4956 - - - 116.64078001966 - 23.416055007307 - -
- - 汕头大学广东蓝凌基地 -
- 96cafae65e70889576e5b65c - - - 116.73499762524 - 23.36785004824 - -
- - 汕头大学金湖苑教工宿舍 -
- 556e11bfe76ee71ecc06a4de - - - 116.6938961058 - 23.379399948467 - -
- - 汕头大学艺术教育中心 -
- e6afcfa139d4db71d4851f87 - - - 116.63621051919 - 23.420001412701 - -
- - 汕头大学龙泉园宿舍区 -
- 0834bce4b4a5593081288a80 - - - 116.65627803546 - 23.413848045779 - -
- - - 汕头市 - 0 - - 金山中学 -
- e96b4420828aa05982288ad4 - - - 116.68776553002 - 23.339123357931 - -
- - 金山中学南区学校 -
- 2e7756e7a6c6617b16c8f652 - - - 116.70834804484 - 23.294193112909 - -
- - 金山中学农场 -
- 3f9337d6e3bfbbb0f72310e4 - - - 116.67185968351 - 23.326997393287 - -
- - 金山中学-行政楼 -
- 4b18382bd631f2d5a21de953 - - - 116.68888418987 - 23.339772555327 - -
- - 金山中学-运动场 -
- 1cca75253cb51c16e8e5825a - - - 116.68772690288 - 23.337499271982 - -
- - 金山中学-大礼堂 -
- 3ac7e4d0f89129ba4d2fdff3 - - - 116.68822707939 - 23.338911409965 - -
- - 汕头金山中学南区学校-北门 -
- 038423bfb7a2129ac26c14d9 - - - 116.70645001513 - 23.29495671557 - -
- - 汕头金山中学南区学校-东南门 -
- 49bfb1a9fc5313abad080f94 - - - 116.70850695508 - 23.29412639497 - -
-
- - 303 - 汕头大学 - - - - 303 - 汕头市金山中学 - - - - diff --git a/Framework/run.sh b/Framework/run.sh deleted file mode 100755 index 5e278d7..0000000 --- a/Framework/run.sh +++ /dev/null @@ -1 +0,0 @@ -./bin/Nef \ No newline at end of file diff --git a/Framework/src/datastructs.cpp b/Framework/src/datastructs.cpp deleted file mode 100644 index 51da7d9..0000000 --- a/Framework/src/datastructs.cpp +++ /dev/null @@ -1,409 +0,0 @@ -//datastructs.cpp -#include "../include/headers.h" -#include "../include/datastructs.h" - -namespace nef { - //class Font - Font::Font(const char *file, int size) - { - this->Open(file, size); - } - Font::~Font() - { - this->Free(); - } - void Font::Open(const char *file, int size) - { - font = TTF_OpenFont(file, size); - if (font == NULL) - { - fprintf(stderr, "font open failure %s\n", SDL_GetError()); - clean_up(); - exit(-1); - } - } - void Font::Set(int style) - { - TTF_SetFontStyle(font, style); - } - void Font::Free() { - TTF_CloseFont(font); - } - - //class Texture - Texture::Texture() - { - light_mat_ambient = new GLfloat[4]; - light_mat_diffuse = new GLfloat[4]; - light_mat_specular = new GLfloat[4]; - light_mat_emission = new GLfloat[4]; - light_mat_ambient_default = new GLfloat[4]; - light_mat_diffuse_default = new GLfloat[4]; - light_mat_specular_default = new GLfloat[4]; - light_mat_emission_default = new GLfloat[4]; - light_mat_shininess = 0; - light_mat_shininess_default = 50; - memset(light_mat_ambient, 0, 4); - memset(light_mat_diffuse, 0, 4); - memset(light_mat_specular, 0, 4); - memset(light_mat_emission, 0, 4); - memset(light_mat_ambient_default, 0, 4); - memset(light_mat_diffuse_default, 1, 4); - memset(light_mat_specular_default, 1, 4); - memset(light_mat_emission_default, 1, 4); - light_mat_ambient_default[3] = 1; - } - Texture::~Texture() - { - this->Free(); - } - void Texture::RenderText(TTF_Font *font, const char *text, SDL_Color color) - { - color.r *= 255; - color.g *= 255; - color.b *= 255; - SDL_Surface *textSurface = TTF_RenderText_Solid(font, text, color); - texture = SDL_GL_LoadTexture(textSurface, texcoord); - texMinX = texcoord[0]; - texMinY = texcoord[1]; - texMaxX = texcoord[2]; - texMaxY = texcoord[3]; - width = textSurface->w; - height = textSurface->h; - } - int Texture::LoadImage(const char *file) - { - char *filename = new char[50]; - strcpy(filename, file); - SDL_Surface *imageSurface = load_image(filename); - texMinX = 0; - texMinY = 0; - texMaxX = 1; - texMaxY = 1; - width = imageSurface->w; - height = imageSurface->h; - texture = SOIL_load_OGL_texture( - file, - SOIL_LOAD_AUTO, - SOIL_CREATE_NEW_ID, - SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | SOIL_FLAG_COMPRESS_TO_DXT); - if (0 == texture) - { - printf("SOIL loading error: '%s'\n", SOIL_last_result()); - return -1; - } - delete filename; - SDL_FreeSurface(imageSurface); - - texture_default = SOIL_load_OGL_texture( - "./res/pic/default.png", - SOIL_LOAD_AUTO, - SOIL_CREATE_NEW_ID, - SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | SOIL_FLAG_COMPRESS_TO_DXT); - if (0 == texture_default) - { - printf("SOIL loading error(default): '%s'\n", SOIL_last_result()); - return -1; - } - - return 0; - } - void Texture::setAmbient(GLfloat r, GLfloat g, GLfloat b, GLfloat a) - { - light_mat_ambient[0] = r; - light_mat_ambient[1] = g; - light_mat_ambient[2] = b; - light_mat_ambient[3] = a; - } - void Texture::setDiffuse(GLfloat r, GLfloat g, GLfloat b, GLfloat a) { - light_mat_diffuse[0] = r; - light_mat_diffuse[1] = g; - light_mat_diffuse[2] = b; - light_mat_diffuse[3] = a; - } - void Texture::setSpecular(GLfloat r, GLfloat g, GLfloat b, GLfloat a) - { - light_mat_specular[0] = r; - light_mat_specular[1] = g; - light_mat_specular[2] = b; - light_mat_specular[3] = a; - } - void Texture::setEmission(GLfloat r, GLfloat g, GLfloat b, GLfloat a) - { - light_mat_emission[0] = r; - light_mat_emission[1] = g; - light_mat_emission[2] = b; - light_mat_emission[3] = a; - } - void Texture::setShininess(GLfloat shininess) - { - light_mat_shininess = shininess; - } - void Texture::Blind() - { - glMaterialfv(GL_FRONT, GL_AMBIENT, light_mat_ambient); - glMaterialfv(GL_FRONT, GL_DIFFUSE, light_mat_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, light_mat_specular); - glMaterialfv(GL_FRONT, GL_EMISSION, light_mat_emission); - glMaterialf(GL_FRONT, GL_SHININESS, light_mat_shininess); - glBindTexture(GL_TEXTURE_2D, texture); - } - void Texture::unBlind() - { - glMaterialfv(GL_FRONT, GL_AMBIENT, light_mat_ambient_default); - glMaterialfv(GL_FRONT, GL_DIFFUSE, light_mat_diffuse_default); - glMaterialfv(GL_FRONT, GL_SPECULAR, light_mat_specular_default); - glMaterialfv(GL_FRONT, GL_EMISSION, light_mat_emission_default); - glMaterialf(GL_FRONT, GL_SHININESS, light_mat_shininess_default); - glBindTexture(GL_TEXTURE_2D, texture_default); - } - void Texture::Free() { - glDeleteTextures(1, &texture_default); - glDeleteTextures(1, &texture); - delete[] light_mat_ambient; - delete[] light_mat_diffuse; - delete[] light_mat_specular; - delete[] light_mat_emission; - } - - //class Light - Light::Light() - { - light_position = new GLfloat[4]; - light_ambient = new GLfloat[4]; - light_diffuse = new GLfloat[4]; - light_specular = new GLfloat[4]; - light_position_off = new GLfloat[4]; - light_ambient_off = new GLfloat[4]; - light_diffuse_off = new GLfloat[4]; - light_specular_off = new GLfloat[4]; - memset(light_position, 0, 4); - memset(light_ambient, 0, 4); - memset(light_diffuse, 0, 4); - memset(light_specular, 0, 4); - memset(light_position_off, 0, 4); - memset(light_ambient_off, 0, 4); - memset(light_diffuse_off, 0, 4); - memset(light_specular_off, 0, 4); - } - Light::~Light() - { - this->Free(); - } - void Light::setID(GLenum LID) - { - ID = LID; - glEnable(ID); - } - void Light::setPosition(GLfloat x, GLfloat y, GLfloat z, GLfloat w) - { - light_position[0] = x; - light_position[1] = y; - light_position[2] = z; - light_position[3] = w; - } - void Light::setAmbient(GLfloat r, GLfloat g, GLfloat b, GLfloat a) - { - light_ambient[0] = r; - light_ambient[1] = g; - light_ambient[2] = b; - light_ambient[3] = a; - } - void Light::setDiffuse(GLfloat r, GLfloat g, GLfloat b, GLfloat a) - { - light_diffuse[0] = r; - light_diffuse[1] = g; - light_diffuse[2] = b; - light_diffuse[3] = a; - } - void Light::setSpecular(GLfloat r, GLfloat g, GLfloat b, GLfloat a) - { - light_specular[0] = r; - light_specular[1] = g; - light_specular[2] = b; - light_specular[3] = a; - } - void Light::turnOn() - { - glLightfv(ID, GL_POSITION, light_position); - glLightfv(ID, GL_AMBIENT, light_ambient); - glLightfv(ID, GL_DIFFUSE, light_diffuse); - glLightfv(ID, GL_SPECULAR, light_specular); - } - void Light::turnOff() - { - glLightfv(ID, GL_POSITION, light_position_off); - glLightfv(ID, GL_AMBIENT, light_ambient_off); - glLightfv(ID, GL_DIFFUSE, light_diffuse_off); - glLightfv(ID, GL_SPECULAR, light_specular_off); - } - void Light::Free() - { - delete[] light_position; - delete[] light_ambient; - delete[] light_diffuse; - delete[] light_specular; - delete[] light_position_off; - delete[] light_ambient_off; - delete[] light_diffuse_off; - delete[] light_specular_off; - } - - //class Brush - Brush::Brush() {}//Do nothing - Brush::~Brush() {}//Do nothing - void Brush::setColor(GLfloat r, GLfloat g, GLfloat b) - { - glColor3f(r, g, b); - } - void Brush::beginPoints() - { - glBegin(GL_POINT); - } - void Brush::beginLines() - { - glBegin(GL_LINE); - } - void Brush::beginPolygon() - { - glBegin(GL_POLYGON); - } - void Brush::addNormal(GLfloat nor_x, GLfloat nor_y, GLfloat nor_z) - { - glNormal3f(nor_x, nor_y, nor_z); - } - void Brush::addPoint(GLfloat pos_x, GLfloat pos_y, GLfloat pos_z, GLfloat u, GLfloat v) - { - glTexCoord2f(u, v); - glVertex3f(pos_x, pos_y, pos_z); - } - void Brush::end() - { - glEnd(); - } - void Brush::HUD_drawText(Texture texture, int x, int y) - { - glColor3f(1.0, 1.0, 1.0); - glBindTexture(GL_TEXTURE_2D, texture.texture); - if (!DOUBLE_EYES) - { - glBegin(GL_TRIANGLE_STRIP); - glTexCoord2f(texture.texMinX, texture.texMinY); - glVertex2i(x, y); - glTexCoord2f(texture.texMaxX, texture.texMinY); - glVertex2i(x + texture.width, y); - glTexCoord2f(texture.texMinX, texture.texMaxY); - glVertex2i(x, y + texture.height); - glTexCoord2f(texture.texMaxX, texture.texMaxY); - glVertex2i(x + texture.width, y + texture.height); - glEnd(); - } - else - { - glViewport(0, 0, screen->w / 2, screen->h); - glBegin(GL_TRIANGLE_STRIP); - glTexCoord2f(texture.texMinX, texture.texMinY); - glVertex2i(x, y); - glTexCoord2f(texture.texMaxX, texture.texMinY); - glVertex2i(x + texture.width, y); - glTexCoord2f(texture.texMinX, texture.texMaxY); - glVertex2i(x, y + texture.height); - glTexCoord2f(texture.texMaxX, texture.texMaxY); - glVertex2i(x + texture.width, y + texture.height); - glEnd(); - - glViewport(screen->w / 2, 0, screen->w / 2, screen->h); - glBegin(GL_TRIANGLE_STRIP); - glTexCoord2f(texture.texMinX, texture.texMinY); - glVertex2i(x, y); - glTexCoord2f(texture.texMaxX, texture.texMinY); - glVertex2i(x + texture.width, y); - glTexCoord2f(texture.texMinX, texture.texMaxY); - glVertex2i(x, y + texture.height); - glTexCoord2f(texture.texMaxX, texture.texMaxY); - glVertex2i(x + texture.width, y + texture.height); - glEnd(); - } - } - void Brush::HUD_drawImage(Texture texture, int x, int y, int width, int height) - { - glColor3f(1.0, 1.0, 1.0); - glBindTexture(GL_TEXTURE_2D, texture.texture); - if (!DOUBLE_EYES) - { - glBegin(GL_TRIANGLE_STRIP); - glTexCoord2f(texture.texMinX, texture.texMaxY); - glVertex2i(x, y); - glTexCoord2f(texture.texMaxX, texture.texMaxY); - glVertex2i(x + width, y); - glTexCoord2f(texture.texMinX, texture.texMinY); - glVertex2i(x, y + height); - glTexCoord2f(texture.texMaxX, texture.texMinY); - glVertex2i(x + width, y + height); - glEnd(); - } - else - { - glViewport(0, 0, screen->w / 2, screen->h); - glBegin(GL_TRIANGLE_STRIP); - glTexCoord2f(texture.texMinX, texture.texMaxY); - glVertex2i(x, y); - glTexCoord2f(texture.texMaxX, texture.texMaxY); - glVertex2i(x + width, y); - glTexCoord2f(texture.texMinX, texture.texMinY); - glVertex2i(x, y + height); - glTexCoord2f(texture.texMaxX, texture.texMinY); - glVertex2i(x + width, y + height); - glEnd(); - - glViewport(screen->w / 2, 0, screen->w / 2, screen->h); - glBegin(GL_TRIANGLE_STRIP); - glTexCoord2f(texture.texMinX, texture.texMaxY); - glVertex2i(x, y); - glTexCoord2f(texture.texMaxX, texture.texMaxY); - glVertex2i(x + width, y); - glTexCoord2f(texture.texMinX, texture.texMinY); - glVertex2i(x, y + height); - glTexCoord2f(texture.texMaxX, texture.texMinY); - glVertex2i(x + width, y + height); - glEnd(); - } - } - - //class Audio - Audio::Audio() - { - Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 2048); - } - Audio::~Audio() { - this->Free(); - } - void Audio::Open(const char *file) - { - audio = Mix_LoadMUS(file); - } - void Audio::setVolume(int Vol) - { - Mix_VolumeMusic(Vol); - } - void Audio::Play() - { - Mix_PlayMusic(audio, 1); - } - void Audio::Pause() - { - Mix_PauseMusic(); - } - void Audio::Resume() - { - Mix_ResumeMusic(); - } - void Audio::Rewind() - { - Mix_RewindMusic(); - } - void Audio::Free() - { - Mix_FreeMusic(audio); - } -} \ No newline at end of file diff --git a/Framework/src/glsdlfuncs.cpp b/Framework/src/glsdlfuncs.cpp deleted file mode 100644 index bacaf94..0000000 --- a/Framework/src/glsdlfuncs.cpp +++ /dev/null @@ -1,153 +0,0 @@ -#include "../include/headers.h" -#include "../include/glsdlfuncs.h" - -namespace nef{ - BOOL nefInit() - { - getprocessinfo(); - if (SDL_Init(SDL_INIT_EVERYTHING) == -1) - { - return FALSE; - } - screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_OPENGL); - if (screen == NULL) - { - return FALSE; - } - if (TTF_Init() == -1) - return FALSE; - SDL_WM_SetCaption(TITLE, NULL); - return TRUE; - } - - void clean_up() - { - TTF_Quit(); - SDL_Quit(); - fflush(stdin); - fflush(stdout); - } - - SDL_Surface *load_image(char *filename) - { - SDL_Surface *loadedImage = NULL; - SDL_Surface *optimizedImage = NULL; - loadedImage = IMG_Load(filename); - if (loadedImage != NULL) - { - optimizedImage = SDL_DisplayFormat(loadedImage); - SDL_FreeSurface(loadedImage); - } - return optimizedImage; - } - - void SDL_GL_Enter2DMode() - { - SDL_Surface *screen = SDL_GetVideoSurface(); - glPushAttrib(GL_ENABLE_BIT); - glDisable(GL_DEPTH_TEST); - glDisable(GL_CULL_FACE); - glDisable(GL_LIGHTING); - glEnable(GL_TEXTURE_2D); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glViewport(0, 0, screen->w, screen->h); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - } - - void SDL_GL_Leave2DMode() - { - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glPopAttrib(); - } - - static int power_of_two(int input) - { - int value = 1; - while (value < input) - { - value <<= 1; - } - return value; - } - - GLuint SDL_GL_LoadTexture(SDL_Surface *surface, GLfloat *texcoord) - { - GLuint texture; - int w, h; - SDL_Surface *image; - SDL_Rect area; - Uint32 saved_flags; - Uint8 saved_alpha; - w = power_of_two(surface->w); - h = power_of_two(surface->h); - texcoord[0] = 0.0f; - texcoord[1] = 0.0f; - texcoord[2] = (GLfloat)surface->w / w; - texcoord[3] = (GLfloat)surface->h / h; - image = SDL_CreateRGBSurface( - SDL_SWSURFACE, - w, h, - 32, -#if SDL_BYTEORDER == SDL_LIL_ENDIAN - 0x000000FF, - 0x0000FF00, - 0x00FF0000, - 0xFF000000 -#else - 0xFF000000, - 0x00FF0000, - 0x0000FF00, - 0x000000FF -#endif - ); - if (image == NULL) - { - return 0; - } - saved_flags = surface->flags & (SDL_SRCALPHA | SDL_RLEACCELOK); -#if SDL_VERSION_ATLEAST(1, 3, 0) - SDL_GetSurfaceAlphaMod(surface, &saved_alpha); - SDL_SetSurfaceAlphaMod(surface, 0xFF); -#else - saved_alpha = surface->format->alpha; - if ((saved_flags & SDL_SRCALPHA) == SDL_SRCALPHA) - { - SDL_SetAlpha(surface, 0, 0); - } -#endif - area.x = 0; - area.y = 0; - area.w = surface->w; - area.h = surface->h; - SDL_BlitSurface(surface, &area, image, &area); -#if SDL_VERSION_ATLEAST(1, 3, 0) - SDL_SetSurfaceAlphaMod(surface, saved_alpha); -#else - if ((saved_flags & SDL_SRCALPHA) == SDL_SRCALPHA) - { - SDL_SetAlpha(surface, saved_flags, saved_alpha); - } -#endif - glGenTextures(1, &texture); - glBindTexture(GL_TEXTURE_2D, texture); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, - 0, - GL_RGBA, - w, h, - 0, - GL_RGBA, - GL_UNSIGNED_BYTE, - image->pixels); - SDL_FreeSurface(image); - return texture; - } -} \ No newline at end of file diff --git a/Framework/src/main.cpp b/Framework/src/main.cpp deleted file mode 100644 index b2c791b..0000000 --- a/Framework/src/main.cpp +++ /dev/null @@ -1,284 +0,0 @@ -//sudo apt-get install build-essential libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev libsdl1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsdl-gfx1.2-dev libsoil-dev -//在Framework目录下执行 ./build.sh -//wsad qe ikjl uo 控制摄像机 esc 退出 - -#include "../include/headers.h" -#include "../include/userfuncs.h" - -int done; -SDL_Event event; -int lockFrameAdjust = 0; - -static struct Posture state = { - {0, 0, 0}, - {0, 0, 0}, - 0}; -static struct Posture stateAcc = { - {0, 0, 0}, - {0, 0, 0}, - 0}; - -#define ang_t 0.01745329251994329576923690768489 - -int render() -{ - static clock_t begin = clock(); - if (RENDER_LOCK_FRAME > 0) - { - if ((clock() - begin) < (1000000 / RENDER_LOCK_FRAME)) - { - return 0; - } - else - { - Renderfps = getRenderFps(); - begin = clock(); - } - } - else - { - Renderfps = getRenderFps(); - } - - glClearColor(0.0, 0.0, 0.0, 1.0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - if (DOUBLE_EYES == 0) - { - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(FOV, (((float)(screen->w) / ((float)screen->h))), REN_NEAR, REN_FAR); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(0, 0, 0, 0, 0, -1, 0, 1, 0); - glRotatef(state.dir[0], 0, -1, 0); - glRotatef(state.dir[1], (-1) * cos(state.dir[0] * ang_t), 0, sin(state.dir[0] * ang_t)); - glRotatef(state.dir[2], cos((state.dir[0] + 90) * ang_t), tan(state.dir[1] * ang_t), (-1) * sin((state.dir[0] + 90) * ang_t)); - glTranslatef((-1) * (state.pos[0]), (-1) * (state.pos[1]), (-1) * (state.pos[2])); - glColor3f(1, 1, 1); - onRender(); - } - else - { - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(FOV, (((float)(screen->w / 2) / ((float)screen->h))), REN_NEAR, REN_FAR); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glViewport(0, 0, screen->w / 2, screen->h); - gluLookAt(-(DOUBLE_EYES / 2), 0, 0, 0, 0, -1, 0, 1, 0); - glRotatef(state.dir[0], 0, -1, 0); - glRotatef(state.dir[1], (-1) * cos(state.dir[0] * ang_t), 0, sin(state.dir[0] * ang_t)); - glRotatef(state.dir[2], cos((state.dir[0] + 90) * ang_t), tan(state.dir[1] * ang_t), (-1) * sin((state.dir[0] + 90) * ang_t)); - glTranslatef((-1) * (state.pos[0]), (-1) * (state.pos[1]), (-1) * (state.pos[2])); - glColor3f(1, 1, 1); - onRender(); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(FOV, (((float)(screen->w / 2) / ((float)screen->h))), REN_NEAR, REN_FAR); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glViewport(screen->w / 2, 0, screen->w / 2, screen->h); - gluLookAt((DOUBLE_EYES / 2), 0, 0, 0, 0, -1, 0, 1, 0); - glRotatef(state.dir[0], 0, -1, 0); - glRotatef(state.dir[1], (-1) * cos(state.dir[0] * ang_t), 0, sin(state.dir[0] * ang_t)); - glRotatef(state.dir[2], cos((state.dir[0] + 90) * ang_t), tan(state.dir[1] * ang_t), (-1) * sin((state.dir[0] + 90) * ang_t)); - glTranslatef((-1) * (state.pos[0]), (-1) * (state.pos[1]), (-1) * (state.pos[2])); - glColor3f(1, 1, 1); - onRender(); - } - SDL_GL_Enter2DMode(); - if (DOUBLE_EYES == 0) - { - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glOrtho(0.0, (GLdouble)screen->w, (GLdouble)screen->h, 0.0, 0.0, 1.0); - } - else - { - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glOrtho(0.0, (GLdouble)screen->w / 2, (GLdouble)screen->h, 0.0, 0.0, 1.0); - } - onHUD(); - SDL_GL_Leave2DMode(); - SDL_GL_SwapBuffers(); - if (SDL_Flip(screen) == -1) - return -1; - return 0; -} - -int mainLoop() -{ - onLoop(); - if (render() != 0) - return -1; - - if (DISPLAY_TO_TERMINAL) - printf("%d\n", getFps()); - return 0; -} - -int eventLoop() -{ - state.pos[0] += stateAcc.pos[0]; - state.pos[1] += stateAcc.pos[1]; - state.pos[2] += stateAcc.pos[2]; - state.dir[0] += stateAcc.dir[0]; - state.dir[1] += stateAcc.dir[1]; - state.dir[2] += stateAcc.dir[2]; - - if (KEYBOARD_CONTROL){ - switch (event.type) - { - case SDL_KEYDOWN: - switch (event.key.keysym.sym) - { - case SDLK_ESCAPE: - done = 1; - onExit(); - break; - case SDLK_w: - stateAcc.pos[2] = -0.1; - break; - case SDLK_s: - stateAcc.pos[2] = 0.1; - break; - case SDLK_a: - stateAcc.pos[0] = -0.1; - break; - case SDLK_d: - stateAcc.pos[0] = 0.1; - break; - case SDLK_q: - stateAcc.pos[1] = -0.1; - break; - case SDLK_e: - stateAcc.pos[1] = 0.1; - break; - case SDLK_i: - stateAcc.dir[1] = 1; - break; - case SDLK_k: - stateAcc.dir[1] = -1; - break; - case SDLK_j: - stateAcc.dir[0] = 1; - break; - case SDLK_l: - stateAcc.dir[0] = -1; - break; - case SDLK_u: - stateAcc.dir[2] = 1; - break; - case SDLK_o: - stateAcc.dir[2] = -1; - break; - default: - break; - } - break; - case SDL_KEYUP: - switch (event.key.keysym.sym) - { - case SDLK_ESCAPE: - done = 1; - onExit(); - break; - case SDLK_w: - stateAcc.pos[2] = 0; - break; - case SDLK_s: - stateAcc.pos[2] = 0; - break; - case SDLK_a: - stateAcc.pos[0] = 0; - break; - case SDLK_d: - stateAcc.pos[0] = 0; - break; - case SDLK_q: - stateAcc.pos[1] = 0; - break; - case SDLK_e: - stateAcc.pos[1] = 0; - break; - case SDLK_i: - stateAcc.dir[1] = 0; - break; - case SDLK_k: - stateAcc.dir[1] = 0; - break; - case SDLK_j: - stateAcc.dir[0] = 0; - break; - case SDLK_l: - stateAcc.dir[0] = 0; - break; - case SDLK_u: - stateAcc.dir[2] = 0; - break; - case SDLK_o: - stateAcc.dir[2] = 0; - break; - default: - break; - } - break; - default: - break; - } - } - return 0; -} - -int main(int argc, char *argv[]) -{ - nefInit(); - glutInit(&argc, argv); - nefGLinit(); - onSetup(); - done = 0; - while (!done) - { - if (EVENT_LOCK_FRAME > 0) - { - Delay_ms(int(1000 / EVENT_LOCK_FRAME) + lockFrameAdjust); - Neffps = getFps(); - } - else - { - Neffps = getFps(); - } - if (Neffps > EVENT_LOCK_FRAME) - lockFrameAdjust++; - if (Neffps < EVENT_LOCK_FRAME) - lockFrameAdjust--; - - if (mainLoop() == -1) - return -1; - state.pos[0] += stateAcc.pos[0]; - state.pos[1] += stateAcc.pos[1]; - state.pos[2] += stateAcc.pos[2]; - state.dir[0] += stateAcc.dir[0]; - state.dir[1] += stateAcc.dir[1]; - state.dir[2] += stateAcc.dir[2]; - - while (SDL_PollEvent(&event)) - { - eventLoop(); - onEvent(event); - switch (event.type) - { - case SDL_QUIT: - onExit(); - done = 1; - break; - default: - break; - } - } - } - clean_up(); -} \ No newline at end of file diff --git a/Framework/src/neffuncs.cpp b/Framework/src/neffuncs.cpp deleted file mode 100644 index 9760ade..0000000 --- a/Framework/src/neffuncs.cpp +++ /dev/null @@ -1,56 +0,0 @@ -#include "../include/headers.h" -#include "../include/neffuncs.h" - -namespace nef { - -void nefGLinit() { - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LESS); - glShadeModel(GL_SMOOTH); - glEnable(GL_TEXTURE_2D); - glEnable(GL_LIGHTING); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); -} - -void Delay_ms(int time) { - clock_t now = clock(); - while (clock() - now < (time * 1000)) - ; -} - -int getFps() { - static clock_t now; - static bool first = true; - static int fps = 0; - int n; - clock_t newt = clock(); - if (first) { - now = clock() - 1; - first = false; - } - n = newt - now; - if (n == 0) n = 1; - fps = (int)(1000000 / n); - now = newt; - return fps; -} - -int getRenderFps() { - static clock_t now; - static bool first = true; - static int fps = 0; - int n; - clock_t newt = clock(); - if (first) { - now = clock() - 1; - first = false; - } - n = newt - now; - if (n == 0) n = 1; - fps = (int)(1000000 / n); - now = newt; - return fps; -} -void getprocessinfo(); -void getmem(); -} \ No newline at end of file diff --git a/Framework/src/nefsensor.cpp b/Framework/src/nefsensor.cpp deleted file mode 100644 index 932323d..0000000 --- a/Framework/src/nefsensor.cpp +++ /dev/null @@ -1,574 +0,0 @@ -#include "../include/headers.h" -#include "../include/nefsensor.h" -#include "../include/settings.h" - -namespace nef -{ -//I2C -I2C::I2c(uint8_t addr) -{ - devAddr = addr; -} - -I2C::I2C_set_dev_addr(uint8_t addr) -{ - devAddr = addr; -} - -/** Read a single bit from an 8-bit device register. - - * @param regAddr Register regAddr to read from - * @param bitNum Bit position to read (0-7) - * @param data Container for single bit value - * @param timeout Optional read timeout in milliseconds (0 to disable, leave off to use default class value in I2Cdev::readTimeout) - * @return Status of read operation (true = success) - */ -int8_t I2C::readBit(uint8_t regAddr, uint8_t bitNum, uint8_t *data) -{ - uint8_t b; - uint8_t count = this->readByte(devAddr, regAddr, &b); - *data = b & (1 << bitNum); - return count; -} - -/** Read a single bit from a 16-bit device register. - * @param regAddr Register regAddr to read from - * @param bitNum Bit position to read (0-15) - * @param data Container for single bit value - * @param timeout Optional read timeout in milliseconds (0 to disable, leave off to use default class value in I2Cdev::readTimeout) - * @return Status of read operation (true = success) - */ -int8_t I2C::readBitW(uint8_t regAddr, uint8_t bitNum, uint16_t *data) -{ - uint16_t b; - uint8_t count = this->readWord(devAddr, regAddr, &b); - *data = b & (1 << bitNum); - return count; -} - -/** Read multiple bits from an 8-bit device register. - * @param regAddr Register regAddr to read from - * @param bitStart First bit position to read (0-7) - * @param length Number of bits to read (not more than 8) - * @param data Container for right-aligned value (i.e. '101' read from any bitStart position will equal 0x05) - * @param timeout Optional read timeout in milliseconds (0 to disable, leave off to use default class value in I2Cdev::readTimeout) - * @return Status of read operation (true = success) - */ -int8_t I2C::readBits(uint8_t regAddr, uint8_t bitStart, uint8_t length, uint8_t *data) -{ - // 01101001 read byte - // 76543210 bit numbers - // xxx args: bitStart=4, length=3 - // 010 masked - // -> 010 shifted - uint8_t count, b; - if ((count = this->readByte(devAddr, regAddr, &b)) != 0) - { - uint8_t mask = ((1 << length) - 1) << (bitStart - length + 1); - b &= mask; - b >>= (bitStart - length + 1); - *data = b; - } - return count; -} - -/** Read multiple bits from a 16-bit device register. - * @param regAddr Register regAddr to read from - * @param bitStart First bit position to read (0-15) - * @param length Number of bits to read (not more than 16) - * @param data Container for right-aligned value (i.e. '101' read from any bitStart position will equal 0x05) - * @param timeout Optional read timeout in milliseconds (0 to disable, leave off to use default class value in I2Cdev::readTimeout) - * @return Status of read operation (1 = success, 0 = failure, -1 = timeout) - */ -int8_t I2C::readBitsW(uint8_t regAddr, uint8_t bitStart, uint8_t length, uint16_t *data) -{ - // 1101011001101001 read byte - // fedcba9876543210 bit numbers - // xxx args: bitStart=12, length=3 - // 010 masked - // -> 010 shifted - uint8_t count; - uint16_t w; - if ((count = this->readWord(devAddr, regAddr, &w)) != 0) - { - uint16_t mask = ((1 << length) - 1) << (bitStart - length + 1); - w &= mask; - w >>= (bitStart - length + 1); - *data = w; - } - return count; -} - -/** Read single byte from an 8-bit device register. - * @param regAddr Register regAddr to read from - * @param data Container for byte value read from device - * @param timeout Optional read timeout in milliseconds (0 to disable, leave off to use default class value in I2Cdev::readTimeout) - * @return Status of read operation (true = success) - */ -int8_t I2C::readByte(uint8_t regAddr, uint8_t *data) -{ - return this->readBytes(devAddr, regAddr, 1, data); -} - -/** Read single word from a 16-bit device register. - * @param regAddr Register regAddr to read from - * @param data Container for word value read from device - * @param timeout Optional read timeout in milliseconds (0 to disable, leave off to use default class value in I2Cdev::readTimeout) - * @return Status of read operation (true = success) - */ -int8_t I2C::readWord(uint8_t regAddr, uint16_t *data) -{ - return this->readWords(devAddr, regAddr, 1, data); -} - -/** Read multiple bytes from an 8-bit device register. - * @param regAddr First register regAddr to read from - * @param length Number of bytes to read - * @param data Buffer to store read data in - * @param timeout Optional read timeout in milliseconds (0 to disable, leave off to use default class value in I2Cdev::readTimeout) - * @return Number of bytes read (-1 indicates failure) - */ -int8_t I2C::readBytes(uint8_t regAddr, uint8_t length, uint8_t *data) -{ - int8_t count = 0; -#ifdef DEBUG - printf("read %#x %#x %u\n", devAddr, regAddr, length); -#endif - int fd = open("/dev/i2c-1", O_RDWR); - - if (fd < 0) - { - fprintf(stderr, "Failed to open device: %s\n", strerror(errno)); - return (-1); - } - if (ioctl(fd, I2C_SLAVE, devAddr) < 0) - { - fprintf(stderr, "Failed to select device: %s\n", strerror(errno)); - close(fd); - return (-1); - } - if (write(fd, ®Addr, 1) != 1) - { - fprintf(stderr, "Failed to write reg: %s\n", strerror(errno)); - close(fd); - return (-1); - } - count = read(fd, data, length); - if (count < 0) - { - fprintf(stderr, "Failed to read device(%d): %s\n", count, strerror(errno)); - close(fd); - return (-1); - } - else if (count != length) - { - fprintf(stderr, "Short read from device, expected %d, got %d\n", length, count); - close(fd); - return (-1); - } - close(fd); - - return count; -} - -/** Read multiple words from a 16-bit device register. - * @param regAddr First register regAddr to read from - * @param length Number of words to read - * @param data Buffer to store read data in - * @param timeout Optional read timeout in milliseconds (0 to disable, leave off to use default class value in I2Cdev::readTimeout) - * @return Number of words read (0 indicates failure) - */ -int8_t I2C::readWords(uint8_t regAddr, uint8_t length, uint16_t *data) -{ - int8_t count = 0; - - printf("ReadWords() not implemented\n"); - // Use readBytes() and potential byteswap - *data = 0; // keep the compiler quiet - //f-word - return count; -} - -/** write a single bit in an 8-bit device register. - * @param regAddr Register regAddr to write to - * @param bitNum Bit position to write (0-7) - * @param value New bit value to write - * @return Status of operation (true = success) - */ -int I2C::writeBit(uint8_t regAddr, uint8_t bitNum, uint8_t data) -{ - uint8_t b; - this->readByte(devAddr, regAddr, &b); - b = (data != 0) ? (b | (1 << bitNum)) : (b & ~(1 << bitNum)); - return this->writeByte(devAddr, regAddr, b); -} - -/** write a single bit in a 16-bit device register. -* @param regAddr Register regAddr to write to -* @param bitNum Bit position to write (0-15) -* @param value New bit value to write -* @return Status of operation (true = success) -*/ -int I2C::writeBitW(uint8_t regAddr, uint8_t bitNum, uint16_t data) -{ - uint16_t w; - this->readWord(devAddr, regAddr, &w); - w = (data != 0) ? (w | (1 << bitNum)) : (w & ~(1 << bitNum)); - return this->writeWord(devAddr, regAddr, w); -} - -/** Write multiple bits in an 8-bit device register. -* @param regAddr Register regAddr to write to -* @param bitStart First bit position to write (0-7) -* @param length Number of bits to write (not more than 8) -* @param data Right-aligned value to write -* @return Status of operation (true = success) -*/ -int I2C::writeBits(uint8_t regAddr, uint8_t bitStart, uint8_t length, uint8_t data) -{ - // 010 value to write - // 76543210 bit numbers - // xxx args: bitStart=4, length=3 - // 00011100 mask byte - // 10101111 original value (sample) - // 10100011 original & ~mask - // 10101011 masked | value - uint8_t b; - if (this->readByte(devAddr, regAddr, &b) != 0) - { - uint8_t mask = ((1 << length) - 1) << (bitStart - length + 1); - data <<= (bitStart - length + 1); // shift data into correct position - data &= mask; // zero all non-important bits in data - b &= ~(mask); // zero all important bits in existing byte - b |= data; // combine data with existing byte - return this->writeByte(devAddr, regAddr, b); - } - else - { - return -1; - } -} - -/** Write multiple bits in a 16-bit device register. -* @param regAddr Register regAddr to write to -* @param bitStart First bit position to write (0-15) -* @param length Number of bits to write (not more than 16) -* @param data Right-aligned value to write -* @return Status of operation (true = success) -*/ -int I2C::writeBitsW(uint8_t regAddr, uint8_t bitStart, uint8_t length, uint16_t data) -{ - // 010 value to write - // fedcba9876543210 bit numbers - // xxx args: bitStart=12, length=3 - // 0001110000000000 mask byte - // 1010111110010110 original value (sample) - // 1010001110010110 original & ~mask - // 1010101110010110 masked | value - uint16_t w; - if (this->readWord(devAddr, regAddr, &w) != 0) - { - uint8_t mask = ((1 << length) - 1) << (bitStart - length + 1); - data <<= (bitStart - length + 1); // shift data into correct position - data &= mask; // zero all non-important bits in data - w &= ~(mask); // zero all important bits in existing word - w |= data; // combine data with existing word - return this->writeWord(devAddr, regAddr, w); - } - else - { - return -1; - } -} - -/** Write single byte to an 8-bit device register. -* @param regAddr Register address to write to -* @param data New byte value to write -* @return Status of operation (true = success) -*/ -int I2C::writeByte(uint8_t regAddr, uint8_t data) -{ - return this->writeBytes(devAddr, regAddr, 1, &data); -} - -/** Write single word to a 16-bit device register. -* @param regAddr Register address to write to -* @param data New word value to write -* @return Status of operation (true = success) -*/ -int I2C::writeWord(uint8_t regAddr, uint16_t data) -{ - return this->writeWords(devAddr, regAddr, 1, &data); -} - -/** Write multiple bytes to an 8-bit device register. -* @param regAddr First register address to write to -* @param length Number of bytes to write -* @param data Buffer to copy new data from -* @return Status of operation (true = success) -*/ -int I2C::writeBytes(uint8_t regAddr, uint8_t length, uint8_t *data) -{ - int8_t count = 0; - uint8_t buf[128]; - int fd; - -#ifdef DEBUG - printf("write %#x %#x\n", devAddr, regAddr); -#endif - if (length > 127) - { - fprintf(stderr, "Byte write count (%d) > 127\n", length); - return -1; - } - - fd = open("/dev/i2c-1", O_RDWR); - if (fd < 0) - { - fprintf(stderr, "Failed to open device: %s\n", strerror(errno)); - return -1; - } - if (ioctl(fd, I2C_SLAVE, devAddr) < 0) - { - fprintf(stderr, "Failed to select device: %s\n", strerror(errno)); - close(fd); - return -1; - } - buf[0] = regAddr; - memcpy(buf + 1, data, length); - count = write(fd, buf, length + 1); - if (count < 0) - { - fprintf(stderr, "Failed to write device(%d): %s\n", count, strerror(errno)); - close(fd); - return -1; - } - else if (count != length + 1) - { - fprintf(stderr, "Short write to device, expected %d, got %d\n", length + 1, count); - close(fd); - return -1; - } - close(fd); - - return 0; -} - -/** Write multiple words to a 16-bit device register. -* @param regAddr First register address to write to -* @param length Number of words to write -* @param data Buffer to copy new data from -* @return Status of operation (true = success) -*/ -int I2C::writeWords(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint16_t *data) -{ - int8_t count = 0; - uint8_t buf[128]; - int i, fd; - - // Should do potential byteswap and call writeBytes() really, but that - // messes with the callers buffer - - if (length > 63) - { - fprintf(stderr, "Word write count (%d) > 63\n", length); - return -1; - } - - fd = open("/dev/i2c-1", O_RDWR); - if (fd < 0) - { - fprintf(stderr, "Failed to open device: %s\n", strerror(errno)); - return -1; - } - if (ioctl(fd, I2C_SLAVE, devAddr) < 0) - { - fprintf(stderr, "Failed to select device: %s\n", strerror(errno)); - close(fd); - return -1; - } - buf[0] = regAddr; - for (i = 0; i < length; i++) - { - buf[i * 2 + 1] = data[i] >> 8; - buf[i * 2 + 2] = data[i]; - } - count = write(fd, buf, length * 2 + 1); - if (count < 0) - { - fprintf(stderr, "Failed to write device(%d): %s\n", count, strerror(errno)); - close(fd); - return -1; - } - else if (count != length * 2 + 1) - { - fprintf(stderr, "Short write to device, expected %d, got %d\n", length + 1, count); - close(fd); - return -1; - } - close(fd); - return 0; -} - -// cvCamera -Camera::Camera(int dev) -{ - cam_id = dev; - cam = new VideoCapture; - cam->open(cam_id); -} - -Camera::~Camera() -{ - this->release(); - cache.clear(); -} - -bool Camera::isopened() -{ - return cam->isOpened(); -} - -Mat Camera::get_recent_frame() -{ - Mat buffer; - *cam >> buffer; - return buffer; -} - -void Camera::delete_frame() -{ - while (frame_count > CAM_FRAME_MAX) - cache->erase(cache->begin()); - frame_count--; -} - -void Camera::push_back_frame() -{ - frame_count++; - Mat buffer; - *cam >> buffer; - cache->push_back(buffer); -} -vector *Camera::get_frame_vector() -{ - return cache; -} - -VideoCapture *Camera::get_cam_obj() -{ - return cam; -} - -void Camera::release() -{ - delete cam; - cam = NULL; -} - -//Gpio -Gpio::Gpio(int pin) -{ - gpio = pin; - this->gpio_export(); -} - -Gpio::~Gpio() -{ - this->gpio_free(); -} - -bool Gpio::isopened() -{ - return opened; -} - -void Gpio::gpio_export() -{ - char buffer[BUFFER_MAX]; - int len; - int fd; - fd = open("/sys/class/gpio/export", O_WRONLY); - if (fd < 0) - return; - len = snprintf(buffer, BUFFER_MAX, "%d", gpio); - if (write(fd, buffer, len) < 0) - return; - close(fd); - opened = true; - return; -} - -void Gpio::gpio_unexport() -{ - char buffer[BUFFER_MAX]; - int len; - int fd; - fd = open("/sys/class/gpio/unexport", O_WRONLY); - if (fd < 0) - return; - len = snprintf(buffer, BUFFER_MAX, "%d", gpio); - if (write(fd, buffer, len) < 0) - return; - close(fd); - return 0; -} - -void Gpio::gpio_direction(int dir) -{ - static const char dir_str[] = "in\0out"; - char path[DIRECTION_MAX]; - int fd; - snprintf(path, DIRECTION_MAX, "/sys/class/gpio/gpio%d/direction", gpio); - fd = open(path, O_WRONLY); - if (fd < 0) - return; - if (!write(fd, &dir_str[dir == IN ? 0 : 3], dir == IN ? 2 : 3) < 0) - direction = dir; - else - return; - gpio = -1; - opened = false; - close(fd); - return 0; -} - -void Gpio::gpio_write(int lev) -{ - static const char values_str[] = "01"; - char path[DIRECTION_MAX]; - int fd; - snprintf(path, DIRECTION_MAX, "/sys/class/gpio/gpio%d/value", gpio); - fd = open(path, O_WRONLY); - if (fd < 0) - return; - if (!write(fd, &values_str[lev == LOW ? 0 : 1], 1) < 0) - level = lev; - else - return; - close(fd); - return 0; -} - -int Gpio::gpio_read() -{ - char path[DIRECTION_MAX]; - char value_str[3]; - int fd; - snprintf(path, DIRECTION_MAX, "/sys/class/gpio/gpio%d/value", gpio); - fd = open(path, O_RDONLY); - if (fd < 0) - return; - if (!read(fd, value_str, 3) < 0) - level = atoi(value_str); - else - return; - close(fd); - return (atoi(value_str)); -} - -void Gpio::gpio_free() -{ - this->gpio_unexport(); -} -} diff --git a/Framework/src/sensor/README.md b/Framework/src/sensor/README.md deleted file mode 100644 index e69de29..0000000 diff --git a/Framework/src/userfuncs.cpp b/Framework/src/userfuncs.cpp deleted file mode 100644 index 7be2360..0000000 --- a/Framework/src/userfuncs.cpp +++ /dev/null @@ -1,114 +0,0 @@ -#include "../include/headers.h" -#include "../include/userfuncs.h" -#include "../ext/map/map.h" - -namespace nef { - Font font; - Texture texture; - Texture texture1; - Texture texture2; - char buf[10] = { 0 }; - Light light0; - Brush brush; - Audio audio; - - baiduMapStaticImage map; - baiduMapGetPath path; - - void onSetup() - { - /* - audio.Open("./res/mus/1.wav"); - audio.setVolume(nefMaxVolume); - audio.Play(); - Delay_ms(1000); - audio.Pause(); - Delay_ms(2000); - audio.Resume(); - Delay_ms(2000); - audio.Rewind(); - audio.Play(); - */ - map.setImageStyle(800, 600, 11); - map.setCentral(116.69, 23.39); - map.getStaticImage("./res/pic/map", 10, 1); - path.setMode(DRIVING); - path.setOrigin("��ͷ��ѧ"); - path.setDestination("��ͷ�н�ɽ��ѧ"); - path.setCity("��ͷ", "��ͷ"); - path.getPath("./res/xml/path", 10, 1); - - font.Open("./res/ttf/segoeui.ttf", 50); - font.Set(TTF_STYLE_BOLD | TTF_STYLE_ITALIC); - texture.RenderText(font.font, "hello world", { 1, 1, 1 }); - texture2.LoadImage("./res/pic/map.png"); - light0.setID(nefLight_0); - light0.setPosition(0, 0, -4, 1); - light0.setAmbient(0, 0, 0, 0); - light0.setDiffuse(1.0, 1.0, 1.0, 1.0); - light0.setSpecular(1.0, 1.0, 1.0, 1.0); - light0.turnOn(); - light0.turnOff(); - } - - void onLoop() - { - sprintf(buf, "%d", int(Renderfps)); - texture1.RenderText(font.font, buf, { 1, 1, 1 }); - } - - void onEvent(SDL_Event event) { - switch (event.type) - { - case SDL_KEYDOWN: - switch (event.key.keysym.sym) - { - case SDLK_ESCAPE: - exit(0); - break; - default: - break; - } - break; - default: - break; - } - } - - void onHUD() - { - brush.HUD_drawText(texture1, 50, 50); - brush.HUD_drawText(texture, 50, 100); - brush.HUD_drawImage(texture2, 100, 300, 200, 160); - } - - void onRender() - { - texture2.setAmbient(0, 0, 0, 1); - texture2.setDiffuse(0.7, 0.7, 0.7, 1); - texture2.setSpecular(0.7, 0.7, 0.7, 1); - texture2.setEmission(0.7, 0.7, 0.7, 1); - texture2.setShininess(30); - texture2.Blind(); - texture2.unBlind(); - texture2.Blind(); - brush.setColor(1, 1, 1); - brush.beginPolygon(); - brush.addNormal(0, 0, 1); - brush.addPoint(0, 0, -5, 0, 0); - brush.addPoint(6.5, 0, -5, 1, 0); - brush.addPoint(6.5, 5, -5, 1, 1); - brush.addPoint(0, 5, -5, 0, 1); - brush.end(); - } - - void onExit() - { - font.Free(); - texture.Free(); - texture1.Free(); - texture2.Free(); - audio.Free(); - } - -} \ No newline at end of file diff --git a/Framework/src/uvmain.cpp b/Framework/src/uvmain.cpp deleted file mode 100644 index 62c932b..0000000 --- a/Framework/src/uvmain.cpp +++ /dev/null @@ -1,172 +0,0 @@ -#include "../include/headers.h" -#include "../include/userfuncs.h" - -uv_loop_t *loop; - -uv_thread_t render_loop; -uv_thread_t sensor_loop; -uv_thread_t app_loop; -uv_thread_t info_loop; -struct arg_t -{ - int argc; - char *argv[]; -}; - -void render(void *arg) -{ - SDL_Event event; - clock_t begin = clock(); - clock_t end; - bool ispass = false; - while (1) - { - if (ispass) - { - end = clock() if (getFps(begin, end) < EVENT_LOCK_FRAME) ispass = false; - else goto event; - } - onLoop(); - glClearColor(0.0, 0.0, 0.0, 1.0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); -#ifdef DOUBLE_EYES - { -#pragma omp parallel - { -#pragma omp section - { - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(FOV, (((float)(screen->w / 2) / ((float)screen->h))), REN_NEAR, REN_FAR); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glViewport(0, 0, screen->w / 2, screen->h); - gluLookAt(-(DOUBLE_EYES / 2), 0, 0, 0, 0, -1, 0, 1, 0); - glRotatef(state.dir[0], 0, -1, 0); - glRotatef(state.dir[1], (-1) * cos(state.dir[0] * ang_t), 0, sin(state.dir[0] * ang_t)); - glRotatef(state.dir[2], cos((state.dir[0] + 90) * ang_t), tan(state.dir[1] * ang_t), (-1) * sin((state.dir[0] + 90) * ang_t)); - glTranslatef((-1) * (state.pos[0]), (-1) * (state.pos[1]), (-1) * (state.pos[2])); - glColor3f(1, 1, 1); - onRender(); - } -#pragma omp section - { - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(FOV, (((float)(screen->w / 2) / ((float)screen->h))), REN_NEAR, REN_FAR); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glViewport(screen->w / 2, 0, screen->w / 2, screen->h); - gluLookAt((DOUBLE_EYES / 2), 0, 0, 0, 0, -1, 0, 1, 0); - glRotatef(state.dir[0], 0, -1, 0); - glRotatef(state.dir[1], (-1) * cos(state.dir[0] * ang_t), 0, sin(state.dir[0] * ang_t)); - glRotatef(state.dir[2], cos((state.dir[0] + 90) * ang_t), tan(state.dir[1] * ang_t), (-1) * sin((state.dir[0] + 90) * ang_t)); - glTranslatef((-1) * (state.pos[0]), (-1) * (state.pos[1]), (-1) * (state.pos[2])); - glColor3f(1, 1, 1); - onRender(); - } - } - SDL_GL_Enter2DMode(); - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glOrtho(0.0, (GLdouble)screen->w / 2, (GLdouble)screen->h, 0.0, 0.0, 1.0); - onHUD(); - SDL_GL_Leave2DMode(); - SDL_GL_SwapBuffers(); - if (SDL_Flip(screen) == -1) - return; - } -#else - { - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(FOV, (((float)(screen->w) / ((float)screen->h))), REN_NEAR, REN_FAR); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt(0, 0, 0, 0, 0, -1, 0, 1, 0); - glRotatef(state.dir[0], 0, -1, 0); - glRotatef(state.dir[1], (-1) * cos(state.dir[0] * ang_t), 0, sin(state.dir[0] * ang_t)); - glRotatef(state.dir[2], cos((state.dir[0] + 90) * ang_t), tan(state.dir[1] * ang_t), (-1) * sin((state.dir[0] + 90) * ang_t)); - glTranslatef((-1) * (state.pos[0]), (-1) * (state.pos[1]), (-1) * (state.pos[2])); - glColor3f(1, 1, 1); - onRender(); - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glOrtho(0.0, (GLdouble)screen->w, (GLdouble)screen->h, 0.0, 0.0, 1.0); - onHUD(); - SDL_GL_Leave2DMode(); - SDL_GL_SwapBuffers(); - if (SDL_Flip(screen) == -1) - return; - } -#endif - state.pos[0] += stateAcc.pos[0]; - state.pos[1] += stateAcc.pos[1]; - state.pos[2] += stateAcc.pos[2]; - state.dir[0] += stateAcc.dir[0]; - state.dir[1] += stateAcc.dir[1]; - state.dir[2] += stateAcc.dir[2]; - - end = clock(); - if (EVENT_LOCK_FRAME && getFps(begin, end) > EVENT_LOCK_FRAME) - ispass = true; - goto event; - - event: - while (SDL_PollEvent(&event)) - { - eventLoop(); - onEvent(event); - switch (event.type) - { - case SDL_QUIT: - onExit(); - done = 1; - break; - default: - break; - } - } - } -} - -void sensorloop(void *arg) -{ -} - -void apploop(void *arg) -{ -} - -void infoloop(void *arg) -{ -} - -void setup(arg_t *arg) -{ - nefInit(); - glutInit(&arg->argc, arg->argv); - nefGLinit(); - onSetup(); -} - -int main(int argc, char *argv[]) -{ - arg_t *arg; - arg->argc = argc; - arg->argv = argv; - setup(arg); - - uv_thread_create(&render_loop, render, NULL); - uv_thread_create(&sensor_loop, sensorloop, NULL); - uv_thread_create(&app_loop, apploop, NULL); - uv_thread_create(&info_loop, infoloop, NULL); - - uv_thread_join(&render_loop); - uv_thread_join(&sensor_loop); - uv_thread_join(&app_loop); - uv_thread_join(&info_loop); - return 0; -} diff --git a/README.md b/README.md deleted file mode 100644 index 8c07cda..0000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Nef -## Nef is a project that makes MR into your life. \ No newline at end of file -- Gitee From 7d22884290d0a3ff39c6e5803cdf40f6a27f7085 Mon Sep 17 00:00:00 2001 From: Date: Mon, 25 Sep 2017 17:33:42 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=96=B0=E5=BB=BA=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=A4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nefdaemon/README.md | 0 u3d/README.md | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 nefdaemon/README.md create mode 100644 u3d/README.md diff --git a/nefdaemon/README.md b/nefdaemon/README.md new file mode 100644 index 0000000..e69de29 diff --git a/u3d/README.md b/u3d/README.md new file mode 100644 index 0000000..e69de29 -- Gitee

s?#grM}NX~ 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∈NXX=?TM>E-JK+qcs%ke``Z#O&A((fq-e*9~2? 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%0DY*e>-o0-~Sf<6