From 2ad6e86a8b49d538d8597f5d450db5b175bdfd9b Mon Sep 17 00:00:00 2001 From: Tarasenko Alexander Date: Sun, 15 Apr 2018 15:12:12 +0300 Subject: [PATCH 01/12] del obsolete files --- .nuget/NuGet.Config | 6 - .nuget/NuGet.exe | Bin 1664000 -> 0 bytes .nuget/NuGet.targets | 144 --- .nuget/packages.config | 4 - nsis_setup/Include/HasAssembly.nsh | 62 -- .../MUIOrangeVistaTheme/Clean/header-l-un.bmp | Bin 25820 -> 0 bytes .../MUIOrangeVistaTheme/Clean/header-l.bmp | Bin 25820 -> 0 bytes .../MUIOrangeVistaTheme/Clean/installer.ico | Bin 113623 -> 0 bytes .../MUIOrangeVistaTheme/Clean/uninstaller.ico | Bin 113105 -> 0 bytes .../MUIOrangeVistaTheme/Clean/wizard-un.bmp | Bin 154544 -> 0 bytes .../MUIOrangeVistaTheme/Clean/wizard.bmp | Bin 154544 -> 0 bytes nsis_setup/MUIOrangeVistaTheme/License.txt | 74 -- nsis_setup/Plugins/inetc.dll | Bin 20480 -> 0 bytes nsis_setup/pykd_license.txt | 31 - nsis_setup/pykd_logo.png | Bin 69960 -> 0 bytes nsis_setup/pykd_setup_common.nsh | 483 --------- nsis_setup/pykd_setup_x64.nsi | 21 - nsis_setup/pykd_setup_x64_python27.nsi | 21 - nsis_setup/pykd_setup_x86.nsi | 21 - nsis_setup/pykd_setup_x86_python27.nsi | 21 - pykd-0.3-2010.sln | 119 --- pykd-0.3-2012.sln | 256 ----- pykd-0.3-2013.sln => pykd.sln | 0 pykd_bootstrapper/dllmain.cpp | 30 - pykd_bootstrapper/export.def | 6 - .../packages.pykd_bootstrapper_vc120.config | 6 - .../pykd_bootstrapper_vc120.vcxproj | 227 ----- .../pykd_bootstrapper_vc120.vcxproj.filters | 140 --- pykd_bootstrapper/resource.h | 14 - pykd_bootstrapper/stdafx.cpp | 8 - pykd_bootstrapper/stdafx.h | 17 - pykd_bootstrapper/targetver.h | 8 - pykd_bootstrapper/version.h | 15 - pykd_bootstrapper/version.rc | Bin 5292 -> 0 bytes pykd_bootstrapper/windbgext.cpp | 760 --------------- pykd_ext/arglist.cpp | 98 -- pykd_ext/arglist.h | 26 - pykd_ext/dbgout.h | 122 --- pykd_ext/dllmain.cpp | 30 - pykd_ext/export.def | 8 - pykd_ext/packages.pykd_ext_vc120.config | 4 - pykd_ext/pyapi.h | 213 ---- pykd_ext/pyclass.h | 232 ----- pykd_ext/pycontext.h | 23 - pykd_ext/pyinterpret.cpp | 917 ------------------ pykd_ext/pyinterpret.h | 69 -- pykd_ext/pykd_ext_vc120.vcxproj | 228 ----- pykd_ext/pykd_ext_vc120.vcxproj.filters | 79 -- pykd_ext/pymodule.h | 10 - pykd_ext/resource.h | 14 - pykd_ext/stdafx.cpp | 8 - pykd_ext/stdafx.h | 18 - pykd_ext/targetver.h | 8 - pykd_ext/version.h | 15 - pykd_ext/version.rc | Bin 5292 -> 0 bytes pykd_ext/windbgext.cpp | 802 --------------- 56 files changed, 5418 deletions(-) delete mode 100644 .nuget/NuGet.Config delete mode 100644 .nuget/NuGet.exe delete mode 100644 .nuget/NuGet.targets delete mode 100644 .nuget/packages.config delete mode 100644 nsis_setup/Include/HasAssembly.nsh delete mode 100644 nsis_setup/MUIOrangeVistaTheme/Clean/header-l-un.bmp delete mode 100644 nsis_setup/MUIOrangeVistaTheme/Clean/header-l.bmp delete mode 100644 nsis_setup/MUIOrangeVistaTheme/Clean/installer.ico delete mode 100644 nsis_setup/MUIOrangeVistaTheme/Clean/uninstaller.ico delete mode 100644 nsis_setup/MUIOrangeVistaTheme/Clean/wizard-un.bmp delete mode 100644 nsis_setup/MUIOrangeVistaTheme/Clean/wizard.bmp delete mode 100644 nsis_setup/MUIOrangeVistaTheme/License.txt delete mode 100644 nsis_setup/Plugins/inetc.dll delete mode 100644 nsis_setup/pykd_license.txt delete mode 100644 nsis_setup/pykd_logo.png delete mode 100644 nsis_setup/pykd_setup_common.nsh delete mode 100644 nsis_setup/pykd_setup_x64.nsi delete mode 100644 nsis_setup/pykd_setup_x64_python27.nsi delete mode 100644 nsis_setup/pykd_setup_x86.nsi delete mode 100644 nsis_setup/pykd_setup_x86_python27.nsi delete mode 100644 pykd-0.3-2010.sln delete mode 100644 pykd-0.3-2012.sln rename pykd-0.3-2013.sln => pykd.sln (100%) delete mode 100644 pykd_bootstrapper/dllmain.cpp delete mode 100644 pykd_bootstrapper/export.def delete mode 100644 pykd_bootstrapper/packages.pykd_bootstrapper_vc120.config delete mode 100644 pykd_bootstrapper/pykd_bootstrapper_vc120.vcxproj delete mode 100644 pykd_bootstrapper/pykd_bootstrapper_vc120.vcxproj.filters delete mode 100644 pykd_bootstrapper/resource.h delete mode 100644 pykd_bootstrapper/stdafx.cpp delete mode 100644 pykd_bootstrapper/stdafx.h delete mode 100644 pykd_bootstrapper/targetver.h delete mode 100644 pykd_bootstrapper/version.h delete mode 100644 pykd_bootstrapper/version.rc delete mode 100644 pykd_bootstrapper/windbgext.cpp delete mode 100644 pykd_ext/arglist.cpp delete mode 100644 pykd_ext/arglist.h delete mode 100644 pykd_ext/dbgout.h delete mode 100644 pykd_ext/dllmain.cpp delete mode 100644 pykd_ext/export.def delete mode 100644 pykd_ext/packages.pykd_ext_vc120.config delete mode 100644 pykd_ext/pyapi.h delete mode 100644 pykd_ext/pyclass.h delete mode 100644 pykd_ext/pycontext.h delete mode 100644 pykd_ext/pyinterpret.cpp delete mode 100644 pykd_ext/pyinterpret.h delete mode 100644 pykd_ext/pykd_ext_vc120.vcxproj delete mode 100644 pykd_ext/pykd_ext_vc120.vcxproj.filters delete mode 100644 pykd_ext/pymodule.h delete mode 100644 pykd_ext/resource.h delete mode 100644 pykd_ext/stdafx.cpp delete mode 100644 pykd_ext/stdafx.h delete mode 100644 pykd_ext/targetver.h delete mode 100644 pykd_ext/version.h delete mode 100644 pykd_ext/version.rc delete mode 100644 pykd_ext/windbgext.cpp diff --git a/.nuget/NuGet.Config b/.nuget/NuGet.Config deleted file mode 100644 index 6a318ad..0000000 --- a/.nuget/NuGet.Config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.nuget/NuGet.exe b/.nuget/NuGet.exe deleted file mode 100644 index 8dd7e45ae75d1a55fc669f09bdef4a49b16a95dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1664000 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

s0HCb|zhvuu4HkXyo61ZE5M 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%0A%Zp1 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

f@-- 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 D>RC3& diff --git a/.nuget/NuGet.targets b/.nuget/NuGet.targets deleted file mode 100644 index 428c8da..0000000 --- a/.nuget/NuGet.targets +++ /dev/null @@ -1,144 +0,0 @@ - - - - $(MSBuildProjectDirectory)\..\ - - - false - - - false - - - true - - - false - - - - - - - - - - - $([System.IO.Path]::Combine($(SolutionDir), ".nuget")) - - - - - $(SolutionDir).nuget - - - - $(MSBuildProjectDirectory)\packages.$(MSBuildProjectName.Replace(' ', '_')).config - $(MSBuildProjectDirectory)\packages.$(MSBuildProjectName).config - - - - $(MSBuildProjectDirectory)\packages.config - $(PackagesProjectConfig) - - - - - $(NuGetToolsPath)\NuGet.exe - @(PackageSource) - - "$(NuGetExePath)" - mono --runtime=v4.0.30319 "$(NuGetExePath)" - - $(TargetDir.Trim('\\')) - - -RequireConsent - -NonInteractive - - "$(SolutionDir) " - "$(SolutionDir)" - - - $(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir) - $(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols - - - - RestorePackages; - $(BuildDependsOn); - - - - - $(BuildDependsOn); - BuildPackage; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.nuget/packages.config b/.nuget/packages.config deleted file mode 100644 index 2667fb0..0000000 --- a/.nuget/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/nsis_setup/Include/HasAssembly.nsh b/nsis_setup/Include/HasAssembly.nsh deleted file mode 100644 index e679643..0000000 --- a/nsis_setup/Include/HasAssembly.nsh +++ /dev/null @@ -1,62 +0,0 @@ -!ifndef HASASSEMBLY_INCLUDED -!define HASASSEMBLY_INCLUDED -!verbose Push -!verbose 3 - -!include LogicLib.nsh -!include Util.nsh - -!macro _WinSxS_HasAssembly - /* - push 'msvcr80.dll' - push 'Microsoft.VC80.CRT,version="8.0.50727.42",type="win32",processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b"' - Call WinSxS_HasAssembly - pop $0 ;0 on fail, 1 if it is in WinSxS or 2 if LoadLibrary worked on pre xp (call GetDLLVersion to make sure if you require a minimum version) - */ - Exch $8 - Exch - Exch $7 - push $9 - StrCpy $9 0 - push $0 - push $R0 - push $R1 - ${If} ${AtLeastWinXP} - System::Call "sxs::CreateAssemblyCache(*i.R0,i0)i.r0" - ${If} $0 == 0 - System::Call '*(i 24,i0,l,i0,i0)i.R1' ;TODO,BUGBUG: check alloc success - System::Call `$R0->4(i 0,w '$8',i $R1)i.r0` ;IAssemblyCache::QueryAssemblyInfo - ${If} $0 == 0 - System::Call '*$R1(i,i.r0)' - IntOp $0 $0 & 1 ;ASSEMBLYINFO_FLAG_INSTALLED=1 - ${IfThen} $0 <> 0 ${|} StrCpy $9 1 ${|} - ${EndIf} - System::Free $R1 - System::Call $R0->2() ;IAssemblyCache::Release - ${EndIf} - ${Else} - System::Call kernel32::LoadLibrary(t"$7")i.r0 - ${If} $0 != 0 - StrCpy $9 2 - System::Call 'kernel32::FreeLibrary(i r0)' - ${EndIf} - ${EndIf} - pop $R1 - pop $R0 - pop $0 - Exch 2 - pop $8 - pop $7 - Exch $9 -!macroend - -Function WinSxS_HasAssembly - !insertmacro _WinSxS_HasAssembly -FunctionEnd - -Function un.WinSxS_HasAssembly - !insertmacro _WinSxS_HasAssembly -FunctionEnd - -!verbose Pop -!endif \ No newline at end of file diff --git a/nsis_setup/MUIOrangeVistaTheme/Clean/header-l-un.bmp b/nsis_setup/MUIOrangeVistaTheme/Clean/header-l-un.bmp deleted file mode 100644 index d7b8693e261ed18b536479731a8513e3dfd48d51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25820 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 Qc2ZKE+NJ3GWmeYz2R;+6GXMYp diff --git a/nsis_setup/MUIOrangeVistaTheme/Clean/header-l.bmp b/nsis_setup/MUIOrangeVistaTheme/Clean/header-l.bmp deleted file mode 100644 index 11be229b4cc6cd355bcf047aa497df17ba1196ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25820 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ðbXeBc@qD)@7-#D+Slnd9*iYsw=4;F94; zwy!ZPF$^eDDl_By;uL*M0caC`=YUy1CGaCRur<+sk+1svb>|1sJo?L})7pNI4W)Q% zO7G0;O=^(}vUSs5ZV(T+Ts#>jYTJ9FtM2sEZBWe!@?-JYEsJNKaaeiw1h3+dxg_2d zCGiF6s`yCt_qS*pHz-sIC*%q7q#tmrX)Qb;Pz|~l9zzV-deC2x6Gs?=iMR-aW_NP2 zve921{USQ9yyh1?{sNdqFyId}_h%+QG_k(%;^SW71zJ;NB5R-(BQ%~Ug==`QiUdw- zL_MykaLtA3`Wp`IBl-}9ZPPQ_QQx-rJI%$*3`S`njN3vj7hoB(adNsz+uKu(XYMiZVVoVr$oRfM#(@7R=&Na zPP8cdY-kn_=*aEV$0J%Gv#AhO5jt-+Lic_$(HJHZIPNzp4c8ZaO7o#+3(Bg(RODJ& zJb-7-uJVA@O-E1Kb)>iFS@7qEw~u2#?9PSrJ_*MUSv{cr{z!b6V3_J+w`*EROm91t zzq{{JB(nmdUP1}0*JH~Ywh=%XKFXsxX2!l!DGS$>#wNGO^SG-uMuA3mW z?D!p2kxA~X3e`zK9`l#533f})4$(I?btbKGxqB9G6&+&f5@Vj3W(wpRVIm3NcSOFg zs*vT$tLABzRjM3e@8@CHj4%I?CFHtJcO&74ND}0_ zY@R-XCNYNjDqqjTJHuD4I&$xkFk{{`gL5EC112sqKk)F=!*lOP3frqRM8{uM`NBhG zeXXOJSv-E@37ypaRL!(7)iYBn)W=4q&THiXQiSFp*IC$?$P72GM?DQfCPozZy4Mu5us!j0 zh#Z+e&gwntx<5XD=JpBIt1Nr&spin_ky0A;y%_ZHTk@ySLNUE{9)Nez`7*)@Pe12< z^3kI$-{il#j(aHNm+rtv;#bo0POqcgVbH`m&klq zDWBWo(bSc?ztJ$(W*6a)u%%WmrCD5{&?f9rePKZNcAI}6-|n+z((@3uy=P$@{y7d- zzz0St#LS~-x=eI)f>3lXGW-d%&QsnTh9|lG`stEl5#8w$ONiF4f%o9)-dr(Qefik9 z-O%vZSV`kH{CRKeQ_=euI^|HN+}T_%ubjjka(Et%`@}dZpqN{Gm2gEu^v9IJ}A&L;pav)=#+qs6lkj|zYmCtX^xa9(Y-L;lIwaI0H^z3p^TdheKFg5EBRJ1{hkLEuBQc+VfS)@) z3aLcUB=vgW%{#$h<7;>8B?8PEf!g;j)F}BMuUD6CZEc^RlltiU9SLq1_5r#KZR}y8 z50RblXK-=Y$7>l8?hC=9g#j0@zpHPdzsJXAl_Xf6lc8;}7*OqWIbM*;K5E>D)YShu zd34IkEgm-+yC0`w6V{Y>z1Mnm_NDGS63qTgH&}^XdS-}TO1 z*ZiaWR%`;^gV?)F|Z-tw{aZ7G_>1c=tvqG>$}|;wN&K3SUi6B zN>c26g5dlQQh#$x{g;3lKk!2 zS*6gZ1KMlSwlX%w6KUOwsL>+{R(cWBF4~~ZIe`h&;#tlwLlgiu7MWbkF>G)lty#}h zL?hS0K3X%HSwZDPY&eWnQij98Yv4+h%5-~;tjZ5b@e|t7?3-hjI|NieD7vBsL(xwj zK1#gACT!$a#Fmr9(2}7`VM_NAUa3ox%Aw@0te(cs1oL@dkI501UcnduwZ!26=zc7W z3C#G+Yj3Y|N6dvN2yFzx8hCx&zorQ|eZ_zF@PbdH((_uiZ=Kw+FYANyg@T`-7Qei2 zaE~L@BW#w?SJdxGS8wJ*=QqyxSKq3~4VJKo%(Mom!u!$Ms=#GSzPossA`a`8!`ntz zV^k`7E~KCHjb$>Cy~6OBdtnup$$s|3wB@eG<$DA^w^+IT-@5UvX=QW@)>Q@PE9Yt8~0wh+R7j5 zG2hCE(d!(T&--7wx}vypvm+1ds_B$$JJYVV704n03AnzgT%w>+M(y{PCYzkpN-OXj99iXwq!N_rtdWJc zf{%o#jlCSNC^hn*jm5O}8IDMj=6_@-+v_3r&1=nyg^X}fbb%RcYl;I_SVfXiq29Pl zEoTr&a(PRe^DL)@Chd!g>JNiw8j;KWB5F_dL8lDx`( z#7rN+c=aQr7e}Az$u$xF`0ZYAqDt|R&RzX=vWPXx+lZg2j&zepgJf!>^K7|Mk!>AH z{2cQgsy(;pwRFFn!^}|XX9!05tP)|Rtr=ewT~*86=Sxm}Ag=eRGV$qce+!_3C-@e} z$LnY2J=a$A3SyB(dbg$*HJ3y#T%5Ui=B@VaQuF@mnyHS(m}?OMitfpSmjV)SpoBh9 z=m5f{dR{N*!sbV*fQb=;Nxp`g91D*Lk+xM33`6mE3qO-xBx*)*?{@ST6p-S{Qxp_qeBc}^*PRRnzTaiP)kNk+~C z&XEk%vL~3y^aGz7u1FPU%`nZ@sZFQS6Nz!(m(QK#)T}njhH$|7r3K{~~wr&OW~ptr%5YY^r3BOqUidbn zE=@N0TDsEibEUGZ;s@JS87Db%;-{p{xBH&th?Tb-ez{5tNr?u2s#)+Yu$+^;OM;*L zpw$z?l_!3h3fDSeRCY%d*qr|+D!ejaZ`9ZW3(y+Mp;ry-*yF*SsZ9( zU1t)mq_LEwRmc8_moMIjyoZI076cp@}5a=;6&jiKFQ4Q z(V?!CW2keJH&cy^QT=3uv?}_0w`hhKV%;BW?ul%%H4m1|xqi9WwBYsN!qEp6J`w)q)!{}uMF!GIx$p+`ej4Tzr{C_A!YRrgzbjv^hK`cmM10ovGdp#C zBHrw_^fS+$P#6iRAr4wKoGo|*-1*d|3&*Nm4y2uTtTA9836t}Xap8B@D+>PEnsn7s z_F{6p_+zULc6+jbTXsE9DaVcs1X5V=-5S5t7!db9A^F58<*41>IvgK-jVxk-;zxx6 z5wPKHP$giYzrU}!dqs(;@?v|Y+|8tx4>rg61U>gS8RUp5?-@eY(U@zi?-~eOQhM-R zFf?wHU)6Qgax%iN_Db#bvVJ*jc5}2226wiLM~)2hJeS`3sX{a!q8;mahL=xb#xgH< zxF~0+E#0DCHG6&da4lEA|7X-mPw)MU$x{5m3F4)x!NMFrCD~D`aMWcI1H;)aXtGHj z&sV$HRF)iCx6t>huZr;u!F%uJR*hSe90_U;Q)>cYI<;Db!wLHKOo;g(;5oA6eaI&E*B_l?qR&@&fgdWn5Q)1FWJ&Ex!{Bhk(B3_O2`-J>%WqaTtD91I>}@;|z^is*{C$6n@PU242#M zzPUsyQ}`yWtLzQwgl)Rq%`{O3MzPNf7ZeyJFHoPDu|4t8xq7{nV&wY&L(^48HQ|5# zQPM5lol=rYigZhg!az#tZWtv>Bi$g~pmdJzknWDrJz&K4?Ds$CIcH}t_UeA`Zr{(n zSCiS3*q5K>&M{F4pSWv(Opg8I;s=qr=C4(= zv-GfqPc^-V^LFd=V2#0~%Uu76vA17~gV9cYtoU!sVGaAw8CXZd?;SiC zA)2IbFLp*0d8^7<(FKxh`zU<*cRtGWIUAW|J`n#YWQJ&pc(jgDGnbNeM-4*`5118> zShx*ltntgC6m~me>K)%yQA?BpOQXRvI+^SoB1qZDcXuL{etH@?=lJDC*~aFS?M{^& zP2~{NS+nxXgvfdYGU>z0i-b?-SEj+nE@iIA z%WElim6c82$2RdVv$yZ#(!PHo6>n(Ba+1dLLA>9Y+WFzXKfX|dwfTtBfO?=($4+Ks zxZ9u`>_DbnPz8`4;RLU@yCrs;zNC;qR8GFtBAy*$!BjcVW)3$-nGMr+@=Fh6fmo83 zeXOl#51oC>q*FeuZ0kD~T=KHTmo@zL%Vx)uEL?AXM| zdh60l29)LqAEq4&@&#PiIQPKZ57RoWO_>ekNBSwIf##{EHKS$%o2N}164};16E0lX zj6)SVeZ!Bd!h>NgVM&GDwDzC5@OolDQmU-Ghx}5dXAg{8 zcq@BIz}~@2F4o4OujX#W3Hk1g@zYdm-DV2JtN*kNegb4iNpZ}hOtos1^9ugD?GP~B z1_swq$jBeGeT{sdwXfm9peGIL=xZfaDT&??NE)~w9b?jW`Ze3PDZ@(alz7OW_p!HF zl4euMY2pxCejUPi-^m=TrUEE_$w+}B^{w%Pg5lk4#h;uR8{=x?{A!+hc6qNwV2l(;f<;iN?edMgC8a{HuY|yes^aej=(hr zn$K@g5278JDNvBr9{yi0S5_mXRe*Un=&@BR#Ney}&pk0rX3`7ci5IBLSR*|j==5x~ zQhPnr@-JWlhx%41LdcD}DQ_~qk6bW%?@OTw@(pEP@4RZC0+2i>I!C;TTSpj*n|^M= zDDU^AaP%^Hpd%~tiz4&`cbSyvwD<_EbXk@Ub+el08_+EdyZg5G_KS zrW#p29Ajt3DPe9*bMQK8H0)xRAco z`1n!lx2ax(WAM5Gn=H$7zxy)!6JVs2+jhFrynx_1cBILVz;7kMa{Qsw1%rBV?-G(bz!xc2+b9^U`dmR2KT;TM01);is5ckX_gf$BJ*GRGoP0-PoCW3s%y`x$!c6x1jHc3$$Jtp~4Fv8yEA*0=Kp= zgrFbILymFF=fi70_Sy>0iG;*FW8V`J-#FO6Qc@{zV4gj}(p8}vnXBwRr!d?^T4F(JZ~+|&fs zdThUyXu$befs&_#_N=q#JGZhgLGfPOkfc*!NP7Ut2)htVQ)kC2VAz+1=~RCQ59WCO zoNrSxLkIw~^`fHoN3H@R+M_jQ!<|Y|Gejgs>OQEKjQ^SLP|8tE_9H4D4*-}7ozEP5 zAPYm+mpc$s45YlKrH&H+J_B+TUMphEHUP9TMbGCA=ZjN!xNtXvY z9mg8RHr^A3tlHUP(E2nuG_gRCT`^MwmE&c$Me183Ps0fPg%sP$4Tik;gw9~7mW2O} zwCf!K>`cqt54cOZoa<~+5yf)ivT$g@9pyNDMaJm!`9CJy*t4nPR8M3tCLn@qGMjT0jsm(sNF03{{-4?8 z0BHT8Mgk~+y~ucs>oq2u&(E|r^yOm!PxmOz19l_VYf8MFN2C8Dp3g^SMsy*c9hCDF zO^C53ivgm;cTonn*~v$3|GXsRr=5hZqJ|K4tRNap#nmjx5Uebhw1t}N*dbkFJTL(N zUwp5CJ9cl9kehatMC8q(u4C|5y@CdFqxkV*dVd1MF4}IlU0=;p$!9h2nCBISo(7vv z&Gl`d2uEHHjW&N?YwTifC1qeXc^G&2rVQ)@DaA;8s5J`NE1$8v_PElt$pBuYpmxE< z$=`umLNt}eFP^P#z3GjNhlB_<0f5ir-rr+S4;ev-6A6NWUAGwWfh7!N_Exw`|26y@jIdhL2 zg1n6Qa>`%2eF6O?QLZ%9q)xf}qe1nt&O68D5Gya7iw)gp?!DV&Y$hduw-eOt51aeMl1zh;*897U$*3zVq+r3WVHjI< zpEcz6vND|L=SjvW4Jq?NT7i+r0aM5p4}z}o zj?7d;=Epphs}r-!ZX{1*HpN2O8fi6ukxjcKTP>6W$fK-X$NnhKct?!Wl##=1~5kopVAJRz>qvd_CFQdU?*H zH2#y*tDO3&v3n8&ywrGSp<>B*uRa^y?0i{-4pdE3nY+`t#7?f%L66N!`tU(yA#;@;%-!Q43W5DmL+onBQ9RC^@ zNL?*#G| z$+}d`CEGRqHb5oqwWe(CQ<NkyPID5vwuK~c9`1D10GdkLP*4Pkn~>dS|Gdrhg3q9Wj(wg3_P+Kn zIMKk1i5bk;CvzUqDv5$^mhPvoynt=k+WqLl`uXRDl#NPRlFV+>X2-WBhX)cLwi2R5 z^9AjdWk*bqpdfKn-*`-&syn zrgB9SsYQ-{n=ib^bww{e*z!I+Y$zOdyysh1{@(Vt(1&kH`O@Mc5u~_%mgt1AD&+0E z0SC`hUCnonc^hZT;41izBnhZzIyl_Bd?1cCZoavpovi5m@!8jCX(yaE&zN;CMnQ4! z2W4cJ`$Kka9<&4nc39#M`ZBAJ?MkL={A{B?B5_?GRmMLZI3<|SsX;|2<2INJm4F?y zI_qSyJubMxp)EEYO|cr?ogS5Ow+`)f0_7VZlC3eV1COSRQ-|@A604gxZSA79T5AP0 zK$aKv?Ok>Dj3{-?W>Skb^T+vSf@#vMvzA}H1eMIDHe@IqUXHV={4UvJ-4^Nj#{qis z384VdgC1oz2c{4z|3IOGmm+8MlG{I=B*M%`#PtLy+`_iIN@l9Q;AL?CCRgkIF>;T> z>=iN`7SxX;?@CDX8$J9@as7f51b2KN{zekxXZnO?!@~|S^TxY z(DFPabpJ_j2sz&sr?ap({#m8~BzA@{$pE8*$L1E~~Hb14|xZ?5Iu<=7$5WUnE zx{SWF#jjTZ1L6Vi27M!tm^X-nkKiE%=#m1wFnLizAejA32w02NeEDK1vZpJ==)?kt zK&P1TSgLPTfs-`yFLgketAr4if?ieb!g3B9>^rk@%URDP7ymp-bJr06$QvtimP4r# zUg^8e)1Qc7(Lw7l4%pb}h>$21NVx~>`$PbKYIyYD>#*22_V`?n<8I+WTLxTM@f#fU zKfU+~l9FbY3O`1R_(0617o!~gFCqF}gGz$DYQRtO3FWYmMM^VFxBbQldWxhE;VG>L zYc%Q*L3t0wtO(`5Ve#L?zH4&XBB5(9*ZPj(KI(UBl&v8wpE;sXUkno$6&92|T1Kc+ zh8nRSxT=u%-|R{#kSFfxt84Mwgq8iQLRT-at^K(ZCV)pY8YUDK;Yv2?kI$6;JADmt z*#p{)L*cW+W4zRgkNnAr_m2W+b8%S93e^^)Ha2ShrngQ5^1WnoPNrh^F257xw_EcJ z*MLjw4Qxz4gt0z_@~`eO1a1l5X%WOX&FJ1q5k3c-a-nZ7Fm#L}u8Qtp%e|OmA(8J_ zV>Q=}9bn4%Tu>cSn%Yo_782$n#kt*H7y#Mhf(B63A&$rbeT`#_%h0_L7(Ux>Liaq2 z*D_yLM$#<DXxz;{H`?4 zUVTO@9omEsqks^*K@6*Y>0l`P&A7CqjSKJ`OLytFGXu$T+h&`4q=ExTOHTTPg^W)g zD)0J8Fn!s(zy8VOmvFW18_)5eoxxls-%AK~mDa!9XVJk9@Idbl$4R-9&P$6}alcMJ8L%spMgS z;&hev=aZ=2E(*=@0Pe7~)mY}VF9TaYCdKh$T@H%30meU3xG$IvR-;3Mc&nQVx|*wb zEqy_g+o`B^biF^3`P83^oH%}BIS)gAnl#r@xS8)y)MSSF{g0f4Sy6;-H=lnfJ)QCg zM#y;I!$%+twr&HyA{qM%L3W;(eJ|gpC7wo>N(EoGm#@|}IWbv{g0o50PBH}R+O@XY zwS@hY>mMP1lH#SHf@M%_g2dDPr?Hy(x9GLAk&>tz7GJIL^nM6kBcTjEjPF!Xk$47j z8}(HrB!wt}s!@DUIhS#Ga>LvAa5+SNj(RmyQgKe$zUsZ9f^c0_b>ujDg5E)OHD&uc zwl^A;f0HjXTcp+L0|4pjH9#?*k%ZhkPKxmEqf(F(Sgz(1)$>AZ=k4tI1@hG=?v0D{ zO+LrF*~xb0vcD&Q9Z(z@=!gfvv%LsUESV1PE}p)m;N*j_=(XLg9Z{C2|7-GOY1>`r)SU4tQ^<1j&Vn% zB7FD~M={IAKFPk~bx)uCYp-Q-pCI1Uila+9DHa6@U5T* zCF#%E9III@NNpZ1S-Rc;7FV~A3%1+g0Tjb~!20e%--Vpz|DISfQKf{~@I$DOo>ZU( zN|j~g`#Jf8FAt9`DEd1N1aluZ5xo?s@RQR?f!4+>m4#t@_|yU-Y{M6^p1$Ch62nm( zma*E0kvFmz*BU?i;sbd#Iy#v?Q{WZGRo~!ZVDiM18fOQEc&zW&B|(+iEJ|T)OV%l? zoQUyKLdJdg$N^#e_c?^75(O7qRL%h-4@uyYzdkaWMJ*-Xr*`Dc<4==Lr1b7k0u z=57VjV1bc&vDdV|-@&o53*EBAj~H6v${yQa=yc8Xn@NigOaG{_8e0E>hi;>2R>}KI zWD+$k4Vz+?`6B&}1ZDA3yljU%GCX>@6*k?b^baQIt}*Z>wxr|p+FRnEGg*>Zj1i+| zP7Y6U6<)vNzb}4JPJ3CB!k_B)gY|y>74DsmOBptxJn*IgHQwz9Zkn8d6V|0Gy_G)&b@&WBW#!1@tw$1{>=WP)O)a7a^vb#op zT@&_Q>lq)uk_{f;ICw(MU4vh~CJSlLzJm9%tY@_M9``O#n$#I6?|=}ihRtFzzxq}* zJk2U`Y0H=tv=yG|940(DiEM=wv!I4en~Us3WA{O(3&d?mbE`<8S`8IQqr7J zJgRI*6#u$wSIhvU-{rM5KG&7yJI(wAneqpTii$u!i#>VkXl>9xBfJr3S6+YO5t`Dy zw1&T~Jrw>8#D#$(K<74aYQ#7YQ3E@dx%Pr>m_9x}<->FB_0X?8BNHdR?XC#C6q{O1 zSB=Z~@BecnylL4PhD6J4y9%-;+SC}%_DQVQf*IVuN=GXd{W^jIVL@M|<=QT7lsia; ztYmFh_ql^=(G^sZIKbH26jjG8zHYQd7z>zJQ+dK|1FbNA02IxNpC zL$PEbI>`$)G4<>r8I;Qh88`(w-6cQ-EBGQ2A&t1^KumCvl-9I?T)R3h155)>A8=Y$ zWh6EkKt=%ur#Jvg$AUB^>+WRY|#eQ)XZ{!g*YQOn}g!g$b zk4CT2wp<9{kwW^Iu*!8dq72zU4)>?eoFAWgFGCz=Wi*k`AmWGrDzslO1;~&O^^E+p z`MpTFGE)u{6`AojHe7=ew@Np`%dmgPL^VQ}!_ZhveKZ|( ziV*B#fGz`)c7wJS2uf-SK-iC>%n1JbT0ywkk!MXTa$s{_2?4cEcVMaBkQqIg6oPBu zOU$>OH>zxXv#foI%o}3HiI|?cI4p=Ew3k> z#dk|gVc)7Lnli4B{pR1t)9c^aCdztpiU~%v8;Nev9-|TvOy~c$OUpLvqna-Dt-3`Q z0=?s-aUZ~G%wVzP`*21w&XLrcsy%b`7JYz+^^CX-n0(Ey5}rweR2RS5ANpdOK7)6Y zVm^vrv+3USW&${uqV>)!zOl)bBRe)cIA(McNf zbe&ScyonhXa>{-=&xY_(-00k|q<=aMgvDmn2#+OAf2_OG2xzY&nm2?vJi;|VV0RVN z*FNFFs>(f6J9B2A9Bw>b$vWiKx}(fnfz4rKp>-TM&-E8|-hbQP(L!zJSo2Q`-TS3; zK4Wk~bcPt#5ke8ogS=_xd?{o#CMbDSFe(0Tw{~BRlkpGI*o{5a-LL3fz9EM-l6si* zs!79%8^t*;I>^9*q}cUJh}#yrjyLNc^%A7{k(wZo!=bG39=ySp=sT1x#ao5E62VT^ zjO}n3F#i)-9Ns9Tww-mT^Glz-8GZ}J!(}d2$y=X4GMmY#%Tz>A-xa%vOfyuIhrcM; zNuC0W-am*tM`E?^?;8cpiySP|y-Dv7OsUmGZDFlw<#vdRQ3PU=J1*rK_+2r00tq%9MT% z!rZwmyEgxJaXJO&xt&b9oQz!VIEZ{s_KP8WN}kM8V)`$ZL5VLW)LP@1{9V^1?9priHO#O`o6TDDmA)OP{;tCQ~-=bWjM#3?QDH%P0 zmef_&Dxw&u!MZ5j5IUriy?lH_=c4$MpDnXGQaQa&i0Xiu=dNB~F6I`e74oWnY1Lvp zZ6OBETOVPT{qiVa;l!ZsU{!vgRhFKPC_z|;VV}xm?JJ(YuB4gi7_~)Mk*bl*xnw0z zkjIB%g1vzYj>q+B5%HwMqZhyk+HFR&%2)eb2lBI(%r)&;8I-am1=X{t01bB8(b!CX zu(c;wOoDbxY_YxQcjzw!?+&4Bw%&=Ev<+7eeKrdK; zYtmsaV4Yj)*qfTFQtjzh8OX39jNHF|Pc3(7jzf21W{NR#vbHbPu*kuA?&3s!jSN+A zpxu$dO?NBd#xzz{B;kJ9MZ{_q#P=RIVRQQ|4j&F919sOcbpX&nPfkNf^NSs{+-IYn z`D}K&<_#Shk~HNy_80M=^gqknPKOwBzv2cei^;I_%c0{n(Vy z#YFO#e*7g$*J$~wM>Z-tH4>9jw~wAB_R)s!baV5gWv$}{6#gJ_{3p0h@13?U(lqZa z_0oAhJhIMkw0p&0&A+`fj0|3mlwBVmLUL0U$;}bJIeGLf%#zO&3doC14<=g&99-m2_o zYsf1nEJGe4tBdZ#gVab`ZHJix0k=9rlPn*?ke`ErtG31%mjJ{^9U!m*(?`rsPZ3#H&{w?e zTsx6*VaOwY+NOgo2Kx{Th?Y;AeKOH!f#;KGk8)2B)g^tdkEg&5BX_0vJ$EC&nrA%` z3146V=PDb1mz^a2auwQw`@Hl3mZ6*olwdEKZ<-EBAYA_H5S9^veqkWU`s>4TNxS-*vVr%A+G~K3T7F z-0+QgB7t7rOZoM89_p)otcMswMNQkNeOIF42?f~6!3%srTsBG5f0KMV#wZMw5UmDg zYgPx}CJiMnir4|A%4VW&L!sC%0!~lz*Iep>>$Z}|Uk&#ffHGBPr7_nbp%e^yct!m z+;Br|XZhq!)HeGjQ+Y1@^JJuZT68!v5%oO7Z+Mi5L@_^q?0vEKgg(2tY5R^ z%njy-d-MWjIxpL>vvs*QCsc-vD75K_RaU+!14^So-kvZ0WW0NTVAys0rOmpT|4kTc z+Ewx)rvLR;faH{dT5gpRBcQt5-|K}Z+cSsvxM%Z1*=pGG{VCCBG>&SxgUvqEvsvmN zzS=}e#&^y5E9T%bG;O*>bwH^e(qo2t$(~+VeWADt$~may1T0pfPJ|@2l@>p*ilDd5 zqQ@6g1#+9=>iTAnDC4tn5cmtvyc>_@eEr=&w7l)$qyu{0cOl&}?bL|u0*X3J_W0l+ zQEl1py3IdIrQYD!(^_|xREBJnYDvbSvonKl`awe*k9`|k4TivhBPfiQXj0yK;$?s9 z;=w{Jd|}`fcv}c&KyWM6D*!WyeH!_Op-sUD4PA@5lMz*o?l(+Ti&H;9&Je=$3Gz>^eB`i(QJj;h1xvBlm^?h|Pf(?(2 zL%oPB^sQYEoIT5MOxG#bddvpnIfo5kq&Vm2L7o?*Q%}8^)I;Z4eg2BDJ_hWGd30L4 z>Ba$`L|o51k^YHJurmo=`?Nqs@WV!$v@6H*GNd`nRWh!8mfq9oR|uWxRAA5+N1^pD zkWi?+KX7LvO;sQGkL#ss!21&Ict!otf0fX;r6uSU{j_r@EEIC2Xa^AlI)5?-+J0Vo zx&IPgU&Y+==_)b+v=;BQFc+&gJg6Brps96`QdSn9OjPXD;NMpMdi=)X``Dpj1)ju_ zt2qOi64f%CT$MI!IS#h_)F#H4!4rgJw@~lLnF6L5nXV9Q$h$dDWb1!15myer|2yicb9St5sfXH$S^s9(gEi)Soja#$Xzo5vBfbp)4Ik!Kgff^8o~>76 zQN($3eO@N7($P=J4dVOl4iMJ_s&02oCOcbvJL&1A-+NW!f_t=ZPTx6>fMS9N)c8B@ zXLZ0aTh2qs+#}f#Al*ATiO_iB-JOC9{@7xHj{={8hWYSCbA3QPp_%Xi=*hCo=x7Q& ztMu6o(roSZr`~&xYVrD=@Hk^^?*N9jIw|moiQ*iUT}7Zb2zL=S0T5S*GsPN%VIKg7=>Ni3`?bk&-xuT1EpgDRs|f!;7Qk6cQ~zSFCU>q0 zQ&jc&;a;J3xaP;md5yko6#z*%w`*zU*Vug5qM#R>i843blBUmIMD(}ZFkqtG@nUzI z^#4?O40dav90_5{MJ%6RtK}j@_D3xHH;?mxF~d!+eeh{cuN}wN4IjJTb#MPGHB~E{ zs(+D4QTVM)0-0a%JtIy!>?&CgeKzhY{0#MhlUCJl{YrLCKJ2PmmZk|6{YxQZiT#c4 zNx~@yK!bf@#X*IH5~CB5^kQuizOe68wim#Tr))&&t$o!U!mQ?^yplkBq-fHdlw#^? zIX9lUJyqj z0dMjBEb}6j3GHVn&JNjr!y=KwmZ^;xp>ZuJwRAtGt6zYuXWn3AeGxwpx^^)+?r8=G zRO6aNba?7c`o%zdT|fGHt9TQ=U+~=-*a0|ZncEzDZvMdh#u5c@NhPU*(_8G~;`P}*cxrx5KI65aLp|{E zHpc=S(+6>K)$)?AwJv^@jJP+VLC)ow_um0H#{_2%moxj#WoaF)y{we~u|4yvo((@< z9MHoDgG-=x`D%y!`m#oRE<1QtVgpqvZ`b@Cguc{`7~UBJ2wDeF-je$pRjO@I%`2h79?=Kwfx4K>TFe9;69Be zC^&&l?g>2k?g=D`{U5U41+9e)vyhPEMi`Gv#JLml0mL0?)kXJp1=vbr19&MsXK#CqY*J>l0kO|` zEo8(J?26=bF|w{4W-yu`ElP(tbBP#)Gzc3%!G8)4-7H!h%3jQP*)H9wdcxbAQ94r( z1+ir}nHLi<@~u|Rmx`biQsnYKAxN8;VEBd}!n@7zTmTva!k56~SNDZ-j!+}1k~p`> zG94NCQ=j?N`5Y6V3n>~VhLpkLEiolfm!0TU_hZ$dH&}Y_qJ;CEgLg#Lf=*fUq92Qx zv>9Z868H0t4mjLMs)Ih_*vX74V3|=|`|72=0RcOb7s)4q!Yw7Zww^$GC$+2LYm@g* zKk%>qI6L>rN$-mr*JRNMZXJx3>jS#t{NX|ycT`hEMI(XGPG3{%5Cr5HJSg*Yn#;k{ z6vrTw9TANHLA4ObyPBQEwK#ouyb;y!q)Mbczb)D8i_WBZt)=n&!a|d*nnXLzS{msZ z%8wzEP4PQM3@%nyy1&9Spb1@$)4C>hsokJ)hU7tTg*1$=O+6XLm?ESL4f`irM5^V3 zsv9>6Ei^h+4fI>pTq{0o%shB}=8p+Jg6;Vj(O{6-4Akf3urTQdslR}i0AGf2X;mtc zT$nEn95Ch&6fDO2pszJ31mUUYw4 zrRoK1;mwZ*V)0f%Yg$w5yn2*T7l<{rMWOCl+Z)e6jIQc`H!IIj_2dD)>#TNJI95y@ zZMIm;OtLglv+FItHfzO@J9!&^92>5I9C_&LBYjwiu_*X^9SSry`L@0K?`zj#2J}rU z0p^JpuDOzPkE07yB!c2I6Vq?-f*NoD%F!%=+moHF+^F;Qa-P_y;%nl3TD*ZS;QfYW8X zv-50P4iCpsqkb1hjr69>gBK5BDP?e@p!T`lAXk&)2E^%kdZUUoq@?aA7+MF4<3~(S zI{NdQOm@(1Sd&@O*yceppDy_$C#M}zq}?!$?xCiUcP0TlZAPpwa_ZRYAzyj%>9l~k zc07Ov2q<|s?d;9rVh;Mtq5)Hs6J~V;krV~DEH{8iO%a9Q2Zh$&X^86Ptps*Ukka?o zJj{7|pmqJq2Zqv!nsRgzip^K_^G#cuSYi|6LxWjV$9J#4ge0>|N-7IZpgug)D|ioq zZXr24kH}T}%_5~SL7rKn(Q=Q{T{6!DhAU{xgq|GP?RlI&%03%6 zS^QyZ7Dm0g#Wbb2A3{95*7M^+Z9vt|3=01-*>y4FK}j^g_S~Ll$FExkC>%^}`Y7yl z0|*kJ9yMZlt@yTy18{;b8#7n#m$Gu`f4y3;jqtqEq_6nXak8lEcmMnC=my)J{&q#7 zQ!dY`iwTDF4&E!`nyP)&6W;zhJ~wx3LAk8+JHJJkeBi^zq&MvP_)IMM=IE7hZwUB7 z4Z#6?hJd?(517DehQz+qyIhx?r6IPV1?@RNS1#O*{>Np$Cct-|?VlruN^q#rE21GPD^`0Vc>zC3veUO0B2TIe>r&CrlaEb1+#SL@* z`H3|)(d~;o#hL|D71<1{{6Kz=>PmPcflLHn97yN6lkT|UBfN3UX*2+8)KQZ&lVIRw zCd5YjlOz{;DiM~(EKwtmg1y7bC>ZN~3#)h%LsX$18nI$5(Z48#AjWCD?)l;Sh`y?o zyOztby@x+Elb@?=l3hTLBC|W6z&@#l(wFfvFeRJ>9i1BB0VeLqx_QUL`50aNCyUs> zOy(`DQ<%J|*w39YB{Gwt-%TstjLNV_tNo(U-u6#NJGgVdkz8d2`4I%AsB^ieTD50t z$Rc(6hL%`s!n#fo%S?h?@sC-HkhA@c6#lmTs5jIg=6LVf)1UvhD(EZw<8nkN-*&2J z(fg#w^)IKVmYjJj%*5W5)z>JnVC2Aac(%;$5~SuT72yh`4E9=JUEJ>&C9Pn8^N+FB zx6-tLexbJ5*`nJHG;5*vORG^}R0RL%_V9>Xt<6a98t|Ud`D=Ef-V7*#)szR&SKV1V zfg)+kW=2!p^r@gr-~R+ZC~QZ(0Ttja&OZe09`G=^0wy$S_$Hs6Qg>ubIjKE+w%3dV zKn*&psgKbbR)2VGYX#6Q4xs@Wm;lYbU{;w6D)qs%sDuS+x9{Ma4Z_WlTjOS1B39%b zYnW&+088G@t_$>(OM6{3NzFT;dy=j>|8~<^p9G)pH5Q~0o%TJh;*xJt=F>zBZ}}aT z`VG_XzeXizXabTabNeYfaX2VP=at@wYoZ+V|7bn^c`rJ05{^nKA))xEi<7)hC2*^{ z-C=TVLe?p2OMkjT3Mp5>w)7IUt5GB1ztLO0KYv#( zS0s!$D4e7j%Y^m(=9ar$dxs-%WM2l681T195z)u^X|0N^EBX7-lF@wwPCPhn*~ltx z{>uLZhfoF>A>#*LV8LDhXX2sQuT;td^zq%HfS0YK?JxD2Po04nixOWALZ|rc)WulPY*n0FP$9^ZDr$THtnxJ$zdW_e*BL zR+WQ&rF-@g&|98>`4^VGrl~PMljlyffYBFZh_L`E*s=zqA!$80!_XcLBJm~OO5eVl z+P}S>gobTfH~|c98)EP@X*r^^vV^O@EYB4TZ%k~Dz6X9fs;Fwe@{RC(1qA}11S!>-B6~Sz-*la3kabPEW96x;0Y;g&lFPu z$^E=g)~mTDm9e@8B4A8QA1r7OZ?y1Yh2qSuh15mHE>K=ud!TBMAoy51KC^!k^T9UY zu~&*W;Lo3U)ibvXBo|S8H*FS{em{Y^jx^t_J>r8dv>~=pUnir}`xUdXB-I-E4;}nq z)okr1rVOGh?!lUIpkGa?i{!^mQ;rzYLxT-W;*~ug*K)L3A<+$?Z(btFwG<@J4G^Hy zjV6Fa$w+PTKTqy7P{)VMieR0(Iecf#y>lcm#Dn)tdO!8&(wp6?4d~qEmN;rPw<^@`l?JGSDVJJ}E_lT5v-)F<`7nv?i`MpB}%^Y*(3e-Jfdlpe5zl6C~2aKPn5#wBFi z-W`#z#-NW=;pv(Cbgz`S~@pb9DHx99JX&)rz5lwZE{?ITNmz zv1r4;(c!eayW(qsW0MCKTeL}Ju3)22P_WP@|5NnB0Yzy9ADP^vfe57-`BR_P($hG2 z>pBrMQe_bsQJ_xbk#zul)CJpogEiD%VxrY+Ij|2CX7O)XXk zT3}`Lsp{hsMd=RY^~Rr6A95KAdA!FIGYZFLpIZma9EMza*D*8xX20Z2{g-fWLKft3 z8SvQ7+B90+WH?+yO_uz`*zuTz=7*<#yvR_<{FOR*XK{a)yop1z$7SATq!km?gZ}=L zl+7UFZ$cSZ$!GXj9Q{@1M$2SPpvd;yjd}0uY z_l!gQ5kN55pIKTLD%CgaK>L_(oXz$SWEmLwkuTyMMMc9;H{?`fKXnd<%BnEDNQyo3 zoqBHt1hqP${g14&0qJ(VtkMZCB|Ce{-$Yniy?i|r( zZFlF!@iXjqjh|knhq&p14GdK#tyT|Vdk7Z0=PM&Nc(ByI013CO8n*>tT%hY^)Nf5p zY1RlV%oDUNpYy1&)uStvjz=5s2alV_^S_c4Qysd}2(H9QkgaUvY_m^}^KtOR(|gvl ziTn^WL&(u{3|UT5HA8DZ9DL7(4F=`SIQb@ooxSEhyHCys-DjVJ6Qe7r&2#CjMeK~ zZ-mQ)P7!AziMAVn(elcO z8~@!a(@vCstFE}{TdBL-w??I5E`@GMK9a({npbGvE`5h)AHarXt*hel@HY|Cj5zXF ze`1MwDO)jSlqqoARu^ORL5aqkx@$ z8n_)X;P`@%0Y&n4S&>HGv8Ik!O?!=LRpwoUs9yGw%wD% z)sN5u#Zv?$gWFMcEKdSxe}9mn9%(t9pWt4EE8F?0S=YL{N{5679yu zqbu&zQU)dZ_jqWtnj4ZB)W83h5O+DYP9>|$O}xin*m zwo=cjMw{?bLS5UxO=$!6RCF6-rdBg`Aw<5|J1oj}Uw@oWSx)i9NL`9)l@=Hsb7sWhyA6p}b zE3tFdX$klBth$3cTX57TvN0*&wV? z6rDp;SBOv-zn9i5E!kG+I}k;EVfLirH2$)}mjIc3n<(->}EZ+*EUt0D4 zbFmk5{82W*h?kZme^q%j@p>VdGR+8liuuqtk?UH4!9wFXfd*fSy0it$i5uy3i6i7G=&d;^K)!M9$}zyq31EAlabJLc zMPIhgq47c0O_n^%+)_WrNaevneu4VQlO6mDX0EZ$H@v~#Rtag!^wncQb@zRC_zPzD zXN}du43x)L#z3;N5EHB1BVyFram&?vJ@J-mZM{V&E!!?AeyLbVa!eM+Ldp;nK^B%3@+e(qJowppU#2 z*O|{~zVxELfX_|K{hYb+{h4jbr$`G5;5;Rklh`yj6PRZp`Hqs}@TW3CUWhP{;J}_A zkZ@oeT9f1C=Oq#=^}0AaM)KduW}>Ny!}c#zQ&qU=vTH7{ky@b9XyDv+Cj7yrzoNV_ zwF%{QtObqMQp^H>^aDJ3ul)ARly+{=LAbp`s&w*uvC&gO`ow_SGF=MVb6B$Ifa<$# zfjpaIT6{XbM>Qdf_vW$KmAvK3r5agCs5Icpld6H+WqSQMr+i?B`&4F31$;S zF#bu_G_9GXj+DuZj8m{feWF*KaTc0J9G^-RH8xCKc!8ia>^$S9!1ob`I&X5fgb@x9~IsDJe6pY8dL;}dgPFT*G*kAY zqp7~1zxc}tNgzw?B@GE{J&w8V-(=0jHSbJ16=zNTQI_&aoS6F(yi{#a_qBs%f{ z$jVC$)O1aR{8!w}PWOs_Ym<6k3HmUIk_LXjSC%xWbmDdi%-p3*4iaTuLbDbT-20OX zJ^G|#N@hCGazqujkK>iRaK{GIXJf1(9M`wO0w9qimLo{{Gt~T;e%ylgk#!_3U69$N zA3Z{@i^%ZPrV+Ky%U>Bkn&EF;xQ6*+GvEaW+2mW>h?>y~rwADTyY&A1 zXxlHo9|_0ZsS8tg9X87Q`0MgsqsQOvUDFo z)NN?PzA}~aL3`z;bF$Tb2MX`2+s3X@V!Hm=3F{83|*8AIn#v#!5lNGAJ# zw7qp$R?XWsI&_EAx_yeTbuj zgyxaE<`Fhm^9(r4CKLy9hBdt5;kP<(cGv zqC*FgvKU_tK8Md-4(XKIer%qb7}?)|uJUk*9C3V~5n{s_a28ADH&*vbjj&}6>3QgO%$ueCJ6 zBoJA&eA-ya=o)dR*1@hean5Ywku*z%O#Q!64$yn#c zHK!PoJ~1KL!25~EmFp}zR2%jKwf2CAN7sqhj~xTY{uK5`G3i61 zqHx78L}XmIA1@gn3eji1tlR1EsvFi2*+uS)cG@nVigE4B((^5mGGb-!*W4l9Yx=*Lf*9^hPah)&)U^ z^S*C6=3cm_ILi?*+GKO%$Se*@)QZ)p5?XzwJT0&{Yrdk8psGW|DGKBV#1YQJBN79& z>Gdoa(|QdA$81ZN?{6g{$DBUvT}KEna|~HX;@3~xYb=)(R}nYTMfZNfb|~U#ZR<76 zC5vG4ws-J}EwJLL+8g^$@~!*@Y;V5jtQ<4YA^e_ir1Vm}MCnx|K%k}ahu1ldp-{tg z!JAzCq+CFCRL+Ck$CsEtX8KG=)ump_)WMDLavtGhEaQHTS=Fwd=5dvPOAY;Ig=K^P zW%>(?b$M;XY?`KWY5s4*ON#_@kR4hlM!HOs(W8Uc{)KXvaMo`3d4rn#8KW8v62(QkePNogCHx(AM&_8*sT6W(bKkTSHHo74?<>}m)Q2+>B6y53uIeQ|g z4O1PA<-ZUW7#gigIT;7fxh2!#OVys*s20v(76x(mY`sOQ@u`E`fYBj&Ov>NR>X)Ex zkR6#UCS3hsNIh_0xlQFf;Z5#{eqDc3oPDDBZQ}bz1o50<>Ch>)I3t?I7bndwo#pWa znI>XcpZ)Ox`jX09Q$lSeToz8aV=hg~{W|GtXTLE%GQYRY>;-HBNJSE%pK`Y*d6`A+ zMLzbpotEGHNiZ4kAE@>`2HJc$xgy#as4a1UA|}P>r>}Z+dV}ge!@udFOg8_1vg=N` zb$R}9tR|;IUC%9PB|7aKf6NVAA9pz}Rl1-+V|^L+`{Tp#1Dc_l{xLD!)8-@}>_QZq zE(@D$nkpWhCz!Fpbac+#Hxyu^r?;i-X`cEd%J4Y}=V&u658A+NqSi9=x^=#HB4u<2>Mk@Sv zx6>^9IiOun2WX@>UU4AK`?D*QKUb{d`)IuP3J>{y_T+g?0gGes2D0@@_%Ij$b=TWN z_mT^m%NpbJ5EH}|D`L3cr6asiY38jHPdCfv1eVKs=;ln<+ss?f9u8=V+ifn&h`My& z9>>%fqT#aP5ou6w&w>R3;jh_S@ee*%S&ZEzJ{l|1-N?0I8iqYxayj!8&si3nr|4%a zVliLPyuv<;zD4jbzvc<&yROOY?ZF^IFyy7uE~(=ZQ%9C=3N+YlcnEpj z_7)6@nK{}_UvlYQe%gO^nj51pyKtVAYQNj?IEfnf4-S>(yI6nRd4>4J>V@h)R|IiK zg~cv(*!t&Acm9CYFVOV#92hNpj?zaQ{tL~@w3Zh!tIN{%-R5&FWM*t+?(Ckul>8dA z-+vfdlEeQ9hF(q&ieCj+YD(>tq3t^;qB_xfv?ww;4TNVfVmk~hR7DTc79*U{>KLPU zJr_g~r0x%xDmhoWyUX@9=QBu)n->VFbgg4@UKla-N+Q)eZGXLdeiQtyoDk( z@cLBe?rEN+Ykunq-r4)+UZJy8ibebg%MRlLGn{&ty_?oUlBb(BbL3J+^FEPRZ@!$@ z(thUgMe&_r>LDSsGEc_T%(v~re*Rq}U?+S7C%pG!%lh<>K^{r z$h1U`A{cv=hZ;2GOk0{dZ?6y~=$j=oD8@b)A8&ee*~50v3IjL<;*$l)&!Q{D3xn_U zH<`9J9!x%khB4v$h*J#Z*K!c@Pvrf#w!if)8;~84y_%<7B+*Blx?mD#T>e_-E*>?k z^0{CV!5FjPl!k+Zr{n8|_~I5b=;w6F|B{WsKw9i=GmxPGH)q=S^1yzO2>MDrx4NJaCGLlW3Y&`w>JX&mL_?~4f! z2pzU2(B_4Y^OMgX8DnZbp0ntp9^>VEhNa}sgzKQU2 z#V%BNlLQ$Aot_S{w!4fMbEz7bjAYMBjk})g zU+-T12+-7>4Iv?__fUpR<)M~bGvc{%^MhjZ=v|y_Q^juu-FDPHo$oCZMrz;>BPUt# z9dVmX-+#Hp;0drN9$R0&ygCmR;lFh|Qt!lSv|_ZhwH4|0AZ7UWLEz%0zfv2%Xv;c) z)_V%9UQSEE^ii=yC77I3D(@2!4Nmuwze8EKgpw^a7o15Qv5TsDtvhCxNWr^sW#;FH zKjv)S*~kyQpNf7~?{jf?ItNjB60-~4l}(AyzI>yhCzKz;61k?{YaOAD$PIr%ZLWDuJva74qH z_OD7SzF))5COGFQ;CcRc8;R^Bh^FR#_r17FNZYUp#S@m3k{pOwgeH$`Y43w!p{<+Rtg=S{iYX2bVMISxaBL0Ozt259N`SYE< zLqhGZZM8pT`YDAsw-2ORZ+Y0rIfn*wd6n7gLcuONYzi?FpOBj1k$X61#RGyv85!++>K%n=XVNxw-{x%cd)S!_Q*lVSu0DlbL@ir)?sPoOnM2+KY0V3NuWhAXb|sDqn?FNqnc_~0?xTGD1Qh)|%s=dk0Y zweChL#%Ko_oE7kJPV>~waV^a01uox&sZ8}K)zdmmoE;g{=1C4`5!Xvy+qSFM?Y|VS zWEj}PnDtTHCp-D$ZH%fjlKUO@GZG;on|9EOQGmFp7sY-&{5bW+%x|>^gA*C?D?HqS z_$GVjXb3;izs@e(V}0EpZDhfOE3Dm3ZA-MiZ&(LjvwzdonQpeg>>bN$atsP}@7t_xdc=XY1`eSPc| zitX#FJP`eOWnW~Xcxt#tdL@Saj2Um!I^rak$C=BDQM>?Olk6xlYxy!hK*HLrSz$?>dTtT z>6?Y7tE-tO>Kuea=Y!^NBd+@~|vL z@e%1v4i@HP3(MNuy4LdZpSFnaFM7XGb1sTEVIAa!f7lPBcr}hxE;-8~=51tS?ppm| zk`N&EFMM6U{K-oxA2oc|O?64RDdD6>y(3h$x9e!t%aD2M@b;S_saS!*t|GfC^VyMF z&4_f+s+90j1y5bzZBWbloyrD2hd_)K(Q7nE&k|hqR^SoE}#G?pJz1*aMe~6}V#ZCCclzQ&i=~2UN6h({!yOvML{W{QSBx@TKa~RkedU15qaZ#XUgy{&_+i0{TJuiF6_O)c zMokG@?;Z67Tass^^Ack-qZ*inYEN5ZC6v7IX5iY!e_4< zJ7diG*z)9PIyqePA>1etXf#r2lV}#M3#Ar&@2r|b4UaD@=BH?Q%VQ#}mRrE3x~3Jd z&X8IMZ%>2mMJpmA`NTM|{qeBpfTi6Le*AV4j=KK$)_pP_)P3^k!SdC*lat+cqRGhf zXOxF$pWm&4a&G`0A^bYzC}&H4R*wK#TFu~%ity(n$^LHPLVqae9=RT`%H9jG`9SQ*Ur=fmpR8OA;<<*PL+2Pdd&R&lsw*FyC zKI7_qi)lGWH=p&2mwDdwGAQNg#~1uc^yuL)U@CAHrU}aNh1*Z2cJ1!4wd}9CBMA9A z54;(*9~LaKBm3+|c*%2%>Q)gf8d(u7Cnx&a4YAWb-TlI?^tgUcZ@TBtxwq{jege%Z z0xThX*#NH!nP#Ne*CMo!JzDbx!NhJDqG2nNeUvQRSGdrR!1BYwBxmevpWs<>|P@9a?=u$L-M z&R8o0HkiqufF)TV>^Gmm<;JUR8E%MsA~j6ZS)gP-1*Y9D@>T@ln#2?84uW>OyXThI zzQK9wuskCEO@DTc3hsEFPu^e*nWTFTW_+XhjtV4EajPe-2{vjKYfSx4hxfNvp}vJl zE#(|_;Uaf>M zh#$vNWpqxn+YRfm!Al9fb{gsx;^roj+GNMJ{%)I72`Aq82~VPtpb#Z>!pB?~F6JeK}a1xd&`@R0gu7LUpu;B?B(&#c+w`W7*C)~y4<#UvOA@ij3(T#6Gb_fyJaS@&!( z^(~#J{ydZi*LXEu0uK6wt;*^hwOB9*F!D4^0wHtg0P2*j)yHO%k+^{(EkP5LlsgX_ zaUrvpT=>_2q;BPS`V9!2ob87C;Y!1lAD321#XJd|jqLqAex$#-Z(5$K>Xr`g7Xg3% zigxE-FcTf(B%7CyOV#kX%A#*&5X(pR!=C{OtMp=u`G?i5{!{+vcj@oU5WAD$kt*3hh!N+T-EN7!a$mNC?><~k6)*q#*R==eP%~ zo*zh^Bdp5%B#z;slCklAAAEkuA_8A<#e4GM1 z%8!SFHGa@gW@A(33bB5jsO&)B;4war<_w2mn64zLP}FL;f4N=k=(-i`CIoxL9$f6YC*!O#y>Mk} z@zSBHp+wU%Y#@@E|q{vnJNEhq9%O&mOKAKIec zX}HdGk_?dlDzVxdcqX|n(R&iFCDGhl#&Y5;4sC|+$gg#I5!_F=w`lypqqR}BRcIV` ztnU{)zjRjTdwt8My>$KHq={Lr#=7%(f_gHQP_<$EyqKAZ-{FTg=dB1l7DLp{76I({ zd%+6Z2J})k@Qid!GWQKsF`6yV=Twf|;up}ra{@jMHKflXGCS{48%sr%0BiR@y&?mdaR^r`;`ywmr%G6K-1k${tl;Iz`o&3}Gd`!t@@b@x>Q?2&uS z*xeIC_dgYT#eRZ&iM+vu8eVWPZr zD=jgjheN|0yjJig9?D_!k^|zoys`SrRvNT$PxI5U)5tJl+Q{JS>*-=ngxLrCAH-Y+ zI`C>O{2oh5fJ2a>7OdQ|8<5}Qy_isQ$}vJ+$(EG2@{@`%E!!Iz_(ssD?t*fZ8;elc zi7J++9IQ_eQv2n8Fzz{%MbYf86mjs+i9csN^ecQ^T+7fZfX&jX`npmddst>E+I|56 z+&3GBWbxaV^bqrMrN0yH_s1t*@4-Sn+>Iwyj-X){34IoGiGjz&f~%Liy+>{+to6{o zlFt6T!Y!KC+@*vSaTv9;4v)g|*6a5Uu_MFW{2L!MttYQywb_bqWTs~t0`4_|%!?{m zIyS$*K?KU^PeOXINXxGi5@-1^<)bq84=fU~OZWpye+0S~h!#R5{sWRdF2!P%Uk+`} zGhE(8V$<)pP_Nekyt>=&Fb#Wv8ZLzd5THqCVrsoJKjD|na4_W=-Ib38Cb8UVxV`na zv=RX(-i|^f^=sON*sSAp{)j^*@ z)ST@fL~l(-B;>-}w~Gp5f>1998LelOs!wQ4%hJ`uWK(E!uK<0P5EdZ&QPoL7P(WD6 zI7nR;)56xaJVRW$^!B)r503{VUBSa45Y`&rJB8&Y=rLo1KzgGPz0W*E^TJPK~6 z8kRI&cNI~KGxuf?i{?FvkW=)TeO3`ZWnneRq4Ut@Jal)Y?QwgohzDz~frCxIX116p z{FAgm{%$ksl*BL*@pLIvp)lCV?&lMBO!>L0KcRdV?c4DQ3E1rpdB)HL4K+zdJF0{n zyGq*ICju~8IJmwu&;nzK`$ErJE#o!!#2-=@d-DN+=RC5Phif2c`T7JeJXW zJjx5pKypGTM1mq@MLQ%4;+7zsg~=4dvqKeOFVFmVVQ-pZv9w=bN#AG8YO83y$5}Qh zdXDcK;?ETZP8CkkGOOUSvnlcTQ5x`h1*EM5<6<99|zlIlX@UCcoiY}G6XEnUQ?Pk07 z%zGl{#0D2rs4~UijMDK_JIz}{@g^~c0`X6S5^F+6haXq&yS@*uH9|;Lmd+j1aF8E{FG^3tIXqT{dD=1sJRjyr8{sG54!}ArF_g; zt;aPY!gM4Gq&o3UskI%-=23ReVUvKS|vSn?ydsG`uzg(VK;4#DU2!!d0<#TQQ=62!Xnum}YvHBU}( z)!YG7dBZ4@C6%l8KU2a`_srKT#F(Y>y*<{fUm`0to$pflQF9Kzy|if9-7uDz7!qV+ zg7w?7LMY38 zNk2E7ieBx(nw*9vW?>*sBK+BTXV`is*sP+^72;XvZk>iCn(coOaP&un-CQ#CE|2&#%cj}EE$jl*Nw8U$Z>{GK!(IhCO+<@>N#t_Z=T)Evn$GK2V)oo*827CCS&IrK*D z>J7abPz#*5B5IGaWR6hg?Gq;M4lqqF`D7$(w|c@{K;b7~Tr6jMNw15igdOnF3kc{e zC<-M?Qq8z5+XP46)%*n6bHE5yFNU;8@}b4T(U3(3iU(vX!j1FkRq+b$b{D@ecV0#> zp3!#{*>a@)cT90hA?=7IM$aXBbd}6m!oTZGERqITVANStf6V5#IddXt|kZ?V)hskJ83SEaEIvmrDW@@pHQ-S zb&RqI_W%P$ED;Hn`82WsgEq8lLM4ID3sGZb*Mj5n{c|h{6+rb2$7N!ij$JSsTDq6C zddsYM`JK(pb7dTDa;YS{4hiYzO3kD5X=@Q`Ket&Ee6(wWOn6!#V{)F_>O=+3QT7|s zhwg!Q0(gNloM}qCw=AR(?G$|%1+Ux|m^~bghs_Xfu8d#M<9_UC&(Q2G>M&C-V1d=$ zWUgs{;5UtH8?+J9yh=E6QNrdL?si$=764UFcqSX`+)M)24+1O*^g=02xU)Y3K00S; z$3K1)pB*4aad)&)dUz)}6R%H0183|x$lYy%1X9qk?0N|&6?R--9FsSz?$_qHcZRC! z`{?>NMTxVUjW#Hke0Mx_<;TV|%=ZOCF(2^YaXc+989zYfkGBkhNBMXzJ92#&uteviUX3=c`1 zfvy{8?85YNOH&yk<6%a_$-c$zu%GgbD&t#&*++B}@N~LGQCeaCG_Y*ksS()66Z$X` zyy|w5Gm=IIgVw8&qWg78jk*H8NNVO!_c&B$u`|E$P*z}=7hq2kdSPNhEyV-AtL6Jn zcS)sU0kSDAz~TVO#B)Z!))S^Za+H3t%1zC{p^l&4Wju63uz)kboXB&+tK6G@P(|@R8@_-aIA3-SZcizGZsw= zG^9^9^#)!t3b7`1gB)se@XYgdX6_q1q>JwbH^goSX4;4!`evBmtKNK7A#lHPE#vt< zBV?VbnEVDyMupxr`rxRC@wke_{u}gVkSVE-kk!%pHcu`25It3MA6<`=SG)ekNwI5w z53W;DzSQ&+ZL@j@RKwsK?zkHIx7{v$b?klKD14$qQ0TO16!TO;>qK1SmLx>y$8jqF zym$WEA5h!Pyn|zJug&pcNoW5D@DN6vKg{oI9%QLrpvv?F_;=G5V0l&bl5g|_l zo_;kGC|LjU5RPIBSwQ2Cr58RDD&Y?-PPd-!PL*wcu5R1EU8Ju+`d;Ag&C>16Pdy+1 zuwWJ2l7R-XYL%^Bp6$KQ`(jy!)ZO>QdxxLZY7TKUFBT_YHfR=M)lZDPzErW_Ab3<# zJZjx9cf^FuZ*-o2+OSR1Fa7feP7F$H@`J6Mg3pQte!>)X`*VwmcVmo4Yi4rDy@A+8 zKU)KuvJYq28I6y65P#Mp5p=!FLLOcDSzWG?7%@qR0{1r7akqUhE&B-on7{AO2#~n$ z;yd(&%A$(7maq*{qhW9&4>o5Ou=>6q(RWa7TSoWSlEuRcr1k#wQBXT-jL6W(72#%St}&tW{dgH6v?ib z5S5DEcJtypY@67qvCRX>pM)AilMlL>_>4N^~?)m}6( z#>#Lwo-tn^JgXNgm`c+NtG?(xJcY*fj979aU~(UH;v6BtrwcSSD56G1ihx8^jhDcf z?{=9_V;!mfbo{yNzUui!kmes6&AU^#rd=oMhm;2b58ZpQttrvZ$GqO^ZBR5IkUzA) z^?v4X`5-B;;8orWdC`oCA7OZul=*pYY2ehyfCAi#^4TZ_{CR-;9Eyg^>C@dYMa{(t zw{5$gi)*tvHR7-5dhKN>8S!eIde$d&6AU5SXw4Rue#rzL_GOI)xX5`ue!MS_&#Id} z&Y2??j2gKmx0(2TWJI74)n*&d7L(2NiaN#p9%#K-;^;2dmo!cf7!Sj(2&lD{%23GA;s*QH@W_+8JS*P*K7T zsT?1{2-QQ<{td}97L;MgAR@*WX5_En`>U&v%*ko>XUXdI2KuRynk=nF&|S}3T;yY!}RMB72G`v zxj{YOt5dDNIg=V9<4m$V-+TUx+U5Q6bglg|WE)5~5iF_`ci8a}c^Ip+Piz~j35P!K zn5oS@ubV$#dHVyROvHOx!rZBnr@-~%PkqvU?PH5#oYB4#4B9xH?cgTKC!=|lt{+v~MoOQ}4*+7n!E`W16uP#l;o{o!avqOxUQ zb}lT0elvR|2U=t0S$+MClCm6ES5f|FbPwh7VNl4PpvyC8%97+w+Kb9N3k~SCRn;0O ziU;k8;|KQY^g$&3tH{ikIxZ zY)6Oiw%qt07du<{);lHWN6MyQpZ8li-#m|!YyLfJe$>t;62zpvV87pm*D4fK2bTsX z>y1vY3r&a2R_bmj6H>OTzeYA|S<}P+wKixXwKLS?8)U=}$mdB5{8^w1b<#dbx3S$U zJNZjP5jlLgXm*R&tW|+l<^^W%~*b&hjVpyJ;%pZK8WD|YTAonk` z%l(t>`0DFb5z&1Cm_ej1s^!VM>;oS)I!M`B>*@G8YtUOzC+xb5ZY)_zlAC3y~e zW=^!^h(Lv+*ycmLU-Scvwl{Va`@D(q^&492){;*qw!5Vu@Cd?6=A0-0B54eN&=T(S zw1!biE$STQAf}}*V)%vlr<3PFUG|NthB6@nP})%g^>!_MN(|~|Jg=;#qigAO47L0~ za~+4r`RW8V1fBuVODf|(R_tnZ*m$6jOo6UnpPW;CP{)eCi^ZQwSXAMm%hFMnrTT-9 zJ)|;?+U65UBsc%+p zKzx(wD~{}&yGvvA_je7odq&W(CwJ3lLeI@EDIt0}3al3P^*&1b{@gdn^X*4efg*y5 zRgSwwLGCPwud&k?hjYSxIZ_IEV-(D~^NPtzQ8Ov98&uI+ZLgD5d3p4i6|hF)t_xQZ zImlEJOZ*-N`d^cB*QzZsD!_KGBc8(a)pVu{Q$h^r*ycL!D}gPdnXbk5o=d)?9M9R5 zZUXZleYEfSTz(7UbezTV(U@oy?oR>(_*@KQ!Q@X*^tis#p~P|kHSjI(RxC~(`o*!Cqw8BZw0{12A*N6IP(Tt9pZ%9aXdW&4SIm~GVZ8Z# zicDHuzMZ3#E6$@k;{t?GC1EN_>#Oqxy{b>hE}}VsjaMo~TQZ@Vr?*jc{WcUbL-ha} z7g-K%*DAA@o#W{7^Thw85^A{3w5V!6D;Mdm?u!=D1s9#qqqzSyEk#`+RQp{5Tjtq| zNVBeNPW#bp;nNwX*Qn3(TqE~iY)_WwtQ#DBYRaDCAMF%AbIbCA6W`ml18Lah=Ed-H1ik__>wgDv$k z*DNe>eG4>hnYq;%s=n?%4!KE8g3MAH<^A&78=r?7;#Yr{Ps28c_Q%b#5o?&waNCZY zZh;O7sch2wTKIZkfvi)%7oW^d>(zs(>PP`azrwt<$#krbf~4DbyXlQTiVX!DtYg1w zgdoUgWDW!9q$CgC2R5xcY+DxY2Vou=8D^@Dg96muOzi;ut7 zBj={@)82*B)8boheYr}LmJc3Q3~(66_tXhW@)x@OMJX2U{t!X^>bK##QS?vYqrtv!a66o< zbmzSL7&{ZhHdak?f27Bm?WfwEP?0wa|S$4>CGOD4d3>0;aG0H$OM}?(b@D-Z@Xm!Y8v+BM-PeFAkMk z!|=jFeG$`*R3I`?NW=MX`!Zd}Vs+L_4;{Pzhu>zqj_U#H*Q~Cp!H-&HX9GMpv+15v z&UJq(zgphrS^HXwW5xe=9Wllxau%d`wzIoCQdgrq&L@lp)A2U0OPy^X(ew)UcUP|o z#+8ieVhvMcvUBkYm7F2h0Kv>FY#BmzL#?LP4tHmdI2E_|);q#njtN#6WR$xER!l!~ zFv8zbj?WMO;@<(|VZ57CIZxg8+YxvTepBqY#tFNbtIQ^eqQREl9qEK3$9-Od@7UDq zCw|`}x2o7lb-iZTI6qQDVXP_$aO1xdY}I1m(&$WHITgrPuvKF zUn`wCp>~FcjaaUrGdwP7>sokNv%7tg_%6fBGS=eh>w`7&9TO?9b=Wg)e1hfxCYU~b zBAggz192`DT zjhjwP&$N1exC-Crg@V5h)6V%zY|%so>{z^y8`ScC=9OdIB+(ka6fZbj+hV3%G#Pch zB1|8>K*Zqa=AAD$8?JHdi%Y_$lxnD}+x>j?R1QA*VxUqCgR>7Sq*5~GlCzFCm)%o^ zLqd!}RqE`^9tA^kEYFP#kL$jsO8e<;FHc*3n{K}WlTUvJVnTt1ccW1`o8#pAn|pPh zLtLhR8A@^_~E+m@B3h-w9cl@2S! zu`^MxGN;c551pGl2P!iDO&hn4>gmYgL;(sLNq&Fc67fb;_@2y;00Sp8HOFK&)LyD# z9-SBD*{Ih?W?Oj-1=3f}Hyb^9Jl9}qxg+FmyFuV*CC+7xHB7AClmEjB2mMUJ3KY!QuXK^ic4Z%n)fsSRjHOs=mfkh4`-%FHad*8~9ey{h;&)LI&Pa{tA ztXY5UO>^-LHtu#n6Ww&LsB?M`DN@X)XZ~FL(DfO#T7$&s)ey za@F{cKE4O2CijB(KPQ2F$_P--m;jnN z)8KPz7qH9h0ERi^K)-Mvm>2y9;+ZQzxnvuN6dVGH`ePtbeFNmnPr;|kQ=n9R4&>`@ zfJ*%hFfLmGR#hv&xpoD7t=k6nb(=uD`Usdb908q%DJPS`L9@+YxZ?JO*FeuYh&;4RGqc0j@*mAS~7$L_|b@ z=-4=rkdOevQapiIbSel;%mUHB3PDm%2}n&%1vxo6AfvDh70}*o@z`OSxMD`zon1KV}H+&5uhE722&=H88 zJ^>M9w;*it0>u5k0qMQVAZvINR84Gx)UjibIer8(CLyDr-zU)OkQ646&T*S0J8@-V0n2NEN^Us?d@%_f4B#h zj&H!p$qBf*x%sEw-`(B)F_NinJC zmseL;*H>HgFKGW40!cB8TM+mfN|>9g!`I|w_buoDl4QKj@q5t8;d8a>oA& z4E_VY5BXnreaJyc`9I-fHldKOZvGSYKLS@Ve3VqL{~mq{r1igQ{8#8VSEU?W+6H5B4t<)F@ANTTqfrs=zUs+mA zO-V|MNlDp=fAxy@Z=nOQdHMfnf4-5Ll9H6Nd3By3NW=X<;r~nTfAzY5jq9sqK|yGT zy}!9lD4YJj?)viQ|BOHXfAsk;x$DbRK?!JI-M_hv{eQCS|0Q&Nl_o0j_HSqaJ{g5g z9p4wq|0Z#Lxg;j}KjDo70s_J&jvx^zpZ_Ctxg;(r{P*zHtUWzF??w7|ul_0g*Ed&J zmrL)ZMgEE}SF?t|0rxVVo*@&E%)QY0$|q@wzvA=N!vezoBVpocVq$3B-7_`YQ>ZBO zcYKz1SRmx?MW8rLAOS-|&k&1RMH#8uzeSK~79JjcFA?}(5{8D>;TCm@veKo0!~gmc z0SWvo5)j}4v$uyCct*4}D9K6}{td5b*#~`=AQu!A80c>E1|9v4okw3=6NJzCE8e^B z{}%AIMTdjjW0$_}Z6z6*?7!mMhWh>^;qQorfbbmw4*A`%cd@dZOvYdF-6Iell8B7( z6@W(|xrs$Z)sU0>^*8*lfswxZ82Tb3U9jPipo#aVXhaZROGZxfZ}{Aa8R+wI zA4jC)Lqvk~o2Mu!M1Eea8Xx|Subx|&pZ*u`gz@kJ>CKY|4>*0TTD9clH2xNT_1ye@ z_#=HI!zFka7^FAPFdjL1Srn^&_@MkZeCyoIG!*_cC6A^eRsxBP8LoU7UrS1nC@~W#K-4%?d&$M z?g%#4|6BghJ8HL0`{%iGKv92L}gxifYQI z7Urh1{)S)w2Y(;IzdHRMXsueywCMhQGX6I>*giOeA~=PVg5vl++0`++UZ|pP^lf0G z?63Is)3ZN+?p2zd8tWQuYFf)w{qXUlg7ufb!@>H&>FMt5?Cx&U`ubXRuD1NgdnfL(Uc0vTKZg3>{?W8lkkjzrp8rq$g!(}Lbc62iAy9V+@~%<-^%wr* z1B8E`F96&>e&c_9h(6svU;oFy`2X2I_)qx%%?J1KL(l)e`V0RFAM*cs-~Z;i$5Q!J3R4+DmdK0w^rJ-fl5;aAopql^Z^}!@>>^p8Po?DL;C?$=qR9u_~gr|8SpA*9;tc}PJmF{Fc41|0n*81fIoQ-$fu5j z4{4LYF1H^z=Jf)-j1i!dH4g0ZhrpNOY2Z{e3|z~91F`INAeFxZJ{0W$rP5s>S$YQE zS6>6=@&lkycL$UkZh&6t8Zatb1z)N*fMwYNuxr=>IyJ|@qTvuI^vnT`ff-;vF$okQ zo+RCP3=|-KsM>f3)SGU>m);HF*s=${j4T4%(PiK^xd_}w|K*VS?Uz6s!sxZ!0sYoH zU;=ST^Ugcq1o6nPJ%_-y;{w=rUV^V(x4^as`g`v!@QF+S-y(j1?`b|D=GQmiTjv47 ztNegZR5A#RNd~@gnIJSJAEc+JgN)2fke!_k3JMB9QBe`7s;UAF4Go~6ClllhW&n@E zKHyg}06fdbK}f|Q@UEN$Aq_Ji3gVMLAU^q{VH`x&PlBSFCg4%O3Zfc+gM_9@P}AHF z@*y6X(l!lpI(~!f&M8pRIS#72MnHMrH1KL%1;I@VAgp;2#I!DeADt^8yni1A&aQxO zV|yTCejP;4>;s?P1K{3$4q$!Pz-Q(>2rznrO>n%(X0+3DTcp6;HR-sLx-aQqKYGra|r|J(=4W>0{cnFF9Q0s+@9!Ci|BnbWvGezTjimbsT=M@N;eP=^7Q#~` z9?5^gXKwFb|I6&S4ZtV+5BSo*ZK{8n7q>A11f>4~Uj@~Af4h2n|8zee6BS5E@gMNp ze^K7A&cww=#msyq0{vCtAL-w45E7`4r>8u&|1_3w|Eq0(>v{UcLG=%60N4QW{og20 z^PJTGglA~@j2?ijgnzZ-^<{~R{h#nu9h*-!KBLEfjc<_gvBdWurc<)+b1(f&V{D)g)&RclW;-y1Lrh)*iY4377Zr@$vBZi(zG{ZS7nn`5*N1jsE|_a51Gr zp|S8E;QtR(Qm&=h-`~&A!weQ243f2}U-CcTDjhA&&CUK^v=BkTP?+Dcr3CW-!C+cf zO9u$S9tQg5H!`YIwv=G*Kj7UzC&oKFo6X_i6GGv!Y|CVY{sTVQ)z#VAS%Z$07=p;+ zRW2=*@elgmpMMqniFQUL3^Z&9yDW8)f6@=1fz-~)iHRC!945zxif&KMe~<%5=O6@7 z1rzOcb=A2=Kga&5njRcqp8c%>)XLVX;uMpPqs4#F?_FG9U!G45jr8{9rwEH_85REn z4E#Ah+Fl3Ahk*(MQ86(gg?~Z;U}sR(@T1+>RGa5VMWugo_Ak_fL47sliqg&hr2Bt8 z|ChS(egP_i0zo>LFi7tae(wS0p#LHNTmAT}g8ZK{3F!KN=6~V6f$%{&@C~Hxya6!p zZy@dEZ~CjJpn@_fDF3&f@>e(cuk`o$f1T4Z0suA0q-SP_2IzPI-~$f|z{iIH5X*sX zsszfa06?e>0602e0HzTDkb}&5S}_2i0O>U}Qg8qxDAOv!0YdV)0G}!@0A~!^`(g*$ zMQjhEu?6W{t^k1G4!WH$s0;)^e{%x0%^LtPT;KsROL&0A5f`BLA_n*!X#r_~=Xh-B~s%Ha}#c9bk&8KD7)SBL@96;gm)jU1p8|13r~I06rz&fM=s8;8X7dL`1j%A(3uCWV9O)l;H{_B?SN(C9yzSZ9I@( znFM@kN(71<^MTr~YM`;L8u;GP2#n1P1JfX%_WbfJu)Mki+#KEjw-@)oi?FFau5&@U|phC`gJ12I?S(2NEVA0|NsGBcg9$V4w&(fRUkrfk)ue1DzTe z$iu_K2vfi#k}9id8W?D+sgfZe@KPY+;^Jb78W<>HfesLPd2n%vh_J;C3{*fR4z8#) z4n96H-rsXPVqzQ|DS!l@n2BMw(xasJb38X;{lxAdOVc}$E zU}Yoxx7$&gnTuagP>_vT>fhV~fYb*zwhw=C0pNiI05)Mj&I3^Ru^^B<{G0!$^k4A5 zxPNK>(nhN&Nh87I!-Hs$WMw4O{w-8N5*HeD#o$x9B>?<8s+m{zNvC%m)#AtfM_zf$ z_1)9v4th*)J84;NoQPJ@k))BmvS3DRf;d28+>NZbFBd{qsQ?A zKiqFu%T`9YKu$0t(0>M%Sr{1w{NG+4(-Hz-cI2(5b3gi)oZo_~eAjA21XRa_{hzrL ze$NY^wpV!GoV+M1$2pmg6N|ycu$3BqE@ZXPWo9V(5_BEfyUDx%+ZE(Eopy9|WM*Mv zs+pLY%6;E8dfVMjd;1D%>Z9$aO|bm?Xiq=S-ud^R_XxsuQ=|6sA7jR`W%ZewZoE*| zpYeg}W}bc4(gD8U%j8*}YPQtDr7U)%w7yy$_3X9fLt(pEZ;yb0w~Dy9xRUGrX%^q} z>A;In61Uo$4S!u`1VUp#=P~sB9Xq)qa2Z2-qm9f7_4NcgxkByl3RL@wx*59*t*=oTY|NtJs-AGB*$OoThpA zbF=dD0!8#u3_-PZ^6n;_Wrrx;rTz_z?&V3)8{KGY> zb^KwaQTnh&y$O;GQa1Ugt-DMkBo!2FbUITu&L91<(P@9|?ib#HyPbm!u-%ncssw6zV`F2phjV4=0oUAt z*S{HF*FJu665v$E29OPJ> zNGsYhCiOI4PJ6<3+k1#n8w#&LC@Q#l2o9VWZ6Z7wrI-vV__k1(7;Lbrda5Zt&8p5X zivdD$OP5i?@M+xTSTO~YoPPY6`uGM$x|j~P76a_>y8_cjgrGi!K$e@EmBrWG($ezM zhrq(<|Iklj7*Nu^I{wLKEEqg!S2$oA2Ih3}rEjS3o=wm*wW6hzHl+3&KbK-VN8Fh| zlxp?Xem5RP8E(!S!%)I|V4a8XERIatmIbyOVI(GL$_Lo+d*b3D1SGMY88Aq5a5TcO zR4~FYXfSY5I{wtII4nA;Cfp^up-|)L>kA9}Pu@5@)NYD*VoDj;{ z+|1ITbq(Y`1VGCtu)b~A?q~}|YN02&1#J?j%oY`kl@gir#mTIw*zb(98B%){T!`(2 z!v_T+17uuLlnoGZICLYBWLOR0FnB%U#x8~`pOH(HFNuew>dnenP2nSpjbNod^e026 z^zp{J=-APH_A^)PqKB&5aS8C@AryiT_;u=`%mPY+H$TPq&%W=(j~7fpFvCCtE$=s- zBx@P(k>^`~Rx=N+eL9Kd==S#Z(O_@JjKq#<2Mb#3u6tnE5?(iCjPe_7APWl~z;hJI z=9tk@Ji?s4HIDLM<^fbu5$g__3pKDLG6~7rR?lGZke_s7C18Xa=ICNDuKj5`DB(`( zxRH%tR4bO~)DZDXns21z)!gb0RkOhD{D7#2V#Xl~^*si;isl(>Hy>790je;sAFHRi zLY`;8XJ79(0?)p+pXmjb1U8OewX(o~1HXqie9SvtpI`a4UvGYKNPp{H4l%49-s+D` zl0{hdg|~^!=yx)CZanW7xD(Z|BQ8**L`0UNBo8qw)QcU-+&(AE0?_6F64`}EES;L?S5ix#lpk-YM{|%#VJeKVzfRAUUm8xd9bNO&G zH8sVt{!9a!Bs1dif4Z6NM-lFDTm0x*(~;bLYw=i%@d_GF7R5Vo4CR=b44c6lnc2Bw-Qup5kVM1$Q~_f6qbYycSbLO^g@l_+{6IL zr4Y^CAU_ysuY#uzAmEYeM(pU(tH4EZ2EpL(P?lie(y&c&;P0Ox%7@L%)Ii9i=7)>J zB_uOv&^Lrnps(1-u403@)a^%W4IiI2ttLy~dYVFrDD02I>&PX)r!(V^(>!fyzB_8* z)Fv=<;x6q;g(}5$ol~sY{&DMMH5~=OW1}L$DLPPqT#0kSV+sSZ=f`$Zcf4{a+=MVIqA|se+Ha`;a(WJe|QohG~ zblGPij}G9Vwsy|LCUM?T1!s;x7R>fwn_m#{U=9V>cWKF~@8PEGWJ{VP^^w=h2*~kJ zLT@o`_M{nqa)z41^wM59DY$_vQM{lp%I{C~uFmbRV5V3sOy%$@pi`99)r+NL+r`z7 zrTd&+NUNZVX(tx7TSz-~|=|ND9($8+8LE-gR`xf0ZO0iNfw_wA&q z(N!l`?RPUws&%|C>FJ=skCAbLgWEHTQgH-9`h4DsHur((&qBJ4JqjJ9nvDQDkf~Jk zBj(@?&HS0QK`>H-uIpeY#(@@`)mRFEtpG=rfRZY`?ZSsmb?jJ2f=*eKMM5rA3()Lb zXr4pW-gLlA2RFkHQo+_q*%?FMm+NShaS8&E`}85951G7TJfRKZoh1QCj4pnAGzBR3 z?1Rl@-Jwsx^+F*d*dv3SZ5czO$WyvwvnpRKIug(%g)9Y#Q}!R>ojvUAjswnLty)`J zh##Aco|~n?u0IPh!pI;a0s=P`f$u-luA&!dhBr=5u{IdOQe~VDZhfk2YD{8HJUk*Y zGkGOeEXo$mtPa^eyBd+62I2_{Nn3J{;6hSeT0|WmV;g#^=1`2>k(qypk>i6+3%&@( zdqB63zi&}u%LT+r9{A$VFiLRLU|`I+p18q8N_}-C1(absn0g{q39T-^iSS^wbi(y) z!gti1JcHZ8XEW884tz!5?|=LbV*cxc=kPHP0<$0Thv8N5eZ)R&o&wfS@DzNBQ>y0L ziN})GL?!drWW%CLs#(c}w4uBoh*e@?5F;V1V!aC&kNu~3J@?HL1n=4s{7=kSx*C+H zxxax1wuj$k0q41GHn*pd&w&nekH-?;+ubRJol)4(R`M;at-3}=R-E`rrEt1cadIm< zEO`4+k5lxf9U%lYThC>g9{aLm?qP>BX#VI@NuZeLa-ywdhvdnLG^84zV}+tfiODP+ z$RSB((Byt86o5zRJu(ELrtD~tl4F)*W}_hX;21LiQFi)4C=_0}gX7NCT6gICh`6Dy zRLmhEuGBy%SKK``D;k$P>lWX-q%$2VGb`#j;pT;y$t|JOq=-ipIe)JX%XXvW(5EkC z*Qr7#0>m7|D0nC>ct|kE-noGRR#yAn*@C`zDI`xnBXa|(@`{`|d3gZmeQ6OFO%m8SAin;u znnsH3-)MV2Ykz+M4XQr~<6oRoAs_(HjZ2dEovlF(VdfGkYPg&i&b3}M8M3-Y?wvhH zNw-?~Wq-90j#z03=vShrSE1K{yaq-v6}hBRI@zqkZJ85PGRZ}~E0_3jZj}}k3zE#* zSu8$p=$fhkTV5$L?PhVdO4V{3J7dfaO z*<)%E$u1~2^CQCWxcR1$0Pi~-l>h!>z%`qff@b z=DM=~$$Lhg@J+WY)lWGxO#~`IU6(Iz4~UgZ1INhUT&Y@ou?qbOXM{pze!$YXEU04h zK6;Hf|16{ZbR|&6C|{f^gVz@$n+yq{!LwjaJ?fy_)5Z11x2ifu)rm{ANopfnSAp*i znXk;sQOU`M#Z!mMiIx@|SmUr32Mcl%MrnS@_uLht@Pz^|U6&T@OXq@xJ%MDTw>`h> zm|o4oLY006P{DvOgrYzIrd@hjJTUyp{iJmh?3`Q$SmzC60ax!ayD^cfIX-Y-mtpA) z&doGsJ>WQ~c^2)yw_08847~5U?>tuqp5=tB(z8I{vDZt1a`&+AwQ5aB2$dXJn#2*d z8eQtLD2{yjjIKmmILk08haX?eC^p(!N|YOR1Fy_J8a-UTF`|WTVuCd0V^qV4%hXn< zG^}c9Xet>DKz3l8s+_#q?6mmJ%C15ttr`>i2Wfo6%4kx(x&AC+Qvu4 zvELdl$tmP?=d)`5!H@71BEMtSLRZ9DC_i?jLqfxr`l*HHw^Br1x2Z1$1u~G(XboZD z`k)=(`*1dGGpV$3z1S3~1O>$+KhT&mIey8?G?Ax8D3vKDw}d1F=hODuXiLBt%uVId zc6d&z3b6tvisFx+33q)kiKv(U?h^U&h#Eo0H1dR<43}M3kYVpx$2~yd?DLrU1sI|q z0JBf7?`#1ppUi4&G(9xm+L*g8#j<$Qs&(k#Bv9Yne0zNEyYVbEVIg&q{I^rTbwA{I zwpw8aaF4H8)2Zkcrb^LaiHJa>bYX(iQObl%Z~7ztZbP2{PEfCyXj@QAQM^%{q)9Q= z%D`}Ey$=Y(Z&)ek9ylo{!y=cqvWK%!KQ+$C8!|-Rx1X&-ECe?ej7=}~;40{nf?_qm z6^ALr9<*RaYtahl*Dywt$G@Qg9c#Pa`y&&LuvV%R!JKR*^8k@0mgDA}x-eMqko<=} zT}Wnw#>=o@fmzn}+;4lJh1N+>UUj~`J*t7}ON3iYMJIACrCm9OlRvU(?Xz z+}R@Do%*NoM*ghWW_Ax~hI>eA$b>0_4DJIaHul#hO;H9glZax(5jPEUeQ211MlUf< z6N|+dYVnIba12t~PNd~9X4>u^a(^9!b3k9%c$+G>>B*_mNI64nSKx-Z0XT;s^+|9g z-iKW9m6(vFoi(#p2&5T5b+WRfTwc~GTwLuib9X;A3fP1o@w%~lQt^iv2?h&lf4lB} zjg(gYePLDO!JP%b*I>$x9$;#)K^c)s03l=Ir#mSJMbLaCD|ec;{U*UU1=u~(WArDu zzkxBd!X>c`;#tIk-^fbLY2>^ubUK2-_T@xp}9sc&siL zwmV{!ntHUv%#u}THcb^nqbsX$p7wl8dg_zg%>8y*@3j1sIjh{gRVS zh6VIsP*wDb-0`bk0D~J#UlB6ccC86LMtVNF|M;<<@N)b z5(Ba~qdMWj5J3*P@e4_m-Qn+r31iwL2L)?@s(s=kaRmwK$LM^>zJnM~j1MYcVj2O_ z;_x`j8r4ppi4y5i%X@pyUz@47@9m#qdko#lGLb%J#RyTKM>^Ej8G=KDA@bMmyv(oa zxM(+Y)=%s`9rZIXFuY&G2wensKj{e>rC0v#ybmI2_Ci5ermSffs$K}j~db!I{b^VchSE0*KoftInTpIGfbqmF%mLK$EinH z9R(|BSc>NKFD42fqJWiH>8(;ShCMZVIAJ}Y>&P7{<0zm|jUCk2H~kFOLTGvoR*GvD z7ftMeMwm-4Ug;rYgKcx*Lx?AC_$6ZtdiJJ%hiU$San2F%Bje1ioi(?JPbjJo5a;=z zqn__9vy~)9N=YlagdCg*APTi8`(<`-Iqnw>%OZ_33T5_sC*XZE8xo97=SkXDA^Tjg zVz1y&V3pk3Fym=olha5*K+qj<-g*C4#ed%6deeIG{UiHd>1OqQm@sDaLK1jJSM%pq zwotZ7qKdNGofV8eg;WC4bgZV@_DK@=w95YbN|NPv0Jo}NrA{kC59)WDCJP3DtRWI! zgt}CUaWiLNyi`B348-Rxar%fUd~O{t|av~jqb0lS5OTpD!G>}G096g+jgNqfqo9`CD@ zv?*a-MqU5s5N@ia`|I@}T+2fGl7Z3d??W7;m&}caxQ&Oa#V7A}jXymgPj!0t#ptkm zp;3x8k<|NVDC@XccqS}4o8tIo_g`}dMcg6>8RH~Jq5U$LX~NWfo2FQ~3HH5hbwrWh z0Qe-L6Lt!}nw#$<L}YE`kyg#wyGx)uON(vqQ%p45vk&VY`~6 zrY$cH8JTm2_+y$2hDCW-dSgAs4rU=+(612HR2)$8Y0%*zcKTTH(^Esa{#C$59maC&7AnV@Rl7t|4ipZ}^cW=1>1r^$&BP=L{o{hfrC9~`Ypn8MWzk@;G1 za(2b=lDu1VsjzH#H8kHI#w2m=?Unt!!ef;fNx*ug=1h`(2!eVyGagX<`s)vh4n@)^ zF?J3y)cb~il3}ps<4MKr{{Y__G9DiJ6vXL|S!Aq+`U4MvE8K2!hky98hT_2 zG#VC~Jd7<3^R~Y9Do~RY_0y~tQnd8;ocF-Vz+JcEGOD`?*nj+3D=Rc<*>dIXj_6-+NWtn}I1*+Rk1rMWx*hvBYOd9sBwbBNfk zQ~8pl!SJ;Jxg!E0v6KJJUIMCREGIwhs`Mk!m3;YolO0lD@J6-pWR( zZ@6mlFiY&i_@T|49RuFcF3Cw~u|x4Q#u!i2bEm=+TQBko&)3$nv|(bu5Jk8E5lNA9 zonCnX-`=u%1`X*RwSagqRIo3vg;I1Qos@kwR5I(ZeMjaS0$wj-X*a z^dSpMgTM0q#ax;(v_?G2Wgsu8_skDMbOfwC*~vg*9WKpdrr-b{WM%^U$J6Bsh(;wp zKZq2va~VLA?@Q!(N4mmtOD&;|-KcsH>_S@$7`Em&2ifHfxYrIe$BX)s-4WBe?4qV5 zuv&=f;#c3|A`Hn!v{|vX{NW!j=1*u~?Z|_A=44`n%nbfXi#HMS8Ls?*6H|>eyw)EQ zgER`GcHr(vbNCM^BqVk9l&>FqoWP5Z#6Irhih9PnZuW#TInttL7S7tSS3zLdZL@`z z_Lp!%COO-AJDPLSaHAUQ!Rw)`OsChn9^sF7hpJ- z^C=vk3~tI`+(yxrh{&R)MU-o()*rEESFa$E!^xEvi^D}G3q5eVMJSfCEvtTZOEQ== z8*!E-slNvIIX0Q!>n}g0G3f{vAy3A0dq%afi>UrZCX3O8ZVjaio}&QTHfh$rSikH8 zQFUZFq?Pi;t~dauqvx>_Wrq^$yWCetzsxP}imY!^rCP00RRm=NrgXo=07u-XRLdAA ziI)9~oym*#@(&|n;-lC$S;;iRsA2{ihfQ6l5d@AMJEZd%gp7dKIf}oNr|lDxsBYml zLP9FL+D}}tM0(ESsGIJ1&tb&YL}16%O*lxbhf<$GgmAJWFdKB*z?H#EktV!u%Cne0(RSP%` zJy}Nu!VM`GBk3ezw4p^3R};uSbjRZ6BJn;|hK}vY=*>~e#!${!)5)OA@@u-S;x+iE z=KR%qTI+B^Rk`^m$ZI$^$i6?8AX425IGYe*hu@GnfvR?vlR09PjfV+VG5C zp1OXnr2y!b+@6Fl7cC;xA2mLRCpU{%xMd}l(&>`hl!32hnJsxUF+6?nu#YS@KoSWW z@Zpus72DkT4KqnyX?UXLl~qg7Luw9Bk1&(D1#i1Ye^an1R*&_h1z{_W0zduRRT_&QNB27@W5;UV)b16nt*YmZV2zU42YN_I{kix(DgDFOm z`mXm8!^qd{CrA4#8C(!s&rfUOxz;0-g^^VGmY=PL3UEzS3tCKk`{GHppsK` zP^`F(Xp=Q-+iczHS~_F~ol|uoc_7{>SgZYMf>>s z{2TaoJ-mp4Iizp;0gAQS+nDmE|4r2M0c6!!G=p+m)RWL5H|ywkj1<>O$uZn?lo(X> z3JC|Hg9GXEjw>-Gh0j@38Uc`WiL=riV@05;D8p8l!tiG3Rio11KFHh#gS;^cWh%1m z$eq-(Vqa|a;0~(C^I!SC?AndQgv9eEU^6RB8Y(xTWB%q|t>Av9K4XJ8k}RoDl7m*; zkzyFR10O9|y?C^IAaX-sVYe*9toU-H2tzi&y%F$ydUe)*{&ustPY3$ZEok;H&*z@s zut+~Aus97Fr4F495i7OZaUIPSpcV=ml_6;K%*X(n>;R}udht>3Lc%EAI_^wP%@PDQ zif?@t;PE%f$Z3sf05l<zw`>MHEw$sWgkv7Cys7>fK@<@Uif3*7a4wGx?3 zeD>jcG+3uNvi5lk8gHAJn1!}!#Q3H8UxN}OTs5#)z9%fAolc$#kp9Vf*qQfZcUU1t(9pQp-{1klAwJP+J#+?t5 ze!1parmC)t(inG=I*rO2#&W;8tHes%nDsN4G2hNaGdApGS(Vgb2l>{2rmOzzj~t;A`w6ZP{+*^8pEi0i820@nx5B~c94 zyDZeniGFC*Fz20t>T>!ENaU@oYLhFxG>C>D+%o{;Qc4U-f8zWmYH)*#{dRG+h{yt> zC>KINrG`;dDL9%l*BEkr=RTfOP6;b==44Xo>CZBik#H}im5L7A#9YGYG2(@2^OVb0VBbaf}oYaX!2l-+-oVXWq^!hwWNqfvrQ?V zTE>Yxg+=6|SW27JeuS$u3;RQiSIOE;vh7ob>y%S;1OF?FMwUGllTubJ*;?(CEXOL7 z-~cBJuT8EJEB7R%E>8tcj5{?zxeT;nKHt>N;}<-)tyFpDai8b;r?4^S7E;yR3iF9Q z+Fm~F)ziC|GU3-l{x|CBjVe`SOyFg6wM+4%%T-pMhMfD?f*w9Bu87%UwInbF>dW$z zn`k`(qGZ^C(sN9ynAik`=S%`ChsLn31FvKrZ>~sOfD<=?rVP#!ispvsAd0a0 zHI}S|?#IRN0dF_Pz2>p%kk@^`?wjY$JN>)r<6q7$X@pnb!}DJ2^Uxpq(;!sjOyQh& zQLHH;z}gQ26-V#+UbEN>R&cVQpM!gIU)x_`aoEsoe>&rIS*2gsgBL=Fmg{+J(ZDIX zQz#$ZbG;%KLZ?JKfl*WVdG$JKsaTO{8E?`ciba%1#4aYXsjD$WbAHAAI-Q&lF*2n( ztA$fTYM~&HEYt9zL}=`Bo3`+`i4Z}!s=&&bDGR}pI_< z;UGcM_iS-P2Wvz{tJxJs|IyQwoin)Lj^XD8lg5cy7;E8|%}A@!RwWa2m^Hx=nHBSI z(!)$e`XBw+r{(HJa`zd{i}HKOSKjI!epE|6MDUVoa2;tQiYR9U-#_>fEc0PfixD|& zb`CCsA0p_P_OyKL!RODTOMcmZ(yuFAPi* zP~Bxv$%MPSrWXmaLh;-|S6 z_=h!{=BgTg`pzYBz^F88sQL;GTi&!qTa6o>`v6~QJMjr<5oy73DYEDw3gObRvyLIN zfD`wQYQXJ$1BJzWD}o{MbB>eOLDrxq4Wf%7?xB2knmuuy9b%x5y1+5aUpfB@{~ZSP zE(;1r0^yE>5&-i%DUo~+TQc2y)rV!21)g2Iv00q;RxsY=_TLESK*>3ZB4!*8~#4StqXEO z&w&W4TQ(z->t9?1hyXoJq4?p4N`G8BF#htKD5OQPavN6tKLpcimAZdkm`FKY_4BA_ zHp{-5Im}z~;JccSMc{VJ9ovqr;Hd0^%Mg(RVw;KwrGNablg=Enwd;S2dMIy7*?s>+ z7pvwhty?zGl}8A)=3;o0^{X#Zqb1OKy8jikz{-ea(B0uFMNI}FyPrzW$g zfwp<2DYT|g@HI~(l1EssP;f4vX#FK3^#+`zE+lK+Lg+~1ZsO%3|3SLoOEmXRI4I)c zd67QEz;crbs^5! z3em2)P)Zyr%1qJ&twRAM`mflv(>vui9|6F53kvqIr;;8?>qrbEA0FaEj@@(IQ#-BSPDcz;d(e;b#=u3mfax}a@^PHbR{ygy z>ch0S4az6xw`(1=FLIZ0&N^s|I*h~w3A*ICu-g67&0LpQULBYkib-J_4}K6|o$~jc zL@YQSF7+O!%xqdviNnO`K^&Upgo?MOwASwY9HJR{3A((gVRXRfvz_>Tf|-j+W|k*i z0jHjabDL^2shdjkY}&g2iG~L*h1p}@AX}|wfH(9L{|V({GR_B=DdsiMa-sW^Ym4q9 z$$(q+uKIyA@#DLjxvEJpVKy*o-lu0K-$tq0w*&86XHT{_llf?W}_`4CLvgXIW zGeT3?8>6y+AwdX%*}%$3dluDeFxwzpX@ZOS5;jB*k4|S}LC3h(e=yOBx%O43^C~@q zfq4JNw)zC4K`#aaUS~kC5{C*Made}1hQuJY@il8o15!#kpFXtK&!tF??{5euxlv8w z&fdmw>oW~i3adDWQxhD5g0DM~$V75RXB-c<$q>Upz?JldM~vJo$&8*N{n}A6DH?jP zLE@aCQvTz)g`*MYz<2#Ezne3D63p2rnd==` zhwy%5J0B+ri`!@8`^BH4_9Ezn0l)4`!=%Yo4D%CdX;j4u>u52jst$ZFVQ~UtSW)Cd zj`N^7$OT{Y#+qwMheCg%BpQE#E3u}EzijI^E#^0ub~JfD;MX;H6OU-5;n5`Ajox4U zzWc+wnr$=7m3SyKkzlS=TfNj*pNNADCf^gD%@s+_R${r#_H_M&)dBUY!ZhR0Q^z+_ z=g~|s(API+n!R{^&x^xhWYLf492U(=km|QMqDOZsl$s^j&YXYaVpQ`}ad(3S{3j>c zoniXgeX|p~%JnsVo~+73{*maRZJ8lq8xpoUga6V8Q?WJ0U4ovWM3PI}EecF9Sjv0> z(Z^0i4vwOqO8K4et1{V9WV$4LC~#n6G!K{X3+a>y+}n$JJ^N-&v6^x`9g9sb88ey6 zrj2wFt{YP9LW7sRM(i2ys#CRyJWUO~NsrhI*qh@#!zT6vN8qFid-k*h`KY$QZ)>Dq zLSZAN#!d0gTX?bx2}+OPy3g(kii)qHUh2D%3PVWnk%a8rSX-5+Dzsj9z z$3sIgRA@WPXhbY_xSzpid0OsM?!YCkJN#3-y_H-~jpDD)@9}(@TNADpivlgqr8hb& zQo9^@dMa2Y7)~ZLALmAoX!=G@~@eu+qztN2ZT;s1-`ENcG;^g;zVTGfavC#a{_iD;@}khy2Jz6?HngcEM=7$9FT~GI6)O zPvl=g#nyiVtcpkq2KXaC=r>L1HrzF14pwl3cXw{=T-l~USb@L1k!&0WJawKw zc-PGJtHCwdw!qXS! z_eQxib4*9EKBdnl$9$LRm%%pxFJblDYg6~T36_35ImB6>koMY@)z9M8q|Bt0t&~hE zH7VWwt*ZqiPR!pu)NiG=M7T?s>&UjINb9onqm*<#$7(i4B+MJV@Lc!>`;ofAmC?`B z67z0{p_^2V-r!wQjw@XF2D|hLC0}y1xVaAuqNOKa^ggeV^#2X|MkwHlO zxdCksMt-{jLbVazr{%cR!Sa_z;pfJUZP02F(1wolx8T+{gRBAVoB6dIF~#* zsrlI!l6mS&$FJR(t31OzJ)>GM)Q!Iz?gRv}c+R}T@q}S+CGz63gLiW9sFOO|yLW|e zIVUnR6Tj9(68l&;O($Gdrh;BLpksD5V~oJW2#yt;pt{!Zvgag?gmsMQ64bg_?j!EQ?6VE!msrxv9;89NA8yfj zoxIQsKSdC9%or~;yf?qf+wGm9dy5FB#i&AFC(|bot7&fB2dmJ@R5?gc%nhp@ zfxhR5b?TwQ_mRhCd!V^z=nZA4N*S3F;_u|j+5G`$yVgLq6O$kxTuPW+jj5W70u1&i z<cuqq52?2{SXjC9&jtDn6L|`FZ}ndur9zAXvF>&=_5=FjY%8KqYz@D}J~JD- zT?lE!DvmATH!!RmvlIqBpS0udMh=y){a&+wbgw@?=OVc?G`q@WeS+Dom3}{XWGQNN ziWN0?wzW$^dA)_OPczf2p;YlboY8arvRKnFxdEB)&_ksojN$^787dFimb~ivNcrQ>Lf}Ux-gz0DoPj(K(3vbPzhOC=J6Ie zo6gxRvS>hk+q&ogRc)?PwG}+9QduM%nx)_YCkV2Ay2cKYS-_2q^`s@u)4>Rk`(@Rx z(v9NoqBL?511H=!l$h6RE8RWvnDb0*;?G$)Cwl>&ebJPRt*t;b>@%Fs-PJb|dxRIk zzMS>jY?phmk!yV~cm~JY{FUunPFsXNw&Rw}F)T{%JNc_i9^$k}o-L-HBTFt|jWIc+(^yo^SF z+tIdF_X1PbrAUGtX#H5x#4t%EkiuY3=Q`3U2hsU3K&!#4?gNhu zb3Sc;4hGz^1dS$rx#^%k!_!It(ApuBy@hdgB|mBE=fnU=v(lpO>n^SUo&Jrwes1TV3X6^Z&_ z#gk=Hv0v83r>_>3^TaI@<@Iq0)A~%!gUm6`hY?8j*qbOi@JLr1O~}!=Um)wfWN7G2 zPr>96b`BR^Mg)`=GR^vlLO+FZLoNK_QRjlNNrhRQ>M4IgQqQ-|q=xdMBx*fNL#M4t z=$;t9&?JLF2Y#rpHBRvwFdo@xLH+pnG0?bBNJt3Mf>wbIg4S2%Ok^h1l%H`IIkkVY zyaB2`wP9J?*D0F>U(SzhccYzi<2wq*MKkq+R8STD%Z15J`nUMk6rWrJy`5U(z+4Y} z{yo^A>;*;q_VKMtgbrlc5`0iv^D(W)aYeLHuOirR7~c{OnI zKXLmp8lmwfQi}+kEOXkSHH_d>_29%#Jkw#39k zn90GcJqRKY(gM5Pw!WX)G3FS>Z&+IHWIhJHinwCr<-6PXeh&iFie3 zmQE4g(NpNMPNw?OIGDF-y$@@&9FSe|DbwnC+GQx4N}W#5x=*J9jW&19FW!W0J8RjF zt;Ec=PBju<`03G#_XR~w$*n!M9#)?VInI^Wr_N;oooahS*Pdbyxr=Z(X?bxj+m4D& zKfxrvBf7&^&^1(@(bKVrJ7YIdn4keQycZz`2b;!T2DK8uN8%`@YQe@ zWMRv|($@6)M5fx3xI$-No3rmK#yD-?*{%1qzwqNB!enpoP17i?^$vdt$Wy~ZPa1HN zNsNlUeznNH&Ccc(HIa+h0jrT{{6PEAIi0t?|9&=Uu2x9sBBmB|g+7;I)T588wt32< zu%Fg)u|sAUa#JAKHV;QHoIuni!{&~V(@UgKlI!5k<@(qNTVh)AsqVO>$;%3rGc8d0 z4^8|_JqzF1E@eQNk{$x2rN1oD6U+&A<@ek3TV>caSEVm3U61PFAQVQhLiM5Eqn|q5 zeM2}j?K}g@fQC9p*e8O|HQ#SSY_{a6`|VSdIDODgKq~>f9UImq-$7nMv>=@mv-*O0 z?uDm~`+41=5=n`pbFls1@37Rq`sAEW!``v9st%HTdF-Bk@dV%6g7ex>^Des$uH_HZ z%&M1fi52^y0-y~(uMKMyp=>G@E zKsUb@CC;Hf{_&5u|7K6-*Iy1K02D_WNyz(ck+j12C5G`dIcWVn1KyS?cZZ z_?dOGMAxG~unSYZ>f!^S3PMI@*3IY~>G1up`96O5=npY2iVMzHXqNjc49gJap|28zT=3)zl{RK3iar6QQN!m$;4iy^E*psU zQTl!!VMaJxVk;1^p&Bqm0d|{L0c#q+pAROX^f?JRrLo$ z{Q<5_PEy!%*L#E)2rpS1tfNIjH|^l@Xf4>uEr0&-5>`4&8I-@QGZ=$2)5VhF>ih6+ z3`*7M!_|yLN-0FXfg3JkT33=VrqyaOOiyCVaR>psNs6zpY5zVy->!}DT}@J!1NdDk za_QXZ*HE-hS7#TF_uAcgK;oPY3;=4iC)T6yrqv=eR6T#eM{on^@O~d3fq+5H3pn-Q-Vo zHaG+KgMp-#a@Cv@Fg#~831kL^Bn+TYAOc2&2nfW15EJ6TP6Dyp zPN$uAzx%$jASnKG{d#f3S4S__jG8W-Rxi zycNQaGrydWIg@AwUJIa8{u{gbh*b{eCBOd00pmRP+n-h9Cm$7GOVLC(63X(7(bkA( zFMNOrlfX2(+gmbD$_16H8D(S70*%Ev_?iE3ofCb60Kk39008Q$bSe&GGe+B& z8Sg$wKDhuk59(h!6Hp(}w4iRJ{TU=a>z4H#dVQ0le;zS*Br$vd03ZNKL_t)PsN$W8 z<$mHwJi$Z5G+lpMM_~Nrr6-wkV}Hi}ap^;RM1wjgwRge@R-ndU$VWMkUwVv@8TnM- z75g|T=VT`H=VA=wBI8T19`VK34zOdWY=~Z%=*I{h3Bz>~!h$j7qLWQ%Ek$`9YcpJa zfiXu=T;$kX0XGkkptH$wB~b)T`@gD=fvq#_;+~-UG7JddTvlM3AK|Z%CJm^T7*(-jL8rj#u^rt z@Nd6xi)SC*B{P-^LtzZHfgFPvgJ_(M*nkTT(>MtUvCWu;Y9Ch~k>|VQ9FR{gQI8)+ z4nOa^2P@uGQgiC{OMDCp7@JvZP}OZ?%%!v4xvxLnzYIX!QR~t7AQP$4ECZ8cirn|9 z&$0lpnCN2z!0>;kAtIGF&hHm=!5XQN?tNenm>FxqKU9?%nL!Qp0&&N<3?$2uJokbY z)8qx%Ou2QupsJNobovePrFGO8$LkRzu?g#%p$2d+mSFqOWCYK>e9Wu2=RCH%MeW3Q z4>Bfb0H!$wHR}DSqD^<=s0mnWp*lwAH=($MwJ%ZRmNLJFsPzp=)g*zQ({Dg>n~X1p zGL?wTPu=hyq5GBr)OCH*)B~XY#c%BMX!{G01x+A)V)9Nb5~0l!Yf6PXCBuCUVF+16 zQorX9=x@KIQKSq+0fQO~)Torya!lnMWu8$NIU3abT7>i8&Q#Nd=| z2>XsYd57AKr3rcZ>#)|acU1HFmkxORqf=a^)S-QtL=7OEz9lva^%6W<<{ zs7l2e+qxo77v|kFRvKT!spEq7v}6MG8G=CD?9Yete&x$YeA_o%Wo#_Y*wE3)GXaOe zVu>wW+nW%~xp-MxVswGnF<48%oNVV^Xvk7*(m%puG<`2w^XN3;$3o4N+H7O|eCub` zoxbjL-!g#O)%(#VmI$cC9B6qrwMm9E&a}O?0G%bYIo5j~M$3rb9FTz)-FM z?K#~I_#3~!Hj6Y#@TqmdiQDIBF1+yO%PdOA_Vxv@2sFpI11G>){mI&P^X)G0k0ZHu zp~x*Sy*cNN+Y27QIHfKF_(LSXR~mS;CX4wI(FV|9!l77eI61sYzGJ}TWYmyvQ?gB= zhxqysd`4(yIxd#wYe`Pq1Tmp{hwSs~OZP1UxOC-#Us0*hkhIZo{_s?zHqce!Q$VJl z9(D5f(=jH9lmbi<;?_c&ZW=zF^x{aeVp;M#9xl~JOtUcj?X?|WU!S3rym@e)mtQ~N z$X({jg{y2$w=ovn(wqdt6g7a;NHNW=ij3*wL;L6z5SVJCv zXeSn(wuDYjcn7Y*7YBjy5fc*`fJ3thmEFeZK4_e!AnvDoq8cxx{R^)%TAb!6l1wLe z@6&zD0C3eolS$VAruTOvnbY|88bfi&E^og3(mYkwW0hdk5K@0aqB(S4##6wb9J^c6 ztckhqr#{O}0RnqR`|K@_*xlOU>h4vx$6Hv;>5Skk%7VfBRUGY{-=~q%*|DnOE3eO~ zzd^|jArFAyzA&gUUcr!*8~NXD@uk7Y0%J0;h3_SpO>uVHXMzr$LhtV`YxfLBvoX$2 zFnWxLY)pWAovy#~rE2Hm16;g#8AH}e?Kn?BY79cKjeDwigNq^H$NjNFwNIHt3NRBG zLbQLA&|||4h8RowcVecXOIY(dsvlzv6xM*VpcyzgJU-%Ze#G{8n=9K_xG=eZWsOGA z37M^a_nk-xlnglmS5TvM848>6%8in_6Sj;EzDJGe_^35LE7ACgMVedC?hJrT7l8?S zrfaMRFSRs0{4^s-X!(6SMR7u&=ZBy8#3#;8Q_%aC0i4W^<_0h_$6UBbw!MuOqXaGy zND+9ped5j3R6}971o%souG8gJJ;~j6Dayl}82knZt*MaipwC#^tBGoG*L$xNnPqoU zc>kmrFP$+U%JJ-&TWX1-`j+ee?kb6yH2?O5iRM+lA0awjAIjDTm&DIv#_BO)AKg=Ksq9)oX0Hi9W zc0a2?(2wV*-`ZQ&Fq(8-ko=8X+O*3%euLf#2;Kpi_SskOelQ9}X4sk(P^s_k6GL>d z2e-h{?1-b;5f`>D^ZTCp4vaB;{>HDeUma4qin*J!m2aV^aex?Vydw>OMig5E^SN?k zujY{p23H5hW2_H(HYtCg7L0RC5ep*1+Bs67=t=Ty*Q%OIo6G_GA46VWHcqyF=Qc6K6>yQwR`|{ zK+6zPi?J6m=sA-*;P31zzLaqvDOUx0whJsce!@SX4ec0TshN4Z(=abtFi=U#iBFWvew*JroLZO*C5Gf`hZbA%yo<0o)m zl*+-eV6AtkiphN#Rx`g#Yf({bn#$PE>eDLRzL4@Py~Cw^dFXWFZ%zCGYD86SUDvnI zc47Ah-M0+j*1>G=!3VTdG#B-Dq=^zloNo?U<0qP+#JHe_Yv>d!p%G{_6Qa!?X)qBe z0yllNQq3U%J$kEGxulwRJJ~jdyP9(15c_UGZ^E|*>F-m4oKqgUG{INOkT~dU52FRL znDN*CzrVxZc=AI${pgc?cS8%e3a}iqa%p(g8LH^sRv$^47ry8*S1z*ZOsiPbDf5`CoKEv7HM2bMLe|B&{O zIu5nFtnZ)bYO8b^Ni2x57;TGVtQg-Q14D+TsvM6zG{xqb=V`Hgj{d$4!>d&bVz1Myf}S{ziM57pZzf@ z6G`?J&b>KLy!{^~z6}B|Q|oh+oO12Tn2XyZZts=8i>3)``ciI>FOK^DpZnW<`v<;- z4{Uva>Grf~fU)k)R}0_x-VgKrSN{yJA6)0vy*K!!SD)jJ*$uvY^Ce!N-B{ApN%t!L zoU9t0GmZ4OA)IGIdvary#=~g+y-?#4jj6ql{txV5dlm4*zO?suXJ~TlB|WvT zQTV@O6`UbB{RsX&ESUy4JGih_@Z`IB8KTu+zA<1r6B_yCtLUE&G%1S-mRmcNUW`3bMze3LJ}`fL2TpZP%!-Hfc)QOCq{ ziS4&SmZdSFaElycLMt;X7)MC|^}d5H`;1y%NQSaG;uh59v7d*qIjCuPh7R#x+DC1S zQrhjX?2Oq{_Xyp${Qv+&q;4m(Xul!Idu?Bq!B{@Dnm|WwPk|ZtvC3f>*QfiH?ru`4 zzY_dS+FWv8E%-xXvRD0;@UdiK*&gM*|LI*H3am~0?QEy_zyDasxA>8N_xJfX|M3?n zPZnps-_}}+@rd!(gvrj7t;;)XUE1MYm#^{4{u>-DW*D_}djy2Po$>P#V6i3(nSK^) zJot?%ur@FP8w$9Z{sw)gqrs<1gJAvq4YGik_ZLit6;G=z1CC?VPiv|oh{){BH{>3m z`KdC46@TbcLl7G@;_Ky*?4DbCn zO-j5~>wN&~r`O8Wkg36y@WH2dVU$Bf3wD9!rX7G8GdsG?5B#gY%ihh~%;$F(_O9z1 zH?R2VU->jY@N<6`QN@TwooPNeO{G(s^XUq>zaL(P)y?5d`Ih^tDpZg{L(og>|3vm=?)aL)E z3Qf~M6x11}lbqbxpao<;lQU=pSkDkJ7SoaZ>9dHxL)XCA1`eRNRdZYWd(i&V@Kee; zw-iIYr|G_C0E^0956Zr8RsjisdM`{``PY%ksU#l~8-0yn9q^OogBnIE^?T>3EU#B> zWMNGHiDp2aFo4X#rR{=m{tXvlp{Iji0L?&zzxpr!7B9Z?BITmIlUvWp(Tta0eTBd9 zPk)G44z4rJCSkv(`-vt%_%>K}w{tS<0q)I!a8=f}{(WCE;` z`n~LxzWpC0e^h^?VjQKv*8nU9mRv2&;WvNtWwPxYN^KcHwELz1F_3Tb~yZSdv4zE?w|K*f;*{5Me$6D>e7qisZ$$z*bLrkik&(0$DSwzj6fCW!;k z_XmX76r?|IU>EAaL*8cwgPz+uD^1e_YIEXZXB z9X7(!?{-I>ujW+{5f+QZo!LTPXS%N$K)E=P7W@RTOT!SF-;#hj1$+|$NY~M>@7wW9 zpiiO$OU}Z+IzQ~_TON~=5PRYqe5SBfp8({YfRL-9P)i{hg<5|1w?E)>0VQ`JIF?%Q^){In*3)|Rb_ z;mV~Pt$j{_H*riy%eU#@O*(LU?_wj^*#9q9?=I_dy7aG=`OVI7n!AdzigV28^K(-P z2=_Sykh-o#q_Jwg0=l zCq`p?x7Zn})zEyz#}eZKngsio83Ak7DQXHM4$R!5phZzas0qrPWu zR}Jqc0`-_eCm(=hyA<@R%!A(VA>hX$r)mb>lQ4viI2s&)(FDMfsSVQKGEzg~EK@As z`JZ0(A+ZG^A`nicwjnp5_t6XlzW=9wjF(@1g`>m6&V6>yakzKD7oPtjf9n7F-`PLh zgJK)RaP#&pUb+4zb){I%mwgR!4gqHo2Twj$FwRU!W-`9eF~kGfdHaU$Z~QYza8iuy@HU5xoR=0H#tqZ2UA z2S_m%+h{j*R?x2l{;C&ujnt3F>NBqJGs-%nN+xL-&}#r=%@}KjJBDxi#tVG>w_Jb& z@uomUU<8_&1ieqO#g|_AJU{X;{~;%b$1E0Yg3x?+!fUU-%AfjMf0bW<=~toHX@O0~ z@zF6az5Xh**_=#mvR`e!U8QVK3{O3gLFIiIHmduYOl6{N3$SHT?C+V_DV{a@Fd$Nr z$%!|ZqM~3rn{*y&bNc}hD#nydQE}yBvFLKYdz|iT25{?O{)UPyBuoXSDOj6uQ3^^k zAmJtXUIqF%b_Eky0=_202Hw0OsXxdN=cS_V@I#;afBEHKeU5VO8NkWO35R?8{KbFxqx_p+`Z*ZyvXo#% zMzyGU<&D?5b#UOb0Uc=VlYq2V7AMLRkL5h}aDh~isfOzb;1`;NCrBy?W0T(aJQ37n z;g;Cs5e=IFef;-H!Ivg$lm_PuQ|Ibr-)`DJD)$w0lHyV%;x5LAqiK*Br%?432 zNV~J8SEmp9zSO=O;15atlp!c4=Dy>709GLrFGUM{Bw!?_(E^wm-uL(xzyA+jZ4-lH zR6y4F1F{K+H*fIQ{^{T2aBrWz+qXG6IO1>o#NXpb|M`!@WEXEP3~Y;^mFW77o7}i{ z8=v!^HGT+n@Uf4MnC4lVzu;4U+B%1r^%%^tX!ol)w4S5&B24`0pQkVWj7347I)#HB z&CZiVze0SfsyK3LMi}%+RX0w+^FsgA|MufAWyahRNi+b0^Dlfi(?kbAY6M{e(g9U| z-Lejl2WId~&&s`UFits$*!FM!av$ zujRX}gyJzjPAI4uq2io#u3CQ6?p?aCs{sKNsX{3SX<<-Y8$HGbVYzE?AMpL(anY)= z>7N74Lx;wn1^B>Hb)jEv)K9XJ;dw)0tnaOFyf46s#c769!HDubfAkvv!wau)^Q9Vg zL&J?ujg9RcH%IFkKkyTOAFUjJ_8rD5x1_0p1m2KR=Rh?DRkYDN_U;u1%OV`QMo z6G+v0V6@GD`114o(f{)=@$&1h!)R;S?qB-YB;NoaV?LYnl^0&;v3FPe)=x~)xz|u~ zG33}F{o7)v)Qb20Kn0UeF_X*Q1ds}BM!xj`J_FDMhVPLco2Fp0wzE<1QOC!x8u%HZ zCAb-54M*Smz2Cbr0nQUiEeFxwmtY1op+FID`>&Mx30RjBde(rx0cS6-Ui}Y?u{#NSh1dp=Ah)?_Xdn&Nl?zWCETi5_PlG2_ylasYak3N#5_kyXwvw_fDG{?k{< ztiqvqfY#dc3D7bDwfJVDLv;lGSby{b;P>h9{)R*45B}jP-~1a3j&9#1uTFf@Qixt; z5;6fbt$PU1NyEc51xXx->Xh-QRa_ADwNRw{dxY zE5d?a3-CShvSzU%$JarKv8ZII5mXGS8LGm34}Rw-FHq!$AN&iqIl8HE!L+(}>?P`%KlGn%!%@z}8BD#8&88ID7J2YvWJ;LkEQA6(SFHie zZIM@)6up_pKvn&Op{;BWU52Z$r!^N6?t96!7S)k+?p);nz=i=JPWK@?0K?pJJ%>;< z2e6^{d<5N+XlSAq?|@z~4fV}k^YeF8IuCNTy<#G>TH@PTn~ za!dJbzh##P|8mCn|ApJU^dB7T0!38&jdu!~0G!ASI@gpyH1(-OZKqP$7rx~?3;y_j zvrVzE6s2Jz8DlkAw~xuE#+J+3k_>m- z@S&$B{MoIFm!xiwbZFfWIOG18c5p`E$Nen5p>)EN$+!p@HDNMM z1#gd=Fhh_Bv!5x<-;vBfW(|uIM_E~Z>wmJtM?N~{Uw`U^pZVu=p8JnA8~`KhI}B$5 z_$dPbFYy;%JD5HQ-}YSv-}U=OJo#vWJFtvu!$d4o$(X2R9BLLuA&ogR22;&2c7n+- zB!))3j__=3=9j92Sos;$dsRgQGFP{^#Rd&v1(Z{!(6}$!8IjIaGZ5G?0P4CfGn;#x zH>mAiBZ#VF^a%)!vubeaw;{>9PAkyfs)6m^GVryxE;*klmGu?vlMKBLQ?-o6FmYb;kI5K2OMxLbhTMh>Kx?qo3}Xt&wi)Wy z)K2yyC=SJ-HiuvWsHT|}Udu6d*fQ?KQ%t<2O38M}3E;-yhW9Yt_Y9z{TCTc)jN4E#>II!)Is5 z@ZbZ6M;^_%dd0Fk$&eYC+o3EO!&vY>2=z99)3YEnG0E`Rj5eGf^$8)Pp>tjSHhL#u z`&>a>^a%vbF5L5=7XewElz90Ogj*VY05*&XK817V1ibGVzZJ;nC1+g+^r>u!-@QZ_ z_BS?|06?xvVWGfK8KE?eS`Ae#IE0It;o^fCPd_}yW`0}nrzSOMrI>}m%wR0G$wZ8W zNh38L{NkOHh4H!nIkBse!HPCK*;L19Hc9SrxDQ#L@WKFejk7=bM?IB8?-&IiS7@Ao zLt0gPOO}>2&(W!03CL?t2DsWAEhFJ04{0%@-17^1ctzzu9NPtl~P|?o|UY(VGkD11bwQ%X^M!9STYkb2u((=mfSdM z3?pNx)q}r6a87ZR5c@5~OD>jk$3y zhW8D|h52~0&{I$xx$#MWg@IZP4udn+GtKa?ZLZ-D6tnj-Y5Njns^rf4R%L{5@%;<) zkf#uvnzk*#OcRsw`xmGW@vpVN=hi6aD9qRZ03ZNKL_t)?m2z^TTnzO{uIFoQL;l|1 zv0UJ^^dy=PASP2anGq4n#o}C50>UN_fdA#M|HQsA972#I@l~Ro>ilRL1(v1&X+YJ@u|KnfCt0sU$(5ajxYv}7Rt>7>$sQ#)EWeN`oyHu7 zfY~2^3V1u4YP`5L$B0rtUES3{Y&dNRYPtu7@%e=6!~9Z%m<(~^dn+2BZ>WHpa1TRH zzE9cpAhs$^bCOuoZyU|Srz`s`zc$w&n}RYJ|4X4+18$B~B}yLV?DNh|5kzpz8+j$XI zfxa)nS4sMzvHdZ9?IKyWwCkwu5A3JIIQoWgf1mAd6C|;Oftm536%7CoCS9_dy9!1GNZVl6(Fb z7--0*1PuyOl;v>;KADF^t+!$4Edz*dzCb3q#?E=J*1V;fQ*1e|UCI!xiN#(TeK}HL zDQTupF}b(&#G$r3$Dkzkf1Do7WU&bum57`>C*Xzw09EZ?MYA9cg480`2KblE_XhMD zf`#z%#dP3Rz(0$W9~jr{zrVf@{2riJ0)OZ@@y}Bjn07&DdaGmFzu%P&BSQvd9IW7- zYpo{Z=k@c9Am;Mh6W1^X6KinkL8@7s{q zp7!@jzz>XF+GdC;42(z5pzil1XJ`Eiso$K7^p^QC5s#*EmU){$3q>^;L)!ze1*`^e z$D0@%lz6pU0yF4`R88m0U$cg^#ki#P+xP{+VPHofHR7Ci2xd7Z8zEKQW(T%e1(?i- z5Y=DY67_Gj4-yIDoJr?GI4`te0Km?4{Je&VKa{NT>vfuhCco8aBAsLzOoOya689O! zDrujtUj_W3eVtHuR~vG0}{B!HFnx0*ytYH$@3Z~`+}Dx?cOmqzj@=a4Wr zRb6Hb>2r(R+Eqv`*y&Y@@iscU6{0+lCie`^$OJLc=EW?Zs8f@BQBI-DCouM{>2RvVvx6FlZlilLw$t?IgU2eb5eo zt}j`;E85>H8A&SXhnU0=2#2Kh5b*nB(tV`owN5igm&I)cP?L`7pL4$idX=*>GK!|} z*T6mOTvqbjlm@U;owQTH0Y)mUEYJ{DFj;|-a_NyIY_@wDCR0^4&YeF8AZ!=_0Hu>z zk(u^|p#{D#4kFl_itjaV=zyWo4uRw5Tn*$InKg(h=ICpwFaQAdXZ7`+X*Nf766bzX?Y-dPZ{I~$+T@e9ARMCJ*i%72 zU>^^CuLXYZq#~%+Y7MZ=Akt-F>=MIBoud77h})b|^2hx(eisetfbq0?jH$Sn*j7Ap<8Wm24ujSnHqxoZgy z8wLP?ffq7sZitgz)P_hvTM|r@8k|f$sr{swo}_HRJ_P2tejVrsK(PeKf#a^V^9LB! znWcU*ZZHavNPgq9{+dfn*LODSJNbIxPgkY6{*gJEgvn_C+zq%I+zjkhFtuN9r$p1D z?Fi)kKPKh@4EAR1^1FBx3GagX&N1hX?)!3JfdBFT_z6|jO3-#@;P^>HK4~M+W(Jxt zRd`cws~+_6H!vunfF`M^FEtw}9rwNJMNg!3M>kysXk9Trj+Nd%2ewbgG>$<76p)P} zn|McBBYDF;inA>DnZ?rmfu@JJI*tdgy!Scyi-DWH}EOzHGuv#M`vMYsrrJYD%(XAtT7uW;CUtyIZ-j8 z`;WFE!3cPOFmq6S2AzE-`|3;F&c2iVNN~oP z96y0(xDOIRUG;z-_uo5*H1d#6xh6G8g{lpVWQ^Jo3!NaNt7vfnGr5YfV;En6(Zz5s zKy`%Fb7Xb{kvGZemr>n^*_&|m8g+h!I=eu1bmZaJ{PoM0D+w745C`-pKx>twy|U&*p15>DMMg~v)S@PZyKw|Gyv`& zGyYiN9P0o-9%pDDk?Cox&fDDg*TWa^Ahi#dX-(VgWat`tU{?=vq()5v`4+X=qO_OM z?T69H!z}DYWb`09egGX^LC7$+@X|TUy{c|AjLrSj-1zfR6{IeG-A1{G+kYOt{_oM( z|22B>BK6{gGJ6#B?(o{H`g4g)*MKqBZ$Cg$@<+YLqL6RnoG_hE&s|4g*f4;GMD(cb z7oTK&^?U(nm_q;^5b{GpV1*R!|6aMDvq<~&ICld4{;~jMn?pAB-%T%s09-9wDLg9!r`C-kP~;^Plg%%076IwZtXyA{5-KzZAiK^@b@Z{VAUTf zV_2mn46W;%2m|{~O@rolD4NN~kdK1@q5`+@0FEuqOrn`Iee)vY2qu7Apk{>TJ1nv* zxSc1dC+}uaJPf-}BKZZ>j%t?!JI_7}`S%4EH-^SSsEXMD~Z9hplejMF>8kb*0vne(o2Z>&h zp%@&vb`qVKzi(~q_!p#kj{(F_93R)mZ~yG#e!#iFu-yVf#q>kp&Ft6zJz5?G@EZ!Z z?<*QL+W(45-PR!`cQ%|^xDARkV_dcs`vGq90M0Xw3iFlNCOU%NiJ+Q6WC9TcDoZa& zm-=82%U1n8WIr!$o`QTGbLmU`D7}MYEt^7C;8oqyd)CXjm-NkRZraSd80pYDsPl^C z+tl^}$_wwM-g=U9@*Z^SaU|Qq2h-HLS*e$9>s)&HJZF_?@KB)uI$u><+U+w&?=&tbmjrMITe%%swh=&W0S zI3(Ml&L5`SejnxZ3F@sU(XDrTz-MEORv4+sQ4n7c*HO=Df!i$U0eFa_#P5$gZQH0N zbeVubrDn3V!=l`4%z#ep!(^z|Ar#!Zt?}+AjJBen)-kA5bzN@~fzC74j;hEAQ%2iR zB+}Rc_`CpL9*l+;dF8u%mw@k#U1bKOYJLn)#!#B|vG`&O@@*fglLeGVP|re{ME> z1N^FGXQ6c8O>vh9qEP5DprLt@LByeSO#p>vDzW&t*B+u%Q1x!l?dwe&1`udb>3%*6 z&`$8^okFn^FnYej3v#NRKR|IBQlp)qEY2XLNgQOWUkfvBqW>Rs9nEDVy? zIYs*3tfD1ve9wMgCGi`zJgDXd@4OrB!sxOGw_8B959J&Fw{KeDw>P0{i8`PLH%HBc zI={?f=V_{)4^nMEgG?Sm^KD<-B#Vv>@Au>XOTF(=z3ziJU7ykr5LcN3LrkC#_&yCW zfw(-{|3eHRZlg&>r%wV3iA@6(jY3s$qG757UkZG3ax%Ehy-phj5NPkPx_xPqEmX}^ zV?Vky5vcJ2;PV60IYQS-@TK4Bvc4lPs`k!OlypubWU#w*y*~y^j{_E`+!Tm{e4@1 z9j!7chCsh+d^*+xwoUcTSOgzWcp@#R;vWK9mEkmH_*sTIQVJM)$bHk ze9Q53N*e}{kSYuB^lPRA3I8|2AGD+UoA&n-(EE%)@g=Uoi8s0GKiSkXg85B2`ihtM zaV|Y$!G!YECK0DbvR&qr_fYMAh;sXV$j*Dwe8+=R7Few@Qa6WR1;lmscYj3_%v@OEL$2J~s9wv$FOr21FYTxZo}fsUgBdy zPx_2Fk*1gO3lOEwFL?>S`ytAm58|eeLbip)g)rS5BXNHF)hhWqRX$y|jv@3V{aJv& zDz$gj_|vHG9JJOpTEHs*KzjbhSdax;wX*_wi^}(42(y-jV}+GrP*e~y69vQhYz6`w z2GAi9ZcFg^DAF(i5###ijB;-EXAaeU^InL&*5SCiBipg^?M?5W3v@IR9BdHYCZ@@qI6U-+n)E4&|au=e8b zVcIZ&ghb>-Lc)*l2V%m*@AV1H=z8w`)_$2C!Q=`|9)N7igL?iZ%&$Xzf|vA}SM7rh ziIky=E~m~PU~%zT%IyzOUw9T7UGcT>vLI83kr_bK+8S0n@>T(Kl^M`q_ErGDZtQ75 zABqgbu_@U5%ZAQj$OHgFb;`0DjWi+~&M5s_R_8oz1cWZF)IiL*#NT{sk zwXKmsF`*wu+8sE0++(l1q%D@oe5h`G!Q1pwd%!RDyrefdO(z{_J@@qjH3ik^VHTI4 zrQH4?Zuk92aoIP#kU5!F7+3li^%T&r0@`U#yjAAGs&#$3Tdr4O$ zJ^)hhPB>4+YhY^7;iwoeb4$0A402C-{DV z#_+~nozy)*8wQZj);RlBKLLoB^f6SVjZeUYm{8_x$F0TGGjRJfejpRPowz`*5KpwI`^SEZ`3bI>3#|9SycB`{(yCir2o5rj8);kvoeCA zeV%2^+rb1x#AgN)n4yaAQvk&34smWdyc=@>f`eE9YYdt3{QyNaPQZ5vX{l&<$V#Iq zil7of9XbQm3qXS}(9o@)kD#AW7Vo0G@(~uh-+=7AFMwV#Zs9%mnmF-TExk{3==I00 zQ}ORq%BSo5slajBS?H`x;j2Z)SWK2TVL+#?r_TgmK-v$m&t_cGJ3s-k6GW6e&(CER zAZ!>wheRmbOfL!9f3Y&mHwB3yA>Z60Y}ho+SfCUvibp6ff0V_A594;;2My@wSUp(_ z`u_Ji)qZH3)7IaqYJXNI-MW3;QxuYhVp6|$Rw+uoyb1oDa4`*7!Ky+w#Z|)2&i1+N z1_T=h(4k7q%*S@4y5G(VD6#)vYzrRMNA;kuMh~;t{RS2nK0>|y42&*fjgq-JbU@$I zDhYqLpkKA$p)u*QA#Gu3+-dZ+0Q_5Vyrp#j0$5p4=nOH|JAM(L2t*R(3FN1FXy*(x z1~Tj0j!AVcCk6&K44^}0&GE4^GLT^F60(ePbdANuk22r=D6;bmT3qxm zhAu#69*B1d`qQ+5{<@*>{_k{I-@h? zP}^-(9E-(bV*)4dUA!u#g9;5`zFkl4`a6;A}>Z{S^{&7#Fy`M(8s^m zjk!~M{;Orn-|K)s3-y_Rb1ta`kQnf5A_LlY=m%!tv}+b98P2x@6A_tzRWIVJNE-%_ z(0}~m3opO_!AEYDbJ>}WFJdl#fb7waVIKNMWcOXzVvMCG(-P}y%s^-^P0D#Ipih6l zo%Z}$HH3E}#i~K@Hoeu7oOxT|rGkV!fX-Z`>K%YS?bna1ncx_qDvPo#H>tqy1p3K; z`)c)fzVG+D%a4ADtMBMy7ad%@s1O}2Irvq^k6fv4;Na8H94Wt5A3&5w|gJX9FS?B{)@cH9Oggr|Ed3s$jXnSN72QPU>B&NUl<4z>j8E?vY|4MZ z&k!YHeW(t#x$g%ES{Y-a6ENQJb5kX>(Et+qBY)(N92P~fU)EKo$Exk_cS#?q&p1+M?hCvClg#lD!+>#oSX8^TaxmxyCP&BtJ^rR|`ldZR zmQ1qgxuA^((4)GXAForRBUyXr_WxO&c>OW=L#XcUqE7YZiuG*>P>~K!O(^K{b3>T0 z$Vn&m*Z2+cEJMZj1N_;a{n;>j`H*kRg?$xi!vL1Z-0HWRGG<7XAGYt~n03=&o#wf} zUsU_AEg7nEj>c4ARbPRbU{uA=!I0ivC%t-sP$yDnyMCW_ef|08pO0?Cm?zZPphs%#E8xRAEzp*2_Muiz|EQ{fS`UFI4hpvYpnnG z%D*%r!!{vERT1Z^n>TMp@UJ}dSN-Ddk~R#WMT(CviVxBF8XatN;ayH6X? zpH63Y5Gpns0c|88ZW$Vd`#uoymRoRjXaN=-f(oHa9GY#R7({e-`W%Jr)pa;wz-4d~xKdaKcZ=mYTCfC0_TN|MrVZy3~}byzwkW&+jtcf>h& z>$TTjQ_kj4zvr01h5_`bD2jt+5Ux(pIW6?p-)@LDp#R!XUDs_nut2US9UlPDBms%d zy#-tr-L^kIq==x1h@dE_AR&sPqM%Zun5YQ0fC7q2st73Ef(R%`NQacPNOzZXcb9a> zJnO%QSMUG5=hk`8@!a3tpU+}H%ri6VyJFW``wTZh4V)DLxy8(o7J$Bx4qbWY-w(N(`;X^nVz<(*T^Cz1ncgxu=D*P zU&GkJS$5<2V{aqQ2dS(*BNSfG53W04lqA%ot`^=^bRc7_c~y$rUS%%iqr%fE%~?+z zl)SIU_(!v|DtmtR%h;zcpy;G{b!hHkx=Q*~dX=*V{9JpPckJ z+%VyfxMUfP3y^sF;O3hxE4T~-rYT)CA zaskKA#l70fZdS1-rhr=7ztii&htqVqd?voKoBV|%Q`hou)UMeH>|&`S9M+&H8G0LWlDXHcpdHxwi>-oXOKMG)&vT#D8Ha{up`Ym}k}* zioq%piS%Q#kX_)$z=vq#?Ca&adSX}aHPq^s8;U*>^*x%o++U-1cvq?5=NjIcA(sFi z7KbxW=eLh8qz22d=N%5-Akrl^@c!fY&{6>}%M6*k*EqEx6ZMJmjY)PHpFIhE52j`= zr*1G=bTcuCy~+PRxXmr`mWZE1`(-)#&GAidEi5S3uU~&mShx%AdS5hr_dM!Na^bk< zL758$Ea=BJ=$-L*leEn)xb2@rujPx2kFWXOUpgcUUv8TnWY#(KRV2W>k}DLxhpan# z&0^W%lPH!Eyg*Y(xtSZiCVry7JH<`Ob+>lkkdIF5ozL_XEPklhxUW8y^KHzuM&YZT zU>Mp>{Ps?wW^7_&A&F#6F~{SvoUk4}x80X)2GCP@`a3&K-4u;k(M#Nuw7bX~qVDxL zOYi9Nx7qOkz4TSJiE+~#Q4igUJxUr@KA@D zapQ1GcXzbdue|^>%QCglSkTs)4l;%ZV}v>{zalFL+IggksaAWX_MO2d5$?dkqYnjIPC?d>~sM?=a43!GGM?e6NZyR`n^2IG=r zONAcg4-LE4DRx?IQRqbK=nf0<>8_Gy59Xl_zxJsAU}$a9fkWEId2J7mkUbd)AqlN@ zso^oT6njF;EJA(KXFD4kTg(@-);B?7rH#?e_TTPf6hSdtxTM14UY<##I45=N*s;$3 z@=rfTM|GY(Bd|+vhkPLG@VDA)O_V7@LwBfOhgQF^ximq;& zxfpe5)X28LDz(UFkeQ-#Q7s;ANle!1p)M>etku2bGr)AZ%2YI1_o`ET`v>{=!0$33 zY~b@;TRTgD)GaX8Z7(p@KA++Cv>^(;$v5Vbp8L0Z7Hj>^jR=h6H->M=c=+=&)%(qH zUy`_*-@Ds#<1U-N?Ck8dZ7-Ehz2N3E5&33vt$l6_0fVPv`p)FM;9!SvrPWVmQ{D{)}PGZ zVzAifW-!nyGL?BKZLe*0% z;Rn}XSy$>O4KI$2j*VGZP<<7Q=*R7nJO{J^R4k%%VkvZZ0mu?a^hj5%;8rWX88}eCLUiqC{x&h zUg~hbl+5$T-DLS2eUeh&uB%3!7I@aNhGFRGT0?o&*qaAFl^+uoeHeT5FlKj4U+ahh zyW^%0FCJ(Z9p+jxw$%3>PWc?pSKahc=6Jy!9lFnlk^UoLeFF zIEsm0tBZ_3Uz)KyM$vfbZ(nAWlH^%5udA9nY_Hb z(EC9Q%^VGTcXz$YKI>3rcY0LA=u*H!WNIS5ue{@Y^Tk>gW%j;UfcTqie>mxt2{h45gLN;>rBEY^t zmFSTaop6UjWz-0pnwstldJy?8x@LK%=j#<-4RI0nL%%gq!RftQyzgG{eS7f7*w}+e z`m!>;W!>)WruQDUd19AX4j6VjT50YKKQ^EleuL^po6~U}%69rqwr}?+WNq(2ArTh8 z@kO6;52LZ?zIR+yn;J>w7qG)|eub3vW;nlcb!^xYn^@aBq0ux-y@+<{%6YQP`1suK z-`At@lj*e1jb#OCHvz@|slL**aij5``p7$J3*GiBOVJ>*X3d&Qm$E98eV7%tKVXn0%d!wabJ*oj>Dzk%4Ix&W0T|ESekJQckx>UwviE3!^ng!-4^08B27W z<|oNTMMfT+#M3YKOu9Q7&jg;Bt-WSA7w_AL22|{3)4oCei&szcOp)u}UlQ;Or`SE_ zaH+=Z+N{|6!vzl_C7w!1wZD6*p!Wbm-ip7<9JfRL8dYCl)jFc2D4m*`YS@x!wC%F!BB$?S*`vmejz=Qi zLL=h^$;~IYsWvv4ixp{iu;oRN?Hfyo#pS6UN!zwb-Yu`Hx_X<|u-@A5)QiM}kVt8a z`WjcckM`S6$DZU!H<*7<&((U)iL=^qBsRCAy?;pwWN zXz^6Y@;tmraDkuEdMB;NcU#;vjYmVnlf$5Dw6vwC`}Gkcu&v<10%lJRaDj97`-!_?%I2_K3riMKhQn5jHv zh#E~G|Ajpt&OIu7jC!)vW*5pe#t%+Pzs{_o<1}V^%lFQ_`QjDVuk4+7MyV=8+xkGm;PIa}7aXX82i-6su}hC-5` z_0bY)MBUM#J7vVTH%v8tEgK@keGjj_UNgeRqWWbrILo7-M|fA1h^VNK&YZQMUIeQY zJK7Mpk~Ui_BQ#C^CFqV;#;&0+2aUqmkC@2|y&iVI}xka(D&bWg}QVJfY=o#y!A>+J~dbN)Pc4 zMelcc5j;<>Yt#lG-*>a3DwBzpiK~n=sP^_1L5X0W(Q$y$do9nmH5h<*x{}^bQ;ySD z>K)E=iachN*4(t$LFM?n5A`~q-yN#?BshAiW2tiJ^%8q;u#wu1!!>gfntL`Kk5%Tq zy1(c49*x@p{8wG1oKvoT-XFwimq(tbVU|DkV1B0S2N^R5Cd;h5Ga=JsJO9fqiCmc- zi$)!b8RNa{Lid_3-(m==898|%P;W(}?kzjbTEBhoR>t%e1En3Cr>CbY4?DcH`<{4c z=_RdFu$}2{PKz_z4L>{{`D7oeIB~7?VXs<-p5b*%?i&WR5h2U6#+j8d1}?g5qw25; z5A4d73abHw+BkmEr!0qC>p0D?7i5N;)H-3ePjOl@U8?zNEw)6{5Um*K`8n3?J{4o8 zD`V$w`G|%iM|Wrl&2UHxh5~(f9UnC{^+ZCn5q$uUkdrt=`K60tThdG%%rcsVL28r~ z8`0%VbC;29_HN;Uw@PAJGP0m>4pS-^!(#AAJ9!~v4o=gT94^&&MZ84^llGrEBjfbu z%^PdGqhr$h2goVuy&dnCI!klAGUR=bp>~ly_ReDa@s~;!J|{UWzjB#%KIP%*93ZPz z5p!Evk*wDD8eb=6TKG(y&q~tY(v@`~oq;T-cHzzo;d|RHDJ!?`$L1^jPl??tQ!(Cs zj#2pa96u{7tC_}~FHvl2MN~I=*YfK{Ro%Gvq%qA+b(x9XhC8Jj*M`#ITUP* z!jj}_^t1(8`4($7kdA#SH}(tXi@JE}zM2}%^XGaTc9N%Tyst~eupRt*jRO1Vr8Tgl zRe<%&8hLTvr?zoM%P-R=a@JiqYdUaiLitFpR(R-q*0{iIbXXzf!hoC=3lEKYOUV+w zw3vObmhSefw;g0x$aZ6EHdHR4cMFU7(`E&@v(sQ0 z^kv__x1TVW>Ro;#^+3q^><`A%v59hg8&7)ge05&Biig}q@}sI06O|MLO*6~$2>klM zbxF<(8QPt#uXb9vGGclO-!$83kyK8%v%ZbK#V*Fvl|B>S!tJL|WopYIN`_%%cLdyz zlF#yN!%uF|ZsY46L%=F_MhY0Bj@$TcoU!R%)*;~qU1VJ{mq{9;*XdLc&t5r9o8{^0 zDPq!{_a?CAn?`BDgIEFE0G7S3rJNsbaq`|P?0!IfJy>=(#jTGLw&JG2#zH3Tn%>K= z+Z3nr8^~C{UOTZ8Ti0)}1HrR*{8?19-w+&s(X)3kQsdROxO{zRUdiu_OoOd;Up7@*Hv-htYiD zW~wm}RwM3tzq+UOe5~61(in0%21@nj8K#RhQvO%Oo4zXDQMI*yw6jKVH)h6~-l?~a zwjYZbQplR+Nqe&SEM1nJdUjiKOV5W7A0Aa^_(g5sI3aAj$<$0*ZAJVnHcz48B~jWp z)!h{T$g#Y0>DerIV2$hvi`>GU?-i zCJZXrm)0WoBdlMaCf1+0!M*~d?ghMuSXM1+P^-oF+TTRXh90gJ#dyUSouu4l|KKO*RNhxHn>R%dIU}Cv)Kih z$})()qIyj;F@SA-_q@T(w)o$%`+pLlUkk$BoXBu5>0 zzqkj@WpJ<0kGI|tF0_yj%Q`^!zO>IaDx^3^lD0{mIarp}Z-=wg+GkP^+n!d59&0>L z&wms>7i=N@B8BMs62H3fC&B3b5GP#9A39eITn%ds6=BY6<&?T@-kFM#@6_GmH|Jv} z?ss8lmQ{?-(eq!o>5Z4YyPILSNQazOsCl#oqfwI6$hVlsEw zO;#pfhsg~)hKDO$mEY`qRz=yHj)zZ_m4E+!#(NDOpPcSVCEumySvfB>r+00W3C8YE@=HC5-{X5ELCz%e6}xyQU*$Bmi#)x;e^5$$dTD04 zrl#f)c6*llDcAA^rQIeQ%NE#g8bdnA3$h(_`YvvmA8HYs2*TR+QIsMxNpHMeYj%D< zbF0IdO#krVGYz_3$7D1#GGB-|G&Qx@7AgJb>qesCN6T*!$I_kAC^X2 zO|UwEJK|zBsWY}YbD*}qNp9TL1wt-^Cj%b!_k!eVzqCY z7C?g4(SMR+C)o)#?bBF{3Dffj4;~mIV#~^IOVu;c>Buk=Kv9;=@W;(ZAH+7E$>2Gg zeAoOwlk@rD1BZ^=>z`P^ybvBv6T$_6feYSNP)x|ASbTl+@HJw~K$8r;{H<;oTXW1$M{L3C@)~o~D`d6L zBR)UA9`lu*L*nFfmr~M+;oT+!xBH|`5e9m5yj7Uh%h$_`ZH@K>S_eS&bF}_yEB|zq z&_~0OOZIDSQ0#XrEm9FoLSd-x*kdWL8PD$daCUBX=f-jK@Gxv^i&A85r`vA3J{O4y zR+|b*>d^_0T5*d>im$_2&-c>b^Li@lD|AxYREfisaih!iMK=z$bi<=ZNoJC1xqMk7xN{2 zmUywtXRd)!ZdCBZQ8kMU!N*BE{3vyk*=gve95PFScj&U&M6WH%JQm$2VD7MDaH79p zgC%XJ4)qOcrXRjvL=GK#zC1Hj<4Z?RzdeqBcpXKFUH=iD=IlM3DMp>-JHtYKw zz5*Ps)y~zrNNX(CWEGK;Ga<|tBU@g`QkOTpkX;w4u!jH0gzI~W)cL0g9Z_%WG@6R~ zr;7%rW7xJ_KSYlrh&CI4QEYEl|+?vbDAKdIKLlIi~zu^72PcUwsu=70O>K$P;`- zu&D1@WzFLtSuZ-fi4z;lIV3-F+P<%?jyc}9nX*ERM{sb)xP0J_2Bsu`k^f;l50jmC zIMel))Nwjg<~+5GrnZW7QrQpJ-qTzmWenV8*o13uQarss)qNW)tMHGbY?E1U#Wp-# zF^DMwWi4W)d%E#LQRmX^NPLKlw}{ZOV+&CnH0%tL4?T-9OuaPxgISdF{hd~Fd{z%) z(XVPxF>)2Xr<8bax?UybZkkd;kzb$VxYA1b$bkhd%H5f^>QSZv_x*-t<))rHIq-ga z^1+wttl_+G^-|HeYzIW&X85W=a~zme?NNub;!x@)aCw=%!a4B1bJgJvF#jXU&)! zU30p0>a;}9fQq>ImHn(m1NIlmj_u!VT3wg5D*{`)Kr)V)A|kI0)zk*>ogZ3b&QXT)lwsk` zTO7`CWioF3sOm4rw-fo1x6G-_LzS~kc2>K><<|u8h%>UH`4aVtPC^k1mZ*zQ=thQP zWV9_h&gH6C`I(i3_bYwoV2+Ndb6p%9AD}Ym49iqstJ5vNb0(9To1|J+F5_!55}COE z*t=6FE8?@xtQ>htSZQRlcTuMk%5w(rv?GVv@kVMXpemH%jg&a=NPGo_?a+&@yeF;X z&fDB)>bfb!dDW8hoRdf%-GXxJLUy`S_W85H2J7~mA`=gj%jxdkMQcT_zQxb#srdaA z|1H?-%e8k*4R)y2nWw3;w_fUy6f)B5n$R+yW=HE(;qze>4_8FoJG7MOw-S@K52jq2 zIU&BruX=imKjd0iSY*CC6UZ)mew@dSasJUJ%d?i7lbXIc$c9-;`d@jziCLDHC7)b< zxxL7*O_^J8kP|*BcJQswQl<@-UF&g?I{(2&nYvR62i9dLt(VMe-X7pm2My*X@2G?q zRrOmGEw1u6vl|_oshJ+AFrj6htO(FtdHSq(08MO*C7tMau#pniy*1pIeOA=8wb3)q zYeXrvxf$Q&$;)e;qh2&@_r0W4;&+ojD^|lcfaV+%$KpZjIu48LQkBCuBbbM?r~96< zHmQHiKYADIOBL_h8ZkC~3KFV($)l7dT4PujRyzE;8N7}^UwSmoep2KjjlWWXFZsG9 z*3b~W=yR5o6TJbqShWRNc5L0cln}s^i;W>Apx-lvJ@(8}rv6sm{B#Y4ZJ5jV;n97Y z-t#OaQ_o9NXOFn8TcWZskw7!XTG>9|-f~Tgpb&>hWZx6L!HObEQw9V~?dAZ?Hst2GF4Zu|QG3w|deFV_?%T>VWpMLjKDq6Cxogzo1D%S;bG0%a2JhX!N%BgVoYVPW zB^GLRH*@CC;tqE(=O=+;!Px8xhGB`Nl@V=ailo;A1+~$}vk??%Qa&&%U`mD4#Tdd7 z#{-*>NgdKZwTZmH<>5Ov;VJZdLadk_AC!Lm@<-$3mTgBh4NqTn5qRuLtq`ixBE;uP z8`s3&-`^i|KbJbMN9TG%V}rel7US*1cD8J04JtvAvTw)^GyTw}w13-71v}!vbYjau*p8+FFN~(qb0-Uz4N^24$@#2T7mA#rZe8bKX@Zc z#0i%;v9jJ_XT6C2+Ar9d^@66oBz$>(W`5ozF)?v|v%Gv}-j>0y{OjKJ)OvcJ*|kyX zsJi%#6Yo^U<}J4hXN~4OZ?E9{0a|8yt`^LH7{CUtw-xCCaJUU z8=1uE3?~E+QC+A=uMA|A@7dLwAov5z-YF*=#EzU z?4g({(th{J=u~Il-JGTj^Y#w~dG4jWc>F{~rFW2cCvZ|o$iSv^@2BGU_4e9TZ+fvQ zyiSBwdzZVfue7M|sp111G@6Lzx2;(IJtsK!wFfQxxNS>T)8D9x`?72=U&UYK6OfG)f$S7`GC-vM%VloFUpd8u7NTklr z&aSbsu@9oGGl%zDJV`*yYSjJS5{dIEkUTHF|C80N{qgdyhN@XrPs;N;cTYz1_OC1I zU&rHmUi&Wj(bue!s$`T*Q}4#j=2m!%Rr~Fw-?1&uwHT>D`Er_)U;Djer!HTW3SE>T<3gkINBiMKD> zLg)T@tz*iB;DE$=JwHv8jVh(3d551JLk-95(4+5$bj(8o1zLfkM^g50q$WFc;vz$g z1UHL#>o*f1olJc>x)dR`Yf|I%)t3yCTR$@!U{_IGA@J%8UETZ2mp8l;n&W6{vA@Yr zefp}$49z#7mZ%HsocnR9to6QqwEhk&-9-}#HCH>u748SO1*u`gA2pf3iEjr_eF;sG#68PG)=Wt4zWC=VT@2>!hx*CPm%3 zL2X>^92MeR+UG8aS@G1@-%%+SKe@pwz)UihrX_Btsbq|<-M$V9SGC@ygs^Lw3;88S zxiT?~eA7883As;VRMU$Cla#Dt41A^xj%#R!&pl=`MOjSPV6u>#PC-Eto!2wDMP7b% zjeG3|nSJD@oTau;wx*<{RMym#i*Rzkj=g`1&XUI6!y~_}>=KiMpqlE&DAz!Rndd5V z{WCvMZgf%kUW0(yA})MFf|!OebWd8CzREPB6|Xw1QMkc)!h+yp(u5)p=HcPT^}l3& z(?G#WpoVU)X=Tgti?TK9s6Ghck9_E9G4q3>CQC3V}(LEV7D>sywiH~Ly4$m^{ zN#b5z%1EAQzbQ$L8e1l5X=K^Qcxh-{PggfRG<=vDqgUxP*s;r*hVhN&%q-W=QbE*3 zU#zk0ImW|8OPK$%=*mQ{uZ6?X?m&qvLvGhDVs~aba$X z23_1bgdE*UU19N7N5*I?=T%=L3yhXQ{E>7T#WT-IEJPk6dcuw|fv- zRHVZu$G7=z`m5Q6ZCYuQ(fZ^R#*t`5u}xS{<{%$=m-U3$fddog`I(nL^Ot_wUYOn5 z+FF)vu?GBa@+(k93?xoau8u&qvsN6e3|RBE%O?}2gWVKfWuS(B2gUHTyidMAszkmNXl8N!c=tY=;dov1#A4 z3h$3$sGK`3BNZj7WX^*=qhHNpN{GlX4)hm86YtgP|Ky+Bw{LH}bm=1X|4DHF1t@iO z_4S&XnhGf0o$Tx5gWtM!GvdEE_5aM_$B!S=YHMrX*3#1Y=HlwQg!%+%ZfSwWh6d98 z*Ka}Sn6MScz9T4X`hTaGn3$}4{rdGyr0+NslEu@~(xAJ$8^%UQVH6Qs_&{rG3tW9> z4MI=sfrEX!^48tFy7pV?HAzV-+*POBx>^$ET*IV0LyEM+C(G zT^;TCZGC%Sy6;GmR=1p_TSqI+$jtJ;Dg(kwWo&GGRZmYZ^3$hJb6Htg{{b`Fp@AxoGJL>Kfgl>zxN6~cSPz`!8f z+uM5q?ZpBV3cGlGl*+Tn>4 z1gH=-vH{G@%pm=DQy1Yf`|?x+KY%4 z(Qhfv@82h)sVK}w36T1B68%Vc=ehHZWZ6W+BK0Y4aJ3E2t2S3=V9Rh4G zBH)syc`E`-_zpq45wRoMi0Gd#rKP3i1b)I#5N@IkuJ$8DJ0$uN!WM*25c>ZK{@?iw zI<|To^`UrlbTmXnMBoTNZtEThtSH5{T`!s>Yw&&m0VVu~6VVPtTM%tRM1$y`DkUW) z9esU$t8J2S1wzk+-U(eI{6NT7TU!e#g1cH1el|Qjy!svSJ@G%x)R({wf}1O+HN^klPUv*wJHBFh)e{5TO@4|8u3hqGB9Hm`Oz6LA1d? z`!n%Bq4W9qd7RKMvK8d!=Hlt;={Q>7LQG5y9v&W!2L}g(zrR0@bPrKcQFudr9q#!# z3bq-1!*{$+BweuxTtX-boiih1KtzX#3ei7Rs;aB0swyj&knjHo{HuZx20`Vg9E1-6 z3P0dwWo3ABa`GzvurTxtlAxef+;w$zMEk+fSd9CJMZ-2@^o)1o6w*b@P@r8y^$R

Kf3IMuuBjpVoz=dN!1+t(f5!jk&%b2(Wfx-HCFDYdxONr)j~^p=cyugm zGtb3$nq}eAR*}HM%0}pa?eD@)h)`8swG$<~2>e9b{mcCg0s2=VuoH41Uqkbt9}xRB z0k&D>!!Da5khG2go+BsNx3I8M5PW}E$;dA`TwhxaLxY1j>SI>@9JPa0TOcf}YA0|J zIwuN&b@ju4@|ig2Cw`o;XG%&k?65Axcfb9PAGeH$tGf1kei!av_c8GKdeSbY80tIv z@aZws|BsKMx!B}t|4EEpL|^)I99V_@OBMp_-^%i5{KOcToskB+-xT6|9Bc3+R>`1Z z>3--J-``csy!mqJlxrbeNSFuByhZq2I|=Rm!|+oUn4Vf4hgW@q@UK6QX@m)W%CqW1 z#OMFte@3AwHw*aQ76aG&df0EB32Jt}qQ49Gult;~ic-AjRSq{(7Vx{-07^L|{7xnb z*U4XmfSO6Xp?3tI8XbnI31pYaiB%u_HRmMc`RQw`enS|DkdNqV3H^UB%7X*%N^q_Z zjX1AuK0LAyxbTbb@2byPhCP!FsDXPKOZYv6|85qJ-_6AF`?&y$*(Cf{7716&S%ME0 z(|B&%4}9Xs5KN6BnFv3dT%C^+zJ?QXQUW*8c8Rficz6V_EGdMe?@MtWmu7soT`6cf z_}=?#pCdYmt8inbJahOJO{TLd6%Cce*cP#~;kFButZ6&;L^i})C_jlEDj&ZJv z5iRgIcLjf(5AZM-#~rqO5m(pDbDB7fpfg81)cYwU;HlIzwUG6ZB&G6 zOb2Ke;<#oJz*AH|&ByU4c>roZWlpF(M?3 z4yv_~JqTGIBb%rpQq3WuK57}iojZ+RE$WB!<*m4MX)AsXTzOFw;>WK~JRUnBemNDc!e10l-`R6i@h zaUFzTs|d%{3rYB+{1s3r8o@6&)Zizg?BSr+DO}*G7%miM2a@0G@w@p`@TLmK&5Nh; zteSSXxOdhquZ-GIz>dZC5jP&$QwY#`xpssY|qfFnq^(3^#nQLChO)M?Z61M2QtnDRbb8QP$wpK88QbnZg}2+d;{{1n2P@ z#JNB9!Q+o#D}En(3^NGM+F=-33a*ti@TrLe4z&OdH30U69H_QN_OL>7n4;S7`!YOf zXon;2H({$R2746NBjgDE&n3N<<6StZ!2#C;w85@z7@p@&!n>?4co?$rd~*@WY6^*HWQ58zaX<8Nz_J&-)cl?%99OD)c6 z%nuBT7_RTDi5JwPjuc6u;3$KO819CXuQ+j;P%U`T(1)vMPTL`fcFRjqJZ_>l)c@QD{UNqGfz-F2&c_KqBfAem&nBf8Egx#??P?+p=kRncRa%6g1+_dEKC!JB2GIPvd94{D7CA z;u3zB?uq+^W>@(pH;n*di{}mDc*X!gdOwb*tjd6F(S_rL3}28P!aH#MGm^otbrD=! z$8h_uZrrlF2`su=@i(ml_`CW^aITuhU#Im!SWzn;U)GFAx6Z?dsyW=MbQXW~Z4hjH zBei}f{^)|*xXiXuXc)txXb2z&;m=x?0U)IhAQAac9I`|7Pd^Gl?I5s~M6?C)YF+}* zmU;NpJP#l1=D_v)Bv_<%!PoLu2+XX4(1vNqMt=FVa|uGxIgYUf%VvJ@>whQysJ!aj zg3bwOnIPe%BRF0#Ovr%anaBo6jgXA|D6xlxCv=k_0oC!{Bs``QhsgF7JgjvI4{TU~ zkKZS7yX;=vKfeWPYpQXF_)<_$9mQ?S=kS2WMJOIz##7rS;JtU?v)_rGxL0CXV_jL# z6m(3I@QP6qUOqwsM0gpZQuMiW7{?0-QQJUzOzmF8%?p88}Kg~#c;~278ed11No#`{7Kdv?u5pS;JRt>`WzAayRj4ZORH!es_LJHo*5iE zr*P<)Sb@gTWvCijgrdGV$n2Pgq~ z`NQV%{b7s1AGUxVY&iphK_j5-S1@Pl;;&Bd`B#+Wing`i%9@umT1H6)%>#I0T`OKv zSqC{~HF#WME&e&b2|gEh;xV;Dcy{+JM7GZ3F4c3mVbLr+%$&!se49t>mpR}InIUlp zOaiyx4-oV30Oe1aWBMMEwhvvu67l_iSqUlcWBJ}b1Wld2pb}mWXM;N6boda+#7=-> z$_(h{&%wLuMF?$Kgv=h46Kb6UkLnpP$r}fq@)WNmTu-9_2!vd zjMV*)iT~34=r4tMm59^jkdT$;9+Bwg780lZHYonwEAP17&%6@1^l=coQB9RKY1KHu{GpX%|?_=yQ^1z;GeNE`mB zCn)}?P03d474#+XeJ6&Q5H-454AtoHYQ2DJcJx0{Z}?fG4BP7eziQ$*F_S0GBWmJ$ zqBi+i!~a6viTDwGeq+6=A9TM}ef_Ck)ngVCm*9tLlRxSWgzlho4N^6#mkG^d7!O7~ z;0MFR5&hdfEe7<@|5ADK3|J?=cW!s7Na<1|vaw_`xgrmx(fmA`cjx57RQ|K&Xz zH8s`R{pjAm>`v(5&wBXJ@DNyu{dYx$1;A!q0z%eFaQM^(roT(!e{+&^WQK8Na~I4` zj=}saYHxq?!CyN0TRgw`SD?HZhg}&6*k-{~8+T&A%3m(hZ(<$JMUR0_!6I5iO+o9x z515-6g}Iq2m`A?&w{4%mLhvX2w4u5J_PqTLymm#P*3jlu+#qt|J!cqdFnX}pk4^@qyXjeP;OEc<-qQvkS&qpx{dTAmkuD43Lu>b zAoi66vM9HzlC=ndIrSj!UIn|}H^Y;UF<1W){ttX|>t7Zvt>)x(P(Drz<$wq*j}Zoy zpE&Mjkw89Y5o8d~^JyzUMruIC?0D z^AhDih#Zb4!hrHnpqjr7*Q@$KH1Z<|*{j3J%w)KZa!-b(DCSb#1*bf!fYZGT9=Rnx z{YUuggp@9$*g2S?*gug|B61k|L>>ka%Ikq*T`wFmI0O3xFyK9i0XNDa-7ZQ8>naq> zt{sHao|V9faxM?tQuO~S|L4A`6t7~cz_lJq_9~^niw%QF2jSa#T<705qSr*J1$G|ePA7uS&VGoLF-1E$K{;T|* zzZP=`miD0d6+jq@-TI@rv>VC?I3gT2C>NmB(gvKbw}Xf!55$#4fOC=!95!VK>3|2I z@qG+zvid+apdR-4p_d1FX8+}!sYgn=uzy)UM0b&p4gfq5Z`TGyD5md*YRAqYIOTs9 z1e|xnx4Jm6&$NL94jgc|C+Q5@T=Z5|$$xWWM+9=IKU9YjA1q5V6LLBC-bUgk`IXL>E1iyQ@k;0d_r zmGAOb`3Gg!D5STIL(wn^(vS^^*g6r9j_LX%M-zl%psrm%;8FP}kWJSFg<@AQYZ(Nq z(rIwYYzP0MF3`)L0lBXepzo9Pmt#Pv|Ip6wnu78l0NDcoY5gb`i}=SQBJ>f8;;;cN zB=BrS@yqrZ_}DZLPUVx}k=p@b1x=9NyA0td&g_uc2G;&@#GbpqRKArpSyc4TK-CyP z!OysG<^T!Bwn?it`PPj?bjLD;G%bQ>#UywZ_CiKU4Oo7y2K9_7aH&~oLSxOQa>^e9n&Oen!urEWEqP47a+5924Wh4v?bb8zICN;lv|7Ih5f;kuqR{z_(B(eH)s;%e7=wCdPLv=vSOVoD%)>Ul+8Lz-SS%Q&VG7^z@kS`t_JA`s|2~X(A%_=Iuj7tTl;s z7IFTsLPkc8t*2Rwi7+r=X3Wf33MVJ_gNFxO+PV$vLifp|p}_*t$uAI{K}78HCe{qA z_aGy~)~%z*E^cMR5_WTAKlt`zIR60*2-=H?haX#JW5)*9Z@}^qpSS3`%ZLcO5fV|X zrNe}_a$-ejjzGG+(A%u}Q_^?@eM(jJ{XN#_rK*T^s zfvsod#o{=RV=LU^h!@)Daqt{1nAksoq_k+bqag;or~Ww3C5n;Q1h8q^jaVkS_Aw%^ zO?;RPyEwM6OBw^N3+TMdl<>q<7U~)+SLfd#8h{5i280W7cIf;dCN7u1m#bB2_8OXjAfxPm})%ibipw&7pClL-RZUT;L80?V2V9NatO!KF=iu)a+y7>Y-rd@S0@*L`?urF8W=FCVX#R7TUomgBXXtU z8}4B7439C`sDlBcE~1whoO+9{Z~Ei^u|$B5&M&(V2^$NF2?^cp_Q16|L*?mBjZ zP6NZ~Uy{N4*XTPV48-3HK~c*e*T)yf!FuCAj;}W$1NvuVu=WzxLb)A#h^}X*I)wc8 zA(pXDpBy%rQvfPOOouVVCo)(QhU3kuj|N((fP$z~`IV%}tHFk;=c zy6&aAiyfraB&*+Ky#ZJqnP8hUGo1F9Kskrgu=V|B*yun9JDs-!odL}vD_Iz&oP7&;`Sdq5Bb1w;e{gi%0B zy8Cy=_&(2b-+O z0KmfX8()S3K$svXP5K+>f&hTSbx;9J5C9j@i35OVH_-aO@e*PHSn5RU|G{wqAaMw- z{~Nc%0)Sf+ztll}7QinL0CHyj>azePoB%)<403+ygE*+yRRH;;&jQ$C0)Txz1c=tW zt4xGXj}KZRQdLpVMqB??0$6{*#J$7@tOB5_Agkl^V%^j}d94kfv#KMoS2DKt#^JzD zP(iZ>E(?c4!(H8hTE1y0aoEdgH^%B}RBwY*RmS;YV5HNubKyy?D{*5XP#J4rdAHY% zQ61tLb7|yl!AkN7Z@1gT03UImFT|`Qq!8e-pthVnJfBOnnr;Z*Jv_y3R6L68ih*!g zV26x{)1mGmHV^qr*Ozu%O0x1*m%h- z>7=}VKFw+?*N6}$mY`2a^^$!23Ura3rnYIA1Uc!3+44TU>Z^XSTkH2 zO?vyGV{^;r=T^W5^O}1O4r(ffl^4U#X))bv14oL=4v&uJ4rLILcxq?_FV~ZDe3n}n zBba`8?w4CUfc^V6a%D1}Cxw(}B}G7*R|j<)KD_pA(tcvE6@h3dK1+j8n9PWdQ-_eK zk8qO66L+IagA{#2>oNW&N?^#J5)xdZ4l$v40a2;K>N~k8)Y9huDcR8M-AipE00e7_ zV@MEqu;~!s-ihNz0zm- zwoYV^;|w5^MQXxHR!r49opYHD2rYgH=ha4>>)$=m1`P2-f&?EYD>rG<&$#EgNMT&e zm{tO(6hUxY8Wf>dZdYoA13Vr2Y~Q@&(ovW#`g{++5o%x%6|%<e7lN(fa)eF&U9Kh&X+X-Y~Z~5S92Zk{gA=aV| zhr9FEEw|YWA>jr94iD4?x%D`#knn0xNvKr_LucUTS_CseF&z+ypeI1V6j9MKe0oAO zHgy+_?A*=w@xl4S&}k5hmt_4jt5rls7{gaAuZ#0*hX#+-?fhR$w{&Tb%S_T*fwuU8lJ% z6NMoqoRYAB#I*Ko1`GMHlGOF3ND?){GQ(-dwaY=*s*J8fWlH}mK68hHj|2^ao$$A) z{aVao=;F!)tKd%4Jvv`XXje>wNn$Ppk&;`xDv#7Dj+SJ1q4;o02y-gcd(xwP zu9Hntc<^wE`FEdBf2d7RUg@#D-9k(PVQw}v_M75c>1qr@rDe2p zYD5|m=6ybp<8XmqE`TnClmb^cTvNyu@A#(X_YZHL8^Wlt0Mf$*xUE`lA?Bx!drgYW zwVKQ~&4tIM@7)R`=h}eU!LVTV9gQP>CoeK^)cgBjf^%e(4H}+U4Nm^?m6&D10K9Qi z!R33b;%ZwdEM`9l$+)aI$^U*CpYoI~3DX53@Zj@PexE7x9Ktmm8JWlv21pEpP+heB z52y-myD-;7oaL7Nnj~opytpE53F{W@_zfGdL%*i=NVB>~WHV$zmdbb8xAwFXP%c&u? zW0)2xU+-V9(0Z(zQQ$4OTr<_y@RH5*Mco`OZM&!iEjE(%xY)CO&qB!q z1S%D85NjMhhldRl1O?t$O2_V+>8bDOI!$v88AkW{1)OGe8#&;Fo(4FZ=gpPX5S9qLZk-dwXb?UH%qV6 znCi2FjGzCE#*53O%D4+*aUIDa!5#?R2)X)xv`s0CGbVoR=GsttDN3!{1d|)Z)r_g< zs!496!MYWsHXu7Sj-lj4i-dKujT!Tyu7hq%4_asf zsbHq&RiW}(nVji%X@*3NJ-(l!tfFe?G(qb5V)Mi5eG?_fmaO)5CJVgW`l`n-B6o~W z(=(t*{Z4+)uBWd*&#;Y##!g;suhjgM-SF<(=Ai{Z|~u{V3}&PAdSGtAr?pA$Qr zPVG5$uo(%9qk&SLm83N7>(44nq!qX>7Go4DU`d@@+!O}| zl6co16=By)`+mjh_)2~!aVt9>k42;r?lM0@Nei3p_s8v)xrlme$qj#I_W=-dbv;~Jrj3>w^RxAVP43Mn@J`#LPpF+ZW3(d zZj5jHB+#x2?t6e;gThBVE-)qc`H;weg#;Jx;lMU4C%lBpH<8RU{71S&pV6s*O62ER zDoWU=P8=7`GpW@NRAJNv0NhcHMPWt0qr-F4#|G&1PLdoQvefd%%S>|v$O z4Y?8V3Z*Rozos95{{vOY2O~Ze#Tyl&ZuD&(t)6jxJCRe1B6F``mEC|qApo3JJsXd~ z@xg#g?aXE&B1vC&PaPPXxU3g{a2Nmw@%=J4Hj3M$eQwjWHBe?(yR>VH`ekDd&vH$j zq+W?Nmc&>B$JXd$KbM1{+4dGj$S6iIP9<*VsG(;(qP@h4{tS_qNW^{e>5eH>tOgOawA_DJ{On{ z6~j=6punDTsULTHVF^iAL`}d?AtuHnkWo{(rhg{Vub47zt%eo`VN~Np4G*8jOU+#6 z4mAiLwad)}1PQpJ883Vte6U_@FuYz(7IHYXBb1Z8R*7Li$Ra6%%@UX+6G@KR!f(f% z(NiO}C4Ed_f@^*5>D2m|xN4dO?=qDZ2|o1zs7={XeeuM3_|h(2!4lI+f}%``W?kbK zAHLALZqsy+?h&|e(VJJ%w3!J`HV`#9IqZDbBGQD!k_D9#wdqeX-R1n2-tg%_NPxkacBP&k>`H?O|C!`*^4`r7c}Z*pF?W08Q^8=XWn@sZ#EGg#5T4 z3vu-mco`fVD1P>EyMr$0q zKNWfB7>q0lezY_($EeXWmy~{RUhlE(U`~h-D%r2!*<9ucpM-HmRwmVK+^FKx& zrY0;-#BUi~B>#lHJ{s$ufO8~~%eg_h&0rJT4_k%}IYsDON-=wa418TLLJ07Vw#r3v zMHf#kBw2Z#bg7MS>#q!wHeqGiv-BBwMgO=T{vBv?0_X3Rf_5`!@h&aH$ZO1gY_6u^ zN?{1MG%Rs`SMLmFykrSvi$UN_M17@H$h9l88GspkB9RJIpclJ9tgGaZkIJ+MD9O2J zSp%u?Sw57~B7{w2BR&OJEfTYiSCJUG#HTe;Mo2&SFB5S#FSoh zq@|3lX>PO37(meo#8atEyU|S__7ES5V2uK4_mm$YC%zfW%FpgYHS&X|n$GDM= zu6^Zwr;FMM4>zQO(FgE-p5ci!yVMr7wJn9X7cz*q^sybcCh5)=AA zny>q8o+oXrP+0+QQlRRBvp(+Ma$)9iTMqcFqNeFFld>il$%AC%7bby{pY)c^Ocf!X zE6@>bi|}ir2t)gsH2I?yUp1{@q8D#>N*Bl%!W9>NFFEM%9lnETxEA`hls7Yt3fJZn zV6$lXVm`zeU+W${g!;7Jq=n)6@R|1K74Ch^TV?8OrZG5l5r)U0ZjHUJ#9irS;bxKl z0@riR?3Fa{1>bM-{U7Hd~eEIj3e{A=Tv^@Lnq%9`BoD zf%8E+VzJ1`UI+82x``L59?}dmijbMD%X!OV$E+^5Yudc!0YOzJjXC4Vv||@sjCz@j z6t0bBeEPY}hP^eNT6G>AlpqKxkSpB}ynh|j=pwr@E17z)k~iW8**5PR28_vT=ML3H zge)A4GyFbPr)P1r-8_)Dr9bcsnjqBdTW02jb;}Jsz>zd%A>Dx8NCvbI9DEHb_=4nM zQ|YN;A##sVj}ex4talYjL7H;nicN01xJ%!jdg6Uk5mAWAUD=OliGmzq&#$MG1x$>8 zV#z%a0BG*;_u6u^cO+7g^7UeJiOlKI&y4P~S0V_TT>beke=f^Gdhq%+D6g9ok)*W} zr=|9J)pWr&mK;{zzer*m56C87)%1IvdOc}0k>B+*zyiA_3_p_f#&}Py;+J;s#dm;Dt(O-HwfsE`-f1fSqY!-Q=k{O;I(N5iII%!%Y`a+ zZY6G9@vtp*11|szRfVDAqOaE1+XED=d*05zr;U3vZ!KB3XiaWFmHcsZgU6b5E7IeA z834NHpw{GdDLsoV51BbX4RN4OT|BQeGzYl(fR#KsyS8Htmt7UI|}n-muU@VA%+zQFCt3H8ho3|=v@H~YR| zjKvy@g4lgZ2_!X2(xSj!KXHGHRba*9N4%*MW32L1HA|3c&44RRzyv-Mc9rrdxm@gU zyS?=GtaqsylHJiZHxdqSLnrP6x_o2 z`Yi4B(~}g6Hu@3#fSn)%$1d$hOjm_sL%Kf0I@gl&IUQlRs%g@b`D6yNmc6qcRY*ByF`$jQHCv32 zS6-Lsc}E4#r(R`f(vj0}PRL>1Z!{!G{HvNh(q0X=;+NI=}2fqrURmx_^ge3t3vTiHJCPwVY;Ec ziHzaO{SM-@X$c^_qBWAS& zhHK*kFzUN_WOmj6o=hTm_Q|0kLZ>oXsMwSE{{LXdG@S}#1~`TT1nX$KK1CF3+wLOlx$~I$!Y%XSf(y)I zabZ>E@K}0w9mdh40(tlegHQfIujm6H`ZBzOe3wgh)%3#<7(74=0R( z8`$eI*iU!NuaFcvBO1t;^C+8A2$BR-Z*>rCH8Sc!fsXW$y7}zkVzDM$lD$GXdei!u zkRP%zxVr#QZ>ArSn!S4+D80>}jljF4f(Dk_y~E6G1%ktN;V-gtMV6~@`H?g+1S-3^ z2atuXnQ6(h_HVgOiZ@eWyI{wcPB{*`Ht17-V{Rvg^XT#q-&?A<1MBx13AlK8d|t9n z?71s|TtWrNCU}4I7`goTB`l>gov$rzV0T7F*izrE*UD$MdI<|Tol?94z>e11g4fy_ z15%+F{ep_U*k=V^X>;b#DT)$P9i3L@!mv=&w?M&u@br13UoWuWz3a;lM0gH!a`Mn6 zXa{xPoN_4pL48g-51}&+`C$)}ZYpPcwz;0=CvZXjUOWyQU{AZ{*(Yh7Yvu!+iSz!8 zBd?i9m)^S9z<=NasMCF8dz9+5BWF@EF)F@>3V<0bTNl-r1phRxS`V@-@e*|B3K3WZ z66TK%F_Pw_p6!g~>ae;jJwnt|lCP(ygw~gT?aS=G*B5=5p?!XIX8Y>(`H{q@jyF$P zZ%!%_0+-W7C{uL-LvDV>2senCm_lOn-K(hm?Pq7f@J*LPd$kZjb@5B`piWNDBPj3vrWmLQwe0tdBkw5Id8Fqd3991-Cl98U*OMSEDPzj$xY+Q=9`TN zc;M!IDQ9|<1WzWfj=cJ0+efNwKTNJ=!j>Q$+_a#O-N8PEmwPQv#zHbg7U^|EWSA*A zwP^#N4hVV`%PCRo2fobiI2Uc*!>6wTo%wXH`>jMiNxWz`4OxIpflUaJyGI2)#4yst zhb2&qc+G#CZn>{Apn?BFt>kU*02~@-z3ij_&1;sE@Pm%|zorbN?ETp*$hg8*}@TkEM zhQdfXxVAve(78NMN@^sXLILo#Zfg#&Qply z_!Sg?F(vj*TYyr^JJAiIG5s+U;$$R>+t2UM@U77RF0xsF0k~(krffw*oy>grT~~sD zu?h+mJnYB$;3uLb{f&#D&P!hM9W;gXZ8J zrtjwUZC7OE7;;ZLg1I5Q6x|c{!^c6LS%HT~XTs-*KD#CUA2229d;v;;ADSHgd>(ul zxA*dsf_LtD*#sD$%E-Ey&i>Se>N!Tf(Z){flc!YT9v0*t%m6#9_RQRAzZ^Ki5K~|C zg(o!zVqqh<>E5^2%!w}qZC`tW2S#S0h`N^y#Qdn@<~y@Nc5`Z&%Yv#iIuKNR4~{j~ zVH4?nPFSKM&383K3RA@?SFjCvKBio+Cez%DqV)O$j_`1%#zU4fbougVSOO7^~ljR=p5Kf*pE9c|yW!N}|b z#J(o)TmV~^UvFL}1{pjMpn=~%-l3M(M-Io5QjCO~?@UyT+OE-dBsAta^?C7!Goxl| zADQ96T#8Z-mk8kk_Xk<NQ)Kt z5q%MAF&dqM5Ax6A|y{4q(_!w3@ZuBsp5>-1;z!@et0k+3H$^z507pQaBJwb6k zM9xFoK6Dr$X`!<*kTc27*Jd$zz!6`gE(bL|@90T(c(4REe7YKl3bVy4NQ^!RdHD4{ zDjpB$m+qt_87Uf-He!g%4mS^NWUG!%40T^ue|70Y#nQPln;GJlaS!EygGt8Z4clGe zWSuCQ0)^WNf(bJ_2@t}-t0NrPg;7!(Cs!60D48>SZrz*;1){8>$%&PCH(sip+6lwW zB4qYwK3rZgcs)jrfj~IIPTUr(fw`3?x^17I%!B+?06Yf|2(1V*M@D8JEs3$XcM4UD!-rhI5{GM^*C z9N}%Ic2o%&Cqo!|wj>CCnirX{zzld^Mn(z8TxV4~b?t?#!8@fyM#FwWq_9T_+UgZ;aOzcm!p+Rl6fd9N%KsWit$hFSp zrl*sLo1#AaF$K8JBQ?CFu=`jDEN9o3btH4T($9oX$(sSg^qM=%JKi$J7So?vpmP z2{FlayU=05T@96es(W-(_D~3LdfCfnV*&lpiMO14Xtb9z)W-JMj5PeJOXI?F4?w3-hDlr^mZ42`RLF5i)6>xtmoon3CYb8n&V zide;Mr|iViG-1eW(EC~k@VSl?sYgE?GxlW49CuzsnV`TP1ZrfiUpS$)G>-sn1jWBeKF2c*Kpv8-2BQl>kTX(ptS2 zw{w>qqkAz%#jxKZWe4egZOIkZ$fy6B>OL<8CwEM!8{5dKxdPUjMJkK@H;uW~>^uD;m;>s%H zUW6&%-4{WG;)gdAIF$#D?2dMXpFEwS!5h6T^P=iP&29tQGjep}j>R`AwNAF5mQXH7 zV6p6H+XkSE$g)<{+X#oNCUYT*xwMivcvXtz5(2%zA$y{d z%wQ4#b}^KBOO({;t=Bf~2dt7yBUOHV02WMNUo}NfRX>AZ9Ao~N0zm<<`6SF68nzdY zKfxcCw?^dTF#Aa7Yz0X7t{0Bk+_@60YPVF*dd6v>e;*r;=t7c@2Pg2sV!vG+QklY= zAO@Lub@ZIj~u)zz4l;+U!&_o~E^I(i2 z{xcwz4(PUm0&c=Ug0MBP{^TZ)8h>Xnc02Bx9oPEdeUWI09gX}Yb{eIFdxFi zQyMeic=b4-d;M{k(=_UFYjbCovKwPx{Ke5lySNrRti_h|hJXewAZHB)a+-hCj&}wU zA}aXr?9X$C^F2MdL&JcZpEh^tHk1aQa?pe7&6U#vU+<>RyZ*>NWZkOi?%13Q#?8Eb zRAAde2`A$I-gzzP2k&ZI1r@+{Ro+4v!fQZ_vl-|jQ|DmhBS=lLl^?Nq>Ahh_3Bbg} z`n85mF!t{I?GRBOIZfwv6y^+e``4tv_lXKLj2jL6JTr1MN$rpfrr9b5r^Lg)DYKR-TT;%4rGi9FE05Eq!)JP zmC1dG^tCa^-<+KH7=Bt34~GI!9O$! zefj@MBuDUnxOmT>C;de(kD{XfaGw84zZoQ#N3E^DIiNH;{nq$J|IK;+9Bt?M^Ir;= zXnAyM!h4>y_53*r2+)jw=&g9qNiOk{F1P*Z`w#hQ&<5BhQ2ti||JVWP zpaLlVf6~zkp!hHOL+?NJ0pU}eSCbPBE7+@>p$}7{)vo?{3RU~`H%ds z{_*kg_VM6z;#%qtKN= zr=utW^dSC|;J>HS|v z&amoV4BRMiApfRc62Ix_asMa%*8FYgA0l}3OXiP#0QhVF7yTdV-y1ad@BRM_FC#B6 zLw>oZ;4?r5Jh=zp90APWVF&UyA1N8?-L$q^8{yPi?V*nZlAqoU&eefSs z1`RKdaM11_9cNg;3Vq!%Z+XA)R?y@Asm~w$x2FX=1H{1sz(xP3J!l;C zSpRqdg2rFY(Ay_65|jqZ^9KDWnjhu!7YF?(+5!H9d%ZwG@DjP|%VAp18CwjcMG zGsF3dgU$^t@A}Ie*gv?xaP$RDA-N>@>x4i%Aijm}-d`j%3U=b}AP16uo^ z1r-0i+R;7>jsLUw|KeyG+8`SKH|a=bOJ)lPNrD2~fCQ)Rp9}%vf0zIA(Xu39mH~6{ z|B#tMIy(Q7frD~jmH~ceX7v3focR(x&q=||0_MN-91h<9_X&=k+~|q@8-Q2v_J29g z|3unfAvy`1*GcFg4nlDDg7X!Y&|3j;f`Sm7xZveq@DKfu++V$a?EJO+?-3oW z@)0w*)^R{T0QxvMyw@>0&@tr#ylzjEN>~+~mMy}{K(rRC=<8>?jl#T|5qkgE!DQX%kW;mVj%5n=C-ngcN^^1p%o`w5yG$ z7;VqL`I<>b=N5%LG#qU_-31vgA_BOG(BQSHpxM?_MdGh1{_psSLq)wzZD=1BB>MZ3 z`z_YLyo=L5+nwAuW|S__{|$PNQveq@O4^sZaJ^g$uskAsei(FOJhAeFDXT(2dm#y% z8%U^AXG(-*^n5qFCgPUxLMrxr$JehN3)Vi1s9d61a1FV|KXen)CVzZBb33S?rf-w& zRbWcA*UKS|=&X~Uwpx3yCW*o2;-jHm@k8z_f=^U~9^?5|>3f;OV>6V3OJ(r_~9WE=SMm_Yw>h*zHvTp)H?b8&dbA z{KC&7a^}0j(o65f>yPu@F@>;b_4K=}In@=(F(ryUW~axdeR7Y)^6W`&`esglynCn6 z$xc0wN&HfS$BSr!CcsCPq@r0>$`22IZb4DXxp770j++KHy9{eA^ETIjJ3@!p%e2Fl zSD>1D=?MTHz;o^>4gv~W)r&u}5CyzfQa(C{U2I);b?gY31g0OYb%yRX2NNP~)Y+pR zj2RK!q_RgU)Ku?_maR}ck$;`b67@vujgY6`Gl{I5Ia*g$5DyFX=6%Cl%IE+ajqi3G zxhoQGl;7^?Xcx-rGrRW)OuI8L&pVmD8J92bN3hS?COJ_=utrzozG;ErMS73qpVX&E( zAM2g1AUxC&+I!?>z7#HBNm*Qa3FUz2sCvOYw(&Vsb8P+d5h)t%|v-FKE+;wDLN zyhVqIAY3ba)yhAuQ54)01G^nT6!u5t%7SOih1+4c8}CZ{x3jzmhUbdYhV(Vp(llt5 z;7Mm?E9~|fBH9R5eT^TL%=eTWy^P`Ek|FDvgDhVQj47Vv^waU*uuk%F3u9eID9DfE z&Xk8yNu%6YEDiWuu8<`r%|o1L3TE3va+_(X!_Cxe<@4&FTZfalvdOY&(dH>My44aZ z=QG;BDPoE2sN)SH2{uW7L+UOwFhU+_P~SYROBZ)zDobCm{~LE-Gb>!j-a=Gj(LrW_ z`@M_G*gMsBB%QM*&w(04Nefg^wO1UFK?p>V_XmnsB0t4Q3kR+#z=tQ z+gIwk-7=m=z9udyz2s!(paok#gT<}sx;E>|i7uiin7KZeLkn1sZpKFEj@*-6))y6L zT%1%RP;DiKFC~6ltChf!8Nj`b^X7Hw+Kytx!u@cMXV?L^F0Z{g*xTY)`)3?=Kx zwe&`<_Y#1g1l!S6-%9ZI{8%cU*DFQR!iOjlSc3~W!^EU!qFXxvw+q09y@9)NHK++# zVQR0x_UVjPYfK{*W@n|z(lAy^c=Et6OCkFq%?!-uQyT4q=}EsR3cATORjx*%>oi{| z1^PG!N>|9AkF)Nb(CVd+tlhw;vI+)Z%gqKqOl~J1bvy~7k`b7zdPU-PmB)=^EG{K( zz(M(`oJ2*m>nO3;t9N1!H*j_9#s#!Ef(Yhl)Oe$xU5~f_PG*rx7fayovx}M`MM|d3 z4X6I#+{wC>2Aq8RFLIS#7(Y2qdfu{q^89Bo{gOKKwaq|0#Cs?(R?H3i(xEzdeWgad zl|3{td+C#wA7ea6!KCa58%Sf?!=YZ_edf`r%!|6o%H{_xK1wo=YVC&|+3zofMc%2! z(S-_?3%p|K3)`WeV_>(H)}n=yCi;0y7(IfgN0oPf{*f_nZM)G%89QP5!ixLZ=%T6) zgG{pKYF2^TvkuQNqlzx;VMMzZh9Kn}=U&gL#&=(LK+S5>(fm%+iQfDSDeQ*K`>Ng? z<>oV~(fGu)zE8*{)VEiF-M+wAXPVyf`8e$a=U`&rEyeF|1TED2xK?nv>4(UmxY|kU zSsdG*$mM+kjm26h?n$3Ktcj_Sgwv7z;m=c%)qQa+mR@48Id=G#QbciA zhxT6hyhVl;{Y+ETa=t2k-y)DE#4lRMDc3lw=k*6M7s1je^Ja-0dqR9!yvFOXbQyEd z7YxwJhBHQl zIDbkzrBx-l>7_YJrtyV8=iw@T4L39{`jNGr+Vexu%?gNWU+3|-WKm(ep3_D2z{ut* z$FUNFxLdzYmh5Qm{lS5?ho7>aUF!C4BRugQwJ1=Fh4OXdgenx}`+ncwuH*GwkoUVg zRK)*O16zzDHDPq#b(BXHp$V|)z%#`-%1o2tO*RG_G!Fo_qU)z_4O>=Jh2x41Ig1vf zFy{?6d(lAE9@>Clld|v;k7Z8@lXkzwP{Iy8F@4OWeo_7v+~!ND-;X?#pzNQcIWO5m zIfn3FDoaT)CN~EH3wku__qKPhW{RFlG7<(n`X>B_qd05sjoX#XQF!Hb7Di@|QfUuJ za%svf5wd%BW0`T}boCuIdxre45}dgTp{{Hg#w2+0FWnaet78C*G~)7=WLJvo`m`4* zK!Q^BXH0RosP2`hY`ie9t89ZE3g(+#u%~ErQW0 zF@02#)MQuxIe5bb(J^A@e47DnR8@a#7m8}S4Wx3Is1i!GIi{azR( z+R=LX`qu!G(~ry$lu01dmmmV8-PM_e9F8Hkm#q0U@(cbCoO7aULLNrJGtFq8hqhFH zSC;GOs}Y;nBuNUr<{1}m5ukFbGtqLHtCUvDSUbn0R$UQ5tVonze?^VC>|8gvXG%sW zk~O{P`({;78*aKV_Hy?eVtI!3-PfCC`(&{rv$>F$O}RTMQHk8RURc&d*;W(#hN&PJ zhnsTc?lXa(4KuLh!t5IgiU#lGJ@?zb-56J>lc>w;K>b|1&p~=vB{;$Q*v4?uvpSgM zbG6T=v4FYGt)MWmTbQmMOYR%{n+OLh&)E1Y3lCIo&9QrLj2@g2RtTu=lG}JN==<~P z<%=uh+OueflH^2{bfz`=eB_h2SmCabSjQ52sV(I!l5{HnUCfpdwm?$tL2`@nqcHix zI}AtpIAqq%L>+rXfpy-Lm%!&2zEnaVpgSjQ99e7PDSkDZJq) zUU?fh;%P45AI57_IXarp@1zCFVpd^*y9l5~gTIRRdm@i+rparz7iZ)lG8VOkPsOW7 z2oqhy+*EPF;QByHS$kS`LWA7H);ZIad?`+j7AEE{Z9oNi=WpDzrAtXW4`l%Ox|GYGFF5oitmZ3 z`j5CyO#o1Srlbn}6bU5t$$bvD47Xe^q!%NA@L5r@X0%){CY4&m_naFH*&&wNt%y4d zpMMibIQV0Hqn?1xhX`C_)lSFFm8GCpO%rFZ_cSf&WGj8A#Q)tV@4k9AVo{)LnUwbc zpc$sXN4{Pqd@W$CL7TP7pT9NZ%Oxi96M9!uw3tUI^& zT6!%|pOV5EC$3wzF*Mv|n<(y;=B^pboBf%GeK>$Jr|P&>luxXt-yOqzqrb)TftzVP zHnNg)??v2trchHT;O9JGqs|)phVxj^{zEb*j5H+W&IrFTrK)VR`R&K_)bC&c>Aw1` zc5TnXP9ojbHu<9wmdJSH%_f%68z>VBI0KhsLtWuordQZ}bjd0&uI#Y#q!O2!t#xC0 z?PmXZGVMjo2HVzB>uSeezQR&&(iD!uolM7qj-+Xp{%=vH!W9!8vKp#Sr(G<`c^A}(xL+pm z-c-u%D>NFa@xLRarCtw^#)oUIe!%`{XVOAl&1jpHS89oMduKA&exa_wdhdNN9@SKg z>n*m zKRqAHgdFDhbL8D7IsNdcrY*Zst+P;n!%BZ7SEedGj{0y3xq>YAhnA2REn>ML$$kYf zy3Pb#rG2mstGh&HoFqSremd9aCqv&y$=*_!5==9?Gd9?-#L!#*tVdj%hj2h6oVCQQ ziX%*f7Ljq~ts#bF@SQS|k6A<~#1FoTx(BO_J3V6}?4N&VwakN|VnQ|swDT{MvnZIP$-GKuV_i%r+Y#-^RWHnD_o4^crV z1>hBg;I1vbJW90;vG!x8gqe$Btlo1ah?^>0lT=<7TUXbDf%Ps|cA-v;CB8P7kgDy< zo1NntTvsgF@MPby&u~vq&66cJ${PE@hc8&4t=YxD5?SRT38nrpBoMZpaW_9CJ3;KR zE!nA^h?1(Z!gkwWQvau&@9Va9M9kkCs@M-BWc%FicFLfVA0xkU6_d@rO-m5U3oMu{ z6h2Wxy8%7y#h=nQy+*E)sHS3nQJ~E&TJtCae>0Wj z!0-9Bpvo-2Fy`ZA4x@IJ)BHW+iDW3;`}k|!6B2Nw{M7vQ28FUo{cbOK#))*uUu%wi zx+jzu>G*t>PfUM3U(-InsK~68@T%59rcSr&bIkm}E6wADOGPDLGVB6WD(j!$33ya5 zp)J*;^?0SRBi;X*1C4AqH~2cGDWu!OnC`CKdv4&1BYR<2DQ0z4D5-@KzB`Z7eof9u z$t#a(Ft9*1le>5@LvSZ=E?S@U@KMQ=UiFY|m%CZumo@$)p-I0zbi8eVgL>HeSvjFt zk-QdzCTW<}V{qS=;2BX#bY8lyi^s~ao{K}$l+qq2e!)ZJQE#cA+LgE6nI_i7Lq5XK zQ0NsF0&b5z!#{QEXY>Bx=O~MJX;0LzJ^UudCc1TYI_u@EiZUTX?myPK8zYDxLM-+2 zLz*5r4B=?;Zq{gCFe>-a&)&7(b+%D4F1%b=DrwyeXPUxl<>Z9B+c}qx9sP=$9BwG? zr?KdBh*A5ELwfM{u)VfB#&`i<({3N<1C57d@6A*bXiBNsDW^(7{T2ej};{iWy{$xGg5a1l3}`ZO@_sB zbjUc&6nlg~hEo6iFLLjs>imj1!lAiKqscg!mZ8!WwB^ZiS10HiXTeuuqFKS!D)_*> zePUPM&Nd2hk128cgk)0XA|vfoymIV^^3Pr|2ripXg&HDewWr|Vhc4SL9q=L_$L?E@ z_(KMTYd_l0&VM!&C6F98d#=B2UQ-2M(4hPz2hPXxDt#XERI35S$CuaW&UnfP*eJPP z6UG`_L{pZ1^1mmSOPtcfs_T@g6tfwxs+%>*Y;jll3qo7Rde!~dNaIQyOfE4oD z*bIL5;(Jx2vV$>VvEWu*Lr45pcHoT^rlhOAe}aV=?2A(O z1rmm*CwFn&Hn77)3S-g6*iv4|Ex?U>3;`Mt+=EJ*z{Kjv}UPaeKYvBLE`_jrRS zMH74J<;#&|q@TGEamN~S`Y@xp*AOwBOOdJ*o0>T~VI&dwZbIJ?Jb%*R!71_i_meF=3JqNW8bi%3a&-pFF^_K_;^Uv`#Xiv-f#WPrmFFb9HeAUa5 zN?e>;adQi3|YKR?>bL-&pdZg!?80+9xZ1Wkrk%@Clv5=DQnG1sfJ$06}P z`l9WziUsrCS6%!v9bKa1S)L)|7_x-6$C+-V(8$L?Oj_oacJAi>NvUdxs3}dolko2) zBB`JG-2H72GMmxg$1)ewa-`A(@~7Z6*2SVnV{StgnObmikKGl@j+(0_q!KqE^2djd zBZiK}RN2{5{{|$SFS%@8y{+0*$Gxg zhOr~*y9d|T#d1Ik?oZzKQR+{L)K7^n54Mk~pW;v@O8Ht6ZqQ8@5-f$=X8sDTBSL+@y`UBy`Aa`wdFpD24Rm@0`0+KrGj zruVvyGCAL8o3b)eKPq@Gdxj}g(Cu-j8_SJY66&zSitVCmF!zcoCx22{G)Gs>4eelP z^3tDfSZ<3lj#~6B^OxIOqnq{=h zD5$`UEWjPaIBWms+7QB`7Mj5qNsq8}jLXPVlA2HUhDQN6&6#;tB{Br(he2V>)7zNG zV1){;88<)I@H3kzyRsOI=-RG;w92$r7*ya);(R5-{QyzB6j|W*yD`CF=iJYI9)zA{ z5=m}MaL!ccabvCD>sXK7xnv02*94UgM>^9}y?6v%5o@FRf?@fPJ~8GzWq&LxRQ?i< z1Z0{7$}hvz)^0oS)jC4-kgp#nqTwBZ`UGRgj}4Kyo|dLAkwVJt7-V*?Rl| z92j|DvNW=ZI_C&st?AQ-Mm<{WtL0=cgV&qnxa{3OwaY{g0UtH^pvNtOdOcUEmUJf( zW?bVM$7@OG&vs}p(;W5>CW~(hv5B5FR8Joc5W`&JL9wi|wWoF11r@dJvxfD{njzB8 zDV1!!j`=ACV}464XV>A0)4`jMCkzPm`)?o`xf20*7@@BBlnRJ0{{qHJ33Cq8<~-(> zA;|@=aFNm*Yn{{14Y(Eu@O)ETYuju5Ael}OE~7wn8`NBs@##-=eJ=dwaXp<1n!fzTVY(^v~Uem(dPGLYEHn4vD<{LmkM;*3MB^^m6y&UiEz6 zKLUd29VaIVS35_U6G<7i)!H&vBrJ#}tGx4;ttw1dQY~V`RM|iCI}OTtC!87WA+n~= z_fp?YxuspKkJX*oo%Y=55}S$^3oan5dm;oc@vgta%wvHOzkxQ%gW5h#dE7JUObm18}0P0Os{SY|I`_&FID|0k^i>8vfOJy<2B9E z&s-q?SwpDX>I;kh#N?@I_Dl7NZs>tyz2xxvy5qMgZ^Us*1YUmc5d-HPd3vb|zB}8i zBdk!MHo&14SO^$-FeW+DGXd!m%69w)&HDp(_dmL?3<&mYw|uvWPSj}}eGIM+_sP&n zk}RG6oHv6@_tf$sX9f<11!ys*&)}mq5P~g5Dt+Eu$Ev+p$qa9q3DmipEHHuTs_9_c zBdoX}Uy-)8|Ap6Eqx#&@1Vstgf6AauK8%QcE*kdNm^)qCR|pNstdcu_CShr@dvKxq z{_h4i%jPPcB$=}9kcyU}=4mR6Sxv}a(x@QSkC2Kj-Pj`@*YZH1KGo7F zUiZ_#W%s2+s2lDjud*IZ1A8MqLUWgtoa#t`e?BrMT-l-Zb(N#B5rdEMfPh-PfxM&XOUGWKfn+aXVh1=h_LwHyy=1 z;Rf5nmqxsxcCZ(@pb{%)cEpjRh(#%dCncw3v$msH5gn5wUl>^#zEtUZjTueG`cKt1 zu4AWo-M8SaZiro$>(Fl~#hF)l_3r3t3uO&(V@uMX6G$EDNfND-BJ4&zcf4(v8lgZq zg8cqvfxQ&fA`WFekX~z+%wu*5rYCpq-o3QN}frH?xcM37gO_f^ZaRi7hl z(t4$sc+}Zb`U&hM`_Yl{n*L$Ws2}kbHBd`+tVxMLv8S?ubgtnPq%L9S{$FCD38UAP zH73h>rJX69*v^QPJYk5;kk?PpaJS0ahtUm(Em%3ETF$@7RlOqEiieq4eTmn^k*=rC zkxI-DGFut!t^i2B`t5-LaI2QV^?~Qc1Y}l<4&#Sdd|x%~F1D#>wy!)Bp*l;!1GZV; zJ(EDLvp|Zu%D+T%uR?#q+untx{p=~YB9_+Rh8|yiLm!zURbLU9dQ)gz2(Y;dQK&-4 zM?a?nKfA7)#=E`>O^;HS90ld5`h{l-@Sz<6o-&yt)@wN*sGEH0*M!$Pa7Fre z^0TW2_@$rFlA@@())1T8HFlv$W+Nt$bbBV>xIi$!l8^(;P8hx?0$87SW z&u0A3dY11ZnJ_~>S(bLT>I;=;ZWNY;*#CRr@>%|Rj-D5sdpw&`c3Ndrgjfk;{_5re z9^eJmo9KCiG;uFum0zl{05w<;omeo%Q{@i{QCTOKpS62AWyxv&h1bA4&xYLh53jM753OzrGLn0C01;9!)9`B}GK47Cm8dES##A0WaH59_)s2PJ&0iuc z5}=4J2{MxZty|!HXgm^yv2X_~HRR@#uV-E9J$#(YsR$<;zJ!-~6UNpaaOY~$O#IpS zXp)SSEo79@+aJi4b0Q2w3J-#!-~x9XUF0`=`Cgd|E_k--^LH^{3Q@(3Fw8_J0s~5x zDu$P=Xtoh_TThwvt1`c!)J|4a(qo+niK_^vA>+z%yD>ACR#l<_Ql~>IGd%m;%+*}a zn}RnCY!2Bi=9s(fe*#l(BvkH^lm>IV+V$d2mjpRl0at6Oz(u^pNiQLJf4qJwLRk2$*Cg~= z?SJtks+zpW9tu4l|D6EBa}xFO){VT_NUj^AfN@&4+W`L&~H?IBeWAX$T9x8dw9 zZM)e8i~e%^EAcgm;^o!&TH0n)(C*{01YvjQDof=v1t)WKK-Lg$$k2z`e*-rVH{p8s z+q?j^4_;inVO*+q!=L#ZI%r9LgWUe^3$Tu}BT$HFq+?v-PdPUHLN&BP3@-j@7Lr^5 zIhpOTd#LVf|CH-_)UERbZGOxZ_)O~kD_*ZQNkuB-ddl&&{xUyH8??l^7tBH%w=BL2noxj$Gw1l)~+ zf+1l{g5EFksm4i|G}}mlGG!q^Y@EgmL^7w*tMQiUfIQ5J_AB%?D5!JGb9(gCV` z1XrOJe6%0&tTb;-rRTIM4w?o0U%htV9f#e!h{9iQjF?gmu!Jfw&2$#1_4yw?@u1tw z3(+%fkbx7OLYP9CZuh%EpvqNoAh89`Q_GL*{>@4t6se|*7SqOS_pb6CCvENHzy#Hk zl|PQ)^KJAh6h4lvCfzMY9Vd^9?x9Hx`&{HZ|d%=?vv*`H2!vVvY!FlqhZSGjKj&R%K z>nmR+Ygf7}hb5rdFm&rOp}xw}d%37V23Oi~X*<4Sh?1CDTQZSIw7Q1cGx^Ls>Oc?}s<`m-u8kFQPDoZsr@m=EHnXEBeFzrh( z`_isTA#<2MDs5L#M7JFd9(bgLalCmk;1A`z8iF!E#8X{4A29qf#rY)V@smo9F7m8I zsrI5_N%OGng8{`jDVU0yXJlFaDh7F4fx7bJzMw(Z?n@@=K@Gbg;Og-pX^2jSAs&fG zx}9mrfy7>wk@PU*G4!AH=cea4Tf3aT-<8!Z(OxUjPOU&J`oit__;Wha`{|b7CC}}C zW05z{au4sZl#X&ylHGPE=(ggSLWX=rykC64H)yPK0lwbh%idt>=9TwHIP%X(1uy=4 z5(a5gHKL)@P23wVra#Z#+NCD0b%kpa^!6?b?p}3$-mPRz%1?eI#Y`&WD+|${2qPQ% zMEH?5Ii{hyHKT1;Avj|pf!yR@6=$m6f@cHofVMkhdL)(juFteo8$|3dJXhMu@hb&y z{ntsiM5lx#Jl%6{bgPz(r>rY)J~VGy*}D=^`Vp0%|LEdMObTYOlet|5-#4v~bJflNa3@|d!r3ypQ7ua+Xs+ndWpOzCDKfb*)_ z_JFWAuIh4ghLaY2hU(IGMN#f5ecmjepy8S*@T&ytZy6=`a~caEk;)qI$pca15o zKof)T@DYR_KZoeNvMDym*3F}6m0>SiE1?oN_+Dpba_6(`GQS@ip&6W5h3F8nYj1){M zPc_$1YAkmqX$WPgu!zt^1C$LRLrN5A~@&dX+H9Z@zW(i`c(a1dU<=qlbx{8eA)K+TybB zFIMrOv?{uJ>cf5@({!!dX7r;JDC_-zD(N9BB#@7MM^#Thj%5(1?{UuV<+sHXkLNM| zW8$s0HR3n}LQIj<2kg(9p5lAjRZ%PD)+Fg7YKW{+{-&Js?+&xH*IK_k4tSQPKsd_3 z*}LP|qy&B;x^{}yJ72STeEdaeVD4cTgcs|0fpA0&%!39}Z$-myL6Ylh=~%bbkeYYX zm!KOh_i0M<%yt5=YlvPh_7QJ;0}l;F{a}Dt$ha*5}Td z{d>-C(-WB9E(q^Y$vKKwUz}npSCrA;ZvMVq{%*KK1P+=*Xh?nWPzC6tTu=yY zST9iKI4f)4SQ`@sPg^0+m&-~{_wxSb6tu@ZGDXxT!j>XQE0PfXpz*Pl;!0rI$z#B*16g?7HAsCY8dz}lR5b*Lo;w75}KTI^hws3Nvg>>^HPzdQSX_S<_ zH&gsurR-7^X+Q>y7g!b}sC|8v=K#rxVY_rvH#vv`aV63_mOQ*pL`nUQ5ccTEPw|kq zMtsx~Nh7P`k}jHZ@i?O%8$QAsUmF<5(pZViNfHN`IBTIc{cQ|@8Llg>P>tW6)5%#+ zRv}t7c_Q95`q-BC$_;j$v4c!wJ(c+V?G`x;T5GMCmGT87uf$ucXFEEKO>C%uKXAQo zgP(R*7uT!{=gbP{@`^|LK{tQXjKj1f7S7+kP(!)KXD?E{z4zsr{Ew){*Tl`gB>Ioa z>Lo~WKZpKmD@$c#4%8dl5A1*$KYcNF4;4`TJ)&EI428 z*1kTD`0I%|c$AM(!}`^5pGx#0SRg{iAS0>UFExs}t` z4Rm(uF?LF2kvsxnG&3wGIHdoP?ogx^P;cZ;j(mi^3FY~_!DUkjr5`Cfx;A`ABU7p; z+fC}~j3F6Cf&Hfk!f-*C4a%_fpoH$g60TNUlFr0>YWUKOs2leB+VJ=t_cTCOH-X8DI){G4DK`J0- zpMm0GcYvdUJGh}6tj{3VsPu$$GUI+?vr|nrrDvW?xiL55}CVs*^z4km+R^RmJN$xrGCcs(lUqtrpng! zKbMxE4&LXf;`^+Vt+NM=w-h`Q41!S#;iU`9{yFg`N{2$E9QUgh`C;T{yaHEhbI*ToKdC$t20zpL(OD?D%E zeZ&g9AXm^DACtvp%Jp;OZ-l*m>eN?QAJ{90qCO3sj!kx}FCp^{xlXb!87L%HH`KXR z>2@I~Dtt!ABl@Ls5OfkaQTXew&DP{;GCTqNuwm+kf+_0v^uB(&k4yA=HOC#Lf(7u4 z@3M?JxPZCrE7G)C&u1+*CY#E@=jk^Y4bjAvLq`qd+9duuP~w#eMCN0J9DdR4+~+rv z+zk3IrUSEkDd_+@Bkni9+i7cTYO_E<$G!cJLy?WUZwUppXgCe3HFx{d=|YeFIjC6G zomvuOEsDGd_98$~9**Z?M6$1an|fz@@xzf? zP|M4Au8^M(m~ScW9}bZ8<^+2@|1vyN!$f}k#ZlEk2;;Vufb3we*DKw6gIaE%)ZE?! zoVzZ3x2a!G+%HTdMM$o8b<+N+N!cZ0_ruaMR6yZ&=Rnhle!WHn6h?x0(Fkr8N;r+? zgc9);(?C>9E)0_y8=QeqHi$$N8Voqn;-|YbCICp{GV0r?vKU#rNCrP^k5oGzYA7Jo zEY~>ndd??;xxVT@zCnv6SlMNw96^X|+ak>X zfU6VI298hmQXEKQQDM|*+5M~cu7`!M4m0Z6W2{!>0oja<#gr!BiYk?*s2)tS6UDbT z!brXEahp2`FbkBt;N?>{OQ{8qKf-Np?RD=(^}7_q2$e64YKfWSBS4ZA!1kYSCGDnT z6>T!I%7r*R=f3jVeRXSIk*(~#zvpkQF}3mcf6?BlU0<-{y@ZZWxII)a?2n&SV7|P3 zmK94(8O{nYKp_+lkb^V$9hZ5+3CuTD_*jkn$cOP1g+ICQql=}fYSHr7B(UlpAzFBLxsw zL|nq-p_{Aq-}2&c0=H0=-z$8^!AhNgNjV7Q89^=VKdUE!xx}_u$!z`(OCe8tpPY zLbVEtq8HlrH9|%zb(SngEO<{&&j0uCTX^Q(wrth0&vPGU&a^`{ehXWO{%I#QdAzq# zp^KiuM-xJm3dwz6(wR46I+i1NZ**YfgvYYDjd|y>=3npZRMIChk<&Lk_~cPSRdym zXq&+O;6CXmQ)Xr{In6?fkU*Z~whDRcp%blb&)|W~(p>2O}Z?896viN4V%mXRP%nV@;|NA>3B#(~I6T^%4`_|ZIgpsz$8nOjWQT{w= zf0pU9D>`X$f7ejuNhTtE`NgAooOn{}^l3H|;Qdjf_`kWid~ z{?zo;i`aanZ@^BIc=0t8Vm1gn7-!*&9_c|0L!5Ln|Hu9vYtsU5cXr1g^4r5w(e=#h z>6(7}#e~Kvm**Pp8)Z?Wk+xmma^MBkV9-!dPP)@24FmW*_n|a>iU;WfVd52gJ$rl( z5oS8YW*YB(48g%|2YL~kRdgUc2&>sVeZ6#AavEmO(7xQtClt|&f62dZu1A%mal0SG z`-5QrG@v?yUVm3tR_LG;Fd`_ExJDdg;0qA9x2EFf%Zp#WnKVV-SG%Z3Sv<6eECddI z_N-|XKq5++-3R;COm@t|dGuS>;&{$d=m-VqU0Ad_bFem^qGD~W{^G7mjJpcJH7idh z{;CVFyyNeqPp%b@LTrD!Q2gM73b zLbtGGKWe(n86oL=!CnA`@ z^F&65YzmQg2X%T-?VE&DvS$|N!hF~7$0a;VuHgiJzZcO*QgetJzra#;7Hfpr)TQ14 zN|A1+6@cX&|G%2$%K4-lDtss;axd7LcH#ZI{)0i(=p2Ya>C1kUOu-^tb*8AzGcLX} zn@0te0witDGh957*&c1YZVnRkzQ+s53~)1)`jvTYY+PXXC0c+u7ak;3Oc683u~Wsz zv5rY%q9k~a2q8qSve=>$F&hJL+5gP_ZoN&c@P!W8_s9?)ke4V^L{*Fod6!q4`aG*d z!%eTmoae1|)8Umi0u5oXs9Az%{oPkS47NBZ>-7!Fyv|j%;#n6JTij_SHWVBaOK5-$SR8o-ziH)Ls`Lrc-6)ht#?#Cd$F5H#gN=*)m& zQV6{;suEH|x7Y&HWO|vkY~C*%+zKPXd^daS%_d1RKGZx?BGUqKPXtN917!8EWG|X@ zoXw%g&}z=dA6QEEwd6;7q_-6oIW8Xkwa-sFU@*(;sHGoyBV$T=4`ODvB74s_%!J&) zw>Ns?<3`YbxrH-d0(R&mW(-2%$xPA(EGQ6eqT?ShD7vSZrdUG~l!M=8M z()qbXsB+~{&gs)`Z?2Wj?s)$soQY9P+JYAJ*zh4<|D zmw^>TLwdL98jc$G`XlC#ZPXP;F@azY1pBGucX2$$LH4+HYw4WO$N*vm|Mm)m2|fgp z9|;dTU+*T=c_)AU!9=MOT&~Tme(-w(4jAnF0u*cEnAGdigHH|KITRVCn1*W!`*c+HHi1yJTk3B4n$G(C>H_bcd9|Pz5u?VPuwG6wC`FAZt1j+zKP-NAa)`gw zPW;bjfu9XpbtNa(Z{R*_vTWh#gAwK4TAR)N-)7YNxUHutPh>0Y;pHhl|hBH1ZA~MTPR|NavVmT0q1hhm2(0+B-_89Le7umBJnEKtLl*_&NjgP7lRD332%eL#W`(U*V&(;#D8ZZF|IH*};XYCQ-9fHi&;GbeJJec+ z_>DQ66^VoEtus!$;ukEl=wXz~~uAQvr! zS*UOK8moXxX47nti3WjUIVVm9(q%)XcyOI!#(X9fGBBOYr_+O)!NbANsGG5UEVN}g zB4>{Ul?g{@*STIgF!8??e-eYdD#v~uxOHN3}`-v7)*_a8t< z#BC2BCI0*Yy&9ZDqk)5@#kR-H0sp1SkV_o+t(vE&zC&u7`p@E{i2dtXh|CE-7!`Bu zS|M|8W?kzhPf#~u*;oHC4`d!0ZqD9t8K>r6YHo@C6K7yv_P-xaq%($+?Ew z=}qDOS3e)H8OyqC5YR<(D8fDsT;oWR(_tT)!qtuzB_7oNjbJmnNk@HHSCb+3JO|tx z0KPOc6mrNyYhlsA{V6q=hc9GU;#scqwgVhgvLVTRVhqivE`YA0rNwmjAkkB;QZ{(% z^t0{;Jd2E>0L1WX)o5G4GO~!Lt>M{H`)(> zXtx*R2>uR*a=HT0r09_`641mKd1!Wfac@bGheGqiMaeu8q+0+Ay7WP*eh&r!FQ`;!{o)$1=6^&Ie5aE1z%bH+sDT}#nbpH-sx9AZeu>hW!#9r8;z7O;_!X@*?iQ5W3TD&4H9cgID8u!FUVzufF0VwM+JgRf?}DB|5Z1vs zcSekV1>ZBlFaGHza$8eV;urC1i+blj#|cOQTZrgbG=^4vRFAG2Z`tP20P+kEXZqw8 zWWqbXviyeIsce9u?_wi6h&m2E&Xq;`36nsshF0&$y6_x8iH6JBFL{*v6$~!cAbn~= z2KG*c&n~#n%}u5h~melcd{zU9eV7!%`53$Hi`D*|w8Zn`*N>w#$an)TrzzbH&(-KN z>H^L@WuAA{b1}CfF8_%3qj|mbPnWqI%k5C49;$fHGsMw5wgDlAKx?6eNtZZ9Hx=J6 z2PIx&moYwFP46{7s6NhYJgS@rT=>VReRSW@iNhk69Nde})_G^PK2j}V2qmq|){sJE zV!9(*mdXkYvc>Q-ZbUX#;SA=2Rqpit@PA=bYt{PMa$^D-x}o=ky+TE`nNjF|+Z0DAUf`gwYC*V&4?7PmON{d?ov56b`I|o~ zeG}t6v0ZGDkusA5kjOgo|6oPHBLeg|mh->etNO$E5lB(Vx*^6|0qjz{@_8o0u9*`D znmx}iuR^w|gt(>AtQ};hIz(U7DRTUlqnB%RDOu^V+fRD zG&~K|DHmwP2QOzu+WLrNIv|~y0IjQW#+%M4m8l@qg$6`wDOAse1H=t0lss=ca_2<6 zNmLHkzcjH#kh@yry=dZ>X8NzKR$NG?j|Z@) z=Fy=3_4Y~xLa0R5Kadovml3-?ylr^=RD!nV@*l8Zl=vhLyQSMfbXnceh&0IAIbJGN zK0amg2EMc9JJp`jzTw=ctpm_29V4LP_ed}06on4cz5rF#q!DP%D&ni`#4-3FbEa_;C1!y1x1S=Fctu>g{(E$v* zqGedrahSqT%=V>J!XO4jW8!KGHc8^T@I5-SU`z{gX7n617Zk1s0nxaN*HdftTM2vYN z1|Wj3<10de%qy2dNQF&z=63c?$z8=&SU*LLlTz&m#6Uho&il%mVE7x9piHEHIV`Nw z;&Sd-3@3hSc9H0v`<$ur`Jc5^&C0w1x@XOIT<8SlGGv64q9E3#z(7D=%dUGHTIbah zMKglc^|L%}z{hYHyVBvKiB;;ll&E^bwF39{Di?zo@u(-It)Q%`? zRhD%#p9vsS@pk5qg2p8G9Ut}#+cqE*)sNTiN@f4G#4)(jiG>i~5JZSmjCx=3D|o}C^E=&>~im5p;a z|G!GuY_bJjLWP4a!#@1sM9Y+YnTGTn z&h^F(u+aDE^WMrH7XH+3)6_>SuzCbR)Vg~%{Groic#>V0e-s~4b^+TPJ~p`*P}}s& zzn`Ohex=XZ>oKfpan)8Y010~~>OC?9Y$hY46ePQsIk7;3)<@Of`Ap+92;x)oiJ}8^ z!{F!Ff1-t;>zA~9-T=(y01go`?+rz5k8A%awY3<_>R67>`OWQkzIZ+e;$(aaJizmD z4Vsg|T_7B?M6kve9BV)-d>>hzu!zady1fEiJpe(+OR;E!Q`8qwUe~KdH_*D>Jo`Z} z3pG~)V6XC9)8_n;Wt}a}(%Wu)_un~pxF1QcFEsiA{hw;>#Zd!3v;|5f*ts(O`{&E> zYw}3Htlr2TBefCG0OQ<5#R&Cykqvdq9lORe7j>_fWAR@m5oi!<(uG~hJLTLrlqabL zb(5h9jv|(Q=5z9HEeXor0LtN_+;T``X&0iPi65&o`8WiN3%|FBNaBdVK)@PPc$!bE zxs0{tyj-V@*K<~RI(n0Kl&JOPrMrm|G4yk$ZSC#js^$F1YWSxU@^~9VeY@r<{}k=2 z$IhpRu5wnbdFa616!JB{r4mkEEJM&@@9BB|cLMw|mN^KP9?cZns>~9L$2E=FVnd5F z%TOG^jl#n+Yw_D&QXER$iG|S;j%)qb=r3+s{oM))Cv2e|?C31#{=|L20TV3HonN60 zqCwQ9&-d|PUsh!(rFaw+PL%ga+g{$j-@79ECNhD-JIO3L*6Rzf?OhcwU@#t8#LZqQ+C z_Wr(L)u9W6M|W0$8$NpA>=uP*Su#D6_8qb;ZfrOMt$OxP?Tg8^P>wuls!7^8k*6Tk z_qQ}M&mAm^tRIK(DuokT9p$jN48zE23gdp|J9d>vDs8^}B6dTk~#(%bA#d^7v> z6kFciNTZ93-&gBB8q#Y_Kwc>Rtds4b_I_=2#G_dZ3yyBTJNtc_QZW3+a=C8iY7EiA zK{}k@shKfA+jDxB{C8%?hl2l7Sw?Ak$5uMl%2c?#xvInlZ|?GQ>r=Z-bspb00;B<4 zeBlGkb+eF7%PsK_r|9q_8rBGRt8TmxJ{fsTjVZ%wffqrRa;BftO!)%!)`%0GmskYj zarL78$JrmR8_Ylb86lF?hMH;@rl4Sm_>&Zh%c`*^hD_VriU+8oFXx0U>tKcG89Mzt zAdD$>Y8o~5sxG=RFTNwV@UTXh%@c<2l!>z?cIsVlQE@Hg*InN~L&YmuVthks>}_g= zz}6Ln&-IfX!0?N!fiJ60rDKk~`gY^K2iZk&YJ#l+cF2tM`DhRg2Zb zhjMs)KVkG+E4(5e{NbH`v~a%5GEuI-b!ug{SkmNQlD!B0+!j=A_dRPBPAm!aFRzSS zF3+H>Eaju4=|0N*5b!VS)S#eBXI7b^Y9}^@L)>!y#Pz}tS)3Js_vEO;4Sc4;f8n;n z>O~~^#zqN6=|Q7FsC<3Y67a+#^d`v0p5DF z*60K#Etuyh+rm$NOAxir89o^Jt)k$7l`-2nVjVWVZ0PkZQ*A>_M2;hsG0S%ezVOAt zqIBe1SEMKy@}5EQmK^}7EZ+2AIeNi5MGvlG@JYNE zJWLI2^Ucebb{D<*boJS=^3s91IVHCe_2yjmao|ct;}wVgwxLIFEb!^+xEtc@fJ}0% zkY~p_o`wSUgIRzz-x^0D?QV>9cN-edPN(TVC-qDq21JVYN7(#&N;<6X5XY~oSzU0h z9Pk4K{n~u~P_3Hg+Ylb;6*wIj37_t=c?k9q+Ve@Yi(KLXaxcUv+)*X^YZ{uP7Tp3r zC!C3fGqT#xYTIA{n(z=kNJ6V2s)-ufi(p^bj8Wi>CYK8SpRVGfIO64V}U3p<4ELaRXl8<0A$Hjufaf`cO6#CMWT;_JzTN-h;4hf&KF6 zi)RKbt88Z0(B};>b zHVf@RzH_v;=?PzS>#O+z0~KLT5gFf*{|E!?7hZo*BFG=I-1H${cB1%uQC-FEdwdg# zUC;^Z=Fn;VAPlPcme(Pr^Gl%U;{06$*Lv)wiyJ}3-^#^XV?J~rbvs_eUFU2nHP_Ie z&aA~dxm*gox0^*=2S&19*~PwP_0em((bd@Ot_F{j^^V)j7U#~kpC{u0Ea-C_rnu8b z9zveFL3u(XeD*8CQq?o(IyYTM?Ika{SSrh=HTx@shbzItja2-ZSKFNxo4I<2!7yL!2Jo{B(I?iG2nZ=5DQ#29M!Lm@j&DNXdiqkD#g>_oX``zEY^S9TYd+qrjW6m|#j4{S6w?S(elHRwp8I3;gQ;U>4CXYq} zA0Kg3Iuw!$$?~_J5~i9yV6X{TWP($@3_woOyJw8?^Ysa@3Hp=S-EmwGpFCEhGKK!B z=QT0#!Ib&+KXSLc-jA&HeO{gm+v7sJ;Sb;EOnPZHC!Ls=TDa92WJZ1ghlrcHP&53+ ziO|`($YEFY&7HxCS10iwbblR|hl^u?PJRHzLWt0A2xk{K+4bwgHY&M@~a~HB9N(NDUP>VuY#%2 za4cVy+ifuYQ_&Num*kBBMeeCz=~a9t+~)JTWnSwPW&U&@vK_hpl3~`9`{AZ}_^c9# z$V+>_T(XHF&%}S#3h$)ql*$pVvq`%M{=h8Yl$O50=0|kc{;NX_BJzr3%J7X?`UrGS z8&6B#R@UPy4hufE$BI*8ukz8K?NL_)B}v_d{6+W~OUJEMxTZXk3ZdjfV(R-{3c8j2(I~xZdvSbGmqmo+%KXCR*oYR)>u2fH`qosL*aitn_L)zo2Bkj>zcjYux+Iqscc_+(T z5O1y6SQhKk2wk^2k^eEA_-TmHMpBv5567%rL`5#8S7Qj=KI>|q@jg7hL4=(d3=a`8 z2i5mY1(d&*A$lC&wmyOIlOfWsa1+k@I{a(xW4X(F?~z|XTJ?xWNlWXo{5Ijk=FvL{ zo+NO0ak88BpFd`EFEA60<3YR3edb`~S|!%eQs0F)$-!=N5&U8u$+VR7E@gezDPwPb zfEc^fou@vUyLikZvdE7k$<`uHxNEQJM0d=e9Vl!iK0vpLf)?HBMkW7T8P%XVS-;2P zS#|^SkF;cIe{O;G3ACI$m*#7|;qLed6 zC&!|%)<%xV607oMmY$O?vwg&oLKn7tb7#2Rc=JZcy z`=7bj92hzkk;d}j@5B-ZTO;Wwtp`$6=ED)hQ7+Acv2-=T>ee|`M< zC;mq~G=*c_&KRt^`AvaqzKN8Gg5}8FPFh8nK3h6ez8x)zSYDY@gI_7>uY;X@I9TPjNg|Wh^U3MRh=wYbY1YPHlumC#zTddf3(J z_TrO(5L$6U%bVSSUoQkFq?@!{r%PZgX#D!{+M;KN6~3Ew+C1q#SP_2xzlJ0dS_+t! zHi8q&{G$7nd}?K4)w8^bjGj4Btc%zNv>DcD;XFok$&iU+?k?+iDqb*G{!A^8{cL!j zc>Fm%jPtPI`PN2yK*QYhm-X3>I_$o~0wyg6Y4=cR*!w}IQSAQEk!zyH2tu$tjw^)a zvxlJi(pr*%-XqP(;ISNazY&@{iEx9&qa!NJ@7-l@Rz+s?XUC4v+Tru>2xuNm5j+=0 zllQL;C1aFJ??CYA7c*0D=`x>U(Q{6bd`Lnvz*6KDmzB?isD)ZPjxG`vY&FPIw6&Pl z)nNJc3}55;5&sgWZBe^B4*iBIPw@>c(Gyk8`g=&b;tUrtAB(r|K2BW5i0hz3RcG)` zBkSiJ6`U)BOu+YMt$nQ2xXi<8V=&k7chMEn{AKR@*Gu-NpsS9sSJM0;95AX7r$_ zERrIqi^Wr#xrY;ftkM7QvrymjtU>3z80!IfpiRCzcZ8&vy=;XX_0#96-HZpU&K(QZ}>^w@!ks87_l*wCUCu+ zJ!JOR5xID*0g66M+uY!A4(-j!_T9F*&imw0zL;5SM#|*Z3B4m$Qx%qzC*P|PxzROt zuEiKlNqeob==Mc~srLKi#9Lyu45GT;)XTe_H$vha4zdA|l{Z_{mCV@?0(q;2V3w4g4j!@cq6i>M#JTi zQ93fw41C7g^zvweHu$0{d><`u^ud?R0kHtNb(@mV{qA0KR7BE(lkKEm1g`K5YDRFw z$NZR+%^TYZ8;YY}m)4{VeN|*+4hf7hFFO#mxWYxk+TLqRanMkAZ@)oj9D{ZYhn}$U z8Qi(blal7p{)Fy_Czr}PtIL_eYwb-;^*`DPTO^4}IrPa#SXDdYwq6mbFpY1@ z`o$Fu-W;ZCpTP=>!0Ky^11e<5@P&;tsDqsAjG>c{Ux-=E4diw&1KP-d{SViqjdUx6 z(>~w2@WJf68|`Xtd@iJ=unmr4(stK##RoaeOWqFoILxa3lDJMUKXj>SqbAc&!`sJb z60VO|21#MsUs4k+p!9EVliJ$=T_j_}$PWEi_htIOjPwaALYw$Gc0}0VtJSCXzS<;L zg7!%jmOaH#8y|t=BbVzIFkx;Em^w-(UN;Ck9UgkNUL8tjUB`1;{d2x!qzVBmrcN!7 z&T+e=vAW=ry(&p3M7eXtu-2eO>^@_^vvK82{?)^O&IP#Y@_PHzc6I65lj9~$0#nug z(@W07{hnzlZL|VI?M&R8O-_9M{rd;|uH+7R#dGy<9wF+aJRr~U7#flfClA;V)%78W z5APkyL8$7*@a+#^g!W0aCM_K&%dB}GIgn8^+0O~t>F`QUJjQFqB;=z}(03dNQA@g| zcush5+t|3*$CN+MV7*e)I>LV;($^6%;nrHigs6SL2$%Wk`9ZRlfZ@CE+Ic3yxp>qK`5o7ebol!g!j^A@v)d^jw zRP7PaceGOhT`h@BNOBuS!~z^x+K=jrWQsq(IHiOdUIZpf+wpxBMosZ%MXQF)^fikg zlRvk%biZ`dpc9Cmy7uCLl>-Bu|G5*+iq3=0qyX~CS z-HYuwjiCn&q04ALl`FV z+SuT;>dE<=wjl8Mu^KkjJBnR2bw*8N^=-$)PeoZ+qEUgWew34b>Oq46mkM4^t?j0) zNwSvL6Pwd6>eNS`Zb+IPSLeoOd_U(|(N~aTc#`sw8#KG5<7q`IN@oMMDBIu7sAWc${5Hq2<;C=|@(eZ$T4VE0LLwrOe znX<34Tiq+v*prp5}gxVW&=e18;6pN=Bus7lTZzT4~j# z(udd~CItVrKGBF|*lp~$ssjl}c_hW`k*ciAUaNR7FZ87M4wcj<%)&WpE5sR_bJ1%x zLQ+Z@1~rBP$O>~dp!x?5uxG#hCd2LdBuq<39zAa}wkxF6E#7c0wP$5*m(cz+tBxr( z29fRiQtSOsf*pp4h!~-&C$+p7D6N`Bb80%8%AFla zLmK(&>884uv2z&9m!B(yj*HtZ8k6gUgW#NUUHNvSxIf=3iJ<8S zRj|NEr1+saH?#Ipl?=Rr8-LWJ)x0h!ED&bAb*swPU90-?E$?39^2;|5YP?C2-HsPA z3Z7`v<)+UkCPz6iEfikIqJ5{W?C_xAnHUl87+OhDLzgk@Mz#PuyV+JTsk=gx7Rq^@ zq8{GVIV5+5_-uur;ZKuydU+sgC_Q>);lEZZS^b>i%AQfEOK$%;5jBlE2w`B&vNEA< zuzb2l%&nE{uTBkS%bn7Q`nz^3CV_Vf1N&&r6uFoVIw)JGd+{VfnT;R{IG3ArH~# z%IRrgp{k%&E~G*;2k4u0HNjhZ-Mx#Cx=}j5sR|&wJ%>-75<3p5<6pB!O%@}0M7><(#XqBhPT?PQtMT)rMh;#5Q;Y!#}+&=DEH zMeS$fv*doQgwntOO6C!53;H^Sb?4aqYrCh*Q+-85krD%6Y_UpjM!uMOa%<#BF@R&i zaO@DyS62bw*H{&FW@q1;^1pOC8%h496*SvyIvXElo`NytCdjrUrjxJcOKq*RthJ3{ zt1T|?*+WfGa#>JlxF0ScKl*^Y=#h;8zegh3;w%``f!`f!)%_8Pi>}E9vKuOat|8;P}AsuA-GNN z!I7HMS7^009$D8ryEFzh>oy_hS5@v9Q;d#opI*4lm~u!zaZ{`w`%;!=YLc|miml0) zH?%ipzL?-!g|}FGCV@5asiVQ<3_XlyXf={>;{BuY{OUUnq&K*e+WJ64kZ}aG7>=T4 zSnYQ<6cmHey=~gG% z*j>U$684Uc!9k_gOKumx0;9^Xvbwh|S@9*(C%f5&1qwqxrbmY&ml$xpgYpIz(26a^ zm+&fV``IzMGMD`H8R+jzab5_i7{T*5Kkra?RBYBWk4vV~O`7o3JJuGI+G{pv5PAkO zQsHa_u#ODJW>o?9eR}zHv!6cB+B`qPH2|?|^NYHy zj99b~zpZl@>KBD-=xRmi+vqz?*l?N6oU(|J(KM$KOX;g-*YM$6S^*{9i{{R&{KIC* z;-={CK2#}}*XABo>Ple0k6XF@9zP2@5gW~(qi5~sPHCvll!A&Mk6NAO*V)a{;E!{U zZYylp@Uxh$djmP-2)b|z-tL#Ku}&KiKjo~lD)28C`S!hYi;?xQUs zn|u$Ox{;u{udiaziuVqYmRIT#oQU0X!u_pwrFmKQXzvac=W4nRF_a0@L^B37di9#H({8YFuIiu~D zW;EM_9@wNos}q8X4scmGgbf|t9cy#>k+UMUsdX=>b_Yu1GfSEp>?zAXEaBw_sC#oyqmJe+`K{ov%a^3~gH4!PUr7 zYE_wyydSwLseu)w{}M1C{stew6Y#`8nGvo}8B*$TaI(|xiZGQ3=BT3 zcu+DtaeJ7PM?%hdh=hjEyO4MlbG1e;c;#W<&yR!@7#M7}EpfB`N~{RfpIsZpqG#$Y zt}TU2#7CL9G_XqD!@Stynz?;#$d;4p*$5dTXV>dF&GHj=4+sU4Bgu!16_f}LCQ0=)sGxNnlfaIz=esn5vxH#IyCRaE5DB-i(k}_W zMUQxrM`RKegBZx{6SSHQm)Ha&f@_E-TJm{fcna@Xe%98fNvlV6L&7XWnMPi)}r!?7s1i7dl_Zsk#~pilPIOc#-Fs zf)Si{2>H8~Cri!vE~DGV;0qLcn9A&h8+d3;gvt$dRiIG^47(pZP^>6;C}oXiyBmQA z=LwIH<&5CWyS(l@282aFud%Ci+wyPFWd44+T^eDhj^O1XGJmQjDO32&=HbZ>6*WiK zR!5Vd170^DCzk`B4%L-2AJrgh{bYf-&#$QOrT3dInk4fNM%ArY_$s=K6RO&mWZjTe zS`iU(?{3kSbv-6WaiDZJ!170hsZMJD?8*DGiDZ=El<-ypU~zAY`Jm<|Aq1#l=nQ#$ zwrJ_-Ug-U@1&JaOw(*wVcR71F3+Vk5ac(rWFhnw9VDL@o%(>qP$l2@tkx&;tcEjU5 zmZS3S*vGnAK0_YUb`QglL$8E#oH!q`5OGgPjrN8 zuJ@Bev(e10)P-#Ep~Y-hn)r(nLt{i{e+0e9oouOwGG%yl3wLK{wHy~rHHs@x#!A6~ zqK~m)$WWk&F;Blhq@Hx{ixJX2hmb3fT$dWq*vWyj?<1yXJ0w|oP6ne?7U$V#)1Kek zD~K9kCYx({OOQc4&XC8;Y2DfC)FB&>Sm{57HdspFenn3EqB)E{wx5r$t-Ollwx!W> zJ2zM|!+bd3msP&%T`>C0aS659=oxGRYL3^k|631qh#*W?f+6Tyrpl z?=E)1W_>Q6`0aY|x)bos$;4Wy!fna5-9_;4sODLRO&-wU;bhk5pa?O&NK7DQL4M?V zh?s2AkcVT8;L|tGj)Ta_v}#koxW4W`HtQ1XIO`U>vdsS@pdiD|Ziv)m{oQyMykQf% zoEL41R)BoHCMyhO!^>5Dt>x2;=jkf;65?FiEScGc1{JKhz-&WUr4;}X*9NJqngP?9i^1OH7B@o>JG!^et#-P9y>+;*%R3zK&*edg%aL1Q;*P~UXRWhG|^lJ z*%K(q@KL8@i7HXbs#{NIqTK;jf@yLww(1gVj4d%#_aE0gZ~C5RoU$aVGM;6xpEoI^dKvt> z#D3XBNQv*){QShDwzhV0I;b!!5PzjYD}!Kn=jVXWki3cyIT28#xV-twsY7_QUi=gf zPZg1(gam;w39CD*m48wyz(+q7Iw}tT=Bf`Cm+yLh7(KOMxYDInfxa!Qv`QD_Iw{`5 zN?(l(gv0Mj>%L&X(I8Yv*JVI^`DA~a!p|sS1 zC6aRTd$_nQF3B271P29i^YgFtaLwuSXi~%L{_0zl+DlS~o*+j1OZ=ldxK2ls2eR!Q~mLP_<`tH>f=>o67kED4fwwM0iNOcpwE)!3?6u2Ek zOya$};XM?yY;le4dgvcmzc=pZcRHagHoSw4{fv)qIojy^0#u}K``+|jY3^qN;zP$G zhX~zX^iz)_(VDX=GE#D11tJ|OMYe0tr|~~}M6P})+iNOxXfCL_^+ET9yL%}~IDGzt zpE2pQGt{BLC4K1BwQ}VY(qxf?R&Qw`Nuat6i9Tp&cbg(5XcDw{QL8|tps_%R$dPiV znfCm)fnByazpQ4*Je_V~6eA_YbHh#1KL5##>pfI+Beh(^!j@2_`!vA%H&nRC3w=l& z1LnvG=w>3EJyYBj@5SbInHFgTztfM6VTWh}&nyfOa&N*)PoD7Y?F>XL6~y~Lj<5{e zjz1%c-ro}~((8K;Z;#>K^fZ^oUyNSp5xysm5=&yLZ}lTD146OL>zlXK#ppgKf(2NU zCt=&=41Sx-bT8}2dGGEx#xGvXBS(Q=T>^TlSXbt16SP-D_XFClr_cbM zi>2Ks>O9S*OF`!^54eh6&$(L2gv-w35(*_7FnZkQ6;pf7e$jp?NSN2xuC#HcN+SBu zfVLMwp28nbil35jV2cTbs1^rPlTHt4h0K1Oo2>mUj1*v5K3s8Qx#sh-TrP%-O^5He zl+N>1X%#2DN#be5D$N<78M`7`6{~tJ4!z9B1$G*=j9(p}ng+Wq(sp2fo?XYQKj?~d zx{N0}hq>+P(c;S~5c)-*$g;>QZObn!6|dvJh6WHzo*If4$U#ubhy=X$@ygIMF`*TdQ$5~e;wUBP_rsU>Z$5^w3<3HW}Kg$QJypOTS@ znxwc4h>9)9`WTQXlKuEK$H+>XW2D~)W@yZI0(KC2?+(hxoLKoE^t!w!ca~YYkjW zn*|GfvHLZg$ORT8J_(OoLbdz&4l(C0M!ASFFVYg{?9>=(^Yj)jqB*U0A|nn@?mqz> ziZFXABWF1l}nO7Qelg1L2Ch?7ZV}B}ne|O32 z%(Cukg=xRFkN-7l7CAzff{lyu15;cCYp9IPO{Vw2*N(If)|7rw9&%^(GG5U;+dRof zA-|2{tP$I-VSrbVV)#<*FtCCC)#v+;i3RYYLj8ejt#LfY4oHZfS+z|%wl?2mdzV>> z#CIJX*=ny&mbOXGc-V5$&;z*aw4{5SH;YkJGi(e1+N%TDCIv_0*Bmvf5MnwYT0g0S zH4`}QGI-n^n$b6UEwxH%{FyOXm zz~vC4fAiH=frm66ttv56vLckfsWRo$>pk}Z%?`Y$d+F9cwOQmg!4|;fbJZlQ4Q~V`*ix@qK3Yj3eGd5DNg5- zS&4#N=qZWM7Ky&gi(jG~sj+Zb*7W@r9GtHWJd$Z8!WWgsu`r|D; z$xft=m5bE7dzwv}P5JrqSrkosrX{VzK1oZjJ*oQvo6B|njh>C>|h`He6khfx%bE?cPV&hn%?+-rhyA8CG+gJ+9Q$K#yI7p|Bi_E>x`{UBNN z`}K;lE z8L+F$YL?Y<`zCmOLw1+~?Te7#rELPMBJjx$`IPusn#D_cAO2kJ8Po#ie~7mb=D0Vh zPoP=h;;Vf#*#|ejsuVTaTlNTnIaYc->Xp_^dc>fM^eW8Tp9F3iiBY>Q)n)5}wql^$ z2|`>#O&11JO#|%O3g$s}y)L0q|II$OFZr-9a84AlfHBn`OWaBN%vZr_|jc2)#v2y zZsCSocjoe@*X%W6Ty31fq6A?JWQ#M-#nuSDlE_}Do9#lW*t#=Map2`7kmW`r4vtyN z(&#IDk8z1TA*J&jmW<(@g!6;3vraZypo&RuZRCrgv+P+TlSWm6Ui{{SH=x+r1BD8w zg3<%qgX#K;D7-Ds_*5%{qehqe9_OOLf-`mXjQrFN4iD#X+BF_N=UpH zr-Qx2e?g|Pvk(gW#-5aIBO)hTc&px?iMy@n6}C%Qlg({TBdn781!$iH8{eWP#WH+| z4@SqQ?9e|fHzx?sUVYLL;<{01?<-*+?fZmCr0nkIV5D^0F5vA!^54=bi2GtNd%vm9j(&k$~#n; zO;ytqE5Vl3!Q)%@$WLLdjrLmk3OV>Ah@>5FGX=#uAr+Y=0 za;GlGRXi?ol8JeHw9pz-t$fCKo&xph_tz!&P*(l!N8F!3qjiv^t%OtbSA%P(_wbha z*gC#OC#yMg@u>kSY{3N5`Z~n;5q8$kvB#bnaH_XrYL$xfov&+s!t~i=qANx-Xvg<8 zU=3mLkw%iRSFbD+!V!)yCATi$_mUg6u;$G9!j6AV^ zQDnt9E<-tfMr)>MA8AH^r(kI6ic5UUh=!l%%wmvTf|#DX#mYt$x;)p9x1)WR#p>w7 zlOpOea;AfYw<6fIQAR1|g>pfP|Kp=QjgP*~_lXr|e2NQbOI6mM#Q9c5dAi&#S+Ipy zR8HLVQg{nSFoo_foI+m)`}{@#OwCAYtSwQxb2x@3s2gYdU}_hD41dPqT_Jl3Tp<{{~~Q7 znJ{8|U1}ZuRCBWC3j$(YpA#wbX7t3Gw0cw*T9g6np6Mv|Z>fku_#5VIwatUtAv${R zw_4_rfOEPEYYY0VVYzu8` z6%Ym>MFUdCo+58}mA@O~mqXE5j}Bae)2#lOdDd#f79HW`Ek>N@a6ozby`70?RkxI@pru(3889a zA5T!&Au_IjP%zg=_%=Ft&3LB>V;-3{j7H4L-X`vuA*&|7TRXg`@P`-lCT{W_IY`ay z%p)FDoJ|Z)I8eD}_(<;Es`phUoeg^2SX~L~J*DRitJJ&iwt8t#zD(7OuwZa4%pdrd zad_S55`Ka-A&s*|AamdEEoUW~h`iO)r&-zbIh4Vszv`W4;!?A4Y#$<(aAVx}=k_ou z!+3<##Kc}7=jCq~0CGFAE^U7X?=|yrO4Q;(vjZ!Hpjrx#oEy0u}ZQz=1_jlDt z@DxWu33$j9li#e~9_8bR;U>V&^97ijuzBH~GN9hN-&^KMVg#22TDsI#l(j?r@V)SM z9V@GZ1?z^{S*^FWp@GHD_&TmNM3`fUwUdoBL^tNIVA3QBo-<8Y$$DuC22qLB7<#O5 zyOaD4Osxo_pRDis9Ob*3Mwj@IA7i%(`=|KaX_pnogr#dF-VvD^7$kKJj#q2fm6d%c#joRk(JUgUETE zVVnU?R;Dy%OyLXjh=usUb6p%gl}nr+p7)OG%(Jaj!)JNSY(<*#!jWNBT7dMXi(UH4A@eZSA?N*d$&VT`iusN@|Mk;xB zlVAYe#fiVeO+{5nHD>c96I#8)%9Qn9Fo^80J->H|{ zoL&5i5j@w*RaATXz+|Xf`iXj*pN3-#9(nJhArY5oyLeNRO&K{YJZ)Y8T?)O@$o3%& zpE8$HN>HM@XeEot6NT`cMME*<5@EFA+3pyi)p^B)o-3EcKx(tM1Df17!fP=V>+ut^d@UJ83V`(Aym!40dnxD8)6M-SOP0$Sj(uoYlj zUl}*ZNE%G8Z3h|oDjHcN%|rVUXwd4;N39Ra{^a1R^sXCvceh1 z^C8~!hvVVm2_5?6sEryjjiduj286^%wmsNN!gzWsR9y-It->Y7;w9bi-nr>Fgq`a~ z_Yxi+?pV1lCE>aK&ONqGdW3I)zwe1pF}=3C(f!6F|MQOOb2)`#8yZt+p|~WuG4{Rn zr;=?3n`b2+`_mG^=_NM)Jk80c`L@Sfk3VV~vPSdCk+?Z}-{#(@B+G(N1NBWIiro!1 zo*O>r;T)_P4_sGy1tc|G=%LYrp&=x1yT&gS5~&jF1Bhhn+nQAGk9fI*nmv1-;~!;1 zwo=|{BI9@X-7@*)-oE)^GSsQRSgE}w3beJq2wV4&_S+yf+HK%ey8(>S&%pbvQ=nUQ0L<#4i6%9dz`W)Pyequ`nhiI= zy=fbmH=cmEO*g=_^%_{V-vGO&1Ms2s5V*G=fpM8K8b`-?c4S~eOR*+uR3Q}siK~>cR`1*AP_|`82 zzlw8^ld}pcDi%RZ^9;ys>;o0e9U!@J1Z1>~fc*9`kot29q_xk2ysl|b{BsbLbc}%N z&S6m4H3h2rple_jd}&+&-mSktQ0qE~{J8}DI?q8^?*WMF+XLYpS0JkQ8u;|zfPkSJ z5Y~STq6ZE@=*SI-8My?p6E`5OdkJI?Zh*?M4UjT&2r@GMG$eB0-$x}BVbM_jP zOdo;5*>jLPe*?;wu0c~%6Xpu4*pwDb;xmZ51dG&BUp#>c_*^fdJUI%u9) z1054fpmBN!bkD4VfteN1xA+Up&Ci3ur5!N7vJHN&U4X&OGcdDv4VIRcz|#5_*xK3x z+uO%r@$ecP9v*?~>+643dH{pL{_FSuu^(Y!U;pR4!ouR$)*giZ&j=v!-r3p78Zqww z03RI|e{yzq3AwfVckcav5JZQ~uiav=uC6XG_egQDN&a65An*wUzPd%<5}feh;6SS{ z{)4*(-=hD^U9R!s;r%Ck*xEn9|4ncf&5Mu!;LqISZd3hVoPYngjQc8xfA`s+@oRe! z`ttH$h)&|7zlPr>;QkNzlUwdkmaMI}45(I?kxuy&UZ=Oer{^zfjEvTw@Tr4SgM*+Q@MoPN6 z+MuL->h0OAEhD4-Cw%qX+|+N1?rswb%0wuFVoFwTmu6iV8I3>UXCURV0(_Nky zT@^hx3vww@k(2u)zGMbsfBTsnEM#K7WT(n!Wc3MjDK-BO_@9S!P>P^5O-*%~QZYYa zVPSG>3oOXAu$0sJLwdGG4sQwmqUbbbWMO1;Z~OA0syV>R{7>(9YvkzgH^prPgPn!$ z?wy^zepQVVeP5jaz#eREA4BlJqPWec!NI=Xf`;<3xw(ly7KfEv{9j3$o1L4P>FaB) zT22Y*o!XxM6ML|=d;FW=H_g~+M|0y!u8O6dSMO-qAMqo>Pf?vF*`Ho~Uut(E2FnyR7U?diTRA8jom zu(?M4AJcOC=gzOU=2jLSfqhfkGkq=2Z?(13|1%iEZ|z#Ver@UD(p+8#332}e*R+`P zqv3ym`~L%hWT4+-(Cv3H4BW~@S15n^^Z)Px!teVt0QcK(_=gXvPq+71|M1WLFZ+A{ z;Quc^xQ!pW|G(X%+XI%CJAlVC4{-XF0#^TeAmot_+`lCQN}oo+5YPswK6L<^FFk-Mq!&C183xpl zE=dzH4QQk00B3kV5QrK8w6V*8?)wIyPu>B1$xDF!$1lL0u?rY8jsZ*N5qKUm2t;EC zfkfO8co{zgWD-Y!P~t3*PZ``oU|BQ;J`@fD zx3UQ!e7C`itTiB=w+-GDZUdE)9iWtT3AC~=fK$ib%+BwjxJ_P1P7r?6K99Y-y1BdDh zpxyxctxJAr+WoCd>Neg0gJ$SzfdPx=Gho?r4oq5Mz`P9xtlD9aZg~LgThD-P%QbLs zI0p{x=ipt(4RGj!!n$vOUwAzD6cz*gA`(GhR3i8on*ls~bUi z`3&%?TLIox7vM|X1<1?W0TB%oAhux~Bs7hK>ZYF{57H%*Tc<#F+XTpJp9ID2qoA^5 z2$c0q0iT8y5Y#vizBVm@sFryU)4mKmJ5RyK&LiN}a|u4RUx3h_eGuMr1)}?Ibx9Zq z7`y>-{d?g1&=E)&J_6yxS0HBS8bpr6Ks=;VCU-4^+`a{n(Z2@L2e(1)z&a=zSOnF> zOQ2|c7t~Def|TI{@MH84q>P<_)TwKb1?ic2kbYS=e+-HjZ$Q=ZHE3*X1V4ZN1kG(7 zprfM$bV9mjWA_l~8kqzG0|Q|AR^J>O12Z!-kiNMH8b%f&opTj*jW2+niFwdGy9-)o zwn6vYCK#Ms1;fL;(6tXb7Iwkd(gqk@hWyoEV0>v4v@Sqr`Ys=UhP4~ev3dqtHf})A zHVlkxo`8YvYcRfh4Q38*z{0`;fDUs3^XuCH8ZigIe*FS_ySre0{Rr&u?}OvxV{m?c z{=coK2Kx7V{j(YQU;Mz&{gAjzkM+L<-2TxYFa)U%FxZ(d@*kAVe*{A9*O?#6oquQ0 ze{u$cNPoK%Z#0~L3m-fCM;PRteD*}g{j-M@$bgZ&l6M2s%q1Q{Q_;X>Rphf$#79f9~$|LXgfvs>e@U^0VvSEB=if5~_X!x;jgWtBP_` z`r5Pq7QVKBunQsjdb_*IbAE)FRc(#_Tlmq@?ysKK#)kUj5MDl2!+#T;msYnHW+0nX zbM{+)0RaKYzY+gG?7ekRUBS~Jdhv^2T!Onh!QBZi0fIY(1PL14-QC@SySuvvcXtZ} z=dw57ufDBUyKn3L{i=4Vnqhio?m2VLOm|P8o^D8CcU{HY;^*jetDUKWV$%Ow3jo}# zLqhOmmu~&E&Pgw~YQRWikl-PdVkEZ1Ugf{~@Qq!dgSHb^t6aTS)#-x9$aC zV)6j6v3UWIkpm#O7)V_pB+md45TrufF=RmM(f|SiSrA+y03SaOg0F!5UjuFEOk!@N4hK8L02Zw)K$R0@F z0Z2X#Ktvn|U}Fyeh=>Lu;{B~PXGb~X92OXGY~!OIH10M z0?^Sh1<7Y1`7EHT>o~j|0*HtdB*-8FNeBXx#4tg~ zq!=J9tp6Y+aIvsJ_?RF{O4|QwAVEus4I(7NrlkAt_7DU)FE*_>q_2!T3_0LUM?0EuK$!CNdbUu1PJAU0RVg)jr2BH0%-Jm(h|UfzNv zJ`O*BK1JZM8tA?6iGcSOknvc)39mi4Lw@tUR1eOVZsEn?fx9)s>uhGSE6*;)_NV<1 z&h~qJdF@E{NwwsnUu9nv=^K&sh@zxpc#lYQbabBPrlzJ=AzGei$j7C@oTs!L`kagR z6Ud#GBv7IQ-b9|J?C8_pwt~H%qI5GSU4Gx%uOL~M1SFGO^?Gapd>e6(h=w$@Y1s_a z2tv4n%QCgqaXzR$I@^rh2J~Kk8cJnlW@Z*@fE>PZzu6t+zIq!pd@eHlF@68;rCEhU zWDL-Lf8+6F9zE|qiAdP$WX@rQU%8b#RAOHnmu-~Xh8n4hq>`&yG^rd!4!R*!CkO}s zJQndMHW;8qRv19R+A6Roz$F$XhnCUAP2xUi!?x{Y3a1_3yP=$F4M|Q;CRtlw*K2pX z+5MVqj_0$3=e@(gtCv)rO2h|v{F~$H{in^YhA2fzO3=jYQ_$D_|a2U^|-ef4h}`bpKod};vu zD^_p)qepHYu-Inn392q8s_K0* zeSJnM5uGCmgyQIpfF;M44FX}3QvsoF@WsgkdrEZ}*h3QZE7Hj=ig)O;1%$gnp(VhLHffKf6CpjbpndypEuJ%|t%2%B`S`o!|N z5P#O#%rb2Rt|HyogsSzz=-4Qq05dh9s4P5;bD=HK+mvGk9nA)k(1q@1g0`NrwpQGd zyYI{Y5G7N>KxQd;%8tmq+0*Ryw{EJC3v;IeJ4uYHJbQOds2XACvv**1jpgQu)n85p z;lDn6OIPBIVY2R`*Qj(Ss%qr(Bpg{1RQhxe*9)+$SRE>Ec{k#4qM``Cv4oPCD}F-} z*k=B*NIC%lDBI*UysV{?F=Hie=vW2#%Q}&%gXEB4H|rMK@kVOAA?#>2%;q}#i`XC3 zYS`1Tk01}Xzej?Tlk;eCaq+Xr+ljK_V?_63M0wr>C5sF^;C}NVd27?a`%Rbk#r@DD z-Mc$REqt(u8Wy?}OnzLULh|Ac@A~dBVfijJms0u-&CiOyOVqM{#0fqOA%jv6BZ;3* z1Qj3&0ui!ec4&y20aa%+F1)s5$>Oo|<^X669Ef=Vtvd`AA#<+uQT;lf3>e_e!^sO8 zl8rA*2T&Fn8PrXp&;hEN8V6K7nzdDls}r}c>sDOuvcQ|cw6ruwJQh9e&X>z}R?o+N z(oOd!pZfAY=&Ul(fOQW;XOnW*myLk4_ou(Nw6;Af@!s9jH+#czatJFvKI1 zQm;sR0d+QP%%rkkJAfX!jAOdIY+Xg(ZvQ9v(Vn+rGTbpn1pGJ{<8^L|ciDDUbz%9! z)5%~+!iNbk0-yV|d0Ad^`|$kSL@#lSpv6Z;P@uv3{P}Z@L4L5Is13D~`urQJgl*AEzt?pqM5RNp7&6H{77gD7o3Nfw6 zS!9gF(nuO`^NYCBw3d%|k)21ATci$)6r&aj1f0WK{^($~Z|X~u_{NuC!6XGYg&#h~ zS?aD~0#D1;FRwn=pIsEVCvE*EdnGKJK(8uS(Y zikR$%B=dm|aT7W7FYgKzb1t1jap)8nn;g4OE)a8DjMqOv84!xk9y^P%yjk50XBCFW zAzFu0ZSzZ%nrse0VilR7p=6Xfz^g1wj~~ex_*=G8)g7OOmPp<$(WzG>j@T@DMv<|t zX&{Zr5|wtH#r6k@DQXbPlB)q5uF#Le8~5Ze<+NqKic^=$#wD$!)=hkmc6P`(*$)DB zZBG(;Hr@7~Gqzq2qw?ukP~ZbXDjU&RSy+T$_Y;(>Aj9pnA$^_+VG%Az@6&9RjE037 zdB5hSrHL?nAaERy$(p-e%4e&ntX9W{D^bp&IlJqLbfB@kn(q$wIu;?naa)1PQ&DA2 zQj*23l5xhB$XDSW$RO_`B+HDFX9aOcNv5+DN)KQdj8Ih-WU=ZNbjufa`MPDN5R%6) z)>5%yrIBe6F8iZ+!-VwlvMut+TbDtbB4yUoF{x=&;fBc|h76E(z!9||l|k!;aZ+z; zqI#5iiko9~jM1I2TOgL>IeZPSJyRL|*)gM0oL|N?q>=j7pP4q%Tudjqm}y**eBg^t zvhw}Q8|xPvkqoNQe%H;PNByL)+X&MlYttjDNt6&_=VMJ#rVFp`heGS#V&)g7XOXW= zR%cFQ5-mQlvyU=GP&THbso4>eS(nO|ra%{NLd@IU-tN)-0KRf@brreIe&{&z?h&*> zAIFG?(D)p1kI(B};~!*J<*FxsyXq$;@iS8{+M@KAE6lCPviD_1fIRf}M;edq~ z`e`43r$@fKedx3e8dL1V0WI>XY5_N)fYU5dml*Q;Afu3SltA=}9xWr}j%LO18*I?m z!6jhUISdrJvpw5lfzJnknY*v1RV+QwuNiKcEgTX-J_%^q*Te&buNT(b=w)b9j%mqQ z@$0&{@5x@61u}XX@YW6gls{u{@{UhE^%OxMvxB(tK9lqvnSS9!Ro)Ea44+(4%E$q< z(v)gid|ib<-$w#fCF#gvO3TP6h)37%alQw?Y47`b*SF29w@s|+%lX>{MhKg@eD1m0 zY~`&saP++1`qt)IP&(Bi7k-KK1wXTLd2P+q#wOy%O(D6+EQ^KV#H7gu>3`gu<_| z?&R?ev(olQT)JWL{}g8L=jV0=2*E=t$7BCWQfHdDLO|mVms1%#4mZT4`V=^7)@R0H z!Ldq78q*Y>|M+Oc_E>*=H2uC%4L+?Fe*PvbWBC1t6JWaWDyAj``OIr$KP72Y+D-ac4P*o2FSjR=hZ1ztlF&R2~=1F@K%A$kA}L(QquJRYyb1lc@91vPFEzCK@> zMp{;&xImtNl`>IWo){qNe9iHUaOZTF!{J92{9!Fug|+t=ojHf5mG17I6=`W3VsR+X zq{}2qagR#OK2C#JuDLKsN7Sn-f+pG(-VWviP;{G+4Pc@Hm&;OH3X9cx6=Ndhvf5)!-O#kY6p#HC({>cwB!1fgS z>r#%cf$;sj8e)T*?1Ge>@@HW=es6ru^KEBz9!F-ELw?BzLdgeMiZn6Vu=?mSCOR6^ zp#pMq9j-jdB5bwbYm;~?DAB+^s@FlySPD!r6EL zEC`~4BcFA>xz67YHVxjjHlL5Lz_X@ zkB_jxa8&gm8GBzuH$7OmqaMDkZ+mZd1`Zmdh{2q!rsW<2Ud}=R>+I`mM$21I`}Vxg zgCcM9B5wg6m#vns6++*%Vj&Z|<$==Y4o0r|L02w5KS|OiED=$D3;?Uf&86!Wz~!NG zA=VX6=hB1bAVoswKG!=+(&b1rD*$)G?#Y30LSf)iJN2;)YwJ`jp9-IZN3+y0EVmpvCP>$5j5rmXh z2!%gKeVi3|2TSGn$VD|77_z*RIh+pqQ9t`>lP=`p<#G*X(XT#lY#I_c_0&Af$yALx z7KtN{b6%C|OWtc}RUK70@3Rcx+9hWX&2Xo@4Do`y*q0|NUm1#wC}nb0Nk<$ON=(Ib zhY1?5YQ?=T-AA#ZN%!4xjmdWeT5vhQXxpmm(>K5CWWo02jg_UEmCmfJ{Ba}KtlrHj z+NP!^Z?OKA`%=!UgrK@1>c0gXE%JnJr)R+TQj&G400ZEM_Wc}}&jV07x>-bH3_<5> zYq7w_y5aud+Y{M~lD90C?!C+!vNOSjz1w02)kd4=h*^C^uG2&9=oaUTa7MH#pm$;Z zfTo25@mPp@&&TB}Nh$yL1B}%rIe6(gcuUwv=KJ=@?SSV9i__wlcGACT+ zQih5P_gM?zrk)8jY*90L#ths6o^~O+%?`0q27-d%V8Y_7@+3Hs{`Zu`6$SFOFd+Yd z_sBuXs8ePjGmt}Q@P3`AcGU~Dz16IyQ@*?Vwks-X(&zTlwfhCkdM5E#lMKR!!O!U6 zoTchaFR-CY8|N&nidB)SymU!!IQ=6uIW*`u$yd@GNmA~ar|b|4qzidSnad1 zqdjHm56RXDHm^d0kWHv5I2nWZ-8&+);hPN{+2rd{L1CSqaU}pOo{X*Tj-sC<^^{IW zBkxr{7IRI~Oe)oH#1`#&qp$V(BeUL-ckqU&Bj+FWH7VZkH80}A5anT|kP<}zF^)~O zXHuxZ2GJfZP?900w2z!DdosHaVPF5fhN#N8vG0tpSmmo#CLVeDtfGz>F;tpUm8s*7 za|LyCtpI*~vorhF$|l(7>h)M=>uJg7ZKUG`^~g-GxD>1 zyd+@eOJ1U+b=0DD#UB`Z$et4lC-~Zlryeq2hpR!o zR4?MQ%P;p$OUo;(Ev{Z(Z||ND?OSg=hEqpp@<|Y)-F=_^ewMt}y_0cy^4G$G5HOQ2 z`D+_N1@o8Yb;B9TFHBLc&F`eQhhEo`+`b@e62U5C#4clGmcXH}@M5qCq+R#h*GLt; zI|0obhkksi?D?x=pCt+>CH632DK2)LS=j=CD93yq+5IKAd6cS=gSxuLV;D_@rV-@D znMP4zBrX_4*$fh82C~+;*2nHd1pS3&Yz54P1SYiYrK3L&HwfGG%!lmqH-IOoki!jJ zn>(h8etqOYGDv>0xv<6pu;S2ckITY01mNJ8tPm1fZYtzQGm;}Ai;keQJ9dLz$#97v zy5Q3~p%;d1S%b;@ncDWBy|#9C-A52F1IOKO+Xy15?=XV4T9N-GlsHoN`qxpPzozKc z)OPZiiuu%Eii|4*5OZzFVx1FW`2T(mBJ#LO-^btLol_9JEDl#DK68P>&qVmvU~U5- zuL~g*EiRU3+Rhpp@03|a?2GO_9Qlf_6I_!A2{(u*o8*7Fk8 z`m3`kp8-DAGo}pRBpk7-&JCMmQl%_F!NT;tANCB#97jBPucMI2E^iEV;F{?6(19N! zHmyrxiXa++bW0YJrsTtiI@F@la1sqM8R_<}?i3UPuOXhVdOYy>*`1X{ubk`?(UwYS zyeeevDH_xhw8QUElwG=mA`S>#nm?~VX2sb$mh$Te>-!&8pUd&L4t;tE@dIo-=D5AX z@XxX;IOT#b8t0IhapbKFqgR~&&L0=>h#seolb#0j%VH;q(DZGa;AF>q>y^RU=1`FBQ2Kz?)|GV$m62+U>tYCWri<4}{AKCjdfi~X-E)x|iG%ii0k3&nT}@1NbIrWd17Jgpa^K}` z3gs~%ZivG`^Rw=!;nn(qy+ii{AzCBH1Aj0;-?)g2e>FqlGZ3l2``Pi~2I#1EOS}23 z5roC$NfaB23Pj>gJ5%>5_9(?30Ih@R{urr&+6a)jBhFZMJW6h|5+1)1z>XeM*?-up^~}d@WVD=7^Fc{$2ZE8xl z{6%E?@Nj4v-0t(>C~|w?v08=lPf^f-mt>ffCk_|DpGb}*|0#$W^1-9TU22o-&S099*=WOvY3 zjqkJQ+pseF0LL;-Aim5iJ^uML4=9kxm;Y&~HJ-ny$pS8~q3JvBBS^<8GX?|y6nhm{ z_IGh`gy?>z6~~o5+71mcpN#x(KD3Jl8)x?&C6`*hz<0&}StNCvcfGT)Fw74WWgsB=n77-nRRTM%ZBR}& z=MLFP)Oz8vEGKLZFHvHF?Bx^~@1L;5DMF(prGO~GXNzIndC3N2ZI!9v#j?0#v6|tr z){)w!$Ff+Hq4Y(fau`X$r5dWW>1>%5Yp4{6^2LP`h#~R9k33Gniid0~a$`cTe%*5 z&az7@u;Z$#AB#8~uRq6S9-k==bWpEe`nhnM^Zxqab*i58TxJO^gACaGQ+$=0mEj?! zf=iIpPgxX>%_R*eM4IHMc(dExVDD$9>S@8>K+jcSbOHpueS$%9Xs}c8cW=t&rI*D& zfmR1DRaX;#NkAB@0C8v_jTL9|(r_%KMREWFVimG%zn=PLkYuc`%ZJX0YJk$ihKlpW ztvfD_@ z5_eIJ2k=x+Y}jIJ*<_WI>by;bo`+T2ETE$Dn^G2QSDmax#aeLLKyL`#bTg^&eo&HE z9q1u|Fgi{f)%YWy)fARE>H>h+byD4H0M+3O7<{)vd%6>l{H|tj z+->5hoIHDsgON-|%>&!Hub(nCLkTy-7Pup311jytP&wRElX{gV)?C*q z$YG9%C5l5^>Ay<(2`piph1T*V^LcB`sTm6R_qMqrKB$Jr-RVJK8D4=Wy80jJX9B#x z?B#a@hn{BMw4Y$Zq!$%(N#1O7MEl{LV32wXnb5m$Y zRNnSgaJA5TgW&sLewL_i-^VYgWGo#10iW&=8t8p4Xs?Cc2fUp87Y+s*OZ23@a_&E* zTC6V|g`H5CM~;U`0mC%%*-4%5D1RILBrlc{*l;*TwRk|6~p{|VfEo_UvdU0RI9Bu3QfY>A0qS34*n$5FiiF?I7DYN@<4;v(HMIN1>HtS!0$3<0BAfYI%{!nmpYkN*XXbIBuC6tw^Szz6T>RATr+nZ zeiO+n7wcoe-MHUfPHI1-=lpIkq^kA$qWct}iiaWn-?jkiDxqzf?pCSd`43m+RK+4C zkE6Kx9?+eS(4MsfS>yyGkq3NH8vfpCJ6TVMT3vsV3|~iNg#T!2DY_K`wwbryRzG-j z29eI_%q_R5jUAI^NJABdEAgG8bS?TR)>VyU!QvQwW7s zBuNJ>i}^*x%QhMM^@=EA137U@fBJU5-mm)wcm3`7JC_{h3NOHBSnE4{DQ{SaimJ{R`R-{b*-uYv z-oE!P<0w`&d4p)Hz78{iR+c1-G_swn#THWfezf+$B@5K~=~Cj@znx*YMm>IdulT`* zP$9s?%B5nZF+y0gevn4{cFAXNpoKpfbd~f9d(%5z!p3dlB1OH_T*HTFu7S;P9SYfm zNL7g2t_^1(r;*a%n_3wYmHRKXC7iSiQJN(*qWn?75vOP2q#&lLujt(Gf@b{an%yUz zbj~q@*`{_V!Bh#4J`F7`j~~zluSK8C-H39qen8$Lsn7iQky0lAEu~y~DGiU1ntqW6 zO4hH>ETWaT$~y>Fr6T99Xsah@%m`cFHz7IdFaf3Lt8d_7LX_3>zV>6XOz0r1fX}9C zzjwymb-9*s{6FK@Ck+6j`*v`>uWyYk1HVM%;o9 z{BmN=4(kb2UL*)_+-)|jRz#lVURU{tT?V7-`;l7Y_|7K6yqjZwRTu>YjcDsgrX@0L z#y7bAPUs~w#`*L|gxGK9_Urk;;^H{k$(Ldj<1wn$F1Xa_YvYi&iri7*iryY&fsHgA`=Me)q@~(+1=ncL8?2o>CzP~-- zDZdQ}JwW6IKu^r;w(EPKd;(S(!J8DLx>6n?JlO-MZ?KE<_mdJc=oFRr62i9}C6*&o zUNes^p~haa%{5`tf#38xArvi8A!V z{ZP6R1T>ap?v0sNKNpUU)4!XLlboY=^m4b2DxB}99j{0lR|xkv)gi&w9)J+e?`;(_ zkI8&w8bYT_D55-ZP#yhv?ITk+Y)i&nK@WND@psh3d?rgQrcwIxm|5!%!^EVXG~Jty zI?+Uc*JF{lY|EFh~>0*!81Z-VU zDAe3@QKe0!7V$^D>RY;E?NE+`c(W@gPReyUOzbQSN=`$-Eb{nY%{d=|r40vk6$F0S zb$)I7?%dG26zz;Ho~U-iMyQK~Z6=ZQ#!NA)Nl)X|?U!v2n~u{$8G5}x3OS&l6g2Ps z4vn*u=bP5t217dklJTgKK75B06n#NYhf9$}M&l$!D}YAugM>LoXg>33S^tS3Jl{wl z{`Lb|P_pGSu~KHS^rJ<)3+B*3zkT{cpsnQ&l^Brqc?OQ0>fu!B_>V3cWdTU>1ABx_ zC^kLw!e(dWt@HZdE%}cR9EHB>?KxD6hJpOfLK$cA2ruY=cK19gJ^fD9G63^*y-xhj zfuXmwiIaC$ws){<4=SBlEtQk0<2de2*{2n?*2(y+#Ao^*7me?@ZsX)4GdPqo(NM3| zc0czXT-!P`((}`3dZ{0w6Mt9c=cejw4PTs@kr|blDVMx5n}4lFXLzT!=rtbmNyS`Z zB_0B?JP;sM|6B$ezt7*LE9y&N6$_>Yh+>I>8i#8>BBl$4D7YVAvKPYI$wXn*9()0E zqgtexynNDd$7sF71ceV~byF+$Om7ZIZyIMR^YU3rL>d;=rgLOHL!asaeo6GjfZRC4 zyzs>%ob2{G!WRI1j<_jy+ht1J~4z#~|gR&hRp?(1Y-+o#(YpVz(e5U+YIe%6b@=^ z8YhC&sedcvda;TJe&^G4M0DG^5#N@;fD-?uqNQ@-Pn= zm;vI|s}+a>ffPZ%RQilvNqTuhcyIn{WZCdG-578Tr3R(ct){4;@^$@2eFH9V3DRkV zCt5!W>Tc`L-r1wnQ#8_OHsW-hQ+kxxAF!}&4eAEe2M?gJ8*naKrtbIaRzcR%yZf}z z!?``&SR9OR&g)Hc7G}#;vivzK{MUO4xoc_~QDXQ=-18ztvBm~^&racqkJS(8A2!h2 zFa2!vgUQYXu1=~P_#E?FEzUpg>uGp~G_%lo;^3L~444+f!GDDIZB!=V{KGty0G&XNqyXMFZRO&N>7ia;MXq4Me<*xgR{SgeGqnTP+ z5V&mFo9gc#IcoZ6J2*@FT9txC-YsLj5(p?-M~7ECiETE}T3$fOm20p*xZ#=0A9+c< z%dLYvs!dzI9khk>@yJUeF80-&em~R8IaBap9=TG*`IN=yk&3|YS0q|n`{>t7Mr8h#vb8~MA}6{F!Je`{0J1O<@C ziYADNaoXZZ_|sTL;DHo6;{=M6tw;{lphSWT^H-p3KtaQ2{!r~>j~~uvxqFS+F*zFD z8T#YwHq;aQ847cPBM&=kfSvE1XTMFxWw+?O(vyd=+-Jb;1|=qm_Nk9Dqhr6Ax&o2% z)oH4q7wd=3>Ye+Tlik@83Vy(aNOWp96g_u7p<1)cRXS~&+p@oITQM)hW6bkPT zfJ#zAep>f*Yw8n2iK^dn-G>~uB5=s^Bl) zWYu11@XEkj8m3~x6)H*KPZ7=?=+ZTj^eEFDL$ux32J<&qe`vu-8I$Y=p4_AR4oc`E z6IM?itu-Ham!Ch(vgzO|zZNG<*cgwIN;scoDbO(UY$J4QZ+`8y1; zyX+alrYjkRZb;DV;Rd#3HDkGoMHalu-HzEz6ysGN*Ig=PBK^EKx*W zcuIpqp&7~~W`?9g^;jk4!nIjCf(ct1iviremQC6YM~y{1*+s?9Ko3z92T*Mac&<`2 zF5-*)Icm}EirG-#>hF8n+JWp;1k-bNXCn-ElhsLVzMDeJqD*~&Rp%t51OFEBMb1iJ z--ecric~K|wzGGe+m++*)Nk8Zx%{PGVt^=Ue}V^IPohKs)PE`=ot105%xvuyfa@xL z_eG!gDPKiq*{O@X{NeJ%sk-Vl=99LcQxZi-B*;qAy&meb?0~oXxCuLUHLPj>=K#)D zd;1RnmSXko=`i*+&Us=`2wzEMC};$c%b>#u)lC}cS&Yx@G+T0blC49fdrDC`hzB2M z?Kw;l)thF7G&8%6O_7vq{S}@Ngl{N1u_emkgSxPpP zicF^xoO5J!guOpp8@BlWo7O(pw4_e&=LnnEtPM&rpQvZbHb^?M*(8IzUg~h*teQ{T zzOm1U9f$<3ieMes-LsawrmWnDd~e?JQF-!`-Tx)@`ZJ6ar)3A0hvE9CUnx^UC%eak zkeK)MUg(05n(1gE)k3_+pp-l&y_^Q!nPQ?OUkrZIa)j3(S{HhFxI)5(S>T?3cb*Hy zGrtZU6Etb|lnXjE`E>%ZnH^kUzZPFF%5|e5h#trG5jH7(kn{!K0wG5-B3>U7<)Zf^ zEx%WvWED;-(vCtYl)c3%%H7LD30gnfu&GdgT|I6Ydy$@5?1qBo;lj(-JJ|3DDIW5Y z0b374TJPHFE}!R^qO$D7c(VM=fpBHZ)cD+$sWuGIYt)S)?12&rz80FKKH&|9KCKT# zEtkeR-YM(DP~Ql9wMXY(hBD>vRTGk1 zD(y}Bw#CV$O3_VNFx94lv6cr@`X;OoT}8svTB9dNnKn+Lg*4%Pq=*iJ?4s_vR%PBx zn8*r&Arrl^7{^(?X_$Vd%@2){!v%NyqY2&KSDg=sA+Pw;a(q8%0KVLiZKccXT>jA! z$g1O^#f3Wep;w@aXg>Pq_afI6Rqt$Rc63wdi#_E*STv}leov$nM#ie%0jagE)Z>e4 z|35JiY=2^qJ0O9a-Qq?|NGQ3Jx#p>SU0CSc((|K9WikcBc)f|(1(37QsN^159`5ar zri@9vurDeX573hKySI%#>3AP6B&(B(G95dnmvOyUzsgT!< zEa$aGqj33x>Y*KImcg^&lua@{9Hg9Z)P@haPHmot6KO|KYat@|(?WdlfbC3T-Yfb) z|55%8||%j*?ZE%-&-)kW`@A@fhbA*rhm~Ah@$J z2=M+}?hqp^|MW{)_4~J6r<#ZIjm+Mx7?sX_E@W0gzaJ!!Six~_W_u?wG@=ZBp1Gi6 z+v;bx1+htzVf4iS)*ggzzx(Y3meFIVvZxn)rq1M|*=k3QpZ+rQAC{*`E%}IdueV_U zKx2>stp%z)={InI5t-*T={D-7fLi-x#g=FhZQVS?78y?1d9?n9D2WmgFw{0_^>Mc{ zj|e^1+yC4t)&!o_{gEGCG%(IQ=RD&6d7N&We3(V%DUbVWGkUYGxBlfb!emIm60iOG zi*@+bz;<}q&Ety$)X=PtNyH5;DY*o!$L34ToqMTGmDtxP_ebM%d!W>D_(4XU^={%3 z$=2D9a+dg}JLAfkVT}7e#@Necz$`G13V1YnC8W&Fp#7XaPo+@KF12AN`e+3`uy{~A z&Zf3~>%2d~T{?xbFOi5nxpbUJwgBDkLVGYLLTlKPW%@QtQ6{gCkx*w{S#^jY(<&R;H! z(SO)5G1${%U>hqY7XMQ`UBd(2(ai1bND=kGBCd;N2zZ^yF#%Cnk@amUo(&Ffv2QPC zkHiDz^Jf)S4}ujN!-&Uy+MU;*fs47+2?$FoWlY1}_e}iKCgNG5ucWZP;-%Zy3DB7U zdLr98h=SRE5Z{32FWfG-HO6h~NTclTT7B%g0^&t4}Lv({`{?$(u|&-IxbON8gMde^gL$x6ZB4%hi; zQB|lQV9z!~4O}WlD!E2LY^)lq1xgh#qB{2%<~QdKz_oJT>*Nth@hg}EBHP?-TfJio zLj!Yg81KX{y@PV_Jq`K_`#wi+Obhv49hFMv0hNRn&cvD{40ZcOp6QMtpLBm-ANgd1 zPv%vyFN6nP@aP?^!>2jchu{w-Nc+6Nx5v76)a?h!+sZu&7U`$6%pZlHs4PrCLA_Co z>%5Y*uZ4YD>@c%WDk!jd4&_;76Zi|dqDXk|sNplmQlI>k)CPuVe=#W>8cwj^0(9)c zzPloo5!uOC(AyW=!p||F+h+QyKIs;VZg40fUCX-Ljx$oLe97?+m$~AjmB9p9SXfR8 z9NE{7SKBdPismV+fAEb#7lX6K^vyd(Frs@=xeO{I6y=6b2npj@lV7tu@yIUP9Jv_53jkS{1_USIUucWllJ+H3h@skJ4k%9qLP zuoyTYEKmvhMggcYe;4>5K-WyvLjg;n-X1WJP_!~?`AQ~?urCWO%6_SPC2?TU4?uHY zV|9352&d{%Zr?bELD2G_%p;U4o`HtP(g}!)E*k2`sa{HjN>K-o^O2*kp9zDkiL1|^ zqq1-xvHjpwzI@Y}^*M&_`$Cm_+R_1f+yQmh_dnS^;lhjjRnHW54nJ$tziajpDBrpv zUfyB5yZ1;RMD+WlzW&UAKP8~b$yvB$NUDHxC5t(D-0R##vWfD*$KvoaXu7-yI-H@# zx6bw>CM_ohn(BRAR+tYm z-n_q;KEt`h2W#AQ4gQN;{_bY0z;)*P3u#Jrq#VG6F-?_ zPfq>x*lp@IR{)VGGFdvNNpVH*z6u&8*|~HRn}69y@-JOMO+m-9D#IDY&HSdn8kw^{154i{;@C>cT;BAz(-qAn({aQp+{*pz z(z}nV;HbSTQREihKTD%XV>nd8GPElkTCoQD>^#p0iTSB0`h}J1@F2|_>C6TeylMqbGei2A$!t~j)QBTlyG}&>9EGOiG*8>Q`Y}+?xK2KmgR+d`atL^*i^|+Sb$|k0;E1*GsIU<8csNVj~??K3Bz-W44KQpkR>TXPU)g zQGLCAPty=&sJ`e}jwnZh;DKCsOzn$LulF#i`}o4TMsgMLuD1CN6zNdv2g4*2Fucp} zwMkjPyb!exA4oklC-3jCGWmvkI=9CAn6ZS7%K_EuDnlT~W49 zXeN%Fti>h!y~By;g}lJ#D^`ou)2oy^h21gT-tvCSQv31-eme$KeER97xl@i*QGl<6 zufHz!wY8cZp`Tp0c|#hkE;4wMl$87GPRJ`CAGoI@{jdhH@#N`5L(AF zFVXQD7SMJZWaO>H9*hCgt(7S4ka}S^b`Zr!bjZ+#fAyGn##`*aVyh+B)6vNLQ}c@{ z)8Ec&1GkGdFMe@Ca+Wri>+7o(@YQ^Yt^Z@bM|_^4cq)-4<2O|3kIB$Wov6BomDdVb z{gSWDoubeFf&OF5Y05s&^T;V)kJ+X_sG!KI@1p0z9HzEyN^%hF{3VbLo8kGaQkMQ` z$or_=Z20Zzxs$L(kqw;oudZnSg~7-6h$F`4q7mDu`j)e?1y(LW8C+s+HNlLn79S=( z5!#!Cvd|m)b4125z2Y^I1oUH9XjY1qQzp5BMK(;y}(jo=kR{w^a7VD}t6#^yv{ zLL}gq^!ito-?@;RH-=7H`ILwShQdDBnO$RvhzXPQPoaG^hN6Z=f{=#G{ z3qV)67jlJ-wlA6Rgp0p|)4W7YcAPAI5M7hQ9=E~~KPHV6zrOT|&NpsEaw8tao65;v zFOlyrcv}xb5kqE3SUGxpU!4!uPf}DHlz4Dclpj1eKlu*ut?{~kZA4i5f!37BOH&M* z?$S6xXYhXcEiu(yaa((V9O`TI)uo1bSu9Cerj!QbD3%}Y3ZrTYD%8cv92%=8+OvRE zdI8sHIhCzY1Bk%j{8Sg$%Cz^G#);zdI!xfo|5&yv^Ab{`Tz?boTI06%Ju^G2Xz47D z3US;g)sZ0bWMgYUo?ix}?&w3Vxn6zi10?o;l#XzD6R7h_p?kM35wCmFye{>%U2r8G%* z2IEcE&RroLZ2-#Uqx&$AcrUXv4d`e9&<1y`b}s^c2bfF4d^F=)6y7%Dor?QV-1H8` zsarnhg!Heb6(>nUB9QOeTjeE3yAzblx~b2g8jV={@|RJ+@+<7jW=xM4*SF{-;lgmp z=0`r_!0a7@9363V{W?3J{3I7X_`w?dfkwk2mq#Py6Q5xB{qJ`v#e;!s%nGDw!r_f0 zc3(O`i>;#<6xR0}Y^n+ChN0jy`&=8*FafFZlfan$=iPh(gLQ^XQ0os;%D{R5P3eWf zawzw%6EW5bN+C+AMPA#xj_wmW**gFLAOJ~3K~zZw08o{M5o=I7VX$$5;nro+@fPUR ztAFuKKwUu7fV!6Ur;zw8Th?*tbxn@$d7!=2x6YYZM;8tpbFe021mZ)0woYHggU1#X z<>7HiyMyRV?D{&J|MZ_S{ruIHv`|oG=lRwFHI7Ce*s5EtIy#i&0*Ph&=m^tU4jXDq4-G!(B12&QLhn+#XBmJog$ZS(Vl8M* zI@%-~Um_V_M5SwP78&2AuIUF5Te!=Z!!q@r&azlwbgK-z+r>7&-$!`E#ekVcn!%pW zR18Cfx)RV@loe*vf_zri>#hGYB2-$F7{l)lKFj{`aUC(~qmA*H%h#@9e)LDV z`S{};{^h^Sg(sd^2!3#;#f8Cutv~+9+5h;*DGma7=r*B%6&|6gru9KVip(otJ!HdU5J2ffYlVoc zE2Yk#y!G8d_bdabtT}3h@x;1`9}rL}DqBNko2YC9k~K)jkc{12^eO|D;!4nn_7U>l zBJeK+exKCugzswb$G>T|nQKf6jhRq6vmoDv<88v{mhAs_;*)H4AkpcD5=;()Kxrbq-o z6_zyqgZi^iL+CC8=Hm8qD!)V@(z8C^CX5MMfd%8se2)rbYTy{e2wG{RGOi3)H^2{7 z4K;0SF#fe)`Uf9p?cl(pzz{$+NaewzJI``<$$43_xsrzNEn8%e^(``^#>$9{~;Pbn4> zeahpCn=c)>XhvmST|kHg_)f$wK-1itItrj1Gj`R*1zK{@L(rOxW0H;g5#^Xoo&M2P zzM{wD9)U!+*itc~QtPNN?a>*bdzJxIrrLM7axZ-&{lk;@Pv1t_cR-`?LCXnPYYY-R zPR>-&L(n5x&r0W!{)6|FHGD3+SdmqIbgHrys zx3abFdb(#Bz=ezV{h?S}Kj514`==_N%ePf{X@jfvM`v6YLQp6AsLV43?_1DA?^j5g zbm3M8A~ekAR>9w;z`(R?uT_>z_il3d%rhLm@B-yzf>8>i^}Hsqu|f9F|2YT0_G{cM z3d$u>fmUX2}&EG!>=M>#br!#7dqzLwwG@oxb-Lnh;Qy#>U zp)GC0U&sQCLA=ONjJ1c3wops>7?fe(L}rB77W5#}5d7FVee|^853h1G%~@2IoD5w< zk4l8u-X4d~KFjp^=P3^lUG-j)wCekn*4SVACAOb@l7pEGoxL8i*0MX9@bb$qv-j8j z8lzwTb!2_r9Xq;%N-2t2#lg4vmNX8hw z?oGZn^|5-}TIcH~^bn&*D6v>;=iZRJmF`&v@ang|Q63%cxNunA-N%8n4wuD%tz$m^ zQzVK6M$96tuR$MxA0Iv5ci1-865Pw_7(v!J9s|Rw{RZI}uo(O_YH+Xs{BJ?f!?gDJ zhi>_^!$Xdqdyd2Bo}<{?a~eUCxG|#<*^4hS`P+Y+n>#xcuR{w6lK*RZT*!yp<0Zy&~e`}KNp8Fytps*@&S%m43Y`B5Vt$(yWI%L(nh-`u0H<3Y*WQZg~ zki7bVANYY)81QbVsxrp{m~zJPLFt=!tdVT2V;Q-J=|zEi0i(>X8X_>KATAOc-FSZd zDV=3CqlwpfO`HE zbCbbffIRvrgTMM$*}Qs{^fv5WYYe-y8Q*&9DRw{kNrqqkGMqct#;vD{=I$z`nN2IE zGsEV(LaahWA)>*$#9tLO0P(@hj!RCVNbJlz852YVoqDEN-|J?BxyM;sjnNt_uGmPY zRHjl&sYP$WT}SsU1DMW={f#ZDK&L2$7(-_yb3P9K0IUu z&Uxhn1%?n?jKNl4BCY%OC*h@xOpTf=`8qi9LGRcH5txF)rTY4=y7+0kMZs{CGT0b0 z+drnFo{Xnv1Tj^IhfFSAV&kWOn(I$I!R3t&vIY47i%3K`$a7wL>M3?U`AM?h`#sFL zb5uRYgN}}+p)|sDTCsK6r}~I?D^$qS@b@W1X=2l-K8e!bK7W-F=ZUespCP+x*=ZULu6HQQ{j90@$-+1dAfd(@{ zX`_PBDytc;L`ueTh@|yNvdWlzm=4VL0@)hjXR{Oqn$U^NC z5TLX|Ijhi0W6&t#B(20T1tl(^Vs%q3*)p;GbYg^Q%$wuM+?Rf8KSrTYn^sWT8nb^3 zx8mDQ_bdZ=>1OrZdmd3c)|fSuDCb2EIpu!B&_)=CM4GT5#QuX#-UW2`=K>)2Y7fDw z7q7F?dHC%EGijkTW+b*|BuXhKC=*axL#iQ7Ak_?qDVHvedErGE(U$!2uB%Iz*!b*c zdFW#wfgT3CXCaNO|#r5rm0L3x@4+UqcZKx0O0(U zO#~=#Hh1_7PQk*1|H0P_egF|RuV3fRJ{HZTlSTS@3msR=FZQYk|6Wy~60Kin`EX)UJ ziBf+<|NL6gdnVAAoYP_yG>kzy%VS60LdhR9mB`kQrFtvvxAWOOX4uX@<)HeLCXNZD zno0?muWT|HrW8Qw|7u3?zyoZ4<}*C>v5)b#*9(4}nYEFoT=|oKlI+j^S&HejPC@Sb zGa~KUOQk5?j!-&i02!iETrogOZ4!9DcND zk3lIR*Xw>+ZvydMOZPMbu+~=1#30QlczG|)%QA1Lb^*@<(8p4Gfz)r+0|Z7v&s!&* zW$}4*BIiQ;w`-!0^57@aE|ivNHaADycl8`osF^?oOY+-RF%_m@$qN@EGE}a?en1SdJ1<-C*kf75G zu1F|i(8~WWWGFjhV2&Ddp%3}-t&MoT6_-*q)90|FP)faa$8OS_K=(8QutxS9XP;O5 zqbxuX|GtwFCb!K@Acr z1#f@g0;4P;r(psHFfYBti@)#-yt2Q~(PVO}`?>@_H6=;H)?mQfKJpRPe&k0e7tAYQ zx}TxSr>?{dOd#0&x(V;i`A)j`QTtow+rZU#s%tjPUsL>8!geASW6a74cvdJc&1*Pi zzsYHzOY4P}8V|IkaxBUFUi+>_unhRo@?H%iminFZ6z12*5?cwR&Ih1815kq$HAu0k z=E8+BZ-4uFrZgHrtp)u0uk+1+_z&4RKBg#&rT26?nQ&u!n-_1~V0V8XV;1}QN23uJ zMNNrC-%3%5Vttr8EhbS7@U?C+0ja~OL}+fbfY9{Qgy>JG8&L66 zRJ~8MCjVHKfK>yGv8=DJuQY(OLW4p2qPN=!jG&$)ppv>VXj2j#yzD)IY|%-eUjqC& z6JU|lk5v3x<&T*|Y!dkI8vLx8=*%;LVN#m|?|Ii11g8PSz5sw5zwisZ@CSdu-eltL zOAk#Z6K+hWeChA}9scDH{Se=L?l}&Qj(W!iS|5+O@4oxE|1bOn%Jb(jMKR|D41bl+ z*BA~GKV5iZ)~G~9<-g%RbRsA9J&B72w9^2n8U-qh?BTzWf*5H5f*P!2MHr1n%P;sY zqkEbGtgVfowvhwS^#_E|6r?+EU>oXQ!gQHIFX(%ueJ}81mA<<@^g8-lDnHEo1N?fQ z4(!YT4FUYa6g5mKH9Yvhc^thlr|ZIa(xesD74KQ2c7|p zQW&J9!;~k!^C|`x0mx~XfCBb^<2QJ^#}t?zAM^6zAz%5$U*wxV^D}O;PvDim`*(Tv zU;Qg~kB?7f3OxAd{v6rIK1O+bTm!zv00fd$v$>vOMI7+MRKT^muli9NnM0uwtg9n{ zP`x{^%PsB)*gQ(XNNP%kVvS)oo1K|TK)A;lfUT;^TH8Eci5|2Ka|6r;qo_d*&F?w& zz7OiORo#p}3TJ<@^ByjT$ECQHCC*luGf)Ll=4Q>K2DM;K$|w zzze_d3q1b^f5859inX=||L=e1Gd%lO{tCLPYRN5m&aeVwa+ z{?AjLKaYv#8LUJcBeKG9l(Iff-IYb*e(F^2c(0+oTh!W38U}Ciz5;}%oVbq>uwrbikDdz`?vlUPyhA5 zj%MCwH@Fw z_8j=GrF*s*2;k1% zqV2m3A>N;@wE*RN0+1?Xn4-!QHOf%q43$?HYx%w>-p*4u4%j)!*@&((yfDvw_OtB$ z`+v`?pZi=b`4^Eb3cm4kKgX5FA7`AVoZs349Qbb@9`eG=FZ1ty`ls3b{O37$=@O&$ zb*#0m1fbkn);0#*e|hYhmZZv6{Q2u>d;mdHQ_Y+KM9&lJ>Ic9vfclp8n*d9mTD?r` zx=<`sQlA+*Qzv_;Y5%C$7u0c#JzFRGiEBAUFb(1)pSTx5?8u8HPgiur%jk^nFp)(P zzjuO>KB?cl@b&RqIRW^Td5s!q^w60AdM!h*4KP{Cx$`6b%=bKqRn#fMK^w5Z?1dM2 z`E#EG`Xzt-r-1#hewE+6F=QhB1cS$%N;heU>l$_>Z&w`Ol+)gPk1?x3}H4 zTGtxDabKYd|huDOuqA`jB#C2FTqZY&(q?#dB?kE0q&(jKskrq$yOshCYR)RAy zqy!6wl!^fgITDeT6Y#9ifA_!qpD!dz-L&4}Cmu{!qslK^)&g>m zjo$@6@%V^NCG{mb_twU)5GEuA4HER&fnTj<==F?TE8g?SCBE+i_s^LEp=uD813&&t zfam}I-{)(;_G|1M9kG3Iz|&v-D*xukf1I1Y{oAz`VS&TlU3PEWptP1sDRL21s(H_Y zn^7jCMkUHg-ynBY_nufpDpWEiyZ9~!7v4!ay3j;@l+$NyIjJ=}sqb6;ZT>C`zIe=y zvt(2Z5NnJv=FYTAev{~)HUR(xTRK}Xiu=d*x`Z@fOFer~uN_a%_poTu*!X7;^N_yr zrvX0H1x1U_!-Ga88X2T$<63R&vVzi0zg-;VeE$a@;N_b$e&>Z<&bhtT^>)4&PrbX7 zNUY@#f9~hF^4;G}e)A^3_2WOz(UVUyU~WP+^2vnhOD{3Ha)o1^@viG@JaA=9g<}S! z%9S`L{;zuiA|M7-!r=ZVP~*#_RmtGWAxbWAgr%NJv^eS&_tM#IcSJ}7(Tb29Rb^SW zJXP{8qkCEd05H}RP24}S6>S{y3sZ%4C4X1adsRPH@B38zc#}ClLRW<++GkH>V5!va zY~R^VC9WrcPBjcP+M5AtV}RbskZ}sblpp@scku2jo9xl#2lSQ>bFwLL`1I3!@spqA z|ND!7k^Lv1B%w+237=uVli7?{UU~^z<$Uv*qSG;I zbitVbwgjD!u3g4u0Qv$akM!D#P)UNMcetzKuMKr zpEXQTRfaYOF&1rv$_itK{3qY{4*s|Q`zfBiIc1ARt@l%;o>~(~fS3N+KdapkAtn&B z&^Y|JTUC7c{EP?BDT-912O2d{E|ob^P53Vk#?)pM5#wyGy(*6p*&@UZLzY0e0<8mE zvU6ADSxdtZ1Ye%4F|Hx#DiiQ5krgwIoj}&J_*f&5mL%_X;9d0BT@=6KCrEpUUfdpS zqZNq=%N9ueMc@y=Q<^S8gQV61lJx<4V}RZqPz(~zUl{Wf-~TX=UD@O&Fr)1ljJpXf z(*ok=pRv>rl0V+(F7Vjpb^g@j_mLlMgUnFl%sDN+`mYjPyYu*(10%EoDopY2pQ{b^ z9zNaJLTV1{vY%Q5@DZW8ry3p`%{yY$z={Y}Rqb%b=$>Z)Wo2Ip&b|=x3onRRH~UNg zu!u$V0dgte7lFP9u&^BXElnZX_tMZ{psq8p*+&SasZ6=tfYAWGo{?;1B!LMG6V6{; z<0roV5kBN12l<1qZ~0hiY^KJn4(j5i0!P=h%@F+&YA$PyR? z4ItEI`0I?XQ6=@W3khC=cFjcu=iiZ{ey#$(p-8w#OUOTqf^lU6)-#LJbSQV^?A zS?Zf-q-Z<9%Q^sxBN%SMfA%N8gSY+OkpJuVUt!M*8_YWf6$4-}%)TDNLMF^HS2KeqG+0Z}diH0bE!Sd-RrJ$> zzB{&W9|8D162DKqZ|x&mHph?ze8Uh)L5srL6vVg8htYv`lscG+6-5@xJx5vZ!_Of>|B6$4<9>b+0|Wc~k$ zc0h0S0r1kK?kV3<{d=W%4=t7Sk#^BqzYO>b_PI#vcg=`+SSoI6tW=`~tP&t|Ody(n zLlVvLwBTLuIM07|WsU#$tK0lPU)$!!Q9;T)BY=Je5P)Cel8r_R{>-~B@`HcuGV7Ze z`5+-#Pf6A@^hSmnC+K17`WMI)%oLT4=I==4!%;f(R+VD}RxH*UU-RL%%;XSNYXZK* zkWq8DPeSDyBg$om1v?Sym&rYRi+iP|VG6Azokig6 zuImG5*#F!PP6_<5pSd@bmPb4uH#bHIbMQGvr%{qN39de3U=tUI&yP#AfzlJGZ0uY0II4g5}jhLChiU#)c-nG96~}Ok5MUc zL0vJZP-#-z*h;5pFa1e^!%$;0&GD>aeYG^n6*VP2nx|DSc@^nS#|ZD5tK^YR%S2mi7%ZP*7P&Bk3OlbS@-F^hxwvMcdIct_#l70zWM89XQCf7WSYON7u)_6ld@nhz2GNRX0xBE$?nK)E zCFpU28l^7gKTOLva_1GS|RBu4l6ODH7 zS?3mq4+Uf!*h(0W$FKB^zN_h;X8_xK$2Tu*jSCURPUVMC8xVl!<_d73z(zd`!0(Z; zumtd3(8I#FY)%vC19QC2wuhZs>c{8O-cBjy_#XmFqjie-338o=^W2W}qML&yI7g$ghT(8{rka7kiUE)p_GPWqzK9)T zop_Qc6lm*K7fJ0|o|DKm*rEG+w6%e*6z-vAPQ!%~zYpY#mdU)z-(?QnQ&cWlNK{}7 z+Jo4-$vBt&!jS*~AOJ~3K~x9I0llvBp4YX(nEEnuV$(3ZX->ayk9s`#{%~ zimvQ80)M!dMq0D_y7RSA1^1&HrXDes%w!{LlaCp%r_rt^q*NGzjr;j5V&Mws^a^W>*cmm0S z#=?Y{9z1rdX-b?@#iR3HW^roaG&s>^m?-8HNY6o`xe zi+Ac;Q(=v7d#a!bV7BjQb4#RA7(_5+wqlfsH55g$%Ne74o&f+@YYMDW`A+F#rIpND(~$M(T%&iy3?Ge~9_l zX1!2P64L4dw1`e(4kt{3_8UTr3Y2x4fcG;1(X3uQ;Pxg&L*68q3(YDpGi+HPq<+pm$78H@{s`4-{nLC= zVTK{;+|wRzpb#oOR3#&@rYMSHpEE`)1^}4K?ntJ57+Lv0i->l~BgQ&aHdQ?@!XnW3 zso{%$FO&A+vu}TkfWJuHj|X-Q;qE@WT7k6J$IKysHzW*+bE2uB_Q!n|>&Sxht0*Nk zj_1!eT3(;K=fFv15-2~gHp|>NsgAJu1gjPItt&2W39~ZA>LF5jQ$X6cMJYeQXgGy# z22*q@PGi){h{n2hKsjfORtx~JBC~e5T$)e6uqz1rQlXI#Di?)on9JAhsY{J!IapC>S|mJ_q@+`#2Z#J{6` zD(PUf=YI8qKaBNXLlvg`(Q}S*6voE@l}6AgJ0npFV--{eYbqf1mzI;*V{dza(rM&y zoM*?>cf*~lRU=9np*Wu4S{R%uS}_1XtlhEVY(o)?ts?-MkQVG(ND0nPz`t*C-9EHm zlVyPK89TR4A5-WVkDNl???}$p`UO(IK9@z?g)x2W#4yXjS1k6nTQccBpTWH zZQKIyyU_!%l?zGg0V+*V$pBkc)Y*Yi&7w+N2+`#|Fh{Mc^_OF;#TujX{LEPZtA-!| z8{^?q;wSzPsQr4aCZW;ydg{uq7SQ_Z9z~)*+y36#M%sV1Inv#a^|NKf%lkBv(2^tG zyyqBQi8?3wyVvwagTI^27%{V$+D8*!BV`Hy(!@HPP8USFCT;uxz+Ti(DxWu5)IVRYx{^jTj%sJ|l z@cw%*bLfm)B<-O`;`-Lc(qUGTQHlh()F_TBTJ ziv+~W!ZtmqiO1ZM3DIFhSQk1}ef#NNX7t>I8nCuFZl-_(lr7OVM|>Axm1HPe%srBb z&9*N?B_blqn6u{qgcSn-pfGltC8~L0Xn^mEgYfpI;Cjs~T41QPgGCvCeV|x$HUac~ zuVDDP==F@ood)==Wy_>~7`G&6pjRtc<~%$J{5^~`HdyDh^k%!}Ich{_?c=8dmuv(y zML~@Z0G)w3U2A_OLasM0sKl7+#;G>C%V@;_fU2mbHcM;O&XtQs;UWpeKw%5byfo|r zAf{!2kGAavedO^zHSl}RXAYqBUqcu8!2FbCo&Dc&@P~E5tg*G1-W|3R3iLAq)eJkf z{Z&ek{~%cZTn*3)2Z|s{xhO!rul6O^?wIJ)?Nc!3?3Dt;iU9zyKdoNd7$-ACMq%zZ zkj6D(bU9F-kAx{JR&PfGOE!7%eo z{%XIAI1?ZYo0~GN&5WBA?yy`TWr3}XpCb@7B?CLdCW^!}j9Tl{^Sf^G7lcx+X#}jb zXRakUtQY_Q$Az5=QVKG1m4N<1*FEH+ZUIyIj6k4C4PGMoTQTbZ`sjP#xD!i>`=oJq z`LeMmsQdLfERp)Pn%z0Sh0eZsTvw~pJ;5;Ez|ux&DDU zg~>qcQ;yGFfvLbuL086VS zEepnnv9`0%p6%l?wPR2L86-p3l}BeZlGop(Fw1h6SB{vCGr8z2Ui43KQtn0JB??|MF^od(do=HM)B zEfv=?y-YT-0$Qn+6YwmPwf0!7^4));1{MMEfHMQ)xO5lfMBjU){;5>^u4X`IZ1gz? zqWEVIGidEI+E-WNw)P$E$9iX+N^uit`uku5sLKw}!~Q$x5Jw*3Dc5WTwnRjGMlwY7 zfLun{!6hWyLX9t>^w7;vGC1eY1t^cO)eJk`#@bg&suvO2hv}WGh50wkllRMzM$4e-e51OUR9XgB(0Zl^;_iZ$rJ^zxE>TTmsWopps|;RxKcDyzBgqysMi%vg)dx5wH_ns8Z&(nyZ!)Xbd4gtimX3` z46k5Sh9pB&G6Do8l{*f`%`2cnJy7X;l4z85x%WynHoejcs}k(+66)IhaOFS3zT=0f zzVLYPb?2k15=2PW?n8a>zoC*8ndQC@K*ZSVW4I=RVv9ND z$UFKPt55`sc1}QRD2vl258Z9FVgR0s!ro-$I>iPrKS13WLf-!o33N@ z7Wwc2%*Hz?h7Tf}@5H3%kYtQbhhCzWBnS!vrkO-1H1SSwbAa?ErX;T;Me%YemefIO*<}t{ZF_*5y57OH^){-%# z8LmREaGv#I<|KXnnyV)BE<`${^6I=`({(C+AH}(MQmws%V)PKQ_7FB%L#1md#MRj& zF2-(32V7!Ms~Y4wnu#Z@?}9x3uC<;6e;>opTGvcKY>7^X3@^W%JTC~@oqjGjw~bE0 z8k)kd6CR77F5a7qt4zSNOrt?^L%aIS$!5VC`L6u&k*m#s;{2f$l45CNS9(59a{7z);?bu`; zoeog8@PMz7s%QaHsl}-!eGDL`SenODzHj_8#-X*2qB(6wf=F#DAfUxZ0Yuz=@&1Dr z*kfhQ|8K2eB&8xl#Fj--oVkfXVZ{JyvSKUo>R?F!wE|)dmV}TEh@Um6_w`$v61;5H zt$^Ntsik}Z*_xB|$ap1QmlJZHkeOZU)Y`VoPdpqX7cax9biQRY8{VOuA!&^mj}kOj#D0L1N}jfUvDJ z;5T9sJ))2in&U&I)G80)EK^?E$$Ewr5pAtd1r;*RU$>2Oiuk=*M04Kwj{Uw!;@4`q zSIrg9c{kjI!376ylS8==`77?bZ?g?}(EDwvz|0UeqDn82Z$3h~@gBwKm_S$_?EgN75Vn!1qSGY-`NXCk z3Pzy_7%Qm6GXrDQ@$qr*Hg`L%7=Wj}!*cihD9J_CSV9}?I1#A!0pRij;yFT>N$|Pv z@v^QXFR1p$fjAw*=p3XQPSvk+n7#((fs^zq%wwlOrCzN!gk&9?Y>^Khpxk;7#oD{E zn~!3X4d=MCIf+y#Ic}X^AF$(fUFp9_(suzDd;7b#{xVu*QuKj-(fD|*18kG(n~-}S zkAET|3LtSPI6P)&7dq2W5S3z7ic&He3D;35yDtZT_OjOMC`DGKFxZ0OIR}0eR1=uI0_CAo-vj7Fr<<^?nIU9U$p!MQ zN2oR)bD$qzhh!bCESQ{x3T2zQ@NPwd$IBK;?!NJ{)^Hl{e;>u;V+|zUueG+tX!`O6 zthIG$&SUxNd7ne#@|>u0nal1kALr9z4m{6>Q5br z$mO~hpm!G48lhEgQcUkK5~+P*5p`++dIePgy>UQZy99%a4)msQU_X4p&3P}C(*|PD z+u*S;uzF0DU8UH15Bd6IR2%O`vhzMXSD2S_%Nqmw`-vw?g)#EW;2C_&~ z=x*CR?y~iZ#s}~(8wY(p06!o+Q(HmD2N2I74vNx830xG#&w_kLX~h5{5+Qd^zj`_l z|9>6)L0Y=MYQE0_y~_v$SK{iOc;ibjy5wwoF)-VK!{?pE7u$ed`SR2{5vRf?o6JTJ zQEt7DV*OF<#-m8O;lOEgv{Wct)rVgM#AWt(cU%{geSq#W2Nv1wi-6w8jAH6;v&jDM z9w%NNasd27#}q@JpKllLo|?2CbCU)Ph^0u*VFjwnyu9#)?{Zo(fQYO}j`f8=q4eM9 z130@dWCOZ1Qr$`;=~Mm17tmO5&))|_FX^ip1HS!=C@z0k}p%`<7LYjLRZqC2Kb9odl!vAiMq}~t#z#h zEbpeb#t(kze z%Jm1Rt-z=!Kuytlu})1-*I?tCm-Hhi-SchOzv&Wl&<^Z+;CEqb(2FRl^b+~jcTsG< zmumC<*x}_m^G@3mWv3{G?{e$n{HFm~pCpgRcfI^w`~9?%KBh&!g}!BrOn_y}_v=uy$e-{dL&$(1<{{65AOE3N|rWFH-$Xa`BeZr6H z2crDL@AL^wXnXG6)^3>|!1$t*_Q{$9_3TwRehsQ)oTN{jYVU1GY~icuQmXVm^7HSd zSbvOa>wVb4MOO=Na}qHqI|Zm)Tf<^U-Xef5G6TBHUJu}xjXeqIeUX7MHU@ilS>HMI znE-%`^?SSDM?2l0b$I}bG8#=tA{3|?x{kn=x!F7T4A6=JL{wDv<+XuAP`)2V+#NW0 z+(WOss4bRCT&Qle& zUf3CllqgfU7xe_tF9O<0PP|3t!J>6tx?QlJ6awt-XBpt*<;zR}2n|7F?~XrD!D(Pi z61uFFsFU0B`px)Xy-4E6?+%3FSZ#$GH?rL2T;B2yUZx>xgYwyht%5~ zt4EaSRmw~6Ww!C1*o}8%vn{kzU}q#ULm6t&D>a{db6W7mW8-~vrTS_1*GG#0-=$jt zdv`xwsee1!j`i zS}}l#)`rQGZUPV|=|iYUYM+4eF`>lOj%$sorjYMb`+=0V>w&te&djiCOfk4lap^nB zH@_3R@lGV&Kr38)US=*-=ZyL}DcvoBJ&o$V$RDtbk#xUzkFhBHcUnf!x6jjzxf4tv zTScweBRT|XZ{KcdL)r?~V1^3C^SH{RtzFDR2c&%H!WJQhpulN@^8vCCBaTb1(h z`fe(4SaupZEmL@-NGXj<(mD)ir1A7A?+b|g0e0DpiFyYJVD$)Vg)~jiWELQ-7(k1x zrD!s}tk3=nm0_+aNC*kJ<`#a#x?x6+kdbHCDK0)vzV)4$jdwu}`Wae|mx8|gxlFb1 z+vcS8x2oEo)=9T)A9oe`q@j@1FRfLAP|a_GdnZgt0~XLCkc=^L>+goaIkXZIGlLfB8(JjcZx{57 z_S-imUe>2A^o=`--VDIM9>-f;2Venhb26D?m3EF_tV;wU3i5ce0?o8>&O}JGYddDk zGdVFZuwno$Dk>%eZ4s+$;Ma{oB_sn`bX7o-Pz&su`jbWp;()+=npteGs$tJ|w$<*7$6^<2t33B|tw7 z=x^7azg=7YG;00b4*2f*^=S)nWG7exeruZU#z5y%t+)TZ9$0$`eI3G?RRLBEAfnyF z;_%8kg%v#zQ({VkQBaL8lArqk)zv3Z7e9bryGoi3NTdK}C>vhBlR+PTFB@~K_WT=V z%iryQKMi%6fH5Yj1+XFDS4Re<>(KYiz)0IH5E6`Q2WG9cvp4i2-auM0fQbI!>(9LS z?#tJ27Bjms9-c#8c#Pz2A4FaIW7y66(b*79MIr^-RH&ZNT%45idO#n4zmxX-X*Gnm zB893!a5lY`f|OZP;3XF8^8i|NkqUmoSYIe8mWmOE0U|apiei-t{8pe}|LvE{&;9iu zG8f+VKJI(ydsw^tFzH~8L>ZLLQO2Ot6s3|Hm|cMOwXA+KLEk6UPop86b&Bo#zIE|; zSK=Kees#+#ap}RTXCKD54y$uQgCE#!BW6_&{MMi^eBlf4e%JT^*H@EljZ`a_(pya+ zb@R~mfpifgIIRiL-Cy7GMYIU?_p+1^w9Nj8I=Q>f>P(ai{VHqbd;r!8rr8N#sboMd zLzJ3LthHxyS}<5m58k40ed}AhN~vR8PO-)(`T((Q4~?XcRsHZ6mWOqHW8&o}jgP5& zjAcxxODCjwx@Dy4!GFx>DnQzf+003!N{pZJNxEX(FRx^2name8>T?@I5!b$yb)?|AXc zy2$icwB5Zf=>v5cN6gG!fft~nIUYh7FpT$$N)uNOdfh;!SW-YHPdxF&9u7+?+Vo7& zN(1OnRm>*K)aXE3-@5&O8Yf}YWg;V7Vy4>6l$}cju75l6G z25FKY*7XDY&ENb@KYIR>#t zS!nZDlj9Aigj}^#CO-&PQ8Gy6RDC-x6i72?Ww1p3U0%YC)C>H4ZNt=O)Cb_ zAyN8Uc%N?rw0WDoua(wG(mr0k0{xp$A{Il?5+E_tItpMAHw~P&j^T@Q_BjUNX8@+o z3itaHtTE-z&Q1XT!b88|7k8VqVgMbo)*j7+t*a5VJK=Wi{+Rk4f{T84X$AU|>GTdl zK_>&Ci3Ef#eWP&K2O`{Z4W@DpK6%nDfHLfu8&rre{-m+s-_&+LMq2C9{^A%0a**V@!g;- zbsvBbJP={E+1&CIbU(Oty^R$;&nojZ4a2j){t`y_cEz)uVQRk-fkN6rZdTJpNS zzZUK|#lTws=M#X$Hiqe4{X5Wo+Z@BNE&77*`))j0stQ@x#^8W_?o)2Zr%&*9KM$ zphIOooeBe__CzI~)rGcl-Z3*N~W=mhRe2e!5PFQ65ubPa1PA~K z0xJg4p&$LxA3glaSH6+v9Zz2=F7=a|Fl|xQW|TfNO?pvp^H04 zVJsGDrUrK#*L?t7OYs4Q5n_!kiXz9Ei_2buMUKFQr+dnAubWm3pogkrc7)Q=3){E@ zPI}Sa$|NF8r&Dg;yvg3)9(#LxHQ0k>?$$bl9*JEB(EUA`OgK0=;KdhT1RzNgwzjso zdi5&TuV3ft)vFALLy{z!V4FE!-BrV(mv!3&HvMDl7S2c3`s~jG%1# z;4f5Ce{4wn_95dPjP+|6*>B3-=4g4V9M;{|W{e@=Gnt$(2T{Z+ud6)mI2RPqc*vt; zT>eS)J`QY;goMOble?vbkN|_w(m`yOM+di-&osu)P#b?OVQgh=l3wHZeubW#cx77W z&TmpUBI+eBk$pMnTHW~+p$&bP`QIMv3LrT17HPj0+{Slfu~jn7*q6J$xmo4)YqtVr zQ8~xBTW18v@5^tYIX-+^j&ojGOx5*sAP*fKoxyyOQV%|?dAH4(1#WBv5uPJ@X(PhV z8eWX=Ha;6ha-UTS=KXkildezX%Qzvm)gM;!ZokWXcle$bcK1uk+hun)e<<8(Gu&c- zlAIZaEubRz;;?}i9lA}ogj+(K*nzT1`Qeetq}Kky)a`A0Wn5CtgZTK@A`Milp*1~l zW5?^ELr0Gtb17*E+a4AdH~MyL8%OcYa{~q~3xWazM(23pJq|tJ+oVfm$hT@2ihjJvNEHjtMy+?fqJ4F_)fpMPL<=(p)Cf%XXZ@-C?$-RQ zpQbxdt*QTf79Ra*L18bAbOpmxQP_h;X$W#yyBOjtZ!E5J z(mK7$+NhZrboC{!Yp+RD zSe3Z5IaT(A!hBy!9cu(b-l_{HeB#eIGu{yr{Vsju##KkIarKLPws%eo(mr6Jr^TJ} z8JI7dJl#5ZTK9U^+AxXhA}R{FM>Np3!N+P(d=O3E?rdBmcGjEw!y667rb5%S8$7L6 ztM@gG#5?26rK$2N>C=f&F2*1wt~?xD89lgi$kD3>KP~^05BF+o8ylCBhnvJJsN~!Y z8}-sYhI0g#iybgNE_Lmk--fJq+qk$R7FoOSi+x4;(cjKIyrd%cx%W60AvN_h?xBtg z3f?{HR&(`TRe5x+T9M~fN0n_mcTU#e^!~h^MomfwxNrOTb4Iv_9k{xQq&0iA^(ngj z-p!IXAXZ|G#eH?~q2_Ro$ibHisuX&kU%Ys+t_43Gr`nU_3G#F5=6yD_lAbiWY3vT~ z6Y;B?Hi?UP_FlhHQGZ6Adw-92*rWGPF9x2u5qp5Mel1h(=VKI2 zTd!T5buQ3(+IQP-WIXC^h%M(Tj0OL&E+!uT(zv04m1<5!XS_q4PcbF`fz9dM82ogC zy0n=i*r*picj-Q1`B=O&K)`#Vah(q^mCeOsuYGoN9D4_wv zdz9MRT6rtM5n6mQb;@k&Xt&+@9qmt)7Fmqu-Wla9^WQtTwdpf+&1)NbszX~pjrP;t zI27>h({qIm${ma*CoZQO3v<{$#__`k`y@k7yBZoNh$djSezK3{%q{x1%Q81yZgr3a zGRO>@US}<;k3Oron_26Ty8F6qp>WUpaPlS@xo>fLz8-a9 z^>BzI(qlA1d@pUJab-qBLW8hr?uN%3DpI|zLmGKgLMgNNf9=Wogr=wOTw@a)!~?mA zSD@;h<9at$pFjVCk6s_`#>e0Fd{kOuUtC=LlqY3l(Wn((TXrE`zRI|@NV9HRb_nI# zk$`w4zV94Er2g6`ytwP?kZG$rN2>(9!#7?!Hg$BX={bfT*kuicoh2qNc)V=CsI_ZoquSd|{}cx(Eg@8%VkbvXn_nrS#M#dIP&4A-M@{J+uevr6uFOQ56JNJ(o&4?$-=|dO z0)0I;=W1+RsXq?rtfS|@nJCkCR>o}86RG1amjd0>cJ&Rb(Po?Y($5rbxk7U> zwXGbr+C3jh|L?M#-QxGuc8fYz-%kjRKNY5RzR1v7{Dbo==Y&^%eY2k6?bYM6ykFKDt9OTpv zI!zIKrqTN~=dc|q<21kF%9Y*+$n8d`_3#=?S4yYmf6?ZQiru$fzK%@jAA5k zSHAb+ol|}ZZjGl8FEcr_)I6%a(`ZQx%?vlnI&#s8_bxKO5u%Bd5%*qiE3(J_$qX7b z^1|!U_-N+MNu-lU_WFJfRp^hedK0ja)>p64KfO{tj1r%!DB(ZYmK6T2Moq1@T;u!f z=au@*a2f^CQkSzPt@phWa$Rk4W~6(f`(kDEK8?GwCfTC_)YTF-gJ~m~e$5sm=Y?s9 zLBy}(Zl3k_QP-4)u zttMS#q$sO@>fO@B()6J7oiW9Nhy+he$n^oH_)g8XbP=tNY)k9S8ih6rr8Hx#Ni2zu z95y1n88+uV=>6^M<4bD8Zoe8y>|HN9#YG9H8CR8@GIkug^;zi-_X(TOH&TzkE3T7> zyTWZR>tfQnYD2nAr&1bsR^3@)iqv+BQqR+`4IM882_2*t+jjEBC4+_jpz6URqCU1v zrMh%B3#k%!6Q6se4aj7r)hS2HAAI~nBUSNHRiM;RL);pvsuLfaC3q@yJ$!t2wa)I( z2zjZkSYWj2_}ms0obII#5n}gN$UhP7@?e?Ou6sM%7`o!fNN0Y;`t`yZ5~pbSQs#Ty zjFRywR+g%+?k9~rLqd4)y2vE_$@a}J^fzQ^XO~N_rMOr+`+X>OHXGgdYr9wX|;<|W~asfINjZ%~Ns*A&4+^JLLHBPo$ zBJaaLU%T~EIF|vfVWuAQ_6_g$J8whQTAUfSs;H>wRj50{XvrC(!xB_+H$PfA`;&LS zMc+|2o|795^qC)%kVEadzRP?Q53X=|I4C4ECDK_sWFKX*qV4SLbPg=23B9GYjZUoY z<w0c$FklV5R^2OoVFXZOBg;8dE8G{4)ce#2;nHKCGB~Ymeuw1%) znQ9DApEp>V&DT1XY?4$dbl{DX-z<~&KL3s@?9bEM=}&SCQE*?Zwe>#3+@nK`A7XrhJb(02?w$ysA# zV{vwNcEd^GHcpaUc9#Og+3mcqoBeZgmjp_2(W^X~>w zdn<(DNus-UVzKCb6DhZ2*Y-JtTraFvJIX)Fwc!|p=y`!v6vA!OYi^ng-|4p^hp(}& zViQQRlI*(e|9K75BV7D%F=%peq`pnMY_+u6yZG4MrSb?LAiVq*GkV)KE+5bs`^Rxe9)vpe`RPy47&C99xO~=$s8on7B)iEldQ(B>1 zExDB43v}x+qr-2HpwjbvWLOz`1795 zwX8?&-@SWB3LQ+63%i-qasMXgmkV|hyX6#$ukhU}KVq_h|N0q|F{*bS-8q{VXhvw6 z5!qI=RU9@|B$Im)~+SGBk-cF^g~4aI0^Q_I?EX3jouj!@r1 zqv|;z%Ry1N`HGhkyLjmQ1cD8Q{?00qao+0^2+16f?5r4&i$*(F>-d70<$wSsa%TL17ud2Y_fQ^e)T(i)an$& zx*3@jMI~FNP8#m1GG;L4@0-?}mcfTU?kH5|@6ta0wdTayWDC#JmV6f^aNAd!>(J0&fo0 zJ$m@ikQ5m?W~b`fd#Q?Z+qwviFDCvCoTis{cjnMDUf_2T=+k$onWkq3Vjt@d`L&`{K~aq0geq3b>S=O6*l)JvFU6DN}7|!HG7@N zn)4Ig$Gva8iB^mznGpv31Zmx~t*fY*+Q`DE2WxA&?mLs&=~LM!P@e#kTX?S+dm! z^se;mBF36FLoptzF+*+#+z3iNPrcIKGM7{8agr2+r>RT{>OUqP6h(V}Jm)ufkpX-#%2*9uwJE7b?8%0b>#;Y0E+Q^m5;O#`Q| z@2B8#8&1FO>{Tnac>4BebCVMz{YLsVd0I_saq{?w#=(!VjoL53yTZ9$Y{qn}j<6Wd zX7PBP&>fh=hmu%#+GQl@4L1bXXRNW4P|ntEzPX}YJMj{~OIJhOle2zT&z(Q-@;>jh z%0YeuX*}mrIG|Ggk$#D@ZO;bt*CMn%0!U7Y8X#=9+Kjv=T&bn)d&EZ4G3nbLHR`HvZ^2_c$GS~h7{&AJ^ zC%Nr|wjx3X`;V00TVi898h&j!xTERwLiFJAGjB!2R&VEF9S~copD=ne*DHs0{)Qol zy<=NBS0X00i$_%RS<`o|!F)Roy1<~I+3TS-t*jPWJdBoR>~{IzRpjifDei|z9ChPx zxpYWKNSfclS9VIiR@L=f{^Ko&e2geIEZF!WYu(XB2hoT@eXEhZ`1spiMjbj~@_2xgqMDtFid>nzW8CG$RdMoGk^!Q-zqBt*yS1oi_HmED zbT6I2D#jvdqMoGcR( z5;%Ptr41(S985AS5s=!;X!(g@?OJouT@hh&sft0e`#zUEybvhE$+$`;WRtllCC?oJ zsXfYD`z$J|jA^?!&y}@WxgC^Xrq@p$nM^%uEFUL&B1YnjQu;FqwU5uuKJ=FBggH=f zx_&g-v`df|NQt8jx>I)h1vyR@@I8#iopDpuKEaNT0`fLn)iaKAG=!?Yo!hs|bT3}^ zp2TN56;Dk~X$VLyo?UsUPKuUdT0TsQwt#cZnl%{FggMpatlaXoq826(w;nX6cl^lI zw3okcK9AubdE^Xz36rmLk!?W__oj~m+b$f@`*>wMr7kYSg@)U8gk(RQBV?_<09Gun zaXX$i8u==GF_`Zja_cSiNUk<`t+J$=Vn@p6Jw(iSU5D*-5|s;Y`ac_KeO z`Wsgvn^TdUWPq%!gzcr>`Aic6?z9#ow`j|ocQk9{&wiwLbZZ$rGkVNWoR&%?@j9nl z$?MhWFHTW$-x)h1N7FuuYWhY`H}tt$le-41KV9H+KRMn08lML9M5>COCxD;4$#Y8S z#znz1Jinbpm z(X{;gHFYA56SwN4g1+kxS6U{t8ZNGFj1L%0I+C)%sD?#|nmY1klo@@vLZWYe+nYOe zK{|IxPhB7G+qO=ce(hS-cFnCksV5da`N!-;*f03Vria%Z(%GJM@E~nAef0y&ZQ0l=hM>GHnKDq?;*SNc8g;x5rVW)cN0`D%Q2LI^kn=pzYGg!$Z2S@0HQ* zTq>KNpZ{iGnR}Sb>Dj8JyqUl;#_jFoHdfP~^=?*5N-Fi3fWXvwp6(I}PR5UC**7|> zsJ2JqpFb%^T;p}f@12x7cF)AzoMyH8Dc!}=eDBsyHvX-gkUToNneNIV8gUBj*U9ab z`ATAY6-8F2POrVt9|jsUFm%FaZdUUcNiyn6@F?n>Doev_`HwF*fOtbLiTAvrxiQ6# z{c{DvRB_LHOYbZU#gxrlmX?Ox=x;()$FkZriv>zNm2Hc zlk7i6W(;j2#z%@BNd?~e?U^*|Nr$DQtbEB-7 zn3>qUCO(c~htn%{_SIh{}jbwl)$}gXr{i=wW%>a znd<$jEn677wB-u9A}l}n3`!mInWtT$Y!vYToqGd;t3(oIcDY>A=QCchsn`4ETAtXO z2dRTT%-55|)fZ;%KOEPCv{a4a(o)at!*j2&B0P_95iJ(^YYfptDj|BGA9?Ge>>FqPMDHWeZ z1B>gs&xhc%h-oe_Z1Q!b@Zs3*W_$co8alG=bYZ}nN9$71Od~0iby%a58C+TCH&aoq z)J*8xZCd#w=26*BLCv<#kdTnmIL7>rJ}ci`)Tcs%lfOrABa78h=9d@FUwBql_NC+@ z&*n9Ku8&K12kUfYXzxsVYbk2Hm&akXf8}vWt}+_i#OLn^s2C5@-?7kJqHCAE?Mym8 zTN7b~T3T=MI?$Z@5%I~WWNxW>FnOxK>e0Gwf@AM+@31WYS}cE7yCeUVXK!z9x{f$Tnd zD{kx(V6i&ka>-R8O(H-h!(rXC1!`ZNHP0u#b{!>Ox&A>8&tzHzUkue7rbv+Z$tQ+G zDvnsPt=!rsBHFh01eu~Euuk#y@Q>lf1gOc+&-XgdZWku{-a15lvoP-K_Nzo1s(*@_ zesC$f6Hk@dH&k6z9&>_o<&mKZUW*?R-BxX3V$!;EVR-1khUi_>qf5uGh8__#T$)rO z0ofBc%p@dvG&*UPYEzb5+^Lt`D&7y^7cl_ z4vAL@BpC0RM%O-4oa4^6RXKF(RB^rYtp)Y_?4?P%SIx@5>+4!4CWdbMprU-l^jeXm zUf=DGhMJ3Ym|GZbUowxzs0`(H>>@TYsZJS`Kdx(Z63&kP78a4VFtFz2i=nxX?d|PC zco7!*VKaURwt8b=#bY+J^p)oC!*A!!y>wq|BemW}+P0|I#m&v{I&XUt-`YGbhfDT` zi;b;h8{85`{89tKj@V+x5?OI6-*xSA^jhlLlk90QQ9#3unhIv4m?eX)9TC}7Fud&(0ke# zKb%+bcZ|aBDI7~7Z?{=q0aM=Gv!qP1gIWEW z^7@ZCWGwF5r0|3-%s=9#;^ez=D9(#KfrEOiJ2H%w4p39CzZ)m!ci2aY$5g19P&?)$ zE$UNF+ZdmyJ6PM~rja(UwAwtACS`i*$c}q|gGY?j6t!JlUGYwe`u);*xw$WPp4Ol8 zve_wg#wwvWv5?~#-jNbEj$7kV>TIIc9d=^&%mgw2qLy8}f)=mO_?(=ZprE9pUb&tP z|Cco|?7hfy;m$SR)fBi~5WjpjT=ec+Zv6Tnrn{IZ@dG4?V$8K%{jdBZFE77AO6n5r z|4MLw2b8+H`nqS&o+)Z;YbSbndLlVF+0ei9um5X4R#jD9jni4=H8eEh?HwEzl9H03 zp|KI_>*~n&UVnn4g2&C-_8+1AUjrBeF)}h*gELKJvA&~SU0qR1N(yvzbil~)FbreD zg9$V>HNsVG3plFw5!iNaf55`QL-qet1_J|wRT%SiTt~XNxXh-dr7dH|c*&!qqiAAc z0;Z>@afo*si1+QSElB?5N7!`FhJ0S#Y@B}0>hp|Sw*HUGfU(jT8X8{J)6)xcb90+X zPf!0(m~na+nwy(L3kwT?W6ub$iU7-kx;i_N684|1kDU>diX)trzL|jaPjo^5QW>xx z(_p+;UcGwt)x*PME+ZoYaNi0eBO`zV3@|x42^ceA%+OMu zCU(HA>H*AZ9&ldnVJ5~df{7Q?Z*LE>va-~dE?s)=xfT%$R;lvHScvp{=bAaBd6XyUYGT_%Wf&U%r8LOX!z?`Ck^ouVP|i;Io}A z7=Q5w7R?~orV|QM&)zm+u!Qdr#DQrirVW_>=~7fwR6^h<`~>4B+Te0OLbOAoFClC} z_ynQp`oD&<45nE{eby-DB7+UL6&*-xfcT^{Du?L4opm# zHey7Ocvg@vu%-QCM=l5hn=&xGCyU1Iz|$W~ol4dvzK%QfL=0|Nug-x1#v?{R7` zczSw5SXdZ*`}Pg2t*pS-I|P_@!eG0849FO{jbV`6F%j7DgFh%3F|EOb&vpLiN=aGS zXkT9+ndm!+Huy(>Cf*Y|pPijWgnqHD057Bv&geu52?-Dx8Hv7r{fYtt0su#T5Y|0} zhliuO+8X2<7!Itj;?a)R3FIrLehU~Sq4O=6)?=c_M1$#{DixKLG!^Cec|L=K{|W!H zAcR41`6&nCL(tRHgNlobQDS1^GJd>xMgIQ&%eZT5YKZoO@K}s|LLz|GFb(ZAOd?-0 z3x?HnG{3MDdZ+%Ufd9O>w6tt}WmOf??=1Iy1kPVN|0DiCzWyc4FS`)qE+H2##I?)# zhlU2x*N7-!eVc`LnWUrh=3%gvc^jesRlf^6AworE#V)+{K;S3Z?qBY22++R@ft`>8 z`x>4H4M9|F9I%?^0QY1MjB-;QCw(d=?~l{K4zY@524-KH}!#N|)SAKsIR(DP#cL z%_O7SBr?*imhlvp^6X9p$%kxpf*AOu$C2$jMml&%D1_n`iVICa&T!gso8xY5b zB6w!yCHK2<|GLlR58-BVL3MDSvhFc};sOwMC<1QBCfN0<9CU2F9{=L|yXxyU z(GE(Xji8#fgj90?9%do*FdHG2Ou+IWbT<6|q@YgVyIjo!^D~*L`k%3J+C@ zYz56cgr4OCJi+yo9E8-e0UrO9MVYV*#;=5Z>o&HBTpB_*QxUqJ3Lu?AMi&!t6!|-V zXaX6@;_tQd7SYp`VU(Cxf$ed{*1$t`S)>uF@TnnDICY>SJD_&fah%fcnl zOdWx=;%YeWQ~>+kJ7Cx6AE03yX#Klz|GLjThqz*`#2zp#LFh#>z>6Y;o)=)kvS{I2 z1KWd;MHSoRF($&V?l1ck8C{P-AnCh=&Ur1N3!w-uV*L~H=@%^_gUmscT3iE?PI+j* zM;GF>Z-i&|Up;>D{av-PbA0>D)B&=2IT^ji_+Mc;USSysS#)r%U5Jnt#;=i&kUExy zXe0Nr?_73SM0`pOuxYO!TF>Q<*e@5t8M`HjX;`_U5ZNE&g z$QvWu)sT^SIe=LiLMG*yupDo&EewhYd;Ib%Jhu5R!uBKah??p(qM$IxxJ^-HWD(-w z`2tLv%#p&oez3#W>t#KE!DDjz5)yjWhcTO>prBIZ;!*%gN>Ri-2o)B# z04s|Zl6p`CcG%~hWBfLx7P#wEh`8PR&>pvLP<4zg`-2Vb7*Gt{9{sQf(*vjP#2Ws$6+^$2Ll!aR;8#D3f?LSQ{Re>S4}_d*5wfoZ zu&qJpQx&!cmgj9587aBVp;Zh~SpTue$*FRA{)ty+crDh0wr@{|-CQIjaubiUiA(5d z`UJAeY=@`8C1{W506xH?ACz23J--b+zL8@>k!WB+DihEM&bw7+hx@8`PwvmxX1AtpSLe6yvIbwL9vHq>A5wgKD ze5oa)H=*+}GybT}}`&4iXfPWK!O9cXT zt1;l^=>|Eu5#Zxn05Q>dIB{$gM6Y4L37LmCg^TbeXB^B@TEHo#3T{RZ!r6!k*zY$C z_g&L|Yy0&|F8LT&(+8!4ODMCKjFPYniQNb#bRk5@5!HrJI3_}dAZ!c&CNi?kT!cqv zqv(W49}*TF0wM7}bX{W*>4ne1+rmX;Sv(Cd5<5|7ZauQg?f~7a38a)biOzi+f){Sl zalcdl!5I}^i9ZIRatNX9euUC`0aAMqN?Miy+oByILWXbH4qsal3dFvI{RkZJ{KhP1 z4(SKa!kfrB^dV;v*;OvW=kjUvI;9&z@|#dhaRZ8InuRYFGswJX8a;~dgLhtG8ov{N zL~eC7sd*UcMiAup17u?S>B}+zBy|HMU>}Occ8K`tM?tt9_~SN0$l%#P29F;IJnEOg zxn>R=O2@%8r5$2Rn!t}#0l{^Xkb(U&wrv4|8)m^KDtFPuJ7(SQ#2=nrnU&i%290B6 zR5XZC?f@YJLL_VhtVT%0ew5HjMsXcvh{JVE2Y&ch8-lQwB^2DWfPC?zXdFw&(1(mJ z6< zG52b8JY)oJe4j>Y=`+Z-Vip2wCc!;0H0t*v|J&VC${PABdM2TB3PIZhg4VGms2^U0 zivD@X@16lt>m+<{7=f_r0q`p61MlKK_*&ir;pOd+St*l|XqHB!&V{jH#_D-S9)^UjcF^b~q z@ZMSd0Fdf>5UIKyWmPppVRb!9EvrR-*>&(Kr2*ah)`SlE_5-)yINBF7i}-Ngxi4f6 z?F*a&e*Zyu;GH{TZ11D~uh2Vj&&0CkRq@3Qi)oF+dR8~3F?c)s99 z8hPmw_Wq$mEU~};FDpSM-CIjr`r$`g7bt(N1quIF5dYc_m!rl&DQOCHb7sK0avp*k z=YiCTV?s?c;8HmSM%kmFmDmj$Q9nR4xCnGT61ok2;!{mL!Y#F(BG2A)O!$|^M}H~A zy<~80QGMH7UC$U?3GXBC_8lSff1O?)E9K+I;Cbo*SZB0>XIjO=*R;ZR-?;P?=gA8F%QJ~&;Fs!b=Ko#m zQ_%N|Rv}4T&T+Z_bbRXnh2x+7-ZMV?|EnJVh@Y5}m*Eu#uE-33tH)OStv04yu9xta z#P@AD5re4l)k3(&A1~K)xZa816E(xn8b{cc-~XzK&xx5l@qa{3Tu;4h?Dr#zKd@?duh5v`xEwfQqf4UdvYgjlsIko2J<-vPGZE|lZAD*SpY!e8x5nPy-VOLyhs!a)pSc~& zu|Fc7F^TgJ-nj(8CKVSrdihQUB?ToBGyR9lty{Mkjg5`p;Mj6Kj@d5fM-e=U*!r({ z5c(MhB4Q^~_&YnFZ?O4^7YN?d|A85w!bHUR|8h}LQF)P>nMK5w|5IMYFP=oq=~p3M z_x5yy#TPeV(g=VPs^;yODG@W{!$icp|Jw!UvhAv`uV3a%#8imbJQ3UauL_PCfxo{W zSlYY6R_#y_dTu|68ScSE_yH@X|8~5+xVYpPk(WT|nBYsqcZe8ob8|D!O>0`tNg{F= z2y8@dQf_W85IF$8K0aXWgmaEwM1trW-zm&<+fUxae1?cU|F;T`>q`kzJKa4!@XOAB zrguU&MBYau&NsxV!^<|BoyGI+%q(Cr$$--qu|U6i6(RRu&e5oYu;)u6MWYEl60QbsCC~n7b zLL4ugnHc+I&eqD+dm%a?rF5IQoz9zxFvP`hLnZEXU3={}$6! zz&PYFT_<9IsR-WW&wyXmIOMhrLr?zzOyl_f)aVf87FU3vLpiY7)PnYx5b=M6zr0f_ zK23cN)bjw;a&asV$6Zu#4D23`eGxG(d8`*Aes?(;;2e(K3B{2?2FG5M)91l2vlfJ% zD}eoT1E@JhUj0Y--}lU_eUZPg9Fx<+aT5(310t}fVhqXz4y+R*-hK)}}Cy(oaq`$O@J>lv)0H(0JOoAto^iY17z?gMexa^S=-(o|GL5eT54^{P!`AQ#$3lqM&N~7J#-ovdfQmj0a&p>$ zC}U%@z`-61f?^r)HfIUU(tAM0ry6$SJ&ilA8Fqh_zg=v>9>1baynh7{g71 zI2JXH_pe7l>{buF%vb`w%u#Snt%eI>!*C#A4DPt+*#A}j{uxz@sm-I1KR|{QYy)C% zo!F0#Y{&M%cmkWrV2j)NwZ}tnSz!cjza9ls9P_fkd(XC{7Vyb$2fdsrxE?zOFFn8i zN)O(PCHD0(5&8(mI`G37-0KiH;yr!mx<#-podB1t76{4x z0jXV!@U>|ktVqpZ;S){d-2J5zU;M+gtY-=;MgVeu?hBK8$#`#@ylj*B4g?XcixBi< z4qVH}z$L#E(h94w)O9R){aChWBw*aM-g0_6E;@MC=^A$QT3Lpg8}3gg0?b zYI$Q&an}SCc1=NE^B|6ccR?nO<)>7%KxSF#Z@&qCziworxsfK z#AiKn{+1~E(La`$TmMUnV{-X^x1b0SQ}5`12@e2bEz@R%_Y8#a-pWqAufPDt6m)nX zBeow1B3=_)4?F)~M8^N~Uyu;~&Il8b@omYN9qa@k_9=)(0UM@Y`xL^|_{~31{J%!5 zc5rc*Gc|wb`uvUQe=Ek4lasRw=X~G9x!zwZD=TM+d1GQ`K5$Cjk5y9B`n&72^vta7 zcrEOU^OW&ae|mX+M9g~$O3BKDJ*u`ujB}sN{U?8#C!3R#>p-m8h`gG&CV#PK<~%I$g74+{rUi?S!_$LY`U6@S-Ph-=^-1;r9> fNn>~;;opdO{~xFgzyCMFtNk{-N8DyaLGgb8#dVxr diff --git a/nsis_setup/MUIOrangeVistaTheme/Clean/wizard-un.bmp b/nsis_setup/MUIOrangeVistaTheme/Clean/wizard-un.bmp deleted file mode 100644 index ea666eecbfbc6cc0498bef6dbe5d9bb46e1d7726..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154544 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 T#+YeD8`aw9CnPu`rw$6rI4oGQg^G> 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 diff --git a/nsis_setup/pykd_license.txt b/nsis_setup/pykd_license.txt deleted file mode 100644 index 0218f75..0000000 --- a/nsis_setup/pykd_license.txt +++ /dev/null @@ -1,31 +0,0 @@ -Microsoft Public License (Ms-PL) - -This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software. - -1. Definitions - -The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law. - -A "contribution" is the original software, or any additions or changes to the software. - -A "contributor" is any person that distributes its contribution under this license. - -"Licensed patents" are a contributor's patent claims that read directly on its contribution. - -2. Grant of Rights - -(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create. - -(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software. - -3. Conditions and Limitations - -(A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks. - -(B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically. - -(C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software. - -(D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license. - -(E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement. \ No newline at end of file diff --git a/nsis_setup/pykd_logo.png b/nsis_setup/pykd_logo.png deleted file mode 100644 index 19c304c6c36e18f3c77c46dbb7f2cb7c3060252a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69960 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 - - - - - \ No newline at end of file diff --git a/pykd_bootstrapper/pykd_bootstrapper_vc120.vcxproj b/pykd_bootstrapper/pykd_bootstrapper_vc120.vcxproj deleted file mode 100644 index bb12135..0000000 --- a/pykd_bootstrapper/pykd_bootstrapper_vc120.vcxproj +++ /dev/null @@ -1,227 +0,0 @@ - - - - - Debug_2.7 - Win32 - - - Debug_2.7 - x64 - - - Release_2.7 - Win32 - - - Release_2.7 - x64 - - - - {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B} - Win32Proj - pykd_bootstrapper - pykd_ext - ..\ - true - - - - DynamicLibrary - true - v120_xp - Unicode - - - DynamicLibrary - true - v120_xp - Unicode - - - DynamicLibrary - false - v120_xp - true - Unicode - - - DynamicLibrary - false - v120_xp - true - Unicode - - - - - - - - - - - - - - - - - - 7f4aed3e - - - true - $(ProjectName) - $(SolutionDir)out\$(Platform)\$(Configuration)\ - - - true - $(ProjectName) - $(SolutionDir)out\$(Platform)\$(Configuration)\ - - - false - $(ProjectName) - $(SolutionDir)out\$(Platform)\$(Configuration)\ - - - false - $(ProjectName) - $(SolutionDir)out\$(Platform)\$(Configuration)\ - - - - Use - Level3 - Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_BOOTSTRAPPER_EXPORTS;%(PreprocessorDefinitions) - true - $(ProjectDir)..\kdlibcpp\include; - - - Windows - true - export.def - $(OutDir)pykd$(TargetExt) - comsuppw.lib;%(AdditionalDependencies) - - - - - Use - Level3 - Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_BOOTSTRAPPER_EXPORTS;%(PreprocessorDefinitions) - true - $(ProjectDir)..\kdlibcpp\include; - - - Windows - true - export.def - $(OutDir)pykd$(TargetExt) - comsuppw.lib;%(AdditionalDependencies) - - - - - Level3 - Use - MaxSpeed - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_BOOTSTRAPPER_EXPORTS;%(PreprocessorDefinitions) - true - $(ProjectDir)..\kdlibcpp\include; - MultiThreaded - - - Windows - true - true - true - export.def - $(OutDir)pykd$(TargetExt) - comsuppw.lib;%(AdditionalDependencies) - - - - - Level3 - Use - MaxSpeed - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_BOOTSTRAPPER_EXPORTS;%(PreprocessorDefinitions) - true - $(ProjectDir)..\kdlibcpp\include; - MultiThreaded - - - Windows - true - true - true - export.def - $(OutDir)pykd$(TargetExt) - comsuppw.lib;%(AdditionalDependencies) - - - - - - - - - - - - - - false - false - - - - - false - false - - - - - - - Create - Create - Create - Create - - - - - - - - - - - - - - - - - - - - This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - - - - \ No newline at end of file diff --git a/pykd_bootstrapper/pykd_bootstrapper_vc120.vcxproj.filters b/pykd_bootstrapper/pykd_bootstrapper_vc120.vcxproj.filters deleted file mode 100644 index d7e05bd..0000000 --- a/pykd_bootstrapper/pykd_bootstrapper_vc120.vcxproj.filters +++ /dev/null @@ -1,140 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Source Files - - - - - - Resource Files - - - \ No newline at end of file diff --git a/pykd_bootstrapper/resource.h b/pykd_bootstrapper/resource.h deleted file mode 100644 index c3bc570..0000000 --- a/pykd_bootstrapper/resource.h +++ /dev/null @@ -1,14 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by version.rc - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 101 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/pykd_bootstrapper/stdafx.cpp b/pykd_bootstrapper/stdafx.cpp deleted file mode 100644 index 75c83a9..0000000 --- a/pykd_bootstrapper/stdafx.cpp +++ /dev/null @@ -1,8 +0,0 @@ -// stdafx.cpp : source file that includes just the standard includes -// pykd_bootstrapper.pch will be the pre-compiled header -// stdafx.obj will contain the pre-compiled type information - -#include "stdafx.h" - -// TODO: reference any additional headers you need in STDAFX.H -// and not in this file diff --git a/pykd_bootstrapper/stdafx.h b/pykd_bootstrapper/stdafx.h deleted file mode 100644 index a8b112f..0000000 --- a/pykd_bootstrapper/stdafx.h +++ /dev/null @@ -1,17 +0,0 @@ -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, but -// are changed infrequently -// - -#pragma once - -#include "targetver.h" - -#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers -// Windows Header Files: -#include - - -#define BOOST_PYTHON_STATIC_LIB - -// TODO: reference additional headers your program requires here diff --git a/pykd_bootstrapper/targetver.h b/pykd_bootstrapper/targetver.h deleted file mode 100644 index 90e767b..0000000 --- a/pykd_bootstrapper/targetver.h +++ /dev/null @@ -1,8 +0,0 @@ -#pragma once - -// Including SDKDDKVer.h defines the highest available Windows platform. - -// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and -// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. - -#include diff --git a/pykd_bootstrapper/version.h b/pykd_bootstrapper/version.h deleted file mode 100644 index 74182ca..0000000 --- a/pykd_bootstrapper/version.h +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once - -#define PYKDEXT_VERSION_MAJOR 1 -#define PYKDEXT_VERSION_MINOR 0 -#define PYKDEXT_VERSION_SUBVERSION 1 -#define PYKDEXT_VERSION_BUILDNO 14 - -#define __VER_STR2__(x) #x -#define __VER_STR1__(x) __VER_STR2__(x) - -#define PYKDEXT_VERSION_BUILD_COMMA PYKDEXT_VERSION_MAJOR, PYKDEXT_VERSION_MINOR, PYKDEXT_VERSION_SUBVERSION, PYKDEXT_VERSION_BUILDNO -#define PYKDEXT_VERSION_BUILD PYKDEXT_VERSION_MAJOR.PYKDEXT_VERSION_MINOR.PYKDEXT_VERSION_SUBVERSION.PYKDEXT_VERSION_BUILDNO - -#define PYKDEXT_VERSION_BUILD_STR_COMMA __VER_STR1__(PYKDEXT_VERSION_BUILD_COMMA) -#define PYKDEXT_VERSION_BUILD_STR __VER_STR1__(PYKDEXT_VERSION_BUILD) diff --git a/pykd_bootstrapper/version.rc b/pykd_bootstrapper/version.rc deleted file mode 100644 index d21dc690c2bc4651b7e98d0f484eb7040fd6ac91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5292 zcmd6rSx-|z6vxlAiQnN`UL-1;zW4~VRAQloE|G+!0Sed%t?A;D_}SIpf2PA-dap}G zax5uR0wr-If*uXAqY$KacuWZU#m$8Y>?96WX+O=nt$gb_uhSV|R zQ`$abV_NN-(Yv4@@g-^l`^cI#du)$5W!<$aj1HN-VRhfFtt{+cv-ehUtF?2*t-Esj zM0?wgtYvNMSk?BeX+1l(8lzSEht{wYMq2zH*bXBN`r&+GC|?QaLK|5fxnyO0g_K5i z3;$E3BRRC;`W?UfaJ>tkl1Gj4EoxRHzt_QMCttrWmVchMK5_aO4G+LGM7v2{l~1|> zk-teZ5bM@mA*1E)QP5JLTdp>si?E3qI+B*o;5o9Vsgc#3J2FXF+`vibNy_s2(Ac&; z?wq%{7S`2)>Mpmg$K7jCME4sdD%{zI#xXZsG&+u=07M`zc-wasV)dyovgw#7xUwq-Y6czDb1s@qX6T_({4y@s~P`op|h)lH;T z)01MhX`LG%^POTI@wwT-z~t|2)uG3}DSS>}v9-%_zfKUA?({LLx1*vEtzWf7v6 zOCtK)b5@+6?qg%}C%#B)dA?=wwn=uy6qdE$uJ&RInc!Uy==^VXn!iJ?EHa0)w(*KavwkXCfA>)SM;FjbEqJjq`b=0 z59mUx3^tjmgmJa1UAXG;TO$%Fx+r_>IbXO(U%QhtvR{pBXGCuw3Dz=eA~Mqx;)&vs zGP6bMJIGQytIX{}?SQg9r+Ea9CNmvo+V@I1pxxtS#n+ZQwFS}$pZ>*O;=dXWg?w@x zGks(g=6Z(jn3AWkdAI)(im_hoBBWb(p zBKPr~7M8Kow0_%A)7xo+ZWZT~RwS?Ktyu4oO>$s)DDS~M-WYA%(|mEpcR%??dE#*v ziMUTzA8UT~9$(Cvvoy=|EzX1{wEy}qj@~fYj57T%PLO4JWROK7gvIxL=;F - -#include -#include -#include - -#include -namespace python = boost::python; - -#include - -/////////////////////////////////////////////////////////////////////////////// - -class AutoRestorePyState -{ -public: - - AutoRestorePyState() - { - m_state = PyEval_SaveThread(); - } - - ~AutoRestorePyState() - { - PyEval_RestoreThread(m_state); - } - -private: - - PyThreadState* m_state; -}; - -////////////////////////////////////////////////////////////////////////////// - -class DbgOut -{ -public: - - DbgOut(PDEBUG_CLIENT client) - : m_control(client) - {} - - void write(const std::wstring& str) - { - AutoRestorePyState pystate; - - m_control->ControlledOutputWide( - DEBUG_OUTCTL_THIS_CLIENT, - DEBUG_OUTPUT_NORMAL, - L"%ws", - str.c_str() - ); - - } - - void writedml(const std::wstring& str) - { - AutoRestorePyState pystate; - - m_control->ControlledOutputWide( - DEBUG_OUTCTL_THIS_CLIENT | DEBUG_OUTCTL_DML, - DEBUG_OUTPUT_NORMAL, - L"%ws", - str.c_str() - ); - } - - void flush() { - } - - std::wstring encoding() { - return L"ascii"; - } - - bool closed() { - return false; - } - - bool isatty() { - return false; - } - -private: - - CComQIPtr m_control; -}; - -/////////////////////////////////////////////////////////////////////////////// - -class DbgIn -{ -public: - - DbgIn(PDEBUG_CLIENT client) - : m_control(client) - {} - - std::wstring readline() - { - AutoRestorePyState pystate; - - std::vector inputBuffer(0x10000); - - ULONG read = 0; - m_control->InputWide(&inputBuffer[0], static_cast(inputBuffer.size()), &read); - - std::wstring inputstr = std::wstring(&inputBuffer[0]); - - return inputstr.empty() ? L"\n" : inputstr; - } - - bool closed() { - return false; - } - - -private: - - CComQIPtr m_control; -}; - -/////////////////////////////////////////////////////////////////////////////// - -class PythonInterpreter -{ -public: - - PythonInterpreter() - { - PyThreadState* state = Py_NewInterpreter(); - - PyThreadState_Swap(state); - - m_state = PyEval_SaveThread(); - } - - ~PythonInterpreter() - { - PyEval_RestoreThread(m_state); - - PyInterpreterState *interpreter = m_state->interp; - - while (interpreter->tstate_head != NULL) - { - PyThreadState *threadState = (PyThreadState*)(interpreter->tstate_head); - - PyThreadState_Clear(threadState); - - PyThreadState_Swap(NULL); - - PyThreadState_Delete(threadState); - } - - PyInterpreterState_Clear(interpreter); - - PyInterpreterState_Delete(interpreter); - } - - void acivate() - { - PyEval_RestoreThread(m_state); - } - - void deactivate() - { - m_state = PyEval_SaveThread(); - } - -private: - - PyThreadState* m_state; - -}; - -/////////////////////////////////////////////////////////////////////////////// - -class PythonSingleton -{ - -public: - - static PythonSingleton* get() - { - if (!m_instance) - m_instance = new PythonSingleton(); - - return m_instance; - } - - void stop() - { - delete m_globalInterpreter; - m_globalInterpreter = 0; - PyThreadState_Swap(m_globalState); - - if (m_pykdInit) - { - python::object main = python::import("__main__"); - python::object globalScope(main.attr("__dict__")); - python::exec("__import__('pykd').deinitialize()", globalScope); - m_pykdInit = false; - } - - m_globalState = PyEval_SaveThread(); - } - - void start() - { - PyEval_RestoreThread(m_globalState); - - m_globalInterpreter = new PythonInterpreter(); - } - - void acivateGlobal() { - m_globalInterpreter->acivate(); - } - - void deactivateGlobal() { - m_globalInterpreter->deactivate(); - } - - void acivateLocal() { - PyEval_RestoreThread(m_globalState); - m_locallInterpreter = new PythonInterpreter(); - m_locallInterpreter->acivate(); - } - - void deactivateLocal() { - m_locallInterpreter->deactivate(); - delete m_locallInterpreter; - m_locallInterpreter = 0; - PyThreadState_Swap(m_globalState); - m_globalState = PyEval_SaveThread(); - } - - void checkPykd() - { - if (m_pykdInit) - return; - - python::handle<> pykdHandle(python::allow_null(PyImport_ImportModule("pykd"))); - if (!pykdHandle) - throw std::exception("Pykd package is not installed.You can install it by command \"!pykd.install\""); - - python::object main = python::import("__main__"); - python::object globalScope(main.attr("__dict__")); - python::exec("__import__('pykd').initialize()", globalScope); - - m_pykdInit = true; - } - -private: - - static PythonSingleton* m_instance; - - PythonSingleton() - { - Py_Initialize(); - PyEval_InitThreads(); - - // Python debug output console helper classes - python::class_("dout", "dout", python::no_init) - .def("write", &DbgOut::write) - .def("writedml", &DbgOut::writedml) - .def("flush", &DbgOut::flush) - .def("isatty", &DbgOut::isatty) - .add_property("encoding", &DbgOut::encoding) - .add_property("closed", &DbgOut::closed); - - python::class_("din", "din", python::no_init) - .def("readline", &DbgIn::readline) - .add_property("closed", &DbgIn::closed); - - - m_globalState = PyEval_SaveThread(); - } - - PythonInterpreter* m_globalInterpreter; - PythonInterpreter* m_locallInterpreter; - PyThreadState* m_globalState; - - bool m_pykdInit; -}; - -PythonSingleton* PythonSingleton::m_instance = 0; - -////////////////////////////////////////////////////////////////////////////// - -class InterruptWatch -{ -public: - - InterruptWatch(PDEBUG_CLIENT client) - { - m_control = client; - m_stopEvent = CreateEvent(NULL, TRUE, FALSE, NULL); - m_thread = CreateThread(NULL, 0, threadRoutine, this, 0, NULL); - } - - ~InterruptWatch() - { - SetEvent(m_stopEvent); - WaitForSingleObject(m_thread, INFINITE); - CloseHandle(m_stopEvent); - CloseHandle(m_thread); - } - - bool onInterrupt() - { - HANDLE quitEvent = CreateEvent(NULL, FALSE, FALSE, NULL); - PyGILState_STATE state = PyGILState_Ensure(); - Py_AddPendingCall(&quit, (void*)quitEvent); - PyGILState_Release(state); - WaitForSingleObject(quitEvent, INFINITE); - CloseHandle(quitEvent); - return true; - } - - static int quit(void *context) - { - HANDLE quitEvent = (HANDLE)context; - PyErr_SetString(PyExc_SystemExit, "CTRL+BREAK"); - SetEvent(quitEvent); - return -1; - } - -private: - - static DWORD WINAPI threadRoutine(LPVOID lpParameter) { - return static_cast(lpParameter)->interruptWatchRoutine(); - } - - DWORD InterruptWatch::interruptWatchRoutine() - { - while (WAIT_TIMEOUT == WaitForSingleObject(m_stopEvent, 250)) - { - HRESULT hres = m_control->GetInterrupt(); - if (hres == S_OK) - { - HANDLE quitEvent = CreateEvent(NULL, FALSE, FALSE, NULL); - PyGILState_STATE state = PyGILState_Ensure(); - Py_AddPendingCall(&quit, (void*)quitEvent); - PyGILState_Release(state); - WaitForSingleObject(quitEvent, INFINITE); - CloseHandle(quitEvent); - } - } - - return 0; - } - - HANDLE m_thread; - - HANDLE m_stopEvent; - - CComQIPtr m_control; -}; - -////////////////////////////////////////////////////////////////////////////// - -typedef std::vector< std::string > ArgsList; -typedef boost::escaped_list_separator char_separator_t; -typedef boost::tokenizer< char_separator_t > char_tokenizer_t; - -ArgsList getArgsList( - PCSTR args - ) -{ - std::string argsStr(args); - - char_tokenizer_t token(argsStr, char_separator_t("", " \t", "\"")); - ArgsList argsList; - - for (char_tokenizer_t::iterator it = token.begin(); it != token.end(); ++it) - { - if (*it != "") - argsList.push_back(*it); - } - - return argsList; -} - -////////////////////////////////////////////////////////////////////////////// - -static const char printUsageMsg[] = - "usage:\n" - "!py [options] [file]\n" - "\tOptions:\n" - "\t-g --global : run code in the common namespace\n" - "\t-l --local : run code in the isolate namespace\n" - "!install\n" - "!upgrade\n"; - -void printUsage(PDEBUG_CLIENT client) -{ - CComQIPtr(client)-> - ControlledOutput( - DEBUG_OUTCTL_THIS_CLIENT, - DEBUG_OUTPUT_NORMAL, - "%s", - printUsageMsg - ); -} - -////////////////////////////////////////////////////////////////////////////// - -extern "C" -HRESULT -CALLBACK -DebugExtensionInitialize( - PULONG Version, - PULONG Flags - ) -{ - PythonSingleton::get()->start(); - return S_OK; -} - -////////////////////////////////////////////////////////////////////////////// - -extern "C" -VOID -CALLBACK -DebugExtensionUninitialize() -{ - PythonSingleton::get()->stop(); -} - -////////////////////////////////////////////////////////////////////////////// - -std::string getScriptFileName(const std::string &scriptName); - -void printException(DbgOut &dbgOut); - -////////////////////////////////////////////////////////////////////////////// - -extern "C" -HRESULT -CALLBACK -py( - PDEBUG_CLIENT client, - PCSTR args - ) -{ - ArgsList argsList = getArgsList(args); - - bool global = false; - bool local = false; - bool clean = false; - - if (!argsList.empty()) - { - if (argsList[0] == "-h" || argsList[0] == "--help") - { - printUsage(client); - return S_OK; - } - else - if (argsList[0] == "-g" || argsList[0] == "--global") - { - global = true; - argsList.erase(argsList.begin()); - } - else - if (argsList[0] == "-l" || argsList[0] == "--local") - { - local = true; - argsList.erase(argsList.begin()); - } - } - - if (argsList.size() > 0) - { - global = !(global || local) ? false : global; //set local by default - } - else - { - global = !(global || local) ? true : global; //set global by default - } - - DbgOut dbgOut(client); - DbgOut dbgErr(client); - DbgIn dbgIn(client); - - ULONG oldMask; - client->GetOutputMask(&oldMask); - client->SetOutputMask(DEBUG_OUTPUT_NORMAL | DEBUG_OUTPUT_ERROR); - - - if (global) - PythonSingleton::get()->acivateGlobal(); - else - PythonSingleton::get()->acivateLocal(); - - try { - - InterruptWatch interruptWatch(client); - - python::object sys = python::import("sys"); - - sys.attr("stdout") = python::object(dbgOut); - sys.attr("stderr") = python::object(dbgErr); - sys.attr("stdin") = python::object(dbgIn); - - python::object main = python::import("__main__"); - python::object globalScope(main.attr("__dict__")); - - PythonSingleton::get()->checkPykd(); - - if (argsList.size() == 0) - { - - python::exec("import pykd", globalScope); - python::exec("from pykd import *", globalScope); - python::exec("__import__('code').InteractiveConsole(__import__('__main__').__dict__).interact()", globalScope); - } - else - { - - std::string scriptFileName = getScriptFileName(argsList[0]); - if (scriptFileName.empty()) - throw std::invalid_argument("script not found\n"); - - // óñòàíàâèëèâàåì ïèòîíîâñêèå àðãóìåíòû - char **pythonArgs = new char*[argsList.size()]; - - pythonArgs[0] = const_cast(scriptFileName.c_str()); - - for (size_t i = 1; i < argsList.size(); ++i) - pythonArgs[i] = const_cast(argsList[i].c_str()); - - PySys_SetArgv((int)argsList.size(), pythonArgs); - - delete[] pythonArgs; - - python::exec_file(scriptFileName.c_str(), globalScope); - } - } - catch (const python::error_already_set&) - { - printException(dbgOut); - } - catch (const std::exception& invalidArg) - { - _bstr_t bstrInavalidArg(invalidArg.what()); - dbgOut.write(std::wstring(bstrInavalidArg)); - } - - if (global) - PythonSingleton::get()->deactivateGlobal(); - else - PythonSingleton::get()->deactivateLocal(); - - client->SetOutputMask(oldMask); - - return S_OK; -} - -////////////////////////////////////////////////////////////////////////////// - -extern "C" -HRESULT -CALLBACK -install( - PDEBUG_CLIENT client, - PCSTR args - ) -{ - DbgOut dbgOut(client); - DbgOut dbgErr(client); - DbgIn dbgIn(client); - - PythonSingleton::get()->acivateGlobal(); - - try { - - python::object sys = python::import("sys"); - - sys.attr("stdout") = python::object(dbgOut); - sys.attr("stderr") = python::object(dbgErr); - sys.attr("stdin") = python::object(dbgIn); - - // ïîëó÷àåì äîñòóï ê ãëîáàëüíîìó ìàïó ( íóæåí äëÿ âûçîâà exec_file ) - python::object main = python::import("__main__"); - python::object global(main.attr("__dict__")); - - python::exec("import pip\n", global); - python::exec("pip.logger.consumers = []\n", global); - python::exec("pip.main(['install', 'pykd'])\n", global); - - } - catch (const python::error_already_set&) - { - printException(dbgOut); - } - catch (const std::exception& invalidArg) - { - _bstr_t bstrInavalidArg(invalidArg.what()); - dbgOut.write(std::wstring(bstrInavalidArg)); - } - - PythonSingleton::get()->deactivateGlobal(); - - return S_OK; -} - -////////////////////////////////////////////////////////////////////////////// - -extern "C" -HRESULT -CALLBACK -upgrade( - PDEBUG_CLIENT client, - PCSTR args - ) -{ - DbgOut dbgOut(client); - DbgOut dbgErr(client); - DbgIn dbgIn(client); - - PythonSingleton::get()->acivateGlobal(); - - try { - - python::object sys = python::import("sys"); - - sys.attr("stdout") = python::object(dbgOut); - sys.attr("stderr") = python::object(dbgErr); - sys.attr("stdin") = python::object(dbgIn); - - // ïîëó÷àåì äîñòóï ê ãëîáàëüíîìó ìàïó ( íóæåí äëÿ âûçîâà exec_file ) - python::object main = python::import("__main__"); - python::object global(main.attr("__dict__")); - - python::exec("import pip\n", global); - python::exec("pip.logger.consumers = []\n", global); - python::exec("pip.main(['install', '--upgrade', 'pykd'])\n", global); - - } - catch (const python::error_already_set&) - { - printException(dbgOut); - } - catch (const std::exception& invalidArg) - { - _bstr_t bstrInavalidArg(invalidArg.what()); - dbgOut.write(std::wstring(bstrInavalidArg)); - } - - PythonSingleton::get()->deactivateGlobal(); - - return S_OK; -} - -/////////////////////////////////////////////////////////////////////////////// - -std::string findScript(const std::string &fullFileName) -{ - if (GetFileAttributesA(fullFileName.c_str()) != INVALID_FILE_ATTRIBUTES) - return fullFileName; - - python::object sys = python::import("sys"); - - python::list pathList(sys.attr("path")); - - python::ssize_t n = python::len(pathList); - - for (python::ssize_t i = 0; i < n; i++) - { - std::string path = boost::python::extract(pathList[i]); - - DWORD bufSize = SearchPathA( - path.c_str(), - fullFileName.c_str(), - NULL, - 0, - NULL, - NULL); - - if (bufSize > 0) - { - bufSize += 1; - std::vector fullFileNameCStr(bufSize); - char *partFileNameCStr = NULL; - - bufSize = SearchPathA( - path.c_str(), - fullFileName.c_str(), - NULL, - bufSize, - &fullFileNameCStr[0], - &partFileNameCStr); - - DWORD fileAttr = GetFileAttributesA(&fullFileNameCStr[0]); - - if ((fileAttr & FILE_ATTRIBUTE_DIRECTORY) == 0) - return std::string(&fullFileNameCStr[0]); - } - } - - return ""; -} - -/////////////////////////////////////////////////////////////////////////////// - -std::string getScriptFileName(const std::string &scriptName) -{ - std::string scriptFileName = findScript(scriptName); - - if (scriptFileName.empty()) - { - std::string scriptNameLow; - scriptNameLow.resize(scriptName.size()); - std::transform( - scriptName.begin(), - scriptName.end(), - scriptNameLow.begin(), - ::tolower); - if (scriptNameLow.rfind(".py") != (scriptNameLow.length() - 3)) - scriptFileName = findScript(scriptName + ".py"); - } - - return scriptFileName; -} - -/////////////////////////////////////////////////////////////////////////////// - -void printException(DbgOut &dbgOut) -{ - // îøèáêà â ñêðèïòå - PyObject *errtype = NULL, *errvalue = NULL, *traceback = NULL; - - PyErr_Fetch(&errtype, &errvalue, &traceback); - - PyErr_NormalizeException(&errtype, &errvalue, &traceback); - - if (errtype != PyExc_SystemExit) - { - python::object tracebackModule = python::import("traceback"); - - std::wstringstream sstr; - - python::object lst = - python::object(tracebackModule.attr("format_exception"))( - python::handle<>(errtype), - python::handle<>(python::allow_null(errvalue)), - python::handle<>(python::allow_null(traceback))); - - sstr << std::endl << std::endl; - - for (long i = 0; i < python::len(lst); ++i) - sstr << std::wstring(python::extract(lst[i])) << std::endl; - - dbgOut.write(sstr.str()); - } -} - -/////////////////////////////////////////////////////////////////////////////// diff --git a/pykd_ext/arglist.cpp b/pykd_ext/arglist.cpp deleted file mode 100644 index ead8f4f..0000000 --- a/pykd_ext/arglist.cpp +++ /dev/null @@ -1,98 +0,0 @@ -#include "stdafx.h" - -#include -#include -#include - -#include "arglist.h" - - -namespace { - -typedef boost::escaped_list_separator char_separator_t; -typedef boost::tokenizer< char_separator_t > char_tokenizer_t; - -ArgsList getArgsList(const std::string& argsStr) -{ - char_tokenizer_t token(argsStr, char_separator_t("", " \t", "\"")); - ArgsList argsList; - - for (char_tokenizer_t::iterator it = token.begin(); it != token.end(); ++it) - { - if (*it != "") - argsList.push_back(*it); - } - - return argsList; -} - -} // anonymous namespace - - -static const std::regex versionRe("^-([2,3])(?:\\.(\\d+))?$"); - -Options::Options(const std::string& cmdline) : - pyMajorVersion(-1), - pyMinorVersion(-1), - global(false), - showHelp(false), - runModule(false) -{ - - args = getArgsList( cmdline ); - - if ( args.empty() ) - { - global = true; - } - - for (auto it = args.begin(); it != args.end();) - { - if (*it == "--global" || *it == "-g") - { - global = true; - it = args.erase(it); - continue; - } - - if (*it == "--local" || *it == "-l") - { - global = false; - it = args.erase(it); - continue; - } - - if (*it == "--help" || *it == "-h") - { - showHelp = true; - it = args.erase(it); - continue; - } - - if (*it == "--module" || *it == "-m") - { - runModule = true; - it = args.erase(it); - continue; - } - - std::smatch mres; - if (std::regex_match(*it, mres, versionRe)) - { - pyMajorVersion = atol(std::string(mres[1].first, mres[1].second).c_str()); - - if (mres[2].matched) - { - pyMinorVersion = atol(std::string(mres[2].first, mres[2].second).c_str()); - } - - it = args.erase(it); - continue; - } - - break; - } - -} - - diff --git a/pykd_ext/arglist.h b/pykd_ext/arglist.h deleted file mode 100644 index 63f6fb6..0000000 --- a/pykd_ext/arglist.h +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once - -#include -#include - -typedef std::vector< std::string > ArgsList; - -struct Options -{ - int pyMajorVersion; - int pyMinorVersion; - bool global; - bool showHelp; - bool runModule; - std::vector args; - - Options() : - pyMajorVersion(-1), - pyMinorVersion(-1), - global(true), - showHelp(false), - runModule(false) - {} - - Options(const std::string& cmdline); -}; diff --git a/pykd_ext/dbgout.h b/pykd_ext/dbgout.h deleted file mode 100644 index 6dad55f..0000000 --- a/pykd_ext/dbgout.h +++ /dev/null @@ -1,122 +0,0 @@ -#pragma once - - -#include -#include -#include - -#include -#include - -#include "pycontext.h" -#include "pyclass.h" - -////////////////////////////////////////////////////////////////////////////// - -class DbgOut -{ -public: - - DbgOut(PDEBUG_CLIENT client) : - m_control(client) - {} - - void write(const std::wstring& str) - { - AutoRestorePyState pystate; - - m_control->ControlledOutputWide( - DEBUG_OUTCTL_AMBIENT_TEXT, //DEBUG_OUTCTL_THIS_CLIENT, - DEBUG_OUTPUT_NORMAL, - L"%ws", - str.c_str() - ); - - } - - void writedml(const std::wstring& str) - { - AutoRestorePyState pystate; - - m_control->ControlledOutputWide( - DEBUG_OUTCTL_AMBIENT_DML, //DEBUG_OUTCTL_THIS_CLIENT | DEBUG_OUTCTL_DML, - DEBUG_OUTPUT_NORMAL, - L"%ws", - str.c_str() - ); - } - - void flush() { - } - - std::wstring encoding() { - return L"ascii"; - } - - bool closed() { - return false; - } - - bool isatty() { - return false; - } - -public: - - BEGIN_PYTHON_METHOD_MAP(DbgOut, "dbgout") - PYTHON_METHOD1("write", write, "write"); - PYTHON_METHOD1("writedml", writedml, "writedml"); - PYTHON_METHOD0("flush", flush, "flush"); - PYTHON_PROPERTY("encoding", encoding, "encoding"); - PYTHON_PROPERTY("closed", closed, "closed"); - PYTHON_METHOD0("isatty", isatty, "isatty"); - END_PYTHON_METHOD_MAP - -private: - - CComQIPtr m_control; - -}; - -/////////////////////////////////////////////////////////////////////////////// - -class DbgIn -{ -public: - - DbgIn(PDEBUG_CLIENT client) : - m_control(client) - {} - - std::wstring readline() - { - AutoRestorePyState pystate; - - std::vector inputBuffer(0x10000); - - ULONG read = 0; - m_control->InputWide(&inputBuffer[0], static_cast(inputBuffer.size()), &read); - - std::wstring inputstr = std::wstring(&inputBuffer[0]); - - return inputstr.empty() ? L"\n" : inputstr; - } - - bool closed() { - return false; - } - -public: - - BEGIN_PYTHON_METHOD_MAP(DbgIn, "dbgin") - PYTHON_METHOD0("readline", readline, "readline"); - PYTHON_PROPERTY("closed", closed, "closed"); - END_PYTHON_METHOD_MAP - -private: - - CComQIPtr m_control; -}; - -////////////////////////////////////////////////////////////////////////////// - diff --git a/pykd_ext/dllmain.cpp b/pykd_ext/dllmain.cpp deleted file mode 100644 index 6284baf..0000000 --- a/pykd_ext/dllmain.cpp +++ /dev/null @@ -1,30 +0,0 @@ -// dllmain.cpp : Defines the entry point for the DLL application. -#include "stdafx.h" - - -static HMODULE pinHandle = NULL; - -BOOL APIENTRY DllMain( HMODULE hModule, - DWORD ul_reason_for_call, - LPVOID lpReserved - ) -{ - if (!pinHandle) - { - GetModuleHandleEx( - GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_PIN, - (LPCTSTR)hModule, - &pinHandle); - } - - switch (ul_reason_for_call) - { - case DLL_PROCESS_ATTACH: - case DLL_THREAD_ATTACH: - case DLL_THREAD_DETACH: - case DLL_PROCESS_DETACH: - break; - } - return TRUE; -} - diff --git a/pykd_ext/export.def b/pykd_ext/export.def deleted file mode 100644 index 3f4e5c2..0000000 --- a/pykd_ext/export.def +++ /dev/null @@ -1,8 +0,0 @@ -EXPORTS - DebugExtensionInitialize - DebugExtensionUninitialize - py - info - pip - help - select = selectVersion diff --git a/pykd_ext/packages.pykd_ext_vc120.config b/pykd_ext/packages.pykd_ext_vc120.config deleted file mode 100644 index 5122450..0000000 --- a/pykd_ext/packages.pykd_ext_vc120.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/pykd_ext/pyapi.h b/pykd_ext/pyapi.h deleted file mode 100644 index a852f5d..0000000 --- a/pykd_ext/pyapi.h +++ /dev/null @@ -1,213 +0,0 @@ -#pragma once - - -typedef void* PyObject; -typedef void* PyThreadState; -typedef PyObject *(*PyCFunction)(PyObject *, PyObject *); - - -typedef enum { PyGILState_LOCKED, PyGILState_UNLOCKED } PyGILState_STATE; - -const int Py_single_input = 256; -const int Py_file_input = 257; -const int Py_eval_input = 258; - -const int METH_VARARGS = 0x0001; - -struct PyMethodDef { - const char *ml_name; /* The name of the built-in function/method */ - PyCFunction ml_meth; /* The C function that implements it */ - int ml_flags; /* Combination of METH_xxx flags, which mostly - describe the args expected by the C func */ - const char *ml_doc; /* The __doc__ attribute, or NULL */ -}; - -typedef struct PyMethodDef PyMethodDef; - -void __stdcall Py_IncRef(PyObject* object); -void __stdcall Py_DecRef(PyObject* object); - -PyObject* __stdcall PyString_FromString(const char *v); -char* PyString_AsString(PyObject *string); -int PyString_Check(PyObject *o); - -PyObject* PyImport_Import(PyObject *name); -PyObject* __stdcall PyImport_ImportModule(const char *name); -PyObject* __stdcall PyImport_AddModule(const char *name); - -PyObject* __stdcall PyDict_New(); -int __stdcall PyDict_SetItemString(PyObject *p, const char *key, PyObject *val); - -PyObject* __stdcall PyTuple_New(size_t len); -PyObject* __stdcall PyTuple_GetItem(PyObject *p, size_t pos); -int __stdcall PyTuple_SetItem(PyObject *p, size_t pos, PyObject *obj); -PyObject* __stdcall PyDict_GetItemString(PyObject *p, const char *key); -void __stdcall PyDict_Clear(PyObject *p); -size_t __stdcall PyTuple_Size(PyObject *p); - -size_t PyList_Size(PyObject* list); -PyObject* PyList_GetItem(PyObject *list, size_t index); - -PyObject* __stdcall PyCFunction_NewEx(PyMethodDef *, PyObject *, PyObject *); -PyObject* __stdcall PyClass_New(PyObject* className, PyObject* classBases, PyObject* classDict); -PyObject* __stdcall PyMethod_New(PyObject *func, PyObject *self, PyObject *classobj); -PyObject* __stdcall PyInstance_New(PyObject *classobj, PyObject *arg, PyObject *kw); - -PyThreadState* __stdcall PyEval_SaveThread(); -void __stdcall PyEval_RestoreThread(PyThreadState *tstate); - -int __stdcall PySys_SetObject(char *name, PyObject *v); -PyObject* __stdcall PySys_GetObject(char *name); -void __stdcall PySys_SetArgv(int argc, char **argv); -void __stdcall PySys_SetArgv_Py3(int argc, wchar_t **argv); - -int __stdcall PyRun_SimpleString(const char* str); -PyObject* __stdcall PyRun_String(const char *str, int start, PyObject *globals, PyObject *locals); -PyObject* PyRun_File(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals); - -typedef void(*PyCapsule_Destructor)(PyObject *); -PyObject* PyCapsule_New(void *pointer, const char *name, PyCapsule_Destructor destructor); -void* PyCapsule_GetPointer(PyObject *capsule, const char *name); - -int PyObject_SetAttrString(PyObject *o, const char *attr_name, PyObject *v); -PyObject* PyObject_GetAttrString(PyObject *o, const char *attr_name); -PyObject* PyObject_CallObject(PyObject *callable_object, PyObject *args); -PyObject* PyObject_Call(PyObject *callable_object, PyObject *args, PyObject *kw); - -PyObject* PyUnicode_FromWideChar(const wchar_t *w, size_t size); -int PyUnicode_Check(PyObject *o); - -PyObject* PyBool_FromLong(long v); - -PyObject* Py_None(); -PyObject* PyExc_SystemExit(); -PyObject* PyExc_TypeError(); -PyObject* PyType_Type(); -PyObject* PyProperty_Type(); - -void PyErr_Fetch(PyObject **ptype, PyObject **pvalue, PyObject **ptraceback); -void PyErr_NormalizeException(PyObject**exc, PyObject**val, PyObject**tb); -void PyErr_SetString(PyObject *type, const char *message); -void PyErr_Clear(); - -PyObject* PyFile_FromString(char *filename, char *mode); -FILE* PyFile_AsFile(PyObject *pyfile); -FILE* _Py_fopen(const char* filename, const char* mode); - -PyObject* __stdcall PyUnicode_FromString(const char* str); -PyObject* __stdcall PyInstanceMethod_New(PyObject *func); -size_t __stdcall PyUnicode_AsWideChar(PyObject *unicode, wchar_t *w, size_t size); -int __stdcall Py_AddPendingCall(int(*func)(void *), void *arg); - -PyGILState_STATE __stdcall PyGILState_Ensure(); -void __stdcall PyGILState_Release(PyGILState_STATE); - -PyObject* __stdcall PyDescr_NewMethod(PyObject* type, struct PyMethodDef *meth); - -size_t __stdcall PyGC_Collect(void); - -bool IsPy3(); - -class PyObjectRef; - - -class PyObjectBorrowedRef -{ - friend PyObjectRef; - -public: - - PyObjectBorrowedRef(PyObject* obj) - { - m_obj = obj; - if (m_obj) - Py_IncRef(m_obj); - } - - ~PyObjectBorrowedRef() - { - if (m_obj) - Py_DecRef(m_obj); - } - - operator PyObject*() - { - return m_obj; - } - -private: - - - PyObjectBorrowedRef(const PyObjectRef& obj) = delete; - - PyObject* m_obj; -}; - - -class PyObjectRef -{ -public: - - PyObjectRef() : m_obj(0) - {} - - PyObjectRef(PyObject* obj) - { - m_obj = obj; - } - - ~PyObjectRef() - { - if (m_obj) - Py_DecRef(m_obj); - } - - operator PyObject*() - { - return m_obj; - } - - PyObjectRef& operator= (const PyObjectRef& ref) - { - if (m_obj) - Py_DecRef(m_obj); - - m_obj = ref.m_obj; - if (m_obj) - Py_IncRef(m_obj); - - return *this; - } - - PyObjectRef& operator= (const PyObjectBorrowedRef& ref) - { - if (m_obj) - Py_DecRef(m_obj); - - m_obj = ref.m_obj; - if (m_obj) - Py_IncRef(m_obj); - - return *this; - } - - PyObjectRef& operator= (PyObject* obj) - { - if (m_obj) - Py_DecRef(m_obj); - - m_obj = obj; - - return *this; - } - -private: - - PyObjectRef(const PyObjectRef& obj) = delete; - - PyObject* m_obj; -}; - - - - diff --git a/pykd_ext/pyclass.h b/pykd_ext/pyclass.h deleted file mode 100644 index 68f209a..0000000 --- a/pykd_ext/pyclass.h +++ /dev/null @@ -1,232 +0,0 @@ -#pragma once - -#include "pyapi.h" - - -#include - -#include -#include - - -class convert_python_exception : public std::exception -{ -public: - convert_python_exception(const char* message) : std::exception(message) - {} -}; - - -struct convert_from_python -{ - convert_from_python(PyObject* obj) : m_obj(obj){} - - operator std::wstring() - { - if ( PyUnicode_Check(m_obj) ) - { - std::vector buf(0x10000); - size_t len = buf.size(); - len = PyUnicode_AsWideChar(m_obj, &buf[0], len); - return std::wstring(&buf[0], len); - } - - if ( !IsPy3() && PyString_Check(m_obj) ) - { - return std::wstring(_bstr_t(PyString_AsString(m_obj))); - } - - throw convert_python_exception("failed convert argument"); - } - - - operator std::string() - { - if (PyUnicode_Check(m_obj)) - { - std::vector buf(0x10000); - size_t len = buf.size(); - len = PyUnicode_AsWideChar(m_obj, &buf[0], len); - std::wstring str(&buf[0], len); - return std::string(_bstr_t(str.c_str())); - } - - if ( !IsPy3() && PyString_Check(m_obj) ) - { - return std::string(PyString_AsString(m_obj)); - } - - throw convert_python_exception("failed convert argument"); - } - - PyObject* m_obj; -}; - -struct convert_to_python -{ - operator PyObject* (){ - return m_obj; - } - - convert_to_python() - { - - } - - convert_to_python(const std::wstring& str) - { - m_obj = PyUnicode_FromWideChar(str.c_str(), str.size()); - } - - convert_to_python(bool v) - { - m_obj = PyBool_FromLong(v == true ? 1 : 0); - } - - PyObject* m_obj; -}; - - - -#define BEGIN_PYTHON_METHOD_MAP(classType, className) \ - template \ - PyObject* callMethod0( \ - TRet (classType::*method)()) \ - { \ - TRet r = (this->*method)(); \ - return convert_to_python(r); \ - } \ - PyObject* callMethod0(\ - void (classType::*method)()) \ - { \ - (this->*method)(); \ - Py_IncRef(Py_None()); \ - return Py_None(); \ - } \ - template \ - PyObject* callMethod1( \ - TRet (classType::*method)(V1& v1), \ - convert_from_python& v1)\ - { \ - return (this->*method)(v1); \ - } \ - template \ - PyObject* callMethod1(\ - void(classType::*method)(V1& v1), \ - convert_from_python& v1)\ - { \ - (this->*method)(v1); \ - Py_IncRef(Py_None()); \ - return Py_None(); \ - } \ -template \ -static PyObject* getPythonClass() { \ - PyObject* args = PyTuple_New(3); \ - PyTuple_SetItem(args, 0, IsPy3() ? PyUnicode_FromString(className) : PyString_FromString(className)); \ - PyTuple_SetItem(args, 1, PyTuple_New(0)); \ - PyTuple_SetItem(args, 2, PyDict_New()); \ - PyObject* classTypeObj = PyObject_CallObject(PyType_Type(), args); \ - Py_DecRef(args); - -#define END_PYTHON_METHOD_MAP \ - return classTypeObj; \ - } - -#define PYTHON_METHOD0(name, fn, doc) \ - struct Call_##fn { \ - static PyObject* pycall(PyObject *s, PyObject *args) \ - { \ - try { \ - PyObject* self = PyTuple_GetItem(args, 0); \ - PyObject* cppobj = PyObject_GetAttrString(self, "cppobject"); \ - T* _this = reinterpret_cast(PyCapsule_GetPointer(cppobj, "cppobject")); \ - Py_DecRef(cppobj); \ - return _this->callMethod0(&fn); \ - } \ - catch(convert_python_exception& exc) \ - { PyErr_SetString(PyExc_TypeError(), exc.what()); } \ - return Py_None(); \ - } \ - }; \ - {\ - static PyMethodDef methodDef = { name, Call_##fn::pycall, METH_VARARGS }; \ - PyObject* cFuncObj = PyCFunction_NewEx(&methodDef, NULL, NULL); \ - PyObject* methodObj = IsPy3() ? PyInstanceMethod_New(cFuncObj) : PyMethod_New(cFuncObj, NULL, classTypeObj); \ - PyObject_SetAttrString(classTypeObj, name, methodObj); \ - Py_DecRef(cFuncObj), Py_DecRef(methodObj); \ - } - -#define PYTHON_METHOD1(name, fn, doc) \ - struct Call_##fn { \ - static PyObject* pycall(PyObject *s, PyObject *args) \ - { \ - PyObject* self = PyTuple_GetItem(args, 0); \ - PyObject* cppobj = PyObject_GetAttrString(self, "cppobject"); \ - T* _this = reinterpret_cast(PyCapsule_GetPointer(cppobj, "cppobject")); \ - Py_DecRef(cppobj); \ - PyObject* v1 = PyTuple_GetItem(args, 1); \ - return _this->callMethod1(&fn, convert_from_python(v1)); \ - } \ - }; \ - {\ - static PyMethodDef methodDef = { name, Call_##fn::pycall, METH_VARARGS }; \ - PyObject* cFuncObj = PyCFunction_NewEx(&methodDef, NULL, NULL); \ - PyObject* methodObj = IsPy3() ? PyInstanceMethod_New(cFuncObj) : PyMethod_New(cFuncObj, NULL, classTypeObj); \ - PyObject_SetAttrString(classTypeObj, name, methodObj); \ - Py_DecRef(cFuncObj), Py_DecRef(methodObj); \ - } - -#define PYTHON_PROPERTY(name, fn, doc) \ - struct Call_##fn{ \ - static PyObject* pycall(PyObject *s, PyObject *args) \ - { \ - PyObject* self = PyTuple_GetItem(args, 0); \ - PyObject* cppobj = PyObject_GetAttrString(self, "cppobject"); \ - T* _this = reinterpret_cast(PyCapsule_GetPointer(cppobj, "cppobject")); \ - Py_DecRef(cppobj); \ - return _this->callMethod0(&fn); \ - } \ - }; \ - {\ - static PyMethodDef methodDef = { name, Call_##fn::pycall, METH_VARARGS }; \ - PyObject* cFuncObj = PyCFunction_NewEx(&methodDef, NULL, NULL); \ - PyObject* methodObj = IsPy3() ? PyInstanceMethod_New(cFuncObj) : PyMethod_New(cFuncObj, NULL, classTypeObj); \ - PyObject* args = PyTuple_New(4); \ - Py_IncRef(PyProperty_Type()); \ - PyTuple_SetItem(args, 0, methodObj); \ - PyTuple_SetItem(args, 1, Py_None()); \ - PyTuple_SetItem(args, 2, Py_None()); \ - PyTuple_SetItem(args, 3, IsPy3() ? PyUnicode_FromString(doc) : PyString_FromString(doc));\ - PyObject* propertyObj = PyObject_CallObject(PyProperty_Type(), args); \ - PyObject_SetAttrString(classTypeObj, name, propertyObj); \ - Py_DecRef(cFuncObj), Py_DecRef(propertyObj), Py_DecRef(args); \ - } - - - -template -void delete_pyobject(PyObject* obj) -{ - T1* cppobj = reinterpret_cast(PyCapsule_GetPointer(obj, "cppobject")); - delete cppobj; -} - -template -PyObject* make_pyobject(const T2& var) -{ - PyObject* cls = T1::getPythonClass(); - PyObject* p1 = PyObject_CallObject(cls, NULL); - Py_DecRef(cls); - - T1* t1 = new T1(var); - PyObject* p2 = PyCapsule_New(t1, "cppobject", delete_pyobject); - - PyObject_SetAttrString(p1, "cppobject", p2); - - Py_DecRef(p2); - - return p1; -} - - - diff --git a/pykd_ext/pycontext.h b/pykd_ext/pycontext.h deleted file mode 100644 index 5d06fd2..0000000 --- a/pykd_ext/pycontext.h +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include "pyapi.h" - -class AutoRestorePyState -{ -public: - - AutoRestorePyState() - { - m_state = PyEval_SaveThread(); - } - - ~AutoRestorePyState() - { - PyEval_RestoreThread(m_state); - } - -private: - - PyThreadState* m_state; -}; - diff --git a/pykd_ext/pyinterpret.cpp b/pykd_ext/pyinterpret.cpp deleted file mode 100644 index b4a3e7e..0000000 --- a/pykd_ext/pyinterpret.cpp +++ /dev/null @@ -1,917 +0,0 @@ -#include "stdafx.h" -#include "pyinterpret.h" - -#include -#include -#include -#include -#include - -#include "pymodule.h" -#include "pyclass.h" -#include "dbgout.h" - -class PyModule; -class PythonInterpreter; - -class HKey -{ - -public: - - HKey() : m_key(NULL) - {} - - ~HKey() - { - if (m_key) - RegCloseKey(m_key); - } - - operator HKEY*() - { - return &m_key; - } - - operator HKEY() const - { - return m_key; - } - -private: - - HKEY m_key; -}; - - -class PyModule -{ -public: - - PyModule(int majorVesion, int minorVersion); - - ~PyModule(); - - bool isPy3; - - void checkPykd(); - void deactivate(); - - PyObject* PyType_Type; - PyObject* PyProperty_Type; - PyObject* Py_None; - PyObject* PyExc_SystemExit; - PyObject* PyExc_TypeError; - PyObject* PyUnicode_Type; - PyObject* PyString_Type; - - PyThreadState* PyThreadState_Current; - - void( *Py_Initialize)(); - void( *Py_Finalize)(); - - PyThreadState* ( *Py_NewInterpreter)(); - void( *Py_EndInterpreter)(PyThreadState *tstate); - PyObject* ( *PyEval_GetGlobals)(); - PyObject* ( *PyImport_Import)(PyObject *name); - PyObject* ( *PyImport_ImportModule)(const char *name); - void( *PyEval_InitThreads)(); - PyThreadState* ( *PyEval_SaveThread)(); - void( *PyEval_RestoreThread)(PyThreadState *tstate); - PyThreadState* ( *PyThreadState_Swap)(PyThreadState *tstate); - PyObject* ( *PyRun_String)(const char *str, int start, PyObject *globals, PyObject *locals); - int( *PyRun_SimpleString)(const char* str); - PyObject* ( *PyRun_File)(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals); - PyObject* ( *PyDict_New)(); - int( *PyDict_SetItemString)(PyObject *p, const char *key, PyObject *val); - PyObject*( *PyDict_GetItemString)(PyObject *p, const char* key); - void ( *PyDict_Clear)(PyObject *p); - void( *Py_IncRef)(PyObject* object); - void( *Py_DecRef)(PyObject* object); - PyObject* ( *PyObject_Call)(PyObject *callable_object, PyObject *args, PyObject *kw); - PyObject* ( *PyObject_GetAttr)(PyObject *object, PyObject *attr_name); - PyObject* ( *PyObject_GetAttrString)(PyObject *object, const char *attr_name); - int( *PyObject_SetAttr)(PyObject *object, PyObject *attr_name, PyObject *value); - PyObject* ( *PyObject_CallObject)(PyObject *callable_object, PyObject *args); - PyObject* ( *PyTuple_New)(size_t len); - int( *PyTuple_SetItem)(PyObject *p, size_t pos, PyObject *o); - PyObject* ( *PyTuple_GetItem)(PyObject *p, size_t pos); - size_t( *PyTuple_Size)(PyObject *p); - PyObject* ( *PyCFunction_NewEx)(PyMethodDef *, PyObject *, PyObject *); - PyObject* ( *PySys_GetObject)(char *name); - int( *PySys_SetObject)(char *name, PyObject *v); - void( *PySys_SetArgv)(int argc, char **argv); - void( *PySys_SetArgv_Py3)(int argc, wchar_t **argv); - PyObject* ( *PyString_FromString)(const char *v); - char* ( *PyString_AsString)(PyObject *string); - void( *PyErr_Fetch)(PyObject **ptype, PyObject **pvalue, PyObject **ptraceback); - void( *PyErr_NormalizeException)(PyObject**exc, PyObject**val, PyObject**tb); - void( *PyErr_SetString)(PyObject *type, const char *message); - void( *PyErr_Clear)(); - PyObject* ( *PyImport_AddModule)(const char *name); - PyObject* ( *PyClass_New)(PyObject* className, PyObject* classBases, PyObject* classDict); - PyObject* ( *PyInstance_New)(PyObject *classobj, PyObject *arg, PyObject *kw); - PyObject* ( *PyMethod_New)(PyObject *func, PyObject *self, PyObject *classobj); - PyObject* ( *PyCapsule_New)(void *pointer, const char *name, PyCapsule_Destructor destructor); - void* ( *PyCapsule_GetPointer)(PyObject *capsule, const char *name); - int ( *PyObject_SetAttrString)(PyObject *o, const char *attr_name, PyObject *v); - int ( *PyObject_IsInstance)(PyObject *inst, PyObject *cls); - PyObject* ( *PyUnicode_FromWideChar)(const wchar_t *w, size_t size); - PyObject* ( *PyBool_FromLong)(long v); - size_t( *PyList_Size)(PyObject* list); - PyObject* ( *PyList_GetItem)(PyObject *list, size_t index); - PyObject* ( *PyFile_FromString)(char *filename, char *mode); - FILE* ( *PyFile_AsFile)(PyObject *pyfile); - PyObject* ( *PyUnicode_FromString)(const char *u); - PyObject* ( *PyInstanceMethod_New)(PyObject *func); - size_t( *PyUnicode_AsWideChar)(PyObject *unicode, wchar_t *w, size_t size); - FILE* ( *_Py_fopen)(const char* filename, const char* mode); - int( *Py_AddPendingCall)(int(*func)(void *), void *arg); - PyGILState_STATE( *PyGILState_Ensure)(); - void( *PyGILState_Release)(PyGILState_STATE state); - PyObject* ( *PyDescr_NewMethod)(PyObject* type, struct PyMethodDef *meth); - size_t (*PyGC_Collect)(void); - void(*PyImport_Cleanup)(void); - - HMODULE m_handlePython; - PyThreadState* m_globalState; - PythonInterpreter* m_globalInterpreter; - bool m_pykdInit; -}; - - - -class PythonInterpreter -{ -public: - - PythonInterpreter(PyModule* mod) : - m_module(mod) - { - m_state = mod->Py_NewInterpreter(); - } - - ~PythonInterpreter() - { - m_module->PyEval_RestoreThread(m_state); - - m_module->PyImport_Cleanup(); - - m_module->Py_EndInterpreter(m_state); - } - - PyModule* m_module; - - PyThreadState* m_state; -}; - - -class PythonSingleton -{ -public: - - - static PythonSingleton* get() - { - if (m_singleton.get() == 0) - m_singleton.reset(new PythonSingleton()); - return m_singleton.get(); - } - - - PythonInterpreter* currentInterpreter() - { - if ( m_currentInterpreter ) - return m_currentInterpreter; - - for ( auto mod : m_modules) - { - if ( mod.second->PyThreadState_Current != 0 ) - { - return mod.second->m_globalInterpreter; - } - } - - return NULL; - } - - PythonInterpreter* getInterpreter(int majorVersion, int minorVersion, bool global) - { - PyModule* module = 0; - - if (m_modules.find(std::make_pair(majorVersion, minorVersion)) == m_modules.end()) - { - module = new PyModule(majorVersion, minorVersion); - m_modules.insert(std::make_pair(std::make_pair(majorVersion, minorVersion), module)); - } - else - { - module = m_modules[std::make_pair(majorVersion, minorVersion)]; - } - - module->PyEval_RestoreThread(module->m_globalState); - module->checkPykd(); - - if (global) - { - if (module->m_globalInterpreter == 0) - { - module->m_globalInterpreter = new PythonInterpreter(module); - } - - m_currentInterpreter = module->m_globalInterpreter; - m_currentIsGlobal = true; - } - else - { - m_currentInterpreter = new PythonInterpreter(module); - m_currentIsGlobal = false; - } - - module->PyThreadState_Swap(m_currentInterpreter->m_state); - - return m_currentInterpreter; - } - - void releaseInterpretor(PythonInterpreter* interpret) - { - PyModule* module = m_currentInterpreter->m_module; - - m_currentInterpreter->m_state = module->PyEval_SaveThread(); - - if (!m_currentIsGlobal) - { - delete m_currentInterpreter; - module->PyThreadState_Swap(module->m_globalState); - module->m_globalState = module->PyEval_SaveThread(); - } - - m_currentInterpreter = 0; - } - - bool isInterpreterLoaded(int majorVersion, int minorVersion) - { - return m_modules.find(std::make_pair(majorVersion, minorVersion)) != m_modules.end(); - } - - void stopAllInterpreter() - { - for (auto m : m_modules) - { - m_currentInterpreter = m.second->m_globalInterpreter; - m.second->deactivate(); - } - m_currentInterpreter = 0; - } - -private: - - static std::auto_ptr m_singleton; - - std::map, PyModule*> m_modules; - - PythonInterpreter* m_currentInterpreter; - bool m_currentIsGlobal; -}; - -std::auto_ptr PythonSingleton::m_singleton; - -HMODULE LoadPythonForKey(HKEY installPathKey, int majorVersion, int minorVersion) -{ - - HMODULE hmodule = NULL; - - char installPath[1000]; - DWORD installPathSize = sizeof(installPath); - - if (ERROR_SUCCESS == RegQueryValueExA(installPathKey, NULL, NULL, NULL, (LPBYTE)installPath, &installPathSize)) - { - std::stringstream dllName; - dllName << "python" << majorVersion << minorVersion << ".dll"; - - std::stringstream imagePath; - imagePath << installPath << dllName.str(); - - hmodule = LoadLibraryExA(imagePath.str().c_str(), NULL, LOAD_WITH_ALTERED_SEARCH_PATH); - if (hmodule) - return hmodule; - - hmodule = LoadLibraryA(dllName.str().c_str()); - if (hmodule) - return hmodule; - - } - - return NULL; -} - - -HMODULE LoadPythonLibrary(int majorVersion, int minorVersion) -{ - - HKey pythonCoreKey; - - for (auto rootKey : std::list({ HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER })) - { - if (ERROR_SUCCESS == RegOpenKeyA(rootKey, "SOFTWARE\\Python\\PythonCore", pythonCoreKey)) - { - HKey installPathKey; - - std::stringstream installPathStr; - - if (majorVersion == 2 || (majorVersion == 3 && minorVersion <= 4)) - { - installPathStr << majorVersion << '.' << minorVersion << "\\InstallPath"; - } - else - if (majorVersion == 3 && minorVersion >= 5) - { -#ifdef _M_X64 - installPathStr << majorVersion << '.' << minorVersion << "\\InstallPath"; -#else - installPathStr << majorVersion << '.' << minorVersion << "-32" << "\\InstallPath"; -#endif - } - - if (ERROR_SUCCESS == RegOpenKeyA(pythonCoreKey, installPathStr.str().c_str(), installPathKey)) - { - HMODULE hmodule = LoadPythonForKey(installPathKey, majorVersion, minorVersion); - if (hmodule) - return hmodule; - } - } - } - - return NULL; -} - - -std::list getInstalledInterpreter() -{ - std::set interpretSet; - - for (auto rootKey : const std::list({ HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER })) - { - HKey pythonCoreKey; - - if (ERROR_SUCCESS != RegOpenKeyA(rootKey, "SOFTWARE\\Python\\PythonCore", pythonCoreKey)) - continue; - - for (DWORD i = 0;; ++i) - { - char versionStr[20]; - if (ERROR_SUCCESS != RegEnumKeyA(pythonCoreKey, i, versionStr, sizeof(versionStr))) - break; - - int majorVersion = -1, minorVersion = -1; - sscanf_s(versionStr, "%d.%d", &majorVersion, &minorVersion); - - HKey installPathKey; - std::string installPathStr(versionStr); - installPathStr += "\\InstallPath"; - - if (ERROR_SUCCESS != RegOpenKeyA(pythonCoreKey, installPathStr.c_str(), installPathKey)) - continue; - - HMODULE hmodule = LoadPythonForKey(installPathKey, majorVersion, minorVersion); - - if (hmodule) - { - char fullPath[1000]; - - if (GetModuleFileNameA(hmodule, fullPath, sizeof(fullPath))) - { - interpretSet.insert({ majorVersion, minorVersion, fullPath }); - } - - FreeLibrary(hmodule); - } - } - } - - std::list interpretLst; - - std::copy(interpretSet.begin(), interpretSet.end(), std::inserter(interpretLst, interpretLst.begin())); - - interpretLst.sort(); - - return interpretLst; -} - -PyModule::PyModule(int majorVesion, int minorVersion) -{ - m_handlePython = LoadPythonLibrary(majorVesion, minorVersion); - - if (!m_handlePython) - throw std::exception("failed to load python module"); - - isPy3 = majorVesion == 3; - - *reinterpret_cast(&PyType_Type) = GetProcAddress(m_handlePython, "PyType_Type"); - *reinterpret_cast(&PyProperty_Type) = GetProcAddress(m_handlePython, "PyProperty_Type"); - *reinterpret_cast(&PyUnicode_Type) = GetProcAddress(m_handlePython, "PyUnicode_Type"); - *reinterpret_cast(&PyString_Type) = GetProcAddress(m_handlePython, "PyString_Type"); - *reinterpret_cast(&Py_None) = GetProcAddress(m_handlePython, "_Py_NoneStruct"); - PyExc_SystemExit = *reinterpret_cast(GetProcAddress(m_handlePython, "PyExc_SystemExit")); - PyExc_TypeError= *reinterpret_cast(GetProcAddress(m_handlePython, "PyExc_TypeError")); - PyThreadState_Current = reinterpret_cast(GetProcAddress(m_handlePython, "_PyThreadState_Current")); - *reinterpret_cast(&Py_Initialize) = GetProcAddress(m_handlePython, "Py_Initialize"); - *reinterpret_cast(&Py_Finalize) = GetProcAddress(m_handlePython, "Py_Finalize"); - *reinterpret_cast(&Py_NewInterpreter) = GetProcAddress(m_handlePython, "Py_NewInterpreter"); - *reinterpret_cast(&Py_EndInterpreter) = GetProcAddress(m_handlePython, "Py_EndInterpreter"); - *reinterpret_cast(&Py_DecRef) = GetProcAddress(m_handlePython, "Py_DecRef"); - *reinterpret_cast(&Py_IncRef) = GetProcAddress(m_handlePython, "Py_IncRef"); - *reinterpret_cast(&PyEval_GetGlobals) = GetProcAddress(m_handlePython, "PyEval_GetGlobals"); - *reinterpret_cast(&PyEval_InitThreads) = GetProcAddress(m_handlePython, "PyEval_InitThreads"); - *reinterpret_cast(&PyEval_SaveThread) = GetProcAddress(m_handlePython, "PyEval_SaveThread"); - *reinterpret_cast(&PyEval_RestoreThread) = GetProcAddress(m_handlePython, "PyEval_RestoreThread"); - *reinterpret_cast(&PyThreadState_Swap) = GetProcAddress(m_handlePython, "PyThreadState_Swap"); - *reinterpret_cast(&PyRun_String) = GetProcAddress(m_handlePython, "PyRun_String"); - *reinterpret_cast(&PyRun_SimpleString) = GetProcAddress(m_handlePython, "PyRun_SimpleString"); - *reinterpret_cast(&PyRun_File) = GetProcAddress(m_handlePython, "PyRun_File"); - *reinterpret_cast(&PyDict_New) = GetProcAddress(m_handlePython, "PyDict_New"); - *reinterpret_cast(&PyDict_SetItemString) = GetProcAddress(m_handlePython, "PyDict_SetItemString"); - *reinterpret_cast(&PyDict_GetItemString) = GetProcAddress(m_handlePython, "PyDict_GetItemString"); - *reinterpret_cast(&PyDict_Clear) = GetProcAddress(m_handlePython, "PyDict_Clear"); - *reinterpret_cast(&PyObject_Call) = GetProcAddress(m_handlePython, "PyObject_Call"); - *reinterpret_cast(&PyObject_GetAttr) = GetProcAddress(m_handlePython, "PyObject_GetAttr"); - *reinterpret_cast(&PyObject_GetAttrString) = GetProcAddress(m_handlePython, "PyObject_GetAttrString"); - *reinterpret_cast(&PyObject_SetAttr) = GetProcAddress(m_handlePython, "PyObject_SetAttr"); - *reinterpret_cast(&PyObject_CallObject) = GetProcAddress(m_handlePython, "PyObject_CallObject"); - *reinterpret_cast(&PyObject_IsInstance) = GetProcAddress(m_handlePython, "PyObject_IsInstance"); - *reinterpret_cast(&PyTuple_New) = GetProcAddress(m_handlePython, "PyTuple_New"); - *reinterpret_cast(&PyTuple_SetItem) = GetProcAddress(m_handlePython, "PyTuple_SetItem"); - *reinterpret_cast(&PyTuple_GetItem) = GetProcAddress(m_handlePython, "PyTuple_GetItem"); - *reinterpret_cast(&PyTuple_Size) = GetProcAddress(m_handlePython, "PyTuple_Size"); - *reinterpret_cast(&PyString_FromString) = GetProcAddress(m_handlePython, "PyString_FromString"); - *reinterpret_cast(&PyCFunction_NewEx) = GetProcAddress(m_handlePython, "PyCFunction_NewEx"); - *reinterpret_cast(&PySys_GetObject) = GetProcAddress(m_handlePython, "PySys_GetObject"); - *reinterpret_cast(&PySys_SetObject) = GetProcAddress(m_handlePython, "PySys_SetObject"); - *reinterpret_cast(&PySys_SetArgv) = !isPy3 ? GetProcAddress(m_handlePython, "PySys_SetArgv") : 0 ; - *reinterpret_cast(&PySys_SetArgv_Py3) = isPy3 ? GetProcAddress(m_handlePython, "PySys_SetArgv") : 0; - *reinterpret_cast(&PyString_FromString) = GetProcAddress(m_handlePython, "PyString_FromString"); - *reinterpret_cast(&PyString_AsString) = GetProcAddress(m_handlePython, "PyString_AsString"); - *reinterpret_cast(&PyErr_Fetch) = GetProcAddress(m_handlePython, "PyErr_Fetch"); - *reinterpret_cast(&PyErr_NormalizeException) = GetProcAddress(m_handlePython, "PyErr_NormalizeException"); - *reinterpret_cast(&PyErr_SetString) = GetProcAddress(m_handlePython, "PyErr_SetString"); - *reinterpret_cast(&PyErr_Clear) = GetProcAddress(m_handlePython, "PyErr_Clear"); - *reinterpret_cast(&PyImport_AddModule) = GetProcAddress(m_handlePython, "PyImport_AddModule"); - *reinterpret_cast(&PyImport_ImportModule) = GetProcAddress(m_handlePython, "PyImport_ImportModule"); - *reinterpret_cast(&PyImport_Cleanup) = GetProcAddress(m_handlePython, "PyImport_Cleanup"); - *reinterpret_cast(&PyClass_New) = GetProcAddress(m_handlePython, "PyClass_New"); - *reinterpret_cast(&PyInstance_New) = GetProcAddress(m_handlePython, "PyInstance_New"); - *reinterpret_cast(&PyMethod_New) = GetProcAddress(m_handlePython, "PyMethod_New"); - *reinterpret_cast(&PyCapsule_New) = GetProcAddress(m_handlePython, "PyCapsule_New"); - *reinterpret_cast(&PyCapsule_GetPointer) = GetProcAddress(m_handlePython, "PyCapsule_GetPointer"); - *reinterpret_cast(&PyObject_SetAttrString) = GetProcAddress(m_handlePython, "PyObject_SetAttrString"); - *reinterpret_cast(&PyUnicode_FromWideChar) = isPy3 ? GetProcAddress(m_handlePython, "PyUnicode_FromWideChar") : - GetProcAddress(m_handlePython, "PyUnicodeUCS2_FromWideChar"); - *reinterpret_cast(&PyUnicode_AsWideChar) = isPy3 ? GetProcAddress(m_handlePython, "PyUnicode_AsWideChar") : - GetProcAddress(m_handlePython, "PyUnicodeUCS2_AsWideChar"); - *reinterpret_cast(&PyImport_Import) = GetProcAddress(m_handlePython, "PyImport_Import"); - *reinterpret_cast(&PyImport_AddModule) = GetProcAddress(m_handlePython, "PyImport_AddModule"); - *reinterpret_cast(&PyBool_FromLong) = GetProcAddress(m_handlePython, "PyBool_FromLong"); - *reinterpret_cast(&PyList_Size) = GetProcAddress(m_handlePython, "PyList_Size"); - *reinterpret_cast(&PyList_GetItem) = GetProcAddress(m_handlePython, "PyList_GetItem"); - *reinterpret_cast(&PyFile_FromString) = GetProcAddress(m_handlePython, "PyFile_FromString"); - *reinterpret_cast(&PyFile_AsFile) = GetProcAddress(m_handlePython, "PyFile_AsFile"); - *reinterpret_cast(&PyUnicode_FromString) = GetProcAddress(m_handlePython, "PyUnicode_FromString"); - *reinterpret_cast(&PyInstanceMethod_New) = GetProcAddress(m_handlePython, "PyInstanceMethod_New"); - - *reinterpret_cast(&_Py_fopen) = GetProcAddress(m_handlePython, "_Py_fopen"); - *reinterpret_cast(&Py_AddPendingCall) = GetProcAddress(m_handlePython, "Py_AddPendingCall"); - *reinterpret_cast(&PyGILState_Ensure) = GetProcAddress(m_handlePython, "PyGILState_Ensure"); - *reinterpret_cast(&PyGILState_Release) = GetProcAddress(m_handlePython, "PyGILState_Release"); - *reinterpret_cast(&PyDescr_NewMethod) = GetProcAddress(m_handlePython, "PyDescr_NewMethod"); - *reinterpret_cast(&PyGC_Collect) = GetProcAddress(m_handlePython, "PyGC_Collect"); - - - Py_Initialize(); - PyEval_InitThreads(); - - checkPykd(); - - m_globalState = PyEval_SaveThread(); -} - - -PyModule::~PyModule() -{ - assert(0); - - //if (m_globalInterpreter) - //{ - // delete m_globalInterpreter; - // m_globalInterpreter = 0; - //} - - //PyThreadState_Swap(m_globalState); - - //Py_Finalize(); - - //FreeLibrary(m_handlePython); -} - - -void PyModule::deactivate() -{ - if (m_globalInterpreter) - { - delete m_globalInterpreter; - m_globalInterpreter = 0; - - PyThreadState_Swap(m_globalState); - } - else - { - PyEval_RestoreThread(m_globalState); - } - - if (m_pykdInit) - { - PyObject* mainName = isPy3 ? PyUnicode_FromString("__main__") : PyString_FromString("__main__"); - PyObject* mainMod = PyImport_Import(mainName); - PyObject* globals = PyObject_GetAttrString(mainMod, "__dict__"); - PyObject* result = PyRun_String("__import__('pykd').deinitialize()\n", Py_file_input, globals, globals); - - if (mainName) Py_DecRef(mainName); - if (mainMod) Py_DecRef(mainMod); - if (globals) Py_DecRef(globals); - if (result) Py_DecRef(result); - - m_pykdInit = false; - } - - m_globalState = PyEval_SaveThread(); -} - -void PyModule::checkPykd() -{ - - PyObject *mainName = 0, *mainMod = 0, *globals = 0, *result = 0; - - do { - if (m_pykdInit) - break; - - mainName = isPy3 ? PyUnicode_FromString("__main__") : PyString_FromString("__main__"); - if (!mainName) - break; - - mainMod = PyImport_Import(mainName); - if (!mainMod) - break; - - globals = PyObject_GetAttrString(mainMod, "__dict__"); - if (!globals) - break; - - result = PyRun_String("__import__('pykd').initialize()\n", Py_file_input, globals, globals); - if (!result) - break; - - m_pykdInit = true; - - } while( false); - - PyErr_Clear(); - - if (mainName) Py_DecRef(mainName); - if (mainMod) Py_DecRef(mainMod); - if (globals) Py_DecRef(globals); - if (result) Py_DecRef(result); -} - -PythonInterpreter* activateInterpreter(bool global, int majorVersion, int minorVersion) -{ - return PythonSingleton::get()->getInterpreter(majorVersion, minorVersion, global); -} - -void releaseInterpretor(PythonInterpreter* interpret) -{ - PythonSingleton::get()->releaseInterpretor(interpret); -} - -bool isInterpreterLoaded(int majorVersion, int minorVersion) -{ - return PythonSingleton::get()->isInterpreterLoaded(majorVersion, minorVersion); -} - -void stopAllInterpreter() -{ - PythonSingleton::get()->stopAllInterpreter(); -} - -void __stdcall Py_IncRef(PyObject* object) -{ - PythonSingleton::get()->currentInterpreter()->m_module->Py_IncRef(object); -} - -void __stdcall Py_DecRef(PyObject* object) -{ - PythonSingleton::get()->currentInterpreter()->m_module->Py_DecRef(object); -} - -PyObject* __stdcall PyString_FromString(const char *v) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyString_FromString(v); -} - -PyObject* __stdcall PyDict_New() -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyDict_New(); -} - -PyObject* __stdcall PyDict_GetItemString(PyObject *p, const char *key) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyDict_GetItemString(p, key); -} - -int __stdcall PyDict_SetItemString(PyObject *p, const char *key, PyObject *val) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyDict_SetItemString(p, key, val); -} - -void __stdcall PyDict_Clear(PyObject *p) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyDict_Clear(p); -} - -PyObject* __stdcall PyCFunction_NewEx(PyMethodDef* pydef, PyObject *p1, PyObject *p2) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyCFunction_NewEx(pydef, p1, p2); -} - -PyObject* __stdcall PyClass_New(PyObject* className, PyObject* classBases, PyObject* classDict) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyClass_New(className, classBases, classDict); -} - -PyObject* __stdcall PyMethod_New(PyObject *func, PyObject *self, PyObject *classobj) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyMethod_New(func, self, classobj); -} - -int __stdcall PySys_SetObject(char *name, PyObject *v) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PySys_SetObject(name, v); -} - -void __stdcall PySys_SetArgv(int argc, char **argv) -{ - PythonSingleton::get()->currentInterpreter()->m_module->PySys_SetArgv(argc, argv); -} - -void __stdcall PySys_SetArgv_Py3(int argc, wchar_t **argv) -{ - PythonSingleton::get()->currentInterpreter()->m_module->PySys_SetArgv_Py3(argc, argv); -} - -PyObject* __stdcall PySys_GetObject(char *name) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PySys_GetObject(name); -} - -PyObject* __stdcall PyInstance_New(PyObject *classobj, PyObject *arg, PyObject *kw) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyInstance_New(classobj, arg, kw); -} - -int __stdcall PyRun_SimpleString(const char* str) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyRun_SimpleString(str); -} - -PyObject* __stdcall PyRun_String(const char *str, int start, PyObject *globals, PyObject *locals) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyRun_String(str, start, globals, locals); -} - -PyObject* PyCapsule_New(void *pointer, const char *name, PyCapsule_Destructor destructor) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyCapsule_New(pointer, name, destructor); -} - -void* PyCapsule_GetPointer(PyObject *capsule, const char *name) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyCapsule_GetPointer(capsule, name); -} - -int PyObject_SetAttrString(PyObject *o, const char *attr_name, PyObject *v) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyObject_SetAttrString(o, attr_name, v); -} - -PyObject* PyObject_GetAttrString(PyObject *o, const char *attr_name) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyObject_GetAttrString(o, attr_name); -} - -PyObject* PyObject_CallObject(PyObject *callable_object, PyObject *args) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyObject_CallObject(callable_object, args); -} - -PyObject* PyObject_Call(PyObject *callable_object, PyObject *args, PyObject *kw) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyObject_Call(callable_object, args, kw); -} - -int PyObject_IsInstance(PyObject *inst, PyObject *cls) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyObject_IsInstance(inst,cls); -} - -PyObject* __stdcall PyTuple_New(size_t len) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyTuple_New(len); -} - -PyObject* __stdcall PyTuple_GetItem(PyObject *p, size_t pos) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyTuple_GetItem(p, pos); -} - -int __stdcall PyTuple_SetItem(PyObject *p, size_t pos, PyObject *obj) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyTuple_SetItem(p, pos, obj); -} - -size_t __stdcall PyTuple_Size(PyObject *p) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyTuple_Size(p); -} - -char* PyString_AsString(PyObject *string) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyString_AsString(string); -} - -PyObject* PyUnicode_FromWideChar(const wchar_t *w, size_t size) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyUnicode_FromWideChar(w, size); -} - -PyObject* PyImport_Import(PyObject *name) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyImport_Import(name); -} - -PyObject* PyBool_FromLong(long v) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyBool_FromLong(v); -} - -PyObject* Py_None() -{ - return PythonSingleton::get()->currentInterpreter()->m_module->Py_None; -} - -PyObject* PyExc_SystemExit() -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyExc_SystemExit; -} - -PyObject* PyExc_TypeError() -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyExc_TypeError; -} - -PyObject* PyType_Type() -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyType_Type; -} - -PyObject* PyProperty_Type() -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyProperty_Type; -} - -void PyErr_Fetch(PyObject **ptype, PyObject **pvalue, PyObject **ptraceback) -{ - PythonSingleton::get()->currentInterpreter()->m_module->PyErr_Fetch(ptype, pvalue, ptraceback); -} - - -void PyErr_NormalizeException(PyObject**exc, PyObject**val, PyObject**tb) -{ - PythonSingleton::get()->currentInterpreter()->m_module->PyErr_NormalizeException(exc, val, tb); -} - -void PyErr_Clear() -{ - PythonSingleton::get()->currentInterpreter()->m_module->PyErr_Clear(); -} - -void PyErr_SetString(PyObject *type, const char *message) -{ - PythonSingleton::get()->currentInterpreter()->m_module->PyErr_SetString(type, message); -} - -size_t PyList_Size(PyObject* list) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyList_Size(list); -} - -PyObject* PyList_GetItem(PyObject *list, size_t index) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyList_GetItem(list, index); -} - -PyObject* PyFile_FromString(char *filename, char *mode) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyFile_FromString(filename, mode); -} - -FILE* PyFile_AsFile(PyObject *pyfile) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyFile_AsFile(pyfile); -} - -PyObject* PyRun_File(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyRun_File(fp, filename, start, globals, locals); -} - -PyObject* __stdcall PyUnicode_FromString(const char* str) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyUnicode_FromString(str); -} - -PyObject* __stdcall PyInstanceMethod_New(PyObject *func) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyInstanceMethod_New(func); -} - -size_t __stdcall PyUnicode_AsWideChar(PyObject *unicode, wchar_t *w, size_t size) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyUnicode_AsWideChar(unicode, w, size); -} - -PyObject* __stdcall PyImport_ImportModule(const char *name) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyImport_ImportModule(name); -} - -PyObject* __stdcall PyImport_AddModule(const char *name) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyImport_AddModule(name); -} - -PyThreadState* __stdcall PyEval_SaveThread() -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyEval_SaveThread(); -} - -void __stdcall PyEval_RestoreThread(PyThreadState *tstate) -{ - PythonSingleton::get()->currentInterpreter()->m_module->PyEval_RestoreThread(tstate); -} - -FILE* _Py_fopen(const char* filename, const char* mode) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->_Py_fopen(filename, mode); -} - -int __stdcall Py_AddPendingCall(int(*func)(void *), void *arg) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->Py_AddPendingCall(func, arg); -} - -PyGILState_STATE __stdcall PyGILState_Ensure() -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyGILState_Ensure(); -} - -void __stdcall PyGILState_Release(PyGILState_STATE state) -{ - PythonSingleton::get()->currentInterpreter()->m_module->PyGILState_Release(state); -} - -PyObject* __stdcall PyDescr_NewMethod(PyObject* type, struct PyMethodDef *meth) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyDescr_NewMethod(type, meth); -} - -size_t __stdcall PyGC_Collect(void) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyGC_Collect(); -} - -bool IsPy3() -{ - return PythonSingleton::get()->currentInterpreter()->m_module->isPy3; -} - -int PyString_Check(PyObject *o) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyObject_IsInstance(o, - PythonSingleton::get()->currentInterpreter()->m_module->PyString_Type ); -} - -int PyUnicode_Check(PyObject *o) -{ - return PythonSingleton::get()->currentInterpreter()->m_module->PyObject_IsInstance(o, - PythonSingleton::get()->currentInterpreter()->m_module->PyUnicode_Type ); -} - diff --git a/pykd_ext/pyinterpret.h b/pykd_ext/pyinterpret.h deleted file mode 100644 index a9fedbb..0000000 --- a/pykd_ext/pyinterpret.h +++ /dev/null @@ -1,69 +0,0 @@ -#pragma once - -#include -#include - -#include "pymodule.h" - -class PythonInterpreter; - -PythonInterpreter* activateInterpreter(bool global = true, int majorVersion = -1, int minorVersion = -1); - - -void releaseInterpretor(PythonInterpreter* interpret); - -struct InterpreterDesc { - int majorVersion; - int minorVersion; - std::string imagePath; -}; - -inline bool operator < (const InterpreterDesc& d1, const InterpreterDesc& d2) -{ - if (d1.majorVersion != d2.majorVersion) - return d1.majorVersion < d2.majorVersion; - - if (d1.minorVersion != d2.minorVersion) - return d1.minorVersion < d2.minorVersion; - - return d1.imagePath < d2.imagePath; -} - -std::list getInstalledInterpreter(); - -void getDefaultInterpreter(int majorVersion, int minorVersion); - -bool isInterpreterLoaded(int majorVersion, int minorVersion); - -void stopAllInterpreter(); - -void checkPykd(); - - -class AutoInterpreter -{ -public: - - explicit AutoInterpreter(bool global = true, int majorVersion = -1, int minorVersion = -1) - { - m_interpreter = activateInterpreter(global, majorVersion, minorVersion); - } - - ~AutoInterpreter() - { - if (m_interpreter) - releaseInterpretor(m_interpreter); - } - -private: - - AutoInterpreter(const AutoInterpreter&) = delete; - - PythonInterpreter* m_interpreter; -}; - - - - - - diff --git a/pykd_ext/pykd_ext_vc120.vcxproj b/pykd_ext/pykd_ext_vc120.vcxproj deleted file mode 100644 index 8d80b39..0000000 --- a/pykd_ext/pykd_ext_vc120.vcxproj +++ /dev/null @@ -1,228 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {583F9A6C-AF6D-45E0-A8F4-290D93611185} - Win32Proj - pykd_bootstrapper - pykd_ext_2.0 - ..\ - true - - - - DynamicLibrary - true - v120_xp - Unicode - - - DynamicLibrary - true - v120_xp - Unicode - - - DynamicLibrary - false - v120_xp - true - Unicode - - - DynamicLibrary - false - v120_xp - true - Unicode - - - - - - - - - - - - - - - - - - 7f4aed3e - - - true - $(ProjectName) - $(SolutionDir)out\$(Platform)\$(Configuration)\ - - - true - $(ProjectName) - $(SolutionDir)out\$(Platform)\$(Configuration)\ - - - false - $(ProjectName) - $(SolutionDir)out\$(Platform)\$(Configuration)\ - - - false - $(ProjectName) - $(SolutionDir)out\$(Platform)\$(Configuration)\ - - - - Use - Level3 - Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_BOOTSTRAPPER_EXPORTS;%(PreprocessorDefinitions) - true - $(ProjectDir)..\kdlibcpp\include; - - - Windows - true - export.def - $(OutDir)pykd$(TargetExt) - comsuppw.lib;%(AdditionalDependencies) - - - - - Use - Level3 - Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_BOOTSTRAPPER_EXPORTS;%(PreprocessorDefinitions) - true - $(ProjectDir)..\kdlibcpp\include; - - - Windows - true - export.def - $(OutDir)pykd$(TargetExt) - comsuppw.lib;%(AdditionalDependencies) - - - - - Level3 - Use - MaxSpeed - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_BOOTSTRAPPER_EXPORTS;%(PreprocessorDefinitions) - true - $(ProjectDir)..\kdlibcpp\include; - MultiThreaded - - - Windows - true - true - true - export.def - $(OutDir)pykd$(TargetExt) - comsuppw.lib;%(AdditionalDependencies) - - - - - Level3 - Use - MaxSpeed - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_BOOTSTRAPPER_EXPORTS;%(PreprocessorDefinitions) - true - $(ProjectDir)..\kdlibcpp\include; - MultiThreaded - - - Windows - true - true - true - export.def - $(OutDir)pykd$(TargetExt) - comsuppw.lib;%(AdditionalDependencies) - - - - - - - - - - - - - - - - - - - false - false - - - - - false - false - - - - - - - - Create - Create - Create - Create - - - - - - - - - - - - - - - - - This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - - \ No newline at end of file diff --git a/pykd_ext/pykd_ext_vc120.vcxproj.filters b/pykd_ext/pykd_ext_vc120.vcxproj.filters deleted file mode 100644 index 6c8784f..0000000 --- a/pykd_ext/pykd_ext_vc120.vcxproj.filters +++ /dev/null @@ -1,79 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Source Files - - - - - Resource Files - - - \ No newline at end of file diff --git a/pykd_ext/pymodule.h b/pykd_ext/pymodule.h deleted file mode 100644 index e0af157..0000000 --- a/pykd_ext/pymodule.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -#include - -#include "pyapi.h" - - - - - diff --git a/pykd_ext/resource.h b/pykd_ext/resource.h deleted file mode 100644 index c3bc570..0000000 --- a/pykd_ext/resource.h +++ /dev/null @@ -1,14 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by version.rc - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 101 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/pykd_ext/stdafx.cpp b/pykd_ext/stdafx.cpp deleted file mode 100644 index 75c83a9..0000000 --- a/pykd_ext/stdafx.cpp +++ /dev/null @@ -1,8 +0,0 @@ -// stdafx.cpp : source file that includes just the standard includes -// pykd_bootstrapper.pch will be the pre-compiled header -// stdafx.obj will contain the pre-compiled type information - -#include "stdafx.h" - -// TODO: reference any additional headers you need in STDAFX.H -// and not in this file diff --git a/pykd_ext/stdafx.h b/pykd_ext/stdafx.h deleted file mode 100644 index 821888c..0000000 --- a/pykd_ext/stdafx.h +++ /dev/null @@ -1,18 +0,0 @@ -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, but -// are changed infrequently -// - -#pragma once - -#include "targetver.h" - -#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers -// Windows Header Files: -#include - -#include - -#define BOOST_PYTHON_STATIC_LIB - -// TODO: reference additional headers your program requires here diff --git a/pykd_ext/targetver.h b/pykd_ext/targetver.h deleted file mode 100644 index 90e767b..0000000 --- a/pykd_ext/targetver.h +++ /dev/null @@ -1,8 +0,0 @@ -#pragma once - -// Including SDKDDKVer.h defines the highest available Windows platform. - -// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and -// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. - -#include diff --git a/pykd_ext/version.h b/pykd_ext/version.h deleted file mode 100644 index 147e498..0000000 --- a/pykd_ext/version.h +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once - -#define PYKDEXT_VERSION_MAJOR 2 -#define PYKDEXT_VERSION_MINOR 0 -#define PYKDEXT_VERSION_SUBVERSION 0 -#define PYKDEXT_VERSION_BUILDNO 16 - -#define __VER_STR2__(x) #x -#define __VER_STR1__(x) __VER_STR2__(x) - -#define PYKDEXT_VERSION_BUILD_COMMA PYKDEXT_VERSION_MAJOR, PYKDEXT_VERSION_MINOR, PYKDEXT_VERSION_SUBVERSION, PYKDEXT_VERSION_BUILDNO -#define PYKDEXT_VERSION_BUILD PYKDEXT_VERSION_MAJOR.PYKDEXT_VERSION_MINOR.PYKDEXT_VERSION_SUBVERSION.PYKDEXT_VERSION_BUILDNO - -#define PYKDEXT_VERSION_BUILD_STR_COMMA __VER_STR1__(PYKDEXT_VERSION_BUILD_COMMA) -#define PYKDEXT_VERSION_BUILD_STR __VER_STR1__(PYKDEXT_VERSION_BUILD) diff --git a/pykd_ext/version.rc b/pykd_ext/version.rc deleted file mode 100644 index d21dc690c2bc4651b7e98d0f484eb7040fd6ac91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5292 zcmd6rSx-|z6vxlAiQnN`UL-1;zW4~VRAQloE|G+!0Sed%t?A;D_}SIpf2PA-dap}G zax5uR0wr-If*uXAqY$KacuWZU#m$8Y>?96WX+O=nt$gb_uhSV|R zQ`$abV_NN-(Yv4@@g-^l`^cI#du)$5W!<$aj1HN-VRhfFtt{+cv-ehUtF?2*t-Esj zM0?wgtYvNMSk?BeX+1l(8lzSEht{wYMq2zH*bXBN`r&+GC|?QaLK|5fxnyO0g_K5i z3;$E3BRRC;`W?UfaJ>tkl1Gj4EoxRHzt_QMCttrWmVchMK5_aO4G+LGM7v2{l~1|> zk-teZ5bM@mA*1E)QP5JLTdp>si?E3qI+B*o;5o9Vsgc#3J2FXF+`vibNy_s2(Ac&; z?wq%{7S`2)>Mpmg$K7jCME4sdD%{zI#xXZsG&+u=07M`zc-wasV)dyovgw#7xUwq-Y6czDb1s@qX6T_({4y@s~P`op|h)lH;T z)01MhX`LG%^POTI@wwT-z~t|2)uG3}DSS>}v9-%_zfKUA?({LLx1*vEtzWf7v6 zOCtK)b5@+6?qg%}C%#B)dA?=wwn=uy6qdE$uJ&RInc!Uy==^VXn!iJ?EHa0)w(*KavwkXCfA>)SM;FjbEqJjq`b=0 z59mUx3^tjmgmJa1UAXG;TO$%Fx+r_>IbXO(U%QhtvR{pBXGCuw3Dz=eA~Mqx;)&vs zGP6bMJIGQytIX{}?SQg9r+Ea9CNmvo+V@I1pxxtS#n+ZQwFS}$pZ>*O;=dXWg?w@x zGks(g=6Z(jn3AWkdAI)(im_hoBBWb(p zBKPr~7M8Kow0_%A)7xo+ZWZT~RwS?Ktyu4oO>$s)DDS~M-WYA%(|mEpcR%??dE#*v ziMUTzA8UT~9$(Cvvoy=|EzX1{wEy}qj@~fYj57T%PLO4JWROK7gvIxL=;F -#include -#include -#include -#include -#include - -#include - -#include "dbgout.h" -#include "arglist.h" -#include "pyinterpret.h" -#include "pyapi.h" -#include "pyclass.h" -#include "version.h" - -////////////////////////////////////////////////////////////////////////////// - -static int defaultMajorVersion = 2; -static int defaultMinorVersion = 7; - -////////////////////////////////////////////////////////////////////////////// - -void handleException(); -std::string getScriptFileName(const std::string &scriptName); -void getPythonVersion(int& majorVersion, int& minorVersion); -void getDefaultPythonVersion(int& majorVersion, int& minorVersion); -void printString(PDEBUG_CLIENT client, ULONG mask, const char* str); - -////////////////////////////////////////////////////////////////////////////// - -class InterruptWatch -{ -public: - - InterruptWatch(PDEBUG_CLIENT client) - { - m_control = client; - m_stopEvent = CreateEvent(NULL, TRUE, FALSE, NULL); - m_thread = CreateThread(NULL, 0, threadRoutine, this, 0, NULL); - } - - ~InterruptWatch() - { - SetEvent(m_stopEvent); - WaitForSingleObject(m_thread, INFINITE); - CloseHandle(m_stopEvent); - CloseHandle(m_thread); - } - - static int quit(void *context) - { - HANDLE quitEvent = (HANDLE)context; - PyErr_SetString(PyExc_SystemExit(), "CTRL+BREAK"); - SetEvent(quitEvent); - return -1; - } - -private: - - static DWORD WINAPI threadRoutine(LPVOID lpParameter) { - return static_cast(lpParameter)->interruptWatchRoutine(); - } - - DWORD InterruptWatch::interruptWatchRoutine() - { - while (WAIT_TIMEOUT == WaitForSingleObject(m_stopEvent, 250)) - { - HRESULT hres = m_control->GetInterrupt(); - if (hres == S_OK) - { - HANDLE quitEvent = CreateEvent(NULL, FALSE, FALSE, NULL); - PyGILState_STATE state = PyGILState_Ensure(); - Py_AddPendingCall(&quit, (void*)quitEvent); - PyGILState_Release(state); - WaitForSingleObject(quitEvent, INFINITE); - CloseHandle(quitEvent); - } - } - - return 0; - } - - HANDLE m_thread; - - HANDLE m_stopEvent; - - CComQIPtr m_control; -}; - -////////////////////////////////////////////////////////////////////////////// - -extern "C" -HRESULT -CALLBACK -DebugExtensionInitialize( - PULONG Version, - PULONG Flags -) -{ - return S_OK; -} - -////////////////////////////////////////////////////////////////////////////// - -extern "C" -VOID -CALLBACK -DebugExtensionUninitialize() -{ - stopAllInterpreter(); -} - -////////////////////////////////////////////////////////////////////////////// - -std::string make_version(int major, int minor) -{ - std::stringstream sstr; - sstr << std::dec << major << '.' << minor; - -#ifdef _WIN64 - - sstr << " x86-64"; - -#else - - sstr << " x86-32"; - -#endif - - return sstr.str(); -} - -extern "C" -HRESULT -CALLBACK -info( - PDEBUG_CLIENT client, - PCSTR args -) -{ - try - { - std::stringstream sstr; - - sstr < interpreterList = getInstalledInterpreter(); - - int defaultMajor; - int defaultMinor; - - getDefaultPythonVersion(defaultMajor, defaultMinor); - - sstr << std::endl << "Installed python:" << std::endl << std::endl; - sstr << std::setw(16) << std::left << "Version:" << std::setw(12) << std::left << "Status: " << std::left << "Image:" << std::endl; - sstr << "------------------------------------------------------------------------------" << std::endl; - if (interpreterList.size() > 0) - { - for (const InterpreterDesc& desc : interpreterList) - { - if ( defaultMajor == desc.majorVersion && defaultMinor == desc.minorVersion) - sstr << "* "; - else - sstr << " "; - - sstr << std::setw(14) << std::left << make_version(desc.majorVersion, desc.minorVersion); - - sstr << std::setw(12) << std::left << (isInterpreterLoaded(desc.majorVersion, desc.minorVersion) ? "Loaded" : "Unloaded"); - - sstr << desc.imagePath << std::endl; - } - } - else - { - sstr << "No python interpreter found" << std::endl; - } - - sstr << std::endl; - - printString(client, DEBUG_OUTPUT_NORMAL, sstr.str().c_str() ); - } - catch(std::exception &e) - { - printString(client, DEBUG_OUTPUT_ERROR, e.what() ); - } - - return S_OK; -} - -////////////////////////////////////////////////////////////////////////////// - -extern "C" -HRESULT -CALLBACK -selectVersion( - PDEBUG_CLIENT client, - PCSTR args -) -{ - Options opts(args); - - int majorVersion = opts.pyMajorVersion; - int minorVersion = opts.pyMinorVersion; - - getPythonVersion(majorVersion, minorVersion); - - if ( opts.pyMajorVersion == majorVersion && opts.pyMinorVersion == minorVersion ) - { - defaultMajorVersion = majorVersion; - defaultMinorVersion = minorVersion; - } - - return S_OK; -} - -////////////////////////////////////////////////////////////////////////////// - -static const char printUsageMsg[] = - "\n" - "usage:\n" - "\n" - "!help\n" - "\tprint this text\n" - "\n" - "!info\n" - "\tlist installed python interpreters\n" - "\n" - "!select version\n" - "\tchange default version of a python interpreter\n" - "\n" - "!py [version] [options] [file]\n" - "\trun python script or REPL\n" - "\n" - "\tVersion:\n" - "\t-2 : use Python2\n" - "\t-2.x : use Python2.x\n" - "\t-3 : use Python3\n" - "\t-3.x : use Python3.x\n" - "\n" - "\tOptions:\n" - "\t-g --global : run code in the common namespace\n" - "\t-l --local : run code in the isolated namespace\n" - "\t-m --module : run module as the __main__ module ( see the python command line option -m )\n" - "\n" - "\tcommand samples:\n" - "\t\"!py\" : run REPL\n" - "\t\"!py --local\" : run REPL in the isolated namespace\n" - "\t\"!py -g script.py 10 \"string\"\" : run a script file with an argument in the commom namespace\n" - "\t\"!py -m module_name\" : run a named module as the __main__\n" - "\n" - "!pip [version] [args]\n" - "\trun pip package manager\n" - "\n" - "\tVersion:\n" - "\t-2 : use Python2\n" - "\t-2.x : use Python2.x\n" - "\t-3 : use Python3\n" - "\t-3.x : use Python3.x\n" - "\n" - "\tpip command samples:\n" - "\t\"pip list\" : show all installed packagies\n" - "\t\"pip install pykd\" : install pykd\n" - "\t\"pip install --upgrade pykd\" : upgrade pykd to the latest version\n" - "\t\"pip show pykd\" : show info about pykd package\n" - ; - - -////////////////////////////////////////////////////////////////////////////// - -extern "C" -HRESULT -CALLBACK -help( - PDEBUG_CLIENT client, - PCSTR args - ) -{ - CComQIPtr control = client; - - control->ControlledOutput( - DEBUG_OUTCTL_AMBIENT_TEXT, - DEBUG_OUTPUT_NORMAL, - "%s", - printUsageMsg - ); - - return S_OK; -} - -////////////////////////////////////////////////////////////////////////////// - - -static const std::regex shebangRe("^#!\\s*python([2,3])(?:\\.(\\d))?$"); - -static volatile long recursiveGuard = 0L; - -extern "C" -HRESULT -CALLBACK -py( - PDEBUG_CLIENT client, - PCSTR args -) -{ - - ULONG oldMask; - client->GetOutputMask(&oldMask); - client->SetOutputMask(DEBUG_OUTPUT_NORMAL|DEBUG_OUTPUT_ERROR|DEBUG_OUTPUT_WARNING|DEBUG_OUTPUT_DEBUGGEE ); - - try { - - if ( 1 < ++recursiveGuard ) - throw std::exception( "can not run !py command recursive\n"); - - Options opts(args); - - if (opts.showHelp) - throw std::exception(printUsageMsg); - - int majorVersion = opts.pyMajorVersion; - int minorVersion = opts.pyMinorVersion; - - std::string scriptFileName; - - if ( opts.args.size() > 0 && !opts.runModule ) - { - scriptFileName = getScriptFileName(opts.args[0]); - if ( scriptFileName.empty() ) - throw std::invalid_argument("script not found\n"); - } - - if ( !opts.runModule && majorVersion == -1 && minorVersion == -1 ) - { - std::ifstream scriptFile(scriptFileName); - - if ( scriptFile.is_open() ) - { - std::string firstline; - std::getline(scriptFile, firstline); - - std::smatch mres; - if (std::regex_match(firstline, mres, shebangRe)) - { - majorVersion = atol(std::string(mres[1].first, mres[1].second).c_str()); - - if (mres[2].matched) - { - minorVersion = atol(std::string(mres[2].first, mres[2].second).c_str()); - } - } - } - } - - getPythonVersion(majorVersion, minorVersion); - - AutoInterpreter autoInterpreter(opts.global, majorVersion, minorVersion); - - PyObjectRef mainMod = PyImport_ImportModule("__main__"); - PyObjectRef globals = PyObject_GetAttrString(mainMod, "__dict__"); - - PyObjectRef dbgOut = make_pyobject(client); - PySys_SetObject("stdout", dbgOut); - - PyObjectRef dbgErr = make_pyobject(client); - PySys_SetObject("stderr", dbgErr); - - PyObjectRef dbgIn = make_pyobject(client); - PySys_SetObject("stdin", dbgIn); - - InterruptWatch interruptWatch(client); - - PyRun_String("import sys\nsys.setrecursionlimit(500)\n", Py_file_input, globals, globals); - - if (opts.args.empty()) - { - PyObjectRef result = PyRun_String("import pykd\nfrom pykd import *\n", Py_file_input, globals, globals); - PyErr_Clear(); - result = PyRun_String("import code\ncode.InteractiveConsole(globals()).interact()\n", Py_file_input, globals, globals); - } - else - { - if (IsPy3()) - { - std::wstring scriptFileNameW = _bstr_t(scriptFileName.c_str()); - - // óñòàíàâèëèâàåì ïèòîíîâñêèå àðãóìåíòû - std::vector argws(opts.args.size()); - - if ( !scriptFileNameW.empty() ) - argws[0] = scriptFileNameW; - else - argws[0] = L""; - - for (size_t i = 1; i < opts.args.size(); ++i) - argws[i] = _bstr_t(opts.args[i].c_str()); - - std::vector pythonArgs(opts.args.size()); - for (size_t i = 0; i < opts.args.size(); ++i) - pythonArgs[i] = const_cast(argws[i].c_str()); - - PySys_SetArgv_Py3((int)opts.args.size(), &pythonArgs[0]); - - if ( opts.runModule ) - { - std::stringstream sstr; - sstr << "runpy.run_module(\"" << opts.args[0] << "\", run_name='__main__', alter_sys=True)" << std::endl; - - PyObjectRef result; - result = PyRun_String("import runpy\n", Py_file_input, globals, globals); - result = PyRun_String(sstr.str().c_str(), Py_file_input, globals, globals); - } - else - { - FILE* fs = _Py_fopen(scriptFileName.c_str(), "r"); - if ( !fs ) - throw std::invalid_argument("script not found\n"); - - PyObjectRef result = PyRun_File(fs, scriptFileName.c_str(), Py_file_input, globals, globals); - } - } - else - { - std::vector pythonArgs(opts.args.size()); - - if ( !scriptFileName.empty() ) - pythonArgs[0] = const_cast(scriptFileName.c_str()); - else - pythonArgs[0] = ""; - - for (size_t i = 1; i < opts.args.size(); ++i) - pythonArgs[i] = const_cast(opts.args[i].c_str()); - - PySys_SetArgv((int)opts.args.size(), &pythonArgs[0]); - - if ( opts.runModule ) - { - std::stringstream sstr; - sstr << "runpy.run_module('" << opts.args[0] << "', run_name='__main__', alter_sys=True)" << std::endl; - - PyObjectRef result; - result = PyRun_String("import runpy\n", Py_file_input, globals, globals); - result = PyRun_String(sstr.str().c_str(), Py_file_input, globals, globals); - } - else - { - PyObjectRef pyfile = PyFile_FromString(const_cast(scriptFileName.c_str()), "r"); - if (!pyfile) - throw std::invalid_argument("script not found\n"); - - FILE *fs = PyFile_AsFile(pyfile); - - PyObjectRef result = PyRun_File(fs, scriptFileName.c_str(), Py_file_input, globals, globals); - } - } - } - - handleException(); - - if ( !opts.global ) - PyDict_Clear(globals); - } - catch (std::exception &e) - { - printString(client, DEBUG_OUTPUT_ERROR, e.what() ); - } - - client->SetOutputMask(oldMask); - - --recursiveGuard; - - return S_OK; -} - -////////////////////////////////////////////////////////////////////////////// - -extern "C" -HRESULT -CALLBACK -pip( - PDEBUG_CLIENT client, - PCSTR args -) -{ - - try { - - if ( 1 < ++recursiveGuard ) - throw std::exception( "can not run !pip command recursive\n"); - - Options opts(args); - - int majorVersion = opts.pyMajorVersion; - int minorVersion = opts.pyMinorVersion; - - getPythonVersion(majorVersion, minorVersion); - - AutoInterpreter autoInterpreter(true, majorVersion, minorVersion); - - PyObjectRef dbgOut = make_pyobject(client); - PySys_SetObject("stdout", dbgOut); - - PyObjectRef dbgErr = make_pyobject(client); - PySys_SetObject("stderr", dbgErr); - - PyObjectRef dbgIn = make_pyobject(client); - PySys_SetObject("stdin", dbgIn); - - PyObjectRef mainName = IsPy3() ? PyUnicode_FromString("__main__") : PyString_FromString("__main__"); - PyObjectRef mainMod = PyImport_Import(mainName); - PyObjectRef globals = PyObject_GetAttrString(mainMod, "__dict__"); - - - std::stringstream sstr; - sstr << "pip.main(["; - for (auto arg : opts.args) - sstr << '\'' << arg << '\'' << ','; - sstr << "])\n"; - - PyObjectRef result; - result = PyRun_String("import pip\n", Py_file_input, globals, globals); - result = PyRun_String("pip.logger.consumers = []\n", Py_file_input, globals, globals); - result = PyRun_String(sstr.str().c_str(), Py_file_input, globals, globals); - - handleException(); - } - catch (std::exception &e) - { - printString(client, DEBUG_OUTPUT_ERROR, e.what() ); - } - - --recursiveGuard; - - return S_OK; -} - -////////////////////////////////////////////////////////////////////////////// - -void handleException() -{ - // îøèáêà â ñêðèïòå - PyObject *errtype = NULL, *errvalue = NULL, *traceback = NULL; - - PyErr_Fetch(&errtype, &errvalue, &traceback); - - PyErr_NormalizeException(&errtype, &errvalue, &traceback); - - if (errtype && errtype != PyExc_SystemExit()) - { - PyObjectRef traceback_module = PyImport_ImportModule("traceback"); - - std::stringstream sstr; - - PyObjectRef format_exception = PyObject_GetAttrString(traceback_module, "format_exception"); - - PyObjectRef args = PyTuple_New(3); - PyTuple_SetItem(args, 0, errtype ? errtype : Py_None()); - PyTuple_SetItem(args, 1, errvalue ? errvalue : Py_None()); - PyTuple_SetItem(args, 2, traceback ? traceback : Py_None()); - - PyObjectRef lst = PyObject_Call(format_exception, args, NULL); - - sstr << std::endl << std::endl; - - for (size_t i = 0; i < PyList_Size(lst); ++i) - { - PyObjectBorrowedRef item = PyList_GetItem(lst, i); - sstr << std::string(convert_from_python(item)) << std::endl; - } - - throw std::exception(sstr.str().c_str()); - } - - if (errtype) Py_DecRef(errtype); - if (errvalue) Py_DecRef(errvalue); - if (traceback) Py_DecRef(traceback); -} - -/////////////////////////////////////////////////////////////////////////////// - -void getPathList( std::list &pathStringLst) -{ - PyObjectBorrowedRef pathLst = PySys_GetObject("path"); - - size_t pathLstSize = PyList_Size(pathLst); - - for (size_t i = 0; i < pathLstSize; i++) - { - PyObjectBorrowedRef pathLstItem = PyList_GetItem(pathLst, i); - - if ( IsPy3() ) - { - std::vector buf(0x10000); - size_t len = buf.size(); - PyUnicode_AsWideChar(pathLstItem, &buf[0], len); - - DWORD attr = GetFileAttributesW(&buf[0]); - if ( attr == INVALID_FILE_ATTRIBUTES || (attr & FILE_ATTRIBUTE_DIRECTORY ) == 0 ) - continue; - - pathStringLst.push_back( std::string(_bstr_t(&buf[0]))); - } - else - { - char* path = PyString_AsString(pathLstItem); - - DWORD attr = GetFileAttributesA(path); - if ( attr == INVALID_FILE_ATTRIBUTES || (attr & FILE_ATTRIBUTE_DIRECTORY ) == 0 ) - continue; - - pathStringLst.push_back(path); - } - } -} - -/////////////////////////////////////////////////////////////////////////////// - -std::string getScriptFileName(const std::string &scriptName) -{ - char* ext = NULL; - - DWORD searchResult = - SearchPathA( - NULL, - scriptName.c_str(), - NULL, - 0, - NULL, - NULL ); - - if ( searchResult == 0 ) - { - ext = ".py"; - - searchResult = - SearchPathA( - NULL, - scriptName.c_str(), - ext, - 0, - NULL, - NULL ); - - if ( searchResult == 0 ) - { - return ""; - } - } - - std::vector pathBuffer(searchResult); - - searchResult = - SearchPathA( - NULL, - scriptName.c_str(), - ext, - pathBuffer.size(), - &pathBuffer.front(), - NULL ); - - return std::string(&pathBuffer.front(), searchResult); -} - -/////////////////////////////////////////////////////////////////////////////// - -void getPythonVersion(int& majorVersion, int& minorVersion) -{ - if (majorVersion == -1 && minorVersion == -1 ) - return getDefaultPythonVersion(majorVersion, minorVersion); - - std::list interpreterList = getInstalledInterpreter(); - - bool found = false; - bool anyMinorVersion = minorVersion == -1; - bool anyMajorVersion = majorVersion == -1; - - if (anyMajorVersion) - { - for (auto interpret : interpreterList) - { - - if (2 == interpret.majorVersion && - anyMinorVersion ? (minorVersion <= interpret.minorVersion) : (minorVersion == interpret.minorVersion)) - { - found = true; - minorVersion = interpret.minorVersion; - } - } - - if (found) - { - majorVersion = 2; - return; - } - } - - for (auto interpret : interpreterList) - { - if (anyMajorVersion ? (majorVersion <= interpret.majorVersion) : (majorVersion==interpret.majorVersion) && - anyMinorVersion ? (minorVersion <= interpret.minorVersion) : (minorVersion == interpret.minorVersion)) - { - found = true; - minorVersion = interpret.minorVersion; - majorVersion = interpret.majorVersion; - } - } - - if (!found) - throw std::exception("failed to find python interpreter\n"); -} - -/////////////////////////////////////////////////////////////////////////////// - -void getDefaultPythonVersion(int& majorVersion, int& minorVersion) -{ - std::list interpreterList = getInstalledInterpreter(); - - bool found = false; - majorVersion = -1; - minorVersion = -1; - - for (auto interpret : interpreterList) - { - if (defaultMajorVersion == interpret.majorVersion && defaultMinorVersion == interpret.minorVersion) - { - majorVersion = defaultMajorVersion; - minorVersion = defaultMinorVersion; - return; - } - } - - for (auto interpret : interpreterList) - { - if (2 == interpret.majorVersion && minorVersion <= interpret.minorVersion ) - { - found = true; - majorVersion = interpret.majorVersion; - minorVersion = interpret.minorVersion; - } - } - - if (found) - return; - - for (auto interpret : interpreterList) - { - if (3 == interpret.majorVersion && minorVersion <= interpret.minorVersion ) - { - found = true; - majorVersion = interpret.majorVersion; - minorVersion = interpret.minorVersion; - } - } - - if (found) - return; - - if (!found) - throw std::exception("failed to find python interpreter\n"); -} - -/////////////////////////////////////////////////////////////////////////////// - -void printString(PDEBUG_CLIENT client, ULONG mask, const char* str) -{ - CComQIPtr control = client; - - ULONG engOpts; - bool prefer_dml = SUCCEEDED(control->GetEngineOptions(&engOpts)) && ( (engOpts & DEBUG_ENGOPT_PREFER_DML ) != 0 ); - - std::stringstream sstr(str); - while( sstr.good() ) - { - std::string line; - std::getline(sstr, line); - - if ( prefer_dml && mask == DEBUG_OUTPUT_ERROR ) - { - control->ControlledOutput( - DEBUG_OUTCTL_AMBIENT_DML, - mask, - "%s\n", - line.c_str() - ); - } - else - { - control->ControlledOutput( - DEBUG_OUTCTL_AMBIENT_TEXT, - mask, - "%s\n", - line.c_str() - ); - } - } - -} - -/////////////////////////////////////////////////////////////////////////////// From d1eb08669ae77b9346cb449d4cb6a2aceb027fac Mon Sep 17 00:00:00 2001 From: Tarasenko Alexander Date: Sun, 15 Apr 2018 15:16:49 +0300 Subject: [PATCH 02/12] remove files in pykd --- ...ages.pykd_vc120.config => packages.config} | 0 pykd/packages.pykd_vc110.config | 12 - pykd/pykd.vcxproj | 523 ++++++++++++- pykd/pykd.vcxproj.filters | 142 ++++ pykd/pykd_vc110.vcxproj | 263 ------- pykd/pykd_vc110.vcxproj.filters | 131 ---- pykd/pykd_vc120.vcxproj | 692 ------------------ pykd/pykd_vc120.vcxproj.filters | 269 ------- 8 files changed, 633 insertions(+), 1399 deletions(-) rename pykd/{packages.pykd_vc120.config => packages.config} (100%) delete mode 100644 pykd/packages.pykd_vc110.config delete mode 100644 pykd/pykd_vc110.vcxproj delete mode 100644 pykd/pykd_vc110.vcxproj.filters delete mode 100644 pykd/pykd_vc120.vcxproj delete mode 100644 pykd/pykd_vc120.vcxproj.filters diff --git a/pykd/packages.pykd_vc120.config b/pykd/packages.config similarity index 100% rename from pykd/packages.pykd_vc120.config rename to pykd/packages.config diff --git a/pykd/packages.pykd_vc110.config b/pykd/packages.pykd_vc110.config deleted file mode 100644 index 9a0ee7a..0000000 --- a/pykd/packages.pykd_vc110.config +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/pykd/pykd.vcxproj b/pykd/pykd.vcxproj index baa3e9d..e656bf6 100644 --- a/pykd/pykd.vcxproj +++ b/pykd/pykd.vcxproj @@ -1,5 +1,5 @@  - + Debug_2.7 @@ -9,6 +9,22 @@ Debug_2.7 x64 + + Debug_3.5 + Win32 + + + Debug_3.5 + x64 + + + Debug_3.6 + Win32 + + + Debug_3.6 + x64 + Release_2.7 Win32 @@ -17,34 +33,145 @@ Release_2.7 x64 + + Release_3.5 + Win32 + + + Release_3.5 + x64 + + + Release_3.6 + Win32 + + + Release_3.6 + x64 + {C4C45791-0201-4406-BC5C-A384B01E3BF5} Win32Proj pykd + pykd + ..\ + true DynamicLibrary true Unicode + v120 + 2.7 + MDd + + + DynamicLibrary + true + Unicode + v120 + 3.5 + MDd + + + DynamicLibrary + true + Unicode + v120 + 3.6 + MDd DynamicLibrary true Unicode + v120 + 2.7 + MDd + + + DynamicLibrary + true + Unicode + v120 + 3.5 + MDd + + + DynamicLibrary + true + Unicode + v120 + 3.6 + MDd DynamicLibrary false true Unicode + v120 + 2.7 + MT + + + DynamicLibrary + false + true + Unicode + v120 + 3.5 + MT + + + DynamicLibrary + false + true + Unicode + v120 + 3.6 + MT DynamicLibrary false true Unicode + v120 + 2.7 + MT + + + DynamicLibrary + false + true + Unicode + v120 + 3.5 + MT + + + DynamicLibrary + false + true + Unicode + v120 + 3.6 + MT + + + v120 + + + v120 + + + v120 + + + v120 @@ -52,33 +179,131 @@ + + + + + + + + + + + + + + + + + + - + + + + + + + + bb9fbdf7 + true .pyd true + $(ProjectName) + $(Platform)\$(Configuration)\ + $(SolutionDir)out\$(Platform)\$(Configuration)\ + + + true + .pyd + true + $(ProjectName) + $(Platform)\$(Configuration)\ + $(SolutionDir)out\$(Platform)\$(Configuration)\ + + + true + .pyd + true + $(ProjectName) + $(Platform)\$(Configuration)\ + $(SolutionDir)out\$(Platform)\$(Configuration)\ true .pyd true + $(ProjectName) + $(SolutionDir)out\$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + true + .pyd + true + $(ProjectName) + $(SolutionDir)out\$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + true + .pyd + true + $(ProjectName) + $(SolutionDir)out\$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ false .pyd + $(ProjectName) + $(Platform)\$(Configuration)\ + $(SolutionDir)out\$(Platform)\$(Configuration)\ + + + false + .pyd + $(ProjectName) + $(Platform)\$(Configuration)\ + $(SolutionDir)out\$(Platform)\$(Configuration)\ + + + false + .pyd + $(ProjectName) + $(Platform)\$(Configuration)\ + $(SolutionDir)out\$(Platform)\$(Configuration)\ false .pyd + $(ProjectName) + $(SolutionDir)out\$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + false + .pyd + $(ProjectName) + $(SolutionDir)out\$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + false + .pyd + $(ProjectName) + $(SolutionDir)out\$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ @@ -86,16 +311,61 @@ Level3 Disabled WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(ProjectDir)..\kdlibcpp\include;$(BOOST_ROOT);$(PYTHON_27_X86_ROOT)\include; + $(SolutionDir)\kdlibcpp\kdlib\include; + MultiThreadedDebugDLL Windows true pykd.def - $(PYTHON_27_X86_ROOT)\libs;$(BOOST_ROOT)\stage_2.7\lib;%(AdditionalLibraryDirectories) + %(AdditionalLibraryDirectories) - copy $(ProjectDir)..\Debug\targetapp.exe $(OutDir)targetapp.exe + copy $(OutDir)..\Debug\targetapp.exe $(OutDir) + + + + + + + + + Use + Level3 + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) + $(SolutionDir)\kdlibcpp\kdlib\include; + + + Windows + true + pykd.def + %(AdditionalLibraryDirectories) + + + copy $(OutDir)..\Debug\targetapp.exe $(OutDir) + + + + + + + + + Use + Level3 + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) + $(SolutionDir)\kdlibcpp\kdlib\include; + + + Windows + true + pykd.def + %(AdditionalLibraryDirectories) + + + copy $(OutDir)..\Debug\targetapp.exe $(OutDir) @@ -108,16 +378,60 @@ Level3 Disabled WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(ProjectDir)..\kdlibcpp\include;$(BOOST_ROOT);$(PYTHON_27_X64_ROOT)\include; + $(SolutionDir)\kdlibcpp\kdlib\include; Windows true pykd.def - $(PYTHON_27_X64_ROOT)\libs;$(BOOST_ROOT)\stage64_2.7\lib;%(AdditionalLibraryDirectories) + %(AdditionalLibraryDirectories) - copy $(ProjectDir)..\Debug\targetapp.exe $(OutDir)targetapp.exe + copy $(OutDir)..\Debug\targetapp.exe $(OutDir) + + + + + + + + + Use + Level3 + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) + $(SolutionDir)\kdlibcpp\kdlib\include; + + + Windows + true + pykd.def + %(AdditionalLibraryDirectories) + + + copy $(OutDir)..\Debug\targetapp.exe $(OutDir) + + + + + + + + + Use + Level3 + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) + $(SolutionDir)\kdlibcpp\kdlib\include; + + + Windows + true + pykd.def + %(AdditionalLibraryDirectories) + + + copy $(OutDir)..\Debug\targetapp.exe $(OutDir) @@ -132,7 +446,8 @@ true true WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(ProjectDir)..\kdlibcpp\include;$(BOOST_ROOT);$(PYTHON_27_X86_ROOT)\include; + $(SolutionDir)\kdlibcpp\kdlib\include; + MultiThreaded Windows @@ -140,8 +455,57 @@ true true pykd.def - $(PYTHON_27_X86_ROOT)\libs;$(BOOST_ROOT)\stage_2.7\lib;%(AdditionalLibraryDirectories) + %(AdditionalLibraryDirectories) + + copy $(OutDir)..\Release\targetapp.exe $(OutDir) + + + + + Level3 + Use + MaxSpeed + true + true + WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) + $(SolutionDir)\kdlibcpp\kdlib\include; + MultiThreaded + + + Windows + true + true + true + pykd.def + %(AdditionalLibraryDirectories) + + + copy $(OutDir)..\Release\targetapp.exe $(OutDir) + + + + + Level3 + Use + MaxSpeed + true + true + WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) + $(SolutionDir)\kdlibcpp\kdlib\include; + MultiThreaded + + + Windows + true + true + true + pykd.def + %(AdditionalLibraryDirectories) + + + copy $(OutDir)..\Release\targetapp.exe $(OutDir) + @@ -151,7 +515,8 @@ true true WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(ProjectDir)..\kdlibcpp\include;$(BOOST_ROOT);$(PYTHON_27_X64_ROOT)\include; + $(SolutionDir)\kdlibcpp\kdlib\include; + MultiThreaded Windows @@ -159,12 +524,62 @@ true true pykd.def - $(PYTHON_27_X64_ROOT)\libs;$(BOOST_ROOT)\stage64_2.7\lib;%(AdditionalLibraryDirectories) + %(AdditionalLibraryDirectories) + + copy $(OutDir)..\Release\targetapp.exe $(OutDir) + + + + + Level3 + Use + MaxSpeed + true + true + WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) + $(SolutionDir)\kdlibcpp\kdlib\include; + MultiThreaded + + + Windows + true + true + true + pykd.def + %(AdditionalLibraryDirectories) + + + copy $(OutDir)..\Release\targetapp.exe $(OutDir) + + + + + Level3 + Use + MaxSpeed + true + true + WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) + $(SolutionDir)\kdlibcpp\kdlib\include; + MultiThreaded + + + Windows + true + true + true + pykd.def + %(AdditionalLibraryDirectories) + + + copy $(OutDir)..\Release\targetapp.exe $(OutDir) + + @@ -173,7 +588,9 @@ + + @@ -186,48 +603,90 @@ - - false - false - - - - - false - false - - - - - + - + + /bigobj %(AdditionalOptions) + /bigobj %(AdditionalOptions) + /bigobj %(AdditionalOptions) + /bigobj %(AdditionalOptions) + /bigobj %(AdditionalOptions) + /bigobj %(AdditionalOptions) + /bigobj %(AdditionalOptions) + /bigobj %(AdditionalOptions) + /bigobj %(AdditionalOptions) + /bigobj %(AdditionalOptions) + /bigobj %(AdditionalOptions) + /bigobj %(AdditionalOptions) + + + Create + Create + Create Create + Create + Create Create + Create + Create Create + Create + Create - - {3e9c538f-f060-4e86-ab7d-d44439615b63} - - - + + Designer + + + + {3e9c538f-f060-4e86-ab7d-d44439615b63} + + + + + + + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pykd/pykd.vcxproj.filters b/pykd/pykd.vcxproj.filters index a814c73..3f4b9b1 100644 --- a/pykd/pykd.vcxproj.filters +++ b/pykd/pykd.vcxproj.filters @@ -75,6 +75,15 @@ Header Files + + Header Files + + + Header Files + + + Header Files + @@ -113,11 +122,144 @@ Source Files + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + Source Files + diff --git a/pykd/pykd_vc110.vcxproj b/pykd/pykd_vc110.vcxproj deleted file mode 100644 index ddba87d..0000000 --- a/pykd/pykd_vc110.vcxproj +++ /dev/null @@ -1,263 +0,0 @@ - - - - - Debug_2.7 - Win32 - - - Debug_2.7 - x64 - - - Release_2.7 - Win32 - - - Release_2.7 - x64 - - - - {C4C45791-0201-4406-BC5C-A384B01E3BF5} - Win32Proj - pykd - pykd - - - - DynamicLibrary - true - Unicode - v110 - - - DynamicLibrary - true - Unicode - v110 - - - DynamicLibrary - false - true - Unicode - v110 - - - DynamicLibrary - false - true - Unicode - v110 - - - - - - - - - - - - - - - - - - - true - .pyd - true - - - true - .pyd - true - - - false - .pyd - - - false - .pyd - - - - Use - Level3 - Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(ProjectDir)..\kdlibcpp\include;$(BOOST_ROOT);$(PYTHON_27_X86_ROOT)\include; - - - Windows - true - pykd.def - %(AdditionalLibraryDirectories) - - - copy $(ProjectDir)..\Debug\targetapp.exe $(OutDir)targetapp.exe - - - - - - - - - Use - Level3 - Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(ProjectDir)..\kdlibcpp\include;$(BOOST_ROOT);$(PYTHON_27_X64_ROOT)\include; - - - Windows - true - pykd.def - %(AdditionalLibraryDirectories) - - - copy $(ProjectDir)..\x64\Debug\targetapp.exe $(OutDir)targetapp.exe - - - - - - - - - Level3 - Use - MaxSpeed - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(ProjectDir)..\kdlibcpp\include;$(BOOST_ROOT);$(PYTHON_27_X86_ROOT)\include; - - - Windows - true - true - true - pykd.def - %(AdditionalLibraryDirectories) - - - - - Level3 - Use - MaxSpeed - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(ProjectDir)..\kdlibcpp\include;$(BOOST_ROOT);$(PYTHON_27_X64_ROOT)\include; - - - Windows - true - true - true - pykd.def - %(AdditionalLibraryDirectories) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - false - false - - - - - false - false - - - - - - - - - - - - - - - Create - Create - Create - Create - - - - - - - - - - - - - {3e9c538f-f060-4e86-ab7d-d44439615b63} - - - - - - - - - - - - - - - - - This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - - - - - - - - - \ No newline at end of file diff --git a/pykd/pykd_vc110.vcxproj.filters b/pykd/pykd_vc110.vcxproj.filters deleted file mode 100644 index 268443f..0000000 --- a/pykd/pykd_vc110.vcxproj.filters +++ /dev/null @@ -1,131 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Source Files - - - - - - Resource Files - - - \ No newline at end of file diff --git a/pykd/pykd_vc120.vcxproj b/pykd/pykd_vc120.vcxproj deleted file mode 100644 index e656bf6..0000000 --- a/pykd/pykd_vc120.vcxproj +++ /dev/null @@ -1,692 +0,0 @@ - - - - - Debug_2.7 - Win32 - - - Debug_2.7 - x64 - - - Debug_3.5 - Win32 - - - Debug_3.5 - x64 - - - Debug_3.6 - Win32 - - - Debug_3.6 - x64 - - - Release_2.7 - Win32 - - - Release_2.7 - x64 - - - Release_3.5 - Win32 - - - Release_3.5 - x64 - - - Release_3.6 - Win32 - - - Release_3.6 - x64 - - - - {C4C45791-0201-4406-BC5C-A384B01E3BF5} - Win32Proj - pykd - pykd - ..\ - true - - - - DynamicLibrary - true - Unicode - v120 - 2.7 - MDd - - - DynamicLibrary - true - Unicode - v120 - 3.5 - MDd - - - DynamicLibrary - true - Unicode - v120 - 3.6 - MDd - - - DynamicLibrary - true - Unicode - v120 - 2.7 - MDd - - - DynamicLibrary - true - Unicode - v120 - 3.5 - MDd - - - DynamicLibrary - true - Unicode - v120 - 3.6 - MDd - - - DynamicLibrary - false - true - Unicode - v120 - 2.7 - MT - - - DynamicLibrary - false - true - Unicode - v120 - 3.5 - MT - - - DynamicLibrary - false - true - Unicode - v120 - 3.6 - MT - - - DynamicLibrary - false - true - Unicode - v120 - 2.7 - MT - - - DynamicLibrary - false - true - Unicode - v120 - 3.5 - MT - - - DynamicLibrary - false - true - Unicode - v120 - 3.6 - MT - - - v120 - - - v120 - - - v120 - - - v120 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bb9fbdf7 - - - true - .pyd - true - $(ProjectName) - $(Platform)\$(Configuration)\ - $(SolutionDir)out\$(Platform)\$(Configuration)\ - - - true - .pyd - true - $(ProjectName) - $(Platform)\$(Configuration)\ - $(SolutionDir)out\$(Platform)\$(Configuration)\ - - - true - .pyd - true - $(ProjectName) - $(Platform)\$(Configuration)\ - $(SolutionDir)out\$(Platform)\$(Configuration)\ - - - true - .pyd - true - $(ProjectName) - $(SolutionDir)out\$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - - - true - .pyd - true - $(ProjectName) - $(SolutionDir)out\$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - - - true - .pyd - true - $(ProjectName) - $(SolutionDir)out\$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - - - false - .pyd - $(ProjectName) - $(Platform)\$(Configuration)\ - $(SolutionDir)out\$(Platform)\$(Configuration)\ - - - false - .pyd - $(ProjectName) - $(Platform)\$(Configuration)\ - $(SolutionDir)out\$(Platform)\$(Configuration)\ - - - false - .pyd - $(ProjectName) - $(Platform)\$(Configuration)\ - $(SolutionDir)out\$(Platform)\$(Configuration)\ - - - false - .pyd - $(ProjectName) - $(SolutionDir)out\$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - - - false - .pyd - $(ProjectName) - $(SolutionDir)out\$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - - - false - .pyd - $(ProjectName) - $(SolutionDir)out\$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - - - - Use - Level3 - Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)\kdlibcpp\kdlib\include; - MultiThreadedDebugDLL - - - Windows - true - pykd.def - %(AdditionalLibraryDirectories) - - - copy $(OutDir)..\Debug\targetapp.exe $(OutDir) - - - - - - - - - Use - Level3 - Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)\kdlibcpp\kdlib\include; - - - Windows - true - pykd.def - %(AdditionalLibraryDirectories) - - - copy $(OutDir)..\Debug\targetapp.exe $(OutDir) - - - - - - - - - Use - Level3 - Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)\kdlibcpp\kdlib\include; - - - Windows - true - pykd.def - %(AdditionalLibraryDirectories) - - - copy $(OutDir)..\Debug\targetapp.exe $(OutDir) - - - - - - - - - Use - Level3 - Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)\kdlibcpp\kdlib\include; - - - Windows - true - pykd.def - %(AdditionalLibraryDirectories) - - - copy $(OutDir)..\Debug\targetapp.exe $(OutDir) - - - - - - - - - Use - Level3 - Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)\kdlibcpp\kdlib\include; - - - Windows - true - pykd.def - %(AdditionalLibraryDirectories) - - - copy $(OutDir)..\Debug\targetapp.exe $(OutDir) - - - - - - - - - Use - Level3 - Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)\kdlibcpp\kdlib\include; - - - Windows - true - pykd.def - %(AdditionalLibraryDirectories) - - - copy $(OutDir)..\Debug\targetapp.exe $(OutDir) - - - - - - - - - Level3 - Use - MaxSpeed - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)\kdlibcpp\kdlib\include; - MultiThreaded - - - Windows - true - true - true - pykd.def - %(AdditionalLibraryDirectories) - - - copy $(OutDir)..\Release\targetapp.exe $(OutDir) - - - - - Level3 - Use - MaxSpeed - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)\kdlibcpp\kdlib\include; - MultiThreaded - - - Windows - true - true - true - pykd.def - %(AdditionalLibraryDirectories) - - - copy $(OutDir)..\Release\targetapp.exe $(OutDir) - - - - - Level3 - Use - MaxSpeed - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)\kdlibcpp\kdlib\include; - MultiThreaded - - - Windows - true - true - true - pykd.def - %(AdditionalLibraryDirectories) - - - copy $(OutDir)..\Release\targetapp.exe $(OutDir) - - - - - Level3 - Use - MaxSpeed - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)\kdlibcpp\kdlib\include; - MultiThreaded - - - Windows - true - true - true - pykd.def - %(AdditionalLibraryDirectories) - - - copy $(OutDir)..\Release\targetapp.exe $(OutDir) - - - - - Level3 - Use - MaxSpeed - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)\kdlibcpp\kdlib\include; - MultiThreaded - - - Windows - true - true - true - pykd.def - %(AdditionalLibraryDirectories) - - - copy $(OutDir)..\Release\targetapp.exe $(OutDir) - - - - - Level3 - Use - MaxSpeed - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)\kdlibcpp\kdlib\include; - MultiThreaded - - - Windows - true - true - true - pykd.def - %(AdditionalLibraryDirectories) - - - copy $(OutDir)..\Release\targetapp.exe $(OutDir) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /bigobj %(AdditionalOptions) - /bigobj %(AdditionalOptions) - /bigobj %(AdditionalOptions) - /bigobj %(AdditionalOptions) - /bigobj %(AdditionalOptions) - /bigobj %(AdditionalOptions) - /bigobj %(AdditionalOptions) - /bigobj %(AdditionalOptions) - /bigobj %(AdditionalOptions) - /bigobj %(AdditionalOptions) - /bigobj %(AdditionalOptions) - /bigobj %(AdditionalOptions) - - - - - - - - Create - Create - Create - Create - Create - Create - Create - Create - Create - Create - Create - Create - - - - - - Designer - - - - - - - - - {3e9c538f-f060-4e86-ab7d-d44439615b63} - - - - - - - - - - - - - - - - - - - - This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/pykd/pykd_vc120.vcxproj.filters b/pykd/pykd_vc120.vcxproj.filters deleted file mode 100644 index 3f4b9b1..0000000 --- a/pykd/pykd_vc120.vcxproj.filters +++ /dev/null @@ -1,269 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Source Files - - - - - - Resource Files - - - \ No newline at end of file From 48c227f9e1379d9ff446ff29a37ad7091eeae7f1 Mon Sep 17 00:00:00 2001 From: Tarasenko Alexander Date: Sun, 15 Apr 2018 22:16:04 +0300 Subject: [PATCH 03/12] upgrade pykd project --- kdlibcpp | 2 +- pykd.sln | 69 +++---------------- pykd/packages.config | 4 +- pykd/pykd.vcxproj | 43 ++++++------ pykd/pykd.vcxproj.filters | 128 +---------------------------------- pykd/pykdver.h | 4 +- setup/setup.pyproj | 1 + snippets/snippets.pyproj | 6 +- test/scripts/pykdtest.pyproj | 8 +-- 9 files changed, 42 insertions(+), 223 deletions(-) diff --git a/kdlibcpp b/kdlibcpp index 8d28d97..bb585ed 160000 --- a/kdlibcpp +++ b/kdlibcpp @@ -1 +1 @@ -Subproject commit 8d28d97eaa231f1c7c8147e9a54d71344deeea21 +Subproject commit bb585ed1a55f75c50688d803f19fdfc1733b58c6 diff --git a/pykd.sln b/pykd.sln index d46d335..203e498 100644 --- a/pykd.sln +++ b/pykd.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.40629.0 +# Visual Studio 15 +VisualStudioVersion = 15.0.27428.2037 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{5A3C2DA6-AE91-4025-AC03-A58BD03CEBCD}" EndProject @@ -20,14 +20,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "um", "um", "{EEFC9510-DFA7- samples\um\virtalloc.py = samples\um\virtalloc.py EndProjectSection EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{D1F1222A-A12B-4FD7-91A0-0AB6393A3169}" - ProjectSection(SolutionItems) = preProject - .nuget\NuGet.Config = .nuget\NuGet.Config - .nuget\NuGet.exe = .nuget\NuGet.exe - .nuget\NuGet.targets = .nuget\NuGet.targets - .nuget\packages.config = .nuget\packages.config - EndProjectSection -EndProject Project("{888888A0-9F3D-457C-B088-3A5042F75D52}") = "pykdtest", "test\scripts\pykdtest.pyproj", "{3F0BE77E-19B0-4192-B432-44A25805BCB8}" ProjectSection(ProjectDependencies) = postProject {C4C45791-0201-4406-BC5C-A384B01E3BF5} = {C4C45791-0201-4406-BC5C-A384B01E3BF5} @@ -37,18 +29,14 @@ Project("{888888A0-9F3D-457C-B088-3A5042F75D52}") = "snippets", "snippets\snippe EndProject Project("{888888A0-9F3D-457C-B088-3A5042F75D52}") = "setup", "setup\setup.pyproj", "{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "kdlib", "kdlibcpp\kdlib\source\kdlib_vc120.vcxproj", "{3E9C538F-F060-4E86-AB7D-D44439615B63}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "kdlib", "kdlibcpp\kdlib\source\kdlib.vcxproj", "{3E9C538F-F060-4E86-AB7D-D44439615B63}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pykd", "pykd\pykd_vc120.vcxproj", "{C4C45791-0201-4406-BC5C-A384B01E3BF5}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pykd", "pykd\pykd.vcxproj", "{C4C45791-0201-4406-BC5C-A384B01E3BF5}" ProjectSection(ProjectDependencies) = postProject {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF} = {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "targetapp", "kdlibcpp\kdlib\tests\targetapp\targetapp_vc120.vcxproj", "{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pykd_ext", "pykd_bootstrapper\pykd_bootstrapper_vc120.vcxproj", "{CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pykd_ext_2.0", "pykd_ext\pykd_ext_vc120.vcxproj", "{583F9A6C-AF6D-45E0-A8F4-290D93611185}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "targetapp", "kdlibcpp\kdlib\tests\targetapp\targetapp.vcxproj", "{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -175,50 +163,6 @@ Global {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.6|Win32.Build.0 = Release|Win32 {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.6|x64.ActiveCfg = Release|x64 {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.6|x64.Build.0 = Release|x64 - {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Debug_2.7|Win32.ActiveCfg = Debug_2.7|Win32 - {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Debug_2.7|Win32.Build.0 = Debug_2.7|Win32 - {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Debug_2.7|x64.ActiveCfg = Debug_2.7|x64 - {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Debug_2.7|x64.Build.0 = Debug_2.7|x64 - {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Debug_3.5|Win32.ActiveCfg = Debug_2.7|Win32 - {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Debug_3.5|Win32.Build.0 = Debug_2.7|Win32 - {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Debug_3.5|x64.ActiveCfg = Debug_2.7|x64 - {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Debug_3.5|x64.Build.0 = Debug_2.7|x64 - {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Debug_3.6|Win32.ActiveCfg = Debug_2.7|Win32 - {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Debug_3.6|x64.ActiveCfg = Debug_2.7|x64 - {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Release_2.7|Win32.ActiveCfg = Release_2.7|Win32 - {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Release_2.7|Win32.Build.0 = Release_2.7|Win32 - {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Release_2.7|x64.ActiveCfg = Release_2.7|x64 - {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Release_2.7|x64.Build.0 = Release_2.7|x64 - {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Release_3.5|Win32.ActiveCfg = Release_2.7|Win32 - {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Release_3.5|Win32.Build.0 = Release_2.7|Win32 - {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Release_3.5|x64.ActiveCfg = Release_2.7|x64 - {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Release_3.5|x64.Build.0 = Release_2.7|x64 - {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Release_3.6|Win32.ActiveCfg = Release_2.7|Win32 - {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Release_3.6|x64.ActiveCfg = Release_2.7|x64 - {583F9A6C-AF6D-45E0-A8F4-290D93611185}.Debug_2.7|Win32.ActiveCfg = Debug|Win32 - {583F9A6C-AF6D-45E0-A8F4-290D93611185}.Debug_2.7|Win32.Build.0 = Debug|Win32 - {583F9A6C-AF6D-45E0-A8F4-290D93611185}.Debug_2.7|x64.ActiveCfg = Debug|x64 - {583F9A6C-AF6D-45E0-A8F4-290D93611185}.Debug_2.7|x64.Build.0 = Debug|x64 - {583F9A6C-AF6D-45E0-A8F4-290D93611185}.Debug_3.5|Win32.ActiveCfg = Debug|Win32 - {583F9A6C-AF6D-45E0-A8F4-290D93611185}.Debug_3.5|Win32.Build.0 = Debug|Win32 - {583F9A6C-AF6D-45E0-A8F4-290D93611185}.Debug_3.5|x64.ActiveCfg = Debug|x64 - {583F9A6C-AF6D-45E0-A8F4-290D93611185}.Debug_3.5|x64.Build.0 = Debug|x64 - {583F9A6C-AF6D-45E0-A8F4-290D93611185}.Debug_3.6|Win32.ActiveCfg = Debug|Win32 - {583F9A6C-AF6D-45E0-A8F4-290D93611185}.Debug_3.6|Win32.Build.0 = Debug|Win32 - {583F9A6C-AF6D-45E0-A8F4-290D93611185}.Debug_3.6|x64.ActiveCfg = Debug|x64 - {583F9A6C-AF6D-45E0-A8F4-290D93611185}.Debug_3.6|x64.Build.0 = Debug|x64 - {583F9A6C-AF6D-45E0-A8F4-290D93611185}.Release_2.7|Win32.ActiveCfg = Release|Win32 - {583F9A6C-AF6D-45E0-A8F4-290D93611185}.Release_2.7|Win32.Build.0 = Release|Win32 - {583F9A6C-AF6D-45E0-A8F4-290D93611185}.Release_2.7|x64.ActiveCfg = Release|x64 - {583F9A6C-AF6D-45E0-A8F4-290D93611185}.Release_2.7|x64.Build.0 = Release|x64 - {583F9A6C-AF6D-45E0-A8F4-290D93611185}.Release_3.5|Win32.ActiveCfg = Release|Win32 - {583F9A6C-AF6D-45E0-A8F4-290D93611185}.Release_3.5|Win32.Build.0 = Release|Win32 - {583F9A6C-AF6D-45E0-A8F4-290D93611185}.Release_3.5|x64.ActiveCfg = Release|x64 - {583F9A6C-AF6D-45E0-A8F4-290D93611185}.Release_3.5|x64.Build.0 = Release|x64 - {583F9A6C-AF6D-45E0-A8F4-290D93611185}.Release_3.6|Win32.ActiveCfg = Release|Win32 - {583F9A6C-AF6D-45E0-A8F4-290D93611185}.Release_3.6|Win32.Build.0 = Release|Win32 - {583F9A6C-AF6D-45E0-A8F4-290D93611185}.Release_3.6|x64.ActiveCfg = Release|x64 - {583F9A6C-AF6D-45E0-A8F4-290D93611185}.Release_3.6|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -229,4 +173,7 @@ Global {6471FEDC-3129-410F-BFFC-4BC89707E5EC} = {AAB21DD2-B0EE-493E-8415-5195F18879EB} {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF} = {5A3C2DA6-AE91-4025-AC03-A58BD03CEBCD} EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {23D3DF9E-C3F8-476E-8B59-440641E1B2D6} + EndGlobalSection EndGlobal diff --git a/pykd/packages.config b/pykd/packages.config index 01665ca..f040cb9 100644 --- a/pykd/packages.config +++ b/pykd/packages.config @@ -9,6 +9,6 @@ - - + + diff --git a/pykd/pykd.vcxproj b/pykd/pykd.vcxproj index e656bf6..f7f637a 100644 --- a/pykd/pykd.vcxproj +++ b/pykd/pykd.vcxproj @@ -1,5 +1,5 @@  - + Debug_2.7 @@ -57,13 +57,14 @@ pykd ..\ true + 10.0.16299.0 DynamicLibrary true Unicode - v120 + v141 2.7 MDd @@ -71,7 +72,7 @@ DynamicLibrary true Unicode - v120 + v141 3.5 MDd @@ -79,7 +80,7 @@ DynamicLibrary true Unicode - v120 + v141 3.6 MDd @@ -87,7 +88,7 @@ DynamicLibrary true Unicode - v120 + v141 2.7 MDd @@ -95,7 +96,7 @@ DynamicLibrary true Unicode - v120 + v141 3.5 MDd @@ -103,7 +104,7 @@ DynamicLibrary true Unicode - v120 + v141 3.6 MDd @@ -112,7 +113,7 @@ false true Unicode - v120 + v141 2.7 MT @@ -139,7 +140,7 @@ false true Unicode - v120 + v141 2.7 MT @@ -162,16 +163,16 @@ MT - v120 + v141 - v120 + v141 - v120 + v141 - v120 + v141 @@ -644,22 +645,19 @@ - - Designer - + - + {3e9c538f-f060-4e86-ab7d-d44439615b63} - @@ -669,15 +667,14 @@ - - + + This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - @@ -686,7 +683,7 @@ - - + + \ No newline at end of file diff --git a/pykd/pykd.vcxproj.filters b/pykd/pykd.vcxproj.filters index 3f4b9b1..f6c5649 100644 --- a/pykd/pykd.vcxproj.filters +++ b/pykd/pykd.vcxproj.filters @@ -122,132 +122,6 @@ Source Files - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - Source Files @@ -259,7 +133,7 @@ Source Files - + diff --git a/pykd/pykdver.h b/pykd/pykdver.h index 3559c32..6638aa4 100644 --- a/pykd/pykdver.h +++ b/pykd/pykdver.h @@ -1,8 +1,8 @@ #define PYKD_VERSION_MAJOR 0 #define PYKD_VERSION_MINOR 3 -#define PYKD_VERSION_SUBVERSION 3 -#define PYKD_VERSION_BUILDNO 3 +#define PYKD_VERSION_SUBVERSION 4 +#define PYKD_VERSION_BUILDNO 0 #define __VER_STR2__(x) #x #define __VER_STR1__(x) __VER_STR2__(x) diff --git a/setup/setup.pyproj b/setup/setup.pyproj index e82d780..c2c64df 100644 --- a/setup/setup.pyproj +++ b/setup/setup.pyproj @@ -30,4 +30,5 @@ + \ No newline at end of file diff --git a/snippets/snippets.pyproj b/snippets/snippets.pyproj index f0b0032..87b61c3 100644 --- a/snippets/snippets.pyproj +++ b/snippets/snippets.pyproj @@ -12,8 +12,7 @@ 10.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) False - {2af0f10d-7135-4994-9156-5d01c9c11b7e} - 2.7 + Global|PythonCore|2.7-32 Standard Python launcher -d "C:\dumps\memory.dmp" -p "name=='avp.exe'" -m "name=='klif'" --wow64=true @@ -44,7 +43,8 @@ - + + \ No newline at end of file diff --git a/test/scripts/pykdtest.pyproj b/test/scripts/pykdtest.pyproj index 61f3761..98caed6 100644 --- a/test/scripts/pykdtest.pyproj +++ b/test/scripts/pykdtest.pyproj @@ -19,8 +19,7 @@ False False - {9a7a9026-48c1-4688-9d5d-e5699d47d074} - 2.7 + Global|PythonCore|2.7 true @@ -59,8 +58,9 @@ - - + + + \ No newline at end of file From c3ce6bbf226ba14a18da3c41f7332c2533df79a9 Mon Sep 17 00:00:00 2001 From: Tarasenko Alexander Date: Wed, 25 Apr 2018 00:44:13 +0300 Subject: [PATCH 04/12] new boost support --- kdlibcpp | 2 +- pykd/boost.python/boost_python-src.dict.cpp | 5 + pykd/boost.python/boost_python-src.errors.cpp | 5 + pykd/boost.python/boost_python-src.exec.cpp | 5 + pykd/boost.python/boost_python-src.import.cpp | 5 + pykd/boost.python/boost_python-src.list.cpp | 5 + pykd/boost.python/boost_python-src.long.cpp | 5 + pykd/boost.python/boost_python-src.module.cpp | 5 + .../boost_python-src.object_operators.cpp | 5 + .../boost_python-src.object_protocol.cpp | 5 + pykd/boost.python/boost_python-src.slice.cpp | 5 + pykd/boost.python/boost_python-src.str.cpp | 5 + pykd/boost.python/boost_python-src.tuple.cpp | 5 + .../boost.python/boost_python-src.wrapper.cpp | 5 + .../converter/arg_to_python_base.cpp | 28 + ...ython-src.converter.arg_to_python_base.cpp | 5 + ...ython-src.converter.builtin_converters.cpp | 5 + ...boost_python-src.converter.from_python.cpp | 5 + .../boost_python-src.converter.registry.cpp | 5 + .../boost_python-src.converter.type_id.cpp | 5 + .../converter/builtin_converters.cpp | 592 +++++++++++++ pykd/boost.python/converter/from_python.cpp | 303 +++++++ pykd/boost.python/converter/registry.cpp | 306 +++++++ pykd/boost.python/converter/type_id.cpp | 212 +++++ pykd/boost.python/dict.cpp | 184 ++++ pykd/boost.python/errors.cpp | 105 +++ pykd/boost.python/exec.cpp | 129 +++ pykd/boost.python/fabscript | 58 ++ pykd/boost.python/import.cpp | 25 + pykd/boost.python/list.cpp | 170 ++++ pykd/boost.python/long.cpp | 39 + pykd/boost.python/module.cpp | 73 ++ .../object/boost_python-src.object.class.cpp | 5 + .../object/boost_python-src.object.enum.cpp | 5 + .../boost_python-src.object.function.cpp | 5 + ...thon-src.object.function_doc_signature.cpp | 5 + .../boost_python-src.object.inheritance.cpp | 5 + .../boost_python-src.object.iterator.cpp | 5 + .../boost_python-src.object.life_support.cpp | 5 + ...boost_python-src.object.pickle_support.cpp | 5 + .../boost_python-src.object.stl_iterator.cpp | 5 + pykd/boost.python/object/class.cpp | 764 +++++++++++++++++ pykd/boost.python/object/enum.cpp | 252 ++++++ pykd/boost.python/object/function.cpp | 793 ++++++++++++++++++ .../object/function_doc_signature.cpp | 344 ++++++++ pykd/boost.python/object/inheritance.cpp | 495 +++++++++++ pykd/boost.python/object/iterator.cpp | 39 + pykd/boost.python/object/life_support.cpp | 121 +++ pykd/boost.python/object/pickle_support.cpp | 78 ++ pykd/boost.python/object/stl_iterator.cpp | 48 ++ pykd/boost.python/object_operators.cpp | 85 ++ pykd/boost.python/object_protocol.cpp | 197 +++++ pykd/boost.python/slice.cpp | 37 + pykd/boost.python/str.cpp | 419 +++++++++ pykd/boost.python/tuple.cpp | 35 + pykd/boost.python/wrapper.cpp | 66 ++ pykd/packages.config | 13 +- pykd/pykd.vcxproj | 472 ++++++++++- pykd/pykd.vcxproj.filters | 183 ++++ test/scripts/pykdtest.pyproj | 5 +- 60 files changed, 6752 insertions(+), 55 deletions(-) create mode 100644 pykd/boost.python/boost_python-src.dict.cpp create mode 100644 pykd/boost.python/boost_python-src.errors.cpp create mode 100644 pykd/boost.python/boost_python-src.exec.cpp create mode 100644 pykd/boost.python/boost_python-src.import.cpp create mode 100644 pykd/boost.python/boost_python-src.list.cpp create mode 100644 pykd/boost.python/boost_python-src.long.cpp create mode 100644 pykd/boost.python/boost_python-src.module.cpp create mode 100644 pykd/boost.python/boost_python-src.object_operators.cpp create mode 100644 pykd/boost.python/boost_python-src.object_protocol.cpp create mode 100644 pykd/boost.python/boost_python-src.slice.cpp create mode 100644 pykd/boost.python/boost_python-src.str.cpp create mode 100644 pykd/boost.python/boost_python-src.tuple.cpp create mode 100644 pykd/boost.python/boost_python-src.wrapper.cpp create mode 100644 pykd/boost.python/converter/arg_to_python_base.cpp create mode 100644 pykd/boost.python/converter/boost_python-src.converter.arg_to_python_base.cpp create mode 100644 pykd/boost.python/converter/boost_python-src.converter.builtin_converters.cpp create mode 100644 pykd/boost.python/converter/boost_python-src.converter.from_python.cpp create mode 100644 pykd/boost.python/converter/boost_python-src.converter.registry.cpp create mode 100644 pykd/boost.python/converter/boost_python-src.converter.type_id.cpp create mode 100644 pykd/boost.python/converter/builtin_converters.cpp create mode 100644 pykd/boost.python/converter/from_python.cpp create mode 100644 pykd/boost.python/converter/registry.cpp create mode 100644 pykd/boost.python/converter/type_id.cpp create mode 100644 pykd/boost.python/dict.cpp create mode 100644 pykd/boost.python/errors.cpp create mode 100644 pykd/boost.python/exec.cpp create mode 100644 pykd/boost.python/fabscript create mode 100644 pykd/boost.python/import.cpp create mode 100644 pykd/boost.python/list.cpp create mode 100644 pykd/boost.python/long.cpp create mode 100644 pykd/boost.python/module.cpp create mode 100644 pykd/boost.python/object/boost_python-src.object.class.cpp create mode 100644 pykd/boost.python/object/boost_python-src.object.enum.cpp create mode 100644 pykd/boost.python/object/boost_python-src.object.function.cpp create mode 100644 pykd/boost.python/object/boost_python-src.object.function_doc_signature.cpp create mode 100644 pykd/boost.python/object/boost_python-src.object.inheritance.cpp create mode 100644 pykd/boost.python/object/boost_python-src.object.iterator.cpp create mode 100644 pykd/boost.python/object/boost_python-src.object.life_support.cpp create mode 100644 pykd/boost.python/object/boost_python-src.object.pickle_support.cpp create mode 100644 pykd/boost.python/object/boost_python-src.object.stl_iterator.cpp create mode 100644 pykd/boost.python/object/class.cpp create mode 100644 pykd/boost.python/object/enum.cpp create mode 100644 pykd/boost.python/object/function.cpp create mode 100644 pykd/boost.python/object/function_doc_signature.cpp create mode 100644 pykd/boost.python/object/inheritance.cpp create mode 100644 pykd/boost.python/object/iterator.cpp create mode 100644 pykd/boost.python/object/life_support.cpp create mode 100644 pykd/boost.python/object/pickle_support.cpp create mode 100644 pykd/boost.python/object/stl_iterator.cpp create mode 100644 pykd/boost.python/object_operators.cpp create mode 100644 pykd/boost.python/object_protocol.cpp create mode 100644 pykd/boost.python/slice.cpp create mode 100644 pykd/boost.python/str.cpp create mode 100644 pykd/boost.python/tuple.cpp create mode 100644 pykd/boost.python/wrapper.cpp diff --git a/kdlibcpp b/kdlibcpp index bb585ed..e1636b6 160000 --- a/kdlibcpp +++ b/kdlibcpp @@ -1 +1 @@ -Subproject commit bb585ed1a55f75c50688d803f19fdfc1733b58c6 +Subproject commit e1636b672d7fe886da7ae76587d4fbcef9f78a29 diff --git a/pykd/boost.python/boost_python-src.dict.cpp b/pykd/boost.python/boost_python-src.dict.cpp new file mode 100644 index 0000000..0134390 --- /dev/null +++ b/pykd/boost.python/boost_python-src.dict.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "dict.cpp" diff --git a/pykd/boost.python/boost_python-src.errors.cpp b/pykd/boost.python/boost_python-src.errors.cpp new file mode 100644 index 0000000..2e07ffd --- /dev/null +++ b/pykd/boost.python/boost_python-src.errors.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "errors.cpp" diff --git a/pykd/boost.python/boost_python-src.exec.cpp b/pykd/boost.python/boost_python-src.exec.cpp new file mode 100644 index 0000000..ea11bdb --- /dev/null +++ b/pykd/boost.python/boost_python-src.exec.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "exec.cpp" diff --git a/pykd/boost.python/boost_python-src.import.cpp b/pykd/boost.python/boost_python-src.import.cpp new file mode 100644 index 0000000..cb15f74 --- /dev/null +++ b/pykd/boost.python/boost_python-src.import.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "import.cpp" diff --git a/pykd/boost.python/boost_python-src.list.cpp b/pykd/boost.python/boost_python-src.list.cpp new file mode 100644 index 0000000..4ef9dbf --- /dev/null +++ b/pykd/boost.python/boost_python-src.list.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "list.cpp" diff --git a/pykd/boost.python/boost_python-src.long.cpp b/pykd/boost.python/boost_python-src.long.cpp new file mode 100644 index 0000000..a1f9e37 --- /dev/null +++ b/pykd/boost.python/boost_python-src.long.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "long.cpp" diff --git a/pykd/boost.python/boost_python-src.module.cpp b/pykd/boost.python/boost_python-src.module.cpp new file mode 100644 index 0000000..470e296 --- /dev/null +++ b/pykd/boost.python/boost_python-src.module.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "module.cpp" diff --git a/pykd/boost.python/boost_python-src.object_operators.cpp b/pykd/boost.python/boost_python-src.object_operators.cpp new file mode 100644 index 0000000..81acc34 --- /dev/null +++ b/pykd/boost.python/boost_python-src.object_operators.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "object_operators.cpp" diff --git a/pykd/boost.python/boost_python-src.object_protocol.cpp b/pykd/boost.python/boost_python-src.object_protocol.cpp new file mode 100644 index 0000000..cafe3ea --- /dev/null +++ b/pykd/boost.python/boost_python-src.object_protocol.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "object_protocol.cpp" diff --git a/pykd/boost.python/boost_python-src.slice.cpp b/pykd/boost.python/boost_python-src.slice.cpp new file mode 100644 index 0000000..c8d7ffe --- /dev/null +++ b/pykd/boost.python/boost_python-src.slice.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "slice.cpp" diff --git a/pykd/boost.python/boost_python-src.str.cpp b/pykd/boost.python/boost_python-src.str.cpp new file mode 100644 index 0000000..1e7300c --- /dev/null +++ b/pykd/boost.python/boost_python-src.str.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "str.cpp" diff --git a/pykd/boost.python/boost_python-src.tuple.cpp b/pykd/boost.python/boost_python-src.tuple.cpp new file mode 100644 index 0000000..045db47 --- /dev/null +++ b/pykd/boost.python/boost_python-src.tuple.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "tuple.cpp" diff --git a/pykd/boost.python/boost_python-src.wrapper.cpp b/pykd/boost.python/boost_python-src.wrapper.cpp new file mode 100644 index 0000000..75b1f4d --- /dev/null +++ b/pykd/boost.python/boost_python-src.wrapper.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "wrapper.cpp" diff --git a/pykd/boost.python/converter/arg_to_python_base.cpp b/pykd/boost.python/converter/arg_to_python_base.cpp new file mode 100644 index 0000000..d872314 --- /dev/null +++ b/pykd/boost.python/converter/arg_to_python_base.cpp @@ -0,0 +1,28 @@ +// Copyright David Abrahams 2002. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include + +namespace boost { namespace python { namespace converter { + +namespace detail +{ + arg_to_python_base::arg_to_python_base( + void const volatile* source, registration const& converters) +# if !defined(BOOST_MSVC) || BOOST_MSVC <= 1300 || _MSC_FULL_VER > 13102179 + : handle<> +# else + : m_ptr +# endif + (converters.to_python(source)) + { + } +} + +}}} // namespace boost::python::converter diff --git a/pykd/boost.python/converter/boost_python-src.converter.arg_to_python_base.cpp b/pykd/boost.python/converter/boost_python-src.converter.arg_to_python_base.cpp new file mode 100644 index 0000000..dd9752a --- /dev/null +++ b/pykd/boost.python/converter/boost_python-src.converter.arg_to_python_base.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "arg_to_python_base.cpp" diff --git a/pykd/boost.python/converter/boost_python-src.converter.builtin_converters.cpp b/pykd/boost.python/converter/boost_python-src.converter.builtin_converters.cpp new file mode 100644 index 0000000..df31ccf --- /dev/null +++ b/pykd/boost.python/converter/boost_python-src.converter.builtin_converters.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "builtin_converters.cpp" diff --git a/pykd/boost.python/converter/boost_python-src.converter.from_python.cpp b/pykd/boost.python/converter/boost_python-src.converter.from_python.cpp new file mode 100644 index 0000000..fc71566 --- /dev/null +++ b/pykd/boost.python/converter/boost_python-src.converter.from_python.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "from_python.cpp" diff --git a/pykd/boost.python/converter/boost_python-src.converter.registry.cpp b/pykd/boost.python/converter/boost_python-src.converter.registry.cpp new file mode 100644 index 0000000..7cc2cf8 --- /dev/null +++ b/pykd/boost.python/converter/boost_python-src.converter.registry.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "registry.cpp" diff --git a/pykd/boost.python/converter/boost_python-src.converter.type_id.cpp b/pykd/boost.python/converter/boost_python-src.converter.type_id.cpp new file mode 100644 index 0000000..afaf12b --- /dev/null +++ b/pykd/boost.python/converter/boost_python-src.converter.type_id.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "type_id.cpp" diff --git a/pykd/boost.python/converter/builtin_converters.cpp b/pykd/boost.python/converter/builtin_converters.cpp new file mode 100644 index 0000000..ee2d5b4 --- /dev/null +++ b/pykd/boost.python/converter/builtin_converters.cpp @@ -0,0 +1,592 @@ +// Copyright David Abrahams 2002. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +namespace boost { namespace python { namespace converter { + +shared_ptr_deleter::shared_ptr_deleter(handle<> owner) + : owner(owner) +{} + +shared_ptr_deleter::~shared_ptr_deleter() {} + +void shared_ptr_deleter::operator()(void const*) +{ + owner.reset(); +} + +namespace +{ + + // An lvalue conversion function which extracts a char const* from a + // Python String. +#if PY_VERSION_HEX < 0x03000000 + void* convert_to_cstring(PyObject* obj) + { + return PyString_Check(obj) ? PyString_AsString(obj) : 0; + } +#elif PY_VERSION_HEX < 0x03070000 + void* convert_to_cstring(PyObject* obj) + { + return PyUnicode_Check(obj) ? _PyUnicode_AsString(obj) : 0; + } +#else + void* convert_to_cstring(PyObject* obj) + { + return PyUnicode_Check(obj) ? const_cast(reinterpret_cast(_PyUnicode_AsString(obj))) : 0; + } +#endif + + // Given a target type and a SlotPolicy describing how to perform a + // given conversion, registers from_python converters which use the + // SlotPolicy to extract the type. + template + struct slot_rvalue_from_python + { + public: + slot_rvalue_from_python() + { + registry::insert( + &slot_rvalue_from_python::convertible + , &slot_rvalue_from_python::construct + , type_id() + , &SlotPolicy::get_pytype + ); + } + + private: + static void* convertible(PyObject* obj) + { + unaryfunc* slot = SlotPolicy::get_slot(obj); + return slot && *slot ? slot : 0; + } + + static void construct(PyObject* obj, rvalue_from_python_stage1_data* data) + { + // Get the (intermediate) source object + unaryfunc creator = *static_cast(data->convertible); + handle<> intermediate(creator(obj)); + + // Get the location in which to construct + void* storage = ((rvalue_from_python_storage*)data)->storage.bytes; +# ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable:4244) +# endif + new (storage) T( SlotPolicy::extract(intermediate.get()) ); + +# ifdef _MSC_VER +# pragma warning(pop) +# endif + // record successful construction + data->convertible = storage; + } + }; + + // identity_unaryfunc/py_object_identity -- manufacture a unaryfunc + // "slot" which just returns its argument. + extern "C" PyObject* identity_unaryfunc(PyObject* x) + { + Py_INCREF(x); + return x; + } + unaryfunc py_object_identity = identity_unaryfunc; + +#if PY_VERSION_HEX >= 0x03000000 + // As in Python 3 there is only one integer type, we can have much + // simplified logic. + // XXX(bhy) maybe the code will work with 2.6 or even 2.5? + struct int_rvalue_from_python_base + { + static unaryfunc* get_slot(PyObject* obj) + { + return PyLong_Check(obj) ? &py_object_identity : 0; + } + static PyTypeObject const* get_pytype() {return &PyLong_Type;} + }; + + template + struct signed_int_rvalue_from_python : int_rvalue_from_python_base + { + static T extract(PyObject* intermediate) + { + long x = PyLong_AsLong(intermediate); + if (PyErr_Occurred()) + throw_error_already_set(); + return numeric_cast(x); + } + }; + + template + struct unsigned_int_rvalue_from_python : int_rvalue_from_python_base + { + static T extract(PyObject* intermediate) + { + unsigned long x = PyLong_AsUnsignedLong(intermediate); + if (PyErr_Occurred()) + throw_error_already_set(); + return numeric_cast(x); + } + }; +#else // PY_VERSION_HEX >= 0x03000000 + // A SlotPolicy for extracting signed integer types from Python objects + struct signed_int_rvalue_from_python_base + { + static unaryfunc* get_slot(PyObject* obj) + { + PyNumberMethods* number_methods = obj->ob_type->tp_as_number; + if (number_methods == 0) + return 0; + + return ( +#if PY_VERSION_HEX >= 0x02040000 && defined(BOOST_PYTHON_BOOL_INT_STRICT) + !PyBool_Check(obj) && +#endif + (PyInt_Check(obj) || PyLong_Check(obj))) + + ? &number_methods->nb_int : 0; + } + static PyTypeObject const* get_pytype() { return &PyInt_Type;} + }; + + template + struct signed_int_rvalue_from_python : signed_int_rvalue_from_python_base + { + static T extract(PyObject* intermediate) + { + long x = PyInt_AsLong(intermediate); + if (PyErr_Occurred()) + throw_error_already_set(); + return numeric_cast(x); + } + }; + + // A SlotPolicy for extracting unsigned integer types from Python objects + struct unsigned_int_rvalue_from_python_base + { + static unaryfunc* get_slot(PyObject* obj) + { + PyNumberMethods* number_methods = obj->ob_type->tp_as_number; + if (number_methods == 0) + return 0; + + return ( +#if PY_VERSION_HEX >= 0x02040000 && defined(BOOST_PYTHON_BOOL_INT_STRICT) + !PyBool_Check(obj) && +#endif + (PyInt_Check(obj) || PyLong_Check(obj))) + ? &py_object_identity : 0; + } + static PyTypeObject const* get_pytype() { return &PyInt_Type;} + }; + + template + struct unsigned_int_rvalue_from_python : unsigned_int_rvalue_from_python_base + { + static T extract(PyObject* intermediate) + { + if (PyLong_Check(intermediate)) { + // PyLong_AsUnsignedLong() checks for negative overflow, so no + // need to check it here. + unsigned long result = PyLong_AsUnsignedLong(intermediate); + if (PyErr_Occurred()) + throw_error_already_set(); + return numeric_cast(result); + } else { + // None of PyInt_AsUnsigned*() functions check for negative + // overflow, so use PyInt_AS_LONG instead and check if number is + // negative, issuing the exception appropriately. + long result = PyInt_AS_LONG(intermediate); + if (PyErr_Occurred()) + throw_error_already_set(); + if (result < 0) { + PyErr_SetString(PyExc_OverflowError, "can't convert negative" + " value to unsigned"); + throw_error_already_set(); + } + return numeric_cast(result); + } + } + }; +#endif // PY_VERSION_HEX >= 0x03000000 + +// Checking Python's macro instead of Boost's - we don't seem to get +// the config right all the time. Furthermore, Python's is defined +// when long long is absent but __int64 is present. + +#ifdef HAVE_LONG_LONG + // A SlotPolicy for extracting long long types from Python objects + + struct long_long_rvalue_from_python_base + { + static unaryfunc* get_slot(PyObject* obj) + { +#if PY_VERSION_HEX >= 0x03000000 + return PyLong_Check(obj) ? &py_object_identity : 0; +#else + PyNumberMethods* number_methods = obj->ob_type->tp_as_number; + if (number_methods == 0) + return 0; + + // Return the identity conversion slot to avoid creating a + // new object. We'll handle that in the extract function + if (PyInt_Check(obj)) + return &number_methods->nb_int; + else if (PyLong_Check(obj)) + return &number_methods->nb_long; + else + return 0; +#endif + } + static PyTypeObject const* get_pytype() { return &PyLong_Type;} + }; + + struct long_long_rvalue_from_python : long_long_rvalue_from_python_base + { + static BOOST_PYTHON_LONG_LONG extract(PyObject* intermediate) + { +#if PY_VERSION_HEX < 0x03000000 + if (PyInt_Check(intermediate)) + { + return PyInt_AS_LONG(intermediate); + } + else +#endif + { + BOOST_PYTHON_LONG_LONG result = PyLong_AsLongLong(intermediate); + + if (PyErr_Occurred()) + throw_error_already_set(); + + return result; + } + } + }; + + struct unsigned_long_long_rvalue_from_python : long_long_rvalue_from_python_base + { + static unsigned BOOST_PYTHON_LONG_LONG extract(PyObject* intermediate) + { +#if PY_VERSION_HEX < 0x03000000 + if (PyInt_Check(intermediate)) + { + return numeric_cast(PyInt_AS_LONG(intermediate)); + } + else +#endif + { + unsigned BOOST_PYTHON_LONG_LONG result = PyLong_AsUnsignedLongLong(intermediate); + + if (PyErr_Occurred()) + throw_error_already_set(); + + return result; + } + } + }; +#endif + + // A SlotPolicy for extracting bool from a Python object + struct bool_rvalue_from_python + { + static unaryfunc* get_slot(PyObject* obj) + { +#if PY_VERSION_HEX >= 0x03000000 + return obj == Py_None || PyLong_Check(obj) ? &py_object_identity : 0; +#elif PY_VERSION_HEX >= 0x02040000 && defined(BOOST_PYTHON_BOOL_INT_STRICT) + return obj == Py_None || PyBool_Check(obj) ? &py_object_identity : 0; +#else + return obj == Py_None || PyInt_Check(obj) ? &py_object_identity : 0; +#endif + } + + static bool extract(PyObject* intermediate) + { + return PyObject_IsTrue(intermediate); + } + + static PyTypeObject const* get_pytype() + { +#if PY_VERSION_HEX >= 0x02030000 + return &PyBool_Type; +#else + return &PyInt_Type; +#endif + } + }; + + // A SlotPolicy for extracting floating types from Python objects. + struct float_rvalue_from_python + { + static unaryfunc* get_slot(PyObject* obj) + { + PyNumberMethods* number_methods = obj->ob_type->tp_as_number; + if (number_methods == 0) + return 0; + + // For integer types, return the tp_int conversion slot to avoid + // creating a new object. We'll handle that below +#if PY_VERSION_HEX < 0x03000000 + if (PyInt_Check(obj)) + return &number_methods->nb_int; +#endif + + return (PyLong_Check(obj) || PyFloat_Check(obj)) + ? &number_methods->nb_float : 0; + } + + static double extract(PyObject* intermediate) + { +#if PY_VERSION_HEX < 0x03000000 + if (PyInt_Check(intermediate)) + { + return PyInt_AS_LONG(intermediate); + } + else +#endif + { + return PyFloat_AS_DOUBLE(intermediate); + } + } + static PyTypeObject const* get_pytype() { return &PyFloat_Type;} + }; + +#if PY_VERSION_HEX >= 0x03000000 + unaryfunc py_unicode_as_string_unaryfunc = PyUnicode_AsUTF8String; +#endif + + // A SlotPolicy for extracting C++ strings from Python objects. + struct string_rvalue_from_python + { + // If the underlying object is "string-able" this will succeed + static unaryfunc* get_slot(PyObject* obj) + { +#if PY_VERSION_HEX >= 0x03000000 + return (PyUnicode_Check(obj)) ? &py_unicode_as_string_unaryfunc : + PyBytes_Check(obj) ? &py_object_identity : 0; +#else + return (PyString_Check(obj)) ? &obj->ob_type->tp_str : 0; + +#endif + }; + + // Remember that this will be used to construct the result object +#if PY_VERSION_HEX >= 0x03000000 + static std::string extract(PyObject* intermediate) + { + return std::string(PyBytes_AsString(intermediate),PyBytes_Size(intermediate)); + } + static PyTypeObject const* get_pytype() { return &PyUnicode_Type;} +#else + static std::string extract(PyObject* intermediate) + { + return std::string(PyString_AsString(intermediate),PyString_Size(intermediate)); + } + static PyTypeObject const* get_pytype() { return &PyString_Type;} +#endif + }; + +#if defined(Py_USING_UNICODE) && !defined(BOOST_NO_STD_WSTRING) + // encode_string_unaryfunc/py_encode_string -- manufacture a unaryfunc + // "slot" which encodes a Python string using the default encoding + extern "C" PyObject* encode_string_unaryfunc(PyObject* x) + { + return PyUnicode_FromEncodedObject( x, 0, 0 ); + } + unaryfunc py_encode_string = encode_string_unaryfunc; + + // A SlotPolicy for extracting C++ strings from Python objects. + struct wstring_rvalue_from_python + { + // If the underlying object is "string-able" this will succeed + static unaryfunc* get_slot(PyObject* obj) + { + return PyUnicode_Check(obj) + ? &py_object_identity +#if PY_VERSION_HEX >= 0x03000000 + : PyBytes_Check(obj) +#else + : PyString_Check(obj) +#endif + ? &py_encode_string + : 0; + }; + + // Remember that this will be used to construct the result object + static std::wstring extract(PyObject* intermediate) + { + // On Windows, with Python >= 3.3, PyObject_Length cannot be used to get + // the size of the wchar_t string, because it will count the number of + // *code points*, but some characters not on the BMP will use two UTF-16 + // *code units* (surrogate pairs). + // This is not a problem on Unix, since wchar_t is 32-bit. +#if defined(_WIN32) && PY_VERSION_HEX >= 0x03030000 + BOOST_STATIC_ASSERT(sizeof(wchar_t) == 2); + + Py_ssize_t size = 0; + wchar_t *buf = PyUnicode_AsWideCharString(intermediate, &size); + if (buf == NULL) { + boost::python::throw_error_already_set(); + } + std::wstring result(buf, size); + PyMem_Free(buf); +#else + std::wstring result(::PyObject_Length(intermediate), L' '); + if (!result.empty()) + { + int err = PyUnicode_AsWideChar( +#if PY_VERSION_HEX < 0x03020000 + (PyUnicodeObject *) +#endif + intermediate + , &result[0] + , result.size()); + + if (err == -1) + throw_error_already_set(); + } +#endif + return result; + } + static PyTypeObject const* get_pytype() { return &PyUnicode_Type;} + }; +#endif + + struct complex_rvalue_from_python + { + static unaryfunc* get_slot(PyObject* obj) + { + if (PyComplex_Check(obj)) + return &py_object_identity; + else + return float_rvalue_from_python::get_slot(obj); + } + + static std::complex extract(PyObject* intermediate) + { + if (PyComplex_Check(intermediate)) + { + return std::complex( + PyComplex_RealAsDouble(intermediate) + , PyComplex_ImagAsDouble(intermediate)); + } +#if PY_VERSION_HEX < 0x03000000 + else if (PyInt_Check(intermediate)) + { + return PyInt_AS_LONG(intermediate); + } +#endif + else + { + return PyFloat_AS_DOUBLE(intermediate); + } + } + static PyTypeObject const* get_pytype() { return &PyComplex_Type;} + }; +} + +BOOST_PYTHON_DECL PyObject* do_return_to_python(char x) +{ +#if PY_VERSION_HEX >= 0x03000000 + return PyUnicode_FromStringAndSize(&x, 1); +#else + return PyString_FromStringAndSize(&x, 1); +#endif +} + +BOOST_PYTHON_DECL PyObject* do_return_to_python(char const* x) +{ +#if PY_VERSION_HEX >= 0x03000000 + return x ? PyUnicode_FromString(x) : boost::python::detail::none(); +#else + return x ? PyString_FromString(x) : boost::python::detail::none(); +#endif +} + +BOOST_PYTHON_DECL PyObject* do_return_to_python(PyObject* x) +{ + return x ? x : boost::python::detail::none(); +} + +BOOST_PYTHON_DECL PyObject* do_arg_to_python(PyObject* x) +{ + if (x == 0) + return boost::python::detail::none(); + + Py_INCREF(x); + return x; +} + +#define REGISTER_INT_CONVERTERS(signedness, U) \ + slot_rvalue_from_python< \ + signedness U \ + ,signedness##_int_rvalue_from_python \ + >() + +#define REGISTER_INT_CONVERTERS2(U) \ + REGISTER_INT_CONVERTERS(signed, U); \ + REGISTER_INT_CONVERTERS(unsigned, U) + +void initialize_builtin_converters() +{ + // booleans + slot_rvalue_from_python(); + + // integer types + REGISTER_INT_CONVERTERS2(char); + REGISTER_INT_CONVERTERS2(short); + REGISTER_INT_CONVERTERS2(int); + REGISTER_INT_CONVERTERS2(long); + +// using Python's macro instead of Boost's - we don't seem to get the +// config right all the time. +# ifdef HAVE_LONG_LONG + slot_rvalue_from_python(); + slot_rvalue_from_python(); +# endif + + // floating types + slot_rvalue_from_python(); + slot_rvalue_from_python(); + slot_rvalue_from_python(); + + slot_rvalue_from_python,complex_rvalue_from_python>(); + slot_rvalue_from_python,complex_rvalue_from_python>(); + slot_rvalue_from_python,complex_rvalue_from_python>(); + + // Add an lvalue converter for char which gets us char const* +#if PY_VERSION_HEX < 0x03000000 + registry::insert(convert_to_cstring,type_id(),&converter::wrap_pytype<&PyString_Type>::get_pytype); +#else + registry::insert(convert_to_cstring,type_id(),&converter::wrap_pytype<&PyUnicode_Type>::get_pytype); +#endif + + // Register by-value converters to std::string, std::wstring +#if defined(Py_USING_UNICODE) && !defined(BOOST_NO_STD_WSTRING) + slot_rvalue_from_python(); +# endif + slot_rvalue_from_python(); + +} + +}}} // namespace boost::python::converter diff --git a/pykd/boost.python/converter/from_python.cpp b/pykd/boost.python/converter/from_python.cpp new file mode 100644 index 0000000..9678be1 --- /dev/null +++ b/pykd/boost.python/converter/from_python.cpp @@ -0,0 +1,303 @@ +// Copyright David Abrahams 2002. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include + +#include + +#include +#include +#include + +#include +#include + +namespace boost { namespace python { namespace converter { + +// rvalue_from_python_stage1 -- do the first stage of a conversion +// from a Python object to a C++ rvalue. +// +// source - the Python object to be converted +// converters - the registry entry for the target type T +// +// Postcondition: where x is the result, one of: +// +// 1. x.convertible == 0, indicating failure +// +// 2. x.construct == 0, x.convertible is the address of an object of +// type T. Indicates a successful lvalue conversion +// +// 3. where y is of type rvalue_from_python_data, +// x.construct(source, y) constructs an object of type T +// in y.storage.bytes and then sets y.convertible == y.storage.bytes, +// or else throws an exception and has no effect. +BOOST_PYTHON_DECL rvalue_from_python_stage1_data rvalue_from_python_stage1( + PyObject* source + , registration const& converters) +{ + rvalue_from_python_stage1_data data; + + // First check to see if it's embedded in an extension class + // instance, as a special case. + data.convertible = objects::find_instance_impl(source, converters.target_type, converters.is_shared_ptr); + data.construct = 0; + if (!data.convertible) + { + for (rvalue_from_python_chain const* chain = converters.rvalue_chain; + chain != 0; + chain = chain->next) + { + void* r = chain->convertible(source); + if (r != 0) + { + data.convertible = r; + data.construct = chain->construct; + break; + } + } + } + return data; +} + +// rvalue_result_from_python -- return the address of a C++ object which +// can be used as the result of calling a Python function. +// +// src - the Python object to be converted +// +// data - a reference to the base part of a +// rvalue_from_python_data object, where T is the +// target type of the conversion. +// +// Requires: data.convertible == ®istered::converters +// +BOOST_PYTHON_DECL void* rvalue_result_from_python( + PyObject* src, rvalue_from_python_stage1_data& data) +{ + // Retrieve the registration + // Cast in two steps for less-capable compilers + void const* converters_ = data.convertible; + registration const& converters = *static_cast(converters_); + + // Look for an eligible converter + data = rvalue_from_python_stage1(src, converters); + return rvalue_from_python_stage2(src, data, converters); +} + +BOOST_PYTHON_DECL void* rvalue_from_python_stage2( + PyObject* source, rvalue_from_python_stage1_data& data, registration const& converters) +{ + if (!data.convertible) + { + handle<> msg( +#if PY_VERSION_HEX >= 0x03000000 + ::PyUnicode_FromFormat +#else + ::PyString_FromFormat +#endif + ( + "No registered converter was able to produce a C++ rvalue of type %s from this Python object of type %s" + , converters.target_type.name() + , source->ob_type->tp_name + )); + + PyErr_SetObject(PyExc_TypeError, msg.get()); + throw_error_already_set(); + } + + // If a construct function was registered (i.e. we found an + // rvalue conversion), call it now. + if (data.construct != 0) + data.construct(source, &data); + + // Return the address of the resulting C++ object + return data.convertible; +} + +BOOST_PYTHON_DECL void* get_lvalue_from_python( + PyObject* source + , registration const& converters) +{ + // Check to see if it's embedded in a class instance + void* x = objects::find_instance_impl(source, converters.target_type); + if (x) + return x; + + lvalue_from_python_chain const* chain = converters.lvalue_chain; + for (;chain != 0; chain = chain->next) + { + void* r = chain->convert(source); + if (r != 0) + return r; + } + return 0; +} + +namespace +{ + // Prevent looping in implicit conversions. This could/should be + // much more efficient, but will work for now. + typedef std::vector visited_t; + static visited_t visited; + + inline bool visit(rvalue_from_python_chain const* chain) + { + visited_t::iterator const p = std::lower_bound(visited.begin(), visited.end(), chain); + if (p != visited.end() && *p == chain) + return false; + visited.insert(p, chain); + return true; + } + + // RAII class for managing global visited marks. + struct unvisit + { + unvisit(rvalue_from_python_chain const* chain) + : chain(chain) {} + + ~unvisit() + { + visited_t::iterator const p = std::lower_bound(visited.begin(), visited.end(), chain); + assert(p != visited.end()); + visited.erase(p); + } + private: + rvalue_from_python_chain const* chain; + }; +} + + +BOOST_PYTHON_DECL bool implicit_rvalue_convertible_from_python( + PyObject* source + , registration const& converters) +{ + if (objects::find_instance_impl(source, converters.target_type)) + return true; + + rvalue_from_python_chain const* chain = converters.rvalue_chain; + + if (!visit(chain)) + return false; + + unvisit protect(chain); + + for (;chain != 0; chain = chain->next) + { + if (chain->convertible(source)) + return true; + } + + return false; +} + +namespace +{ + void throw_no_lvalue_from_python(PyObject* source, registration const& converters, char const* ref_type) + { + handle<> msg( +#if PY_VERSION_HEX >= 0x03000000 + ::PyUnicode_FromFormat +#else + ::PyString_FromFormat +#endif + ( + "No registered converter was able to extract a C++ %s to type %s" + " from this Python object of type %s" + , ref_type + , converters.target_type.name() + , source->ob_type->tp_name + )); + + PyErr_SetObject(PyExc_TypeError, msg.get()); + + throw_error_already_set(); + } + + void* lvalue_result_from_python( + PyObject* source + , registration const& converters + , char const* ref_type) + { + handle<> holder(source); + if (source->ob_refcnt <= 1) + { + handle<> msg( +#if PY_VERSION_HEX >= 0x3000000 + ::PyUnicode_FromFormat +#else + ::PyString_FromFormat +#endif + ( + "Attempt to return dangling %s to object of type: %s" + , ref_type + , converters.target_type.name())); + + PyErr_SetObject(PyExc_ReferenceError, msg.get()); + + throw_error_already_set(); + } + + void* result = get_lvalue_from_python(source, converters); + if (!result) + (throw_no_lvalue_from_python)(source, converters, ref_type); + return result; + } + +} + +BOOST_PYTHON_DECL void throw_no_pointer_from_python(PyObject* source, registration const& converters) +{ + (throw_no_lvalue_from_python)(source, converters, "pointer"); +} + +BOOST_PYTHON_DECL void throw_no_reference_from_python(PyObject* source, registration const& converters) +{ + (throw_no_lvalue_from_python)(source, converters, "reference"); +} + +BOOST_PYTHON_DECL void* reference_result_from_python( + PyObject* source + , registration const& converters) +{ + return (lvalue_result_from_python)(source, converters, "reference"); +} + +BOOST_PYTHON_DECL void* pointer_result_from_python( + PyObject* source + , registration const& converters) +{ + if (source == Py_None) + { + Py_DECREF(source); + return 0; + } + return (lvalue_result_from_python)(source, converters, "pointer"); +} + +BOOST_PYTHON_DECL void void_result_from_python(PyObject* o) +{ + Py_DECREF(expect_non_null(o)); +} + +} // namespace boost::python::converter + +BOOST_PYTHON_DECL PyObject* +pytype_check(PyTypeObject* type_, PyObject* source) +{ + if (!PyObject_IsInstance(source, python::upcast(type_))) + { + ::PyErr_Format( + PyExc_TypeError + , "Expecting an object of type %s; got an object of type %s instead" + , type_->tp_name + , source->ob_type->tp_name + ); + throw_error_already_set(); + } + return source; +} + +}} // namespace boost::python diff --git a/pykd/boost.python/converter/registry.cpp b/pykd/boost.python/converter/registry.cpp new file mode 100644 index 0000000..aa20c3f --- /dev/null +++ b/pykd/boost.python/converter/registry.cpp @@ -0,0 +1,306 @@ +// Copyright David Abrahams 2001. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +#include +#include +#include + +#include +#include + +#if defined(__APPLE__) && defined(__MACH__) && defined(__GNUC__) \ + && __GNUC__ == 3 && __GNUC_MINOR__ <= 4 && !defined(__APPLE_CC__) +# define BOOST_PYTHON_CONVERTER_REGISTRY_APPLE_MACH_WORKAROUND +#endif + +#if defined(BOOST_PYTHON_TRACE_REGISTRY) \ + || defined(BOOST_PYTHON_CONVERTER_REGISTRY_APPLE_MACH_WORKAROUND) +# include +#endif + +namespace boost { namespace python { namespace converter { +BOOST_PYTHON_DECL PyTypeObject const* registration::expected_from_python_type() const +{ + if (this->m_class_object != 0) + return this->m_class_object; + + std::set pool; + + for(rvalue_from_python_chain* r = rvalue_chain; r ; r=r->next) + if(r->expected_pytype) + pool.insert(r->expected_pytype()); + + //for now I skip the search for common base + if (pool.size()==1) + return *pool.begin(); + + return 0; + +} + +BOOST_PYTHON_DECL PyTypeObject const* registration::to_python_target_type() const +{ + if (this->m_class_object != 0) + return this->m_class_object; + + if (this->m_to_python_target_type != 0) + return this->m_to_python_target_type(); + + return 0; +} + +BOOST_PYTHON_DECL PyTypeObject* registration::get_class_object() const +{ + if (this->m_class_object == 0) + { + ::PyErr_Format( + PyExc_TypeError + , const_cast("No Python class registered for C++ class %s") + , this->target_type.name()); + + throw_error_already_set(); + } + + return this->m_class_object; +} + +BOOST_PYTHON_DECL PyObject* registration::to_python(void const volatile* source) const +{ + if (this->m_to_python == 0) + { + handle<> msg( +#if PY_VERSION_HEX >= 0x3000000 + ::PyUnicode_FromFormat +#else + ::PyString_FromFormat +#endif + ( + "No to_python (by-value) converter found for C++ type: %s" + , this->target_type.name() + ) + ); + + PyErr_SetObject(PyExc_TypeError, msg.get()); + + throw_error_already_set(); + } + + return source == 0 + ? incref(Py_None) + : this->m_to_python(const_cast(source)); +} + +namespace +{ + template< typename T > + void delete_node( T* node ) + { + if( !!node && !!node->next ) + delete_node( node->next ); + delete node; + } +} + +registration::~registration() +{ + delete_node(lvalue_chain); + delete_node(rvalue_chain); +} + + +namespace // +{ + typedef registration entry; + + typedef std::set registry_t; + +#ifndef BOOST_PYTHON_CONVERTER_REGISTRY_APPLE_MACH_WORKAROUND + registry_t& entries() + { + static registry_t registry; + +# ifndef BOOST_PYTHON_SUPPRESS_REGISTRY_INITIALIZATION + static bool builtin_converters_initialized = false; + if (!builtin_converters_initialized) + { + // Make this true early because registering the builtin + // converters will cause recursion. + builtin_converters_initialized = true; + + initialize_builtin_converters(); + } +# ifdef BOOST_PYTHON_TRACE_REGISTRY + std::cout << "registry: "; + for (registry_t::iterator p = registry.begin(); p != registry.end(); ++p) + { + std::cout << p->target_type << "; "; + } + std::cout << '\n'; +# endif +# endif + return registry; + } +#else + registry_t& static_registry() + { + static registry_t result; + return result; + } + + bool static_builtin_converters_initialized() + { + static bool result = false; + if (result == false) { + result = true; + std::cout << std::flush; + return false; + } + return true; + } + + registry_t& entries() + { +# ifndef BOOST_PYTHON_SUPPRESS_REGISTRY_INITIALIZATION + if (!static_builtin_converters_initialized()) + { + initialize_builtin_converters(); + } +# ifdef BOOST_PYTHON_TRACE_REGISTRY + std::cout << "registry: "; + for (registry_t::iterator p = static_registry().begin(); p != static_registry().end(); ++p) + { + std::cout << p->target_type << "; "; + } + std::cout << '\n'; +# endif +# endif + return static_registry(); + } +#endif // BOOST_PYTHON_CONVERTER_REGISTRY_APPLE_MACH_WORKAROUND + + entry* get(type_info type, bool is_shared_ptr = false) + { +# ifdef BOOST_PYTHON_TRACE_REGISTRY + registry_t::iterator p = entries().find(entry(type)); + + std::cout << "looking up " << type << ": " + << (p == entries().end() || p->target_type != type + ? "...NOT found\n" : "...found\n"); +# endif + std::pair pos_ins + = entries().insert(entry(type,is_shared_ptr)); + +# if __MWERKS__ >= 0x3000 + // do a little invariant checking if a change was made + if ( pos_ins.second ) + assert(entries().invariants()); +# endif + return const_cast(&*pos_ins.first); + } +} // namespace + +namespace registry +{ + void insert(to_python_function_t f, type_info source_t, PyTypeObject const* (*to_python_target_type)()) + { +# ifdef BOOST_PYTHON_TRACE_REGISTRY + std::cout << "inserting to_python " << source_t << "\n"; +# endif + entry* slot = get(source_t); + + assert(slot->m_to_python == 0); // we have a problem otherwise + if (slot->m_to_python != 0) + { + std::string msg = ( + std::string("to-Python converter for ") + + source_t.name() + + " already registered; second conversion method ignored." + ); + + if ( ::PyErr_Warn( NULL, const_cast(msg.c_str()) ) ) + { + throw_error_already_set(); + } + } + slot->m_to_python = f; + slot->m_to_python_target_type = to_python_target_type; + } + + // Insert an lvalue from_python converter + void insert(convertible_function convert, type_info key, PyTypeObject const* (*exp_pytype)()) + { +# ifdef BOOST_PYTHON_TRACE_REGISTRY + std::cout << "inserting lvalue from_python " << key << "\n"; +# endif + entry* found = get(key); + lvalue_from_python_chain *registration = new lvalue_from_python_chain; + registration->convert = convert; + registration->next = found->lvalue_chain; + found->lvalue_chain = registration; + + insert(convert, 0, key,exp_pytype); + } + + // Insert an rvalue from_python converter + void insert(convertible_function convertible + , constructor_function construct + , type_info key + , PyTypeObject const* (*exp_pytype)()) + { +# ifdef BOOST_PYTHON_TRACE_REGISTRY + std::cout << "inserting rvalue from_python " << key << "\n"; +# endif + entry* found = get(key); + rvalue_from_python_chain *registration = new rvalue_from_python_chain; + registration->convertible = convertible; + registration->construct = construct; + registration->expected_pytype = exp_pytype; + registration->next = found->rvalue_chain; + found->rvalue_chain = registration; + } + + // Insert an rvalue from_python converter + void push_back(convertible_function convertible + , constructor_function construct + , type_info key + , PyTypeObject const* (*exp_pytype)()) + { +# ifdef BOOST_PYTHON_TRACE_REGISTRY + std::cout << "push_back rvalue from_python " << key << "\n"; +# endif + rvalue_from_python_chain** found = &get(key)->rvalue_chain; + while (*found != 0) + found = &(*found)->next; + + rvalue_from_python_chain *registration = new rvalue_from_python_chain; + registration->convertible = convertible; + registration->construct = construct; + registration->expected_pytype = exp_pytype; + registration->next = 0; + *found = registration; + } + + registration const& lookup(type_info key) + { + return *get(key); + } + + registration const& lookup_shared_ptr(type_info key) + { + return *get(key, true); + } + + registration const* query(type_info type) + { + registry_t::iterator p = entries().find(entry(type)); +# ifdef BOOST_PYTHON_TRACE_REGISTRY + std::cout << "querying " << type + << (p == entries().end() || p->target_type != type + ? "...NOT found\n" : "...found\n"); +# endif + return (p == entries().end() || p->target_type != type) ? 0 : &*p; + } +} // namespace registry + +}}} // namespace boost::python::converter diff --git a/pykd/boost.python/converter/type_id.cpp b/pykd/boost.python/converter/type_id.cpp new file mode 100644 index 0000000..c6a8bf7 --- /dev/null +++ b/pykd/boost.python/converter/type_id.cpp @@ -0,0 +1,212 @@ +// Copyright David Abrahams 2001. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(__QNXNTO__) +# include +#else /* defined(__QNXNTO__) */ + +#if !defined(__GNUC__) || __GNUC__ >= 3 || __SGI_STL_PORT || __EDG_VERSION__ +# include +#else +# include +#endif + +# ifdef BOOST_PYTHON_HAVE_GCC_CP_DEMANGLE +# if defined(__GNUC__) && __GNUC__ >= 3 + +// http://lists.debian.org/debian-gcc/2003/09/msg00055.html notes +// that, in cxxabi.h of gcc-3.x for x < 4, this type is used before it +// is declared. +# if __GNUC__ == 3 && __GNUC_MINOR__ < 4 +class __class_type_info; +# endif + +# include +# endif +# endif +#endif /* defined(__QNXNTO__) */ + +namespace boost { namespace python { + +# ifdef BOOST_PYTHON_HAVE_GCC_CP_DEMANGLE + +# if defined(__QNXNTO__) +namespace cxxabi { +extern "C" char* __cxa_demangle(char const*, char*, std::size_t*, int*); +} +# else /* defined(__QNXNTO__) */ + +# ifdef __GNUC__ +# if __GNUC__ < 3 + +namespace cxxabi = :: ; +extern "C" char* __cxa_demangle(char const*, char*, std::size_t*, int*); +# else + +namespace cxxabi = ::abi; // GCC 3.1 and later + +# if __GNUC__ == 3 && __GNUC_MINOR__ == 0 +namespace abi +{ + extern "C" char* __cxa_demangle(char const*, char*, std::size_t*, int*); +} +# endif /* __GNUC__ == 3 && __GNUC_MINOR__ == 0 */ +# endif /* __GNUC__ < 3 */ +# endif /* __GNUC__ */ +# endif /* defined(__QNXNTO__) */ + +namespace +{ + struct compare_first_cstring + { + template + bool operator()(T const& x, T const& y) + { + return std::strcmp(x.first,y.first) < 0; + } + }; + + struct free_mem + { + free_mem(char*p) + : p(p) {} + + ~free_mem() + { + std::free(p); + } + char* p; + }; +} + +bool cxxabi_cxa_demangle_is_broken() +{ + static bool was_tested = false; + static bool is_broken = false; + if (!was_tested) { + int status; + free_mem keeper(cxxabi::__cxa_demangle("b", 0, 0, &status)); + was_tested = true; + if (status == -2 || strcmp(keeper.p, "bool") != 0) { + is_broken = true; + } + } + return is_broken; +} + +namespace detail +{ + BOOST_PYTHON_DECL char const* gcc_demangle(char const* mangled) + { + typedef std::vector< + std::pair + > mangling_map; + + static mangling_map demangler; + mangling_map::iterator p + = std::lower_bound( + demangler.begin(), demangler.end() + , std::make_pair(mangled, (char const*)0) + , compare_first_cstring()); + + if (p == demangler.end() || strcmp(p->first, mangled)) + { + int status; + free_mem keeper( + cxxabi::__cxa_demangle(mangled, 0, 0, &status) + ); + + assert(status != -3); // invalid argument error + + if (status == -1) + { + throw std::bad_alloc(); + } + else + { + char const* demangled + = status == -2 + // Invalid mangled name. Best we can do is to + // return it intact. + ? mangled + : keeper.p; + + // Ult Mundane, 2005 Aug 17 + // Contributed under the Boost Software License, Version 1.0. + // (See accompanying file LICENSE_1_0.txt or copy at + // http://www.boost.org/LICENSE_1_0.txt) + // The __cxa_demangle function is supposed to translate + // builtin types from their one-character mangled names, + // but it doesn't in gcc 3.3.5 and gcc 3.4.x. + if (cxxabi_cxa_demangle_is_broken() + && status == -2 && strlen(mangled) == 1) + { + // list from + // http://www.codesourcery.com/cxx-abi/abi.html + switch (mangled[0]) + { + case 'v': demangled = "void"; break; + case 'w': demangled = "wchar_t"; break; + case 'b': demangled = "bool"; break; + case 'c': demangled = "char"; break; + case 'a': demangled = "signed char"; break; + case 'h': demangled = "unsigned char"; break; + case 's': demangled = "short"; break; + case 't': demangled = "unsigned short"; break; + case 'i': demangled = "int"; break; + case 'j': demangled = "unsigned int"; break; + case 'l': demangled = "long"; break; + case 'm': demangled = "unsigned long"; break; + case 'x': demangled = "long long"; break; + case 'y': demangled = "unsigned long long"; break; + case 'n': demangled = "__int128"; break; + case 'o': demangled = "unsigned __int128"; break; + case 'f': demangled = "float"; break; + case 'd': demangled = "double"; break; + case 'e': demangled = "long double"; break; + case 'g': demangled = "__float128"; break; + case 'z': demangled = "..."; break; + } + } + + p = demangler.insert(p, std::make_pair(mangled, demangled)); + keeper.p = 0; + } + } + + return p->second; + } +} +# endif + +BOOST_PYTHON_DECL std::ostream& operator<<(std::ostream& os, type_info const& x) +{ + return os << x.name(); +} + +namespace detail +{ + BOOST_PYTHON_DECL std::ostream& operator<<(std::ostream& os, detail::decorated_type_info const& x) + { + os << x.m_base_type; + if (x.m_decoration & decorated_type_info::const_) + os << " const"; + if (x.m_decoration & decorated_type_info::volatile_) + os << " volatile"; + if (x.m_decoration & decorated_type_info::reference) + os << "&"; + return os; + } +} +}} // namespace boost::python::converter diff --git a/pykd/boost.python/dict.cpp b/pykd/boost.python/dict.cpp new file mode 100644 index 0000000..77d840d --- /dev/null +++ b/pykd/boost.python/dict.cpp @@ -0,0 +1,184 @@ +// Copyright David Abrahams 2004. Distributed under the Boost +// Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +#include +#include + +namespace boost { namespace python { namespace detail { +namespace +{ + // When returning list objects from methods, it may turn out that the + // derived class is returning something else, perhaps something not + // even derived from list. Since it is generally harmless for a + // Boost.Python wrapper object to hold an object of a different + // type, and because calling list() with an object may in fact + // perform a conversion, the least-bad alternative is to assume that + // we have a Python list object and stuff it into the list result. + list assume_list(object const& o) + { + return list(detail::borrowed_reference(o.ptr())); + } + + // No PyDict_CheckExact; roll our own. + inline bool check_exact(dict_base const* p) + { + return p->ptr()->ob_type == &PyDict_Type; + } +} + +detail::new_reference dict_base::call(object const& arg_) +{ + return (detail::new_reference)PyObject_CallFunction( + (PyObject*)&PyDict_Type, const_cast("(O)"), + arg_.ptr()); +} + +dict_base::dict_base() + : object(detail::new_reference(PyDict_New())) +{} + +dict_base::dict_base(object_cref data) + : object(call(data)) +{} + +void dict_base::clear() +{ + if (check_exact(this)) + PyDict_Clear(this->ptr()); + else + this->attr("clear")(); +} + +dict dict_base::copy() +{ + if (check_exact(this)) + { + return dict(detail::new_reference( + PyDict_Copy(this->ptr()))); + } + else + { + return dict(detail::borrowed_reference( + this->attr("copy")().ptr() + )); + } +} + +object dict_base::get(object_cref k) const +{ + if (check_exact(this)) + { + PyObject* result = PyDict_GetItem(this->ptr(),k.ptr()); + return object(detail::borrowed_reference(result ? result : Py_None)); + } + else + { + return this->attr("get")(k); + } +} + +object dict_base::get(object_cref k, object_cref d) const +{ + return this->attr("get")(k,d); +} + +bool dict_base::has_key(object_cref k) const +{ + return extract(this->contains(k)); +} + +list dict_base::items() const +{ + if (check_exact(this)) + { + return list(detail::new_reference( + PyDict_Items(this->ptr()))); + } + else + { + return assume_list(this->attr("items")()); + } +} + +object dict_base::iteritems() const +{ + return this->attr("iteritems")(); +} + +object dict_base::iterkeys() const +{ + return this->attr("iterkeys")(); +} + +object dict_base::itervalues() const +{ + return this->attr("itervalues")(); +} + +list dict_base::keys() const +{ + if (check_exact(this)) + { + return list(detail::new_reference( + PyDict_Keys(this->ptr()))); + } + else + { + return assume_list(this->attr("keys")()); + } +} + +tuple dict_base::popitem() +{ + return tuple(detail::borrowed_reference( + this->attr("popitem")().ptr() + )); +} + +object dict_base::setdefault(object_cref k) +{ + return this->attr("setdefault")(k); +} + +object dict_base::setdefault(object_cref k, object_cref d) +{ + return this->attr("setdefault")(k,d); +} + +void dict_base::update(object_cref other) +{ + if (check_exact(this)) + { + if (PyDict_Update(this->ptr(),other.ptr()) == -1) + throw_error_already_set(); + } + else + { + this->attr("update")(other); + } +} + +list dict_base::values() const +{ + if (check_exact(this)) + { + return list(detail::new_reference( + PyDict_Values(this->ptr()))); + } + else + { + return assume_list(this->attr("values")()); + } +} + +static struct register_dict_pytype_ptr +{ + register_dict_pytype_ptr() + { + const_cast( + converter::registry::lookup(boost::python::type_id()) + ).m_class_object = &PyDict_Type; + } +}register_dict_pytype_ptr_; + +}}} // namespace boost::python diff --git a/pykd/boost.python/errors.cpp b/pykd/boost.python/errors.cpp new file mode 100644 index 0000000..34ea22f --- /dev/null +++ b/pykd/boost.python/errors.cpp @@ -0,0 +1,105 @@ +// Copyright David Abrahams 2001. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PYTHON_SOURCE +# define BOOST_PYTHON_SOURCE +#endif + +#include +#include +#include + +namespace boost { namespace python { + +error_already_set::~error_already_set() {} + +// IMPORTANT: this function may only be called from within a catch block! +BOOST_PYTHON_DECL bool handle_exception_impl(function0 f) +{ + try + { + if (detail::exception_handler::chain) + return detail::exception_handler::chain->handle(f); + f(); + return false; + } + catch(const boost::python::error_already_set&) + { + // The python error reporting has already been handled. + } + catch(const std::bad_alloc&) + { + PyErr_NoMemory(); + } + catch(const bad_numeric_cast& x) + { + PyErr_SetString(PyExc_OverflowError, x.what()); + } + catch(const std::out_of_range& x) + { + PyErr_SetString(PyExc_IndexError, x.what()); + } + catch(const std::invalid_argument& x) + { + PyErr_SetString(PyExc_ValueError, x.what()); + } + catch(const std::exception& x) + { + PyErr_SetString(PyExc_RuntimeError, x.what()); + } + catch(...) + { + PyErr_SetString(PyExc_RuntimeError, "unidentifiable C++ exception"); + } + return true; +} + +void BOOST_PYTHON_DECL throw_error_already_set() +{ + throw error_already_set(); +} + +namespace detail { + +bool exception_handler::operator()(function0 const& f) const +{ + if (m_next) + { + return m_next->handle(f); + } + else + { + f(); + return false; + } +} + +exception_handler::exception_handler(handler_function const& impl) + : m_impl(impl) + , m_next(0) +{ + if (chain != 0) + tail->m_next = this; + else + chain = this; + tail = this; +} + +exception_handler* exception_handler::chain; +exception_handler* exception_handler::tail; + +BOOST_PYTHON_DECL void register_exception_handler(handler_function const& f) +{ + // the constructor links the new object into a handler chain, so + // this object isn't actaully leaked (until, of course, the + // interpreter exits). + new exception_handler(f); +} + +} // namespace boost::python::detail + +}} // namespace boost::python + + diff --git a/pykd/boost.python/exec.cpp b/pykd/boost.python/exec.cpp new file mode 100644 index 0000000..171c6f4 --- /dev/null +++ b/pykd/boost.python/exec.cpp @@ -0,0 +1,129 @@ +// Copyright Stefan Seefeld 2005. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include + +namespace boost +{ +namespace python +{ + +object BOOST_PYTHON_DECL eval(str string, object global, object local) +{ + return eval(python::extract(string), global, local); +} + +object BOOST_PYTHON_DECL eval(char const *string, object global, object local) +{ + // Set suitable default values for global and local dicts. + if (global.is_none()) + { + if (PyObject *g = PyEval_GetGlobals()) + global = object(detail::borrowed_reference(g)); + else + global = dict(); + } + if (local.is_none()) local = global; + // should be 'char const *' but older python versions don't use 'const' yet. + char *s = const_cast(string); + PyObject* result = PyRun_String(s, Py_eval_input, global.ptr(), local.ptr()); + if (!result) throw_error_already_set(); + return object(detail::new_reference(result)); +} + +object BOOST_PYTHON_DECL exec(str string, object global, object local) +{ + return exec(python::extract(string), global, local); +} + +object BOOST_PYTHON_DECL exec(char const *string, object global, object local) +{ + // Set suitable default values for global and local dicts. + if (global.is_none()) + { + if (PyObject *g = PyEval_GetGlobals()) + global = object(detail::borrowed_reference(g)); + else + global = dict(); + } + if (local.is_none()) local = global; + // should be 'char const *' but older python versions don't use 'const' yet. + char *s = const_cast(string); + PyObject* result = PyRun_String(s, Py_file_input, global.ptr(), local.ptr()); + if (!result) throw_error_already_set(); + return object(detail::new_reference(result)); +} + +object BOOST_PYTHON_DECL exec_statement(str string, object global, object local) +{ + return exec_statement(python::extract(string), global, local); +} + +object BOOST_PYTHON_DECL exec_statement(char const *string, object global, object local) +{ + // Set suitable default values for global and local dicts. + if (global.is_none()) + { + if (PyObject *g = PyEval_GetGlobals()) + global = object(detail::borrowed_reference(g)); + else + global = dict(); + } + if (local.is_none()) local = global; + // should be 'char const *' but older python versions don't use 'const' yet. + char *s = const_cast(string); + PyObject* result = PyRun_String(s, Py_single_input, global.ptr(), local.ptr()); + if (!result) throw_error_already_set(); + return object(detail::new_reference(result)); +} + +// Execute python source code from file filename. +// global and local are the global and local scopes respectively, +// used during execution. +object BOOST_PYTHON_DECL exec_file(str filename, object global, object local) +{ + return exec_file(python::extract(filename), global, local); +} + +object BOOST_PYTHON_DECL exec_file(char const *filename, object global, object local) +{ + // Set suitable default values for global and local dicts. + if (global.is_none()) + { + if (PyObject *g = PyEval_GetGlobals()) + global = object(detail::borrowed_reference(g)); + else + global = dict(); + } + if (local.is_none()) local = global; + // should be 'char const *' but older python versions don't use 'const' yet. + char *f = const_cast(filename); + // Let python open the file to avoid potential binary incompatibilities. +#if PY_VERSION_HEX >= 0x03040000 + FILE *fs = _Py_fopen(f, "r"); +#elif PY_VERSION_HEX >= 0x03000000 + PyObject *fo = Py_BuildValue("s", f); + FILE *fs = _Py_fopen(fo, "r"); + Py_DECREF(fo); +#else + PyObject *pyfile = PyFile_FromString(f, const_cast("r")); + if (!pyfile) throw std::invalid_argument(std::string(f) + " : no such file"); + python::handle<> file(pyfile); + FILE *fs = PyFile_AsFile(file.get()); +#endif + PyObject* result = PyRun_File(fs, + f, + Py_file_input, + global.ptr(), local.ptr()); + if (!result) throw_error_already_set(); + return object(detail::new_reference(result)); +} + +} // namespace boost::python +} // namespace boost diff --git a/pykd/boost.python/fabscript b/pykd/boost.python/fabscript new file mode 100644 index 0000000..0ebeac6 --- /dev/null +++ b/pykd/boost.python/fabscript @@ -0,0 +1,58 @@ +# -*- python -*- +# +# Copyright (c) 2016 Stefan Seefeld +# All rights reserved. +# +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) + +from faber.feature import set +from faber.artefacts.library import library +from faber.tools.compiler import define + +root = module('..') + +bpl = library('boost_python' + root.py_suffix, + ['list.cpp', + 'long.cpp', + 'dict.cpp', + 'tuple.cpp', + 'str.cpp', + 'slice.cpp', + 'converter/from_python.cpp', + 'converter/registry.cpp', + 'converter/type_id.cpp', + 'object/enum.cpp', + 'object/class.cpp', + 'object/function.cpp', + 'object/inheritance.cpp', + 'object/life_support.cpp', + 'object/pickle_support.cpp', + 'errors.cpp', + 'module.cpp', + 'converter/builtin_converters.cpp', + 'converter/arg_to_python_base.cpp', + 'object/iterator.cpp', + 'object/stl_iterator.cpp', + 'object_protocol.cpp', + 'object_operators.cpp', + 'wrapper.cpp', + 'import.cpp', + 'exec.cpp', + 'object/function_doc_signature.cpp'], + dependencies=root.config, + features=features + define('BOOST_PYTHON_SOURCE')) + +bnl = library('boost_numpy' + root.py_suffix, + ['numpy/dtype.cpp', + 'numpy/matrix.cpp', + 'numpy/ndarray.cpp', + 'numpy/numpy.cpp', + 'numpy/scalars.cpp', + 'numpy/ufunc.cpp', + bpl], + dependencies=root.config, + features=features + define('BOOST_NUMPY_SOURCE'), + condition=set.define.contains('HAS_NUMPY')) +default = [bpl, bnl] diff --git a/pykd/boost.python/import.cpp b/pykd/boost.python/import.cpp new file mode 100644 index 0000000..0add79e --- /dev/null +++ b/pykd/boost.python/import.cpp @@ -0,0 +1,25 @@ +// Copyright Stefan Seefeld 2005. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include + +namespace boost +{ +namespace python +{ + +object BOOST_PYTHON_DECL import(str name) +{ + // should be 'char const *' but older python versions don't use 'const' yet. + char *n = python::extract(name); + python::handle<> module(PyImport_ImportModule(n)); + return python::object(module); +} + +} // namespace boost::python +} // namespace boost diff --git a/pykd/boost.python/list.cpp b/pykd/boost.python/list.cpp new file mode 100644 index 0000000..77e6168 --- /dev/null +++ b/pykd/boost.python/list.cpp @@ -0,0 +1,170 @@ +// Copyright David Abrahams 2002. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +#include +#include + +namespace boost { namespace python { namespace detail { + + +detail::new_non_null_reference list_base::call(object const& arg_) +{ + return (detail::new_non_null_reference) + (expect_non_null)( + PyObject_CallFunction( + (PyObject*)&PyList_Type, const_cast("(O)"), + arg_.ptr())); +} + +list_base::list_base() + : object(detail::new_reference(PyList_New(0))) +{} + +list_base::list_base(object_cref sequence) + : object(list_base::call(sequence)) +{} + +void list_base::append(object_cref x) +{ + if (PyList_CheckExact(this->ptr())) + { + if (PyList_Append(this->ptr(), x.ptr()) == -1) + throw_error_already_set(); + } + else + { + this->attr("append")(x); + } +} + +//long list_base::count(object_cref value) const; + +void list_base::extend(object_cref sequence) +{ + this->attr("extend")(sequence); +} + +long list_base::index(object_cref value) const +{ + object result_obj(this->attr("index")(value)); +#if PY_VERSION_HEX >= 0x03000000 + ssize_t result = PyLong_AsSsize_t(result_obj.ptr()); +#else + long result = PyInt_AsLong(result_obj.ptr()); +#endif + if (result == -1) + throw_error_already_set(); + return result; +} + +void list_base::insert(ssize_t index, object_cref item) +{ + if (PyList_CheckExact(this->ptr())) + { + if (PyList_Insert(this->ptr(), index, item.ptr()) == -1) + throw_error_already_set(); + } + else + { + this->attr("insert")(index, item); + } +} + +void list_base::insert(object const& index, object_cref x) +{ +#if PY_VERSION_HEX >= 0x03000000 + ssize_t index_ = PyLong_AsSsize_t(index.ptr()); +#else + long index_ = PyInt_AsLong(index.ptr()); +#endif + if (index_ == -1 && PyErr_Occurred()) + throw_error_already_set(); + this->insert(index_, x); +} + +object list_base::pop() +{ + return this->attr("pop")(); +} + +object list_base::pop(ssize_t index) +{ + return this->pop(object(index)); +} + +object list_base::pop(object const& index) +{ + return this->attr("pop")(index); +} + +void list_base::remove(object_cref value) +{ + this->attr("remove")(value); +} + +void list_base::reverse() +{ + if (PyList_CheckExact(this->ptr())) + { + if (PyList_Reverse(this->ptr()) == -1) + throw_error_already_set(); + } + else + { + this->attr("reverse")(); + } +} + +void list_base::sort() +{ + if (PyList_CheckExact(this->ptr())) + { + if (PyList_Sort(this->ptr()) == -1) + throw_error_already_set(); + } + else + { + this->attr("sort")(); + } +} + +#if PY_VERSION_HEX >= 0x03000000 +void list_base::sort(args_proxy const &args, + kwds_proxy const &kwds) +{ + this->attr("sort")(args, kwds); +} +#else +void list_base::sort(object_cref cmpfunc) +{ + this->attr("sort")(cmpfunc); +} +#endif + +// For some reason, moving this to the end of the TU suppresses an ICE +// with vc6. +ssize_t list_base::count(object_cref value) const +{ + object result_obj(this->attr("count")(value)); +#if PY_VERSION_HEX >= 0x03000000 + ssize_t result = PyLong_AsSsize_t(result_obj.ptr()); +#else + long result = PyInt_AsLong(result_obj.ptr()); +#endif + if (result == -1) + throw_error_already_set(); + return result; +} + +static struct register_list_pytype_ptr +{ + register_list_pytype_ptr() + { + const_cast( + converter::registry::lookup(boost::python::type_id()) + ).m_class_object = &PyList_Type; + } +}register_list_pytype_ptr_; + +}}} // namespace boost::python diff --git a/pykd/boost.python/long.cpp b/pykd/boost.python/long.cpp new file mode 100644 index 0000000..1ec8ebc --- /dev/null +++ b/pykd/boost.python/long.cpp @@ -0,0 +1,39 @@ +// Copyright David Abrahams 2002. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +#include + +namespace boost { namespace python { namespace detail { + +new_non_null_reference long_base::call(object const& arg_) +{ + return (detail::new_non_null_reference)PyObject_CallFunction( + (PyObject*)&PyLong_Type, const_cast("(O)"), + arg_.ptr()); +} + +new_non_null_reference long_base::call(object const& arg_, object const& base) +{ + return (detail::new_non_null_reference)PyObject_CallFunction( + (PyObject*)&PyLong_Type, const_cast("(OO)"), + arg_.ptr(), base.ptr()); +} + +long_base::long_base() + : object( + detail::new_reference( + PyObject_CallFunction((PyObject*)&PyLong_Type, const_cast("()"))) + ) +{} + +long_base::long_base(object_cref arg) + : object(long_base::call(arg)) +{} + +long_base::long_base(object_cref arg, object_cref base) + : object(long_base::call(arg, base)) +{} + + +}}} // namespace boost::python diff --git a/pykd/boost.python/module.cpp b/pykd/boost.python/module.cpp new file mode 100644 index 0000000..9628481 --- /dev/null +++ b/pykd/boost.python/module.cpp @@ -0,0 +1,73 @@ +// (C) Copyright David Abrahams 2000. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// The author gratefully acknowleges the support of Dragon Systems, Inc., in +// producing this work. + +#include +#include + +namespace boost { namespace python { namespace detail { + +namespace +{ + PyObject* init_module_in_scope(PyObject* m, void(*init_function)()) + { + if (m != 0) + { + // Create the current module scope + object m_obj(((borrowed_reference_t*)m)); + scope current_module(m_obj); + + handle_exception(init_function); + } + + return m; + } +} + +BOOST_PYTHON_DECL void scope_setattr_doc(char const* name, object const& x, char const* doc) +{ + // Use function::add_to_namespace to achieve overloading if + // appropriate. + scope current; + objects::add_to_namespace(current, name, x, doc); +} + +#if PY_VERSION_HEX >= 0x03000000 + +BOOST_PYTHON_DECL PyObject* init_module(PyModuleDef& moduledef, void(*init_function)()) +{ + return init_module_in_scope( + PyModule_Create(&moduledef), + init_function); +} + +#else + +namespace +{ + PyMethodDef initial_methods[] = { { 0, 0, 0, 0 } }; +} + +BOOST_PYTHON_DECL PyObject* init_module(char const* name, void(*init_function)()) +{ + return init_module_in_scope( + Py_InitModule(const_cast(name), initial_methods), + init_function); +} + +#endif + +}}} // namespace boost::python::detail + +namespace boost { namespace python { + +namespace detail +{ + BOOST_PYTHON_DECL PyObject* current_scope = 0; +} + +}} diff --git a/pykd/boost.python/object/boost_python-src.object.class.cpp b/pykd/boost.python/object/boost_python-src.object.class.cpp new file mode 100644 index 0000000..08c1ef8 --- /dev/null +++ b/pykd/boost.python/object/boost_python-src.object.class.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "class.cpp" diff --git a/pykd/boost.python/object/boost_python-src.object.enum.cpp b/pykd/boost.python/object/boost_python-src.object.enum.cpp new file mode 100644 index 0000000..798abca --- /dev/null +++ b/pykd/boost.python/object/boost_python-src.object.enum.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "enum.cpp" diff --git a/pykd/boost.python/object/boost_python-src.object.function.cpp b/pykd/boost.python/object/boost_python-src.object.function.cpp new file mode 100644 index 0000000..961a417 --- /dev/null +++ b/pykd/boost.python/object/boost_python-src.object.function.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "function.cpp" diff --git a/pykd/boost.python/object/boost_python-src.object.function_doc_signature.cpp b/pykd/boost.python/object/boost_python-src.object.function_doc_signature.cpp new file mode 100644 index 0000000..86af1d5 --- /dev/null +++ b/pykd/boost.python/object/boost_python-src.object.function_doc_signature.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "function_doc_signature.cpp" diff --git a/pykd/boost.python/object/boost_python-src.object.inheritance.cpp b/pykd/boost.python/object/boost_python-src.object.inheritance.cpp new file mode 100644 index 0000000..0725431 --- /dev/null +++ b/pykd/boost.python/object/boost_python-src.object.inheritance.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "inheritance.cpp" diff --git a/pykd/boost.python/object/boost_python-src.object.iterator.cpp b/pykd/boost.python/object/boost_python-src.object.iterator.cpp new file mode 100644 index 0000000..9cfb3c2 --- /dev/null +++ b/pykd/boost.python/object/boost_python-src.object.iterator.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "iterator.cpp" diff --git a/pykd/boost.python/object/boost_python-src.object.life_support.cpp b/pykd/boost.python/object/boost_python-src.object.life_support.cpp new file mode 100644 index 0000000..54d4422 --- /dev/null +++ b/pykd/boost.python/object/boost_python-src.object.life_support.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "life_support.cpp" diff --git a/pykd/boost.python/object/boost_python-src.object.pickle_support.cpp b/pykd/boost.python/object/boost_python-src.object.pickle_support.cpp new file mode 100644 index 0000000..b3bc57a --- /dev/null +++ b/pykd/boost.python/object/boost_python-src.object.pickle_support.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "pickle_support.cpp" diff --git a/pykd/boost.python/object/boost_python-src.object.stl_iterator.cpp b/pykd/boost.python/object/boost_python-src.object.stl_iterator.cpp new file mode 100644 index 0000000..e27520e --- /dev/null +++ b/pykd/boost.python/object/boost_python-src.object.stl_iterator.cpp @@ -0,0 +1,5 @@ +#define _SCL_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS +#pragma warning(disable: 4244 4503 4752 4800 4996) +#define BOOST_PYTHON_SOURCE +#include "stl_iterator.cpp" diff --git a/pykd/boost.python/object/class.cpp b/pykd/boost.python/object/class.cpp new file mode 100644 index 0000000..aeef688 --- /dev/null +++ b/pykd/boost.python/object/class.cpp @@ -0,0 +1,764 @@ +// Copyright David Abrahams 2001. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#include +#include // #including this first is an intel6 workaround + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace python { + +# ifdef BOOST_PYTHON_SELF_IS_CLASS +namespace self_ns +{ + self_t self; +} +# endif + +instance_holder::instance_holder() + : m_next(0) +{ +} + +instance_holder::~instance_holder() +{ +} + +extern "C" +{ + // This is copied from typeobject.c in the Python sources. Even though + // class_metatype_object doesn't set Py_TPFLAGS_HAVE_GC, that bit gets + // filled in by the base class initialization process in + // PyType_Ready(). However, tp_is_gc is *not* copied from the base + // type, making it assume that classes are GC-able even if (like + // class_type_object) they're statically allocated. + static int + type_is_gc(PyTypeObject *python_type) + { + return python_type->tp_flags & Py_TPFLAGS_HEAPTYPE; + } + + // This is also copied from the Python sources. We can't implement + // static_data as a subclass property effectively without it. + typedef struct { + PyObject_HEAD + PyObject *prop_get; + PyObject *prop_set; + PyObject *prop_del; + PyObject *prop_doc; + int getter_doc; + } propertyobject; + + // Copied from Python source and removed the part for setting docstring, + // since we don't have a setter for __doc__ and trying to set it will + // cause the init fail. + static int property_init(PyObject *self, PyObject *args, PyObject *kwds) + { + PyObject *get = NULL, *set = NULL, *del = NULL, *doc = NULL; + static const char *kwlist[] = {"fget", "fset", "fdel", "doc", 0}; + propertyobject *prop = (propertyobject *)self; + + if (!PyArg_ParseTupleAndKeywords(args, kwds, "|OOOO:property", + const_cast(kwlist), &get, &set, &del, &doc)) + return -1; + + if (get == Py_None) + get = NULL; + if (set == Py_None) + set = NULL; + if (del == Py_None) + del = NULL; + + Py_XINCREF(get); + Py_XINCREF(set); + Py_XINCREF(del); + Py_XINCREF(doc); + + prop->prop_get = get; + prop->prop_set = set; + prop->prop_del = del; + prop->prop_doc = doc; + prop->getter_doc = 0; + + return 0; + } + + + static PyObject * + static_data_descr_get(PyObject *self, PyObject * /*obj*/, PyObject * /*type*/) + { + propertyobject *gs = (propertyobject *)self; + + return PyObject_CallFunction(gs->prop_get, const_cast("()")); + } + + static int + static_data_descr_set(PyObject *self, PyObject * /*obj*/, PyObject *value) + { + propertyobject *gs = (propertyobject *)self; + PyObject *func, *res; + + if (value == NULL) + func = gs->prop_del; + else + func = gs->prop_set; + if (func == NULL) { + PyErr_SetString(PyExc_AttributeError, + value == NULL ? + "can't delete attribute" : + "can't set attribute"); + return -1; + } + if (value == NULL) + res = PyObject_CallFunction(func, const_cast("()")); + else + res = PyObject_CallFunction(func, const_cast("(O)"), value); + if (res == NULL) + return -1; + Py_DECREF(res); + return 0; + } +} + +static PyTypeObject static_data_object = { + PyVarObject_HEAD_INIT(NULL, 0) + const_cast("Boost.Python.StaticProperty"), + sizeof(propertyobject), + 0, + 0, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT // | Py_TPFLAGS_HAVE_GC + | Py_TPFLAGS_BASETYPE, /* tp_flags */ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, //&PyProperty_Type, /* tp_base */ + 0, /* tp_dict */ + static_data_descr_get, /* tp_descr_get */ + static_data_descr_set, /* tp_descr_set */ + 0, /* tp_dictoffset */ + property_init, /* tp_init */ + 0, /* tp_alloc */ + 0, // filled in with type_new /* tp_new */ + 0, // filled in with __PyObject_GC_Del /* tp_free */ + 0, /* tp_is_gc */ + 0, /* tp_bases */ + 0, /* tp_mro */ + 0, /* tp_cache */ + 0, /* tp_subclasses */ + 0, /* tp_weaklist */ +#if PYTHON_API_VERSION >= 1012 + 0 /* tp_del */ +#endif +}; + +namespace objects +{ +#if PY_VERSION_HEX < 0x03000000 + // XXX Not sure why this run into compiling error in Python 3 + extern "C" + { + // This declaration needed due to broken Python 2.2 headers + extern DL_IMPORT(PyTypeObject) PyProperty_Type; + } +#endif + + BOOST_PYTHON_DECL PyObject* static_data() + { + if (static_data_object.tp_dict == 0) + { + Py_TYPE(&static_data_object) = &PyType_Type; + static_data_object.tp_base = &PyProperty_Type; + if (PyType_Ready(&static_data_object)) + return 0; + } + return upcast(&static_data_object); + } +} + +extern "C" +{ + // Ordinarily, descriptors have a certain assymetry: you can use + // them to read attributes off the class object they adorn, but + // writing the same attribute on the class object always replaces + // the descriptor in the class __dict__. In order to properly + // represent C++ static data members, we need to allow them to be + // written through the class instance. This function of the + // metaclass makes it possible. + static int + class_setattro(PyObject *obj, PyObject *name, PyObject* value) + { + // Must use "private" Python implementation detail + // _PyType_Lookup instead of PyObject_GetAttr because the + // latter will always end up calling the descr_get function on + // any descriptor it finds; we need the unadulterated + // descriptor here. + PyObject* a = _PyType_Lookup(downcast(obj), name); + + // a is a borrowed reference or 0 + + // If we found a static data descriptor, call it directly to + // force it to set the static data member + if (a != 0 && PyObject_IsInstance(a, objects::static_data())) + return Py_TYPE(a)->tp_descr_set(a, obj, value); + else + return PyType_Type.tp_setattro(obj, name, value); + } +} + +static PyTypeObject class_metatype_object = { + PyVarObject_HEAD_INIT(NULL, 0) + const_cast("Boost.Python.class"), + PyType_Type.tp_basicsize, + 0, + 0, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + class_setattro, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT // | Py_TPFLAGS_HAVE_GC + | Py_TPFLAGS_BASETYPE, /* tp_flags */ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, //&PyType_Type, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, // filled in with type_new /* tp_new */ + 0, // filled in with __PyObject_GC_Del /* tp_free */ + (inquiry)type_is_gc, /* tp_is_gc */ + 0, /* tp_bases */ + 0, /* tp_mro */ + 0, /* tp_cache */ + 0, /* tp_subclasses */ + 0, /* tp_weaklist */ +#if PYTHON_API_VERSION >= 1012 + 0 /* tp_del */ +#endif +}; + +// Install the instance data for a C++ object into a Python instance +// object. +void instance_holder::install(PyObject* self) throw() +{ + assert(PyType_IsSubtype(Py_TYPE(Py_TYPE(self)), &class_metatype_object)); + m_next = ((objects::instance<>*)self)->objects; + ((objects::instance<>*)self)->objects = this; +} + + +namespace objects +{ +// Get the metatype object for all extension classes. + BOOST_PYTHON_DECL type_handle class_metatype() + { + if (class_metatype_object.tp_dict == 0) + { + Py_TYPE(&class_metatype_object) = &PyType_Type; + class_metatype_object.tp_base = &PyType_Type; + if (PyType_Ready(&class_metatype_object)) + return type_handle(); + } + return type_handle(borrowed(&class_metatype_object)); + } + extern "C" + { + static void instance_dealloc(PyObject* inst) + { + instance<>* kill_me = (instance<>*)inst; + + for (instance_holder* p = kill_me->objects, *next; p != 0; p = next) + { + next = p->next(); + p->~instance_holder(); + instance_holder::deallocate(inst, dynamic_cast(p)); + } + + // Python 2.2.1 won't add weak references automatically when + // tp_itemsize > 0, so we need to manage that + // ourselves. Accordingly, we also have to clean up the + // weakrefs ourselves. + if (kill_me->weakrefs != NULL) + PyObject_ClearWeakRefs(inst); + + Py_XDECREF(kill_me->dict); + + Py_TYPE(inst)->tp_free(inst); + } + + static PyObject * + instance_new(PyTypeObject* type_, PyObject* /*args*/, PyObject* /*kw*/) + { + // Attempt to find the __instance_size__ attribute. If not present, no problem. + PyObject* d = type_->tp_dict; + PyObject* instance_size_obj = PyObject_GetAttrString(d, const_cast("__instance_size__")); + + ssize_t instance_size = instance_size_obj ? +#if PY_VERSION_HEX >= 0x03000000 + PyLong_AsSsize_t(instance_size_obj) : 0; +#else + PyInt_AsLong(instance_size_obj) : 0; +#endif + + if (instance_size < 0) + instance_size = 0; + + PyErr_Clear(); // Clear any errors that may have occurred. + + instance<>* result = (instance<>*)type_->tp_alloc(type_, instance_size); + if (result) + { + // Guido says we can use ob_size for any purpose we + // like, so we'll store the total size of the object + // there. A negative number indicates that the extra + // instance memory is not yet allocated to any holders. +#if PY_VERSION_HEX >= 0x02060000 + Py_SIZE(result) = +#else + result->ob_size = +#endif + -(static_cast(offsetof(instance<>,storage) + instance_size)); + } + return (PyObject*)result; + } + + static PyObject* instance_get_dict(PyObject* op, void*) + { + instance<>* inst = downcast >(op); + if (inst->dict == 0) + inst->dict = PyDict_New(); + return python::xincref(inst->dict); + } + + static int instance_set_dict(PyObject* op, PyObject* dict, void*) + { + instance<>* inst = downcast >(op); + python::xdecref(inst->dict); + inst->dict = python::incref(dict); + return 0; + } + + } + + + static PyGetSetDef instance_getsets[] = { + {const_cast("__dict__"), instance_get_dict, instance_set_dict, NULL, 0}, + {0, 0, 0, 0, 0} + }; + + + static PyMemberDef instance_members[] = { + {const_cast("__weakref__"), T_OBJECT, offsetof(instance<>, weakrefs), 0, 0}, + {0, 0, 0, 0, 0} + }; + + static PyTypeObject class_type_object = { + PyVarObject_HEAD_INIT(NULL, 0) + const_cast("Boost.Python.instance"), + offsetof(instance<>,storage), /* tp_basicsize */ + 1, /* tp_itemsize */ + instance_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT // | Py_TPFLAGS_HAVE_GC + | Py_TPFLAGS_BASETYPE, /* tp_flags */ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + offsetof(instance<>,weakrefs), /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + instance_members, /* tp_members */ + instance_getsets, /* tp_getset */ + 0, //&PyBaseObject_Type, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + offsetof(instance<>,dict), /* tp_dictoffset */ + 0, /* tp_init */ + PyType_GenericAlloc, /* tp_alloc */ + instance_new, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + 0, /* tp_bases */ + 0, /* tp_mro */ + 0, /* tp_cache */ + 0, /* tp_subclasses */ + 0, /* tp_weaklist */ +#if PYTHON_API_VERSION >= 1012 + 0 /* tp_del */ +#endif + }; + + BOOST_PYTHON_DECL type_handle class_type() + { + if (class_type_object.tp_dict == 0) + { + Py_TYPE(&class_type_object) = incref(class_metatype().get()); + class_type_object.tp_base = &PyBaseObject_Type; + if (PyType_Ready(&class_type_object)) + return type_handle(); +// class_type_object.tp_setattro = class_setattro; + } + return type_handle(borrowed(&class_type_object)); + } + + BOOST_PYTHON_DECL void* + find_instance_impl(PyObject* inst, type_info type, bool null_shared_ptr_only) + { + if (!Py_TYPE(Py_TYPE(inst)) || + !PyType_IsSubtype(Py_TYPE(Py_TYPE(inst)), &class_metatype_object)) + return 0; + + instance<>* self = reinterpret_cast*>(inst); + + for (instance_holder* match = self->objects; match != 0; match = match->next()) + { + void* const found = match->holds(type, null_shared_ptr_only); + if (found) + return found; + } + return 0; + } + + object module_prefix() + { + return object( + PyObject_IsInstance(scope().ptr(), upcast(&PyModule_Type)) + ? object(scope().attr("__name__")) + : api::getattr(scope(), "__module__", str()) + ); + } + + namespace + { + // Find a registered class object corresponding to id. Return a + // null handle if no such class is registered. + inline type_handle query_class(type_info id) + { + converter::registration const* p = converter::registry::query(id); + return type_handle( + python::borrowed( + python::allow_null(p ? p->m_class_object : 0)) + ); + } + + // Find a registered class corresponding to id. If not found, + // throw an appropriate exception. + type_handle get_class(type_info id) + { + type_handle result(query_class(id)); + + if (result.get() == 0) + { + object report("extension class wrapper for base class "); + report = report + id.name() + " has not been created yet"; + PyErr_SetObject(PyExc_RuntimeError, report.ptr()); + throw_error_already_set(); + } + return result; + } + + // class_base constructor + // + // name - the name of the new Python class + // + // num_types - one more than the number of declared bases + // + // types - array of python::type_info, the first item + // corresponding to the class being created, and the + // rest corresponding to its declared bases. + // + inline object + new_class(char const* name, std::size_t num_types, type_info const* const types, char const* doc) + { + assert(num_types >= 1); + + // Build a tuple of the base Python type objects. If no bases + // were declared, we'll use our class_type() as the single base + // class. + ssize_t const num_bases = (std::max)(num_types - 1, static_cast(1)); + handle<> bases(PyTuple_New(num_bases)); + + for (ssize_t i = 1; i <= num_bases; ++i) + { + type_handle c = (i >= static_cast(num_types)) ? class_type() : get_class(types[i]); + // PyTuple_SET_ITEM steals this reference + PyTuple_SET_ITEM(bases.get(), static_cast(i - 1), upcast(c.release())); + } + + // Call the class metatype to create a new class + dict d; + + object m = module_prefix(); + if (m) d["__module__"] = m; + + if (doc != 0) + d["__doc__"] = doc; + + object result = object(class_metatype())(name, bases, d); + assert(PyType_IsSubtype(Py_TYPE(result.ptr()), &PyType_Type)); + + if (scope().ptr() != Py_None) + scope().attr(name) = result; + + // For pickle. Will lead to informative error messages if pickling + // is not enabled. + result.attr("__reduce__") = object(make_instance_reduce_function()); + + return result; + } + } + + class_base::class_base( + char const* name, std::size_t num_types, type_info const* const types, char const* doc) + : object(new_class(name, num_types, types, doc)) + { + // Insert the new class object in the registry + converter::registration& converters = const_cast( + converter::registry::lookup(types[0])); + + // Class object is leaked, for now + converters.m_class_object = (PyTypeObject*)incref(this->ptr()); + } + + BOOST_PYTHON_DECL void copy_class_object(type_info const& src, type_info const& dst) + { + converter::registration& dst_converters + = const_cast(converter::registry::lookup(dst)); + + converter::registration const& src_converters = converter::registry::lookup(src); + + dst_converters.m_class_object = src_converters.m_class_object; + } + + void class_base::set_instance_size(std::size_t instance_size) + { + this->attr("__instance_size__") = instance_size; + } + + void class_base::add_property( + char const* name, object const& fget, char const* docstr) + { + object property( + (python::detail::new_reference) + PyObject_CallFunction((PyObject*)&PyProperty_Type, const_cast("Osss"), fget.ptr(), 0, 0, docstr)); + + this->setattr(name, property); + } + + void class_base::add_property( + char const* name, object const& fget, object const& fset, char const* docstr) + { + object property( + (python::detail::new_reference) + PyObject_CallFunction((PyObject*)&PyProperty_Type, const_cast("OOss"), fget.ptr(), fset.ptr(), 0, docstr)); + + this->setattr(name, property); + } + + void class_base::add_static_property(char const* name, object const& fget) + { + object property( + (python::detail::new_reference) + PyObject_CallFunction(static_data(), const_cast("O"), fget.ptr()) + ); + + this->setattr(name, property); + } + + void class_base::add_static_property(char const* name, object const& fget, object const& fset) + { + object property( + (python::detail::new_reference) + PyObject_CallFunction(static_data(), const_cast("OO"), fget.ptr(), fset.ptr())); + + this->setattr(name, property); + } + + void class_base::setattr(char const* name, object const& x) + { + if (PyObject_SetAttrString(this->ptr(), const_cast(name), x.ptr()) < 0) + throw_error_already_set(); + } + + namespace + { + extern "C" PyObject* no_init(PyObject*, PyObject*) + { + ::PyErr_SetString(::PyExc_RuntimeError, const_cast("This class cannot be instantiated from Python")); + return NULL; + } + static ::PyMethodDef no_init_def = { + const_cast("__init__"), no_init, METH_VARARGS, + const_cast("Raises an exception\n" + "This class cannot be instantiated from Python\n") + }; + } + + void class_base::def_no_init() + { + handle<> f(::PyCFunction_New(&no_init_def, 0)); + this->setattr("__init__", object(f)); + } + + void class_base::enable_pickling_(bool getstate_manages_dict) + { + setattr("__safe_for_unpickling__", object(true)); + + if (getstate_manages_dict) + { + setattr("__getstate_manages_dict__", object(true)); + } + } + + namespace + { + PyObject* callable_check(PyObject* callable) + { + if (PyCallable_Check(expect_non_null(callable))) + return callable; + + ::PyErr_Format( + PyExc_TypeError + , const_cast("staticmethod expects callable object; got an object of type %s, which is not callable") + , Py_TYPE(callable)->tp_name + ); + + throw_error_already_set(); + return 0; + } + } + + void class_base::make_method_static(const char * method_name) + { + PyTypeObject* self = downcast(this->ptr()); + dict d((handle<>(borrowed(self->tp_dict)))); + + object method(d[method_name]); + + this->attr(method_name) = object( + handle<>( + PyStaticMethod_New((callable_check)(method.ptr()) ) + )); + } + + BOOST_PYTHON_DECL type_handle registered_class_object(type_info id) + { + return query_class(id); + } +} // namespace objects + + +void* instance_holder::allocate(PyObject* self_, std::size_t holder_offset, std::size_t holder_size) +{ + assert(PyType_IsSubtype(Py_TYPE(Py_TYPE(self_)), &class_metatype_object)); + objects::instance<>* self = (objects::instance<>*)self_; + + int total_size_needed = holder_offset + holder_size; + + if (-Py_SIZE(self) >= total_size_needed) + { + // holder_offset should at least point into the variable-sized part + assert(holder_offset >= offsetof(objects::instance<>,storage)); + + // Record the fact that the storage is occupied, noting where it starts + Py_SIZE(self) = holder_offset; + return (char*)self + holder_offset; + } + else + { + void* const result = PyMem_Malloc(holder_size); + if (result == 0) + throw std::bad_alloc(); + return result; + } +} + +void instance_holder::deallocate(PyObject* self_, void* storage) throw() +{ + assert(PyType_IsSubtype(Py_TYPE(Py_TYPE(self_)), &class_metatype_object)); + objects::instance<>* self = (objects::instance<>*)self_; + if (storage != (char*)self + Py_SIZE(self)) + { + PyMem_Free(storage); + } +} + +}} // namespace boost::python diff --git a/pykd/boost.python/object/enum.cpp b/pykd/boost.python/object/enum.cpp new file mode 100644 index 0000000..10122ad --- /dev/null +++ b/pykd/boost.python/object/enum.cpp @@ -0,0 +1,252 @@ +// Copyright David Abrahams 2002. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace python { namespace objects { + +struct enum_object +{ +#if PY_VERSION_HEX >= 0x03000000 + PyLongObject base_object; +#else + PyIntObject base_object; +#endif + PyObject* name; +}; + +static PyMemberDef enum_members[] = { + {const_cast("name"), T_OBJECT_EX, offsetof(enum_object,name),READONLY, 0}, + {0, 0, 0, 0, 0} +}; + + +extern "C" +{ + static void + enum_dealloc(enum_object* self) + { + Py_XDECREF(self->name); + Py_TYPE(self)->tp_free((PyObject*)self); + } + + static PyObject* enum_repr(PyObject* self_) + { + PyObject *mod = PyObject_GetAttrString( self_, "__module__"); + object auto_free = object(handle<>(mod)); + enum_object* self = downcast(self_); + if (!self->name) + { + return +#if PY_VERSION_HEX >= 0x03000000 + PyUnicode_FromFormat("%S.%s(%ld)", mod, self_->ob_type->tp_name, PyLong_AsLong(self_)); +#else + PyString_FromFormat("%s.%s(%ld)", PyString_AsString(mod), self_->ob_type->tp_name, PyInt_AS_LONG(self_)); +#endif + } + else + { + PyObject* name = self->name; + if (name == 0) + return 0; + + return +#if PY_VERSION_HEX >= 0x03000000 + PyUnicode_FromFormat("%S.%s.%S", mod, self_->ob_type->tp_name, name); +#else + PyString_FromFormat("%s.%s.%s", + PyString_AsString(mod), self_->ob_type->tp_name, PyString_AsString(name)); +#endif + } + } + + static PyObject* enum_str(PyObject* self_) + { + enum_object* self = downcast(self_); + if (!self->name) + { +#if PY_VERSION_HEX >= 0x03000000 + return PyLong_Type.tp_str(self_); +#else + return PyInt_Type.tp_str(self_); +#endif + } + else + { + return incref(self->name); + } + } +} + +static PyTypeObject enum_type_object = { + PyVarObject_HEAD_INIT(NULL, 0) // &PyType_Type + const_cast("Boost.Python.enum"), + sizeof(enum_object), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor) enum_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + enum_repr, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + enum_str, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT +#if PY_VERSION_HEX < 0x03000000 + | Py_TPFLAGS_CHECKTYPES +#endif + | Py_TPFLAGS_HAVE_GC + | Py_TPFLAGS_BASETYPE, /* tp_flags */ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + enum_members, /* tp_members */ + 0, /* tp_getset */ + 0, //&PyInt_Type, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + 0, /* tp_bases */ + 0, /* tp_mro */ + 0, /* tp_cache */ + 0, /* tp_subclasses */ + 0, /* tp_weaklist */ +#if PYTHON_API_VERSION >= 1012 + 0 /* tp_del */ +#endif +}; + +object module_prefix(); + +namespace +{ + object new_enum_type(char const* name, char const *doc) + { + if (enum_type_object.tp_dict == 0) + { + Py_TYPE(&enum_type_object) = incref(&PyType_Type); +#if PY_VERSION_HEX >= 0x03000000 + enum_type_object.tp_base = &PyLong_Type; +#else + enum_type_object.tp_base = &PyInt_Type; +#endif + if (PyType_Ready(&enum_type_object)) + throw_error_already_set(); + } + + type_handle metatype(borrowed(&PyType_Type)); + type_handle base(borrowed(&enum_type_object)); + + // suppress the instance __dict__ in these enum objects. There + // may be a slicker way, but this'll do for now. + dict d; + d["__slots__"] = tuple(); + d["values"] = dict(); + d["names"] = dict(); + + object module_name = module_prefix(); + if (module_name) + d["__module__"] = module_name; + if (doc) + d["__doc__"] = doc; + + object result = (object(metatype))(name, make_tuple(base), d); + + scope().attr(name) = result; + + return result; + } +} + +enum_base::enum_base( + char const* name + , converter::to_python_function_t to_python + , converter::convertible_function convertible + , converter::constructor_function construct + , type_info id + , char const *doc + ) + : object(new_enum_type(name, doc)) +{ + converter::registration& converters + = const_cast( + converter::registry::lookup(id)); + + converters.m_class_object = downcast(this->ptr()); + converter::registry::insert(to_python, id); + converter::registry::insert(convertible, construct, id); +} + +void enum_base::add_value(char const* name_, long value) +{ + // Convert name to Python string + object name(name_); + + // Create a new enum instance by calling the class with a value + object x = (*this)(value); + + // Store the object in the enum class + (*this).attr(name_) = x; + + dict d = extract(this->attr("values"))(); + d[value] = x; + + // Set the name field in the new enum instanec + enum_object* p = downcast(x.ptr()); + Py_XDECREF(p->name); + p->name = incref(name.ptr()); + + dict names_dict = extract(this->attr("names"))(); + names_dict[x.attr("name")] = x; +} + +void enum_base::export_values() +{ + dict d = extract(this->attr("names"))(); + list items = d.items(); + scope current; + + for (unsigned i = 0, max = len(items); i < max; ++i) + api::setattr(current, items[i][0], items[i][1]); + } + +PyObject* enum_base::to_python(PyTypeObject* type_, long x) +{ + object type((type_handle(borrowed(type_)))); + + dict d = extract(type.attr("values"))(); + object v = d.get(x, object()); + return incref( + (v == object() ? type(x) : v).ptr()); +} + +}}} // namespace boost::python::object diff --git a/pykd/boost.python/object/function.cpp b/pykd/boost.python/object/function.cpp new file mode 100644 index 0000000..5c59cc7 --- /dev/null +++ b/pykd/boost.python/object/function.cpp @@ -0,0 +1,793 @@ +// Copyright David Abrahams 2001. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include + +#if BOOST_PYTHON_DEBUG_ERROR_MESSAGES +# include +#endif + +namespace boost { namespace python { + volatile bool docstring_options::show_user_defined_ = true; + volatile bool docstring_options::show_cpp_signatures_ = true; +#ifndef BOOST_PYTHON_NO_PY_SIGNATURES + volatile bool docstring_options::show_py_signatures_ = true; +#else + volatile bool docstring_options::show_py_signatures_ = false; +#endif +}} + +namespace boost { namespace python { namespace objects { + +py_function_impl_base::~py_function_impl_base() +{ +} + +unsigned py_function_impl_base::max_arity() const +{ + return this->min_arity(); +} + +extern PyTypeObject function_type; + +function::function( + py_function const& implementation +#if BOOST_WORKAROUND(__EDG_VERSION__, == 245) + , python::detail::keyword const* names_and_defaults +#else + , python::detail::keyword const* const names_and_defaults +#endif + , unsigned num_keywords + ) + : m_fn(implementation) + , m_nkeyword_values(0) +{ + if (names_and_defaults != 0) + { + unsigned int max_arity = m_fn.max_arity(); + unsigned int keyword_offset + = max_arity > num_keywords ? max_arity - num_keywords : 0; + + + ssize_t tuple_size = num_keywords ? max_arity : 0; + m_arg_names = object(handle<>(PyTuple_New(tuple_size))); + + if (num_keywords != 0) + { + for (unsigned j = 0; j < keyword_offset; ++j) + PyTuple_SET_ITEM(m_arg_names.ptr(), j, incref(Py_None)); + } + + for (unsigned i = 0; i < num_keywords; ++i) + { + tuple kv; + + python::detail::keyword const* const p = names_and_defaults + i; + if (p->default_value) + { + kv = make_tuple(p->name, p->default_value); + ++m_nkeyword_values; + } + else + { + kv = make_tuple(p->name); + } + + PyTuple_SET_ITEM( + m_arg_names.ptr() + , i + keyword_offset + , incref(kv.ptr()) + ); + } + } + + PyObject* p = this; + if (Py_TYPE(&function_type) == 0) + { + Py_TYPE(&function_type) = &PyType_Type; + ::PyType_Ready(&function_type); + } + + (void)( // warning suppression for GCC + PyObject_INIT(p, &function_type) + ); +} + +function::~function() +{ +} + +PyObject* function::call(PyObject* args, PyObject* keywords) const +{ + std::size_t n_unnamed_actual = PyTuple_GET_SIZE(args); + std::size_t n_keyword_actual = keywords ? PyDict_Size(keywords) : 0; + std::size_t n_actual = n_unnamed_actual + n_keyword_actual; + + function const* f = this; + + // Try overloads looking for a match + do + { + // Check for a plausible number of arguments + unsigned min_arity = f->m_fn.min_arity(); + unsigned max_arity = f->m_fn.max_arity(); + + if (n_actual + f->m_nkeyword_values >= min_arity + && n_actual <= max_arity) + { + // This will be the args that actually get passed + handle<>inner_args(allow_null(borrowed(args))); + + if (n_keyword_actual > 0 // Keyword arguments were supplied + || n_actual < min_arity) // or default keyword values are needed + { + if (f->m_arg_names.is_none()) + { + // this overload doesn't accept keywords + inner_args = handle<>(); + } + else + { + // "all keywords are none" is a special case + // indicating we will accept any number of keyword + // arguments + if (PyTuple_Size(f->m_arg_names.ptr()) == 0) + { + // no argument preprocessing + } + else if (n_actual > max_arity) + { + // too many arguments + inner_args = handle<>(); + } + else + { + // build a new arg tuple, will adjust its size later + assert(max_arity <= static_cast(ssize_t_max)); + inner_args = handle<>( + PyTuple_New(static_cast(max_arity))); + + // Fill in the positional arguments + for (std::size_t i = 0; i < n_unnamed_actual; ++i) + PyTuple_SET_ITEM(inner_args.get(), i, incref(PyTuple_GET_ITEM(args, i))); + + // Grab remaining arguments by name from the keyword dictionary + std::size_t n_actual_processed = n_unnamed_actual; + + for (std::size_t arg_pos = n_unnamed_actual; arg_pos < max_arity ; ++arg_pos) + { + // Get the keyword[, value pair] corresponding + PyObject* kv = PyTuple_GET_ITEM(f->m_arg_names.ptr(), arg_pos); + + // If there were any keyword arguments, + // look up the one we need for this + // argument position + PyObject* value = n_keyword_actual + ? PyDict_GetItem(keywords, PyTuple_GET_ITEM(kv, 0)) + : 0; + + if (!value) + { + // Not found; check if there's a default value + if (PyTuple_GET_SIZE(kv) > 1) + value = PyTuple_GET_ITEM(kv, 1); + + if (!value) + { + // still not found; matching fails + PyErr_Clear(); + inner_args = handle<>(); + break; + } + } + else + { + ++n_actual_processed; + } + + PyTuple_SET_ITEM(inner_args.get(), arg_pos, incref(value)); + } + + if (inner_args.get()) + { + //check if we proccessed all the arguments + if(n_actual_processed < n_actual) + inner_args = handle<>(); + } + } + } + } + + // Call the function. Pass keywords in case it's a + // function accepting any number of keywords + PyObject* result = inner_args ? f->m_fn(inner_args.get(), keywords) : 0; + + // If the result is NULL but no error was set, m_fn failed + // the argument-matching test. + + // This assumes that all other error-reporters are + // well-behaved and never return NULL to python without + // setting an error. + if (result != 0 || PyErr_Occurred()) + return result; + } + f = f->m_overloads.get(); + } + while (f); + // None of the overloads matched; time to generate the error message + argument_error(args, keywords); + return 0; +} + +object function::signature(bool show_return_type) const +{ + py_function const& impl = m_fn; + + python::detail::signature_element const* return_type = impl.signature(); + python::detail::signature_element const* s = return_type + 1; + + list formal_params; + if (impl.max_arity() == 0) + formal_params.append("void"); + + for (unsigned n = 0; n < impl.max_arity(); ++n) + { + if (s[n].basename == 0) + { + formal_params.append("..."); + break; + } + + str param(s[n].basename); + if (s[n].lvalue) + param += " {lvalue}"; + + if (m_arg_names) // None or empty tuple will test false + { + object kv(m_arg_names[n]); + if (kv) + { + char const* const fmt = len(kv) > 1 ? " %s=%r" : " %s"; + param += fmt % kv; + } + } + + formal_params.append(param); + } + + if (show_return_type) + return "%s(%s) -> %s" % make_tuple( + m_name, str(", ").join(formal_params), return_type->basename); + return "%s(%s)" % make_tuple( + m_name, str(", ").join(formal_params)); +} + +object function::signatures(bool show_return_type) const +{ + list result; + for (function const* f = this; f; f = f->m_overloads.get()) { + result.append(f->signature(show_return_type)); + } + return result; +} + +void function::argument_error(PyObject* args, PyObject* /*keywords*/) const +{ + static handle<> exception( + PyErr_NewException(const_cast("Boost.Python.ArgumentError"), PyExc_TypeError, 0)); + + object message = "Python argument types in\n %s.%s(" + % make_tuple(this->m_namespace, this->m_name); + + list actual_args; + for (ssize_t i = 0; i < PyTuple_Size(args); ++i) + { + char const* name = PyTuple_GetItem(args, i)->ob_type->tp_name; + actual_args.append(str(name)); + } + message += str(", ").join(actual_args); + message += ")\ndid not match C++ signature:\n "; + message += str("\n ").join(signatures()); + +#if BOOST_PYTHON_DEBUG_ERROR_MESSAGES + std::printf("\n--------\n%s\n--------\n", extract(message)()); +#endif + PyErr_SetObject(exception.get(), message.ptr()); + throw_error_already_set(); +} + +void function::add_overload(handle const& overload_) +{ + function* parent = this; + + while (parent->m_overloads) + parent = parent->m_overloads.get(); + + parent->m_overloads = overload_; + + // If we have no documentation, get the docs from the overload + if (!m_doc) + m_doc = overload_->m_doc; +} + +namespace +{ + char const* const binary_operator_names[] = + { + "add__", + "and__", + "div__", + "divmod__", + "eq__", + "floordiv__", + "ge__", + "gt__", + "le__", + "lshift__", + "lt__", + "mod__", + "mul__", + "ne__", + "or__", + "pow__", + "radd__", + "rand__", + "rdiv__", + "rdivmod__", + "rfloordiv__", + "rlshift__", + "rmod__", + "rmul__", + "ror__", + "rpow__", + "rrshift__", + "rshift__", + "rsub__", + "rtruediv__", + "rxor__", + "sub__", + "truediv__", + "xor__" + }; + + struct less_cstring + { + bool operator()(char const* x, char const* y) const + { + return BOOST_CSTD_::strcmp(x,y) < 0; + } + }; + + inline bool is_binary_operator(char const* name) + { + return name[0] == '_' + && name[1] == '_' + && std::binary_search( + &binary_operator_names[0] + , binary_operator_names + sizeof(binary_operator_names)/sizeof(*binary_operator_names) + , name + 2 + , less_cstring() + ); + } + + // Something for the end of the chain of binary operators + PyObject* not_implemented(PyObject*, PyObject*) + { + Py_INCREF(Py_NotImplemented); + return Py_NotImplemented; + } + + handle not_implemented_function() + { + + static object keeper( + function_object( + py_function(¬_implemented, mpl::vector1(), 2) + , python::detail::keyword_range()) + ); + return handle(borrowed(downcast(keeper.ptr()))); + } +} + +void function::add_to_namespace( + object const& name_space, char const* name_, object const& attribute) +{ + add_to_namespace(name_space, name_, attribute, 0); +} + +namespace detail +{ + extern char py_signature_tag[]; + extern char cpp_signature_tag[]; +} + +void function::add_to_namespace( + object const& name_space, char const* name_, object const& attribute, char const* doc) +{ + str const name(name_); + PyObject* const ns = name_space.ptr(); + + if (attribute.ptr()->ob_type == &function_type) + { + function* new_func = downcast(attribute.ptr()); + handle<> dict; + +#if PY_VERSION_HEX < 0x03000000 + // Old-style class gone in Python 3 + if (PyClass_Check(ns)) + dict = handle<>(borrowed(((PyClassObject*)ns)->cl_dict)); + else +#endif + if (PyType_Check(ns)) + dict = handle<>(borrowed(((PyTypeObject*)ns)->tp_dict)); + else + dict = handle<>(PyObject_GetAttrString(ns, const_cast("__dict__"))); + + if (dict == 0) + throw_error_already_set(); + + handle<> existing(allow_null(::PyObject_GetItem(dict.get(), name.ptr()))); + + if (existing) + { + if (existing->ob_type == &function_type) + { + new_func->add_overload( + handle( + borrowed( + downcast(existing.get()) + ) + ) + ); + } + else if (existing->ob_type == &PyStaticMethod_Type) + { + char const* name_space_name = extract(name_space.attr("__name__")); + + ::PyErr_Format( + PyExc_RuntimeError + , "Boost.Python - All overloads must be exported " + "before calling \'class_<...>(\"%s\").staticmethod(\"%s\")\'" + , name_space_name + , name_ + ); + throw_error_already_set(); + } + } + else if (is_binary_operator(name_)) + { + // Binary operators need an additional overload which + // returns NotImplemented, so that Python will try the + // __rxxx__ functions on the other operand. We add this + // when no overloads for the operator already exist. + new_func->add_overload(not_implemented_function()); + } + + // A function is named the first time it is added to a namespace. + if (new_func->name().is_none()) + new_func->m_name = name; + + handle<> name_space_name( + allow_null(::PyObject_GetAttrString(name_space.ptr(), const_cast("__name__")))); + + if (name_space_name) + new_func->m_namespace = object(name_space_name); + } + + // The PyObject_GetAttrString() or PyObject_GetItem calls above may + // have left an active error + PyErr_Clear(); + if (PyObject_SetAttr(ns, name.ptr(), attribute.ptr()) < 0) + throw_error_already_set(); + + object mutable_attribute(attribute); +/* + if (doc != 0 && docstring_options::show_user_defined_) + { + // Accumulate documentation + + if ( + PyObject_HasAttrString(mutable_attribute.ptr(), "__doc__") + && mutable_attribute.attr("__doc__")) + { + mutable_attribute.attr("__doc__") += "\n\n"; + mutable_attribute.attr("__doc__") += doc; + } + else { + mutable_attribute.attr("__doc__") = doc; + } + } + + if (docstring_options::show_signatures_) + { + if ( PyObject_HasAttrString(mutable_attribute.ptr(), "__doc__") + && mutable_attribute.attr("__doc__")) { + mutable_attribute.attr("__doc__") += ( + mutable_attribute.attr("__doc__")[-1] != "\n" ? "\n\n" : "\n"); + } + else { + mutable_attribute.attr("__doc__") = ""; + } + function* f = downcast(attribute.ptr()); + mutable_attribute.attr("__doc__") += str("\n ").join(make_tuple( + "C++ signature:", f->signature(true))); + } + */ + str _doc; + + if (docstring_options::show_py_signatures_) + { + _doc += str(const_cast(detail::py_signature_tag)); + } + if (doc != 0 && docstring_options::show_user_defined_) + _doc += doc; + + if (docstring_options::show_cpp_signatures_) + { + _doc += str(const_cast(detail::cpp_signature_tag)); + } + if(_doc) + { + object mutable_attribute(attribute); + mutable_attribute.attr("__doc__")= _doc; + } +} + +BOOST_PYTHON_DECL void add_to_namespace( + object const& name_space, char const* name, object const& attribute) +{ + function::add_to_namespace(name_space, name, attribute, 0); +} + +BOOST_PYTHON_DECL void add_to_namespace( + object const& name_space, char const* name, object const& attribute, char const* doc) +{ + function::add_to_namespace(name_space, name, attribute, doc); +} + + +namespace +{ + struct bind_return + { + bind_return(PyObject*& result, function const* f, PyObject* args, PyObject* keywords) + : m_result(result) + , m_f(f) + , m_args(args) + , m_keywords(keywords) + {} + + void operator()() const + { + m_result = m_f->call(m_args, m_keywords); + } + + private: + PyObject*& m_result; + function const* m_f; + PyObject* m_args; + PyObject* m_keywords; + }; +} + +extern "C" +{ + // Stolen from Python's funcobject.c + static PyObject * + function_descr_get(PyObject *func, PyObject *obj, PyObject *type_) + { +#if PY_VERSION_HEX >= 0x03000000 + // The implement is different in Python 3 because of the removal of unbound method + if (obj == Py_None || obj == NULL) { + Py_INCREF(func); + return func; + } + return PyMethod_New(func, obj); +#else + if (obj == Py_None) + obj = NULL; + return PyMethod_New(func, obj, type_); +#endif + } + + static void + function_dealloc(PyObject* p) + { + delete static_cast(p); + } + + static PyObject * + function_call(PyObject *func, PyObject *args, PyObject *kw) + { + PyObject* result = 0; + handle_exception(bind_return(result, static_cast(func), args, kw)); + return result; + } + + // + // Here we're using the function's tp_getset rather than its + // tp_members to set up __doc__ and __name__, because tp_members + // really depends on having a POD object type (it relies on + // offsets). It might make sense to reformulate function as a POD + // at some point, but this is much more expedient. + // + static PyObject* function_get_doc(PyObject* op, void*) + { + function* f = downcast(op); + list signatures = function_doc_signature_generator::function_doc_signatures(f); + if(!signatures) return python::detail::none(); + signatures.reverse(); + return python::incref( str("\n").join(signatures).ptr()); + } + + static int function_set_doc(PyObject* op, PyObject* doc, void*) + { + function* f = downcast(op); + f->doc(doc ? object(python::detail::borrowed_reference(doc)) : object()); + return 0; + } + + static PyObject* function_get_name(PyObject* op, void*) + { + function* f = downcast(op); + if (f->name().is_none()) +#if PY_VERSION_HEX >= 0x03000000 + return PyUnicode_InternFromString(""); +#else + return PyString_InternFromString(""); +#endif + else + return python::incref(f->name().ptr()); + } + + // We add a dummy __class__ attribute in order to fool PyDoc into + // treating these as built-in functions and scanning their + // documentation + static PyObject* function_get_class(PyObject* /*op*/, void*) + { + return python::incref(upcast(&PyCFunction_Type)); + } + + static PyObject* function_get_module(PyObject* op, void*) + { + function* f = downcast(op); + object const& ns = f->get_namespace(); + if (!ns.is_none()) { + return python::incref(ns.ptr()); + } + PyErr_SetString( + PyExc_AttributeError, const_cast( + "Boost.Python function __module__ unknown.")); + return 0; + } +} + +static PyGetSetDef function_getsetlist[] = { + {const_cast("__name__"), (getter)function_get_name, 0, 0, 0 }, + {const_cast("func_name"), (getter)function_get_name, 0, 0, 0 }, + {const_cast("__module__"), (getter)function_get_module, 0, 0, 0 }, + {const_cast("func_module"), (getter)function_get_module, 0, 0, 0 }, + {const_cast("__class__"), (getter)function_get_class, 0, 0, 0 }, // see note above + {const_cast("__doc__"), (getter)function_get_doc, (setter)function_set_doc, 0, 0}, + {const_cast("func_doc"), (getter)function_get_doc, (setter)function_set_doc, 0, 0}, + {NULL, 0, 0, 0, 0} /* Sentinel */ +}; + +PyTypeObject function_type = { + PyVarObject_HEAD_INIT(NULL, 0) + const_cast("Boost.Python.function"), + sizeof(function), + 0, + (destructor)function_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, //(reprfunc)func_repr, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + function_call, /* tp_call */ + 0, /* tp_str */ + 0, // PyObject_GenericGetAttr, /* tp_getattro */ + 0, // PyObject_GenericSetAttr, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT /* | Py_TPFLAGS_HAVE_GC */,/* tp_flags */ + 0, /* tp_doc */ + 0, // (traverseproc)func_traverse, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, //offsetof(PyFunctionObject, func_weakreflist), /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, // func_memberlist, /* tp_members */ + function_getsetlist, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + function_descr_get, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, //offsetof(PyFunctionObject, func_dict), /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + 0, /* tp_bases */ + 0, /* tp_mro */ + 0, /* tp_cache */ + 0, /* tp_subclasses */ + 0, /* tp_weaklist */ +#if PYTHON_API_VERSION >= 1012 + 0 /* tp_del */ +#endif +}; + +object function_object( + py_function const& f + , python::detail::keyword_range const& keywords) +{ + return python::object( + python::detail::new_non_null_reference( + new function( + f, keywords.first, keywords.second - keywords.first))); +} + +object function_object(py_function const& f) +{ + return function_object(f, python::detail::keyword_range()); +} + + +handle<> function_handle_impl(py_function const& f) +{ + return python::handle<>( + allow_null( + new function(f, 0, 0))); +} + +} // namespace objects + +namespace detail +{ + object BOOST_PYTHON_DECL make_raw_function(objects::py_function f) + { + static keyword k; + + return objects::function_object( + f + , keyword_range(&k,&k)); + } + void BOOST_PYTHON_DECL pure_virtual_called() + { + PyErr_SetString( + PyExc_RuntimeError, const_cast("Pure virtual function called")); + throw_error_already_set(); + } +} + +}} // namespace boost::python diff --git a/pykd/boost.python/object/function_doc_signature.cpp b/pykd/boost.python/object/function_doc_signature.cpp new file mode 100644 index 0000000..4169528 --- /dev/null +++ b/pykd/boost.python/object/function_doc_signature.cpp @@ -0,0 +1,344 @@ +// Copyright Nikolay Mladenov 2007. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// boost::python::make_tuple below are for gcc 4.4 -std=c++0x compatibility +// (Intel C++ 10 and 11 with -std=c++0x don't need the full qualification). + +#include +#include +#include +#include +#include +#include + +#include + +#include + +namespace boost { namespace python { namespace objects { + + bool function_doc_signature_generator::arity_cmp( function const *f1, function const *f2 ) + { + return f1->m_fn.max_arity() < f2->m_fn.max_arity(); + } + + bool function_doc_signature_generator::are_seq_overloads( function const *f1, function const *f2 , bool check_docs) + { + py_function const & impl1 = f1->m_fn; + py_function const & impl2 = f2->m_fn; + + //the number of parameters differs by 1 + if (impl2.max_arity()-impl1.max_arity() != 1) + return false; + + // if check docs then f1 shold not have docstring or have the same docstring as f2 + if (check_docs && f2->doc() != f1->doc() && f1->doc()) + return false; + + python::detail::signature_element const* s1 = impl1.signature(); + python::detail::signature_element const* s2 = impl2.signature(); + + unsigned size = impl1.max_arity()+1; + + for (unsigned i = 0; i != size; ++i) + { + //check if the argument types are the same + if (s1[i].basename != s2[i].basename) + return false; + + //return type + if (!i) continue; + + //check if the argument default values are the same + bool f1_has_names = bool(f1->m_arg_names); + bool f2_has_names = bool(f2->m_arg_names); + if ( (f1_has_names && f2_has_names && f2->m_arg_names[i-1]!=f1->m_arg_names[i-1]) + || (f1_has_names && !f2_has_names) + || (!f1_has_names && f2_has_names && f2->m_arg_names[i-1]!=python::object()) + ) + return false; + } + return true; + } + + std::vector function_doc_signature_generator::flatten(function const *f) + { + object name = f->name(); + + std::vector res; + + while (f) { + + //this if takes out the not_implemented_function + if (f->name() == name) + res.push_back(f); + + f=f->m_overloads.get(); + } + + //std::sort(res.begin(),res.end(), &arity_cmp); + + return res; + } + std::vector function_doc_signature_generator::split_seq_overloads( const std::vector &funcs, bool split_on_doc_change) + { + std::vector res; + + std::vector::const_iterator fi = funcs.begin(); + + function const * last = *fi; + + while (++fi != funcs.end()){ + + //check if fi starts a new chain of overloads + if (!are_seq_overloads( last, *fi, split_on_doc_change )) + res.push_back(last); + + last = *fi; + } + + if (last) + res.push_back(last); + + return res; + } + + str function_doc_signature_generator::raw_function_pretty_signature(function const *f, size_t n_overloads, bool cpp_types ) + { + str res("object"); + + res = str("%s %s(%s)" % make_tuple( res, f->m_name, str("tuple args, dict kwds")) ); + + return res; + } + + const char * function_doc_signature_generator::py_type_str(const python::detail::signature_element &s) + { + if (s.basename==std::string("void")){ + static const char * none = "None"; + return none; + } + + PyTypeObject const * py_type = s.pytype_f?s.pytype_f():0; + if ( py_type ) + return py_type->tp_name; + else{ + static const char * object = "object"; + return object; + } + } + + str function_doc_signature_generator::parameter_string(py_function const &f, size_t n, object arg_names, bool cpp_types) + { + str param; + + python::detail::signature_element const * s = f.signature(); + if (cpp_types) + { + if(!n) + s = &f.get_return_type(); + if (s[n].basename == 0) + { + return str("..."); + } + + param = str(s[n].basename); + + if (s[n].lvalue) + param += " {lvalue}"; + + } + else + { + if (n) //we are processing an argument and trying to come up with a name for it + { + object kv; + if ( arg_names && (kv = arg_names[n-1]) ) + param = str( " (%s)%s" % make_tuple(py_type_str(s[n]),kv[0]) ); + else + param = str(" (%s)%s%d" % make_tuple(py_type_str(s[n]),"arg", n) ); + } + else //we are processing the return type + param = py_type_str(f.get_return_type()); + } + + //an argument - check for default value and append it + if(n && arg_names) + { + object kv(arg_names[n-1]); + if (kv && len(kv) == 2) + { + param = str("%s=%r" % make_tuple(param, kv[1])); + } + } + return param; + } + + str function_doc_signature_generator::pretty_signature(function const *f, size_t n_overloads, bool cpp_types ) + { + py_function + const& impl = f->m_fn; + ; + + + unsigned arity = impl.max_arity(); + + if(arity == unsigned(-1))// is this the proper raw function test? + { + return raw_function_pretty_signature(f,n_overloads,cpp_types); + } + + list formal_params; + + size_t n_extra_default_args=0; + + for (unsigned n = 0; n <= arity; ++n) + { + str param; + + formal_params.append( + parameter_string(impl, n, f->m_arg_names, cpp_types) + ); + + // find all the arguments with default values preceeding the arity-n_overloads + if (n && f->m_arg_names) + { + object kv(f->m_arg_names[n-1]); + + if (kv && len(kv) == 2) + { + //default argument preceeding the arity-n_overloads + if( n <= arity-n_overloads) + ++n_extra_default_args; + } + else + //argument without default, preceeding the arity-n_overloads + if( n <= arity-n_overloads) + n_extra_default_args = 0; + } + } + + n_overloads+=n_extra_default_args; + + if (!arity && cpp_types) + formal_params.append("void"); + + str ret_type (formal_params.pop(0)); + if (cpp_types ) + { + return str( + "%s %s(%s%s%s%s)" + % boost::python::make_tuple // workaround, see top + ( ret_type + , f->m_name + , str(",").join(formal_params.slice(0,arity-n_overloads)) + , n_overloads ? (n_overloads!=arity?str(" [,"):str("[ ")) : str() + , str(" [,").join(formal_params.slice(arity-n_overloads,arity)) + , std::string(n_overloads,']') + )); + }else{ + return str( + "%s(%s%s%s%s) -> %s" + % boost::python::make_tuple // workaround, see top + ( f->m_name + , str(",").join(formal_params.slice(0,arity-n_overloads)) + , n_overloads ? (n_overloads!=arity?str(" [,"):str("[ ")) : str() + , str(" [,").join(formal_params.slice(arity-n_overloads,arity)) + , std::string(n_overloads,']') + , ret_type + )); + } + + return str( + "%s %s(%s%s%s%s) %s" + % boost::python::make_tuple // workaround, see top + ( cpp_types?ret_type:str("") + , f->m_name + , str(",").join(formal_params.slice(0,arity-n_overloads)) + , n_overloads ? (n_overloads!=arity?str(" [,"):str("[ ")) : str() + , str(" [,").join(formal_params.slice(arity-n_overloads,arity)) + , std::string(n_overloads,']') + , cpp_types?str(""):ret_type + )); + + } + + namespace detail { + char py_signature_tag[] = "PY signature :"; + char cpp_signature_tag[] = "C++ signature :"; + } + + list function_doc_signature_generator::function_doc_signatures( function const * f) + { + list signatures; + std::vector funcs = flatten( f); + std::vector split_funcs = split_seq_overloads( funcs, true); + std::vector::const_iterator sfi=split_funcs.begin(), fi; + size_t n_overloads=0; + for (fi=funcs.begin(); fi!=funcs.end(); ++fi) + { + if(*sfi == *fi){ + if((*fi)->doc()) + { + str func_doc = str((*fi)->doc()); + + int doc_len = len(func_doc); + + bool show_py_signature = doc_len >= int(sizeof(detail::py_signature_tag)/sizeof(char)-1) + && str(detail::py_signature_tag) == func_doc.slice(0, int(sizeof(detail::py_signature_tag)/sizeof(char))-1); + if(show_py_signature) + { + func_doc = str(func_doc.slice(int(sizeof(detail::py_signature_tag)/sizeof(char))-1, _)); + doc_len = len(func_doc); + } + + bool show_cpp_signature = doc_len >= int(sizeof(detail::cpp_signature_tag)/sizeof(char)-1) + && str(detail::cpp_signature_tag) == func_doc.slice( 1-int(sizeof(detail::cpp_signature_tag)/sizeof(char)), _); + + if(show_cpp_signature) + { + func_doc = str(func_doc.slice(_, 1-int(sizeof(detail::cpp_signature_tag)/sizeof(char)))); + doc_len = len(func_doc); + } + + str res="\n"; + str pad = "\n"; + + if(show_py_signature) + { + str sig = pretty_signature(*fi, n_overloads,false); + res+=sig; + if(doc_len || show_cpp_signature )res+=" :"; + pad+= str(" "); + } + + if(doc_len) + { + if(show_py_signature) + res+=pad; + res+= pad.join(func_doc.split("\n")); + } + + if( show_cpp_signature) + { + if(len(res)>1) + res+="\n"+pad; + res+=detail::cpp_signature_tag+pad+" "+pretty_signature(*fi, n_overloads,true); + } + + signatures.append(res); + } + ++sfi; + n_overloads = 0; + }else + ++n_overloads ; + } + + return signatures; + } + + +}}} + diff --git a/pykd/boost.python/object/inheritance.cpp b/pykd/boost.python/object/inheritance.cpp new file mode 100644 index 0000000..7dc9db1 --- /dev/null +++ b/pykd/boost.python/object/inheritance.cpp @@ -0,0 +1,495 @@ +// Copyright David Abrahams 2002. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +#include +#include +#include +#if _MSC_FULL_VER >= 13102171 && _MSC_FULL_VER <= 13102179 +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// +// Procedure: +// +// The search is a BFS over the space of (type,address) pairs +// guided by the edges of the casting graph whose nodes +// correspond to classes, and whose edges are traversed by +// applying associated cast functions to an address. We use +// vertex distance to the goal node in the cast_graph to rate the +// paths. The vertex distance to any goal node is calculated on +// demand and outdated by the addition of edges to the graph. + +namespace boost { +namespace +{ + enum edge_cast_t { edge_cast = 8010 }; + template inline void unused_variable(const T&) { } +} + +// Install properties +BOOST_INSTALL_PROPERTY(edge, cast); + +namespace +{ + typedef void*(*cast_function)(void*); + + // + // Here we put together the low-level data structures of the + // casting graph representation. + // + typedef python::type_info class_id; + + // represents a graph of available casts + +#if 0 + struct cast_graph + : +#else + typedef +#endif + adjacency_list > > +#if 0 + {}; +#else + cast_graph; +#endif + + typedef cast_graph::vertex_descriptor vertex_t; + typedef cast_graph::edge_descriptor edge_t; + + struct smart_graph + { + typedef std::vector::const_iterator node_distance_map; + + typedef std::pair out_edges_t; + + // Return a map of the distances from any node to the given + // target node + node_distance_map distances_to(vertex_t target) const + { + std::size_t n = num_vertices(m_topology); + if (m_distances.size() != n * n) + { + m_distances.clear(); + m_distances.resize(n * n, (std::numeric_limits::max)()); + m_known_vertices = n; + } + + std::vector::iterator to_target = m_distances.begin() + n * target; + + // this node hasn't been used as a target yet + if (to_target[target] != 0) + { + typedef reverse_graph reverse_cast_graph; + reverse_cast_graph reverse_topology(m_topology); + + to_target[target] = 0; + + breadth_first_search( + reverse_topology, target + , visitor( + make_bfs_visitor( + record_distances( + make_iterator_property_map( + to_target + , get(vertex_index, reverse_topology) +# ifdef BOOST_NO_STD_ITERATOR_TRAITS + , *to_target +# endif + ) + , on_tree_edge() + )))); + } + + return to_target; + } + + cast_graph& topology() { return m_topology; } + cast_graph const& topology() const { return m_topology; } + + smart_graph() + : m_known_vertices(0) + {} + + private: + cast_graph m_topology; + mutable std::vector m_distances; + mutable std::size_t m_known_vertices; + }; + + smart_graph& full_graph() + { + static smart_graph x; + return x; + } + + smart_graph& up_graph() + { + static smart_graph x; + return x; + } + + // + // Our index of class types + // + using boost::python::objects::dynamic_id_function; + typedef tuples::tuple< + class_id // static type + , vertex_t // corresponding vertex + , dynamic_id_function // dynamic_id if polymorphic, or 0 + > + index_entry_interface; + typedef index_entry_interface::inherited index_entry; + enum { ksrc_static_t, kvertex, kdynamic_id }; + + typedef std::vector type_index_t; + + + type_index_t& type_index() + { + static type_index_t x; + return x; + } + + template + struct select1st + { + typedef typename tuples::element<0, Tuple>::type result_type; + + result_type const& operator()(Tuple const& x) const + { + return tuples::get<0>(x); + } + }; + + // map a type to a position in the index + inline type_index_t::iterator type_position(class_id type) + { + typedef index_entry entry; + + return std::lower_bound( + type_index().begin(), type_index().end() + , boost::make_tuple(type, vertex_t(), dynamic_id_function(0)) + , boost::bind(std::less() + , boost::bind(select1st(), _1) + , boost::bind(select1st(), _2))); + } + + inline index_entry* seek_type(class_id type) + { + type_index_t::iterator p = type_position(type); + if (p == type_index().end() || tuples::get(*p) != type) + return 0; + else + return &*p; + } + + // Get the entry for a type, inserting if necessary + inline type_index_t::iterator demand_type(class_id type) + { + type_index_t::iterator p = type_position(type); + + if (p != type_index().end() && tuples::get(*p) == type) + return p; + + vertex_t v = add_vertex(full_graph().topology()); + vertex_t v2 = add_vertex(up_graph().topology()); + unused_variable(v2); + assert(v == v2); + return type_index().insert(p, boost::make_tuple(type, v, dynamic_id_function(0))); + } + + // Map a two types to a vertex in the graph, inserting if necessary + typedef std::pair + type_index_iterator_pair; + + inline type_index_iterator_pair + demand_types(class_id t1, class_id t2) + { + // be sure there will be no reallocation + type_index().reserve(type_index().size() + 2); + type_index_t::iterator first = demand_type(t1); + type_index_t::iterator second = demand_type(t2); + if (first == second) + ++first; + return std::make_pair(first, second); + } + + struct q_elt + { + q_elt(std::size_t distance + , void* src_address + , vertex_t target + , cast_function cast + ) + : distance(distance) + , src_address(src_address) + , target(target) + , cast(cast) + {} + + std::size_t distance; + void* src_address; + vertex_t target; + cast_function cast; + + bool operator<(q_elt const& rhs) const + { + return distance < rhs.distance; + } + }; + + // Optimization: + // + // Given p, src_t, dst_t + // + // Get a pointer pd to the most-derived object + // if it's polymorphic, dynamic_cast to void* + // otherwise pd = p + // + // Get the most-derived typeid src_td + // + // ptrdiff_t offset = p - pd + // + // Now we can keep a cache, for [src_t, offset, src_td, dst_t] of + // the cast transformation function to use on p and the next src_t + // in the chain. src_td, dst_t don't change throughout this + // process. In order to represent unreachability, when a pair is + // found to be unreachable, we stick a 0-returning "dead-cast" + // function in the cache. + + // This is needed in a few places below + inline void* identity_cast(void* p) + { + return p; + } + + void* search(smart_graph const& g, void* p, vertex_t src, vertex_t dst) + { + // I think this test was thoroughly bogus -- dwa + // If we know there's no path; bail now. + // if (src > g.known_vertices() || dst > g.known_vertices()) + // return 0; + + smart_graph::node_distance_map d(g.distances_to(dst)); + + if (d[src] == (std::numeric_limits::max)()) + return 0; + + typedef property_map::const_type cast_map; + cast_map casts = get(edge_cast, g.topology()); + + typedef std::pair search_state; + typedef std::vector visited_t; + visited_t visited; + std::priority_queue q; + + q.push(q_elt(d[src], p, src, identity_cast)); + while (!q.empty()) + { + q_elt top = q.top(); + q.pop(); + + // Check to see if we have a real state + void* dst_address = top.cast(top.src_address); + if (dst_address == 0) + continue; + + if (top.target == dst) + return dst_address; + + search_state s(top.target,dst_address); + + visited_t::iterator pos = std::lower_bound( + visited.begin(), visited.end(), s); + + // If already visited, continue + if (pos != visited.end() && *pos == s) + continue; + + visited.insert(pos, s); // mark it + + // expand it: + smart_graph::out_edges_t edges = out_edges(s.first, g.topology()); + for (cast_graph::out_edge_iterator p = edges.first + , finish = edges.second + ; p != finish + ; ++p + ) + { + edge_t e = *p; + q.push(q_elt( + d[target(e, g.topology())] + , dst_address + , target(e, g.topology()) + , boost::get(casts, e))); + } + } + return 0; + } + + struct cache_element + { + typedef tuples::tuple< + class_id // source static type + , class_id // target type + , std::ptrdiff_t // offset within source object + , class_id // source dynamic type + >::inherited key_type; + + cache_element(key_type const& k) + : key(k) + , offset(0) + {} + + key_type key; + std::ptrdiff_t offset; + + BOOST_STATIC_CONSTANT( + std::ptrdiff_t, not_found = integer_traits::const_min); + + bool operator<(cache_element const& rhs) const + { + return this->key < rhs.key; + } + + bool unreachable() const + { + return offset == not_found; + } + }; + + enum { kdst_t = ksrc_static_t + 1, koffset, ksrc_dynamic_t }; + typedef std::vector cache_t; + + cache_t& cache() + { + static cache_t x; + return x; + } + + inline void* convert_type(void* const p, class_id src_t, class_id dst_t, bool polymorphic) + { + // Quickly rule out unregistered types + index_entry* src_p = seek_type(src_t); + if (src_p == 0) + return 0; + + index_entry* dst_p = seek_type(dst_t); + if (dst_p == 0) + return 0; + + // Look up the dynamic_id function and call it to get the dynamic + // info + boost::python::objects::dynamic_id_t dynamic_id = polymorphic + ? tuples::get(*src_p)(p) + : std::make_pair(p, src_t); + + // Look in the cache first for a quickie address translation + std::ptrdiff_t offset = (char*)p - (char*)dynamic_id.first; + + cache_element seek(boost::make_tuple(src_t, dst_t, offset, dynamic_id.second)); + cache_t& c = cache(); + cache_t::iterator const cache_pos + = std::lower_bound(c.begin(), c.end(), seek); + + + // if found in the cache, we're done + if (cache_pos != c.end() && cache_pos->key == seek.key) + { + return cache_pos->offset == cache_element::not_found + ? 0 : (char*)p + cache_pos->offset; + } + + // If we are starting at the most-derived type, only look in the up graph + smart_graph const& g = polymorphic && dynamic_id.second != src_t + ? full_graph() : up_graph(); + + void* result = search( + g, p, tuples::get(*src_p) + , tuples::get(*dst_p)); + + // update the cache + c.insert(cache_pos, seek)->offset + = (result == 0) ? cache_element::not_found : (char*)result - (char*)p; + + return result; + } +} + +namespace python { namespace objects { + +BOOST_PYTHON_DECL void* find_dynamic_type(void* p, class_id src_t, class_id dst_t) +{ + return convert_type(p, src_t, dst_t, true); +} + +BOOST_PYTHON_DECL void* find_static_type(void* p, class_id src_t, class_id dst_t) +{ + return convert_type(p, src_t, dst_t, false); +} + +BOOST_PYTHON_DECL void add_cast( + class_id src_t, class_id dst_t, cast_function cast, bool is_downcast) +{ + // adding an edge will invalidate any record of unreachability in + // the cache. + static std::size_t expected_cache_len = 0; + cache_t& c = cache(); + if (c.size() > expected_cache_len) + { + c.erase(std::remove_if( + c.begin(), c.end(), + mem_fn(&cache_element::unreachable)) + , c.end()); + + // If any new cache entries get added, we'll have to do this + // again when the next edge is added + expected_cache_len = c.size(); + } + + type_index_iterator_pair types = demand_types(src_t, dst_t); + vertex_t src = tuples::get(*types.first); + vertex_t dst = tuples::get(*types.second); + + cast_graph* const g[2] = { &up_graph().topology(), &full_graph().topology() }; + + for (cast_graph*const* p = g + (is_downcast ? 1 : 0); p < g + 2; ++p) + { + edge_t e; + bool added; + + tie(e, added) = add_edge(src, dst, **p); + assert(added); + + put(get(edge_cast, **p), e, cast); + put(get(edge_index, **p), e, num_edges(full_graph().topology()) - 1); + } +} + +BOOST_PYTHON_DECL void register_dynamic_id_aux( + class_id static_id, dynamic_id_function get_dynamic_id) +{ + tuples::get(*demand_type(static_id)) = get_dynamic_id; +} + +}}} // namespace boost::python::objects diff --git a/pykd/boost.python/object/iterator.cpp b/pykd/boost.python/object/iterator.cpp new file mode 100644 index 0000000..3f6c4ad --- /dev/null +++ b/pykd/boost.python/object/iterator.cpp @@ -0,0 +1,39 @@ +// Copyright David Abrahams 2002. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include + +namespace boost { namespace python { namespace objects { + +namespace +{ + PyObject* identity(PyObject* args_, PyObject*) + { + PyObject* x = PyTuple_GET_ITEM(args_,0); + Py_INCREF(x); + return x; + } +} + +BOOST_PYTHON_DECL object const& identity_function() +{ + static object result( + function_object( + py_function(&identity, mpl::vector2()) + ) + ); + return result; +} + +void stop_iteration_error() +{ + PyErr_SetObject(PyExc_StopIteration, Py_None); + throw_error_already_set(); +} + +}}} // namespace boost::python::objects diff --git a/pykd/boost.python/object/life_support.cpp b/pykd/boost.python/object/life_support.cpp new file mode 100644 index 0000000..b7e9aa8 --- /dev/null +++ b/pykd/boost.python/object/life_support.cpp @@ -0,0 +1,121 @@ +// Copyright David Abrahams 2002. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +#include +#include +#include + +namespace boost { namespace python { namespace objects { + +struct life_support +{ + PyObject_HEAD + PyObject* patient; +}; + +extern "C" +{ + static void + life_support_dealloc(PyObject* self) + { + Py_XDECREF(((life_support*)self)->patient); + self->ob_type->tp_free(self); + } + + static PyObject * + life_support_call(PyObject *self, PyObject *arg, PyObject * /*kw*/) + { + // Let the patient die now + Py_XDECREF(((life_support*)self)->patient); + ((life_support*)self)->patient = 0; + // Let the weak reference die. This probably kills us. + Py_XDECREF(PyTuple_GET_ITEM(arg, 0)); + return ::boost::python::detail::none(); + } +} + +PyTypeObject life_support_type = { + PyVarObject_HEAD_INIT(NULL, 0)//(&PyType_Type) + const_cast("Boost.Python.life_support"), + sizeof(life_support), + 0, + life_support_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 0, //(reprfunc)func_repr, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + life_support_call, /* tp_call */ + 0, /* tp_str */ + 0, // PyObject_GenericGetAttr, /* tp_getattro */ + 0, // PyObject_GenericSetAttr, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT /* | Py_TPFLAGS_HAVE_GC */,/* tp_flags */ + 0, /* tp_doc */ + 0, // (traverseproc)func_traverse, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, //offsetof(PyLife_SupportObject, func_weakreflist), /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, // func_memberlist, /* tp_members */ + 0, //func_getsetlist, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, //offsetof(PyLife_SupportObject, func_dict), /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + 0, /* tp_bases */ + 0, /* tp_mro */ + 0, /* tp_cache */ + 0, /* tp_subclasses */ + 0, /* tp_weaklist */ +#if PYTHON_API_VERSION >= 1012 + 0 /* tp_del */ +#endif +}; + +PyObject* make_nurse_and_patient(PyObject* nurse, PyObject* patient) +{ + if (nurse == Py_None || nurse == patient) + return nurse; + + if (Py_TYPE(&life_support_type) == 0) + { + Py_TYPE(&life_support_type) = &PyType_Type; + PyType_Ready(&life_support_type); + } + + life_support* system = PyObject_New(life_support, &life_support_type); + if (!system) + return 0; + + system->patient = 0; + + // We're going to leak this reference, but don't worry; the + // life_support system decrements it when the nurse dies. + PyObject* weakref = PyWeakref_NewRef(nurse, (PyObject*)system); + + // weakref has either taken ownership, or we have to release it + // anyway + Py_DECREF(system); + if (!weakref) + return 0; + + system->patient = patient; + Py_XINCREF(patient); // hang on to the patient until death + return weakref; +} + +}}} // namespace boost::python::objects diff --git a/pykd/boost.python/object/pickle_support.cpp b/pykd/boost.python/object/pickle_support.cpp new file mode 100644 index 0000000..428c07b --- /dev/null +++ b/pykd/boost.python/object/pickle_support.cpp @@ -0,0 +1,78 @@ +// (C) Copyright R.W. Grosse-Kunstleve 2002. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include + +namespace boost { namespace python { + +namespace { + + tuple instance_reduce(object instance_obj) + { + list result; + object instance_class(instance_obj.attr("__class__")); + result.append(instance_class); + object none; + if (!getattr(instance_obj, "__safe_for_unpickling__", none)) + { + str type_name(getattr(instance_class, "__name__")); + str module_name(getattr(instance_class, "__module__", object(""))); + if (module_name) + module_name += "."; + + PyErr_SetObject( + PyExc_RuntimeError, + ( "Pickling of \"%s\" instances is not enabled" + " (http://www.boost.org/libs/python/doc/v2/pickle.html)" + % (module_name+type_name)).ptr() + ); + + throw_error_already_set(); + } + object getinitargs = getattr(instance_obj, "__getinitargs__", none); + tuple initargs; + if (!getinitargs.is_none()) { + initargs = tuple(getinitargs()); + } + result.append(initargs); + object getstate = getattr(instance_obj, "__getstate__", none); + object instance_dict = getattr(instance_obj, "__dict__", none); + long len_instance_dict = 0; + if (!instance_dict.is_none()) { + len_instance_dict = len(instance_dict); + } + if (!getstate.is_none()) { + if (len_instance_dict > 0) { + object getstate_manages_dict = getattr( + instance_obj, "__getstate_manages_dict__", none); + if (getstate_manages_dict.is_none()) { + PyErr_SetString(PyExc_RuntimeError, + "Incomplete pickle support" + " (__getstate_manages_dict__ not set)"); + throw_error_already_set(); + } + } + result.append(getstate()); + } + else if (len_instance_dict > 0) { + result.append(instance_dict); + } + return tuple(result); + } + +} // namespace + +object const& make_instance_reduce_function() +{ + static object result(&instance_reduce); + return result; +} + +}} // namespace boost::python diff --git a/pykd/boost.python/object/stl_iterator.cpp b/pykd/boost.python/object/stl_iterator.cpp new file mode 100644 index 0000000..e32d321 --- /dev/null +++ b/pykd/boost.python/object/stl_iterator.cpp @@ -0,0 +1,48 @@ +// Copyright Eric Niebler 2005. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// Credits: +// Andreas Kl\:ockner for fixing increment() to handle +// error conditions. + +#include +#include +#include + +namespace boost { namespace python { namespace objects +{ + +stl_input_iterator_impl::stl_input_iterator_impl() + : it_() + , ob_() +{ +} + +stl_input_iterator_impl::stl_input_iterator_impl(boost::python::object const &ob) + : it_(ob.attr("__iter__")()) + , ob_() +{ + this->increment(); +} + +void stl_input_iterator_impl::increment() +{ + this->ob_ = boost::python::handle<>( + boost::python::allow_null(PyIter_Next(this->it_.ptr()))); + if (PyErr_Occurred()) + throw boost::python::error_already_set(); +} + +bool stl_input_iterator_impl::equal(stl_input_iterator_impl const &that) const +{ + return !this->ob_ == !that.ob_; +} + +boost::python::handle<> const &stl_input_iterator_impl::current() const +{ + return this->ob_; +} + +}}} // namespace boost::python::objects diff --git a/pykd/boost.python/object_operators.cpp b/pykd/boost.python/object_operators.cpp new file mode 100644 index 0000000..b993245 --- /dev/null +++ b/pykd/boost.python/object_operators.cpp @@ -0,0 +1,85 @@ +// Copyright David Abrahams 2002. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#include +#include + +namespace boost { namespace python { namespace api { + +# define BOOST_PYTHON_COMPARE_OP(op, opid) \ +BOOST_PYTHON_DECL object operator op(object const& l, object const& r) \ +{ \ + return object( \ + detail::new_reference( \ + PyObject_RichCompare( \ + l.ptr(), r.ptr(), opid)) \ + ); \ +} +BOOST_PYTHON_COMPARE_OP(>, Py_GT) +BOOST_PYTHON_COMPARE_OP(>=, Py_GE) +BOOST_PYTHON_COMPARE_OP(<, Py_LT) +BOOST_PYTHON_COMPARE_OP(<=, Py_LE) +BOOST_PYTHON_COMPARE_OP(==, Py_EQ) +BOOST_PYTHON_COMPARE_OP(!=, Py_NE) +# undef BOOST_PYTHON_COMPARE_OP + + +#define BOOST_PYTHON_BINARY_OPERATOR(op, name) \ +BOOST_PYTHON_DECL object operator op(object const& l, object const& r) \ +{ \ + return object( \ + detail::new_reference( \ + PyNumber_##name(l.ptr(), r.ptr())) \ + ); \ +} + +BOOST_PYTHON_BINARY_OPERATOR(+, Add) +BOOST_PYTHON_BINARY_OPERATOR(-, Subtract) +BOOST_PYTHON_BINARY_OPERATOR(*, Multiply) +#if PY_VERSION_HEX >= 0x03000000 +// We choose FloorDivide instead of TrueDivide to keep the semantic +// conform with C/C++'s '/' operator +BOOST_PYTHON_BINARY_OPERATOR(/, FloorDivide) +#else +BOOST_PYTHON_BINARY_OPERATOR(/, Divide) +#endif +BOOST_PYTHON_BINARY_OPERATOR(%, Remainder) +BOOST_PYTHON_BINARY_OPERATOR(<<, Lshift) +BOOST_PYTHON_BINARY_OPERATOR(>>, Rshift) +BOOST_PYTHON_BINARY_OPERATOR(&, And) +BOOST_PYTHON_BINARY_OPERATOR(^, Xor) +BOOST_PYTHON_BINARY_OPERATOR(|, Or) +#undef BOOST_PYTHON_BINARY_OPERATOR + +#define BOOST_PYTHON_INPLACE_OPERATOR(op, name) \ +BOOST_PYTHON_DECL object& operator op##=(object& l, object const& r) \ +{ \ + return l = object( \ + (detail::new_reference) \ + PyNumber_InPlace##name(l.ptr(), r.ptr())); \ +} + +BOOST_PYTHON_INPLACE_OPERATOR(+, Add) +BOOST_PYTHON_INPLACE_OPERATOR(-, Subtract) +BOOST_PYTHON_INPLACE_OPERATOR(*, Multiply) +#if PY_VERSION_HEX >= 0x03000000 +// Same reason as above for choosing FloorDivide instead of TrueDivide +BOOST_PYTHON_INPLACE_OPERATOR(/, FloorDivide) +#else +BOOST_PYTHON_INPLACE_OPERATOR(/, Divide) +#endif +BOOST_PYTHON_INPLACE_OPERATOR(%, Remainder) +BOOST_PYTHON_INPLACE_OPERATOR(<<, Lshift) +BOOST_PYTHON_INPLACE_OPERATOR(>>, Rshift) +BOOST_PYTHON_INPLACE_OPERATOR(&, And) +BOOST_PYTHON_INPLACE_OPERATOR(^, Xor) +BOOST_PYTHON_INPLACE_OPERATOR(|, Or) +#undef BOOST_PYTHON_INPLACE_OPERATOR + +object::object(handle<> const& x) + : object_base(python::incref(python::expect_non_null(x.get()))) +{} + +}}} // namespace boost::python diff --git a/pykd/boost.python/object_protocol.cpp b/pykd/boost.python/object_protocol.cpp new file mode 100644 index 0000000..95c8c73 --- /dev/null +++ b/pykd/boost.python/object_protocol.cpp @@ -0,0 +1,197 @@ +// Copyright David Abrahams 2002. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include + +namespace boost { namespace python { namespace api { + +BOOST_PYTHON_DECL object getattr(object const& target, object const& key) +{ + return object(detail::new_reference(PyObject_GetAttr(target.ptr(), key.ptr()))); +} + +BOOST_PYTHON_DECL object getattr(object const& target, object const& key, object const& default_) +{ + PyObject* result = PyObject_GetAttr(target.ptr(), key.ptr()); + if (result == NULL && PyErr_ExceptionMatches(PyExc_AttributeError)) + { + PyErr_Clear(); + return default_; + } + return object(detail::new_reference(result)); +} + +BOOST_PYTHON_DECL void setattr(object const& target, object const& key, object const& value) +{ + if (PyObject_SetAttr(target.ptr(), key.ptr(), value.ptr()) == -1) + throw_error_already_set(); +} + +BOOST_PYTHON_DECL void delattr(object const& target, object const& key) +{ + if (PyObject_DelAttr(target.ptr(), key.ptr()) == -1) + throw_error_already_set(); +} + +BOOST_PYTHON_DECL object getattr(object const& target, char const* key) +{ + return object( + detail::new_reference( + PyObject_GetAttrString(target.ptr(), const_cast(key)) + )); +} + +BOOST_PYTHON_DECL object getattr(object const& target, char const* key, object const& default_) +{ + PyObject* result = PyObject_GetAttrString(target.ptr(), const_cast(key)); + if (result == NULL && PyErr_ExceptionMatches(PyExc_AttributeError)) + { + PyErr_Clear(); + return default_; + } + return object(detail::new_reference(result)); + +} +BOOST_PYTHON_DECL void setattr(object const& target, char const* key, object const& value) +{ + if (PyObject_SetAttrString( + target.ptr(), const_cast(key), value.ptr()) == -1 + ) + { + throw_error_already_set(); + } +} + +BOOST_PYTHON_DECL void delattr(object const& target, char const* key) +{ + if (PyObject_DelAttrString( + target.ptr(), const_cast(key)) == -1 + ) + { + throw_error_already_set(); + } +} + +BOOST_PYTHON_DECL object getitem(object const& target, object const& key) +{ + return object(detail::new_reference( + PyObject_GetItem(target.ptr(), key.ptr()))); +} + +BOOST_PYTHON_DECL void setitem(object const& target, object const& key, object const& value) +{ + if (PyObject_SetItem(target.ptr(), key.ptr(), value.ptr()) == -1) + throw_error_already_set(); +} + +BOOST_PYTHON_DECL void delitem(object const& target, object const& key) +{ + if (PyObject_DelItem(target.ptr(), key.ptr()) == -1) + throw_error_already_set(); +} + +namespace // slicing code copied directly out of the Python implementation +{ + #undef ISINT + #define ISINT(x) ((x) == NULL || PyInt_Check(x) || PyLong_Check(x)) + + static PyObject * + apply_slice(PyObject *u, PyObject *v, PyObject *w) /* return u[v:w] */ + { +#if PY_VERSION_HEX < 0x03000000 + PyTypeObject *tp = u->ob_type; + PySequenceMethods *sq = tp->tp_as_sequence; + + if (sq && sq->sq_slice && ISINT(v) && ISINT(w)) { + ssize_t ilow = 0, ihigh = ssize_t_max; + if (!_PyEval_SliceIndex(v, &ilow)) + return NULL; + if (!_PyEval_SliceIndex(w, &ihigh)) + return NULL; + return PySequence_GetSlice(u, ilow, ihigh); + } + else +#endif + { + PyObject *slice = PySlice_New(v, w, NULL); + if (slice != NULL) { + PyObject *res = PyObject_GetItem(u, slice); + Py_DECREF(slice); + return res; + } + else + return NULL; + } + } + + static int + assign_slice(PyObject *u, PyObject *v, PyObject *w, PyObject *x) + /* u[v:w] = x */ + { +#if PY_VERSION_HEX < 0x03000000 + PyTypeObject *tp = u->ob_type; + PySequenceMethods *sq = tp->tp_as_sequence; + + if (sq && sq->sq_slice && ISINT(v) && ISINT(w)) { + ssize_t ilow = 0, ihigh = ssize_t_max; + if (!_PyEval_SliceIndex(v, &ilow)) + return -1; + if (!_PyEval_SliceIndex(w, &ihigh)) + return -1; + if (x == NULL) + return PySequence_DelSlice(u, ilow, ihigh); + else + return PySequence_SetSlice(u, ilow, ihigh, x); + } + else +#endif + { + PyObject *slice = PySlice_New(v, w, NULL); + if (slice != NULL) { + int res; + if (x != NULL) + res = PyObject_SetItem(u, slice, x); + else + res = PyObject_DelItem(u, slice); + Py_DECREF(slice); + return res; + } + else + return -1; + } + } +} + +BOOST_PYTHON_DECL object getslice(object const& target, handle<> const& begin, handle<> const& end) +{ + return object( + detail::new_reference( + apply_slice(target.ptr(), begin.get(), end.get()))); +} + +BOOST_PYTHON_DECL void setslice(object const& target, handle<> const& begin, handle<> const& end, object const& value) +{ + if (assign_slice( + target.ptr(), begin.get(), end.get(), value.ptr()) == -1 + ) + { + throw_error_already_set(); + } +} + +BOOST_PYTHON_DECL void delslice(object const& target, handle<> const& begin, handle<> const& end) +{ + if (assign_slice( + target.ptr(), begin.get(), end.get(), 0) == -1 + ) + { + throw_error_already_set(); + } +} + +}}} // namespace boost::python::api diff --git a/pykd/boost.python/slice.cpp b/pykd/boost.python/slice.cpp new file mode 100644 index 0000000..ee55f94 --- /dev/null +++ b/pykd/boost.python/slice.cpp @@ -0,0 +1,37 @@ +#include "boost/python/slice.hpp" + +// Copyright (c) 2004 Jonathan Brandmeyer +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + +namespace boost { namespace python { namespace detail { + +slice_base::slice_base(PyObject* start, PyObject* stop, PyObject* step) + : object(detail::new_reference( PySlice_New(start, stop, step))) +{ +} + +object +slice_base::start() const +{ + return object( detail::borrowed_reference( + ((PySliceObject*)this->ptr())->start)); +} + +object +slice_base::stop() const +{ + return object( detail::borrowed_reference( + ((PySliceObject*)this->ptr())->stop)); +} + +object +slice_base::step() const +{ + return object( detail::borrowed_reference( + ((PySliceObject*)this->ptr())->step)); +} + +} } } // !namespace boost::python::detail diff --git a/pykd/boost.python/str.cpp b/pykd/boost.python/str.cpp new file mode 100644 index 0000000..5122f7f --- /dev/null +++ b/pykd/boost.python/str.cpp @@ -0,0 +1,419 @@ +// Copyright David Abrahams 2004. Distributed under the Boost +// Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +#include +#include +#include + +namespace boost { namespace python { namespace detail { + +detail::new_reference str_base::call(object const& arg_) +{ + return (detail::new_reference)PyObject_CallFunction( +#if PY_VERSION_HEX >= 0x03000000 + (PyObject*)&PyUnicode_Type, +#else + (PyObject*)&PyString_Type, +#endif + const_cast("(O)"), + arg_.ptr()); +} + +str_base::str_base() + : object(detail::new_reference( +#if PY_VERSION_HEX >= 0x03000000 + ::PyUnicode_FromString("") +#else + ::PyString_FromString("") +#endif + )) +{} + +str_base::str_base(const char* s) + : object(detail::new_reference( +#if PY_VERSION_HEX >= 0x03000000 + ::PyUnicode_FromString(s) +#else + ::PyString_FromString(s) +#endif + )) +{} + +namespace { + + ssize_t str_size_as_py_ssize_t(std::size_t n) + { + if (n > static_cast(ssize_t_max)) + { + throw std::range_error("str size > ssize_t_max"); + } + return static_cast(n); + } + +} // namespace + +str_base::str_base(char const* start, char const* finish) + : object( + detail::new_reference( +#if PY_VERSION_HEX >= 0x03000000 + ::PyUnicode_FromStringAndSize +#else + ::PyString_FromStringAndSize +#endif + (start, str_size_as_py_ssize_t(finish - start)) + ) + ) +{} + +str_base::str_base(char const* start, std::size_t length) // new str + : object( + detail::new_reference( +#if PY_VERSION_HEX >= 0x03000000 + ::PyUnicode_FromStringAndSize +#else + ::PyString_FromStringAndSize +#endif + ( start, str_size_as_py_ssize_t(length) ) + ) + ) +{} + +str_base::str_base(object_cref other) + : object(str_base::call(other)) +{} + +#define BOOST_PYTHON_FORMAT_OBJECT(z, n, data) "O" +#define BOOST_PYTHON_OBJECT_PTR(z, n, data) , x##n .ptr() + +#define BOOST_PYTHON_DEFINE_STR_METHOD(name, arity) \ +str str_base:: name ( BOOST_PP_ENUM_PARAMS(arity, object_cref x) ) const \ +{ \ + return str(new_reference( \ + expect_non_null( \ + PyObject_CallMethod( \ + this->ptr(), const_cast( #name ), \ + const_cast( \ + "(" BOOST_PP_REPEAT(arity, BOOST_PYTHON_FORMAT_OBJECT, _) ")") \ + BOOST_PP_REPEAT_1(arity, BOOST_PYTHON_OBJECT_PTR, _))))); \ +} + +BOOST_PYTHON_DEFINE_STR_METHOD(capitalize, 0) +BOOST_PYTHON_DEFINE_STR_METHOD(center, 1) + +long str_base::count(object_cref sub) const +{ + return extract(this->attr("count")(sub)); +} + +long str_base::count(object_cref sub, object_cref start) const +{ + return extract(this->attr("count")(sub,start)); +} + +long str_base::count(object_cref sub, object_cref start, object_cref end) const +{ + return extract(this->attr("count")(sub,start,end)); +} + +#if PY_VERSION_HEX < 0x03000000 +object str_base::decode() const +{ + return this->attr("decode")(); +} + +object str_base::decode(object_cref encoding) const +{ + return this->attr("decode")(encoding); +} + +object str_base::decode(object_cref encoding, object_cref errors) const +{ + return this->attr("decode")(encoding,errors); +} +#endif + +object str_base::encode() const +{ + return this->attr("encode")(); +} + +object str_base::encode(object_cref encoding) const +{ + return this->attr("encode")(encoding); +} + +object str_base::encode(object_cref encoding, object_cref errors) const +{ + return this->attr("encode")(encoding,errors); +} + + +#if PY_VERSION_HEX >= 0x03000000 + #define _BOOST_PYTHON_ASLONG PyLong_AsLong +#else + #define _BOOST_PYTHON_ASLONG PyInt_AsLong +#endif + +bool str_base::endswith(object_cref suffix) const +{ + bool result = _BOOST_PYTHON_ASLONG(this->attr("endswith")(suffix).ptr()); + if (PyErr_Occurred()) + throw_error_already_set(); + return result; +} + +bool str_base::endswith(object_cref suffix, object_cref start) const +{ + bool result = _BOOST_PYTHON_ASLONG(this->attr("endswith")(suffix,start).ptr()); + if (PyErr_Occurred()) + throw_error_already_set(); + return result; +} + +bool str_base::endswith(object_cref suffix, object_cref start, object_cref end) const +{ + bool result = _BOOST_PYTHON_ASLONG(this->attr("endswith")(suffix,start,end).ptr()); + if (PyErr_Occurred()) + throw_error_already_set(); + return result; +} + +BOOST_PYTHON_DEFINE_STR_METHOD(expandtabs, 0) +BOOST_PYTHON_DEFINE_STR_METHOD(expandtabs, 1) + +long str_base::find(object_cref sub) const +{ + long result = _BOOST_PYTHON_ASLONG(this->attr("find")(sub).ptr()); + if (PyErr_Occurred()) + throw_error_already_set(); + return result; +} + +long str_base::find(object_cref sub, object_cref start) const +{ + long result = _BOOST_PYTHON_ASLONG(this->attr("find")(sub,start).ptr()); + if (PyErr_Occurred()) + throw_error_already_set(); + return result; +} + +long str_base::find(object_cref sub, object_cref start, object_cref end) const +{ + long result = _BOOST_PYTHON_ASLONG(this->attr("find")(sub,start,end).ptr()); + if (PyErr_Occurred()) + throw_error_already_set(); + return result; +} + +long str_base::index(object_cref sub) const +{ + long result = _BOOST_PYTHON_ASLONG(this->attr("index")(sub).ptr()); + if (PyErr_Occurred()) + throw_error_already_set(); + return result; +} + +long str_base::index(object_cref sub, object_cref start) const +{ + long result = _BOOST_PYTHON_ASLONG(this->attr("index")(sub,start).ptr()); + if (PyErr_Occurred()) + throw_error_already_set(); + return result; +} + +long str_base::index(object_cref sub, object_cref start, object_cref end) const +{ + long result = _BOOST_PYTHON_ASLONG(this->attr("index")(sub,start,end).ptr()); + if (PyErr_Occurred()) + throw_error_already_set(); + return result; +} + +bool str_base::isalnum() const +{ + bool result = _BOOST_PYTHON_ASLONG(this->attr("isalnum")().ptr()); + if (PyErr_Occurred()) + throw_error_already_set(); + return result; +} + +bool str_base::isalpha() const +{ + bool result = _BOOST_PYTHON_ASLONG(this->attr("isalpha")().ptr()); + if (PyErr_Occurred()) + throw_error_already_set(); + return result; +} + +bool str_base::isdigit() const +{ + bool result = _BOOST_PYTHON_ASLONG(this->attr("isdigit")().ptr()); + if (PyErr_Occurred()) + throw_error_already_set(); + return result; +} + +bool str_base::islower() const +{ + bool result = _BOOST_PYTHON_ASLONG(this->attr("islower")().ptr()); + if (PyErr_Occurred()) + throw_error_already_set(); + return result; +} + +bool str_base::isspace() const +{ + bool result = _BOOST_PYTHON_ASLONG(this->attr("isspace")().ptr()); + if (PyErr_Occurred()) + throw_error_already_set(); + return result; +} + +bool str_base::istitle() const +{ + bool result = _BOOST_PYTHON_ASLONG(this->attr("istitle")().ptr()); + if (PyErr_Occurred()) + throw_error_already_set(); + return result; +} + +bool str_base::isupper() const +{ + bool result = _BOOST_PYTHON_ASLONG(this->attr("isupper")().ptr()); + if (PyErr_Occurred()) + throw_error_already_set(); + return result; +} + +BOOST_PYTHON_DEFINE_STR_METHOD(join, 1) +BOOST_PYTHON_DEFINE_STR_METHOD(ljust, 1) +BOOST_PYTHON_DEFINE_STR_METHOD(lower, 0) +BOOST_PYTHON_DEFINE_STR_METHOD(lstrip, 0) +BOOST_PYTHON_DEFINE_STR_METHOD(replace, 2) +BOOST_PYTHON_DEFINE_STR_METHOD(replace, 3) + +long str_base::rfind(object_cref sub) const +{ + long result = _BOOST_PYTHON_ASLONG(this->attr("rfind")(sub).ptr()); + if (PyErr_Occurred()) + throw_error_already_set(); + return result; +} + +long str_base::rfind(object_cref sub, object_cref start) const +{ + long result = _BOOST_PYTHON_ASLONG(this->attr("rfind")(sub,start).ptr()); + if (PyErr_Occurred()) + throw_error_already_set(); + return result; +} + +long str_base::rfind(object_cref sub, object_cref start, object_cref end) const +{ + long result = _BOOST_PYTHON_ASLONG(this->attr("rfind")(sub,start,end).ptr()); + if (PyErr_Occurred()) + throw_error_already_set(); + return result; +} + +long str_base::rindex(object_cref sub) const +{ + long result = _BOOST_PYTHON_ASLONG(this->attr("rindex")(sub).ptr()); + if (PyErr_Occurred()) + throw_error_already_set(); + return result; +} + +long str_base::rindex(object_cref sub, object_cref start) const +{ + long result = _BOOST_PYTHON_ASLONG(this->attr("rindex")(sub,start).ptr()); + if (PyErr_Occurred()) + throw_error_already_set(); + return result; +} + +long str_base::rindex(object_cref sub, object_cref start, object_cref end) const +{ + long result = _BOOST_PYTHON_ASLONG(this->attr("rindex")(sub,start,end).ptr()); + if (PyErr_Occurred()) + throw_error_already_set(); + return result; +} + +BOOST_PYTHON_DEFINE_STR_METHOD(rjust, 1) +BOOST_PYTHON_DEFINE_STR_METHOD(rstrip, 0) + +list str_base::split() const +{ + return list(this->attr("split")()); +} + +list str_base::split(object_cref sep) const +{ + return list(this->attr("split")(sep)); +} + +list str_base::split(object_cref sep, object_cref maxsplit) const +{ + return list(this->attr("split")(sep,maxsplit)); +} + +list str_base::splitlines() const +{ + return list(this->attr("splitlines")()); +} + +list str_base::splitlines(object_cref keepends) const +{ + return list(this->attr("splitlines")(keepends)); +} + +bool str_base::startswith(object_cref prefix) const +{ + bool result = _BOOST_PYTHON_ASLONG(this->attr("startswith")(prefix).ptr()); + if (PyErr_Occurred()) + throw_error_already_set(); + return result; +} + +bool str_base::startswith(object_cref prefix, object_cref start) const +{ + bool result = _BOOST_PYTHON_ASLONG(this->attr("startswith")(prefix,start).ptr()); + if (PyErr_Occurred()) + throw_error_already_set(); + return result; +} + +bool str_base::startswith(object_cref prefix, object_cref start, object_cref end) const +{ + bool result = _BOOST_PYTHON_ASLONG(this->attr("startswith")(prefix,start,end).ptr()); + if (PyErr_Occurred()) + throw_error_already_set(); + return result; +} + +#undef _BOOST_PYTHON_ASLONG + +BOOST_PYTHON_DEFINE_STR_METHOD(strip, 0) +BOOST_PYTHON_DEFINE_STR_METHOD(swapcase, 0) +BOOST_PYTHON_DEFINE_STR_METHOD(title, 0) +BOOST_PYTHON_DEFINE_STR_METHOD(translate, 1) +BOOST_PYTHON_DEFINE_STR_METHOD(translate, 2) +BOOST_PYTHON_DEFINE_STR_METHOD(upper, 0) + +static struct register_str_pytype_ptr +{ + register_str_pytype_ptr() + { + const_cast( + converter::registry::lookup(boost::python::type_id()) + ) +#if PY_VERSION_HEX >= 0x03000000 + .m_class_object = &PyUnicode_Type; +#else + .m_class_object = &PyString_Type; +#endif + } +}register_str_pytype_ptr_; + +}}} // namespace boost::python diff --git a/pykd/boost.python/tuple.cpp b/pykd/boost.python/tuple.cpp new file mode 100644 index 0000000..6719713 --- /dev/null +++ b/pykd/boost.python/tuple.cpp @@ -0,0 +1,35 @@ +// Copyright David Abrahams 2004. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +#include + +namespace boost { namespace python { namespace detail { + +detail::new_reference tuple_base::call(object const& arg_) +{ + return (detail::new_reference)PyObject_CallFunction( + (PyObject*)&PyTuple_Type, const_cast("(O)"), + arg_.ptr()); +} + +tuple_base::tuple_base() + : object(detail::new_reference(PyTuple_New(0))) +{} + +tuple_base::tuple_base(object_cref sequence) + : object(call(sequence)) +{} + +static struct register_tuple_pytype_ptr +{ + register_tuple_pytype_ptr() + { + const_cast( + converter::registry::lookup(boost::python::type_id()) + ).m_class_object = &PyTuple_Type; + } +}register_tuple_pytype_ptr_; + + +}}} // namespace boost::python diff --git a/pykd/boost.python/wrapper.cpp b/pykd/boost.python/wrapper.cpp new file mode 100644 index 0000000..f8feaef --- /dev/null +++ b/pykd/boost.python/wrapper.cpp @@ -0,0 +1,66 @@ +// Copyright David Abrahams 2004. Distributed under the Boost +// Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +namespace boost { namespace python { + +namespace detail +{ + override wrapper_base::get_override( + char const* name + , PyTypeObject* class_object + ) const + { + if (this->m_self) + { + if (handle<> m = handle<>( + python::allow_null( + ::PyObject_GetAttrString( + this->m_self, const_cast(name)))) + ) + { + PyObject* borrowed_f = 0; + + if ( + PyMethod_Check(m.get()) + && ((PyMethodObject*)m.get())->im_self == this->m_self + && class_object->tp_dict != 0 + ) + { + borrowed_f = ::PyDict_GetItemString( + class_object->tp_dict, const_cast(name)); + + + } + if (borrowed_f != ((PyMethodObject*)m.get())->im_func) + return override(m); + } + } + return override(handle<>(detail::none())); + } +} + +#if 0 +namespace converter +{ + PyObject* BOOST_PYTHON_DECL do_polymorphic_ref_to_python( + python::detail::wrapper_base const volatile* x, type_info src + ) + { + if (x == 0) + { + ::PyErr_Format( + PyExc_TypeError + , "Attempting to returning pointer or reference to instance of %s\n" + "for which no corresponding Python object exists. Wrap this function" + "with a return return value policy" + ) + } + } + +} +#endif + +}} // namespace boost::python::detail diff --git a/pykd/packages.config b/pykd/packages.config index f040cb9..ae20f2a 100644 --- a/pykd/packages.config +++ b/pykd/packages.config @@ -1,11 +1,12 @@  - - - - - - + + + + + + + diff --git a/pykd/pykd.vcxproj b/pykd/pykd.vcxproj index f7f637a..642e069 100644 --- a/pykd/pykd.vcxproj +++ b/pykd/pykd.vcxproj @@ -311,8 +311,8 @@ Use Level3 Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)\kdlibcpp\kdlib\include; + WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL + $(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include; MultiThreadedDebugDLL @@ -334,8 +334,8 @@ Use Level3 Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)\kdlibcpp\kdlib\include; + WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL + $(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include; Windows @@ -356,8 +356,8 @@ Use Level3 Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)\kdlibcpp\kdlib\include; + WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL + $(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include; Windows @@ -378,8 +378,8 @@ Use Level3 Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)\kdlibcpp\kdlib\include; + WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL + $(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include; Windows @@ -400,8 +400,8 @@ Use Level3 Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)\kdlibcpp\kdlib\include; + WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL + $(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include; Windows @@ -422,8 +422,8 @@ Use Level3 Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)\kdlibcpp\kdlib\include; + WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL + $(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include; Windows @@ -446,8 +446,8 @@ MaxSpeed true true - WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)\kdlibcpp\kdlib\include; + WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL + $(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include; MultiThreaded @@ -469,8 +469,8 @@ MaxSpeed true true - WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)\kdlibcpp\kdlib\include; + WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL + $(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include; MultiThreaded @@ -492,8 +492,8 @@ MaxSpeed true true - WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)\kdlibcpp\kdlib\include; + WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions); + $(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include; MultiThreaded @@ -515,8 +515,8 @@ MaxSpeed true true - WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)\kdlibcpp\kdlib\include; + WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL + $(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include; MultiThreaded @@ -538,8 +538,8 @@ MaxSpeed true true - WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)\kdlibcpp\kdlib\include; + WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL + $(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include; MultiThreaded @@ -561,8 +561,8 @@ MaxSpeed true true - WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions) - $(SolutionDir)\kdlibcpp\kdlib\include; + WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions); + $(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include; MultiThreaded @@ -603,6 +603,384 @@ + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + @@ -658,32 +1036,34 @@ - - - - - - - - - - - + + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - - - - - - - - + + + + + + + + + + + + \ No newline at end of file diff --git a/pykd/pykd.vcxproj.filters b/pykd/pykd.vcxproj.filters index f6c5649..55e9996 100644 --- a/pykd/pykd.vcxproj.filters +++ b/pykd/pykd.vcxproj.filters @@ -13,6 +13,9 @@ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + {ac5baff8-a82c-4a5d-8086-380454aee92a} + @@ -128,6 +131,186 @@ Source Files + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + boost.python + + + boost.python + + + boost.python + + + boost.python + + + boost.python + + + boost.python + + + boost.python + + + boost.python + + + boost.python + + + boost.python + + + boost.python + + + boost.python + + + boost.python + + + boost.python + + + boost.python + + + boost.python + + + boost.python + + + boost.python + + + boost.python + + + boost.python + + + boost.python + + + boost.python + + + boost.python + + + boost.python + + + boost.python + + + boost.python + + + boost.python + diff --git a/test/scripts/pykdtest.pyproj b/test/scripts/pykdtest.pyproj index 98caed6..67bf6d4 100644 --- a/test/scripts/pykdtest.pyproj +++ b/test/scripts/pykdtest.pyproj @@ -8,7 +8,7 @@ pykdtest.py - ..\..\out\x64\Debug_2.7 + ..\..\out\x64\Debug_3.6 . pykdtest pykdtest @@ -19,7 +19,7 @@ False False - Global|PythonCore|2.7 + Global|PythonCore|3.6 true @@ -60,6 +60,7 @@ + From 5e75dc75d857c38aa66fade927e61c63c6b7e8f2 Mon Sep 17 00:00:00 2001 From: ussrhero Date: Wed, 25 Apr 2018 22:23:44 +0300 Subject: [PATCH 05/12] updated kdlib to fix build --- kdlibcpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kdlibcpp b/kdlibcpp index e1636b6..107f991 160000 --- a/kdlibcpp +++ b/kdlibcpp @@ -1 +1 @@ -Subproject commit e1636b672d7fe886da7ae76587d4fbcef9f78a29 +Subproject commit 107f991bb61245de85862717550cb365d54de2b0 From 3ac565e7ea0669a3bf91e55b06130f480f2d2c7a Mon Sep 17 00:00:00 2001 From: Date: Fri, 4 May 2018 15:08:23 +0300 Subject: [PATCH 06/12] GenerateDebugInformation=DebugFull (like a kdlibcpp/kdlibcpp@0ba22038) --- pykd/pykd.vcxproj | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/pykd/pykd.vcxproj b/pykd/pykd.vcxproj index 642e069..35a89bf 100644 --- a/pykd/pykd.vcxproj +++ b/pykd/pykd.vcxproj @@ -317,7 +317,7 @@ Windows - true + DebugFull pykd.def %(AdditionalLibraryDirectories) @@ -339,7 +339,7 @@ Windows - true + DebugFull pykd.def %(AdditionalLibraryDirectories) @@ -361,7 +361,7 @@ Windows - true + DebugFull pykd.def %(AdditionalLibraryDirectories) @@ -383,7 +383,7 @@ Windows - true + DebugFull pykd.def %(AdditionalLibraryDirectories) @@ -405,7 +405,7 @@ Windows - true + DebugFull pykd.def %(AdditionalLibraryDirectories) @@ -427,7 +427,7 @@ Windows - true + DebugFull pykd.def %(AdditionalLibraryDirectories) @@ -452,7 +452,7 @@ Windows - true + DebugFull true true pykd.def @@ -475,7 +475,7 @@ Windows - true + DebugFull true true pykd.def @@ -498,7 +498,7 @@ Windows - true + DebugFull true true pykd.def @@ -521,7 +521,7 @@ Windows - true + DebugFull true true pykd.def @@ -544,7 +544,7 @@ Windows - true + DebugFull true true pykd.def @@ -567,7 +567,7 @@ Windows - true + DebugFull true true pykd.def From 2acdb04d262863d2b2751e647b76a63b6519681c Mon Sep 17 00:00:00 2001 From: ussrhero Date: Mon, 7 May 2018 01:05:16 +0300 Subject: [PATCH 07/12] pykd_deinit function --- kdlibcpp | 2 +- pykd/pymod.cpp | 42 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/kdlibcpp b/kdlibcpp index 107f991..6f96e04 160000 --- a/kdlibcpp +++ b/kdlibcpp @@ -1 +1 @@ -Subproject commit 107f991bb61245de85862717550cb365d54de2b0 +Subproject commit 6f96e046f3e79bc464759c6729d6d344083587e4 diff --git a/pykd/pymod.cpp b/pykd/pymod.cpp index d265da9..d0af56e 100644 --- a/pykd/pymod.cpp +++ b/pykd/pymod.cpp @@ -127,7 +127,8 @@ void uninitialize() } -BOOST_PYTHON_MODULE( pykd ) +//BOOST_PYTHON_MODULE( pykd ) +void pykd_init() { python::scope().attr("__version__") = pykdVersion; python::scope().attr("version") = pykdVersion; @@ -1370,7 +1371,7 @@ BOOST_PYTHON_MODULE( pykd ) .value("FinalBreak", kdlib::FinalBreak) .value("PreferDml", kdlib::PreferDml) ; - + python::enum_("breakpointAccess", "Breakpoint access types") .value("Read", kdlib::Read) .value("Write", kdlib::Write) @@ -1382,3 +1383,40 @@ BOOST_PYTHON_MODULE( pykd ) } ////////////////////////////////////////////////////////////////////////////////// + +void pykd_deinit(void*) +{ + kdlib::uninitialize(); +} + +////////////////////////////////////////////////////////////////////////////////// + +PyMODINIT_FUNC +PyInit_pykd(void) +{ + static PyModuleDef_Base initial_base = { + PyObject_HEAD_INIT(NULL) + 0, /* m_init */ + 0, /* m_index */ + 0 /* m_copy */ + }; + + static PyMethodDef initial_methods[] = { { 0, 0, 0, 0 } }; + + static struct PyModuleDef moduledef = { \ + initial_base, + "pykd", + 0, /* m_doc */ + -1, /* m_size */ + initial_methods, + 0, /* m_reload */ + 0, /* m_traverse */ + 0, /* m_clear */ + pykd_deinit + }; + + return boost::python::detail::init_module(moduledef, pykd_init); +} + +////////////////////////////////////////////////////////////////////////////////// + From 9b7cfc9ab05bf6aef59117b1b099633f78631584 Mon Sep 17 00:00:00 2001 From: ussrhero Date: Mon, 7 May 2018 01:10:18 +0300 Subject: [PATCH 08/12] fixed pykd_deinit --- pykd/pymod.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pykd/pymod.cpp b/pykd/pymod.cpp index d0af56e..e8903cb 100644 --- a/pykd/pymod.cpp +++ b/pykd/pymod.cpp @@ -127,7 +127,6 @@ void uninitialize() } -//BOOST_PYTHON_MODULE( pykd ) void pykd_init() { python::scope().attr("__version__") = pykdVersion; @@ -1386,7 +1385,8 @@ void pykd_init() void pykd_deinit(void*) { - kdlib::uninitialize(); + if ( kdlib::isInintilized() ) + kdlib::uninitialize(); } ////////////////////////////////////////////////////////////////////////////////// From a384e9bb5662a12ab09cdb6486b880e12a1cb02a Mon Sep 17 00:00:00 2001 From: ussrhero Date: Tue, 8 May 2018 20:40:30 +0300 Subject: [PATCH 09/12] python 2.7 support --- pykd/pymod.cpp | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/pykd/pymod.cpp b/pykd/pymod.cpp index e8903cb..c5cac9e 100644 --- a/pykd/pymod.cpp +++ b/pykd/pymod.cpp @@ -1383,25 +1383,25 @@ void pykd_init() ////////////////////////////////////////////////////////////////////////////////// +#if PY_VERSION_HEX >= 0x03000000 + void pykd_deinit(void*) { if ( kdlib::isInintilized() ) kdlib::uninitialize(); } -////////////////////////////////////////////////////////////////////////////////// - PyMODINIT_FUNC PyInit_pykd(void) { static PyModuleDef_Base initial_base = { PyObject_HEAD_INIT(NULL) 0, /* m_init */ - 0, /* m_index */ + 0, /* m_index */ 0 /* m_copy */ - }; - - static PyMethodDef initial_methods[] = { { 0, 0, 0, 0 } }; + }; + + static PyMethodDef initial_methods[] = { { 0, 0, 0, 0 } }; static struct PyModuleDef moduledef = { \ initial_base, @@ -1417,6 +1417,24 @@ PyInit_pykd(void) return boost::python::detail::init_module(moduledef, pykd_init); } +#else +void pykd_deinit(PyObject*) +{ + if (kdlib::isInintilized()) + kdlib::uninitialize(); +} + +PyMODINIT_FUNC +initpykd() +{ + PyObject* moduleObj = boost::python::detail::init_module("pykd", pykd_init); + + PyObject* moduleDeiniter = PyCapsule_New( (void*)1, "pykd.__deinit__", pykd_deinit); + + PyModule_AddObject(moduleObj, "pykd.__deinit__", moduleDeiniter); +} + +#endif ////////////////////////////////////////////////////////////////////////////////// From a2a3c7a9d4604c9637431b0a5d9b24e7efa8a3c8 Mon Sep 17 00:00:00 2001 From: ussrhero Date: Mon, 4 Jun 2018 23:34:06 +0300 Subject: [PATCH 10/12] refactored numVariant class --- kdlibcpp | 2 +- pykd/pykd.vcxproj.filters | 6 +-- pykd/pymod.cpp | 10 ++-- pykd/pytypeinfo.cpp | 12 ++--- pykd/variant.h | 97 ++++++++++++++++++------------------ test/scripts/pykdtest.py | 9 ++-- test/scripts/pykdtest.pyproj | 4 +- test/scripts/typedvar.py | 2 +- 8 files changed, 69 insertions(+), 73 deletions(-) diff --git a/kdlibcpp b/kdlibcpp index 6f96e04..9fa21ea 160000 --- a/kdlibcpp +++ b/kdlibcpp @@ -1 +1 @@ -Subproject commit 6f96e046f3e79bc464759c6729d6d344083587e4 +Subproject commit 9fa21ea2cf01e91885b067f760f2ba1a9fd04ddd diff --git a/pykd/pykd.vcxproj.filters b/pykd/pykd.vcxproj.filters index 55e9996..80f1916 100644 --- a/pykd/pykd.vcxproj.filters +++ b/pykd/pykd.vcxproj.filters @@ -194,9 +194,6 @@ Source Files - - Source Files - Source Files @@ -311,6 +308,9 @@ boost.python + + Source Files + diff --git a/pykd/pymod.cpp b/pykd/pymod.cpp index c5cac9e..cfe7b42 100644 --- a/pykd/pymod.cpp +++ b/pykd/pymod.cpp @@ -609,8 +609,8 @@ void pykd_init() python::def("loadTaggedBuffer", pykd::loadTaggedBuffer, "Read the buffer of secondary callback data by ID" ); - python::class_( "numVariant", "numVariant", python::no_init ) - .def("__init__", python::make_constructor(&NumVariantAdaptor::getVariant) ) + python::class_( "numVariant", "numVariant", python::no_init ) + //.def("__init__", python::make_constructor(&NumVariantAdaptor::getVariant) ) .def( "__eq__", &NumVariantAdaptor::eq ) .def( "__ne__", &NumVariantAdaptor::ne) .def( "__lt__", &NumVariantAdaptor::lt) @@ -804,7 +804,7 @@ void pykd_init() "Return heap's entries iterator object")[python::return_value_policy()] ) ; - python::class_, boost::noncopyable>("module", "Class representing executable module", python::no_init) + python::class_, boost::noncopyable>("module", "Class representing executable module", python::no_init) .def("__init__", python::make_constructor(&ModuleAdapter::loadModuleByName)) .def("__init__", python::make_constructor(&ModuleAdapter::loadModuleByOffset)) .def("begin", ModuleAdapter::getBase, @@ -870,7 +870,7 @@ void pykd_init() "Return address of the symbol" ) .def( "__str__", &ModuleAdapter::print ); - python::class_, boost::noncopyable >("typeInfo", "Class representing typeInfo", python::no_init ) + python::class_, boost::noncopyable >("typeInfo", "Class representing typeInfo", python::no_init ) .def("__init__", python::make_constructor( pykd::getTypeInfoByName ) ) .def( "name", TypeInfoAdapter::getName, "Return type name" ) @@ -963,7 +963,7 @@ void pykd_init() .def("next", &TypedVarIterator::next) ; - python::class_, boost::noncopyable >("typedVar", + python::class_, boost::noncopyable >("typedVar", "Class of non-primitive type object, child class of typeClass. Data from target is copied into object instance", python::no_init ) .def("__init__", python::make_constructor(pykd::getTypedVarByName) ) .def("__init__", python::make_constructor(pykd::getTypedVarByTypeName) ) diff --git a/pykd/pytypeinfo.cpp b/pykd/pytypeinfo.cpp index 3f22af5..f6a71bb 100644 --- a/pykd/pytypeinfo.cpp +++ b/pykd/pytypeinfo.cpp @@ -226,11 +226,11 @@ python::object callTypedVar(kdlib::TypedVarPtr& funcobj, python::tuple& args) throw kdlib::TypeException(L"failed convert string argument"); } - python::extract getNumVar(args[i]); + python::extract getNumVar(args[i]); if ( getNumVar.check() ) { kdlib::NumVariant var = getNumVar(); - argLst.push_back( var ); + argLst.push_back( kdlib::TypedValue(var) ); continue; } @@ -238,7 +238,7 @@ python::object callTypedVar(kdlib::TypedVarPtr& funcobj, python::tuple& args) if ( python::extract(args[i]).check() ) { kdlib::NumVariant var= NumVariantAdaptor::convertToVariant(args[i]); - argLst.push_back( var ); + argLst.push_back(kdlib::TypedValue(var)); continue; } @@ -326,18 +326,18 @@ python::object callFunctionRaw( python::tuple& args, python::dict& kwargs) continue; } - python::extract getNumVar(args[i]); + python::extract getNumVar(args[i]); if ( getNumVar.check() ) { kdlib::NumVariant var = getNumVar(); - argLst.push_back( var ); + argLst.push_back(kdlib::TypedValue(var)); continue; } if ( python::extract(args[i]).check() ) { kdlib::NumVariant var= NumVariantAdaptor::convertToVariant(args[i]); - argLst.push_back( var ); + argLst.push_back(kdlib::TypedValue(var)); continue; } diff --git a/pykd/variant.h b/pykd/variant.h index a40ef5a..fd625df 100644 --- a/pykd/variant.h +++ b/pykd/variant.h @@ -9,7 +9,7 @@ namespace pykd { -class NumVariantAdaptor : public kdlib::NumBehavior +class NumVariantAdaptor : public kdlib::NumConvertable { public: @@ -18,7 +18,7 @@ public: { kdlib::NumVariant var; - python::extract getNumVar(obj); + python::extract getNumVar(obj); if ( getNumVar.check() ) { var = getNumVar(); @@ -68,7 +68,7 @@ public: return var; } - static python::object NumVariantAdaptor::convertToPython( kdlib::NumVariant& var ) + static python::object NumVariantAdaptor::convertToPython( const kdlib::NumVariant& var ) { if ( var.isChar() ) return python::object( var.asInt() ); @@ -110,18 +110,16 @@ public: } - static kdlib::NumBehavior* NumVariantAdaptor::getVariant(const python::object &obj) - { - NumVariantAdaptor* var = new NumVariantAdaptor(); + //static kdlib::NumConvertable* NumVariantAdaptor::getVariant(const python::object &obj) + //{ + // //NumVariantAdaptor* var = new NumVariantAdaptor(); - var->m_variant = NumVariantAdaptor::convertToVariant(obj); + // //var->m_variant = NumVariantAdaptor::convertToVariant(obj); - return var; - } + // //return var; + //} - - - static python::object NumVariantAdaptor::convertToPython( kdlib::NumBehavior& num ) + static python::object NumVariantAdaptor::convertToPython( kdlib::NumConvertable& num ) { kdlib::NumVariant var; @@ -135,7 +133,7 @@ public: public: - static python::object eq( kdlib::NumBehavior& var, python::object& obj ) + static python::object eq( kdlib::NumConvertable& var, python::object& obj ) { try { return convertToPython(var) == obj; @@ -146,7 +144,7 @@ public: return python::object(false); } - static python::object ne( kdlib::NumBehavior& var, python::object& obj ) + static python::object ne( kdlib::NumConvertable& var, python::object& obj ) { try { return convertToPython(var) != obj; @@ -157,103 +155,103 @@ public: return python::object(true); } - static python::object lt( kdlib::NumBehavior& var, python::object& obj ) { + static python::object lt( kdlib::NumConvertable& var, python::object& obj ) { return convertToPython(var) < obj; } - static python::object gt( kdlib::NumBehavior& var, python::object& obj ) { + static python::object gt( kdlib::NumConvertable& var, python::object& obj ) { return convertToPython(var) > obj; } - static python::object le( kdlib::NumBehavior& var, python::object& obj ) { + static python::object le( kdlib::NumConvertable& var, python::object& obj ) { return convertToPython(var) <= obj; } - static python::object ge( kdlib::NumBehavior& var, python::object& obj ) { + static python::object ge( kdlib::NumConvertable& var, python::object& obj ) { return convertToPython(var) >= obj; } - static python::object add( kdlib::NumBehavior& var, python::object& obj ) { + static python::object add( kdlib::NumConvertable& var, python::object& obj ) { return convertToPython(var) + obj; } - static python::object sub( kdlib::NumBehavior& var, python::object& obj ) { + static python::object sub( kdlib::NumConvertable& var, python::object& obj ) { return convertToPython(var) - obj; } - static python::object rsub( kdlib::NumBehavior& var, python::object& obj ) { + static python::object rsub( kdlib::NumConvertable& var, python::object& obj ) { return obj - convertToPython(var); } - static python::object mul( kdlib::NumBehavior& var, python::object& obj ) { + static python::object mul( kdlib::NumConvertable& var, python::object& obj ) { return convertToPython(var) * obj; } - static python::object div( kdlib::NumBehavior& var, python::object& obj ) { + static python::object div( kdlib::NumConvertable& var, python::object& obj ) { return convertToPython(var) / obj; } - static python::object truediv(kdlib::NumBehavior& var, python::object& obj) { + static python::object truediv(kdlib::NumConvertable& var, python::object& obj) { return convertToPython(var) / obj; } - static python::object rtruediv(kdlib::NumBehavior& var, python::object& obj) { + static python::object rtruediv(kdlib::NumConvertable& var, python::object& obj) { return obj / convertToPython(var); } - static python::object rdiv( kdlib::NumBehavior& var, python::object& obj ) { + static python::object rdiv( kdlib::NumConvertable& var, python::object& obj ) { return obj / convertToPython(var); } - static python::object mod( kdlib::NumBehavior& var, python::object& obj ) { + static python::object mod( kdlib::NumConvertable& var, python::object& obj ) { return convertToPython(var) % obj; } - static python::object rmod( kdlib::NumBehavior& var, python::object& obj ) { + static python::object rmod( kdlib::NumConvertable& var, python::object& obj ) { return obj % convertToPython(var); } - static python::object rshift( kdlib::NumBehavior& var, python::object& obj ) { + static python::object rshift( kdlib::NumConvertable& var, python::object& obj ) { return convertToPython(var) >> obj; } - static python::object rrshift( kdlib::NumBehavior& var, python::object& obj ) { + static python::object rrshift( kdlib::NumConvertable& var, python::object& obj ) { return obj >> convertToPython(var); } - static python::object lshift( kdlib::NumBehavior& var, python::object& obj ) { + static python::object lshift( kdlib::NumConvertable& var, python::object& obj ) { return convertToPython(var) << obj; } - static python::object rlshift( kdlib::NumBehavior& var, python::object& obj ) { + static python::object rlshift( kdlib::NumConvertable& var, python::object& obj ) { return obj << convertToPython(var); } - static python::object and( kdlib::NumBehavior& var, python::object& obj ) { + static python::object and( kdlib::NumConvertable& var, python::object& obj ) { return convertToPython(var) & obj; } - static python::object or( kdlib::NumBehavior& var, python::object& obj ) { + static python::object or( kdlib::NumConvertable& var, python::object& obj ) { return convertToPython(var) | obj; } - static python::object xor( kdlib::NumBehavior& var, python::object& obj ) { + static python::object xor( kdlib::NumConvertable& var, python::object& obj ) { return convertToPython(var) ^ obj; } - static python::object neg(kdlib::NumBehavior& var) { + static python::object neg(kdlib::NumConvertable& var) { return 0 - convertToPython(var); } - static python::object pos(kdlib::NumBehavior& var) { + static python::object pos(kdlib::NumConvertable& var) { return 0 + convertToPython(var); } - static python::object invert(kdlib::NumBehavior& var) { + static python::object invert(kdlib::NumConvertable& var) { return convertToPython(var) ^ convertToPython(var); } - static python::object nonzero(kdlib::NumBehavior& var) { + static python::object nonzero(kdlib::NumConvertable& var) { try { return convertToPython(var) != 0; } @@ -263,29 +261,30 @@ public: return python::object(true); } - static python::object long_(kdlib::NumBehavior& var ) { + static python::object long_(kdlib::NumConvertable& var ) { return convertToPython(var); } - static python::object float_(kdlib::NumBehavior& var) { - return python::object(var.asDouble()); + static python::object float_(kdlib::NumConvertable& var) { + kdlib::NumVariant v = var; + return python::object(v.asDouble()); } - static python::object int_(kdlib::NumBehavior& var) { + static python::object int_(kdlib::NumConvertable& var) { return convertToPython(var); } - static std::wstring str(kdlib::NumBehavior& var) { + static std::wstring str(kdlib::NumConvertable& var) { kdlib::NumVariant v = var; return v.asStr(); } - static std::string hex(kdlib::NumBehavior& var) { + static std::string hex(kdlib::NumConvertable& var) { kdlib::NumVariant v = var; return std::string("0x") + std::string(_bstr_t(v.asHex().c_str())); } - static bool isInteger(kdlib::NumBehavior& var) { + static bool isInteger(kdlib::NumConvertable& var) { kdlib::NumVariant v = var; return v.isInteger(); } @@ -307,7 +306,7 @@ private: static void* numConvertible( PyObject* obj_ptr) { - python::extract getNumVar(obj_ptr); + python::extract getNumVar(obj_ptr); if (getNumVar.check()) return obj_ptr; @@ -320,9 +319,9 @@ private: { void* storage = ( (python::converter::rvalue_from_python_storage*)data)->storage.bytes; - kdlib::NumBehavior* num = python::extract(obj_ptr); + kdlib::NumConvertable& num = python::extract(obj_ptr); - kdlib::NumVariant var = *num; + kdlib::NumVariant var = num; new (storage ) T( static_cast(var.asULongLong() ) ); diff --git a/test/scripts/pykdtest.py b/test/scripts/pykdtest.py index df433b9..6963082 100644 --- a/test/scripts/pykdtest.py +++ b/test/scripts/pykdtest.py @@ -13,7 +13,7 @@ import pykd import target -import intbase +#import intbase import memtest import moduletest import typeinfo @@ -47,7 +47,7 @@ def getTestSuite( singleName = "" ): if singleName == "": return unittest.TestSuite( [ - unittest.TestLoader().loadTestsFromTestCase( intbase.IntBaseTest ), + #unittest.TestLoader().loadTestsFromTestCase( intbase.IntBaseTest ), unittest.TestLoader().loadTestsFromTestCase( StartProcessWithoutParamsTest ), # *** Test without start/kill new processes @@ -83,14 +83,11 @@ if __name__ == "__main__": print( "\nTesting PyKd ver. %s" % pykd.__version__ ) print( "Directory: %s" % os.path.dirname(pykd.__file__) ) - import time - # time.sleep(30) - target.appPath = os.path.join( os.path.dirname(pykd.__file__), "targetapp.exe" ) target.moduleName = os.path.splitext(os.path.basename(target.appPath))[0] unittest.TextTestRunner(stream=sys.stdout, verbosity=2).run( getTestSuite() ) - #unittest.TextTestRunner(stream=sys.stdout, verbosity=2).run( getTestSuite("regtest.CpuRegTest.testSetRegValue") ) + #unittest.TextTestRunner(stream=sys.stdout, verbosity=2).run( getTestSuite("typedvar.TypedVarTest.testAttr") ) try: input = raw_input except NameError: pass diff --git a/test/scripts/pykdtest.pyproj b/test/scripts/pykdtest.pyproj index 67bf6d4..a49f2bd 100644 --- a/test/scripts/pykdtest.pyproj +++ b/test/scripts/pykdtest.pyproj @@ -8,7 +8,7 @@ pykdtest.py - ..\..\out\x64\Debug_3.6 + ..\..\out\x64\Debug_2.7 . pykdtest pykdtest @@ -19,7 +19,7 @@ False False - Global|PythonCore|3.6 + Global|PythonCore|2.7 true diff --git a/test/scripts/typedvar.py b/test/scripts/typedvar.py index 4b55c99..88ec80a 100644 --- a/test/scripts/typedvar.py +++ b/test/scripts/typedvar.py @@ -393,7 +393,7 @@ class TypedVarTest( unittest.TestCase ): funcptr = target.module.typedVar("StdcallFuncRet"); ucharVar = target.module.typedVar( "ucharVar" ); self.assertEqual( 10, ucharVar ) - self.assertEqual( 200000/10, funcptr( ucharVar, pykd.numVariant(200000) ) ) + self.assertEqual( 200000/10, funcptr( ucharVar, 200000 ) ) def testCallWithWrongArgs(self): self.assertRaises( pykd.TypeException, target.module.typedVar("StdcallFuncRet"), *(1,) ) From 12fbcd1066d7f1a59b30ca84e408d490c855c594 Mon Sep 17 00:00:00 2001 From: ussrhero Date: Mon, 9 Jul 2018 22:39:50 +0300 Subject: [PATCH 11/12] update kdlibcpp to 1.2.0 --- kdlibcpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kdlibcpp b/kdlibcpp index 9fa21ea..dd9c6bb 160000 --- a/kdlibcpp +++ b/kdlibcpp @@ -1 +1 @@ -Subproject commit 9fa21ea2cf01e91885b067f760f2ba1a9fd04ddd +Subproject commit dd9c6bb0f07109b8d4c4c1a8da2652fd2c99e49e From 7f0ac2482f2fc256bcae987be89fce5ae18a6f0b Mon Sep 17 00:00:00 2001 From: ussrhero Date: Mon, 9 Jul 2018 23:30:59 +0300 Subject: [PATCH 12/12] python 3.7 support --- pykd/packages.config | 1 + pykd/pykd.vcxproj | 578 ++++++++++++++++--------------------------- 2 files changed, 217 insertions(+), 362 deletions(-) diff --git a/pykd/packages.config b/pykd/packages.config index ae20f2a..54fb0e3 100644 --- a/pykd/packages.config +++ b/pykd/packages.config @@ -10,6 +10,7 @@ + diff --git a/pykd/pykd.vcxproj b/pykd/pykd.vcxproj index 35a89bf..5b309a6 100644 --- a/pykd/pykd.vcxproj +++ b/pykd/pykd.vcxproj @@ -25,6 +25,14 @@ Debug_3.6 x64 + + Debug_3.7 + Win32 + + + Debug_3.7 + x64 + Release_2.7 Win32 @@ -49,6 +57,14 @@ Release_3.6 x64 + + Release_3.7 + Win32 + + + Release_3.7 + x64 + {C4C45791-0201-4406-BC5C-A384B01E3BF5} @@ -84,6 +100,14 @@ 3.6 MDd + + DynamicLibrary + true + Unicode + v141 + 3.7 + MDd + DynamicLibrary true @@ -108,6 +132,14 @@ 3.6 MDd + + DynamicLibrary + true + Unicode + v141 + 3.7 + MDd + DynamicLibrary false @@ -122,7 +154,7 @@ false true Unicode - v120 + v141 3.5 MT @@ -131,10 +163,19 @@ false true Unicode - v120 + v141 3.6 MT + + DynamicLibrary + false + true + Unicode + v141 + 3.7 + MT + DynamicLibrary false @@ -149,7 +190,7 @@ false true Unicode - v120 + v141 3.5 MT @@ -158,22 +199,20 @@ false true Unicode - v120 + v141 3.6 MT - - v141 - - - v141 - - - v141 - - + + DynamicLibrary + false + true + Unicode v141 + 3.7 + MT + @@ -186,6 +225,9 @@ + + + @@ -195,6 +237,9 @@ + + + @@ -204,6 +249,9 @@ + + + @@ -213,6 +261,9 @@ + + + bb9fbdf7 @@ -240,6 +291,14 @@ $(Platform)\$(Configuration)\ $(SolutionDir)out\$(Platform)\$(Configuration)\ + + true + .pyd + true + $(ProjectName) + $(Platform)\$(Configuration)\ + $(SolutionDir)out\$(Platform)\$(Configuration)\ + true .pyd @@ -264,6 +323,14 @@ $(SolutionDir)out\$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ + + true + .pyd + true + $(ProjectName) + $(SolutionDir)out\$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false .pyd @@ -285,6 +352,13 @@ $(Platform)\$(Configuration)\ $(SolutionDir)out\$(Platform)\$(Configuration)\ + + false + .pyd + $(ProjectName) + $(Platform)\$(Configuration)\ + $(SolutionDir)out\$(Platform)\$(Configuration)\ + false .pyd @@ -306,6 +380,13 @@ $(SolutionDir)out\$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ + + false + .pyd + $(ProjectName) + $(SolutionDir)out\$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + Use @@ -373,6 +454,28 @@ + + + Use + Level3 + Disabled + WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL + $(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include; + + + Windows + DebugFull + pykd.def + %(AdditionalLibraryDirectories) + + + copy $(OutDir)..\Debug\targetapp.exe $(OutDir) + + + + + + Use @@ -439,6 +542,28 @@ + + + Use + Level3 + Disabled + WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL + $(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include; + + + Windows + DebugFull + pykd.def + %(AdditionalLibraryDirectories) + + + copy $(OutDir)..\Debug\targetapp.exe $(OutDir) + + + + + + Level3 @@ -508,6 +633,29 @@ copy $(OutDir)..\Release\targetapp.exe $(OutDir) + + + Level3 + Use + MaxSpeed + true + true + WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions); + $(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include; + MultiThreaded + + + Windows + DebugFull + true + true + pykd.def + %(AdditionalLibraryDirectories) + + + copy $(OutDir)..\Release\targetapp.exe $(OutDir) + + Level3 @@ -577,6 +725,29 @@ copy $(OutDir)..\Release\targetapp.exe $(OutDir) + + + Level3 + Use + MaxSpeed + true + true + WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions); + $(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include; + MultiThreaded + + + Windows + DebugFull + true + true + pykd.def + %(AdditionalLibraryDirectories) + + + copy $(OutDir)..\Release\targetapp.exe $(OutDir) + + @@ -604,382 +775,85 @@ - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing + NotUsing @@ -988,18 +862,7 @@ - /bigobj %(AdditionalOptions) - /bigobj %(AdditionalOptions) - /bigobj %(AdditionalOptions) - /bigobj %(AdditionalOptions) - /bigobj %(AdditionalOptions) - /bigobj %(AdditionalOptions) - /bigobj %(AdditionalOptions) - /bigobj %(AdditionalOptions) - /bigobj %(AdditionalOptions) - /bigobj %(AdditionalOptions) - /bigobj %(AdditionalOptions) - /bigobj %(AdditionalOptions) + /bigobj %(AdditionalOptions) @@ -1007,18 +870,7 @@ - Create - Create - Create - Create - Create - Create - Create - Create - Create - Create - Create - Create + Create @@ -1048,6 +900,7 @@ + @@ -1065,5 +918,6 @@ + \ No newline at end of file