From 934fac1576ff6cc10b2c3c17288efa9f3bd7d9f6 Mon Sep 17 00:00:00 2001 From: KB Bot Date: Tue, 28 Oct 2025 13:02:17 +0000 Subject: [PATCH 1/3] Added new kb article generate-pdf-with-headers-footers-from-separate-html-files --- ...eaders-footers-from-separate-html-files.md | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 knowledge-base/generate-pdf-with-headers-footers-from-separate-html-files.md diff --git a/knowledge-base/generate-pdf-with-headers-footers-from-separate-html-files.md b/knowledge-base/generate-pdf-with-headers-footers-from-separate-html-files.md new file mode 100644 index 00000000..7c1aae02 --- /dev/null +++ b/knowledge-base/generate-pdf-with-headers-footers-from-separate-html-files.md @@ -0,0 +1,81 @@ +--- +title: Generating PDF with Headers and Footers from Separate HTML Files +description: Learn how to generate PDF documents with headers and footers using separate HTML files. +type: how-to +page_title: Generating PDF with Headers and Footers from Separate HTML Files +meta_title: Generating PDF with Headers and Footers from Separate HTML Files +slug: generate-pdf-with-headers-footers-from-separate-html-files +tags: telerik, document, processing, word, header, footer, pdf, html, merge +res_type: kb +ticketid: 1702165 +--- + +## Environment + +| Version | Product | Author | +| ---- | ---- | ---- | +| 2025.3.806| RadWordsProcessing |[Desislava Yordanova](https://www.telerik.com/blogs/author/desislava-yordanova)| + +## Description + +Learn how to combine **separate** HTML files for **header**, **footer** and **content** into one common document and product a PDF document with the result. + +## Solution + +To generate a PDF with separate headers and footers, process the HTML files using RadWordsProcessing. Follow these steps: + +1. **Import the HTML content**: Use the [HtmlFormatProvider]({%slug radwordsprocessing-overview%}) to import the HTML content into [RadFlowDocument]({%slug radwordsprocessing-model-radflowdocument%}) objects. +2. **Add headers and footers**: Use the [DocumentElementImporter]({%slug radwordsprocessing-editing-import-document-element%}) to insert [header and footer]({%slug radwordsprocessing-model-headers-footers%}) content into the main document. +3. **Export the document to PDF**: Use the [PdfFormatProvider]({%slug radwordsprocessing-formats-and-conversion-pdf-pdfformatprovider%}) to export the final document to PDF format. + +### Code Example + +```csharp + static void Main(string[] args) + { + + string headerHtml = "\r\n

\r\n Company Name\r\n

\r\n

\r\n Document Title\r\n

\r\n

\r\n Date: October 28, 2025\r\n

\r\n"; + string contentHtml = "

This is the main content of the document.

"; + string footerHtml = "\r\n

\r\n Confidential - For Internal Use Only\r\n

\r\n

\r\n Page 1 of 1\r\n

\r\n"; + + var htmlProvider = new HtmlFormatProvider(); + + // Load each HTML file into a separate document + RadFlowDocument headerDoc = htmlProvider.Import(headerHtml, TimeSpan.FromSeconds(10)); + RadFlowDocument contentDoc = htmlProvider.Import(contentHtml, TimeSpan.FromSeconds(10)); + RadFlowDocument footerDoc = htmlProvider.Import(footerHtml, TimeSpan.FromSeconds(10)); + + // Create importer for header + var headerImporter = new DocumentElementImporter(contentDoc, headerDoc, ConflictingStylesResolutionMode.UseTargetStyle); + Header defaultHeader = contentDoc.Sections.First().Headers.Add(); + + foreach (var block in headerDoc.Sections.First().Blocks) + { + BlockBase importedBlock = headerImporter.Import(block); + defaultHeader.Blocks.Add(importedBlock); + } + + // Create importer for footer + var footerImporter = new DocumentElementImporter(contentDoc, footerDoc, ConflictingStylesResolutionMode.UseTargetStyle); + Footer defaultFooter = contentDoc.Sections.First().Footers.Add(); + + foreach (var block in footerDoc.Sections.First().Blocks) + { + BlockBase importedBlock = footerImporter.Import(block); + defaultFooter.Blocks.Add(importedBlock); + } + + // Export to PDF + var pdfProvider = new PdfFormatProvider(); + string outputFilePath = "FinalDocument.pdf"; + using (var outputStream = File.Create(outputFilePath)) + { + pdfProvider.Export(contentDoc, outputStream, TimeSpan.FromSeconds(10)); + } + Process.Start(new ProcessStartInfo() { FileName = outputFilePath, UseShellExecute = true }); + } +``` +## See Also + +- [DocumentElementImporter]({%slug radwordsprocessing-editing-import-document-element%}) +- [Headers and footers]({%slug radwordsprocessing-model-headers-footers%}) From ae2ae4886370249ab09caeb0c49004fed5d714bd Mon Sep 17 00:00:00 2001 From: Desislava Yordanova Date: Tue, 28 Oct 2025 15:28:27 +0200 Subject: [PATCH 2/3] add images --- ...eaders-footers-from-separate-html-files.md | 45 ++++++++++++++++++ knowledge-base/images/combined_pdf.png | Bin 0 -> 42586 bytes .../images/html-content-preview.png | Bin 0 -> 1608 bytes knowledge-base/images/html-footer-preview.png | Bin 0 -> 1808 bytes knowledge-base/images/html-header-preview.png | Bin 0 -> 3454 bytes 5 files changed, 45 insertions(+) create mode 100644 knowledge-base/images/combined_pdf.png create mode 100644 knowledge-base/images/html-content-preview.png create mode 100644 knowledge-base/images/html-footer-preview.png create mode 100644 knowledge-base/images/html-header-preview.png diff --git a/knowledge-base/generate-pdf-with-headers-footers-from-separate-html-files.md b/knowledge-base/generate-pdf-with-headers-footers-from-separate-html-files.md index 7c1aae02..0839bf1f 100644 --- a/knowledge-base/generate-pdf-with-headers-footers-from-separate-html-files.md +++ b/knowledge-base/generate-pdf-with-headers-footers-from-separate-html-files.md @@ -75,6 +75,51 @@ To generate a PDF with separate headers and footers, process the HTML files usin Process.Start(new ProcessStartInfo() { FileName = outputFilePath, UseShellExecute = true }); } ``` +Let's have the following 3 separate HTML files: +|Header HTML| Preview| +|----|----| +| +```html +

+ Company Name +

+

+ Document Title +

+

+ Date: October 28, 2025 +

+ +``` +|![HTML Header](images/html-header-preview.png)| + +|Footer HTML| Preview| +|----|----| +| +```html +

+ Confidential - For Internal Use Only +

+

+ Page 1 of 1 +

+ +``` +|![HTML Footer](images/html-footer-preview.png)| + +|Content HTML| Preview| +|----|----| +| +```html +

This is the main content of the document.

+ +``` +|![HTML Content](images/html-content-preview.png)| + +The result PDF document combined all of the HTML files in one common document: + +![Combined PDF](images/combined_pdf.png) + ## See Also - [DocumentElementImporter]({%slug radwordsprocessing-editing-import-document-element%}) diff --git a/knowledge-base/images/combined_pdf.png b/knowledge-base/images/combined_pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..cff8e6fd85aae33c3472e9852313dd702e103ce9 GIT binary patch literal 42586 zcmZUabyQSc)c*nH5kv$LL_k6j5s*+y8bLr>T3SRphHeH>0hLl(y1Tmul$0EL=%IVa zfnf@Mmq(xXUGMt+!Ci~F_nv$1zUS<-_h*04m)B|vh?mLlT&4VcKj`B%3NU6X|H`$SDypig zDk^T9zo{FSVUGpwMEuUoX4&1mKFmP$orcBCcFA{lsuE`6i|A!fA6E;zeUD|4GAIDQ zW4e*%>sW3Axkm-6;1j$aA;)@M_lqmZOSz29%%$uoNzvuX&DX&iTPbQyp9n~`jvZb{ zyX}j3A%+kbkXWgpZ z(d4oH7-+JG3|r1oj487>C~G^%WMyT|%*+VYj2cW(NZ}4jfyP!Mgl%nYYqU&F;WISG z%Pnb@0SCXX`AoSXH#JnfoAelqUgv9PDqo$k_%N&&2@d&3U*~?`uf6GN_E-4|5Nb|aBDbv8vAm(SUG{M`wC2cq@$j(*$(%#RQSgX2=@m>u5pSy|*JA z%^y6n>bA*bO`)D}|9ViAXsz|g0|$R~@3^ZfiO8@nDEO40jl8t1Xnmq!&iqo@6_IuC-=A%iLcpjekt8`3yO2l}=nLxWC)=B_f8Rhe`14KO z>A|&rN?z_(b21&o?YDlCo~+H|KUF z1HLG`RxC2*sW9ngm#XO%pFu6hoOFj78&Pv`>uy!QZn;URo($gh9M*O|@x&GudPEAT z;y|gYt4pnf^Y04PWTz-{#Htm3FrJ#Ib9Z-dt+bicD%L9i-pM5Ro=1Ej9DHIINW}_G z=}qO{iiIn;T)*;2rMI^iqa*7rTU=b^Ex7I7fOZ^=T7Wb*Zk9$Tm$!^oXP~v&cehSt zIKES{LLOV^?7_$oz+@54ye?2<~80yfF%`?HPg{7u4peR&FT1&ylS*vKgEg(R! zB%RquC||6&)Y48nOHT&UZdaTnY7e)yqJsFMbca@_KioXY%BKQ`=1ddkZlmjlZHP&+ z#|P%R+QX2Lf8d~RIXOA5C30dWTlUIsDW-U$^-UNnQQHE{N zu6G?PR_P1UFx9uTq(s|JL_`E|QKcSr_S4Ifxr{oxX5UT}0yN{-41{Ts{Nc`A45iQ) zWu!iR^KTDZUZ{hs+u}YELw*La^U@8M7t5t4CHWjIzVPqm&>1ZPtW}}h)rj7k6A9Sj z&s~-CZFGGpmgVbvQH`B-rb~D!BYiCIv+2=6F5JKXD~ZNuZ47-wHm88QH-G&|m1(pK zX*F+iFr`>b;;}imr=6imQl70s4T8X9=eFaKWn)6WGdVxCf{%LHTjSKl5CYA^5Od}k z!?uK}{3(xHgt-bBpGk2o!)mrJ=B-bP#&=CGFwZ@^bNmYTVQr4_2Fw_Xv2%wLORT4k zs?@w+{SNJ$=HE{^DyzAojCYnJ9bySMfVr2WcMb2P>9abUcHLcxMq4$`{R=47BlfZE zsQOD(5jvCCZ;8wwdpe;Uhc^tv#(Km`)mDt;;qHEk9ajP8Xu}t!|vqSh?HX@sVF1(bO`Y z@T?!d_X8Cik{Nx@e{P98O{S0TsSTOVv3twiVRwC|rH@bcndd-%>F;p|TKyB^Jmf3I z=+@O5TZK^0-3LoQ%_TY4kp907uKrA_*eDFEc zd(z88ZR|<4r@vmd-`9{pDi%l{M~9PV9-hd~IblkSRUvXbvWm;0d8WvlNcD@&MC7|M zU93Uvif=*mFbr5ehU=@CAk)EnjM(7?45U+%CbLwYewjX#AZ4lqJYL7U8%U~kwt$>R zwa*nNJ$uA&+O*x5_gWZ^@5k%m+i~t0t2^B(%?SMhV|nK4g7?mFE9Od*cgeP)=xURd zxPLh4Mk(0Yhp;f`h9_9_profL6@HR~#3@`~5Q| zt`4Rn^gV*j)IQcGD$E{_gUF9XlDjAUAan~d%^D}}!AUz->w%|h#yek94jZBVYFpp; znl;%LZk|>v9~Cca;sH6KRG` z==J3J-~?ljAHHpjVqjM?sK*Tcp|VK&I%x^Yk77jaKo-g*JB?z96JvAP|1?VN-V_=5 z%*MaaI$E)K{l^T_T;gpzb>0#L5|Cg(?>zB*=YC2YZ$!gldu#J)o5Nin{QSvoiV?rW z5WW`gXfy$7h&qY(`-S%BnbcU-l>q6koUV8ytS5wLgMI!Iux9;>28BTZlx(kry6+c+KsiQ z8m5dOJwQ-9go29)G4!acf|+@LVPk9PTN!xhP0=h6cN!|BT zXfvEOR!tUC6+7kSnyI9yJ^sxaRgmPdt6Vd7=ssScVS5>46c!hc`9%Zf#GS1~UAnNr z<5A`%K`<3S&5<`}o3;hL9Xl702nH2R z&FF|cEnqTvyh(kq_=9`;X}zEo5Cu&Sy1Nyd-sjzOZ8dnxpVz~LRfZRfFR<7_D&k`~w8VKQK^lAM%s`_X`fDmpoz*!Xv4Epz z6m=`0M=#U16_oncUTkM*vgtU{hS*twG!}$Q1McVH`uwUUY@2=4y^larNqWOjl@}#+ zoKP+dm%|YUvV;=TI^C+Uoqr&D)H$Hi#zXh^ygHpPm=+^FW30sy7X2_+sc*6N(s$c? zeq3sE>Wq+j3QqNP{j%dbng8*1TXr&!y&XPp=jgU0(3%3=% z?5vJrPxF!qHO0=rY8-Za&JN6sT_*LdY<4_r)geGM3WnAh6j&qZ?jQ=PE+gjq$O*3A zo%!baXE|vSzBAm`z_V*85T!6S4>QzUD`vYm$?l+eJ9hS=tyt@H^n9(D)%7)s8u{mD zRjkkI`x4Xq>qJbe(uN}%s#n>&Stt1$xdPBx_&blP%Qkw58@0eyP#;HBzrv|^8c9d1 zUORP*9M&P~*G|nzNnWda@8YkID8y`jkCQ=d%=hn^?c3Y74r1=}c53n`>CV0BCF61w zo#&ItH1^c9bKg((UC(k49%W@y1k#(G4Iq*d)i$faP~@hQxiItS&!KqB_NTc@>%DzV zHjWufLGadq%GM6o00$&wxX2fr?yL&JoECy~-rklVg#5#4c!X2`v762{)AaGRe67PQ zF#R}wxzL6*04Y;>k3*7dRrP~5y{*_s<3Nn>KY=v7@0BT23s=ZwoEZNTv2fZ$`@k3a zDSDYOwzLG#Vt=tE-FK^=G{MF%#54>ivMnWInb4;NG7=wkix9qj#Sh=M=Ukh`piA`- zx_Uatwl(P2ycHB1CT|&|8piPBs?BAiWG?%DQ|IoBOGd7Hz1gk4o-fOc<>2GIO+3}~ z;X#8V*$O8&lzM+%p%BjqWn2llZ?XCeABhZRa zc%HD_3DnTK)pSNFLECPwPa?p@cqSmT(mqPZkrq7WIP60fhvsqa0N2Iq)vjE}Mrbv) zOz5a`^WT}_?pmYSbIw%*m+`~V@Bgtmsjs(wImSHiCNZit6)|)q(Ja1Yau*Ez}ZJjqFpte ztkCKigV1ifa)<|N-gCz+1za%2<}fokF;Uo>)_~_fsB+y#;UcU8lJA0tO~d z_P@X_H{`W-tS&sAwHDpfs~A1kbBTyZ78Zsu&)D~1WFt=_v-n`^$Cg(@MnFbmxygD- z0SCRD4m|c4Jr|~0Ay6GzvZ!!5Uvot?x70ONgs_m@y0_UebK0Wx`hoN$%^X|y-S+`*lG{1jHSSQdy`EErCiE4960`X|Gx)ux%9*|tUZ zlvKB$>#+c17eoO`-1aS;(3waPJHO0tC6P4f@J}yy= zd1NEzeY6Us!McsHc@PA35u-5&+i1*MSkfH}Iop?P2DRB8dHl4-PQQqYO4@}=lZ1xt z8XmxkQWrxVY^Tdg*a=K=%e3?5y&jqSx|cz|zq$sMG7*qiy`g{qt@82HXUr4={+q*P zC8>GOj;q1Hs`@(`Aj@C5kPN+gZ5SPkls%Lu7dO|FC)$}N`SKC;G~IjFMOcz?7_4XD zt+~w;ZD&~?eiS;RlR7rvmbD#eH)T>aiFL@dgN_n!ZSIk3y#&2K=!S}Hq%`j} z_3x+aYi3#|e=r@Ijwj+~TBsGDfJ7qgn(*D+p47D|;U^ZLGnWb(Q?u$GIc;58S@AvD z&J~A3wqFN3fO@~{QPy02mH6rBSLt1noV>hk&&5jr-6t*npyd5eVQAeYx)vHDq3vPS!%=QW=4R!q?YJsf>-H`Uu%YTxS> zQ3OP{Xj#m@K7Y!{Lg`O9*yo4tH$DFvLkqyWm+6sAx1>J;YZa+iU>$!wD#{gv;JvLdK`H9 zEO}K0HA)uw%f}I3#gTsFLu+N;`1k3+;egWVP5bICk>-D&4jiOoFYmdkD*We%2I48_ z6rj}=M>@hktq#j9#;8krZ=`zKb~F{d5S-0QK48?=(V?NCSzBMv^Bm18qX}#$@mG1M zl4+=MoA7E=6alN;&!4ykQjFL5aD-%1(p+DUdi0t+>BCS+$Yl8@w}!c`ucPW z-LfE6V=jW=r(m2{Fm+!r(8yzrYkzFT!}(fIkGAo5`_x&`m1_d!{Jy8V+uPf}iRUKc zX~JbR-(KfEt9_{Q%m4YT4)JHQ%bR{u4Qqcp5qXg8Bxs_ck=b}}aOdU2zMH~DKdI9` z+!&=I)uOzocK@%n6o`=nTvAePt*x!u6UecIyQntVLrTm9b zb!t;X?=Jny^1y_PUL;w8p2^7xTTqSKFBzmsB9{4^9i87V*G*84N)iq;37qT#%M zB)IIJr-hneb8~aeE}k81KadH%ZurYrP_2EHxc&a+aFd?Bip;jaogEhIl}|>|`Eqk{ zY3=3IaD-nxhB!PGoLH!_iSY=%K^Ohw$B)Fs0)IqxPAK9uJx%j|ceS*ag)1 z_ct|6A}*@{CDq=e9#NYZSxYcIHzm9SOk@(`3fqYylG=O0mi`~v&At-(qV_(Fum(!2 zkZEgcZ=!?K-l?QZ;%i|h#g%skr-2#D>7Y3@-k5!X98+&Q2<8o^7gQP(QB+jCE-$t> z!2>WljYdr_3%;2zotN+jPr&o|v9-Ouc2iz!&E={n;e&kLnzj0jDz#}=`~r6zcNcB! z-e=6+BGyM%+&l_5wB6aHZV6fR))Ax1JE`1EiUbj&5hNbPN}x z)HH-qh+3QXgzLNofE!?y9L?eg2H|bKmSW9ZATlb(2b0lq8a6F{AX8FOidD6R06>0M z!Q~gTeJwAOgmpD@=a$Q$xiK@qk98{Swy6-Ib~=w3L-KeU&5czDo5XlXWwjhY?RF%G zrL}KckvXABYKd{pChKPMYv}ZesjalOpk~u&1IiDceZ%iqsi$n-eDuKBi{c5D`O{gq zC>gQVoONmUb^~_F_g2}CCi|2k@)@~-aNdeYKYSv&{O)Y2e}w1z=iIfTC$FS51nLEB zMsr?#{KuO(Yt`l)hvwY1C5?G@7gh97@s{m`>r)FpP8iq=#*ACM27;W#&rtu~%1;N6 zsS4Y`A%J()k5OS)PkZv@i5qQ*g+gOVUM!LL=VPsszNUvyjAtV@Ir1U5F{jZfp|MQ* zuCanUOxrn6dRdLi@7D-*)C3qeevffg+)76gk$KFYt6|6^+QsNTX1cTK7 zX~-k*@(I3Y_@4TSp_P1Ql)DtuSV(cR!Nl8~9jhov*Il^4kcGL!0m-q4Aj|SrVjz_E zO}Ib4^S9G3N@?RwRE-~~Ax*+2x_2i(5>)FHS2Gj&NMC?_y?KT8{X!@R^)^QhDuNT&P7g_>?>M6ec@H`;r+JDfZ1x zIQHFeYnXY~NpYqAs--|u{W?+; zPMyiMgTBC8D!e-tB3%xmXQ zy7O_BNr=jo=8ifK_lb8bWmS;@1{WKn%6kXGxvR8Fc*K;2pSiwj#5x-<4@Az#y!Cr^ zw%w72+7Gf zA>P3V73*&tkB%>|J&<0(UKq^?EX^D-=tLw>k9JnB;SsHa9D5n_TVJI!o7#3xv=kf`9FwCV* zqgHrS@a(p3^~79z==YJf?K$-V9^E zxaEcDq~DI-J}f5;Za}EYLnk%awB`Q^v|BU{+H}?Ges7W^W)60_KijRUt~NM6kcFDH z@VX9BlrTiN_9wYhL*^c+M}0n%dRkbP##poaj(bO>#6{U9Xq*k3=4%r`JIo!QPQwe*c=J3~_w>A)UB2nH2O6K@%V=ZKsd?YQtUW$-8dxUo zsU-o3@6%)DS`Z^ zm|vI;@>^l>piMF`XmrVilru8UU}rc_#_i{TvTH5#g8SQt7dN$@%W^}yaDvTIqv?Wn z0y@JfM1q4C+clV-G1IMBvt3RX)lUZd(TJ5p+)$b{qi=a8bJQg0;g&&3I<8E4;#KqH zThf@;(r`x9wpALYDRX{(=6En>= zEA9(96pgK3h;VJ*;rb^dFkI7Nl5tI|W^%G;R0rRr0$yGq^p^?j&H;vqjHv_-p`7uo z(No2W4S_P7dxlMuKGd5FTcfP^?RMP1D1GqU(18~V8ZT_y)=?hq$QL85EG*a_Ju0g^ zCyLR7B^er2ybZd31=69IpVb1a$DQX^&U;{YYbhPKgip>2)9OY>DS455jT=k_py7`H zSb$(LvLGWPqq0&X7)a-2X|`h_V4&Q6s^(SSbSuGg6mDj_Bkd8pkQFOS@fEfY61lHk zZ5KK-W2VNqSq(8Us&F)ph!?D%ih8`O>44hj5VW&{8l8~mDy^@U=4F*=cRq1|DSZ2+ zC>2+_5oD={@%p_I^m@nm2i%f7#L{HBepq}2Insln!w#Pr*AMXBKF(YI?RQGb`)ppI z*4B~~b>6)JIWA2SFb08zW{0&z=6|GsHn}=mCRg&mI!5n|#On*sFqiQv5t~`&s6uv} z%huH)u85~nt+F=SP4R|(yx@Y{A04m9Kr2}Q>$)*R-eJa(hMP9a=uzs``bOPZjbyCh zdGsPGnq?kcT5c(8I(SD0JYSJbKHBg|ZdXCMv9VE3P7X6|uUA%3a90Z4l9v#x#!*;B z*4%zdW_s3s!W4Fsl|HWO0ctjyDFElps3iO7UrWvqswDEgAl2PpfFL>!9Lq^?d!W?o zAX9`RB05FPWx&e0J95+)R0)3b&kxF`PQRD$ORB-@C`{bkjh`##{>Qw>x7ls?dRDXz zJ+H8dd&1qJP1C5W!v>@rGsIExf&`+|gk{9!fwxi%NFx355Cunu#w zhKxcIkF7b~jhD|OpSGBiLYiDBKy(3G=J)+|$uc31XI~~wuVH?*z3-*6Am~rvZ3C*> zqor(8Ql|XEJ_FhS-81S-eTBATvFzVPweK|Myo%Lb0Amry>w|`s?}8=X0+r`A1D(vG zBBe34<5H>4w|bjrr=S4r>;(>b(J=c%+`GyWJ6C*jJ|7?q^Py(bHpkgh=jI8U`bH78 zPexLHp1ZFx@ymhVx!}|G(8^6#rHqsJx)KcsJP&_Fl<5mC_#|%Vv!AuXD2X1aShl_& zdM8kyxBslzcg-&enhIHP+HcsI0-dVXGxde*SM6nn^$RxVh04iwGwuv5F@VX85hb%1 zR>dBeDVLQ$lt&QG5}WOQgV%WZ$5+&cu{91Hf6 zP?cVoAo&|wTKq6=ogc zuGDdxuSIe_w3j}R@tgrFp8!NHY@6>%@r>VAZbB?+@Muy|VHFQ)uFGe4fm2GmnF-|M z_G45?s3p`Ib8Yt&eP=eFp9#Y)%U{pU`Q}c&O#a?4_=YdVI%M48Q)csI)uz#O9oR-8|llc7~R_vCAGlKqR=cShg_dhDGh3 zmc}C@-s#y5F4?4YfJwEko<=S;S*j);3rWN|3}tlX+-s712$Ydtxh)(^V+GfZUsu)| zxS~!g1oX32x`v@wYUg@H?HnHP-O-EjXj`9rRNKTath8n9sb9BOKgs101H&jtpW>o< zjO*=N&{rpMiYvG3ii@W2FwejKi6c73Bt1)Nt1$F)7hpa^M>^*58;&O=qlvBE4svbU zOnw*+{is`L7!k;xK^kvAy$AIg*e8t0?lvibeZ))7qr=*MWO@$_zO&R1qX(M^@4lGY zZXHSDzIyRWS$S;tbM!;siIOk)4tcTEWd2l-85=-|ve!SE^@XQ&vdk`9Hlkm0s?H&q zbB8aySiq$E4(g)_yxUz#N63CEBfJk~->mGhH|PD^V2-=QpjN5PsacP)NnM|YVvEXC zvBy*3WU5ZyV{QindC{gA1+1ue`G;J-!WTTBr{gzX^v~44>5X%joIh?%Rw%9XV60Ak zE!7f2$!B)GR$}}9@KZupkHWR6^vK$t2}atCU>2fvoV8m2G>WBG%#X8g-u<~r0J+z? z%K4B&o&D$uG8TzpnhHjJQU9E}V`TycgI|z@6&1RC9uzG|nmTD11l8qSvN;lR1?WB2aTn^O ziG*-H-iInCENai){K9>nZGr9JN$XbBk<7GLq<@x6hvl1r?c8$PU&+}?RqXtJ)q(9S zV*UPn#{kH4(;J9qie#DI)3%HocjXeqzXKqm!e5rv>_{;4>L2WKwVmZ#e0<)uDl_ZHUsWGpGMD@R%UtpZ zm`U7>q@i^N~~2N&pGv5Wh-%z^#J)%c~Z>0ASezm-%P$D&f1Am(bFw4#0uc`^*5w`PX{V z)BrGi@?Plg4S~{cgU&bs!Qv%tr2I@yD1Yl|&>1q(z=V`+giS992zi47YAp_%gpxuZs*H^1@&0YpDF^5QD~RER zf=Xb>C1wRMCcr{huLVE&dxi8*t)DieF;=^~e>+J)q;U&iwb%Jm|5$60<7ev_(C-wF zp3k)Zj-sG9x6W3WFV0|fPg0*dQst?2=G$GR+-xFx3Gi19$}=divV!WIzsP8Vn_0|` z`eptlXqOfkej?pIZvQJS`zpzuKTT}{kW~(vl=jC4(mykaZYd|;+kP?ipN#^efH$BZ zCI0h2z*t}Wq+&6vx;yo!cY)F{%7WtJ;)**6w}{UJk6$IK5K96uvytd!Bmq(7L#LzF z-crMQur2q@h#4&%BdHc`9Ye+RR?yZcEfGuT=dK~TAHj`3lrres z)dhgw3NLtdR2KnqN&V47JRm6roLo^sfi*xbXSTOYA3H?z1!uiv{O>cCNSm9lNSz;2 zz$LW{v|85?T>2Gne-&tC-{CQ8@IxO}RXuY!K0a26yr&P4;Fe!rtY_Xsf95bSN;Gb5 z0;P126qwAvI9T%;7NtjGT7ky^SWq|-pR13+8`#B{U7L}C^{r){wW25!rMbOd1Qh>uLrNlqc*90P` z6pr6*{j6r&XWSXYf4dKSMSxC=dG6J0#K$rL)6u&tDJCXcgndn=Shw^@bWQT1nTuA% zM*=`So8b=J#DXF68P03WO)&9MG*(X&pB{=20Wj!7jWt{{*TKf7unw$8^{DL$_1{;N zenPUkv5^lzBj`*kW}}L)_ ziEyo(v5ASBf}E;?9O_ki2;bBbUjPUv1k3#Gx>JF)>y!^u{zqVzm>8CxipO{$?+$?< zlXKA<$ImBh+}X@*<33;icc_`sWIVl^#Rhmw zOV2nP?zp%(vO7;+e_`t2u)5UH{eLY6uE$d&`+3_+5CD6jx_w)(+(g2CTibVCF*vjQ zk0%M*d+-yGDH8-uQ35_xBRYrOSw~0b<3Hq_92|bz>^T051adnLoq49q5tNJlj z-qcz2Tk5}4VUat7?vaFBad|lu3axj|J32br8q4Q$7+n#uQ0te72Q<$-`c<9HU-HbU z@*a`0`#;kCYZ($nAVp&l6Eo}`2I>cvgGo9-4sDYUh*T!d4Ba?iXFpU4djI&pI?Lzl zFAERb+hwriDi#(NK2-S|&Zlr{ClEllsc_yYL~LeMM3CtU;on|-js%>oTgn#kzfOYi>OH`3P>&=lto$_vB^gjHs&t~IyYiEYkK7RVb zOZ4}Jr88& z5)=~ECyCA_>%kY?NvMzI5v^;#N)^nXT2+<6eQ|9GkOQ@Wn^1aI2EeyB0q-;3yH#O$ z-EAmC$_M{_cD;PT^>h=hjz9k0LmrVnu|HdZ%j*wMx=59Dm?&oMvQ=}o-@q$_PnN&G zVKmwB;~wE6nl}mjR5%+zNwf)s)H_``PceJ*u4TcSc8?o$*I$UMJ~x34@8x zcT>#ZX_Yv%e^2Bdk0+y=DN=i)GDcSnl(4on4cpA+MfjkZ{n(Jldc3)3R*_{FZmJi=-5o7XNPv7^?(*#ETXB}WU#tv1< zv7BC&TxeUVHCWl@0^RlR-Evm#2-}&y2*C#U?hkOR{F6E%8yw*t5O8qqb{YCmBC0hN zlgjKj{l-*)Yr_z3Tu~-6@-(v5C1B-JlzbD8= z*8>M{p=*1>S6iI*kb5?9XZGD|w0=8T<}@h$GHODSLuEz5ka?gHhdu7Q@OR#0tS86X zyN=8ySFPjrCB@vewC>-mJFNB(NI8$#W#(OQ={~c$@cy-6s>*yZp-2JQ>tmd_2~6?M zBw*N<%xiRil#cm1l2qz@V*%Y=08nych6(deDktA5vqv z!*F^pW}6;lk2y$^IzNG`OV(NXcP;lv)N`FVw%XZX>OuC*rKtJU?8SuTJuGPHKA` zyz(ny(q7#12E@62*mX`ZqfY|1U=GGrGn+cLRIV>vpo|b!X;wE@swu*e%y+o`&pg|( zgT|fi1ga5J0mKilE*%+79Y2z$N43hAz#s-mol5A z+PBnO^p}aUN_uaeXyrlsS`X$C0eIKmucmRWMIn)lQhVUH`5ndOjYS|{|48L6)SBxF z`u7Otc8K#f+O+vp%!;8ls?;~PEb|b-Z8tf2H(}KeTb!;JL0}h^GoVPeVPv-JZLK?! z7Y}lj67=45*UF=vb6Ub)ob9ADnO0UICp_ci{QX))Kx8%*>3jZLy`>?}Yn{cIlq{Cz zp;r5Wg0S$UT88t&b?u*DfuM|?lG#`G-AfXdx14jHcZPYYXWeIyQyQn`sd5(x>5?wKYif5y5r8f`Pj_tHm4>>_f zI@6sey_EtNypMl}h8)@;@~%BHeaf=7+%FHdnhwb(S1iLYrK^eMTBY=ujX4?}(ZC0r z2YfhD<*XN8ThN}NR&mg70P;w$c8iL&4D~ymT16B)HPi(-;FKO*!iZOv$I4M}cC^+% zH|WqESmAp@(F31){8K$-=yykCo8hnLb>Pj5Yp3^vxdIsr%bFMs$j5!y}d=v94Qs+ZQX<7;XQd#oG>H>Y9LRI3EOiV zfa{-?m+4O6QF&e&;EVR%K8YU4qUhL>I>ZqgaBgk$EW0L=@O(36He zWr!3lv*-3St-4Xgl0)`IR6zCHcH(u<3mgA#b^P?^G2C}K{+Dd`g40TU8E*8fD?t4& zKFk#N__*ZM-EVhGLRCJPXK zY8M$@CsYHsJ2*3x*FWKH+UtILMV%BQK2&7o=ws}&f@AjYnzO@fdTUtj#f2P>;xF81 zaqSo9hn@Qi=;)({yz0z=$mX|mhl78Ji^sIHah}Qa8i|+ac1QK2wK2-#>Mi z82>8f+qqk{ae+%tpLaX|C57A5F`wIAyFejtAIqQIf%y?qbgzzTJ zGa9yV^g_XKy3fgTY##@iW3v%Vur$5RqaNF}r^N-f#T1_br~){tgJ-ts6wqtbY(w`;77VRZInZ|74c zzp#Li&|a!YP5!h#baj_T)c(nknh-@qnyl5{g!7n9@xW*GP2aUx(>tK4QzbNLKgq?r zs<@De^kdnD#UTa~5n4wL#qSN@za8&jXYY4%ZZ{Oh-;xZdEgTa?1b#V=S&L&(fC5Yv ziUc1ZMmEy7Ig#h9W09Plxkj#VICZw~4QJAXxr2TkhSNzHNZ)%-iD^PTJB$z;9)Yc4%K;0m6SLvL{9j6|Jq3{6Dj7fnv(c-^?qu?6I`U zpLF2UgV$7V=>)95jTXK(c+L2~Oe|0uMUyD%UX+)#tAhpKe~`e3MnwLXE=vFO20r&t zv(?M+OBz5aN7(e$KPZk%uPJ@T2EHHof2h~IoOIOE?uPS>EquS?zcWL(STuozgXIWl z=euy;wZF;7W;>D3jULuU9>0JlRqGqne?UjslZ+lGpSxD&Gbjd5{(q%zmo(-Q$s_^W zRO?>u|)uhgq>9kdb{U2$Zg;F5vDD zJAR{i6tBB0IT`$L0p5fRX{oB0c;M6gq&!`r^K@@B*N_5aEZTILhlQ^ztJxdRKsk>Z zQjCGP{zXtp$&*2L8fxmZNY%?tg{}FxctEQ6ueR(VUoCRjDq{U;D>FX?1a0>3nndZ$ z2u@;z>-X*GdePHezJqV2d~^BmMeTaqgZOT8{?IgGxAhPRf9R=zAFs_cfx^h`4EC!j z?7&=T@s;l+d1<^jzPcm~Z>)foG+Hz>jC;@TeZ?MY4sfKzwqUtDV1>W=B4Lhb9WArN zA@d%){-c#7OXoR$(RH;x)CLYFxZah$4>!PKSiL{4ENjX`OA7=I9iP`>8*?qc^d0TN z-^KlKHU4I zRET=wgR3>~uGG_2!Ef;wq8LTdTbb|^e@s(zx~SKjt+|5SiJa6dULVh;wa^6FoQ6n* z4*As}^D>3w93Kx!!i$Et*9XkNJl+92UuVm~dHee}{e6yx{R`D;2Yk0x`5o+PpK<~~ z6?L1%Y#WS9xy3rn6Li+;I%*fyda+b#%#gO=ZoV+s5wo(Q)uWQ^Ge)KknmQTzB2gYc z8JYOp@vTg|lLVo!W8cp}UY_3Dtx~7Bv$GoIY96)Lr@r>vg@^vUgG$2Yw$E#_mxC+E z@*>nCfjD*`)<&PVybzb*-G0}{e4+NrZJ$TTHaD-M@7X8pCG9ss^f%i~4%b!3^1>A* z1tqJbqxh6dP#AE>XnfcvXVVD#a?|I`vuS6+vVBZt`a~uQUZ4@ zxYoP70s&XlLX^Ji>#sbx2(}?LZE!k3Gc%$WS)0+UAjk3%6X*i%sdD)=cKw!TlUdwm zc%#8qY~$^Ag(K+s(XZa_Jd1L)C4#cdHXtsu`oblru)e$dHwt$Cs*x(_4Ykv7;;Y1a zZq+0-fKPvJ(!93Ryy36i@Yq+{uRKg4U}w3<95ku*`Lb+zQ;hTR$X4FIsxOrcY`5&JDj=H_5I*cvf87i{%Fx zvnqh)o3)X3D~p14=PJ4b%k$ywir z7^yd6D@rity5rWmStfobV0i;l!$y{~PXt8VSEH-LlGC*Xg&g0ATMPtV)r-g>oDLIu zV?{v&j~Dzo^i)li>3nQi)^aOzIsK-(- zf{==Of7fy={Ro#h>nu%V5gqw~VSs#gaeYbBJPNl;yN5d0d_NbgE)>2K>e zC~Ch~fQ}xUH+y*Fcajb9w3l_qG6S&V3HzW9SZAe`gU;eZ@7)g!{14uVF;q zbdv=Df6~ul|MX!|obW;9H=tXe-rD>rI1pYHHO;805txTZCnp;M0N%&%f66?Y4Fudk z3);k%(6rL?N2*BzkTpQh3lQ@{t@~vURqo4ZkpBlHA2}`lB$O+$ztnmXOZKn!#<&Z0 z#(m;=`MAiPf$$$7%>_aVE+U|$MXv`&0yRk;nS@QFe zb#^r-*saGR#MeDb$ZHJ&sU!ByM|g~6uzNGt9#pw98Dgn+7;g{&`=MF}N8~rpRJDMW z>(dTw1ifC!BJSv=b7XJC{>T)%XC#H9=l>j=%sj2XvA?}iYY1NZ>WZAJns*PuMnBhM zC9h51hceuw&9_W)67N0gv&Gjc(*aU$H5Ng^3AN~W!?3hIVmhKfDs#$aBH=hD+i{mF zFid+TD4Dk8|Izi`@mRm#|A;bDM6`^etdv4_?xu{4tTL0mH`$b;fy|Jdz4u;8itHJY zy;s@W@4RmJt-hb%=kxyK{djbHjq7z?*E!c2&+|MkT}{%bj~K6I^v@@*zF&LVb=^7B zXiol(w}j*1ft;3G!osH8QWw&GO*+JNYyI)Ipa1^Tt~YbFdtK`2BW0KDteqsof~}^{ z%D>Va1{H;QdF5|y8X4EbJQJQu|dg|6WGmRMf}>l?+@%R;}C zI_^!r@t9h`oP%}W-C_9_G^77NV`8=eo?QnE6Bw8r(vjw=DOaZg{9h8?gmY+ubjN| zI}LfHOa|XgXu?;wTg+Ly1c$`F3>}iNGx=S;nO-tq&S8sHq`l5xM%ol>cRqKhlbKa zN_L`5Pw8ZWFr|W{@MVKW$B{7ioSD74Hi1X~?(ZMIt4*hD`=h1OUIhh8&A+DO*VNb8 zXm70;V+vw_8uhjQ7Sm~|9j77h-a~4Mh7){NW4{pd%*dd4@bgFR=bW4YFABwmD4O^) zbml+oCfi%|FbIw9ZjaRR(9W!*ZaivTVj^xcW!;|kx$gA4I6>CMc0gbf^A` zTr=OtF;kONmz|o=Y;?aYay3@z5`@fp9KTp*I}Ul51eHbcWl~%|v$Ij>?-B9gYUU_g z*Pou{3Z<>NfJsHCE0f6|sA$XOiF#N*J4bSkD<4qmv?S1VGDzJ1UiL;<>FTx^=a(F@ z!^2CQ4v~XB9ZW*WCAMEm#N*WhtsMKOm9K|xQ(Lag-%DkMjZcaD7Bm*zB^dg1s~0Ij)Ds|9V6-DHOl zon2U-&2SShlaqt?@@A)7k$$4fu9np& z;l<;3(7WVX%2?uhZ-!z`+_v9acemjSD=bdd^PgyxBU}b6Dk3bDRD9l8(At$Rb?``@ zxNF}T=TxSi8^GSjnY0Ez$Ml0?;qEf~PZa&CAYEC1o}aJrnN!Y4(AVMpMMs)|lXtLUPrn9X?@mApXv8@5`uCM88fjrVj#~j(#Sgu40dY5RfTBp31I;j_r5|Z8U zPJ9}tl+=-xOxhI2H|5v#!H4|o_SW+BYlZto)u*Pi(!?{&33gi!iL_oWZ$8{5)kgUx z8E4p{xN@o^g^iV!pO?5y%sP|c5}byIhy_DGjw_g(3mwZ)YIB$y+KL`$)Os7CMR`Pg z#`l`7!*1&E&wj@y&)u8-G9N4-=*$%^=(c&+OBp#k$Ua|n2!1Oon?qg3QLq}C(kPck z%VJAIyExt9f3W83(ZWGD7A9)PIFa6NihLhcj&#$e#SQP|Z=xYKYXVYE(*s9a?W@B> z{`@F9dflvSd1hv!hJaz{ScdaO>#?^fMK-)PYk96Ye=QxW|5D@k;U&`-2M?vyy3Yl_7PmeY=ork2-5(F^ zh!C(ED$G+C&Jj_0GUnuDnLfGN668V6Znxw6lQT_Wc;UN&RK?7uur0U1?>}$em|W}U z9;G?_6}0Xh0!V7dd`nJF&Yk@R`9*S}^gETlcw++Zxb!tMJYMVSkTwg7Ia+kakb213 zB(720Qkq@@--ILbqp_)xim%Xs-^`b$Njc5oXwo-1hZw6rus<#LsMWf6>YcT6R<|qb z^#Wegr`hXM$09lC9kNoo5fhC2I`^hV2TLQ(wXKBoy3}IPmey2i;2&qy&Cu)Cb!-j3W00C9!<{=PU;n3;!GukLfgen>6_i(s?(XIB z!?`+{_4K3+`t?tI3{Snu@mKxae%{N2wo%e+w<`EcM)09@pX1%NLLWW|EoBN_*5;`J z)26r_B`GNhTvs=4+<5XNCML~rez@qVYCU3zRHwRLja^{rJgiWE#MkYtD~cHplFkpf zg(8%pe#*BgrmC(^Or9{;kAuK3TF?EB>kc5Do%<5k8E`0R|l)Mxd4uZ3dCxy~TC=hU7pRgM#)F z`Y0%}yBGXqHbBZ=XV zMdN7(RNM$}OIA_h%7vogHb`b2upzJ0Hf!~eComC`G2nTFPifK1&hQv(Fajn=HuuZq z(Y-$--$?={Bh{HR7(fXQUOCvchm&_2W;bt6t*8fnSv_;vF|Is|SD@SJhJ(G8y3xE0CwFL zfr?cA#_*Q!A{jz_Uqf5()t0!38$Z{$e=sD6jP$F``-YR@Pa18w!VSDL?2`8kA)UCw zfKqkiB%xn1ja?SB+zMl{dVZ6fpP$-p`rAI_J~ZA}QKTSra%!k3&hB|bic<+k{p7oV z(%p^AoG$}f#MRUL9);FL=xS2j!vy*^`o>HERRosSv_aU z>ZtYg%4aRE3M#q&Vw%qKmz?}RoUTmSC>AQ|`xJcvFhJORVFYS=kFCs`;;Tgto$obsO1^|*#4?t z(0O0rxBf6<2^AUaaE7?zcn$c>|o=xQ43hZxpQP`~uC@{HfZ!^#I zKSDbbzNU|6yA&Mxhipy5dh>p_KYD+ZT|&ibU|98Nq+OHG&T1Y7zz_sE26gF_RO!~f z$9^stzrLgNovtJ=tzMEH8w)sY>hwqV!|7=@QXMZZIHyn}k%sK6mMbjALk z;F3|>&hObj%T_6WQi#>NJ5^*AOB{@j4sR+e)|W1undFVQECzl)E|A(N|J32v%Agd@ z#?nai=7Y%f$@b$JXE-HVr->adr8+m2itzL=kIea`)j40gG50+y?Wk1QMpIIS06@sx z`T-l?S8Bml#{Eq6!lB5fB?_E7i0bH~gost>>iIJ==cT@tI7>e>?~MDHA(p|X)E_pV z_~%wr`ueTz4W7n&=ikkivIp@uSQGmS$6R(zw}0j2&^eD5u^c$iarJF9&zPzJN3?EL z97D!^VT;_I+n=Lpj$eKoe$Cj*Vk@auGhX7mz1{uMiuRQ8P)E&`AMLWkn`)tf*OzMM zeI&eu%jV-gw>6ylBdSS7^MEzTKAGIbq$cya&ZF->Bd04|wksJKqUYaxM9Nz(-D>g; z|FLMGKkNBw_}~S`!;wWA8C51f^7Ox?r!1P3_a3jmFQ91j!|=l6OOdfV>N`FoLD$`e zO;73XihD49U@$)UetN<^lGd=ER(1S&bo4^3D%hLmmf^{?Ub2>vd4F)r^o zK26OumE<*jHgwf&_>jtOrMij0e8|so=RYC#_S(Yji|Hf$k~25!YRqHdV^hr&yw0ua zun|&5A@n-WVd&cj2gBA))gL7ZM^Zaj_2YRrt3KVAy^&tErluRwM)}J6MT9!R+X|L; zHQkk!;u`Cu>jZN$OwZF^8S7f9x861%X_)1ntBNSQJfk}rHD6Y=J-hUYdgVxG$+U`p z+L69lJ@x5V8y`j9idfd`CKP9|*k33y1aHZzitwU-#3+&#nXtzLw!Y!7K2ilit*x!n zcuT7XxC5pWhXGOQj;k4e(K#J#a@8iOE5zeMJE8q96z{bsmyrW(+E=cx58Ny3M$MBPN+=;oYj3zHq^$p> zVTH#hcyq<$(UbX;cfVbD=_|N-nJ##>ZHI7>?hx1Vr*US&W&%7ycjhP~79O60;$nV4 zXJ5HuzB1DtJpzUCXBTRu^InGgsBm6vavV3kS+_oZ;_kfVvA)GC4WEsEY=7fs;StWx zX}rffzh!BEYI2;>-X-gdQ^l|F_gw0UW&b0Z$a>UR$oXl%uvd9Vm&$vgv)bbsv`_hS zQ&jToS9UEV7sj}o<^(%`>vT6fmmN#pP2>w6&YPyQ8)$J`|G2q+GBX9&Qrh_KZrkVi zf~OZJ%!^9CE)573^P8^Mexz}EE7T@39=ZDP52t`nI5-j^Ltpbl6-$VbXk}@%&F2G0 zQ%hJ~M!pC+EblIi)*f#XEXhe9eB9l@@_8)PXl26uls#)_@$}HRI_}qo|$j{Q;Erm<{`IGA;(4E-sj`jgUoeQdP7e7 zgl`TU=qh-c(pGefNiwN?eaKu~eZ4Zh|H%iAi!P&m&kIHqmOQ6@vzJCl$RjcFk=)Lh%| zWPR^q#EztxPum0M%=w=2`R{c0K`Gf?Osi2gq=)%-EIFCHdz>w6aGHeeM=L}!8dGoC z`pjww8tUz|9%^E%y(f77&sP`W%hShF?v(tVtPg0jkL`8--J_mXPZ#vKnn{&=Ht7-5 zn08n)pKDeYRTUXTRxy$I$c zcv|-6aXl9exmyJLZjIk~v_plyh|fqi_4K0;>nfu~U%C%a2r__qmAP|7w$*j!&gpu7 zFE6yeu#l=+MS z<*f94v0?uls_sE!2ou*mnZ93_@Zoqv&bTgh$!>6fh(JR_WT@a)!WWNr(_u`Yn1fQH z?dj3uP4%bVJzkP%RBO@8*HPNN#ink7{(*lkjrWpF=zcoSSU^=2f+l( zP=9M^kWY>^31l_yEzE*2W;jzfpT8vg!%WmqRLb&`QxjSRth$*POPlNs9t1M$Ue|cj zl<2ozh!aCXtfNskp7-+kL!S4T@qx5`^eN!L-SFIJ7^2)owFw9afE%I5JYy~_2_V?q z+}6KJ?dD|51rS?501GC6i*Qn))}`;>ec8%DniLar)1xO#F;04UdATmA?)&#yVwYRUW($~ z_fW{C{bE09X>030(FYyZ6DjOcp0C8cE~lUnKY2b*wntI)9mJ6dk0cZ);CzH22xL5g zHS5aQ=9eWQ)oZW`h$i#7NN#5Ry#mzNK8s}3FBLxhm>q_0k3fFLYvOJh*)Nk2c<4jF<9bKifMK=998j^bl{u0G%_ySgrOCFg zbXC|5@#~A@Y*H3S#q1u~*yOY7$pcGaILgKAm3!@M%@K@mS{>?|eJ<|4b6eC+Lm2|E zN5|#ZlSU))6pI|rBgpn)UR*r%tfT0~ko?B8c);(XQx<0FC`O746O6E>Pm2=h_>1aV)mjt*UU4 z{0H(PU5J?SZSIgmY7hOK+czr3f@7MGs_sA48+fZNX3`iSeFWEE#yvvr84M0;wVwV7 zjDz~*4!lKSj&T@ONrYF86y)&Af$JR2OZJlh$Z#jPmmJ?9?> zPm+qzWrk5=kSFdAW&%8~fTMh(B>FH?abWfg=gPSOE^u-a`mPM!LG~#)FNrYtJKOuX5DK8Z&sl?{&%*N|_j7wCGH}m3d@-m(J8&7m9RP<-B7C8_wXMV zyFDwlV=h9n!|xnKwYP^*QEbE$qAEIVG1~)YA>Oh&co8!%Cti}15DKq-I_mr*SFhs! zt#cX%6x4y3)dFPF8!GnV9Q_vO4=-<2wO_cziX^yHtP0_rm)%2eIL!ootysN_kGQUA*`go76kgG#DA zgcpH_sZSa>4>E@#~;aR_64Hr`wzhdVZf`Dp23!Kq3HP$fiaJ##>}!=Ch9iD zg+nD|{Fnu#A3#!*=+YRNKUZ~JVsegq!E5Kxx&!&&-*o2y4(?54*PKJj8Z;h|-X0mWfwLq+stS50Edur5f^U$S_0c7SnGqNnS>d>DVVp;|aZfb(WaBG}CzUWXSKlcy33z z*jDEfJLBJ~Lq~$MaoAV@6wir8rKev4Qy)+~+}wGwv5ZViBFeKVw@3MZPU(pTE1i$Q zL!OTML7+$GHbKNp_dr4J(W4MwUl}#EbZ@AeN=jRikFf}srwPP=^nb({PLgqxj*bq^ zuihQ04`8b~2=*wxsi9jHm)?9AxS|kGpMb*pq6H)&R; zHg{>D_s{sq2=m&g8+CZzv>sElSQX{HmspA}PXgTYw+y?|m)FM4f0gj3@PG1vzxR6N zz*oA;;(G!o86NTBQ(VlPzhiQ6GmQ8_`7nOc#mE4nSBYeCPP`^3EWsf~f9qdbxV;TZ zuLNS#&^m)54uew$cJzKZDa3p|1&$%=OF9mar|4Ut*6Ub&aB=wIgGe?E2@OLQ|Ja4` zKF)J{=Q55PGjhtD44d0W1rX*!9L8Ys6LvA^2N(vvx!3AaQtls`=B3+TQoPElf%4t;tagF(L6yBbGX4uT!I%<<40nJ%?$-Zg-R(~rdyXAp2kW0@8sRt4gUAev+$pPUQxEw^Ri#i2ct6K@a=iF{8bgmr5@ z+_6&U?NkJYH#dq zARJr~lH0r*7P+LK_D|X%c*K`V_!fAH8$Djw)CzoV-;OvA4(7Fb_d!Is&o=%eB8f1| zx9#-LV1(=mvJO;pF%&iXBJvPs`4f*%Gj^8w@$N%Kq5Vhf@r`(fu)L-E?tAE8uoCdk zAqVA2MJ22;djb)e=nu8hd&VxZ$e=_lhEy4JuuB0flCp9|;ms#8`oPt-06wRH5HgZz z{V?F@#^D2ltB>OHz}i&+ETwc<4IoEk20c+{5R)eH=N+tz+k6s+79K4bxi6adz3__( zvCY1S?83iyRKujj_C@48tPS&xHd3sJP?+64N#xHtMvPvtk(u9HAdbVw zE|e2vAL^z6J5LFBhzn0u-IWkMap%}!toj-~SOeuNvabfIS|MP!Co>56w0qTOVsDx~ zgHQ!?9_~rX{muum27ff@nHPKI(HPPDzZ(r8B8Voc3)ecczia-FO#{<*8_D~%g*sto z9aV|cgws*J-W$1DHcpm@I!y9bd@h!y;0lsE)Z_^m#Hu0uFa+D4D{!|Ivod7XFky-Q zZP9zkGvrZHAVpH7E0`^VgDZ@8tF~bDh!40{Dc}rzCp08wZ zSlX>6%uxSLrn;ica2suGVeE4|$1B$`V~v7ZM>Mz^yR!eEQ{YJiR|FS&NuI#RY}El3 z_}uYd0_U(`J7%Inig@N_5e%Iv%-k^Yakk$H(QYNZCr$#HrzawL5B0I13rq;^EJ1S@ zG;d(_Dz7xGl^c)OJIv7Ni($@MmThjD?mL=l@QWJ#8SK8iNa${R7#z*zSZ=IX-GITK zC`~#{1OmS2XoBjwz|_b71S^}8pqr*BZTRnC-%H=j2;2hyziq-qNx^{Gt(dIj5;lRo zLvTh$tZKyb=k0fxnQjh&p@k<&^~1k0X? zGR=~4!WCC6*-m<5H%%on(8f|zq@oNxb{WI~a%=cUzr%J%lcgep+DJve@wa4SZ!dSk zJD$vXU!}!rbJx$va@%|+++%qF-F+E^$jQ7JKx5`c|2kj)QDR|M zh^nTz;IT=D#W>PGe#i0W4tyz025K6wePRqA(YHn7I*6U*Y4{=Svd z6i48v$bDp|;fgGCx^NC+OlYDq3x4q~v&P4I0WHV$B!go*7`FHBfZL8B=z<@l3@Yfo zFn||!hyH(?vwL>Q|1xKLiTcQ~JM}-z+3J_5haxwsC>116K{gEis)vX<`=z7~>eDd> z&;K@O_pN~cZq9~DOYWZ{|6$JJA2YkjN90d2cMP)uTu}+gDZ(lo{`VC5@AfR#*ZlAH zEGv(%Bv#$k!YoUcJ5=w@GK!0!*jybJZ*7dzYENd!2*Cni;bJn_KQYNX{{z(f1OXh_ z%$;X2$L>|$2cU<13%sJRdMFfL!=A@?b8iB1@f~5eJKkg7)9jU#c-3?!pmogNw9@WL z6aec%*VXquI0zB3y`#wtu~l;Bs9UgGnF%zvH6Fhz|6UXUmPQZ6-5~$*QH*6m_M2_s zhkNb39yUq@PCq?J)jni}{x)thAIQxAFlMpZ?Y|qdme`N|FUBnW0+D~)3r{-CK!AvW zNVZ`27|x#XQ{qlpnZoDJIqjar1{&Rwf#DsK2Rk1VG`uYdvucr_i#Cy9w_iC2S1|Cj z5`D&UWQVbWnrRmh>BR~WH?EI6i-A+?Ur&q~G`C3KrDtf(t+(s>V+k7zkar~}yp4D_ zc!^xEFnTNtPD@JVRsWX#V8t1v5T{W2?!Mz~4CB^&BM>c&5mOvDDr9MSdH0qQ2k2=C z$9eAsS0#xmV~6DrS6s1EK8cVHp?78_ANu*Ly$`bhOPNjc z1GCmRc(|Z1@LG8Xu?MItiVL<-Otb_Y_AL)9adkn3n)wrAV!8PIieL^{Zcif49Qq(@ zo`t6rZ@&jxj6EgNjMUg0-V77LPC7lA41A#HLMtzJA0i%;)!exX(1mbyorlniv0Ty@17G5=iFQRdYD6vgK>NqG4&LJcR*77Eg|-;1OI37 z;k0Z7H)QIt^~OI(%D+)F*aU0TW+qi5E`kC3^R59Qa$*6Nz4!t>SuqZGIC2cV-Mk%u zox@i!kZ@0_F3jS>S04sCkPNJ&x=#nvw@l!P$yD4!&TXY&thHD92TulO)wCK1qn4sR zzy;QemvLUAEm^V{oQ~o=n6rZN?Zen;+)Xe-i0{1O|NB~qXI4>OQ96ZE8gI|T5#Llux z*iiEc#8=BYU1#>!GeHib9vTKU>|^&BN5Y%WVl}sG0z5Y1AeOC)OaM>g3=xs+i7Wd1 zQEos)p9ypH_%u`4 zU+^5VeJS5f;$gn;8IjetC8LDuE-m?4%x1JgDo2?5af%UB6#ZhW|7qdwi|2oaz0npf zbKhNr4GTR9<48PX^%prNUDHA}k-zQBVf|CNsS@*^7)x+WsZ@*wvBK-gg^x2_bTsN^xJVA^v9vt!J_pv_Tmp!MKG1~{p%Lo(sx5jp< zyOfoe?1SriA%wTzo+Sh>)IJ^#G+HXnJ68SM@2lx(VEbTSh!_ z$rv$U?id(#Ra|!+ZC)pPjtcs zeH$yBXsg<-nIN${oZ#7ciFucH4k(YJ6;3AFOop}zwl=ym7#%S{k9^!p#!=JWZF9zh zAK|ZzO7Td!dkx-UM3Z_3pfcS>_3y_Pb06m3si}~l2se&fIo}9rL|WrRx0}YnZXky6-2G~CXPJLponvpEORn30 zE=B~$?HY+0V)T>gxXu17(ACmfn(r6Be%(m_Rp^7~1`1xbxh*0WoXofD^axfud3f*BBq^HRr5SJLe;~b86+7@P z1Ow>>TR>Hu-m%4|K%A@^x`9Vf#S;ZK@DNJ4AtV7J_&-{?wtQ>~{tq3^?svbl_}$|%&YG<&%BzPq@e5RfBC)2pQFrqV6E-v zb-4m~mUsT&u;6L@7)9&d9c%7M;Y;82HGMSh1z%q))TnQL{(Wb`t+@R6qR?Xcy>^5R z2XkI8<8QnLKJqJ0J!cd}DB`_JglTh@nm6gVje3`}Ryu_JG1Kux!gY|oxq*N`l!HaN zXJsYf+R){$@&uX-|4d>QV{;2cHmV}DS}BTocATnm!XU`uS&Acse%Wnl`YqOGf;2NqNlJQEjnkfb3VLn0vm4jE#QC^)`o67%=4ZetxH{9VDMk3= zya{(4a74mo#3U?U7!wSoON?|5Mw%i+XJ){KL>_62iEobzl^>Rr4CY@fZ^ll&6+4JB zR1o$Pqp2oqM5`F_F==alDc6W_u(?OvOZE}&%?JfWc%9VvUy}lIi2r}dMD%R2Ryzh48yu_g+ zXM(v6JKvqX1zl6#8L~r{%I>v4!{XxNnzCik=@97{Xz*Qo#Yoy-sl_r>08y zYU}C(9P#bjx4=8loukX<^dw*ODpu6U4&cp71P8FQu!%`Xgz=dEf|kw1BqSuMae($1 zuJIE4u;l6;#&WRydX*4<&z_os`i)uiKxd4SVq>)c6QVXODK0MC!(}t`@IE)xG}?ua z?%8wjv1VbY@9r$Qzh}Abaf(5K1F_YMu`s}tKxWzr()%cDEW;fV*~qk=&$%NjQvC(# zu52)FEEx=g?o3lo(E1jk915Hfv}JZ_tP)~k5AMb>Fa4HO#w=P46H1B@pW;W!cu3y? zorX=BO#WZvJz*S^H$L=ytE+3hwr0?kl$v^2%?nAP?QK{}f(J017zlH8e@9>ipO32gkH5ROT)QHjOzrhe!@23(3))8dMY zl`JJA3<1+Km6+WL8~5z3mwFy(WCvpFnFXOXDK0pK0eAyiCUqM5cb)^qIX9BFv5Bf6mK*$L~!`BTQ6V69m1ZHo%rV>IQ}rE z=P6erwg}oqL#bcIE$<4H}qmXBkN3 z#l}Jj-DSYTcpJUFWhfa{4!=Aik za`an7{@Lf_#Gr*xN@}VKR7j>i%6WFM63L7q1gP}Dmg3;X!6admFQ=*+9v)t1Guu;L zU7eks4JC^v^M}!|MJDngagt5Apr3?EM~K!QsQj*nIR>ZqQqKt3@f7 zVn|*?Jh(LbytTTL5|F7_%>IC0Pk+sk#^ZqKqa2Mw`m{w?Q$)Den&xvktQg(N)T;FZ zki$P>8_pI5eV|*R^N)QfayhFJcQOYcgmU5l|Dy0b3JrYNi#F+!Fkg9KAIm6O>$gCG z?nrFSy7mK%314=C)ln>J$co$zx?r#hJ@AW_ODaG=Qm&Cw@Ed4xE%8t0e1HLg8gXGn zS!cRh#J0D~ofqxNGSnCGs0-OxnKgWm-($n9QPWqA-=Okh1}x z=}<-=d&Mv!DKXKr=)4S8gP|mdpPrXE>m_3;ek=7(Qy&z`O~am-uX+ zp?5J5K-RoK1rvaFmREX1^THy2YisM-vuD7Y3iF^XZd2qS0E?e`amOI;=W`m&d(2`{ zA1LAhP6lQ9s}GmuBsYPx{+zPk0hkbXR+JE2Rw;uA=LJ_W)OdGrv4^TXs0B5cH=JkR zzzzU5(vw$j2kslVxVl6zYJ;zYf$Y%oZHin?Abr$Nk~~Tl`#O@_3>xQ@EiCtOS1pu; zit6N2!QX*dq=xvXJ6kV@z%XNjD_TnYm#|2~ z{|Jfji$poBKn17Jyucp*6%^w&2(;$mzDb5hU;+UDGbDnJA0Tg%{Ev``-uucLuhYA0 zUxktGCW{6%=?}AppfS(t#ic$bKr3Bg#wx!b6w)SEK(gH0`e63Q$2RXH!rM!2&}F#$ zyj%Xi;Not)+wukZr|3JZ({*pqCO?ffsXw*j;) zq7RZ|<)Phev?Ku?Cy}ff9h&~xmm&&ynLP7dk1@oFi1`JuLNE6t@;?mDXn<{!8rPwg zgq}U*e^#$uk;b`6oiRW}eC)2ru?yNFp^c$nvw@k`mNt6Tuw@RcH&CN!tRz|cji@)o zWK@VEMO`Fj7A^jTXtgysYFXr2Sy@j(OS+lvobPpYN6zrR1LGk)T&Pbe*FPvI-=wd& zw^t=j_Uy}>*yJ24$`BDmIE7mSS{FvY`}_F?(5I=E*!;{l2EOPQFJ2G;AJxKwMWB|J z7IXOP-f#P82r|!SAY2z3*hk05=>(se0iv_+bpSo-DXwp(QK6P~b#)64uW#;4MrPYG zT6pE;ess5PtuJzargU@I=%K*&7o`a796+zC@l?x=LMxV(I z@5g&_+~zJdj{&awp}zhkh%3^nFCrrSs|^r4+p{V@cyMgw7`D41IJfFi4Meg^N}+f2 zpud)}lVUgx(2FfFZZ-_m1t~chjsGM(Pni42m1Ivhd7^bjSlAgMZRIk1YZ)0|#mD?{ zhilcIm!9mMX8r4^T|&knI{YYGOBB#@FnN}imQd*}*E%Iefcb2Mx*Uw&rDo%{`1{Z_ z1I7m$7aaAvFsh3WqxhK8WYfMln-*HCdSc)Y>bPRXX()$d7c^k{k5f^Z^cI@K%-Y{f zs24pt3Eiix!}Hpqo9?N7mA+?-&-elhcSEFbMQLeijS|vi@8+Wt?$8(6(`Z*Ih8d-Z zY?#~l`~e(xcLG8}k|^s^nw=iX%X4deBU?QyfRSeeC{_jKzbA9Duo;FO)1P zutLlzD^1*&-l(SpV2gpuZP>B3T)9@-(gqxI7==QBXgiq`2LK}NdVqis0pFPULA29< zjw%bQ+!Byf4RHwt|9NaxuO7fV4EzQ-F^>VBv*5e8tNtCx4+Kft=kWa-vdn08<_(6E zMYZv{dzjUlkO1qfu|2^Qn^nZYJ4i&Kj*l5xvnoC-8(RXHGjmyQ>4cp-lI5Xn>l`yH zE7EMq#u1p&)hQAJ$q2(~*thhb+bOd}nk>z)(85)^DB#$IIBDktXa8m6 zul9D0$YW7{a5eTY3me;a!^doj=_;@@ot(<*K&W$+b<)B`MJU-4O~1~ z+FDwAKj#A7llrWTE8ekT>;w8KyriV0DR7BeB{!jG#7dDlCO+3EU#UNw-(L(iVV`g1 z&oGWS9`>m`eV(!oCwXk-3h@aa@6xz|#WJAU)zLu^^1{Fpx}tOLQS)0BAWY-+1Hi&6bY~ZbrhWUV+|kP z2L~6L4c@HalZCZ3F)@LeUPwj_<{?huXFKi$meg~=)7QmPv0OG~=858=cwC6y7c$42 z8D&L9Uxjn(Ul8>f=NgR7i-~yx{Rb#6NF)Nke`8~Wu#0n4CRjS_#`pRz7EoEw6yW_W z=3pXb)@8kXx$8{pr{{-sf!v7Ye4711MW{HrEhZ}s8v8~SiB#3n)?(97CuZ#&+px0p zScsb^pBu0xHE@E0SD0*pN(-byWA^oNHgMmsL3ihY&&J@0mgy$dq{!UA$fDhroOB^0 z!NPgkLA4PZ-gj4brP?OaOBS7!fgS|3mHLLer}E3`ryZhDlNQ~_LpE46%$*ysD(|r z;t`w0d?$fnwD$Vx1PXd2-8$~aVHdhz3gJzqr&|>OhmeM$VaAOW>(_`wYgUZ&2b#X} zP{ZHak3cV5#MjLozIh3o)qs>Dy%@Mb7**Ry!(R3^9fx7hW2JwFOxMirX-Q>*xU{l^ z{puw)?A?BzSZ4*=Yrx-o_$9k~k6DTvzxas7PgtEqRA@cBb%?`#di0*7p^9>wLt=XR zaIUXt3OM{!4L^yEYJvYW1UV{WBn5ef8TAeBKrtd#UbNVUJxxYWCJR>H6>EWTjuV(X zEqxDCxwR76vr^K~(2$m#OiW9$Z~eesuES{Jtt%3tT>AFk@4Qd~DN}9;aXfZG^(!_@ zOIRI*($N_MV}L~I(y5rb9JJr?d>jfzv-hw;o_x3m-BI80U{~8T=9&#wp{PMO`9<$z z1=atv)Zq{Obj~~Mv#bgdf!Cb|3 zctAjGBLxLT9%(tIphWdXl!@(^Z95k8F+V@s-JqVA@17a(<}dHG6pw{I>n<98Zz9y` zC}aFcts+iYii;Y*$1t(4SZ8}qv*uM#wxf$8KI^K{{EyB!9ZKSArOna6vROO+0q073 zpDq(8lkK@;SL&Bft5UWpl;5v>zno$n9V}v}op<)yX!4l(2Vj4aJu`6KZh5*m2w2&m zJ&k~T_U?_a;@t6&gQTZow+Gnv7QJ~AZ?ELI#rM@^$NEZhO>8Wn`Nz|2=j~wQuH&h{ zwnYgwoN^66M@l&rZj4yo5f`h|J#wFL@Yp;nsmHY~MWFinsB5wE8sUdpx=uIr=Oj;H zdB=nju*yc#4Qb;h(+KAdx((6L;q(4{^d+Jo>CZ@XWMsh(lfT0JVfMV))Zj^Kw>dWG z(DDokD&@0SJzHx|c>uU~{u@ym{g!O%CFVP`-3Pc#&qQ+k{%M| zTi3E7EIWLKQMzuTg`qy?lbz4ZQ{cFqZ?xZ8|G;_hqSMeTLCcp(lYRj$wgKhZ-m!x} z=Cb)dHiV??FV(i~R3aI%ZjXRJ5ZYWh?Bke`Ap;P4HvqTIa$>)0BG1LT8L{ zmrCgF?ZLdzo^FA~*Ru6*e9BhVR6Ea`ZkY^qm&mndZr1AiECuhb0@KBg(-Z5tZ0bOT z6M4GoC8fz(pV)=P*f>#bxGs;_yXyU=I5u2zZ3hzj2tcMT-%&ZFY%;{m`XXC^c+ZNP~>3x&NNqO z*iAAYN?rcDJ27zcROE;C4%zG6>D$&$!wwm}I~jLI9VBx(7kq32-I^FHb?pM=CzZ5Ug?G_=Bzd_*w=JjJ(gncgWDf!Io$cRtE^9Y)n}Ym ze0wgC`j3*)r_37=qlBCRcV{+KxXwDPC@Sif6Wa$pom;#=h4A{RN=1!RZ+icbf3)o^ ztM%2eU`M~9Q)u_P<4PXid#103jr#S~sXpGF(}!|=ooBy^1F>nW%F`RN#y(9V{k_hw zt!tB#-uu+HzH*T_cH9YZD39o5n9I!#Q||~UFBUP5Rp;Jl&3WrSQcnHwQBbm7`hQZ9 z+12#$=spji{PM-FOs00&SH;{W`_G?E=Vuih)2+Fv43V80>mhZ4e8Jr+7Z;(?+(KIF zQNabr$rPYLVQ^ZDbCN1}R`k24<@vFX3O_huLMXz{|as)?z+|wEBEL?WIdo5%B?6cHUaH7C7`?_!zyj{dscx(oC9M zjy9tLG=*r)G<8Yvpq{XRfWlH4Wpz2MR z9JF^^NE3zH39HwYMIjUwOFy1%*3}pAO%t{3{<<>Q5P<*Yy zO||7E7AcU@@X5hC_H)Fz+SRS8lsShxmclmgIiHt)N$&Ut4If^pH?BV(=2UJFaUea! z6R6;5_3M%D3E&S*4|!Btmi1>?l|=Z`#qHG>AFpPxrluCy8yWRBZ#8B@BT9*~)X8fn zfpGE7+)myV+bwNeQ*p=E-_s_-&Zdn%D-98gX}Et*A=PlVrIF%1164lRck;*O8nzSD zlamd;y*taA+hykb;nKrQdLbbvq^aI#lW-{DuzEPq-ad2ZvIHk>;aYuRA?+*8&ZC#g zFT3dNrs!N;@BH*r)_w^~FYtSnF-5y8VfFMX#kAiWi#N6(5{3@-{;u>A(K(Vm=03A} zEaXcB-JkJg8hKxTKSlfIi?hD(uGss@@LtRk>FJ%_&ha*NSrp1CY@k#BO|)ZatUuho zxS=NJ%W1#hogv6E`%R)@TMy^sxDt_el+MjpDl*%S-|`(BX!n>_Wz~aSn?kI9utbFq_w2w!s82jIeM5!qw0w?7qQu=C87K%}iO&C29&XLQWDS;h=yynK z2|oQDwIMAPtu79@0z%ezT=Wht2OSiKrT^5Y;u5_?SI1k9-HL;%e%j!H^`qUu71l5r z1AMLD(_H*)oNcn!Ge$x$@#RLZ{UOyMxF4x?`Ip(f`&`$Qyb3SLUA+H3R!2B>@k>9A z&Nf?-ERX;^T0VMwcgTCF;Y+uZU)n-M@wtJiBOii2d z*s-_^M}bn4v2#Eti1bbNA;y#G;&L5*QPUQY-pQYDBjm9?55(WSxR`6DZ&dRW7p7h8)g@^s5b7B))w6K4knDe%n0yrC3p}T{W+x z5;77N^@`GMjy`JU4&U3WCo?`lbUHbaV|SQ8FD0zj*}olX>wslkqH!dy9&s<4AD}EB zJDld(dLprq#Qq)7ooL*jeINm?Z2EzK8m8ITlXN90(3Wq7ioc)GeVR%Xlbu zT>jL%>|^_St}=R11pPsYjT((m1;Bwh<%szkG9a~ierSL*TZOQT}Tr-eyXkbUk6E?x~=`rXSk%hTG5-2IJpkUu9 zIC&8U{{wFi7Zi3L2}g+{Ug1}7niMT&sLCuacLrhvu%1^kXD8#JC8D-CzeBh7`=oNG z*Vwnw4@e_vM*D*a(eZI{EOZa@10ZB*x1bfsdODI@Kc>yI;Sb_~W1jUR6rM(_CP0F4vo3Mw7D7~vgqR^nj6@E*UAQZ0lf#+V zA7zi^b*afF$A&NpB`B9W7BxzSa)~OZg=$$;d=~ZCdshPpS=Km5_a#COXHh0j6lk`wm z)3%LT_fOh8=$f>6*9a&1YwTm@dUTL$xJmL{36c+1Zb@+-*A2PeuXY|$W?EDDdqc_ii-B&xQ#*QHFNGsF%$94%;}7fE3xSjIU@M13y+XG{(!)6JEI7O6 zs5^IFY$xO|uYFguPOOr?+qr~CA*PD%)0sxh<+%2#r72a(y5##ly|Y=m zWPPXflR1C==FS8{My$u1Ut-iaL3#h^`iB6qvcVQ%%6MgVJEPE3EqA)=S$?kXbRO>y zU*1~e(LF5f(9mJ;xbyN5E6Jg2)R}<%>r;CS`WqrRhmO+LLnOrnIz>X$f@FDGbV<#? zVceJ*BR7Pjo%zkH=|6!4ObLQ!pIz59MSckz_Bwf7H%@h#>S1S#{AF!5pHtz?zg&Kc zsh_#_^y9lf|BL-PUH@QnxP2sA^W}v|6S}8H{Z1O)Mk&7j%N<1?rrUOphGLnBGs=>d z($I{z$<&d8R$I*hwD&z65$GM4m)7nf6M*@#U%Yq`dR|U&T)83xZ8ZvyVLWM+C*GWh zg~zpvjkNE`OqZrQKJMIW7%qrq)M>OIEYv8?(HuV1HKr1A#>K#*W`Lx9sv`N?_1$_Q zb*X7`TP3B&3+vrlyJ2?SPtIaNN_Xb9bXCr_rIw0NkX;WkXi`aQ}%2#RV7KIFM)*5S-AK z0mOt&D4TmK?aMF4Xvw6T+S+ldLkQ~$x((z+6w2{t&4lRP!OUt}eanK?CjRp6`@`Au zO8X>jrm zRk-F5x+}Y`gfT^F-Maz7a{ZJf2)n4nN$)jiPnen#{6!tr8U!A#_)%}jLDS$t=Y!so za{@(Qw50a9M!D>)_Q^&!^S;j8+yDN&?6v3Mv^I&p^^rR9uIxv0+mE&0p&2(KHPua1 zn`+}PKRb-t&J*3z4WibKoVQNW0GB-J9vbL}z-bBZ$=$$l;~-?zdpWtFn=bxVfPJ=e z;}J>C@|))GQYUW45kV%2#SNerUgJ=c-jl9UlwEDl1|r>l#CeGNGsckFV1u+&_>hd>%l0xse|v~_ zBO%Wt@`>c>&{Z|fbfZ%~wM*OP01ghpd(qoBDjRJVB0 z#oBM*AOPAaC;Kk!)ye<2Wix(dB^ZEp_%hYF9f)@L>;s&<)yj;zwk~${VPF$ZbPMQE zkjm^L_>Kmh2{*Uwxc?M5h;k(hc&3QR;dmh)-o|yh4ke&8H(l_hv97p;bBHWw~iHNyL!R9z3 zfYYX3Pj{cb0WuRjwZI3OS~%dV1m0E#90_~@+@H7X+}Gvhu&D*$$pyfv)^G7l46sTd z8#u(amecZ~4Q!3Kg9~sKoYE=S)h!AFs~p1DUH{jza?6%0#R;L;9z{M1J@{D!vRW7D z!G>ngdK+M4Apvw0(Jg1&f(H)kwq_jHyQq1dt4tBN(HG=8Zs1z+yWtDwas~tI!mO-S z+qT6-MMX_RR|jgj0B8MuW&nqIwg5Y>xp$NGwupUS=vNt9Fh2=6k*%caup1mZ69s{z zn<6t4GT@Da7hOQF1n$)?ft`Wihq}|&DtLkPH{U~7c=N5CVGFOf0r!z@J==W?`xG|~d#i(GGjmdWp}KGgxA6P~LQ0Bm*L+|nWkJZb(#*cI6FMRx9xkdPi3%c4Uq zoY(&QCFPX>Yoj*c)!^}+u-(rcs*RDG(;zdK2G-WqyTGe0uB;4mN50LpU=>5*ZKhdn zz-b?EAD@`rWx0uoiH#7YnxPxA*=~VP*@cfrx&Q~BSfzj`Q=J6PENpoUtOcE9fk*8M zXFyM%0gj-tGVTIa?;YGBp`kA?&Xzl%Y5VD|59r<-VBXx9epeNFXRrbr>lB{M5a6uK zEx)-|S8FzxUvB3M&6vMx_3F!Y3xMZJflmI9V9J4{WCNb}EiY$fulxC+nSYVy=Xbl` zuezM^%_ANhNx;T+Ez6`ylT2;^M=3LQ1J8mH>UTvH9eiLhrgw0axf(e*jy@xBf57Uuq;6D=H6a z!aopTJOoSt>D&ZLmXqgsCU3UwfbIGa_@KU^avAWnke&BG0~Z)Y$pU)^E0$cH13YDF zzD6oA;X-zYt8)Xd1IxRyVd0(hz=eLTg()+AyMM>t14i}QXTag=#67IgWl+Eyo5U?D zKP`EG6m;ox>4qc5>A)*}?_XO4ysqk-FZ@i01nwh8kN!Pg|EGQL`<=ksohzrgWZXYD z^UX@N`+C5gY|x212ZaR;>PqS#j_TKaT-2@iDJQ;N>x)k3i+x3Ew(Bon+b)h$kQK84 zPwY8o@t9|K{@WK9?!Et_3p^L+J`)o#y?x-i0Gwd8h*;p>FX!COXL~kk%i_a&Ml=5N pGcf%B@9uUmmVtqR4OB!kGaOpIZu8yeJ;p#022WQ%mvv4FO#lsn`l0{; literal 0 HcmV?d00001 diff --git a/knowledge-base/images/html-content-preview.png b/knowledge-base/images/html-content-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..339712e6044c29c617edc8cd6f7170c1b3e97f03 GIT binary patch literal 1608 zcmb`H`#X~h0LS0;aJtB)NGGGolX}YKJw38XjdVG9l0xOa<&t4CtQezuB1O48m2DxN za;se4#&KEpQfEdkvr6{nw$+v`Ek+vVaXHRkaDM5B@9lZMKYy}Ld%EgwFxdbAfUdjS zF>e4sfvf${y5CkEr#$4p8Yrr_>k*)~&vblsXpvk_x&Qz>PiHYidv&jmbMvPHfFAEZ zp*kr~!vR2h)cu&t85&`t&?Q0Uu<^LUaoT-2i4FZhrjRh0C)8`_49)kTj4X$?A6)OP ze-_%id5?klE6iY*GlfDi1P<>v0D*PurP{y_7cOAF^VU`%Lu-1?wS02|V6eGe2RL$_ zhC1x_OHK(zw1-gtn_AKXdSSS{bF6vR%ZrGNe?X(--n*U}Ww*Tj-KnAn>ifu~7TaRd z@fn$1(m(<@IVD|it~nLLENWM>9K#NHD0!CrmnHRaS!v32oX&L87Ok#ux&;viH z%9VQ(uBS@XKOXlrHw~+ws%V&F%jwz3^9Kgd+T?0^-yYPluzQ-DhPRqxaA~pgANKWJ=Fb3C)f-0j=Y_!G5KnWAJBQuWHtQ{GWhe&dp zMqSZ9bA#bRsO{5C;B6#P51tN!E~)Zh2HpyHS9LVacJ!ObicgHFEQUXBR9^NIi5m2x zCgxH~{Wz4RD_C$7$Ua0UEHz3H|DDVW=VF7dG^&!K>XL)>eAITh(zFU`*lBr(weWuW z0iDb{MH-X2=btkyiTjxKEJ2GCM7Ck~>Gsd}u)ohYX&ipo*)zXORPk1K4m1Xex~VZa z?QL-FS{xKu^9A|Pr4WaK;sj_=Xb)Al3eWB1RiOW5=uC znOaB=SD=b7n&qRZj3-Po?vx;R(2t?SuNViDDb@IlSnyABgG`fh@xY_A;+B8l2vdqQ zWV%lH5#Lt7EbZZcMbKk^$oPk+XByeo2z}Xx$DTFk5Z9D848?QA4j;0xDmtHR zN`b|>p9j<`e&k%t{d9?hVTAPam6<7K24J~OZtUqmkHYKue3n{xM3g+h; zJR@TwYA0{p+1C2CFJ6HeCBFNjQxO%M3eUDH zJ5tORqz#J=@l}LJJ!#Uj*)Lg9y#ZyRb&mteqMy-LzRAy6oun5e5~?K`<+ldPrlP{2 z1wo`e`u6UvmJjyl_qc4R&mG45^x7l64vPN0q?KNE0F=UB#Qh}dXYjBbR*?c>>A%zE z+{)947mGQ*9?@Utz_HQxvdbkZ4e!ffc2aO@%@QqmNk>EqkXbNy^}(k1;S@`Wdv4t} z2@HO}3Hxe!X!o(WSvktfEWPm(F5Oab{H^D`x2n%^`I YO2JRJR6B%PtMmulk9!`gJ#zl~zZgFvT>t<8 literal 0 HcmV?d00001 diff --git a/knowledge-base/images/html-footer-preview.png b/knowledge-base/images/html-footer-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..694a0169ed14eac230d681c433aeee89ac4fdd34 GIT binary patch literal 1808 zcmb`I`#0N%8^=F7mnGK5urDQ%wnSp3+HNS?ge;C*>0(<)sqm#qRaK-Y6^*&HLRGah z`bDynm2g^#xSNVnkz&-`J_~axH5DY3hzPoD`xCx<&UrnTbDrm%_c_lGZ|0Z&p8KI@ zPyhh-dwUTA06zFaAPH99tO)0J`Pg1oy9#LRZRyAIzRI@SwOh42Roq7?On&ZDd>4IPlZRXMEd( zAASEF>!)lZzo1$RRkLAy<}RoS9pJ|_43PH!Qd5V4ALGh>k1ov3FM%rBp2L;ayg6rO zvP!tKhtL%W(JQPIp&i?5EaG-TVNLhoTbk);HPs+OMH9mHR$|K~y}c2sXNruG`tNsA zp`kJ5616Fr)T^A|xN&0|vEkS*4SrR2>y}fZan`aM`ze{wx^elz1zgK?gO%L@M&z>> zi_h$~eB7qZZ8O|lOZ{PJTD^#H$|TdFw8=_bW-KsMQ;wJ>?(UQl?#|^_uUjYPmRTs) z%>^Zxu0!yH%Mh(5)bsu|Wo|lT0^vGj>G~43f(?#oj1oU937X}Dhzu|6Rd%!cetOBn z-HKw>VbV&!Kj%LD=9wC@xZ}aya^Yys9-?W@?UgNL_L$QZ$6~=Vfq@D6Q(OG9V)HrxqMHN zs<^l5zKn|wYjESC^7*^T3)0iw-;HlqgQ!5qBg)%rQrW^n;cDWq3HFOIj->S=)`i+L z+uDn=5|z^rF0#{WpmfLkuwpTFWQW-I+$3)I3uJj*9~@jBQA@@vRJXCLjaIS6@@5G> zer)h@fV5rQPEc+*mhh7&S%r3- zu;|{U(YOUBj&F_%xniyh15?<3+1Je)e6gR-@gz~NpVa=bDvxTeP)0ftDMSTM$juLt7ScAV2gv!`Z=l|M{q=phbJ`{gTv|+TiF;=1lt-sMcs|(~T*FUd*r9(?v+c-W>C5Byled6Npq5%v&GG^?bUpP-+Qf z>vL8OU5J>Tda+td*FHvqr`vZHCLa^+!$JtJQSqGnB&z^J?@+G?B;M?V>g3N91*B8+ zt24yR*>2E8@U*=~hqx7DkX1BzPtq_l2}*rBC34t&9n|~mAT8f@h~&2&EKNB~MStKA zWneXm-ugo=rBy$!yu?cAwC=9LlhYzTGhOin64N;{Zu!qnpive*C%d%)XJfj@ICg<^ z%?D4=;-z7pWqv}u|M(l?DHa-?wq>5?yYbHY@^l5&!#JSLT+DEQ9QylSwl#_U-Xnef zA>MX=Wz>cV3az~+ZKHN!+0mWUK3LwK-e3;fwR5%V5ER+l+jcDV^c^-p)cDcAfEb*|)uHT@+N(E9G%f~sd-xN0_^|Xp0jAAO AmjD0& literal 0 HcmV?d00001 diff --git a/knowledge-base/images/html-header-preview.png b/knowledge-base/images/html-header-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..2005d8b1e1b34af4c3d4142d812c60660d21a933 GIT binary patch literal 3454 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 v66U8`CMsk8w{ZCP&i}Qx_-l&0!MV`Las4 Date: Tue, 28 Oct 2025 15:57:22 +0200 Subject: [PATCH 3/3] polished html code snippets --- ...eaders-footers-from-separate-html-files.md | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/knowledge-base/generate-pdf-with-headers-footers-from-separate-html-files.md b/knowledge-base/generate-pdf-with-headers-footers-from-separate-html-files.md index 0839bf1f..5dda3d99 100644 --- a/knowledge-base/generate-pdf-with-headers-footers-from-separate-html-files.md +++ b/knowledge-base/generate-pdf-with-headers-footers-from-separate-html-files.md @@ -76,9 +76,9 @@ To generate a PDF with separate headers and footers, process the HTML files usin } ``` Let's have the following 3 separate HTML files: -|Header HTML| Preview| -|----|----| -| + +* Header HTML: + ```html

Company Name @@ -91,11 +91,10 @@ Let's have the following 3 separate HTML files:

``` -|![HTML Header](images/html-header-preview.png)| +![HTML Header](images/html-header-preview.png) + +* Footer HTML -|Footer HTML| Preview| -|----|----| -| ```html

Confidential - For Internal Use Only @@ -105,16 +104,15 @@ Let's have the following 3 separate HTML files:

``` -|![HTML Footer](images/html-footer-preview.png)| +![HTML Footer](images/html-footer-preview.png) + +* Content HTML -|Content HTML| Preview| -|----|----| -| ```html

This is the main content of the document.

``` -|![HTML Content](images/html-content-preview.png)| +![HTML Content](images/html-content-preview.png) The result PDF document combined all of the HTML files in one common document: