%PDF-1.7 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R 21 0 R 26 0 R 31 0 R ] /Count 4 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 9 0 R /F3 10 0 R /F4 11 0 R /F5 12 0 R >> /XObject << /I1 13 0 R /I2 14 0 R /I3 15 0 R /I4 23 0 R /I5 24 0 R /I6 28 0 R /I7 29 0 R /I8 33 0 R /I9 34 0 R >> /ExtGState << /GS1 17 0 R /GS2 18 0 R /GS3 19 0 R /GS4 20 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text /ImageC ] endobj 5 0 obj << /Producer (dompdf 1.0.2 + CPDF) /CreationDate (D:20251211094230+00'00') /ModDate (D:20251211094230+00'00') >> endobj 6 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 1352 >> stream xVMo8Wa)3"%YR6i&mEE [LآRR/zaGԧLuɡə7opfmD}8_kB=F,28p>è=xtt2k# aљ%wJnrUsg\"oΆ|֖<@,SJUEp.$̹,W _ )*mk, ( ^Y@t4BF,VaM@Ѱ+G]͆KSRSwx#R<>\޿i,E\(t#UV;W[.^V ٻ+> endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Times-Bold /Encoding /WinAnsiEncoding >> endobj 10 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 11 0 obj << /Type /Font /Subtype /Type1 /Name /F4 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj 12 0 obj << /Type /Font /Subtype /Type1 /Name /F5 /BaseFont /Courier /Encoding /WinAnsiEncoding >> endobj 13 0 obj << /Type /XObject /Subtype /Image /Width 576 /Height 555 /ColorSpace /DeviceRGB /Filter /DCTDecode /BitsPerComponent 8 /Length 17278>> stream JFIFC  !"$"$C+@" (lӿ黳.C2mcOS[˙=6yfxUte91s]Ot(z09| >8Vlc+'c].v َ_g<ɛ6szלo8cD{Z_wF̯51sSUrSqSpSPUPܨ͖JKbb6ZAkUUjUZX!;nːL[Z5_SnǙ=M9qj玫s)xۏ5ɯ.`eŗasf+61Vf;/3Ϗ253y3Ʃ[&\Y~ s+?eLx\\\T\pToT$*3eRMVNl֪Ԫirz09|>:r:/-45_SnǙ=MmHJݓ}yhw9ɥ̜; C|kE_|KݣKMZs>66y~ǻ5dw|@   Yrq}e=pUAoUFm*SlUNmk*RvCv?.P3 !4@#`"1p5JgLcӬ]]Z%ybY! #*UAb],ݫ$i+O W$j` +ۯa#9%W+ȿ׏yV/Zzǖk#Zg袽ӎUwfy\S;2~&)W~BNuzʴܱM#es_ OUf%uDW>* "aF-x(|>g){C7!"5.0#hE;>.U#sNn4oþuZ].FpVq*}>#vPȫ͸\c4 J NwK";%Hv wߛJ9\AB $r j @z"͋>* "aF->u 8X |{^'9KP 1 |qg)ݓF)p઩wc`ʥFO*{PEx;!We <ۈRTnBE$j\aGdѭw:}\8*G0i3G]qm<'s8$+8UB"6%q+42)+29ߗI,W\>/!J1vG8&EVb(x hY=O܂v"rkIZxƴe+bwAJQR@V܍ksy#! v@I l]dRLy X=$i,A2yZJե^HQNy&ũdzony*+Ӗ6CM`MABP;ޣB i&6X$f5M U+`=hϩ`,Qo7yo7yo7yo7G?"tFkM- >!e{X8ʍNBaNNUNF-^<:x2wğӮ%XdikC#QhW?%ϹGqˬ. dς^0w_r2aB#wc!|Iyo7yK0 b13@AQa!P 2pq"0?4O04Lglq(.(.(.(.(n(n(n(n(|^G$WBƕ3 tXg@~"g0dsUL8ϏA>/μ%E$obF#Q!F0[{*ƧC-#5b|8&kf6}ϸ7777>J/"9] ?W@&gP\P\P\P\PPPPP(~4Lx3TC:>Ŋ*kg3&d^_a?dL7#er biӛtMi-++++++|ع<!1c@AQ234Pq"$ap bBR?j\)"<~SDԟz&^+I벴yz^+E벴9z^.ez/]_e벅`e  >~:#@1NV63X\|`|5P(!mI@5SW̕q[ w/gBZ\oϺ4 bD3;/MFǽ(|tF)b@-2y lfθ!Bj&QBthkwONsZN'$WA`uo?T8p"SN?팵e~I0(Lj"Xk^DZk&E{=$)D1s&d#XD&u?s?h̸BigEOZ\vV/]ehZLJb<`QEseV18.3]",2Lz&HR"~cr/s)^H:4GbDRgX!ƈHK~E4nR]Y>C$4GP/l7DHp?V9 sE R9$Lg!l'w`R: `?|t,;opPpC7|LQ_Q?^ݯPl.nrjfiynf;fin3MPfiк#H>!1"2AQ #Paqr@BR`bp$30Cs?EGª+ ^oUw>P:VJ0ox)9̗F q [jk-Y)[ 3v'cwdޓg"@D^*Fь[Fǻ".!r(.u]) Aƺ:h*fJ}Z_u&d *~iz$ZBm>A%5E'wBNhCGܛ)6h|\@',YS8n\ܧk#tQ,oȌXzu7_%K\Cɳs\:EK,2Gn9hJ#ɟ <u0モp#򝓤y@Q^E;!09q%c_7&T ,)g0$rۢ'44u%+=sǴǘ*yGﮓ[[_E{kmn1!+W7ۛ~7e4Z46ŻT{1|O?GUAY5C?*VMp#RBд06 5= <ɯ\@; :YdȆ]O8tCt@危3+sA1nn_t*>3'7O!Nϱ7e9cz]wvZEiSJ'-vVJZ7,_VwvYeUڬ7c}ۛni{(|ݔhKQ]*=־^ez;( NoEeI[oS#5I NBdw/ۈ74t& r=H4 Pe" w<Ei5S#y}ЈL8_! L"tȢz,~\õeQwT.z-Jm4+%@QV7T][M!geꁽF+ezQ+;gZyie-ob]*=־^OGQ]ӻ~U$7)|HRt&xA]槴᧐#5KGth |ԡ' D0ェy,vWigT45TKZ>&ݴOE ™_ SHc]-X=>niDPrM*iD帮SJ= vQ(umQ׽oV{Vnq,s5ޤ-!{ZÙcp'>]Rc|={줛Mhҟ~J8#GUl+!Q 3I5NsE_7h}nJ|./N-ɽWk?Qe\DMB `m1Ua×vyɫ70㔘b=nNJL hb'Dʳ[S$k},+!paA^\e68Ia:K/u?7[lK {-D[>WE1.N<[\/BűQ>ͩ~Wm\%99g _!mR> דW9kh/Q0Ddh5GO~- 4](fdWM׊v $kzM.`FF\+ ?Z~B?3?Z?ʚf.\[xkJ\u;T.+”rC$nmO/ ѻgO" ~Hv[-el[-el[-el[-ߝ hZ崸;zsK!w6K ŸPqp/% Z3˔o~  OyڦA;+[!AYx]S#3=uuZyާor i4.6n~)#ǦK]4hCrtܲj/Ɓ"W 7eUmq,z/6Ʉ[^~{5<蝐̨Һ,+WϏdŭe+CS8Pg-ϑ9kӰ祟<dzLԏke7ztw##O:7kkq Dy,CUԞm ɮ_i7]՗I |AN^U]uHc>>=E7,UmqoYc4^ipՆǢ/Mz*.ޡ;uӭYjJP;֩c{$oן.!1AQaPq @0`p?!L<8?yIVW T`H9 vQ1xܹhIS!睐ג^٨7sPmBF=8EbPBOt |h5beH_M]ņq 18Wo]Ш !DʜaQqtbf!ΒLE- 1rܢU+}zYbf|-Ҏ00ti,D}`N#,8 -sph;VsƦM]|%6J=V \ylI]<3q6Z3t-frR5+#bZ104Xoa_ mRpGF*h" c;÷c\}5)|փljT]dc*5g XlcqAXs`j:A2IxhI]Y@d*3Iyyٕs9v[*F=mn2j8_"),r+,8˸,mX (\LSbS&Be%?Yo-j0D ;Ȫ423Pr=Bl(70uX>&BDxL&[hŠx|Qrw3L5#+sX{\)(ʔ`x5vu jSiN:SiN:SiN:SiN:SiN:SiN:SiN:6~_w~_w~_w~_wRQ(Z-0h:Ps(ݼ.jج lsX03kK6q+LRB q5GS[xUxs9:<PZ7`FtR='~y}!u ؛ct$N5(d%mx&%2wJy͔SyN:SyN:SyN:0?3MmXUK ,s?}xu{W&4<i.՜^ȅ:N6PŴǓqqܹC%(f;;+!0gbk>bnstjD`.ȦʸyЂBW {LZ/xXׇVޯ%Gs-D1Z,NMj[}]vuN^.bW=KYڷ`|ZQ`2ڹ^Pr8"/*.݈^2x|/ߕp-fJw;=E)]n5] /j_4!lj ,G"Dms ߰6lrH "m,^ z7,iZxGP>Qr+  F8Z]-k2Zk0Zk2Zk3ZlŵiNg+ƫK& mY!0HMxQ&t@ 6*{ BϨ> z7,i@E A% IЃvO?$4*Vn~(~a+8  =!!mq"Q]Yw6؀+DPBO6BF.~4fffnϯ'@^ $ C6DIW fN-@kLәjJWhӴ%hY//FI|]0zL8&OIf/*!1AQaq@0Pp?I~ ~"yt"Cj 7տXkP K|P;vh-/ü Lz㏄f /775D@}h,_zpN<[LLϪ<Ƃų](*+gxVؠJ܄0D!z͝y}C' LzBE \mS5#$h= rh`,(p{ՙnTܗlkߝb̗ÿ;T-06.rm)#9懱O8jUKrqٞ梨>-NKi6B`ߙGCrטu[l<* [7oC:diBHX{m[l]{-r'0AԞD{^l) pًE=j)QxFk,bc ڟP%qLԌţ6FdX:Qh)<3ivܩ!*\kͶ# rtffen'.b'[Muoq5*G.L<((ܜ|#6gbF梠 "ŸKd̥!0oh!%-zEqV[; V!& hbP6uQ 6m2Q ܝGsMD|Ew?R)d3$j'!9Z JuDAwfA'x\^P%qLԌţ6 *ɠ tØRyVfTbnīsW;ߝ()7UݓNJbH,)Sբr4oeT4~젞v_8O-?Ϻ(WJPT ?Ԋњ#Vi'}>{/8QhO=٥\Լ1/A ܊rA_2ҏu4NBb#ڊ("fR6Bl|OLgiT~;m,KCA̤ iB\ [' QS01h8)(X fzQL-ֆ 3yfo+)B/K{ۄWr|zlJ'bM1f#X#H(+',!1AQaPq @`p?QyInaG$F-+\lQc $a,Hr+SY.Mw78KM;/LٽMdAXj!K2l s$E8bM۠";P*&͡9XLW' ҕSxؽjZ13+bZmX}OBh:T6{LEDZTCØ* ums#e oH6::  ޘ0 Bٻ#~eEtU׹H EbxTLL ka.`&JUd-EdSKso1VP>hH98H X|Cd(EaBF(T5be3xޔ 1HBġp!-~H;^(w[4'4!kNͺZ qQMs N 6wH͘VImv A" DHdr*ZKcsc>2L @hqzLy$16N5Qd]nI[Åf4Sz^p;3G/8mrzߊcmi_ H'_=rȈL(3"LP]ln;gWMں )70_'SNޙRM`|c`_(I#Ύk)fnz8ק|ɱĈ}<ÖQ)rY+2?$2,CG{}O|DPT<uPݱ7ewϜ9eYgh3 Sc8" ]8`]Pc:MmNy0߉hEA&8 0hPM EJvSyBĈoT@ҙI8 zϡ?6"oi?@Iy"zϡ90QM!UKd傰QznH*sJظWVM9W jTDbHCu%yVq^0CA^rhn1OϩgϹ0&>Pe(a {͓;MTdGm/)=D͹&o'AzRcL%<(f9jc](9"|"! JPgLIth:eDΖahh^2 dI`H:r 1&- Q#.b ~fhaBv/lJi>P@=?$6)g`:y68=xr=.U0fUĆEhqp3 S~sD^IBەPtlr@v8ݗYg>p[#e ڌs%O}⮜5t_TDpTX}\X$u0j1u/#w$1s0 5qI1($hICxufp)>_N$+B}?S)3SC9=Ozz>k6 @Iy"z9}N=CSC$,czVxJ0pr=᲌yUx1/ *Wb]Zbb6Pr~1D_CA`vq@@Exa Lh8=8}.j1r`L }O&r*qzLy$16N5Qf]nI[Åf4Sz^p;3G/9y˔ptVn聶c](9"|"!0Ι4/@;Y KpB+Y³~zbDiP]ΙDgY:?P}nkhJEr\”({zp\eK`D>uLj(W,W@gny$Oe dɱUv]g}|Ü~Qk$Mg-~qUOD6q͛8pd6~mmB.>B@#ˉt+WO\t`WTpAMq`B;YvS /_NJWL=C>ϩǡ"KgA",DM)[&GvqP, (3Z t ^2YD$ mN9((4dDU:h Мn Ch5hy@X0Ŷ :RWn6Jd9@4wd(ED9r#mz$TS XV$URNB% ' 8`mn!T-h鮃D. Ő$`@@T;3\8E߶j šb&#0t Nc3Ptv3g9`M@''JC0_lE Ð_APmB_OlǫRL|Βii14!Q":XRr42(N*+UtBʧ-"M|tƃayNVI'*^ZtѻMa%ܔ Sv~p}=TN@x*bPܜ 9&=`݃-Z+jXQrs]PMIN/[vNZw%9λa}Duo  ,2ę\pKB%\ysw%oYѸ*@4CMtWзAB'zB8@W3g?<~x3g?<~x3g?<~x3gF~oo/xyߥ[6,U>s'~؟9?b|O>s'~؟9?b|O>s'~؟9?b|O>s'~ckMP7` Y3 p;?0z:KٺFqͥ11a-I MepG 5yBHPADఅQUV,!(Խ Fc@6*Ax!:oud@" t %'"&ĝ&&YJhҦ =JշM`^ ժ\5 67%i 9% kME9s?<y9swqap =0ĤK'QA=鸰V`:7JD`^ObfDS~wn׾iXi08s躛] V)ykg}J7(r?>JwXI9wI%U -Fc@6*<8YEx0, uSb۽N(YHGhAK ggU}85xw'|JݹQ8N΍ݖtFe'|RRo )W߈\:l:c FSl{.%6D#U* D^0h?`Hc)& _9s{Ę[d| r}(K?<~x3g?<~x#T@0 =8aadw endstream endobj 14 0 obj << /Type /XObject /Subtype /Image /Width 300 /Height 313 /Filter /FlateDecode /DecodeParms << /Predictor 15 /Colors 1 /Columns 300 /BitsPerComponent 8>> /ColorSpace /DeviceGray /BitsPerComponent 8 /Length 3962>> stream x]ݙ7ɣ_N:p:!l |%PKM@ ہc 6H3hXqxp8ddddԤ`?8RԷL:v;a/nE v{B*.ĪSwnQ;W? >QEխJ>>:c\e@A/nY*  ʁ.u{jRWԁ,\IV^|?RG_OnԡfU0Nz\'p𠞸3hG;#+ 7WY81XyЇfXY88QιN<, ',hMh*  uN|\e@j1`摋 XGeXeӒŀaeǧU=}uAw풬"2xhR$k)tOlmL}~hlX0B$˒Xp -y%{!*IV G T=U~#x%m9`x=t:" =Hiɲ\noƧՓ]16 eq2{QȪA:y %dUQ\-qCʉݑI*zTb.̕>f5b7uij:zlXK`V9p,6b$݊LJ b^/W @7ry,V{l|,)~|f3F*3-XK,ai 9Y]>Vj&e}LVRQeu(N.bC"3(dNhˠP%# K1L$ecanZxsH*,VrU˓Cbn,VrSyFX, 効HLYavqZ0YPYa_BTEc 2("ptU:# NrƋ~^hN Kj"Q5#98dt6]2E$Dրόdqr3M̠,?,R Q'\i:iKNHŜ`\! X-7o LCݭ^A^66e8O&Q~W la sgIPK(kjg Qx2yS8ֶ=KؙkTX_؊p*WkZ&5֥`+শSK8n 0>5֑؅Ա.pP/CɃ8la8s96K8gx:&4$25}Um@lp݀=*!bMG^꠆ݶw=XzZR( 6|։*pSYc qKԩmQqM!ȈS⡲ATQRRg0Ѿfu8f6 p͖[C!H*bcu/7g^:f*hUx4v4!ZRUg@ qt&7%NQXJ쑨}7:DOE0Ru8ՁZXɭ sT|ax*I6fm:;:Biܐ Ò1L_lv_CNBN :T!`7k{B/7tkA:sb5ʓ5ԡ8.!pjWC(Q OzKK!8Ǚ^J5?T]+TjNC-pF +jy(YPC2=NɎK/m\C& $i6 r:0ti pHCN3?K)*G=:*X1ECku PKEL/%/u^ 6ŋR!p9PGN18P :OÁ*YFk[&;l+mNcQOZC#Q`bp`JSꐿ!^I5saL!RJI8Ww`kg+(+d /RPT"|nU6CgM*e [1h>JC [)%㸥bP b.JX?pÈԑ'R|lՉ7S #֕:+uao(u1'pxK0[꼧b-uS1RǛmVapS4R KwV #Ȇ[+RJK7W #hc:u:@)ubA(ubO#}IxK% TWd0g8Y4RN&V/RS WӤNNV KHb:Y1X@Vԑ)b8d.ub:Mt2b:Y1 J0؆CJ*ub[UŒ^, wiYdQhpP+CV nK> /ColorSpace [ /Indexed /DeviceRGB 7 16 0 R ] /BitsPerComponent 4 /Length 1816>> stream xQn8 `kO`aaN0GbQI-HJEđ?8mq]*nf髼Y)YTIY5++i2ꛥ3Wf$fFЪ)Y%1+_jJVڭ U,}39Y%'fV6VɪY_,CVy U[V+XW @Vg}|U)K,×P 뻇g`U҆+'#zy!)K@VM*U.Ϊ|g5eU cʪVV5ú$*4YaMԱn;ln]G-{7 :Xqm%ƊsY_Xamg -x /鏠Sx?1^W.-a>)n0S'OiWsl:^ݸ[?Qm<-]]]6z³ĩ6,qXuZYK|kEV|Vxhd5VVl^Yދ˔YaD`E뺋VL߳#xXjw0e,6/ dהj{ <]tq_q|Pu W3, pK)×sy%kKEfI],XKˊ,$U wId1`(̐,.#,Fr}ZNYw~u= >9);Ё]4d㥙U!7`~Pڑf=^R_|U|>F8 -?#RŽf1{篗DTg a/b)V_XvOf Rq5X"m>.1`eCpk{X>Ew^v~}ķzƈ. fsFEEg t(F0`ݪ̀EE,B.pz;e,4ZznmHf!f_xXx fÅ@l!u-c 6F.=篾&*.ZGAְwTm}Åz(,t) O NպXɟk=U0ZK jjLj9K|ThM_/ƲN{tG U'Le!'O7M+2_^-b啲˖[+jr{X=P]S`P圬F{rNVʩ\7>Qtyy[=U)[h|rNVВيY=]TN3r\ܣJ_S? endstream endobj 16 0 obj << /Filter /FlateDecode /Length 35 >> stream xGpLM# endstream endobj 17 0 obj << /Type /ExtGState /BM /Normal /CA 0.3 >> endobj 18 0 obj << /Type /ExtGState /BM /Normal /ca 0.3 >> endobj 19 0 obj << /Type /ExtGState /BM /Normal /CA 1 >> endobj 20 0 obj << /Type /ExtGState /BM /Normal /ca 1 >> endobj 21 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 22 0 R >> endobj 22 0 obj << /Filter /FlateDecode /Length 1405 >> stream xX[o6~řQT uu{kZ/퀶iMm (Oe[~Jv(ɷtbC$wL$ib:ۭ>|"=ۄ`QcO`G…yR@Xq.hG@'B4u4QFwcƏ K82>B>a6b"fGP +nj΢:"ЇX6WO>_O`&O<7TD'd WIY28..?QBy#V>{˽j_*P!HVbv xu`DRYymY")yZvE8Qe=FxजJq~;Ӽ8Io8O=V :2,E5v `US=+a']TdvsW +N㐼M^+D0T ,-,ޟ??f:9Ķsq0퉇g< C+0\K5+g{j1mMx&qM bYky(bgxKp +Ɗr-ݿAd&(y,;woφ_ /ftdB KȰ7e$|*,io%J-:ȺEaR50) Q.[ϑGϑllB~K|@gLJ򩳇pz]B+vXtKٮYj.W;M{'r9WumZAczP e2\oG$[p[hłM t#ŬL&߄  {/%8 endstream endobj 23 0 obj << /Type /XObject /Subtype /Image /Width 300 /Height 313 /Filter /FlateDecode /DecodeParms << /Predictor 15 /Colors 1 /Columns 300 /BitsPerComponent 8>> /ColorSpace /DeviceGray /BitsPerComponent 8 /Length 3962>> stream x]ݙ7ɣ_N:p:!l |%PKM@ ہc 6H3hXqxp8ddddԤ`?8RԷL:v;a/nE v{B*.ĪSwnQ;W? >QEխJ>>:c\e@A/nY*  ʁ.u{jRWԁ,\IV^|?RG_OnԡfU0Nz\'p𠞸3hG;#+ 7WY81XyЇfXY88QιN<, ',hMh*  uN|\e@j1`摋 XGeXeӒŀaeǧU=}uAw풬"2xhR$k)tOlmL}~hlX0B$˒Xp -y%{!*IV G T=U~#x%m9`x=t:" =Hiɲ\noƧՓ]16 eq2{QȪA:y %dUQ\-qCʉݑI*zTb.̕>f5b7uij:zlXK`V9p,6b$݊LJ b^/W @7ry,V{l|,)~|f3F*3-XK,ai 9Y]>Vj&e}LVRQeu(N.bC"3(dNhˠP%# K1L$ecanZxsH*,VrU˓Cbn,VrSyFX, 効HLYavqZ0YPYa_BTEc 2("ptU:# NrƋ~^hN Kj"Q5#98dt6]2E$Dրόdqr3M̠,?,R Q'\i:iKNHŜ`\! X-7o LCݭ^A^66e8O&Q~W la sgIPK(kjg Qx2yS8ֶ=KؙkTX_؊p*WkZ&5֥`+শSK8n 0>5֑؅Ա.pP/CɃ8la8s96K8gx:&4$25}Um@lp݀=*!bMG^꠆ݶw=XzZR( 6|։*pSYc qKԩmQqM!ȈS⡲ATQRRg0Ѿfu8f6 p͖[C!H*bcu/7g^:f*hUx4v4!ZRUg@ qt&7%NQXJ쑨}7:DOE0Ru8ՁZXɭ sT|ax*I6fm:;:Biܐ Ò1L_lv_CNBN :T!`7k{B/7tkA:sb5ʓ5ԡ8.!pjWC(Q OzKK!8Ǚ^J5?T]+TjNC-pF +jy(YPC2=NɎK/m\C& $i6 r:0ti pHCN3?K)*G=:*X1ECku PKEL/%/u^ 6ŋR!p9PGN18P :OÁ*YFk[&;l+mNcQOZC#Q`bp`JSꐿ!^I5saL!RJI8Ww`kg+(+d /RPT"|nU6CgM*e [1h>JC [)%㸥bP b.JX?pÈԑ'R|lՉ7S #֕:+uao(u1'pxK0[꼧b-uS1RǛmVapS4R KwV #Ȇ[+RJK7W #hc:u:@)ubA(ubO#}IxK% TWd0g8Y4RN&V/RS WӤNNV KHb:Y1X@Vԑ)b8d.ub:Mt2b:Y1 J0؆CJ*ub[UŒ^, wiYdQhpP+CV nK> /ColorSpace [ /Indexed /DeviceRGB 7 25 0 R ] /BitsPerComponent 4 /Length 1816>> stream xQn8 `kO`aaN0GbQI-HJEđ?8mq]*nf髼Y)YTIY5++i2ꛥ3Wf$fFЪ)Y%1+_jJVڭ U,}39Y%'fV6VɪY_,CVy U[V+XW @Vg}|U)K,×P 뻇g`U҆+'#zy!)K@VM*U.Ϊ|g5eU cʪVV5ú$*4YaMԱn;ln]G-{7 :Xqm%ƊsY_Xamg -x /鏠Sx?1^W.-a>)n0S'OiWsl:^ݸ[?Qm<-]]]6z³ĩ6,qXuZYK|kEV|Vxhd5VVl^Yދ˔YaD`E뺋VL߳#xXjw0e,6/ dהj{ <]tq_q|Pu W3, pK)×sy%kKEfI],XKˊ,$U wId1`(̐,.#,Fr}ZNYw~u= >9);Ё]4d㥙U!7`~Pڑf=^R_|U|>F8 -?#RŽf1{篗DTg a/b)V_XvOf Rq5X"m>.1`eCpk{X>Ew^v~}ķzƈ. fsFEEg t(F0`ݪ̀EE,B.pz;e,4ZznmHf!f_xXx fÅ@l!u-c 6F.=篾&*.ZGAְwTm}Åz(,t) O NպXɟk=U0ZK jjLj9K|ThM_/ƲN{tG U'Le!'O7M+2_^-b啲˖[+jr{X=P]S`P圬F{rNVʩ\7>Qtyy[=U)[h|rNVВيY=]TN3r\ܣJ_S? endstream endobj 25 0 obj << /Filter /FlateDecode /Length 35 >> stream xGpLM# endstream endobj 26 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 27 0 R >> endobj 27 0 obj << /Filter /FlateDecode /Length 1480 >> stream xWr6}Wl5J(INm#;2y<$)Pvۿ7)]P˖gL$],l˶mӽ!8^mmz E_pe IN fQ&_BXL% D28 &|g% ްjV{U31`h4)gవ@wږԋ_#B\! )3bvk k:̶gus1OjWBkX}}eu|PQf+l5Sc뻚;.$4f/!tMke&gd&LH(x X ˄͒q]y8[zp;~Dr129 !ГJʨ1oqMW?)x$L!|FhY _9P oF  QRUuA yxr2&4.A;0A_PcnRKMc)E >ײ`iI_X*ӥ2(1@`Yb%g7F7 I3.ËzJ_~6tUsQH`2Z_#gy0_ryn- n*㵣P[`(0Px&)ҶW]%Б.w$؆P}1xrQH=v n>l)I&0gr"ˍD~gȄ[y|̒WW x8't iq{YAw6yyqbZ[_v OrYʇ?\5nB,[bmߢDt)d!K;K3uuL}b9ZkaW7a-nz]/!Z_]niZtb.<.sQ^4t,uXE{cm$p7?,%W! <$m!nǢ d^*VţBƀ&;WuC?$4Prvy:47P&9a,|nz$Xꝧ@\m]Arpwc;p{p#Ƿ{Cm`o<<4HZ.N dthwvQm4ΏWbUpTm45SH$]6gpʚ> /ColorSpace /DeviceGray /BitsPerComponent 8 /Length 3962>> stream x]ݙ7ɣ_N:p:!l |%PKM@ ہc 6H3hXqxp8ddddԤ`?8RԷL:v;a/nE v{B*.ĪSwnQ;W? >QEխJ>>:c\e@A/nY*  ʁ.u{jRWԁ,\IV^|?RG_OnԡfU0Nz\'p𠞸3hG;#+ 7WY81XyЇfXY88QιN<, ',hMh*  uN|\e@j1`摋 XGeXeӒŀaeǧU=}uAw풬"2xhR$k)tOlmL}~hlX0B$˒Xp -y%{!*IV G T=U~#x%m9`x=t:" =Hiɲ\noƧՓ]16 eq2{QȪA:y %dUQ\-qCʉݑI*zTb.̕>f5b7uij:zlXK`V9p,6b$݊LJ b^/W @7ry,V{l|,)~|f3F*3-XK,ai 9Y]>Vj&e}LVRQeu(N.bC"3(dNhˠP%# K1L$ecanZxsH*,VrU˓Cbn,VrSyFX, 効HLYavqZ0YPYa_BTEc 2("ptU:# NrƋ~^hN Kj"Q5#98dt6]2E$Dրόdqr3M̠,?,R Q'\i:iKNHŜ`\! X-7o LCݭ^A^66e8O&Q~W la sgIPK(kjg Qx2yS8ֶ=KؙkTX_؊p*WkZ&5֥`+শSK8n 0>5֑؅Ա.pP/CɃ8la8s96K8gx:&4$25}Um@lp݀=*!bMG^꠆ݶw=XzZR( 6|։*pSYc qKԩmQqM!ȈS⡲ATQRRg0Ѿfu8f6 p͖[C!H*bcu/7g^:f*hUx4v4!ZRUg@ qt&7%NQXJ쑨}7:DOE0Ru8ՁZXɭ sT|ax*I6fm:;:Biܐ Ò1L_lv_CNBN :T!`7k{B/7tkA:sb5ʓ5ԡ8.!pjWC(Q OzKK!8Ǚ^J5?T]+TjNC-pF +jy(YPC2=NɎK/m\C& $i6 r:0ti pHCN3?K)*G=:*X1ECku PKEL/%/u^ 6ŋR!p9PGN18P :OÁ*YFk[&;l+mNcQOZC#Q`bp`JSꐿ!^I5saL!RJI8Ww`kg+(+d /RPT"|nU6CgM*e [1h>JC [)%㸥bP b.JX?pÈԑ'R|lՉ7S #֕:+uao(u1'pxK0[꼧b-uS1RǛmVapS4R KwV #Ȇ[+RJK7W #hc:u:@)ubA(ubO#}IxK% TWd0g8Y4RN&V/RS WӤNNV KHb:Y1X@Vԑ)b8d.ub:Mt2b:Y1 J0؆CJ*ub[UŒ^, wiYdQhpP+CV nK> /ColorSpace [ /Indexed /DeviceRGB 7 30 0 R ] /BitsPerComponent 4 /Length 1816>> stream xQn8 `kO`aaN0GbQI-HJEđ?8mq]*nf髼Y)YTIY5++i2ꛥ3Wf$fFЪ)Y%1+_jJVڭ U,}39Y%'fV6VɪY_,CVy U[V+XW @Vg}|U)K,×P 뻇g`U҆+'#zy!)K@VM*U.Ϊ|g5eU cʪVV5ú$*4YaMԱn;ln]G-{7 :Xqm%ƊsY_Xamg -x /鏠Sx?1^W.-a>)n0S'OiWsl:^ݸ[?Qm<-]]]6z³ĩ6,qXuZYK|kEV|Vxhd5VVl^Yދ˔YaD`E뺋VL߳#xXjw0e,6/ dהj{ <]tq_q|Pu W3, pK)×sy%kKEfI],XKˊ,$U wId1`(̐,.#,Fr}ZNYw~u= >9);Ё]4d㥙U!7`~Pڑf=^R_|U|>F8 -?#RŽf1{篗DTg a/b)V_XvOf Rq5X"m>.1`eCpk{X>Ew^v~}ķzƈ. fsFEEg t(F0`ݪ̀EE,B.pz;e,4ZznmHf!f_xXx fÅ@l!u-c 6F.=篾&*.ZGAְwTm}Åz(,t) O NպXɟk=U0ZK jjLj9K|ThM_/ƲN{tG U'Le!'O7M+2_^-b啲˖[+jr{X=P]S`P圬F{rNVʩ\7>Qtyy[=U)[h|rNVВيY=]TN3r\ܣJ_S? endstream endobj 30 0 obj << /Filter /FlateDecode /Length 35 >> stream xGpLM# endstream endobj 31 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 32 0 R >> endobj 32 0 obj << /Filter /FlateDecode /Length 741 >> stream xT]o0}W\Ehư%Ѻ-k;mDCSE)85Hj?.iu {ε0 (>c_2SiQ (t~?~qC]]G9a TfJb02Qq,V`1N<^-F*&/k??.4#42̓*Wԑkbigpg$iצb:WIzi%qI2S͢#Ras2+Dyd D:%i?NqΩn۸> /ColorSpace /DeviceGray /BitsPerComponent 8 /Length 3962>> stream x]ݙ7ɣ_N:p:!l |%PKM@ ہc 6H3hXqxp8ddddԤ`?8RԷL:v;a/nE v{B*.ĪSwnQ;W? >QEխJ>>:c\e@A/nY*  ʁ.u{jRWԁ,\IV^|?RG_OnԡfU0Nz\'p𠞸3hG;#+ 7WY81XyЇfXY88QιN<, ',hMh*  uN|\e@j1`摋 XGeXeӒŀaeǧU=}uAw풬"2xhR$k)tOlmL}~hlX0B$˒Xp -y%{!*IV G T=U~#x%m9`x=t:" =Hiɲ\noƧՓ]16 eq2{QȪA:y %dUQ\-qCʉݑI*zTb.̕>f5b7uij:zlXK`V9p,6b$݊LJ b^/W @7ry,V{l|,)~|f3F*3-XK,ai 9Y]>Vj&e}LVRQeu(N.bC"3(dNhˠP%# K1L$ecanZxsH*,VrU˓Cbn,VrSyFX, 効HLYavqZ0YPYa_BTEc 2("ptU:# NrƋ~^hN Kj"Q5#98dt6]2E$Dրόdqr3M̠,?,R Q'\i:iKNHŜ`\! X-7o LCݭ^A^66e8O&Q~W la sgIPK(kjg Qx2yS8ֶ=KؙkTX_؊p*WkZ&5֥`+শSK8n 0>5֑؅Ա.pP/CɃ8la8s96K8gx:&4$25}Um@lp݀=*!bMG^꠆ݶw=XzZR( 6|։*pSYc qKԩmQqM!ȈS⡲ATQRRg0Ѿfu8f6 p͖[C!H*bcu/7g^:f*hUx4v4!ZRUg@ qt&7%NQXJ쑨}7:DOE0Ru8ՁZXɭ sT|ax*I6fm:;:Biܐ Ò1L_lv_CNBN :T!`7k{B/7tkA:sb5ʓ5ԡ8.!pjWC(Q OzKK!8Ǚ^J5?T]+TjNC-pF +jy(YPC2=NɎK/m\C& $i6 r:0ti pHCN3?K)*G=:*X1ECku PKEL/%/u^ 6ŋR!p9PGN18P :OÁ*YFk[&;l+mNcQOZC#Q`bp`JSꐿ!^I5saL!RJI8Ww`kg+(+d /RPT"|nU6CgM*e [1h>JC [)%㸥bP b.JX?pÈԑ'R|lՉ7S #֕:+uao(u1'pxK0[꼧b-uS1RǛmVapS4R KwV #Ȇ[+RJK7W #hc:u:@)ubA(ubO#}IxK% TWd0g8Y4RN&V/RS WӤNNV KHb:Y1X@Vԑ)b8d.ub:Mt2b:Y1 J0؆CJ*ub[UŒ^, wiYdQhpP+CV nK> /ColorSpace [ /Indexed /DeviceRGB 7 35 0 R ] /BitsPerComponent 4 /Length 1816>> stream xQn8 `kO`aaN0GbQI-HJEđ?8mq]*nf髼Y)YTIY5++i2ꛥ3Wf$fFЪ)Y%1+_jJVڭ U,}39Y%'fV6VɪY_,CVy U[V+XW @Vg}|U)K,×P 뻇g`U҆+'#zy!)K@VM*U.Ϊ|g5eU cʪVV5ú$*4YaMԱn;ln]G-{7 :Xqm%ƊsY_Xamg -x /鏠Sx?1^W.-a>)n0S'OiWsl:^ݸ[?Qm<-]]]6z³ĩ6,qXuZYK|kEV|Vxhd5VVl^Yދ˔YaD`E뺋VL߳#xXjw0e,6/ dהj{ <]tq_q|Pu W3, pK)×sy%kKEfI],XKˊ,$U wId1`(̐,.#,Fr}ZNYw~u= >9);Ё]4d㥙U!7`~Pڑf=^R_|U|>F8 -?#RŽf1{篗DTg a/b)V_XvOf Rq5X"m>.1`eCpk{X>Ew^v~}ķzƈ. fsFEEg t(F0`ݪ̀EE,B.pz;e,4ZznmHf!f_xXx fÅ@l!u-c 6F.=篾&*.ZGAְwTm}Åz(,t) O NպXɟk=U0ZK jjLj9K|ThM_/ƲN{tG U'Le!'O7M+2_^-b啲˖[+jr{X=P]S`P圬F{rNVʩ\7>Qtyy[=U)[h|rNVВيY=]TN3r\ܣJ_S? endstream endobj 35 0 obj << /Filter /FlateDecode /Length 35 >> stream xGpLM# endstream endobj xref 0 36 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000519 00000 n 0000000556 00000 n 0000000705 00000 n 0000000808 00000 n 0000002233 00000 n 0000002342 00000 n 0000002450 00000 n 0000002558 00000 n 0000002671 00000 n 0000002777 00000 n 0000020224 00000 n 0000024432 00000 n 0000026530 00000 n 0000026637 00000 n 0000026696 00000 n 0000026755 00000 n 0000026812 00000 n 0000026869 00000 n 0000026974 00000 n 0000028453 00000 n 0000032661 00000 n 0000034759 00000 n 0000034866 00000 n 0000034971 00000 n 0000036525 00000 n 0000040733 00000 n 0000042831 00000 n 0000042938 00000 n 0000043043 00000 n 0000043857 00000 n 0000048065 00000 n 0000050163 00000 n trailer << /Size 36 /Root 1 0 R /Info 5 0 R /ID[<84d6beebea24f51d68e065809acdad5e><84d6beebea24f51d68e065809acdad5e>] >> startxref 50270 %%EOF WordPress Nonce User Funktion - Homepage nach Preis - Webseite erstellen lassen
WordPress Nonce User Funktion
Veröffentlicht am: 04.04.2024 | Letztes Update am: 04.04.24 | Lesezeit: 6 Minute/n

Die Funktion hnp_create_nonce_button_shortcode ist ein benutzerdefinierter Shortcode für WordPress, der es ermöglicht, Nonce-Buttons zu erstellen. Ein Nonce (einmaliges Token) ist ein Sicherheitsmaßnahme, das verwendet wird, um sicherzustellen, dass bestimmte Aktionen oder Formularübermittlungen nur von autorisierten Benutzern durchgeführt werden können.

Beschreibung der Funktion:

Parameter: Die Funktion akzeptiert einen optionalen Parameter user, der den Benutzernamen festlegt, für den der Nonce-Button erstellt werden soll. Wenn dieser Parameter nicht angegeben wird, wird automatisch der Benutzername des aktuellen angemeldeten Benutzers verwendet.

Erstellung des Nonce-Buttons: Die Funktion generiert ein HTML-Formular mit einem versteckten Feld für den Benutzernamen und einem Button, mit dem der Benutzer einen Nonce für den angegebenen Benutzer erstellen kann.

Erstellung des Nonces: Wenn das Formular abgeschickt wird, generiert die Funktion automatisch einen Nonce für den angegebenen Benutzer und zeigt ihn dem Benutzer an.

Ausgabe: Die Funktion gibt den erstellten Nonce-Button und eine Erfolgsmeldung aus, wenn der Nonce erfolgreich erstellt wurde.

Diese Funktion bietet eine einfache Möglichkeit, Nonce-Buttons in WordPress einzufügen und zu verwenden, was die Sicherheit von Formularen und Aktionen auf der Website verbessert.

Kopieren Sie diese Funktion in Ihre Functions.php in WordPress:

//////////////////// NONCE BEISPIELFUNKTION

// Shortcode für das Erstellen der Nonce-Buttons
function hnp_create_nonce_button_shortcode($atts) {
    $atts = shortcode_atts( array(
        'user' => '', // Standardwert ist leer
    ), $atts );

    // Überprüfen, ob ein Benutzer angegeben wurde, sonst Standardwert verwenden
    $user = !empty($atts['user']) ? $atts['user'] : 'User A';

    if (isset($_POST['create_nonce']) && $_POST['user'] === $user) {
        $nonce = wp_create_nonce('custom_nonce_' . $user);
        echo '<div class="hnp_nonce_mes"><span style="color: green">Erfolgreich. Nonce für ' . esc_html($user) . ': ' . esc_html($nonce) .'</span></div>';
    }
	
	$output = '<div class="hnp_nonce_but">';
    $output .= '<form method="post">';
    $output .= '<input type="hidden" name="user" value="' . esc_attr($user) . '" />';
    $output .= '<input type="submit" name="create_nonce" value="Nonce für ' . esc_html($user) . ' erstellen" />';
    $output .= '</form>';
	$output .= '</div>';

    return $output;
}
add_shortcode('hnp_create_nonce_button', 'hnp_create_nonce_button_shortcode');



// Überprüfen der Nonce-Gültigkeit für einen bestimmten Benutzer
function hnp_check_nonce_button_shortcode() {
	$output = '<div class="hnp_nonce_check">';
    $output .= '<form method="post">';
    $output .= '<label for="nonce">Nonce:</label>';
    $output .= '<input type="text" name="nonce" id="nonce" />';
    $output .= '<label for="user">Benutzer:</label>';
    $output .= '<select name="user" id="user">';
    $output .= '<option value="User A">User A</option>';
    $output .= '<option value="User B">User B</option>';
    $output .= '<option value="User C">User C</option>';
    $output .= '</select>';
    $output .= '<input type="submit" name="check_nonce" value="Nonce prüfen" />';
    $output .= '</form>';
	$output .= '</div>';

    if (isset($_POST['check_nonce'])) {
        $nonce = $_POST['nonce'];
        $user = $_POST['user'];
        if (wp_verify_nonce($nonce, 'custom_nonce_' . esc_attr($user))) {
            $output .= '<div class="hnp_nonce_mes"><br><span style="color: green">Nonce für ' . esc_html($user) . ' ist gültig</div>';
        } else {
            $output .= '<div class="hnp_nonce_mes"><br><span style="color: red">Nonce für ' . esc_html($user) . ' ist ungültig</div>';
        }
    }

    return $output;
}
add_shortcode('hnp_check_nonce_button', 'hnp_check_nonce_button_shortcode');

Nun nutzen Sie folgende Shortcodes für die Einbindung auf einer Seite Ihrere Wahl:

<strong>Nonce erzeugen für User:</strong>
[hnp_create_nonce_button user="User A"]
[hnp_create_nonce_button user="User B"]<br>
[hnp_create_nonce_button user="User C"]<br>


<strong>Nonce prüfen für User: </strong><br>
[hnp_check_nonce_button]

Auch ist es möglich, dass User direkt authentifiziert und zugewiesen werden:

//////////////////// NONCE BEISPIELFUNKTION mit wp_get_current_user()->user_login

function hnp_create_nonce_button_shortcode($atts) {
    $atts = shortcode_atts( array(
        'user' => '', // Standardwert ist leer
    ), $atts );

    // Benutzer aus den Shortcode-Attributen oder aktuellen Benutzer verwenden
    $user = !empty($atts['user']) ? $atts['user'] : wp_get_current_user()->user_login;

    if (isset($_POST['create_nonce']) && $_POST['user'] === $user) {
        $nonce = wp_create_nonce('custom_nonce_' . $user);
        echo '<div class="hnp_nonce_mes"><span style="color: green">Erfolgreich. Nonce für ' . esc_html($user) . ': ' . esc_html($nonce) .'</span></div>';
    }
    
    $output = '<div class="hnp_nonce_but">';
    $output .= '<form method="post">';
    $output .= '<input type="hidden" name="user" value="' . esc_attr($user) . '" />';
    $output .= '<input type="submit" name="create_nonce" value="Nonce für ' . esc_html($user) . ' erstellen" />';
    $output .= '</form>';
    $output .= '</div>';

    return $output;
}
add_shortcode('hnp_create_nonce_button', 'hnp_create_nonce_button_shortcode');


function hnp_check_nonce_button_shortcode() {
    $current_user = wp_get_current_user();
    $current_username = $current_user->user_login;

    $output = '<div class="hnp_nonce_check">';
    $output .= '<form method="post">';
    $output .= '<label for="nonce">Nonce:</label>';
    $output .= '<input type="text" name="nonce" id="nonce" />';
    $output .= '<input type="hidden" name="user" value="' . esc_attr($current_username) . '" />'; // Automatisch ausgewählter Benutzername
    $output .= '<input type="submit" name="check_nonce" value="Nonce prüfen" />';
    $output .= '</form>';
    $output .= '</div>';

    if (isset($_POST['check_nonce'])) {
        $nonce = $_POST['nonce'];
        $user = $_POST['user'];
        if (wp_verify_nonce($nonce, 'custom_nonce_' . esc_attr($user))) {
            $output .= '<div class="hnp_nonce_mes"><br /><span style="color: green">Nonce für ' . esc_html($user) . ' ist gültig</span></div>';
        } else {
            $output .= '<div class="hnp_nonce_mes"><br /><span style="color: red">Nonce für ' . esc_html($user) . ' ist ungültig</span></div>';
        }
    }

    return $output;
}
add_shortcode('hnp_check_nonce_button', 'hnp_check_nonce_button_shortcode');

Avatar
Homepage-nach-Preis

Homepage-nach-Preis DE ist eine Werbeagentur für Onlinemarketing und aktiv in der Webentwicklung tätig. Spezialisierungen wie Suchmaschinenoptimierung (SEO), Webdesign und Conversion sind feste Bestandteile des Unternehmens..

View admin Posts


↩ Zurück zur Blogübersicht

Die Webseite ist gerade offline.

>