From 748bd2d4711ac35934f53a319e84cbf66df7314f Mon Sep 17 00:00:00 2001 From: Apprentice Alf Date: Thu, 7 Feb 2013 10:28:25 +0000 Subject: [PATCH] tools v5.6.2 --- Calibre_Plugins/Ineptpdf_ReadMe.txt | 10 +++---- Calibre_Plugins/ineptpdf_plugin.zip | Bin 29664 -> 29701 bytes Calibre_Plugins/ineptpdf_plugin/__init__.py | 7 +++-- Calibre_Plugins/ineptpdf_plugin/ineptpdf.py | 11 ++++---- DeDRM_Macintosh_Application/DeDRM ReadMe.rtf | 2 +- .../DeDRM.app/Contents/Info.plist | 6 ++-- .../DeDRM.app/Contents/Resources/ineptpdf.py | 11 ++++---- .../DeDRM_App/DeDRM_Drop_Target.bat | 5 +--- .../DeDRM_App/DeDRM_lib/DeDRM_app.pyw | 8 +++--- .../DeDRM_App/DeDRM_lib/lib/argv_utils.py | 26 ++++++++---------- .../DeDRM_App/DeDRM_lib/lib/ineptpdf.py | 11 ++++---- DeDRM_Windows_Application/DeDRM_ReadMe.txt | 10 +++---- ReadMe_First.txt | 25 +++++++++-------- 13 files changed, 65 insertions(+), 67 deletions(-) diff --git a/Calibre_Plugins/Ineptpdf_ReadMe.txt b/Calibre_Plugins/Ineptpdf_ReadMe.txt index c82f6a7..da7d281 100644 --- a/Calibre_Plugins/Ineptpdf_ReadMe.txt +++ b/Calibre_Plugins/Ineptpdf_ReadMe.txt @@ -1,4 +1,4 @@ -Inept PDF Plugin - ineptpdf_v01.9_plugin.zip +Inept PDF Plugin - ineptpdf_v02.0_plugin.zip ============================================ All credit given to i♥cabbages for the original standalone scripts. I had the much easier job of converting them to a Calibre plugin. @@ -9,7 +9,7 @@ This plugin is meant to decrypt Adobe Digital Edition PDFs that are protected wi Installation ------------ -Do **NOT** select "Get plugins to enhance calibre" as this is reserved for "official" calibre plugins, instead select "Change calibre behavior" to go to Calibre's Preferences page. Under "Advanced" click on the Plugins button. Use the "Load plugin from file" button to select the plugin's zip file (ineptpdf_v01.9_plugin.zip) and click the 'Add' button. Click 'Yes' in the the "Are you sure?" dialog. Click OK in the "Success" dialog. +Do **NOT** select "Get plugins to enhance calibre" as this is reserved for "official" calibre plugins, instead select "Change calibre behavior" to go to Calibre's Preferences page. Under "Advanced" click on the Plugins button. Use the "Load plugin from file" button to select the plugin's zip file (ineptpdf_v02.0_plugin.zip) and click the 'Add' button. Click 'Yes' in the the "Are you sure?" dialog. Click OK in the "Success" dialog. Customization @@ -54,7 +54,7 @@ Paste the information into a comment at my blog, http://apprenticealf.wordpress. Linux and Adobe Digital Editions PDFs -------------------------------------- -Here are the instructions for using the tools with ePub books and Adobe Digital Editions on Linux under Wine. (Thank you mclien and Fadel!) +Here are the instructions for using the tools with PDF books and Adobe Digital Editions on Linux under Wine. (Thank you mclien and Fadel!) 1. download the most recent version of wine from winehq.org (1.3.29 in my case) @@ -105,9 +105,9 @@ cd ~/.wine/drive_c/tools_vX.X/Other_Tools/ ‘wine python ineptkey.py’ (only need once!) (key will be here: ~/.wine/drive_c/tools_vX.X/Other_Tools/adeptkey.der) -9. Use ADE running under Wine to dowload all of your purchased ePub ebooks +9. Use ADE running under Wine to dowload all of your purchased PDF ebooks -10. install the ineptepub and ineptpdf plugins from the tools as discribed in the readmes. +10. install the ineptpdf plugins from the tools as discribed in the readmes. 11. copy the adeptkey.der into the config dir of calibre (~/.config/calibre in debian). Your ADE books imported to calibre will automatically be freed from DRM. diff --git a/Calibre_Plugins/ineptpdf_plugin.zip b/Calibre_Plugins/ineptpdf_plugin.zip index 5ad55e37fc6cc8ada0fd32a6a3462f973db18c04..adffe4c87c3d0f438efe9f453c84a8e0f9592ffb 100644 GIT binary patch delta 22432 zcmY(pV{9(o6Rus`wrzXY*tKoD-L?DFwr$(CZQHip^ZUQao0F53NmeqGd%jFE>sm8= zr@+Byzz7P`pkQb~Q2(7cX$j$Y1VR9cGpb^*6RP41@C$IZ)}`I1IL1$HY1#yA*u+Fr zHk<5f8Ejh%ihJf-$h8gTKX^k?1o9EI&`Dx?>p;FS{=S|y{&C;asXL1CaBa|L(tDj= zr))#Fo=sZW9?s~+Kgs-IHmXxD8=J_TjILsNgIwA85e;FkfFgU(ZmLyS=5&Clsp5$h z3-Ue5q6cw`19NVgFosqBLIGzwnM0nE2%0cncz@^Q>%snV9%R2djp9O?LXu^fqvBLD zl}Znju*BE?_PfNrTro{*cpF_Q64_2-onZ7(;Dl_I@;!{BZw98AYg=op4#T&m)(21S zHFveyt@(oUyRWzRABWpZ1Vlbud7jX^S>l2<*N- z>hGy=gDj~vHg&W6Z)Mc@18VxvqRukW&8Pj>YAyKN$vxc8M>l>PA!rnlx}i=Oc9x{1 z`d9Do7iZjJd6p0yHOZ_q!R!H=knq}~f-q$l`~w#)99cLkbEt%98&zPt;F$5-gQPt5 zjK7?r7;<8|Q!^2MLkoaWS_-OVWoyd#um|aFRao=NPcp8yK^QL-hbU(t0VE~Lkln-8 z;{(GV#8)_>O9zvNN(IUzsWipX;7(l#j3rXke-_hROhQ_v1Q?c#BRX&97<3cvuTon! z84~p(`qVgD12?>psrN1>jvlfUOSJ~gDPAs&1V$(eXT&qZVGtlMO7leN^pzxLNGg>~ zFkG5JI_CTMBIpX-2pSx)j3F5gxlH@Oi;qU4>dzv6LK}G!E?4NTc9M|AQv{Pn+NYRB zO8dxy@6d*~VG~QIFqb||5@NTOXg|88VpeAp_F`~jzc(+ftwLx*#83li24zobIN?VZ zIblL(bjsI&fDK@zij6aZRlyyC1A*PDDKgluT$Vqd<^LD~f*_xW;0QuGMZR)b2O{q}IC7?u7Ky^?t!A4`ceGMqJ~ILfH?*eCh+ruU(6QTi4yX>WNe~S|N@-qT zXv#2ZjG;%y%Z=gXN~m7#NQ9S(WsWGVYIL z4!sH@Apyp`xlmfxmE!A=CIS9hwJO3_s06A3J`U8f`8MZG%=<+T!@HJbbYx99GAcJ( zNE2dHiqMB)e}tJy$2j(>i;|ug1Z|S(VV*S%fJUwmJ%nQ`!i1`#Fsfzy$P-g#kjbAiPw=S9oWdFR}J5tf-dLPA%Ux zW{IErujx&XpcISKrgZAypl9X&(32@7p_eH5LGxvH?sO`Q4b)|vx?-p&zhB!_Q5xbi zL1@_x;8|8N&!S8qtmW%3e2Cz8SpqK$CUya7fa-PS4V%gU?6uC?8BmBEo=ARLl}TYW zV*w|u5nQrD4i$2>{LT~?=q=DKc>a`)7I08kAdqj}uyTU2NJp-cl{x$8HEB{RK=xi) zikevAgx|N{01^k*pNu8am3H0R1xIEvBBX7z0X4(&qIh3@p{7C%*CBUo?>yTPREUWjYx`P7k8v)D&T@iOs9#TrV z*2;C0mZ%b4RXiMyyI$aQRoqGbHhdPY{a2v)6JnmnWzagnMPd#}iG)Q)J*_3L|Wf#RK?il}=Jb)e9 zH3K_Pq_J`62a--j<1?y$PecFXQw|jR$ZYdUlJ;U`s<6(M*TAdWw|AGfIoUu**$fp7-=3ad79W1qxw#DR0j$WF7s`w2%1J{|VB@Fahx<<0RLNIH14mK&Sp92A=O&&*} z@(irbSX{+N0UcboV;u5K4}Ey##rZRYj2K)Xd2k8nwQXtK&}W@a5$d}%-2fuAagj;T zX~rQ~{eviTs=|-<36v#i!f8Z>1ER#y=Z9O~e>Kda{3VMCqq-J~(5gX$W>F<<>F(m> z^JCbz3WbCp8*U8v?W5bFHgM&Y1gpDC&JIm-o@6ueP0<;)3m@K0H>)KH+7s)N@a?AL zXnEI;Q6R_jgYhDEYs>x7Ux2V*4OKORYFCv&?kxy^ds~BR?OdmzZbMi-QMf>=TI3Q$ z`a;LxLSGuZ$>Q?#Z zTymswk;7$vj;kCPR&y=!VTl61JKNU;?zRYRLS+NcBr1LmhFQ$5fq)>j^!~qa3XxBv zs;7G~+}F>89HEmxmUNBE~o$@q1k z>h^&pS!xjINCD4fn@wFO%b228I$On)DLFz@f)_a=$wG}@&@tt7v` z9wK*Nse4WKn`w-iF!qp3;^gDrl&efsRP-?O3~}>bwL+p~y8%z0-evd;N~uXpGpngv zFB3Y@1-99kC??;!(qGyO*XT0iwwr#HNcUX|WA;?Q6I|nq3v~MA{FRww zw6=tC8no!nO${a3xhSL$1}=TIR{wNu_ZI&4pp;%joR)w8h8?_g)v1beXqtcya8PP& z5if7b1^p_-<^hh14dVA{Yp;Ig{J*3DqPscWyuEEWxp?}qoWt67wa7=fSwVsCV@gd} zXIoAcB$^c9Z#zbR6s`?NkG99v<_wLy6Uy_EY|(4zy{(nPA71YELU}XhO#$BoCB4}m zk<%`z>v`IfhgVj@8tpA84|48tUl?D>)P5?yZwbhoR7+JOAx;Mv4BeCt* zEIK!9>{#IeE~kcM+D<$!$2jL;9(Pka_1p5piMm<3cX_+cmWxCbN3>K{#x73vmzSQn z9x;}gf7hN1K7vFgUFMKlsUy25^5D5FkBwe>7`%sR}_z1+4$StHIrp}^BNe9_g$WQn-R7A zo}iVulTvD0<7R3va4T3!e~8~}+GgV(l<>^-(v>pFeFr8;-yu?X9+#s=2R-gN#e*msPQ?l_j~+1pbJml;7bedryGwY;I(E={>WPp}B(y*AqEx z=hz3b%@p8q%r8S9<57I8>bsov%pA6jmeT6|HKRC&M5b>ag)myo-|Fc-c@FY>QT+;# zcEC>J%)1Cj}@2c z9LUYc!}}9<3j7*(6dFm!-was6k<@D|weZ?y51;IP{#J~*E@2iq(&@?_HG^E8vQgbi z{$4(|S)ExePkY1_EBn#n_P7J__-ht@UBH6n#N2ascOZnqS4b?<#fYkex6;6krpgp5 z!e(D-;-c2%Hu9|zXFnoqf1H$6cu{P55A z25{7l!$*tU>XmD%_m>@drQ#z`U5DKs<|t28VcN}?)uy%E%8@DqyU6;nY>IV47l7H@ zx;19#r!ggsLKDXrHN(ky6zOLi1K2%46t~&*fC~@L4>xwdsO#2;bbgfuk94g^{1bJh zh0a#>r?~{yho*#_e1)a-_ulW4zY26q@OQc7nVI?kT%Rifihg#dh?g2rC*6+l3{a4U zg!*yoIv9il0@@$}0{R~b!2kh40s#Sa{)a+|(D3*;|6`&5+5cGR|0ShFL3kRd{~whS z742ETqAj?963gH@!P3sQ2NDnA*}?wjZp1@S!GQeVEkt)N(E*^c+{@F)(3ACxA%YBO&V4!P1 z$UBih18l~Cb-4IQ@68W9bqjn%H3A)Hq8R*ah_f{ui_6IdekPf;a|F&dIRe0~xH%R> zMyz~7R+thOtXTXOxfQ9!?YR#T(@Vh>=AaD+UyRYmr)bWSk)S!AIoN&{S|c zCxLD%`N`cvqk~q|d?-LGty`mXDsQCVit=V(ps`@|ydU2q$DDSg_-R;Axsj z7C#o4!=wUt+xc}h(6WI7WZDGhphg%n@=Zo1u`tE-{uc4sKZ6ipaL@T6k|>xYB$3Au z!V@x?vSLVIo&Sg_um87$mW0ojq|>H z_^~ZBaDh^YGj%W|+wepbL%`av+mjljuuvFLWbS&d0NaouMY_rYV8D=}75OpCAt!v( zgF0j>BO~+}NLpPlvdzrQ#!B*!ETWOMQx-K#unIiySq670R7CH?4Y^>)ZT{Kxg0BvQ z!Zvm(8}p|*9v#P%3JCM3s2sJ_b1d3LH^cwr~hsxU)V0K@uaU;|y4PgR=93V1h`Aa_IE` z+0zz=34%IoNto_pn+Xug+3kN!c?AaS01aZ?@0th6E|g{C)7I zOX}$MNsnZKF;9<)qbXduBawYfz=*&s6`Cf77uO9;O4sNzd})pDuQAUm z>9o)r4at20{TH5*jNyYQdx12wi%Ms?gPT<28${$tq>85el7m=BvUmhcKfQjpWt4Lw zN-Gf-Fa>F_#VqEI;nG2wSjXNxwD$S8<6uLyHRsed`ePM}FvsZd(AMJXq*N8q;gCQu z3l*YF3ZP|Bh(gii$So74w=`k63y6dU!)70be9-EE5F&Od1*ehwQyV7S!wrrN&Hi$3 z5TV6e$~@AiPa^XLhfLC4qucwySdpD#0zh>ynMob@y%vA`aYDUj6J(_c#_DuiUiE^U zp=v?Ib_91$o}dIw${dh|V43_t1ODD5N2!jqJ*Ymg#n)hl5s+!4t>jcnBpC6azm{81 zDKY{;3&z86sGx#|EciY&Km~blhw{adk02HbHg~}hI#5kx9o>B zA|W&F#3bzQpOt9clRq8A`dxZ+QQsjRJd6$C`wEg{S$gjKR3q{hOx)u{+C|Dw*pgy1 zK-LUCxE98?gg#GLaI^afd0mPQyR%fnaoa>B#-6gVNs0p^HaUViERY08t!)5R^f%Y1 zPYZ(xnophxL*@jg;(jv3>6`QI=p$?* zEIla*@K7QXy&|A2tr1HlAci4!Wvzq?ql#emaK9=7q78gn+=y3`B#rtBZkpK2C1b-c zVPOb@n%Ky!sp&vxP3ItU@+iYr&j80Fc*tB&bR9lS!lt0QDKAdHFSDA4cT4q!Urt)A z$2jsr82Bt1{p(*1x~Ji)lA)inI!s|M6r*5BpT8wBTRngYDdYgN$F@>ITNDpOVKUu1 z?Zt+h-1Y>By?4)mKgu$40{jeZr?x6B17dvh@z%9+`GgUiqNa#aVF#m@AhfE}7uvK3V^!g2ws@Lb}=(Uys{HMk0x%@ru z#GjYwqZI&>!63-Ft|Uutq8#`KOixyQYg=XI0e|9+Pl@>*LORuJpjA{5&Q5ew2T zNdSGfMkofOE4##)F9^P>pg*Gi!I^{Cq&>HLLpzSwRVx{Vi{cv3#T8U%J&W3Ve=TgI zEoT*fmrt`8nKu#PU5Nqa(y#ApX(B7toX>Plb~fPlMV|jz-tF}@R<0))bMvYlE3cg7 zVu*EypX;B`_n!%QyG^p2NN$*dSDl`clmUaV(B?L%1cyPlVT)i?R* z$BtFoW-VL938PZ!+((2|tS)MJ;vX3iXpUs*0=86ogTmO2S|NsAkQAm;E)2Ym5O6?= zu>+vza>%cw6$=x7?41G95A~jD4_0w=vOrP>Bxy|#IQRu0h{#!B9Ii@Anzppc`YZEC zOOs<*T^Y})J!3i~&@lIQByYyhPiOnZ`!IR8M+IEyJ6hh2yJSMU;N3;KMP)=a7xy79 zu#BBS*?ZKhP?Cl+v;Bl@1bNUCguw8YRvrKxfoCZe#N39*O=o}vBt%zL0c=>sr%tUN6NgBGt@=k?ael#+c2PikRDORe3=$6mrfbuLv!{xGJ}wUv$T#kDeo8D+yEeB zC65Nx$p)d)b}KbKlO?yqv9wo)0{vJdY`G(D0GVG%XP_2FzX)&xOeS$oa73%c% z6bZ#JaoG^ydPGmgkQ^F~Q-)IC=n*0STWD>S76LNnAc-|k zNZoMv>=AjyW%tiSz&EI7k7=^vJ6yiSB>P_quYfPu?yRA@U@S{6^Lr5{8AIAA??7?M z%>$5Vq`8!5iYvqgZ}-t-_?S|^0(4W7G*yG$VUU_sB`}fM7r-ctD{( z&kO#jR|uV=26&Y`>EK*YuD2SyEPBR=#^8-7e3I6Q5y)hN_y*MKx{Esj#(ZFY^SaL6 zcjQ3oK@y*OW{<3TGS9lo^*`73s6(}yb=p%~BNcSUu8Qc*9gGddp1Hq~e zF-1zm8IJS6rBjAI7%?T#X0ZUl%tdCV_)i$Li&pv#mCha8Zad%B?&XJ+cxLw?p;HcJ zhC*bo-JD$;jcM+o7XJi+HTnGPPN>{GdXn~4?vosK7Uv2`=q=^VN6R_!#76c=CfEP@Ep1-g)q2iAZC!D~hBgWVUN z8lj8l6kKw=IC6DC*}Xe+U5zi%6+hqtklBXabg>9th;TzFRyQ?y!@QX(joZ(S!I}d{H5K z{vZ?8<-yehC@ZBD8Xh~kZz7nE=>#nkUgP{cQPoDnKf7ru9Q`MPF>`EBW{)Yj^)SxB zhaaC=uhqMoT`w4D#!ERp-pNW)KlVZ)PcJ9Rc*Mka2^%remr(#jM>w$y$>}v!S{1FI zO_fVja)E3cD}m$wuZYUp8zE=Bo~4vCD7I|na!?=@J$1=KMR?1oWcg#gD6(D~k|?X< zDb7lJM_S_g2}L105LsU8qjhIzG`?&m)b>{T@Y9IrWFl^Ks!OxFkrv=shaKt~bH)Uo zn~$rU(1s)aj1b`LJ+?Fj)!~MVc$<<5zht1bs^uGX0bQk9M2T>9Aik9{81enlt)cS1 zBs$n#0T$uC!K7_TOqs#;!#~ob5KZUV4K@Edc`*KV!6Y@gMuSu;&$*?*$ z=A1^TCpt>5nq0nzRr6BE;)$FAr#osF5=mYU9AFeigbQdjxG3vG;PrwlYPkwA8nDLq zQ}Sw+zC0ZxtB5;p{BRQHpBluaS-H3+$d0TiJqC?9#Y4E%=$>p# zJEx|yIPV-hsIMH(kZiZScDP(u=-WFoJfJ?LA^>hQJ6|;jrF412#-sKuNTEVKM!dN| zGZ3{#UD~FlRg%?_FS4?YrSps(M1v~U55$(>)>2<@yWQy5$gFdWCa9Fk#Y$P_nSq?Q zhJm6-uof{$WtdEO^FeVq*i}|c$dya#A?;@4TQ&yG>YR#(dy!HK*?-I4lzc>Z;3Bv>66K9pzTEqf(-Z%)TG5)ZDH|j80LdO2<>$rD zPfSD%Wq6EaB~ss?CDxgT@6zHigEJOu8PhvU@62|GY6Q^^MKd$7a2)35%RwqkA9zKu zoDI0K%&hWTaDkycfz-Cn9TNG35lkj0+XE2gJ_NGy@m^*bdn6DsY<@rrb@zVJj>&@| zhNY%q;M^X?-~WmG`}!FZ{`VJa8ay*nB;;ki0~*2)H+Pl8dM480-tj{)BPks8pT z9+waNV(-1>v-^vom6k%Va56tBh)t~j4_heAMVM-&t-!T1DFDTfx<|y2EqeqTM&&)q zb}caA1vq`iKKAVEK()~l2XZ97WdTD#KhM{s(FSL~1~N6!flaznuk>ch+*8xDky`6k z-zjp5sQn(OoNU5GUdgvjc_KVkA`4J{JTkSJH`=r;S&yk(iO0ZeI!V=Hif#-daO86* z;C(u1(Zs;JDn5NpX-yy^`)jpx{&vX#RGSKtx1!>rP><-9HL|rfBNEZ3)^XU4^KRkQ z4-N2jaBXtypK2O&FFnm^;z%9nzI)Q)SGJv(*&8FtMF1_%d;j=it}Ngdu>c6w<6MFV z`}T!zYD9e8Gt(sIyJe&+N`#1C_1A6(GS z)0mJ-(nAX6%x~@RK#@IIR{MMVT7YfTdYHXOcO1&b#mn3g3Y5a<%j9Fi&OeB|eg*Ei z8-j+P1WvzCMqow7)kN>O&H^}~xWkrGdNXF4i~uPKD-EtzeCUYK=Fl9rFANArM%Zx_ z?F$bt9w>@hu;GBl!&MGgc>HQs&#vZnq?nQLE}KLPVkArYNpb4xeXkh0=pp>cqSWl$ zTCo`V#S`EMQsFN7dJSOiHYPtxOKE){Wb1g}9-Pqrfy7o*og@Vktp+@fjuV+@l}_ou zSE;?SJ8MG6wnr+DA%*;oOrQk{P^mU56i zxLAvwGD}GQbTm79I|GDj@e9n3X9aE+c_DjizTWp31$=onZvlLp+q`E0zPFb%unFPl zzTahg>{>**m*L6Xq|{Dx^G?A0rJh!8a>we#q>o0!Q^oCWW^Hl>A^+QfUz+pWx_bo{UMB12zCHZU zo}*Awd7sHqbw1v*0GyI%9rr| z?FY)o{p0@oe6J9to?DN{X4_m;=?Mv|_~oa2g#g{*n;d+f=LyMWuR65fV|ldQz+%@` zH;zwVJNjKqdn&wFx%++NKRL>$jyb03$u+tmAlmu7nhe#fl1MbLkXat>IYHpTGY?IV zjK>LEM1a@OS8U@>XAB6Op7T%yS5C-MPRp_=F+?z2qqtrtITsVtNOUyHylj`Ib|wav z+xO5Wj>N%9l7sJK2oCy)XU8I zs;ncSxdvnT`g&DoUM*HEvN{;F6UKC!53m!00RSbf?+lTYDknBA$pqobEHmpYBXcT% z!qO`f?=dS;|Qr}*7s2AqIdJTXGDj^~}jEC&~URe||L@A@Ffhx22 z0)z`wH(A#wvzdhd0iiKC;BlyV@Mre5wM#6o{EfP)n?k6ZkX_oHoXoA&1)U-NyS)C> z7%_u%P5MK->#!mO#OL{m)`2yKV|+F?d%2wg@9RYTMw#zKz6g%rg7Gub5sRBoY!faq zE~}KTZB*U7uN+-(!zlX)8uR%`a_x{U7N8?qF#Yw!@!^x^B-;Z0yoVh~l(*1%qYTdq zxnAPB``gnG7%O#H0s9=h4U)C)1kT!#C{)aa*50}=L*9)}O!oULsR(Ki0J6lY>|=nc zqG14HywE^1ZC$`|pHYl_1)f71fd*1js37TDlbZ7>Ek)Z2E#_G5Auz%h)_3SP3Glqv zaGI<3ZJNSrmH}~GZ}9VbJ~=_8C_;164~SdIAUd7Ou%6jUz?@ttXhS^4l*c7X=V9wL zx2a=(eXEnB(4sW##F8UX5HMI#nhIS~1%m7Fuw{1!_&_69x(G0fCipdlA&0bz#ofK* zpd{UF4iCla#A`f_FM-}ete9@@0|e5XhBMwrS#AQF-O}rw=zCW38~TSG%VZc%PMe?m zB?reHKp7GapMlBIet}046ECFUN`>Y+LVG2c{>hp%7q=y!B2px)bo7AL2O;g_z}AQBCB(9BLUx8~VI|OgfJalaAAw0|0k|Fyt?> z$%YmKjm*=b%Sx4uv7(p!(!=IfUFcU2GUx3YqxS5aU4|TVSjl>v?oFI~&v;vK2tGL( zR6yz88@CL#VM}WJ5I$hy_|Ngz5Fr}ADsjYF6HtDdTG;*#wzt{X%WE=MLk6I0;j3yl zrCQa}dI+_c2w^sIo4VB6fWc!(u-5gY1)e;z>5784qCXHS%_T9MHx9{vid<&Q-efNq z8{-*m(eLtGY;k^sGaw*(|uYXAC7I@#KBRP`ga0@A)UGIZAMwwN&n z(yE+d7c5$r@vDa^+W6B{xLM{4Yn1{)+>#28n z@l%J>Y8d6HqM1GL^>opxWNT`0Vle6|Og~3MSD2$(Yo41{W*(Ln*4BueQz>|-uz?Q$ zp(`o0sc5$zDy)i%1KbH`6MQaxst-+iw&SE=PCFQQiLUNu?sT@ZF$GHEFQIGp)8uU6 z(66%4*88VgNeya4khVX*1ks%1!&)8N=ex~@XmG-Y#lO@0^*KCn1}t+fE)#v0gvkarI?5qhX{c|p%%fSg?t>_%C0za>I$2d)J??{9Mg*dq9A%NC!H?CD}$x_D3O_%?R8y-LK-gi!xE?I8GK|6(5B`g$d&~Q)S5Yn>X0jfoX0AfhD_W0|ypep_LGhx4_7LrZE zq2(18;{z*TbbfxBNUEVoIx>Yn1!W+w)Pps6^&C4-2Ji8XF^Q*|&99KBZ7n;5Vt>IR zBNR0-{`5ArM4-r8D2grg$@4J%TluY!AkTSPAFOpxhO$MSuLievJjK8_wW>3Xxghr? zK8?=X1&kc>ox{*VHWSR3LQ}j4DdV)S>UlxK;i^dHDB7*btWzztLU6-pNCM{7a#LP@qJ%%W&8`O+_&Qa&Z-2518F=6hBQD%rC^kPt8T}4O&H8HdNh+ z+UQTJgIZCX;&Knf9K3 z32#FwBh5pNk~vtwx%rpq+RPJXZxDg<*p91uMBIEO@$)cEkag9GBR0LXUF5=Vit5)R z3AhhETbsZXs8%w`#I?Gfo+{c$!LO9nnm$T$venGU2%p4Y>-H;x&9E)1B>6M!U1NDU z@iICdvPrCVncUh;^o`&*CqNnAqeKFbg(Z7jQXNF|4^WjG1 zd!sGY^E!e^Z{T+ArPX6{c7#!y*s16g0*LwHYH_yxSMFiDtXvdCt-4IUY)IsfDaoN- zB0Hri4O`TSS#io(v!#n|XF+VogHebvznIL~S_}&_@Dtow`Sd#T$s(V97GoLPn zUYUlI+g`RMsfWM(+DZ>|W}*vvG<%mI*lm1A6{o9HSB-xxf&x5V7JYxJS!2ERG!oz2 zKx`7ymL@4)J;;yX-?nBSCV?aVM$f-~#`=i%yjygD z3b5m?70Kj+)EYTd8;OlOknybk2>oL$m@GI~m-9c+sNBgUb-Aneg#`+Ra6Ges+ zvNNByt&pCFFujD(q`xW+t2~0*MU7&gFm&dP7J$4%DbadJj*aTXLWjCT1}M}(L^IrI zL>43;D|*7%o;k@U3MM#gDsZid&HV3`T}DUw>hM7|;URF3ySg^rXrnf07MTCq?Fgx@ zGeno^wq3|$53=!cZ#JRb#aUaV&5sQXJq6yI;f589v=UT9If4ga`Ez%CmZ$H@xXjHyI zjMxj+kxFzN?h$U3^q`ryjQSw2glf28XNh30tlKp3&G^e&bX2a)Cu7C}f#`Hd#~}0{ zd7cxUJw9MtG%j&S6VW-=SzsO7c;92qskA`)FVuJaL!#2XSoE1k>HJF!Ca+614b%r%gHom|IZsDU7$$UiiAb^z z`{bDzw&t=f-6_}*iHvG|xX%V6tg%W7;1=N%N=)~B) zc8UE~4E~&U_I)FQ;=S~V6F{%mqB`}gkKu)gL<`^Q2?TAX|d{WM6T>L;^cDBev+vG-^`Rk$(p&`ONseX_@2CYnTsT38Z@K2hbA5H^DnDe~D z|7%O-6N$$$0Dv|cyN}xLi9J)<_fWVQ&J*ltq`;Y}ZmC(Zuw$0qi0EzYQz=VzgN8?2LerS5{l(GcFULmn=k#&d=Sy(Q7w`me3FPTO)- ziaT=#sTn(=R&crIB7XfC2z6)QY}R52iCIdf*~7C?0J4Ky$3aV`w@vWqE-XS7b=%{^ zu79XlVZSN`S}t&#!Q#CVn#6(C*7?7K529~}C^mdaU*$anUV*rbais&L^S2peRF;u5>imx40)GKu$gixQD#91^;DTRx->^~ zF{9 z`u`mmX9R_b)Wm3$BYJLewstZ0V)$MJ#>SAEUg_;CxL|?*%yb6pgN)lcXYt@pbpbo& z0X%5H{W!r#w-P%)I7}h|%{yoC7ue%9aKrVEOaJ_o@A6IFfp$QiaI3BpUg$8+LswEP z)~pHUiVuU?cYHr{N|(Krg6IlI`#boJe$J_UN27PCROoMBa88c!Sn(l|mbqW9r*uO3 zV#LT9(|=irP)dkJ5%62^K|jAfICG3k0jRMu&x{PqvA!`$N40_Mf}82a<2vssWc|%* zJD2|{@E)P-781|7MuGd%*$X{`nhf*t(Seq~Hd~Bps_9HHI9jKkmc0_V7PRDg}{|B zgud2Abx2w+rT!h?u^HL&`U2{|!GA+NDMRZ4&64E!V^PN&8b}#m!-%#fKIo0Iixu@(CL0;Qr84%9< zUu)b?vg7O-@fg02Yz4FZn91;Ft`+F4G4$V>vv3k0!T7~9FR7-^fZ|d3shzETa~3`q z7s;0X*b$!1Ss|Gyupi-zfg(d_o>V*}5@Jc%9<^C1l4ATlP_6-9QKZMR|7!oPaH3Wk z$NI@MFHFZQxJX$e!#hM9dHcNo)XreWMYRBSbSbiNyU=(-=u%Ez4;DoBVS)pPtZvx4 z&)5x-G;mO-=5(tL02!?4P$-Apmho?1r)==pABYbO=n$pah6~{(dsQ%Pwon>qwl~h3 zldJ7!MCZAw=*CIO2@v^VP|S@4kz~9FzwF)p&w^{S!eN@{F?|SB++mDodsj8cz0RbL zF15O%g{iZ?xa*(O1FI^Q!*1PSR^E9W(2EN7u*qiaNcofkfJd(NqIOeXMGR!S^tFPF zy!>WRc>@`nBSwiorzV^bdcmigVJ5~BanCtXrNx9j!Vq7XuisRpL@^1bx}F- zt6?s`$S`LxCaic8w;Vl9)Jr_L^cV`wsMOo8-JsZ9!Dgx|$8$&?`H?1C1KF%)P}%2K z%Z7OwUpx>O;OBJQKaDGpLMLQqF;j4rw_;`v+%xXx*h}#E#T}*agt|t>+ukH3j&nK@E>@9TJNogoEdp^c88QhdyK_{9Jf|F8nKt=27 z+Cn~bg_kLkm7&{UZMCAi(E%sAxYd9&(2yARsH$wJYBW}HtTJLZBu^NT6T^e)g_31v z)DNNnaN;3Hbqr};i(N-YYHTSgJ9Q@#A6a!XGKd8>;}Bj~AO?4K!Wj>VE98U^*2P_9 zQKC)#wI7+9#8TPUOln9>s_-1@?AhQ;K(KeO3{ohrd=LjC4>$pmJIfYJS_(oZ0Ty@= zkJV(83{l}dAebfJ9&$}I-YOE+ZSy7iGr>X#pg^XvOd=BdGYreVE&BA@o&lY6gyVlU zFl3%ap-~6_T)cbNGWIx8UJsX^KlUE;x>5}ajjNLw8+@pT38=6oZ&7jF7m+fLz$2frp zXlIi9M_ug`lk=b&<%TUTCY`Asbp#Kx|E~kIE2E;@i33=l5)_m{iS?4>~-Y*6MRkc>TEwm@K|m z;>c`hIh$!71Z$w^euO~I&L4frC)pHW*ail44UOvaP_H|A1_io79Jt<(A5? zynzjhF&s9mLeNih_1w!l+M^0Np1+|}nM#mr?*J3f`)Ek8m(VBJXy({5X(DYas5N8D z_^X65frC|*D0keZOj=T41e6T{=HPwfp?Qz;wNr%nsFQCGNw5VX0(4A(+ay6QS*03T zLS4Fp%cApxAJm>R=8uwdG^X@IEwJu#J>hvyTN9C%lk!YT(FR~3sm_XWSknD5d~y9{ zqE3-_PEYd_*Gqt9^^2ikTf~tWLZtfC9ljQuB51S7DlI1JwQ_79k<%@e(o zqEHVF`5^t7(Zs4nt){I3EzCe~(0SHv&_w3Q_>s9PW%{|724~zgU0SFL)yrTkHw|_;~oaw!7bElrF|K z@rRw|JFxl~U9y@Os7<4AUTf*sj0W?X(T7LCmF4tWq8WL#lrC34I!{c;k?cEbXwvxJ z-DTEa|D6Cc2tx63x)!f$pe7AiR|+bwTE*c!(pM?u-T6!`Z~=$cpZmx_SSAEMwLQMv zKjcs)&zaa-#cXE+D5dSAG%WK%dk^1-*9Ti)wU-S(PQQA*)VFqj&!3b}^S@5Mo?kYn zom;tNN5`L1IZFYZK4`HNTnWt4kR$=paen9Ry_H_AUp1p zKj@Tku1#Q}L`o5ce^enC*I^HP4jLA;22Rfc${Z7#?IMMvEEphXIymeKR18w@W?A@4 zWP+}52($FYo^w&K4Q50~`G~KbcyKD!E;qx7|NU&=tYo(OM}(3@-5Njn2N`X*o`t(> zmstvzSSE!5y8JpJPYp2yz~Jm~0lvSMzj?i{4z<(yO+ii2Z+~@soou69Tad;e7&trZ z-D<`~RQKk6tWVZk!XCoIajwj>&xAhqS{+*T^DO&d2j|AC3Y6Ii{6=0@ns@%pXVOd9 zo1}6pRC^^!h5Q+Xt4ZtWjx@(!c|@GMF6HS=on1f%Q1f?5#?DrZ_-=HuXQ`rB!{h4a zHH3%Qog|B*h`DOm(v};@c4gma6C^ozc=^gfj+AzOeqIqM3$$e*j!**rr0Y)aigl7c z`Tlv|x8f%l1R#H13;=HPK&NMNkC}DduiKgV=ZR zucWH_?3K6yBLex@giCHx1qs|YAaIn)eD)gP(oYP1TG5E(Kg)n7P)U{3p}?mqt6b<@ht~X zg>fCOx^Ee*_6$b)T+N|u#l1QjMYE}v)?oxvxW@OzP3G#qLma`B6}KmYJNl-tHsHz} zI2-M!^lrZPE(Ry;l{a+FSvc~(rjvcRXb@Svinc<9L=L0eB)ZiwbJbyFYHr`_Et>kO zK*&%kEg31XKqDhX(k&dXg=Z;Bj)(&^5v@c#+46Cs0k0nED>vzUjrrN#NZywmawWMS z<;DSj6E=0{kq4M_?oul!QcKAmtMJX@nMd=Wo--e@^4V^D~-N>sSsD4omzT zYf5|fb3tCsLkWVAWIMX7ScRO`dR3oRJ6j*A9Vo$rGP#UzGWb?-mEKRm68MKETX_I3 zZ9f0;RIDSV6K6jBf+ZqdoW5~ISu6kF6{ecR&5k`K@1hODU2O-fc?ftMSZh1SEg2n4vL4BCb+*GLHL8j{N_?aArYdz6U6Cvo@AdW1>2YvFqhy$!S07hyVKT}KCk@bvNi&~)-7U`ovZyCw&Ny+Z9G{fd-)*zf@*H)q~pB|T* zP3I~_aa)L}57PN4m_-55FZ%X%=bF~3v8V6i?c8#~!-RpwJjyaGQ%xb@ntwpc4@ z=nJ(+7Yp$ah#IlN|KaR-pSlPNl&1&W8DjZm=zu*m2!+4tlqP}ds}hEVawjVZcGfBh zMj%v+lKJ=nDZwD;e1~}$ND^coRli~~x9YRJ2g6dOi z(D-;`<5E0tLM8zzr(hiRB&C(ORya(;TLELEt z(Fsw8Ac!`4@6mf1ofwbahUi`NPB4fTy+n)NyI}~?qKCwh=RNOvpL0H)eO>prwg2nC z*O&XgueH}NN^`Da*Au-WKi+of{lNUT~-0YW!$mi3C z^YZa(u4^L}zGJfmHUmd4(+5kz?@}n-e(TTNeUI`f625G>U&5vgl)oK{U69zXI0&UQ z0({A}yWDcaLGOr4_wc)gR+H}~uS$LTJdOb3X(+!`p_is!v{M|BRwGP3a8UgZuuy7f zW?8&Tj?j>0-viU#M*8lkg|0OlLMggF!Bpex~eeP`+e^4x^ z95^!^-*MZmXGyIu{PbH=t(aD&-`K~4E*}$&AB-{GyR)iEgxSPQvx|9Q&wfGc4sLU$ZyyRA54ov-ww*iO*#!n z6tI8Ha=(m#m!=L9m^@Du{tDXN9t*_PPt&;U$U1eRO&OD8Z7p)$n{$$|QD~c)q9o_N zAVwgW`~pxvBZ)=00>?x85!eC#F_w}BODWPS(A5RgEdDT;GR-vi68<&4nHxo>7rw%J zrYv=~CcvRei8P4c@2^(Z22NYiuC|GWF^*>IG}3~3{m6=1>}v7n#}=6!9&*vd9z`YV zGv&Ze7Cr(cA!?9SU7Y#;+g?}Fra}P&^Rjl!?FeZf&X0o{{c4Eu+5-h+{g#*WpKt`X zp!MNTbHYD>eg9%m?v7ULM&<&X*KTWg+%xByk4E!;WY#2Ov~f6M`#{59>}Zpiiz^3R}Ie1;ngl`p3e(KSrB)v z&++<-gic>Nbtzd>jjkK(Z6wDgOg`5?gxc+Hu92?o*tJsco}B_zIb-&z1I^RJsG9ID zwy)VVVmfg%MBIghWxVJ6)2;c9j0D|DsWm8SkQdHF8n{vrHu_cGO#Dq8>0-mO{Ww+i z^ddFLS}PF%yP$yf!o9QnowTrPP;33%tn7W1pOgZOK~{~9o4fcgymH90a10*=Dp@o% zNRV)eoblW0aMx(nz=u}cx_%c0o@TMSB|6Qz%uP9D(l9#0_?o=g?8oWU!Fp>I*J*QY z7P&r9lJNm)bp;nl-0OQD>*=w8`JAMjZ^R&76DX_UJOu?Ui~pH)pE$7mK--Hvk!TTq<3J#3#YcDiE%pOXFHMd^tdwm7tDeO? zcFcHJNkiSv-w@Gz+m@}N$R_8h+hdY2H*&l*ux*$UuTs%=fAsYSu1-h! zD^jn;w?^qfB&4!V>Wr6pXCE`&3Rl6k_c-xL7{0cXM4Ah-sXeo7r9KBbbuhZlxr_Uf zIRQQBagf-`G|#)HWOkaGZ_VS2r)syq#6t#()*chwQJ})mY?6a5-NM~va{3@Z|8XXC zIahrk^>QpVe^PxQy;M9~jP0yRwc?6r)31G*nji2&)fBchwieE?moE+Bg2TMCM@mkw zTD&z&{lxG3b?0j~UFo5t$!{{d4V|oOOzqzId>7pYQ+~72XJuxbt2rm$4#p-%A_05C zM{;WmkQUJ-0%{L*sf+@f+_fzkP~A7aJmL2;s@VA9lWtUeA!7O1M2EE`uoa|D@>8a& z5{Vc4>x~fOI_{wQ$IB*dh#}{={+4(8WTK&)Kexb{O4gt}(B+Xtkd}F7r#+Fdn2Q!cepSkGroGI@Ns$k;aekp3%;4N453B-LPXLxL%Eb}12gknT-H42fHCG>D!ldQ| zp|Q8r?X>5cDMhCm8ZZ+gQohNyc)l?*#zlt z!cposC)I*F-UHbJAft{Cm{| z#^5W6%K)Th6Na_>_Eo|UT%ea=i7#O4{N z9lj&6oFDCe9WopOT%SMoBUuODIvI+6VM^j&xN}sxUgIYLb8??ki_3qtzJE_t8TkPU zXK7_ov($WUKG>GRe609JiJPpY-8ggy_-QeTCcKWoVJ|K#QC;e<6l9Z}w~V)my`=HH zrkyb~rL>B_d2VvrSZme;a5n42AOnGf(pN9zKHMXMoT&n%0Y_bN%IgfS#+Adjy+;$& zC3+_3ozRQPbJ|ed-ZXHx2wI zI>91Ui?^ZLHO)u!#sHYkOsEux#`D*~0Z*YgqX$?=0y7aLxUh+_U9}Gor!i~t`L>LM zqHZ~Kcl6+Dysh85!zZl%HJ{|}wPKPRh0Sb7=3saP$;^dOEN&Nqk64=d9boF}TsVeROl zCGa>dGVp8MGgmvPyTjHF%*i4-CxY5_7QimsrLTePNMEk+SCyM2@AQm`I=g#HmW~GZ zX&7=T7mf#FRi9b8n^jlDjE42b^~$qkMEA^tpT8FyUytMzx5R-#$I<9c=CE<|9l_&L zN36$`XkLxAo13U}4^2IcWKt>FzF#!)1qe?=$) zpWe~i1uorn&_U&ANkDaXcQu}UBvLc4#LR!2<4M{<4?V`PP_-vr)nUs-?I*#Xd47|> z8zX^rOY?;8fL8rtI z!P`p0+%NO3$sa#G!GtKeaOl1a87RpkOX~fptjD3=8XRB`n~0=;?v%jMYjWau^&%7h zW&!BxVjgnc>Y1C7Va-avO7j+#dPO^3hgHSOz<`aP2mdwz7edchbIX!;7Ch5MzyZ>lt%9=dyAC zWV&79F=>^M#e7rghrp(R$Jc@OHPN(^^FqmLUimmvIduP8>-nToSY+jL$uN)Tc0+GQ=ZnR~ypfj;NX6jX*FZ zusXPCjXT4U%8NRmqfL>XMBjk;q}ZwKY7u4z`rYx~YZ@z-{@>zrbet2+q#OI(Af@)# z(6EJc^|WKm5Em2K7sp$5MaIHM)uV9W$*kTy1O169?J3?N^e@=z90%(ixJC^QJaS$G z$K2%>Ipy$veE<_sX@759Z;xVcRxf_nfBl>fbV1i5d(+Zr-trFN&{A0$o4V~msmjm5RDwsW5Pu^p7fWA9M0kU? zGHy=|(0JDd4Y@^q=-rqnDG}r_xyd@7*MDhl9cn$&tiP02Nm{t!vrC4v7R0Yo=#&x= z6U@C$qdpqrEBT`4mjw4nU!Uyb?CV>g@KU7Zy>9N5p(*W=t0^q#-FbG8ruDK9XYq%KYo@&%}M?;Amh369fH5YB8U= z!>JjQV{_iXE@R5s?bmdI#EjzUyqpP4GLV&Y&_!?NIjQntOYGsgvBJPj0TY_!23D+C z^M2IK;I*Tt+DL>?wwh&{sZYvK3S)u`Q}^AA?K4W|UTW*^yX(#x2aE5OJ`5!t8@?ZZ z^xL~YH5r{dIW;`(t^{gw2Cye(;BG%prIq`)%!yQd4n1~vPjM&IB-(q(#1bm!H?TglPbMj#K)Hl}R}tGlEksFsR4jP5sSkm%FfCRU&fE(uvG(in%O$y^$e zOynAiO6w7vJxJV+=MZwGLmsHaF<$v?tn)i|w55FfmB0KfNA%nPk_&=@MwH6$nQsln zPYU?Z<7H?Ato~W#YiCST@xo&G$$E6ewq{RnPhGX7JiifKaLd@5CtbGP%&XT-T!|Q4 zZCP)x&BmMQM|uv1g#HJ&skESq9EYuEZ3N~jr39U|vgj*F{wl{eLaE5%_-`!2GpIi( zxI9Bl5ekZ-r~DHq{lvsPmowN9F2)&XAH_P*=1^jzNtIZ)wsPs<8-iYDoIiP&eQ`GT z0|VSB9MdikH9E2MjKkPkU$gd^{w4fX;~@olh5}zfvdS52ecX1E!##(JDE2JDPX``| zRhZ2Zt4&o{8%DGt&mh+C0PT%~NB*lAOD=X+#txD)S1uFHAL$ zRn}ErX46`InG=Z-23%*3@ED|^i0=84(#M3#L@vp8Kwa$4{n;Vuj1esht2YnNY;3{P64SLk-|EVX@G~BN#?tMn$5(Ja>k0T^m2vkxEU1U@ zY3e;|0LN*aFwb2eu2w9Rj0zdsL4{Ucuk|}(_12N1Q$jRgc^>bt*UEGj5jYIUY$^sD#@bV~ z(UJC+qDih_#H!&Ohya}5Ep6gq^~-9f%e=pCuP2!)XA?xbs&ZQCzmEbFs=?jaxP*AL zy;;Hp3K)oZp?kX~RdzZkSAv5FYR+r`LLYuA|A8v63zu(b>M7XIc`R@yv_AR_2_`>R zF^UpX+;w1nV-p!FX0KLYbfZNhnAw}PBFF^A6jkOayBgeL3m?eCYpYJ$qC+=Lmpq+s z+K^fvUj+`AOO4Gev4nacb};)*C!IsvqL#D*BC6uSuP~nCM16t^KE2d6!Vu*65otOk zEh@PM6rifDIdNb@d=Kp!9tOZI`^(>D@vPK$9)~G z^^AcvAZ}QKU+x~->13=AdUBQ2_aorTfZUdhgO}N>8nwpc`Y%np``({BB$7=#3ekR@ zyyA1tbtqiaB^}W3@t~R-P!jlNt@J|V=lm*y&no@Kuz|CD`G}Hkr*L_WR<>A0zMf4! zfslZARi#IaO@oNLISq4GNJ-86ylW!q$-8@+4zKt;nvd`zsB2fdx&*p!gb<^ximXJC zLr*o&m4)_tL1CCyND9D68pgNlPk0TQOfObK_=}cgGj5q_Lq494z_v$hufw+R;R%)~ z+*WqLMsG!oVDGsGAF3M%!87zg*sN8p0nW4eZ7!j|J=q zoIYtq`P4-t;2iKSlgFt{{;db^0A3wq@UueLXOuyCSZywR2sSVrAKzS%P`qZKqeW~j(e+4HLa-Z&H<9TP6AH^qK94$;~X zP%IB9EN5x9vrxO?mEvC$4K=vr`=G9)lU=XfA}bXhQ?fF&tgv%xxW_ZAv=@02;q#p; za|u5WW}1Z(-|HUlq>GG1O=u1_vjq;L{M^X1b%R&`kZ15mhLgt1>YrtJD=Ph z)0*?TSe`KUq9{+a$x364_ucSS44za__#cHs)lX@hH`FCxJAN;ZqMvnh9k2nWeey-x zl`tBC#87il7w9Z=4Xm#_lP}Y2$5nANzVyZufQXQn!U@UsDu;RCx;cTt=ithh@9;q< z__AvCdpeS9UxsKp7_|r75BU1j$yn{FINPD)M2c&rO+pzpm08bf19Hv~z3qfLE(h08 zKXsWd-Z5Wn%%5rZA^dfygV0Z)wga%A)L*6+D5F;&#HQ1y1wJQ&oDBj<&}mo=vi7v> zaZ`m67&Tty$`^Mjllf{k13??B_gZZgZ#m{E7ba{44rD zntwBrraZ_|Ws^JI>HY&!Lb!AC-am@iyI8wPI{!bY{izMkk2&Lpl z8K@%5KN9np{Xe$<;Vk{LfOsg69H@V-SH*v!vHrIQH!GWec=*F(`lp9KB7Yb2(F3}$ zD@rntD;4g)PW>k|835tLIB`WmNq*(VnA{D)Pqu>)(EPL3oc}AUL~L0tR*Ux>e zy+ThwcaA}klw`pnFhF4b+oV<@B8f=EK&RuZ64FDD(i7+tXs*t=!-fRbS6z9=IDEwT zc=HyQyzL@ncPqMQ_G;Lr9kvvru^1BN2uAo1QJrNduLQpUzXrdg&*{uvacpV_#KpKF z*UxG9u&q~%x<(7fq$3|X0A;u_=d`hFJF1OWxrr8vB587SbXMc};xHS$W1C8Aty((`!*^TOKqjNa=wSq_0b|rE=yvgoX&oy7Vz5UAQVfN7 zLaG@x$sUh)LaK7`-B4X7E&ne=F3wUwJMkYl!#@~1*`=zU_)i|f{s=5&#e2;dsyxZb zwGY7et0M(9I&UbBiddd?vcdv^$j{Y#t)JB0v2r>oSV==28U5sBIhu2FBnPynsX_ z#(CI$tf5yYFQG@6p?HV6i;VWRz+2k?I9TO?PGwo9$;~S7gkQQmHSu7PRJ{)YR6!-U znnPW1&&jKKjYzww06ttCZmWLOZgg|mqTVh7$>_>)XAWLd?b?ij$q~u}#u44PDuO}w zw;hGbHGd-#E;9`fpJ3vuhChTr2EAEZVzgCtIP=O(`ZfXrWj-F+8iI0+dhzrC! zF;o!B}7CWzQ z#W`$2s7uBpD4^S)XxB4GpE*k^g1qFlVSdDxRSKfGjt2o86`?t4h%Tsg$?^O`vjw!+ za-3-7I^K(n^g7(C0FbTefAv~SzCH0I2_@oE&q3@7DE34B`^j}skg2tL$@P?&0eZC{ z=+>esjNszIpN0QwUg(R_hTsOl?7^W_StT;yo)b>gtLHMsdful@qwQN-;_2z8n6wDo@($&!>P@sE~N{@A<1+YKzSld`m7DBa)+%5 z4K}MJr2_gB%y0}zS4eq+%KSS>gL*B^qG=>(Mx)RHtiW$_s0Jp3Mbv#b6hzS#qpk`S zn>0Me?2_bTbyiNctB3l;dZ{rqE7STEh`>}>WL5y-sS_>tSB@<=?ZDi!QZ4Ju{aHh% z=t=N~?)YEyA{o}q4kKK&yj*V;nF1PHxk3-b6Tc(lqrNxqP<0r;e4JOU}u3;UZ74;-JT-R6S$u}mj%aNQXxZg_YeOJVj0ZY zvt|I=Jr2m>O1>WdHa6wD2Ko9!82(IgQ(+@)p1x~+Cou1jzIMtQ|FH5d6EbDc?n`G0 zOlLBGgkI$D$RWlTTa|b%{I>1GCEp-nlFrMJn!)+MpHH$b)JqtwK5C4wzev(q_hX?I zb_v#EF5#&FH3uD0N)KU=q&_hOzYn%l=r16fv{l77XK$l7Dp;cbSxE_#b&3=sw0?4_ z$h!QIEXmYZ-fVH;9?i}pk|Tc0VQ0$|lc>1}0GYCNbPJ57uq-g`>T{4iSx3NsX>fq1^DVB}Vg{`~|$ zzmkhJstbqJ^Vj_t{q?u}&R6VCKW1ROq-8ptJ&2aaCkCVZ>82ifh{dh?v792G(^$Xa zw;)4L*hbsLPkm>;8dTe?OJ1YCJC$)3@4c}UU$=Ncl~bG&b}P8 z)Ka9p>0_&oCqPWTXoO@S?re$xOdQW&8pDk}oU0*M?kp9F3wxepV+`fTE%w9kx!qvQx? z6xiV#f=2Rs^1?V->jy!kLWd9bro&HppVY=P!>W!lQ_fg6Cafy5as3soin&e+GKH^~ z4)bSl*AdmgI6N0(%eswz3J)Eh@8W|Y%=@asbNKel`@<{uAhpuf2 zhjw~r4MoneW;TtU2QW<8mV%Yg& zMx3J3{#ZRH29v2}-CO>XP;|H=bUt$6$h;xZ;>32jqfq!~!kuiINI98=Ehv#OTquMz zPrr@0IA%2%#|7Af#zaPgb=pb*a=EC^bYs-|>s#ZxzMri~vpaBa5?I}P9s$T(HddKOj+2^X7~2in;L1#apZ7lq0PCN+PCv(+Rw{LT|0-)NvJIy{~J23VgZ{N90&8G zyue^_BG0?POoTAEjwF72ZGHAahLfKxF9{)T{b&ff_Q0==CHu17x-Y$GGh4;XKYHl7 zq{w+|KU&`_JsYF%Wr-fLne6d~LVQ!j?5nMr9Q^bh$!A#Y(P7&R7V{HmI+!#EdTfr7 z9v6@DV6b>i`83VwpM&KBLw(eTR*_qttecJe`J&u1KxkLT`G*Uq!>kXsJnP=x5)dXBEVspv@940%)yRKB-k({_%5GL{ zt18Qnr3yqQXa0=5+Ia*z^1VSp>12*_80V| zoU8tNSf^>aA2TI`V)Xtd57F5F4WJ9s8NV{v9jh+QB6ty-QnpI!9vmA~pGq6&$;6=Zo zL09}XA=*Q~qUF#1G|F86IAg%-oMtY?DO(@9}?EG6f5IG_KSJK3Yq=xl>#bNrhO8;-M`Xdc|=vfB%(1(=_4(i_C*lUM(BqStn zr8j9MCS|SH*eh+O*QxN>EDE{Vt0K|KS$P{VNp?TfZum}&fx*>J&4yd zvcDl-I*hs%XWDLFA(VQd6N+(;g_FcFm%}riu!S5pXBi5pmA#X(XBkWb?JGLdvBmkT z=Ou+%@j)9Do{@WydmLUy@UgtK9WZWrn4H!<&DDqILK4q7)dZrcUj>Z7r-b7JI{bEw zaKiY5!zJIb)IHD`i3NzwiWHL3w5i zxOeHJg4AAz0$|N9T;h>XTfz^Pm>73ZH^dFPd7zN{w>U;=K+Ng*L3%r5pc#l6f@zFj zd_8d?wwQLFeGAUWqNyO3Fb%o9HjcqJgPc^!i8h%cTOO)!L@WPS{2N3Ow2}Kd38L^z|HOM+ zVbBt(ut?f)OQO}e00ys7$Y4-3X?B4KuH^8|auu2tz#c2y>Z(JNpp*tS!XqyA(S|VO ztRT+w5=2?qqPW2GLr91U7FSUf7Z^Pl8q_r>)aL+4 zSXvaam<<`O`*|LCC@+8L8QpE@4=->8-60@5up2Kja|1L%NK8Cw2IMiECrDb{bA~tb z#f(W*xlmSXf3HLClo73^o?^#MsSApM2SR}u04cEM>jG`+q+xo+Slbff=~)G#jYKZQs|EY}7yy-KaQfV#0Fk9XbKff<@O0JY z=Q%l=OjJkKs+3XXe`rek=jcusHQKQk5=u{dptrW;W;u6cZcHx0-E8Y8} zjAF$b%aL!?naf^+l3`T6&pJCuFSH6nm1kD(C0}QZp~$dHv}VOw%Xz^zIk zSTr`I1v7E`>KW;1_|Ly#%{1xlLy&?Px4KFk%*WADu|+|tdLkD*v2V)GuEb6y5h>mM zcvGC$>`XmRS!9jbP3?bYMi;YMO9;b=5oJt_`#BUCVIbIh|@agyNo{E)a2Y@P&~;Y9I?n z?~T1~=sMXMN`TI+-e9-oIc+67bj27X^u4j1t^$)t`HjE%uo|b-P9D(K^>}2@0&36F ziE6u0|1)uFqQ5$_UP`tbF7s1zSzGxnyiRfq(TP9BlJQ}VV!={}*GdiiNgn1`c=h^* zkf6f~n(eBjsyq<&PwA$?k)j<41Hspjx|T_L%}JqC(z-c}=^577!FjIODH!-B=E}i>EZ(LZ3FHqfzGa8 z!0nE)d(~oQ7(^aZn>x?=sXy@i{8~BS?ky&Edjzn_S?O`8TC(v`!up~Amh-Fq?~c4R%&jG!Oue)oT4{$JD8ApKKcdSk zR(%NXaKp|lC&LRnVKi{BPYuPmwS%6KR3pR7HUi6uKO0)%(pA5iW{;0I@|$M|(0Po;D)XO6y|6Rhgn zXj65%jiqe0Z<{RP1Y$MLnR`FB@#R%`*CsisS>te)(QjaU47~t2r2{E?vY7tEzs8`! zATTDz>WDD-mo+8GrhpE`Gs)}MBr4fe0FsX5XRB+6dA_WH{Iosm2E@n>p1dI*;;^XE zFAYOle)CJXH=W0rXZS?$2fWC+CyJxTo&91~hh)qzv>7$CSnbgmhjD&qJ2jC)?pBZb z#e(@GEq^eE>QsO-lh&GG=L|!5t@8(?s571Oid1%!;JX7N{WWnM4xQ0z2@<#lYPC%b zaU-HFVWAL-Bi#DY0zO|D3H|(6e`eiDvlN+NSkBM(`6om?+|SwVxuOG#{GB?G-#EE= zB8G)o!O37HV1t4C^G`~RpfSVzWxfxoGi219U)ySxTg?E3(%Ehwj(m}cdRj|HM)lpq z71F>T16Cd1tCx;Ya0z*=R zywSu##&ABy2lyOp>r~iQApxz`+{Qq{(cljzM<;$rj2asB{%WvyCM>6(9I_nnmpc1a zW%5%zOa@?+0fpdmzTui@o82sOfX>Jd4>yhK(O&UuOU z>Ds~j`UoO~nyI6pYoSZxhiAbn>n;5(&h>4GClPz*4o4$2tGi+TMu|RW8wzf1gCTNc zvvrmy5Z$45bZEUL#wb27lvZg;4s)dY7AFpQ79Rj&Jtrq4cKy-e-2J}m zvL>x9CZ?YpmM=Wh1vhr}{prJE&}N#n6*1+b-yiOBQ~U)Y7Imy=n)SImsZbTtC1Hsa ztmj2PyUm_i<9T9ySro0TJ%Hlk1?MzuNSO2DnkN%?tohYWX+k}bUHLdZ4b;U7?-3z@wmE|G7{_8m#$Aki zjU(1PsCZC{ZiKt0ROMgVr#xLmiQY>uAKz;r!4lxHJgM{QI;J+({H=U(lk&kl&nDkq znl8I^pIp097EElhGAEl4riSApi_wH8?+8GqQpz%a}bw*RH(d41i z>oWFZC36qN;Skoq5Qd3pV_PN?X9y@4?Nn6WWK-XtQr?_ek1!wq;JNgkO@6rgAl+q zE00i#&g&@IZ>A4wW?ExfjbT5Kdz%3NOVhKfMUTADRgL%vx+ zK_)kzGU{d^lq4&XZ>4^EX*g$+iyOBFlmxUV$8clI{=#Zq?Br;gp^ST3H*eFbySl0e zZQ+gn__v5vuM?H+-`z3kPot(tv2UPYU$o3ZVzy_))3a^Ut^jJGbNS9xP0^@^Ou*R) zn|rU7K;vTNdbnu3oC@zsol@ywA#6h(;if zUuWU=Jcco&J_fs{XzAd`4H+L(pBxSuzejfF@Z_u8Nqda;ou#>RIPm~0;;;}ZkoJ!gG*HCIBZN8KR zF17T{JwcR|@QBUX;uU6(`}h)4d_n(u9s}r21V~(DTVh~>Aj6a&se9eJu5Y~nxEduu8H{x->!hu%zDr0o6_03 zh@1t4B)$mGB>T}2?yT=DU+tj1LDBE-D5c{I0$nh|XmT>ODJhR8lh9AdN+ z8?e3+-1!1*u>Pqo3S<9CcK+k>bC9%v1k1B0lnDA%^g*k(+86L~n*Tn%*r^BnZw0*T zjqb5=dceNR`xt3CXkM%}j3BbP$HUp9w!jJAai(UO=^wbL5Z86@iC9vM0~8(>Z%)5< zz4TbvT>}{l=sQ@hF=xXm&>KJ&<~+fA;jZBMy2VL{$yAU8zZSn8p3S~rb`Xp`^XX&0 zq-U9eT&+E`6@kQ_AOysEV1NJW{i|(up!p$zE8YNV9ELY|qCmJB{U_@PW{Y7dMhb}B zEg@X-DaW)@!MLT}AQ470@?ST9AF*TXx-9tx9+tS~)Yg|*ut)N2^97h+0__Ab#o9WL zeD0Ql3lsC%@^jwbS-K@qW3kXul*&{-Nq2*}Dhj^*dw?9Hki|BXKv|7KRL_adq0<_z zu0#W46%P6f>2>h;?hj&#V)wNUE*l3S?Ry-XH_dy6QNv%Lo;?^KEoHxhqx@F)IgUm= zh{%Ro<_WKt{z`7ZE485Ta<~9{1A99Y3abY3N1gr%e0BM0F%Ueb;F^7oLV`K z*T$T}{RzNFEom{+Jb)`~j;Jig$17(d^el8&PivbUK)#a9K?n$qkicu9LUt>b{E=b| z3r2PP&)`U@!cF@E8&=UMdI;j_hV5CJO146)YyIini#>(XMR*NiNh?&+zZN;i2T^}; z8*oZqb&I?G*MfQWldHrkpTP>2`Bq7^ztBE$A`L+037k<%8XykV*1%v9=V!EwOcUO<{tw)YLy`WI)1qYEf{A#?8S~bC8Q@EZSI~TE}NUWCeqlx6Z%{KTZagg z#0JO}Qh?&!=QsZvw`}RGE1Zz=oHWca31i9O)+j>>qnCkO^s_%>;Iw!Dl~RztSJ!*0 zsIAQpQOX<}vV-wU1$_NCZlxx5zZih`zC_`q2fm#1w|QUO4`-l(*V~0P|L^^^ zt8J0*{r)ydY9%Zih_5>T2~R(#MrMPrvhGcR9~+<12G8@}HH$qO23LbgrJ8=<+rBkw zpEv#3&_jAE&xz{=M}JAkF;rzHm%H^<#Vt`<4e)d+*^GbNrZeLh3@Hp`=@wY2Z~*k# zhG#7XRz`bn@iX!lpy{%*kHQEKvfh2?{<}og)roPSRj!jyA2&vaI}5C@sNp!Tc?E2z zh6b3LxJa+Br+KeezeA3x^A+^!rgxWqK?`Z`@ZtXx!{6VE6%B!{o`YT%;@N1~(BJTN zclUB9Y~BW59^0x^FrYL1Ce#z?3IKPPr3tIoes)lXyG(O)(Y%k0?N z-#s!QIg0jf=y^xx*Gnhh(=`EYQ$2R8vcu8&!>)XVE1_Z51|t@vP+G9i?n~8s9Qq|B zEWXQYK~Qiw5`z=t3ptt&KENvZ5s>q^?T%q|Q$(&Ybjwll)LcUa$4XR^`=;jlNgzTVu|9*s=wS)i#0a_Tqmf+;1*v{tX88wBd-fMFK3k^&2Wk}IJ~!-s+d zG2Xf&g=P@`tpBCZ>yY%$Gw3ZnHEpp4={M{d(@rLp5oR@V0iPiX0yK3(NB}q@x4uIq z6s|_x8wX-5n`T%X(&!6z$(Etnt?tE1BECB0R6~f# zMB#y;V-)0No`Gi<41l5IB&Vrc8=$vDt}w(JG2aj&S-}pE#pWXw=4c5MX^;@r+}r>QX=%ngT1fLU1h3_?p6gLsw^ka~ zupdpY=Q_yPV&SWRX>e@EXt+Du93Sk)uoGI~8)#FSiC{@Bn9=N%ZB^m>xom`1&3hzi z5=4o33`;j-P{_qCaSoDsG%aoGNK6XdZrB|;JZJEetA+T%^AD8XCfxo_O=Bn z6_F`T)ZB$tsICTC0Z$L z#XX>P$2%5IC-;kDpnne*{C|0gm$brhpOCYhRm9tIvkcu82O;dLNq|hwkHe(c`&>^} zj98dZL*e%+bho+)E!pVbxp?+C37fgDU&*WicuYbh?Nen8OQ4kc8kob>m#hW9Io-RR z+W7_QEn3Wc-|=!4%VOa5rF z4+pAiO+$&`$wL*xB&0Ukqiq)?;|7?If6u?NoguGbgSKC{VW!A!yj|<&*}66vBl@=k z!*(O{2jd?5aSbRVX1P8o5?%IFH|z5ZtNPZ4Tr%1R8unldzBa@(4N2ZJe?1)CFY7S6m{LgG@jx+9duPJZwNGnep z8G$P7;#f1D2EhrhN(dS#UGF3e@1$Y_y5Bw1E_APL390Wd!_-uGR@~P>jl+M19iLrw zzp%#YDLNsJx|x_(7#)}VMJoG42V;^=t2*40QXqm*4SzaJyu`-uvlmUU(fY>gM+A#hdHOBnj^>#BgS9M z^4c`twQgvOq9M$_rQ+5@4?K8@3wF*ygA&4(Y(#*UtHL3HH`RcDWxv-|ST5H;4Fflk z|CthaV=uiuf_$IJ#N3p7?ye~hkc}KFSg<#9S`7?L``Jv>@3gL0O1xbz#e*+>3ws*y zA0ibl!(ImQG0%(KfFXlFZD)wvl^tn^-b?(rHg~juoZ+YtXN~+t`81=9n3Yw!gbw{T z7Wz@AE>>mc{7$XiuDPe~zJI24$$2{z#XH_4V?1M)f@KyPhk+9lMk6r}2qV}$lxQ_Y zZ}dMbf(KREh_VAvG<7FpBC81IZ437O<+|Le%`yowG{MCtJ}3>G{@~DR>Z&DpjWl%lSKU% zcA3={ZgI5q!nSjNQc^KbT8&BaOkv&#nMA*?m~XD)3>x@~Ch8GDFnk6t*Agr=&csd6 zpYH|LKvgYV-J1Ex*R=)-15g8-m3X%0u;9U#>*CP~@KA0b{HM zK7gG}bLhi;&$&UpCsPm?puoZwDQnw4D8IgRM)D_+R%Y_pK`k+Sv61+7g4@Tb@!AH1 zQ}tK!@@tAb$Qu^dH)Q$ zPP8veq`>R^U*JoJBkk)pzEE?(R?D^ZYf@pdZjQp0#1t;T_qM+}-_l=tl&Y?nh*qYi zo~{-i2w_06W|zsuYRSl$aAi=D*W2#$%e=iXwEa{oMn_Chb9*z5i3a8!`>J;S-;ehR zYg1vF9n~;_UdpKaXXN-_%t&wV&^{SW=*_iZ-r=-%Ezhj^axwV5BPukJ6c_uz`>pj~ zr4#9PB?)k#+vm?Ow}-2#g+8x-YW!8dXDIxgjlNIOc=6`caVn?p1WBIdT?g-&{V!v} zoi&1A9YBScC7pV;iH+}3kqfn#yV}3eR+@rjcfrzBh0sw1OUQ#} zNb8E}3HMpQ;wULh=VdpZm(B$!wc=KW1uXsj!#0~}l?&KgkTowz6j+?6>Y{-%iM#nn z(yZysDtsqck`#`&q^ZZgSr8wG>W^7}eP%{ET*aFs$!=V<;(KKn2~Qz{Esu0FxyiA5 zInQJu#za6V#Ck>oB$Xt2Uf1nMc6bnmcg#Z6dWWDx-sM+eW6tL2X)(?5=TM!VY5G{B zHexnn*!J@{rJXZslijv^{8=}w)y8NxmE$c@cap=U83Y9j_DAcMG5=33^iF3SSDcd9 z!Sv!_|Le7Gc^|ss=~4+|&g1b-)qx#%9-dX;OdRvE)+$t5H#bqzZ zLTUa6rYHSFp`YpV6vAZ+W}U$@x|Ib81Wb{%qW3zy1Wx~(9xkQ#8Kfclf7T%8n90m> zGSh`i-(4Y6PGMjNC53MJPb&?IHUuINnx5|SMynVg%lv^FZu#?S_`3a0)Lk+Ga$6RkZhdvTRq;{j+TWCZHDc9U(X6-9^&i5;RL3^?$Lt$09QOjS z&JLL&h!1Bi-TU2ReO4j8=U;<83n4hIg5!HpnDr`5zFLsG;vjLt_4s@u!0BC?;p_W} z8W8g?SKgm*p&xU1R?A-H^O#n?Q&(TF3sTnm(G@{^NCznK)68m~rca{lFz+iRCh5E} zCL(}A)9&q>V8r&g>+XMiJlX1I*ZGqTJ#oc3Bo1x-9o~GJt8S2ium1B!~Ih~$c z0&!^K8*v9y=lnNMX-wgV*veH1%#WRQtGncbK|%=cX6Xaj1%Z@9msrYr>ysksEH_L= z!-#cXP8*wHO*Ue`M6EcvxC^69pI`f!QLq*_PXByniD;#yg}g44n9c**p4t3H>znc; z{Y7yeI7_Mck*innY)yT=Z>Cj$lx0ymsHJT&j8ZQb3~9Ds6zqyFxlNF3dK!?!sssZo z26y!=f`vSKnPU8M>=eos*C+3#KYsVE9-S0E!zuZx&$ez`Gc7&6&9h6?>*~f?*n(nn zw#1VdLWqQ0=B;VSJP+JwMC=|}A`{oq!qr#Y;+ z_bCTcmx3J)B834fQSndBs3mc;c(Jto3)J|ZRf5#J%$}o6Y|jwL0TX=|Q1g6llQs*@ zvDo4CYz5Nb?x+zIIUj5V^%>@Y=MXB6vTYjNt;h31gbBuli*}#z48NHc>U*UnL3}~R za+#9TU9}~hYRQ54;T@rsSx@|*)WmHFpeXX?r{r%Vq}hWv+1&@%`EOHA2toxuMtQ2K zpM}$pXu0(^Y?o1p57ugOH)R`!KvPH*KsQUdh=T*|*^Ml}^iQi_w)Cx~#=ps~x_AVf zH7Ker&%Psi$8z_CV|gH+%gse?=wvr|Bv}byR#v*tm4O3jEAa%?65p~}= zI0u_jZcj_%6x(?j_1KA0vHF%iHjBTV-m(Oh;^DGCr59MuY?R28^ki+iA=L+?F#Qw5 z{Sx;G$Y$wj0X}fRT+=QM z{*kzdFuSr$nA<1J8u zRT~|WA-<+QXP_F%cjk&xe_5W2Exh&Q>I8By6^3J4WMN?XN-0<%aXa4WXn#$|^k0fzF|PG4wIul)fv@tKkwv)<>wmpY{^O)miQ%g9nH``lp$T|z z_FYU7`cn<6YNngve^^yFeG&`}N$oI~Fv;Pi6}XOplAd(i3I>pOi$bu* z|K2b}7W)0sS<)b32o?3$TtkX4v~0$C#q+*p_wYFlY)1wK5isRnPQnmu2d-v}eT zdf`)FJOWx4YQkmhw+(y~zV0|YH?@#zDC#rfk7?K}Bv>QGR28|_Pn(=^gi>JNt?H}u zQ(T>5*3Y|6MkVP?kiV2LkrbUd1>88EI{}^@U7d@eD9$}dvs4IY0Fi_M9x__hOcHPE z4J!{E$%0#ebBr0DPzLXa_aZ{8vpZ2IP`cSt%~K~%nABtZI1OII8)|rD@~l$w1B110 zJ_6I&;s^iIbKNkO>XtD_J1D@TNwnF0YdVHz7IwriewC@Y!5=R9J2&UvUq56G;uK4~ z_YyLfE7o;FzB4ngRxjs=xt>> zb7Dd&TCB<#FS>PETy<~4BblQ{7swkGA^!kg$>jQcxrD;Ho8wZB5PddXmMyFFr<@Y@m4y~%&x!O0S_O1yQ z2|I|xOdbUI%4x5k{V@*~lie{Qn0ex~Kcp*vOLm`EO_878gtf`QsCUviiYbvdnjBar2JI%PfYTL(dm8+#3UEg-H^yDvPS!N(=I0 zKz>!`j&v<*1e2U^m~{~3hLYhMqGL3FT@Kzv0&Y~!wWs42UqXF9=c^XXb&N!dW$Y$p z*$0}T`5@@xlLw@i?5A&v6(MM^1TB?cz#J4|In;a6WFi2+50O5EtBf|EMw$~DMyda6Dc-M3xop?4i4`v# z62DNzh+-wP--(cp3EUxx{fYi(re@RagbuH9`HpipiDs`29|=LL7fXE22AxkyFUD&l z{cG+I&;#hMGb-!*QJS12P%g>iX-VRM z9Z#?u69h}?x)Y?xqIbZ?aE}NB{jOXoaP|KIt1J&I;~_&@?GzBC za7LSqYqi^k`gh2aXxGo5h%eI~Z}vews@}*JW7nht!WVN?NWQ9lK)NxijG*dp%_H8U zh!Jq59*@t+BVMX-CKL+)jd)@BnsytRSZDATydOniw>fS|z?_@s7E;2LsthB7-pTXO zTZ<;9rh1Ro!x;<#OP%+>d}L{|&d=Z|X5NP7D+-M8G-?S25&aWvcW4gELDF)<@Ez$j z>U17|)O=5_G08C=R-zGC6dY0IMVXT2ZVLb(JRl#WGb|g#1xuL?TuT;irn&@jUA1%_ zS8<mCnprfm7r^j-5V7~EER7~08U(;)A zkcM#Edj30TEIEEO#Sht%Xa_8$&(&1ZJC;*~w!0M$!@UNolJ(yJ93OE@kt(qA%VkHaJzhZL!$?Fbl=sVzJi{CTU!Pue#4=#|y6e~Q=V!ix zkUP=1v*N<&Zf^Gu>8o2D6rwb%G%)#aUK$XUXkhxuR#Huc7pfV~U`o);@2g8HzY^*{QbO zr;>s6fc<9JHysySz541u4b}UmO$0rXbDKn;7c4Jsuxa@divxE2@6w^i3%|mXX5d9o zf>?@X*)KXTqAfIw$}CGF@-G12?&CycaVy%l(|UXS{9kJS&4>7Toj^ubDmx&4=#YD5 z+0zz2&~C@2_}$|;i(d_rXsgX4&pw(aKck}Ge>sw<1lb?|*E?huR5uGk?j#+b`aY)`UFcH`r%zk*Owz(*u z(jC-RpIfh=gQUy0IWMdaxP^kugt`4yX%^MC2<0$s%%@7RE*1G;;>^h{0;sc5`@ zl1hw)cWT{5!?%1j_s2;Gh^IZJplZEm=}NkR*>7%71lOlc0|1*K$*GpF3iajU=WSEe zUM2jnYD2Qs>0G(|x!xCU-kf@k0o-o~OGeHcFdmCuTO#2UQvy9tp0 z)*#&}#nK=GZ80e;WwJ$^9-h+lvmBt}Do>;s;m_msaVRCgsT@0zcB~4s5meyMr_+M5 zA|jI=baPj()qqkX%}G4RADh25VH$u-FPE-<1%J8z<<6l;Fp#C~-8SV&bcAms-#N1f zi2>p5fAer*O|&uo1ik~B8`GLPH@EK?7RR*m(<{^S6m?8LIHtBMxSUY}JsT14;>;~Z zAHh_!;lE_ZC+p4%Xx(jW?4l$@*udsEvp&{IM0F}*qyc!78mWIHuA-<;@?V_d6T|Tc zCr5c0j(l;V+R(SKxU=6P8}K@0o*wtPY@C@zi)sqP_mj@c73_&bqJo2i%Uex7D$N8 zc#74pQh;_8m2a(9u$wtw1Rz+^D~?`@z+xM0n2YhMh(O2SSpQ@BbF*QqqqF>4Dv8=HZ@!gcIM<8J6gC9kX>+#FZWld+t&kpF%E- zJ{yL&eyaHG3EaVRFn$l-UU*~e5Q^FD#d)r1^gb9_(Djd zx!dx9z+Z1n{5d%6fV)Hp0p=?#X+Q&x3CM-aAUlS4L_>b5k4jor)quobeh_TW|_+w@p1j4;Ib|ph2 zNJ0Olhz0m(i|wF3&^7SZ0Zs>dV$cAqAk9zD5gc3j5eDiQl-NQLsS^8h`Fnd#K+Asu zB`_9ew_wc(1wuSa#=#{APM3UhOPh`DnaCZydctg`Po!}na z0|ZGf+54VzcAdIUcUG;3SvBhaSB?2J*BbvvVD8B$X9_JnYNh;+^YBmWM)&3`72!}_ zOsz|sk6|;Oa9y^vWq@7uQ*Lu)FnC|>VPe}^$8zUAEewaZDj>a}gTg9jdAcM#OOx`^ zEc49eF*E7Gpw#)HIIt%Ulu?$=;i?+&7A6jyWXQFK+0^<0J>PS`4?o~}HDCQ9aKF^@ z8X*t_$NMdxGCwi)qDK{N<5z%JdNXAGhrHOpFZAj3@A;%LNWzfQ*gN`XE7bYT8DDCY z1=3oo)s!_C!d(=9;33Vw!XMd%KvA>@WJix3fFa_%$mKc*oaq%~(6PxdNzx0A&%C5E z3uHXUDn^ny!FxLpO+Oj2JAsDZVWWiO4`C=t;Ivn-gYit1f&9bezgCc#V*bR^!Zle# z6d1EzrfbnOD4u^Xl1CIO`Z>Z0J)M8ILbxP1D0wj%A?DPU?|+J1py;2`khWOKi7=_k z(b8(Rfcyr?Pol1XoJ7kvRNkbB5CsaYN6e<&S`0)h7Og9f$~IZ(Ci!|r0GV%&MWr~M zd5tk9vplIo&ME-UfD#@SZU@uNq;4CFM*Pr;(r_n$$y6oI6hv{<$~ay6CeUUQ;t*IY zO`l|Us>CSh&7a;%HSNLRJJ65h)sRW9D=n4S250I31_wc5ha~{zoj`6Uz%v?nm}t@m zR>LS4zb#d?S97YqRbvj4+24<~13wH=7F-8XmY1|$ZgrE0Y-oBG?8WzXG_Esb#W6q2 zpk@-c*pp3qx~7G;QK<3>ri?X?{g$8oPRxLZ8;lv)Atdt~0Y>YY%w#(~lxz0R+*twAoYj5-g_E!|4*3)U*|`HOaUE9>sncs@~} zP82oe>Av-SWRNhY_0(mhaaR4oWWW#E_G|3!$mV2_DdDm#OeZ<3(tv?zWxDudY)#+8 zx7!?pP6dJ2K+=+(%J5(^bq5wl7oAXZ%Eo321yFeT^8Z}wX7Viq=|MAH^7RqFK# zTlhOjIK=bd#0)5xPX(o=%A_4S$GX_&({@^DF?TSVRR zN92b9&8unWg0DDWR&*Evn_|NngU5#KlU**8T%+$8U=D~M&ptYZ`SvM(q+%55QjVz5 zHE|)qF@k_CuQC$UBLW?M8nw0q#4~wBKXidAy4KD_yZR<#g}kBljoLL-Z=sKDSGM>y zTKplcxgU4>Mt}9o3Sx7#@R{;NKtk$n!~EDjcLFjU4OLty7Jryk9~4;g)~N1|WK@i= z9P!rb4<+D=7{u_k1nhDM3JzjX7#;(D=i+dT9d3?&San?^j?Y<^^}qj{`u} zUk<7bYr=)kBvyy>Cv~^C+>jPe`KnRjd@wH1D@2LZpUEQjAQ5 zvBY-X%Rb(4o7phgm^_x9qD1rg>@=Ry@F!t*NYI1#D$oL0ch+R#-ogKKe6+XeI9sD4O~`s zuM+#dstuN+MezV>I)MxA+Qmw-iSspMoYi=HyT-@tfZ6lmgwooi0!h{p=8&vJ1E5#OjGeZn6ptT2Gyr<%@}@@|?! zgziqT`F`B>I$ePUbYjT!2j@E0ScP7@8oyF=*Xh*Y^pocI=X#dGK8|MRBIC(G(f@Q5 zfq!45^$A<5QCOsgYJQkcmsOQ!jz6DMD?N(ZCMW77W^58qm|!h(uuR?!$~G`FkBBeO zW@K@WL<9PXAeTBwAct3D&Fip$V@)S*>T^jHFY~t--94ZESLj*Rif4ps>m4?& zAVfGtA=f{}wbHfDMA)0roU61X*9+bh&l*N_j*DvO`X=zT8({Aj213gKI6ufV+-xiz zIUJFh+XGH~(GXRTTL+DUB>~^0s45?lSa0%@Nkm+Hr>~;=WJ>-Bnbnv5b^6zM+vfc# zq$Kyfz~ZkegAj!1@vSX_%0(V+HKL=E{z-U7t5;XEPA6aF{z}**0^aV6f>+4#k1F< zgbrd3TfzY;mRWqAWH<7?7OgxOPgn&I0`6e8GUS>=_XQHi%~qIql?Mof%yQ)KmfG!s zQ$%P}(rB3RT$Lm5ndJ(cBUu{4VQBX5=DTvY3I#)X#Mqk?URT5y=!s#VL?Nf zYj|{4xl7)OUru3hzK1qlUo(^_uZD6f+O#<*I6YM&-%)!WHldZn55meCgtMlvk-XEV zHc5pj9ow^aaGUjHCVlmNTtWu@ds|vM!&Bw!W7ajEt{=@^lD1j2ym>r>yu@#*-?N3mvYHD zGe^4m6F~gNFcz-TpXfO9tgWvRvJ0tm*P%Q0{g<)K zi$4lnY{8@9Af3}~EcTZlw2*Oe=BDd?-At5)_1zdW9r&9~!iy~5?unA~TCA}=?@r(> z=o7g?V}8kSW4mG6l8&|ewlPRrAcJxsGb zm&sSLKi5fM_xr3DK1O|XdgIYNqq(5?pH9dn3<}@t=SF+#-UHLjOLCzYI>86_QQO?q zbmGhI*4`5QXJ#L_#Sn{P9$(&ABl32fbRVVZ_C1Nv4?c6e&Wy%9a7EHL%YM#28Zk#) zUQ?(@-~6VPSkjVflzwP2@dU$(K^))bGlzUJsLvosbc_r9kEU_ zY&f315z&Gz&m9)Gtw@eRey-mgZ>A~^)$DgCytKzto#&9&wWH!DG7NSkZRS%Dtt8Rn zB6%Z+og4DOaVU6{fbvn*r>DTtj4|c!VoyvW-e}>yT@bH%TUpUz#>F24BR^*{>>&2t zjFmTT+CjxT4Hu|edjAbb zc1^f&o~@l)YvQ7R#`?|H;Jj~c#h?WEa2&cz9H+^BIQo!Yf+ zsAAst;nDUrB9)0I?!1ziY^1d+Ixlm-51W34#utonGHk!mLt{q?$`U4-Am3&_+Ht#k z55srekf-^?FFoe_bj39tE z_6y0TTN94E=1=4iC&gg_H6G3!%%D-t-l!iqR9?H;W95_uANNrpj(e;7QX+L;42>Oc zRgByU4svwuh3OxI`jj|!L|C%y`8OkR;8738y1%9}d+5$ti;n=tfPx>?+QM5;A8 z)uvOdL`;rb3dkF57v^)55aOOSZZQ?Cp`fuQYtQKt>YGNLs4dA$`q+NW;bV;=4RWTE z9l*$3_zk@j;4P$WaxSJ@`jV!vWzJPNMV%lewpt^8f^Es&Y6x`IC{YFTZ+DK{xJ0 zPQ}=DrTMnKM`?%Z4#jZPwjl|LymRc` ze%}}E(~&)luJV(*UZyIy4Ih;!M;ZeurVIWveW0^4cB)>@Zt-MMJmAHu$Q3k#w?}(Of76fxuwac=cxuiC3zHkT9c^jG? zv=@$Z1C|9>19s7Y*0=YcmL_!45^n}%@^yqb#dW>(!*a$ zgU}6u&8knLm_a)MbQv3Dx=aI#SZ84LR~l*vFW@UhRm_kDhuEtVCEqgA7$+Jx5X(22>&=-UGa5VwjYFalM$ZK#d3$24tjPI`O|LL#Z&aiK309WL z-pKKB;oTt~?&;rz81T7r_INK*gG376Y!d4#RPi13d6fexCd}T$O+n|=g`@cITVC_&;hsLr?>p_MQqnh|%TBx@ z;cyoXvKJ7M!HrVNi9LHpwJmz?rxI)$-|8r4v5ji3d{)rIG%G}EvW+?bq`y=}uW)M@ zIcq`#^{AmwZY8j$6BRs)jClNEN^jK^J+f6$T%Ym1%8sZNYXteUkhqjV&a`4q@lhhK z6KW-~IO`A+8KPeEcl!g~S=p})yHIG+a+v48;yw4A-IAUFKaiY)(ri!DH}BLvN>eLDoG@XI(xN-sWO|{Z(?jmE_p0FX`a^)ltO(lpw_t7 z(0EnC0=eCkFiy*FhD@}NXznEhT(y5<-$M*+dk%|wGq-LjxmEJCnoblr8t8m$h(|cW zGVy5{&KbxL2Xtf5H2g8mN76sT$>#5^ZX{;?>oB#WS|yXfFIk7A^9@LR&^qRyXZtV> z-yT4c^m4NcvoxHpgB~M6Bkyz$d7iT2WsqOt{^SUz8PNLxIUdkWcHH}T~z)Rd?d z-3uUK|e}o<4^@xgdXKvjtBI?dqddGNCIa6vj6(NY5&2xJBZp&3ajAMSZKNc(>j$ z43OvVy4BzM{Q3jv5!=OWe`3t@Lg1(XH9GC{yP$ z^&KYh>pg)pD_BkO{C|M^Ss5+zW_(m%45z*O%#+R z0o4EI0~rv|f^C6B|7HaJ3r8d$Fntj7|HKg~5ZdT~zXK5%huP(d;9eg`w!Us!mc$1* z(b`{tB2+XA^#8zR|4m;4Yx=U<{)?fcul1+u{~|G=px~f9z?%ME3ipb)4;x!s9Ytk5 zBQpULGi;PU5`Uh*CH`ad7lg^~1tq!=0Sfpz0RZ>!(mzmJF!l>>fqeoL6gO`tAAb+0 zV1A$Ae@Xp;H2qU5*e+f14{! and PyCrypto from # (make sure to # install the version for Python 2.6). Save this script file as -# ineptepub.pyw and double-click on it to run it. +# ineptpdf.pyw and double-click on it to run it. # -# Mac OS X users: Save this script file as ineptepub.pyw. You can run this -# program from the command line (pythonw ineptepub.pyw) or by double-clicking +# Mac OS X users: Save this script file as ineptpdf.pyw. You can run this +# program from the command line (pythonw ineptpdf.pyw) or by double-clicking # it when it has been associated with PythonLauncher. # Revision history: @@ -49,13 +49,14 @@ from __future__ import with_statement # 7.10 - Various tweaks to fix minor problems. # 7.11 - More tweaks to fix minor problems. # 7.12 - Revised to allow use in calibre plugins to eliminate need for duplicate code +# 7.13 - Fixed erroneous mentions of ineptepub """ Decrypts Adobe ADEPT-encrypted PDF files. """ __license__ = 'GPL v3' -__version__ = "7.12" +__version__ = "7.13" import sys import os @@ -115,7 +116,7 @@ def unicode_argv(): start = argc.value - len(sys.argv) return [argv[i] for i in xrange(start, argc.value)] - return [u"ineptepub.py"] + return [u"ineptpdf.py"] else: argvencoding = sys.stdin.encoding if argvencoding == None: diff --git a/DeDRM_Macintosh_Application/DeDRM ReadMe.rtf b/DeDRM_Macintosh_Application/DeDRM ReadMe.rtf index 99c6d57..4c3219a 100644 --- a/DeDRM_Macintosh_Application/DeDRM ReadMe.rtf +++ b/DeDRM_Macintosh_Application/DeDRM ReadMe.rtf @@ -41,7 +41,7 @@ Mac OS X 10.5 and above: You do \i not \i0 need to install Python.\ \ -Drag the DeDRM application from from tools_v5.6.1\\DeDRM_Applications\\Macintosh (the location of this ReadMe) to your Applications folder, or anywhere else you find convenient.\ +Drag the DeDRM application from from tools_v5.6.2\\DeDRM_Applications\\Macintosh (the location of this ReadMe) to your Applications folder, or anywhere else you find convenient.\ \ \ diff --git a/DeDRM_Macintosh_Application/DeDRM.app/Contents/Info.plist b/DeDRM_Macintosh_Application/DeDRM.app/Contents/Info.plist index 2c12ee2..5d79f98 100644 --- a/DeDRM_Macintosh_Application/DeDRM.app/Contents/Info.plist +++ b/DeDRM_Macintosh_Application/DeDRM.app/Contents/Info.plist @@ -24,17 +24,17 @@ CFBundleExecutable droplet CFBundleGetInfoString - DeDRM 5.6.1. AppleScript written 2010–2013 by Apprentice Alf and others. + DeDRM 5.6.2. AppleScript written 2010–2013 by Apprentice Alf and others. CFBundleIconFile DeDRM CFBundleInfoDictionaryVersion 6.0 CFBundleName - DeDRM 5.6.1 + DeDRM 5.6.2 CFBundlePackageType APPL CFBundleShortVersionString - 5.6.1 + 5.6.2 CFBundleSignature dplt LSRequiresCarbon diff --git a/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/ineptpdf.py b/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/ineptpdf.py index 9f4883e..f4d6d81 100644 --- a/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/ineptpdf.py +++ b/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/ineptpdf.py @@ -15,10 +15,10 @@ from __future__ import with_statement # from and PyCrypto from # (make sure to # install the version for Python 2.6). Save this script file as -# ineptepub.pyw and double-click on it to run it. +# ineptpdf.pyw and double-click on it to run it. # -# Mac OS X users: Save this script file as ineptepub.pyw. You can run this -# program from the command line (pythonw ineptepub.pyw) or by double-clicking +# Mac OS X users: Save this script file as ineptpdf.pyw. You can run this +# program from the command line (pythonw ineptpdf.pyw) or by double-clicking # it when it has been associated with PythonLauncher. # Revision history: @@ -49,13 +49,14 @@ from __future__ import with_statement # 7.10 - Various tweaks to fix minor problems. # 7.11 - More tweaks to fix minor problems. # 7.12 - Revised to allow use in calibre plugins to eliminate need for duplicate code +# 7.13 - Fixed erroneous mentions of ineptepub """ Decrypts Adobe ADEPT-encrypted PDF files. """ __license__ = 'GPL v3' -__version__ = "7.12" +__version__ = "7.13" import sys import os @@ -115,7 +116,7 @@ def unicode_argv(): start = argc.value - len(sys.argv) return [argv[i] for i in xrange(start, argc.value)] - return [u"ineptepub.py"] + return [u"ineptpdf.py"] else: argvencoding = sys.stdin.encoding if argvencoding == None: diff --git a/DeDRM_Windows_Application/DeDRM_App/DeDRM_Drop_Target.bat b/DeDRM_Windows_Application/DeDRM_App/DeDRM_Drop_Target.bat index fa1cb9b..83ec8d9 100644 --- a/DeDRM_Windows_Application/DeDRM_App/DeDRM_Drop_Target.bat +++ b/DeDRM_Windows_Application/DeDRM_App/DeDRM_Drop_Target.bat @@ -1,4 +1 @@ -echo off -set PWD=%~dp0 -cd /d %PWD%DeDRM_lib && start /min python DeDRM_app.pyw %* -exit \ No newline at end of file +chcp 65001 > nul && set PWD=%~dp0 && cd /d %~dp0DeDRM_lib && start /min python DeDRM_app.pyw %* diff --git a/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/DeDRM_app.pyw b/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/DeDRM_app.pyw index 03268c8..2b7bbed 100644 --- a/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/DeDRM_app.pyw +++ b/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/DeDRM_app.pyw @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# DeDRM.pyw, version 5.6.1 +# DeDRM.pyw, version 5.6.2 # By some_updates and Apprentice Alf import sys @@ -10,7 +10,7 @@ sys.path.append(os.path.join(sys.path[0],"lib")) import sys, os import codecs -from argv_utils import add_cp65001_codec, set_utf8_default_encoding, utf8_argv +from argv_utils import add_cp65001_codec, set_utf8_default_encoding, unicode_argv add_cp65001_codec() set_utf8_default_encoding() @@ -46,7 +46,7 @@ class QueuedUTF8Stream: def __getattr__(self, attr): return getattr(self.stream, attr) -__version__ = '5.6.1' +__version__ = '5.6.2' class DrmException(Exception): pass @@ -567,7 +567,7 @@ def processPDB(q, infile, outdir, rscpath): sys.exit(rv) -def main(argv=utf8_argv()): +def main(argv=unicode_argv()): apphome = os.path.dirname(argv[0]) apphome = os.path.abspath(apphome) diff --git a/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/argv_utils.py b/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/argv_utils.py index 717387a..85ffaa4 100644 --- a/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/argv_utils.py +++ b/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/argv_utils.py @@ -6,12 +6,15 @@ import locale import codecs # get sys.argv arguments and encode them into utf-8 -def utf8_argv(): +def unicode_argv(): if sys.platform.startswith('win'): + # Uses shell32.GetCommandLineArgvW to get sys.argv as a list of Unicode + # strings. + # Versions 2.x of Python don't support Unicode in sys.argv on # Windows, with the underlying Windows API instead replacing multi-byte - # characters with '?'. So use shell32.GetCommandLineArgvW to get sys.argv - # as a list of Unicode strings and encode them as utf-8 + # characters with '?'. + from ctypes import POINTER, byref, cdll, c_int, windll from ctypes.wintypes import LPCWSTR, LPWSTR @@ -30,23 +33,16 @@ def utf8_argv(): if argc.value > 0: # Remove Python executable and commands if present start = argc.value - len(sys.argv) - return [argv[i].encode('utf-8') for i in + return [argv[i] for i in xrange(start, argc.value)] + # if we don't have any arguments at all, just pass back script name # this should never happen - return None + return [u"DeDRM.py"] else: - argv = [] argvencoding = sys.stdin.encoding if argvencoding == None: - argvencoding = sys.getfilesystemencoding() - if argvencoding == None: - argvencoding = 'utf-8' - for arg in sys.argv: - if type(arg) == unicode: - argv.append(arg.encode('utf-8')) - else: - argv.append(arg.decode(argvencoding).encode('utf-8')) - return argv + argvencoding = "utf-8" + return [arg if (type(arg) == unicode) else unicode(arg,argvencoding) for arg in sys.argv] def add_cp65001_codec(): diff --git a/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/ineptpdf.py b/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/ineptpdf.py index 9f4883e..f4d6d81 100644 --- a/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/ineptpdf.py +++ b/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/ineptpdf.py @@ -15,10 +15,10 @@ from __future__ import with_statement # from and PyCrypto from # (make sure to # install the version for Python 2.6). Save this script file as -# ineptepub.pyw and double-click on it to run it. +# ineptpdf.pyw and double-click on it to run it. # -# Mac OS X users: Save this script file as ineptepub.pyw. You can run this -# program from the command line (pythonw ineptepub.pyw) or by double-clicking +# Mac OS X users: Save this script file as ineptpdf.pyw. You can run this +# program from the command line (pythonw ineptpdf.pyw) or by double-clicking # it when it has been associated with PythonLauncher. # Revision history: @@ -49,13 +49,14 @@ from __future__ import with_statement # 7.10 - Various tweaks to fix minor problems. # 7.11 - More tweaks to fix minor problems. # 7.12 - Revised to allow use in calibre plugins to eliminate need for duplicate code +# 7.13 - Fixed erroneous mentions of ineptepub """ Decrypts Adobe ADEPT-encrypted PDF files. """ __license__ = 'GPL v3' -__version__ = "7.12" +__version__ = "7.13" import sys import os @@ -115,7 +116,7 @@ def unicode_argv(): start = argc.value - len(sys.argv) return [argv[i] for i in xrange(start, argc.value)] - return [u"ineptepub.py"] + return [u"ineptpdf.py"] else: argvencoding = sys.stdin.encoding if argvencoding == None: diff --git a/DeDRM_Windows_Application/DeDRM_ReadMe.txt b/DeDRM_Windows_Application/DeDRM_ReadMe.txt index 2650a19..4e8c447 100644 --- a/DeDRM_Windows_Application/DeDRM_ReadMe.txt +++ b/DeDRM_Windows_Application/DeDRM_ReadMe.txt @@ -1,7 +1,7 @@ -ReadMe_DeDRM_v5.6_WinApp +ReadMe_DeDRM_v5.6.2_WinApp ======================== -DeDRM_v5.6_WinApp is a pure python drag and drop application that allows users to drag and drop ebooks or folders of ebooks onto the DeDRM_Drop_Target to have the DRM removed. It repackages all the "tools" python software in one easy to use program that remembers preferences and settings. +DeDRM_v5.6.2_WinApp is a pure python drag and drop application that allows users to drag and drop ebooks or folders of ebooks onto the DeDRM_Drop_Target to have the DRM removed. It repackages all the "tools" python software in one easy to use program that remembers preferences and settings. It will work without manual configuration for Kindle for PC ebooks and Adobe Adept epub and pdf ebooks. @@ -16,16 +16,16 @@ Once these preferences have been set, the user can simply drag and drop ebooks o This program requires that a 32 bit version of Python 2.X (tested with Python 2.5 through Python 2.7) and PyCrypto be installed on your computer before it will work. See below for where to get theese programs for Windows. -NB Although the individual scripts have been updated to work with unicode file names, the Windows DeDRM script has not yet been updated for technical reasons. Therefore, if you try to use it with paths or file names that contain non-ASCII characters, it might not work. +As from version 5.6.2, the DeDRM application should work correctly with file names containing non-ASCII characters. Installation ------------ 0. If you don't already have a correct version of Python and PyCrypto installed, follow the "Installing Python on Windows" and "Installing PyCrypto on Windows" sections below before continuing. -1. Drag the DeDRM_5.6 folder from tools_v5.6/DeDRM_Applications/Windows to your "My Documents" folder. +1. Drag the DeDRM_5.6.2 folder from tools_v5.6.2/DeDRM_Applications/Windows to your "My Documents" folder. -2. Open the DeDRM_5.6 folder you've just dragged, and make a short-cut of the DeDRM_Drop_Target.bat file (right-click/Create Shortcut). Drag the shortcut file onto your Desktop. +2. Open the DeDRM_5.6.2 folder you've just dragged, and make a short-cut of the DeDRM_Drop_Target.bat file (right-click/Create Shortcut). Drag the shortcut file onto your Desktop. 3. To set the preferences simply double-click on your just created short-cut. diff --git a/ReadMe_First.txt b/ReadMe_First.txt index cb3dd5c..04048a6 100644 --- a/ReadMe_First.txt +++ b/ReadMe_First.txt @@ -1,7 +1,7 @@ Welcome to the tools! ===================== -This ReadMe_First.txt is meant to give users a quick overview of what is available and how to get started. This document is part of the Tools v5.6 archive. +This ReadMe_First.txt is meant to give users a quick overview of what is available and how to get started. This document is part of the Tools v5.6.2 archive. The is archive includes tools to remove DRM from: @@ -51,7 +51,7 @@ DeDRM application for Mac OS X users: (Mac OS X 10.4 and above) ---------------------------------------------------------------------- This application combines all the tools into one easy-to-use tool for Mac OS X users. -Drag the "DeDRM 5.6.app" application from the DeDRM_Applications/Macintosh folder to your Desktop (or your Applications Folder, or anywhere else you find convenient). Double-click on the application to run it and it will guide you through collecting the data it needs to remove the DRM from any of the kinds of DRMed ebook listed in the first section of this ReadMe. +Drag the "DeDRM 5.6.2.app" application from the DeDRM_Applications/Macintosh folder to your Desktop (or your Applications Folder, or anywhere else you find convenient). Double-click on the application to run it and it will guide you through collecting the data it needs to remove the DRM from any of the kinds of DRMed ebook listed in the first section of this ReadMe. To use the DeDRM application, simply drag ebooks, or folders containing ebooks, onto the DeDRM application and it will remove the DRM of the kinds listed above. @@ -67,7 +67,7 @@ DeDRM application for Windows users: (Windows XP through Windows 8) This application combines all the tools into one easy-to-use tool for Windows users. -Drag the DeDRM_5.6 folder that's in the DeDRM_Applications/Windows folder, to your "My Documents" folder (or anywhere else you find convenient). Make a short-cut on your Desktop of the DeDRM_Drop_Target.bat file that's in the DeDRM_5.6 folder. Double-click on the shortcut and the DeDRM application will run and guide you through collecting the data it needs to remove the DRM from any of the kinds of DRMed ebook listed in the first section of this ReadMe. +Drag the DeDRM_5.6.2 folder that's in the DeDRM_Applications/Windows folder, to your "My Documents" folder (or anywhere else you find convenient). Make a short-cut on your Desktop of the DeDRM_Drop_Target.bat file that's in the DeDRM_5.6.2 folder. Double-click on the shortcut and the DeDRM application will run and guide you through collecting the data it needs to remove the DRM from any of the kinds of DRMed ebook listed in the first section of this ReadMe. To use the DeDRM application, simply drag ebooks, or folders containing ebooks, onto the DeDRM_Drop_Target.bat shortcut and it will remove the DRM of the kinds listed above. @@ -132,20 +132,21 @@ Once Windows users have installed Python 2.X for 32 bits, and the matching OpenS Apple's iBooks FairPlay DRM --------------------------- -The only tool that removed Apple's iBooks Fairplay DRM was Requiem by Brahms version 3.3.x. Requiem is NOT included in this tools package. It is under active development because Apple constantly updates its DRM scheme to stop Requiem from working. -The latest version that worked was 3.3.5 and worked with iTunes 10.5 and above. Requiem 4.0 and later do not remove DRM from ebooks. +The only tool that removes Apple's iBooks Fairplay DRM is Requiem by Brahms version 3.3.6 and works with iTunes 10.5. Requiem 4.0 and later do not remove DRM from ebooks. Requiem has a Tor website: http://tag3ulp55xczs3pn.onion. To reach the site using Tor, you will need to install Tor (http://www.torproject.org). If you're willing to sacrifice your anonymity, you can use the regular web with tor2web. Just go to http://tag3ulp55xczs3pn.tor2web.com. -Alternatively, you can download the 3.3.5 version from the following locationss: +Alternatively, you can download it from these download links: -Requiem Windows application: http://www.datafilehost.com/download-b015485b.html -MD5: 954f9ecf42635fae77afbc3a24489004 +Requiem 3.3.6 for Windows: http://www.datafilehost.com/download-f7916922.html +MD5: 10ab191f2d86c692d57f6a07b4622cf8 -Requiem Mac OS X application: http://www.datafilehost.com/download-50608ba6.html -MD5: 4e7dc46ad7e0b54bea6182c5ad024ffe +Requiem 3.3.6 for Mac OS X: http://www.datafilehost.com/download-47fce8b7.html +MD5: 6d4167d47e6982ddbb8528212198b520 -Requiem source code: http://www.datafilehost.com/download-af8f91a1.html -MD5: e175560590a154859c0344e30870ac73 +Requiem 3.3.6 source code: http://www.datafilehost.com/download-172920e9.html +MD5: 1636862796d573c693d56bcc526b60bd + +If you have any problems with Requiem, I suggest you contact Brahms directly through their Tor website. No support for requiem is provided at Apprentice Alf's blog.