From 911c313350ec8ef4d08c91e51c8f5dcd99d9bece Mon Sep 17 00:00:00 2001 From: hetima <33700+hetima@users.noreply.github.com> Date: Mon, 26 Jan 2026 15:43:29 +0900 Subject: [PATCH] add files --- .github/workflows/publish.yml | 25 +++ README-ja.md | 32 ++++ README.md | 31 ++++ __init__.py | 18 ++ assets/lora.svg | 3 + assets/slp01.jpg | Bin 0 -> 35039 bytes assets/slp02.jpg | Bin 0 -> 30925 bytes js/single_line_picker.js | 320 ++++++++++++++++++++++++++++++++++ single_line_picker.py | 35 ++++ slp_lora_loader.py | 78 +++++++++ 10 files changed, 542 insertions(+) create mode 100644 .github/workflows/publish.yml create mode 100644 __init__.py create mode 100644 assets/lora.svg create mode 100644 assets/slp01.jpg create mode 100644 assets/slp02.jpg create mode 100644 js/single_line_picker.js create mode 100644 single_line_picker.py create mode 100644 slp_lora_loader.py diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..9d80b87 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,25 @@ +name: Publish to Comfy registry +on: + workflow_dispatch: + push: + branches: + - main + paths: + - "pyproject.toml" + +permissions: + issues: write + +jobs: + publish-node: + name: Publish Custom Node to registry + runs-on: ubuntu-latest + if: ${{ github.repository_owner == 'hetima' }} + steps: + - name: Check out code + uses: actions/checkout@v4 + - name: Publish Custom Node + uses: Comfy-Org/publish-node-action@v1 + with: + ## Add your own personal access token to your Github Repository secrets and reference it here. + personal_access_token: ${{ secrets.REGISTRY_ACCESS_TOKEN }} diff --git a/README-ja.md b/README-ja.md index 5057bf1..c4119c2 100644 --- a/README-ja.md +++ b/README-ja.md @@ -4,3 +4,35 @@
# ComfyUI-SingleLinePicker + +リストからワンクリックでテキストを選択できるComfyUIのカスタムノードです。LoRAやプロンプトの切り替え作業を劇的に改善します。 + + + +## Nodes + +### Single Line Picker + +入力されたテキストを個々の行のリストとして表示します。選択された行を出力します。 + +表示されるテキストは、複数行テキストを出力する適当なノードからINPUTの`text`に繋げることで反映されます。最初の実行時やテキストの内容が変わると選択状態がリセットされ、何も出力しません。ノードを選択したときに出てくるツールボックスから部分実行を行えば全体の工程を行わずにテキストが流れ込みます。内容が固定の場合は一度読み込まれたら接続を切っても大丈夫です。 + +ノード情報パネルのParametersで`source_text`を直接編集することでも内容を変更できます。 + +ノードを選択したときに出てくるツールボックスに  マークのボタンが追加されます。これをクリックすると、インストールしているLoRAの一覧を取得しリストに表示します。後述するSLP Lora Loaderに直接出力できます。 + +**辞書モード**:テキストの一行目に`#dict`と記入すると2行目以降をコロンを挟んで「表示テキスト: 出力されるテキスト」と解釈して処理します。長い文章を簡潔なタイトルで把握することができます。 + + + + +### SLP Lora Loader / SLP Lora Loader (Model Only) + +デフォルトのローダーとほぼ同じです。LoRAファイルの指定部分がコンボボックスではなくテキストになっているのでSingle Line Pickerを直接繋げることができます。 + +出力パラメータ`stem`を持っています。LoRAファイルの拡張子を除いたファイル名を出力します([audioscavenger/save-image-extended-comfyui](https://github.com/audioscavenger/save-image-extended-comfyui) はLoRAの名前を参照することができますが、SLP Lora Loaderの`lora_name`を参照しようとするとエラーが出たため名前を`lora_name_text`に変更しています。この`lora_name_text`を参照したとしてもエラーにはなりませんが、正常な値は取得できません。`stem`出力を加工するなりして対応してください)。 + +## Changelog + +### 1.0.0 +- 最初のリリース diff --git a/README.md b/README.md index 5057bf1..9a87eac 100644 --- a/README.md +++ b/README.md @@ -4,3 +4,34 @@ # ComfyUI-SingleLinePicker + +This is a custom node for ComfyUI that lets you select single line from lists of text with a single click. It dramatically improves the process of switching LoRA or prompts. + + + +## Nodes + +### Single Line Picker +Displays the input text as a list of individual lines. Outputs the selected line. + +The displayed text is reflected by connecting the `text` input to an appropriate node that outputs multi-line text. During the first execution or when the text content changes, the selection state resets and nothing is output. Performing a partial execution from the toolbox that appears when selecting the node allows text to flow in without running the entire process. If the content is static, it's fine to disconnect after it has been loaded once. + +You can also change the content by directly editing `source_text` in the Parameters section of the node information panel. + +When select this node, a button marked with the  icon will appear in the toolbox. Clicking this button retrieves a list of installed LoRA files and displays them. You can output directly to the SLP Lora Loader described later. + +**Dictionary Mode**: Entering `#dict` on the first line of text causes subsequent lines to be interpreted as “Display Text: Output Text” separated by colon. This allows you to grasp long contents with concise titles. + + + + +### SLP Lora Loader / SLP Lora Loader (Model Only) + +It's almost identical to the default loader. Since the LoRA file selection part is text instead of a combo box so that connect a Single Line Picker directly. + +It has an output parameter called `stem`. It outputs LoRA filename without file extension ([audioscavenger/save-image-extended-comfyui](https://github.com/audioscavenger/save-image-extended-comfyui) can reference LoRA name, but since attempting to reference `lora_name` in the SLP Lora Loader caused an error, the name has been changed to `lora_name_text`. Referencing this `lora_name_text` will not cause an error, but it will not retrieve the correct value. Please handle this by modifying the `stem` output or similar means). + +## Changelog + +### 1.0.0 +- Initial release diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..4d5f563 --- /dev/null +++ b/__init__.py @@ -0,0 +1,18 @@ +from .single_line_picker import SLPSingleLinePicker +from .slp_lora_loader import SLPLoraLoader, SLPLoraLoaderModelOnly + + +NODE_CLASS_MAPPINGS = { + SLPSingleLinePicker.NAME: SLPSingleLinePicker, + SLPLoraLoader.NAME: SLPLoraLoader, + SLPLoraLoaderModelOnly.NAME: SLPLoraLoaderModelOnly, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + SLPSingleLinePicker.NAME: SLPSingleLinePicker.DISPLAY_NAME, + SLPLoraLoader.NAME: SLPLoraLoader.DISPLAY_NAME, + SLPLoraLoaderModelOnly.NAME: SLPLoraLoaderModelOnly.DISPLAY_NAME, +} + + +WEB_DIRECTORY = "./js" diff --git a/assets/lora.svg b/assets/lora.svg new file mode 100644 index 0000000..5cf9ada --- /dev/null +++ b/assets/lora.svg @@ -0,0 +1,3 @@ + diff --git a/assets/slp01.jpg b/assets/slp01.jpg new file mode 100644 index 0000000000000000000000000000000000000000..42ebe8bc0986ccebef840c175d22caf6dcf493a4 GIT binary patch literal 35039 zcmd>m1yEeuw%~zAg9UeY5AGI%2X_zd4#7Pk!J!F|;2I#%5ZnU<5AM*oTW|@^bnesp z=gpt@XKJQuYMMGlckgx9-plrqy-q*QKCS>y6=fA<0XR4~;1%o-c$^2M0Td)8WF$ls zWMpJiRFo&^co^ttXz0W^xLA1PB$O27BxGb%bR3LSG;FkFWK06gY|prOd3h-rg~SB8 zMLBqQxql;pLq$bJM?)vVz#!tLCZp#5FTWn!0c;dFdH7Kf91Q@E4F|%8d+Y)z0RRpW zw%Xqd{_6`49)y61gp7jv1PumI`xJnO1A*WXK!}J42r%eC*f@ZIjfg|dC542mZiYE+~Kwf`bVUgbhdl$4}*jkP*~X;$1#AKOFiN z2#)+vpjgKPJ_+{txPGsgFg_XlIpo87f))mrRcU2|5=K0iS`+J|9`QzR&+vDPGxdAVU_naS$JKLoy)viz>U2iCi6c6WYO*Bz~s_< zBwG_Ef|E`j4lk~?c5C5L+lp=JdDew)Hbl^c^q}Hx9}AwcGe#GWQ@SX#AR+rd=HY}6 z*@mcp+JD9dZi @cpi92zE+=Fk5c zOntONfx8QV&Lk0#z^{vzK<60`k5d#kM!)0J(QZ$anzq1|gNpfnyvUD{L8OLG%TBl9 zcHCP5&m+;ezB(42+WYW&v6-A4TmdE96yZ7KoV0FC+h*~v`CS&!@>ljnR5M@y$Z(kc zC`(Z!`vWo;>KM)YjhHJTr@D>f%FBcm_viI05sUoaq4I71$7XCxaC=RgX_m+kaP6nw zY6*-%%Ph;eR61xbQsmX &&u++>cYUcJx1)sylU7^ zQ(aDuwnu? Xf>>6c{DA^vV+muaqw?foZ>Eg&OzPt6H4=BOoxbsG0N&M6 z0lwiXIn3Mu1npxqNxyE5fP{C;F5OP0kbtSqh3o0Ujj3{`f&Ocuc{_L>H|72Vwj (gbt8u~i8IV5&`rGj$yGi}f
!pM)4F@M zNe2&34Qbp;!-&HH)q&`N`5^*BYOa35wdccoJC22KpC9KAVaAG|E%CfxJ2XVd#Kr29 zDB69D6wPox6k3O3gKx}lOXz!h+fAHQ!mdL(Q@f`Ou9`ll({!XLmD6q_9T;dwATrlz zn5Y4gI}x3|?f_fz>akeMr+u=R)0 BZbnE}Hj`-+ghn z5I6F5hrzF
s^E^|DAc_ zTm`Z!IziEGa{?N-YY;{yg>TnYFvY2dS#vFb8 v@8H=;i-fhkbiswe+Vmut*a+>0C=ZVWI2Ni&I0y?@#?%woH!7v$M&z2*KbM*7 z;U}%Glp@f!mh+uLT@RrPl52ZK%pWgj4hiY8#@NLX<}qOr^fm65k&&Vv9kicUgs2KH zvYV7@?ab&rZ5*p$U}P&3UHU4q0{<6Cihca0Fb*?!7W7LfS(vLpJ~KyYfX3L#V^FTS zNV&0&KR(yx26^d}Wnic`R-Ae$zbh(qiM4T=PBjC@JJ@QOewLpw9~iK>@-FPAf|taz zHaX~> EhNaM3vqEjj z>>~-a)#~^+7%OFK#ys<4?fL>O_F*@QU$iA~x~J_wi_y+6nqH#W+cG963_0~bj1Z9# zb>-?qfC0Nq;xCq17S$D?<~b$q+s)9ix`yv1jL5FZB jrBjI$=#EUA0Z^i&7JZovT0Y`}H?# z;hCtp(?%EhAMlRTa~!iY#NI3&M@wMpT7bo3Fi(AG0uhLqzm%iS^mvk0b3C2VZ1bP5 zat(7v=BV23OaE|Z!F6P{UdKM_$fKF`s`qJBJPW$->`pV$&D4^+mqx)2^nDx28K0Bw z>+GwF?g=r|X~YwaTDLfSH!U&45uf+2Cf 6%G?fYT!-4sbr;HxZ)`3q2s zToRAE=HJbIwB6R^BKMgYk3F5Zxo;~IJlDi}`2jp_^<_^StQm>2ptYb`i-`VNb3Hl- z22_d14^CN;HrE_xaUbes=MKNfEPSrJAACsm9u_311XZ6YKwZI=s4+#=ntrM+d2m?p zg0KcJyK`S-!Nn_tiZ%`GqnkaiE6_##Ir!aM zMFaMf)ilYGRUWmC5GUjW@8G!ePQQM_F9+(FJCreII_lcF(X%x?gb7qdRE_!LA!Zc4 z3k#hg)cK_UR$K>Nrrfffp{P;}uqmkfxK@F~VH)PQ-fP#0tk5BX?Szxa8UOK{I+O@s z5+b!SnfLlu8G4*Llq03kHZ}Cd_hLd$=Jj%J``cZ~S_wA7qsV4d{_KLPww4LTgw4TK zDc2eAlRC6dH<9MKKutYZb~87%AF >2944d09WkVr-pL3g~e3g`A5$Yn_5hTgmV z1zO9G548TgHx|x44$)i?{xoMKUfY3D#C6z(klr#y&?>`|#!%Mwc08pn!yybeo)&?s z@s^GU-D_0$*5RicFojaJ(;Jienmmn`xoWA`P_GIHo9*ibnD!>}BwSrBa~F5U1~5;0 z>z*O?&a!0M%~IH~j@W8tp8E8^_uJ2py?nVo49qH-9zN{yVso$)^6Ys)X*IL490!e_ znEfag!@g5f+1>EzF8lNzTWKd(cS`%HN3qzRI_Hlmgo*qG;`2J05X4u|5kgIa3u#OK zq+Of;l7yTFk#hviYFTMw5BqeqOuUF1XZExjfrQh__2MA8uUq$Q<}VNt+mEm&gSJs? z3cO6~DzUc?dU;(5#1bgz>Yetth)yDVQ{YSTT5c>iW}9%Z&4b6fLsSF{Hn=DZ=Jlpg zpZo<%Z@b#b`4JX9Zd_g=yt;&i@`} q!c9VkI%x0D0b<4ozu(bVdV)iR1Bxs+W@ z&PYd!c@YWo`PO*#zb}h7o`}G|gxM_E2=n&GL`8p$2(+J+{l_H!x3@{a1Rs(|Z6UU& zy5qn4cf%+Ln#$wnM7oMom^yhMV@eYY%q?+yolj-0m^G|dEwLO4(%c?c3xEs!GkxOU z7OopXMw_|F%i-xF{^8HACAbxJm5+8!DdJdrC%W`CsR#{s(V$@r;#wPg `nnXn|E)!)(fEQ_C+`O z1dx;0Z-v%8EV_Ae(!HKe{skIp5ulAeT4*EYE6Mojo9Bir +f3RfWMI~7X1HG(Z-zareJ^tbZIFZ;DdvcOl2ayK^LwehgbCF z#z(^D(w8{@J3I585?N^ZEm`-yZpGsv{TM(N@i!XJxw2mEYaI`t=)UNAFI!n@(&^JN zSG)do3#;Dx_)H{%fRFnWqee@kbbPn0SlIU=9tYf`$Bl`Zql)RYhGkctv};YRk(5Px zb?Ljhw2OF8W8vz010p~JoW#DZIIoU9LmgLK7#Y5NZPj=76>Dy&YKa`Ki84VX v&^QgU2~vDtzpNQZh{b;z8BP&9D`~a9H+b zZ&=67a#5;rzk>Yi%{pFZsJ(BO4^RNvXTAuImHaB(C0k=={BXl&=vhXyc@UWoE `mjO66U!c*QA0(#Us+2(aWd6pDQ?zL^`BAqa ocjp5$r;~`*OBOdtfDvDt; ziDGa@Jy}sg?aaR4O>`HCb)qw|*6q+b8>DMFmJR%pW+0ZnDn&H~X105BKN@kzkVXc1 z81L+Hmd>nFEBkO~_%4h7o@lCkE%3M 8YOxdybsjX_B ze0ut(%%m|6WsWSY* MQwiY9K1vRnReBPO BKGZ<%o%XR6iYhjpR#Ap`==FIGZ$ij< zbj}Vx>G772gHa{>*&?`;0NgMjMBqo$yOiSe5bx`Ub19YMz+i_Xu#l<40BLg|8IpPB z0zpGsXF?}o4zjP 9fk*Yenm $@|9i zS|2nkFaWp~Qo4vPrY<4R;977BRANAyijTuXnIk_UKA9VI8nIVb#n%mTIC`+Hs14C# z&nl+RI()e =?A;T`*T*{zRz`LV`pTTv~_SS4H7Pb5RFi@V&3 zK622yB|$IudT{RbxGvB|bckRoKKfk(pzQ~i;Y3KT0gB=wIlPa*)c^=S=Krd+@bl}}P zQi?%6#iCgM&h9M3paq%~=1` $158j3Jq(2%3#nIAbNti#Zje zLj$f35?zf9xv?)bCA-a(>5GdW;f>Tf)+=#!-0YVy%UM%?yg6r> t_7{F9%jn z3u{#yja}aW6Xe D@$k^*P0>t1TFVkt9GYBiZsaDqOC8BL;0XDBuAO(Ds z%=^ n9h?L_M#1jzBp7>(>`Qw z=MJF%$B!UH{ DsxdOP=y{4+AG?4TH*AWZVd$$fysKv@+fjsvHKY^A`0 z${*-W`fs7k$$tOtmpeZfsc<{<;s2Y9dr~i2>Z>PJ)c5sU3 sg2+r1<>CbV1xX_3?wwv149 |N0qWW=>;M3i<>OD+Hg~oA)zk?UL3w-zD92CD1^y;$& zp|d)!qc2?LQa!q86>qta7RBtbdV&R9-;-BVAylkf%OMa^ycTre61F|$2NS79ZmK`7 zQt(0_{vR?|g5SENssR60Kl+n?XMB?-d>F#Hy`$Q>XY)vSc6}o|acf?N36+QMFIe2+ zeaJI01C-rn{RWmCD7L@Iq7P?(-o@560Jqe(iKu5apoA3-R?-T=KGu-GI<>d3z9=J* zY-y{j|H_6l!_3Ov7lvGZP%5}BzP8xNO-r0dWSq2CR9k4NLqs6O9iA$U(t7Mr`o?%vwp4=)8lzD&f>wNLMa7Td#P}(ay-EH zo}rG79%$6j{sogsgDBuK^6g&A0Qtm9W2j H3fG!+hJ1Xlj zvLJ%bTJ3tf=~63A+j} hlf3bOw)>F~0xa=lJPnlB@=A(%TH4K`%ParP_nhd{cz-Es=t&);H6JDT3pS zITkt27%i{TUj=0 GGs3u DYmZ%z#Vvlw;S-^ViF_uwXYVxB z3keTQEYJ|Kw%FXMVXJc%(fk-{Z{@gGTXX~vN9ymHzAC-8bRc@tk-Wla6!So>rYSWH z+n~zpvz98W2+y7^TXGGDZ0NI*f^yw!l|`!>%xEo?GVqH^gPL?y!CrgSxjy?)y14qW zFU=NnCAw9k?#OS-PxPRn4`(03#9%ja(`ZV)ZL4T0sXKIfc!F`K%!ry+P*+9N_BmFW zdeKF?**<*Ec`bZ)gbrg(7dY6DGZ1sKn`z$q)lk;+pS55JZO!Ew$;*!3?A^c7rg!8{ z49{yFKPt6!@ZgZa4=q_7FfT{$kr9PqMr0iUm23QK10v|M7u<9Q$SZuq(#qD{RFhM! z{v<}B_nxr;=NzB^$8+JiN=S4vdu6U&ObuPC0d(e9dfl@x83k8kzcI82;0v|3tsMc` zlbro3uhDVOj5TG`Oyf9nbm$Uzn1&;n!m{rK2BmkD-r*npmpOYqzRC%ScJ%9+)4rGO zrI5SYw)eZ9fT{Y#PidjSKWmlpRd~`1cKFO^|IUl|9&2 e=zj_Ynzb^!;HV=VQ>lYuh)lAqu~8cY4^w67D=THswt) zgzL7Yhzl}L7`By %28~u*yBtV?9A??Ebuz5@AMJQ^OL>T!*DO8Mt1~rL z8>mm%e%TXe2}c-aGD+N<;Z-8^+Wqy0$m3F#aM;Q&_T{X48 s3=f-G!p6i2oqS1etmpd=6kBSD9&pmm`YSt7#e_7AL!G1bS zW{;uy4jRy>aCh4}Ev;Z7xdxE)@9-aQzt WIg|HV*N%wHf`5BMpogO5Gs#<7O> z{thFYyu@e|U;}fG(ZZzxhwY+fD0w$pA8!FN<=fvb{1LNE_%WG3UjAN+_bAzEzXKqa zgm!!O9UB9&hdBRwL2M{+1|*pPlob;Mp;`R>>W?tW!I&2O@$!$T3jWt2G9F(mQoJAO zMTyi>_%H7z(1>WXDAF}o9XHF>*5+=(K=Qkf5Yu4}9O0SvPiLxUnKx%P)6uE1MT@!Q z_msn6(pDs7CO#j${*MbR7?CjAgKY+%K64}A)I5=BS)1( d3*tcrYX|Zb%RSjk>a(O4w_g03{{c& z%uUZI i)P#%*4`MR|S(r z9_g0EvrzG@-~95vrENI{V&eBjvjVBZ*1BL}?{NzT-$GCLx~FBTAE!K2hi&`T2N@of z+?(F$9LO#Ihft}nTt++_tn2h5A>t3(7t*@dzx2|DPw+aj$D@>V<(Qes*SyQBZ)0ZZ z53x@T&?}u!#b7-z-CM$#Hzy{l9y=_v%-DZ wxh4XKM Ejg-_D7jm~N#`-?@!0q9_4YpQY)KanX=Nq<7!5Zoj1 z+3!R7O)hN-vvkK>U*|WYczd^dNgqy*((GL++}?69n>#t3m_J%5f}C|T5jj=z3G&`6 z>&Ozz+FF%4=9qDC$IRWmH-FqYN+#WGr&QP3?uD*FJbL&wz72R-tI%G?1K*|tH)B_b zu+KUZE>&(EH!Ilcjwt6ZRHLu!?2uPP8arOMZ}G0Lfvq(L@;nMw3O?7?z@9c3C5|qD zUqrQsp?v2379;=hTSxX-xE!J1F{+Hl+~Pv)P;ca rYO?{gUib-2pmdIvyWX7zjNHlV5B9toPvZ?- zw;uK^6iZT~5;%$O;5uHEXaq%CRajb26VXXmH&4bIoo}?fp-8fi;nK$u= ^E5f%E9dP`XwLv?HL$}>;?BK^Qu1crs_Myyl#*9x zpF1p`PofJ*nY?Qk%viu(gDGPSTIEx*d~&8bZ5T1v^+^4>KldBKU@JqKfS1BDGM>hs zQ^Wt$3DaXKGPkW7T-$WK8APuV?aBm0xGc)&oruRL(f1tt(sILkRJU=q =P1kQX@JFL{H3SC%p^Su5I%TV@Z=VMx>DfUN1d<+j@i5CAFlLbtXg9%0~-nkfD9 z)qv(JMoE*@CgaSadMII}Ftf@nQ0RA~EinV2WaXO|Su3psVzDo#NkrUjZhUGpWbl)< zke9K%n4vmgPYWjMEOa%-OW#VZ%A%XsJE?L= 9xh1uWV7X~ z+(}%$3buwver&<4y841gG4--4#RujyR%V8YJt>6nBe;tShK=y}jq-|TY0f6Jm64tj za1Sg8MP*RUtZzI?j=f6MFRwk@j#2j{$7)d!6ldbpJ*pqJ2vDwgFXn(hpi%_6K|iFz zwe5%bV4k10?14OMX6gKzJY0p$=290@*>! Gijm{vaWcR1^%;iI>yKMX0Vl`gZCz^9&j#*|L)#`@o61D_YJ`xm9IbKhicz^C| zWj`{xv-;MZBg6jY7U!1a^tnLQEkouucA{HZd~X47Q}}R_g?j}J9=Q=g9|E5Xp$Ttt ztI4tlP }dq%K(S*J>eRh~LiWPbXxi}I4BrOU@Ba#Ho7YlXJX4tw&Os`g6ADE+oP zd(60j4Jo0)1}+F$rTJ=8YUn_COKFU) 3XdXuX2=njKwXWUPl$q~HxXdb-#*&8 zytn>RRX`O~%YZSbGIh?!p_l+cI 2P{ly-;{+%WSJFmOEBaX4+i(M7YUc*iGxsE zBETA305N)M;mZL^Hp4>Dg-rlC9pNLxM^#}bVa}t9Qkt%Fz}cF4$HS}4Yv@JZ@lg;j zPq|rzhgr_N?kK|$eX;|748^pZPZzZwa_-r|+;q#~DVep0En;bZRewLW5o8Sk_x0>e zq{iadTkX3@GfSlHCZqKPd%Odabapg?R7dJAm;Mog=RqFs{5geMx>}WHhm>Z9qz3eT zRM!*k+mv;AZhy2aqn)y-Ii)^-Zd|eu87-RyaGLW`Q9WozHbn )Z@YNyr7*{bNQG)mAZeXF#kA2)afEMckN9<|1qOU= zC0Fzpu*9_`W%xBz8{&!L4mde?L^^v0X-gIRzuq4W<~1quPd)o85RZd|V_IB2M6YQl zcZioOvEkG{%Sn~&jD)>iEV?UadpZ$z8r*gJo+3o`+a=*m1sirxUWL}~!u Cc2&$opQYRw`_t{Y+APK046!m{-KK9zbVf1A`bPrS<*OdlVt zBH!S*nk>g=kXIUCRdtjHq|Wll8si9wGJ@E?&$9HCO+jGjbgjOO>H92zfyR`HUF9pC zh@n;!Xp9n_5K(g24!;@r@O>g&1@ZEl>(_y1TJ)OPMS0!jyE&! fq3lTO7Q2?u(KYXZ()B1mbxF^ka67*%-z2ZblHsW z?5P&S -G72SJAlY<*|%}gE6q^f z^_eOJ@);b;32tt-wYSda{%|SG0n#N<4u%cjpJLGT+A9*n5pk??AyXBrZJvBSM1WMX zt>G?Z;oUACdbh(2mgoaz$ZG7Ay?wso!6*yAz&EL?3(4%U#f)miupYD~2*feKx*UCy zm^cJfLy_s;j?!m0w^DW7NL^X AUhVMb28uqg?AC)9;y4B{Vm?UM{1 zN~YBwvd|>-!1`>S4qHEd&SS~0i?LJU%B )K$Q)$vU( z?c|r?zLl}Iq%o*MAcO0LPi$$AwI@tWTUa+t*{35I9g_-P+r*Z-*MkVGSOk&$W-826 z7I}xj_ad5_#JVEpF3v)Y0EG-b(fp*3BI|vN|ADfc1h1V75uBOSiUs!Mo7dGR{PBEw zpFCz*s)G9GX52VFvd&Gvk1!57EWJg`{|jVp8vCKu+Bth^{u+9PG+s(P*Z4`U6+w;n z0)Kqgsuzk`Q$%y&!qc2QGw!EpRI?CM`dp#SL+gcoP!b{35Gr#B6tRVfn`rd$rF57@ z)t*K!-Gw_`b8SO_p&>In`*8cZ)7;GSScBzfU?KfP{EhhhydtWk*G9CBW^pl?HBkNw z5vj~G_3csbqj_=zl8dE*6rZilb@vILk z&WDhs8Ap~iJsLS=V#P%T!$>I`)^C&xKM>12b9_*KZb9d+$)k28vWd5vfS?D%2=C$2 zD}kGHbNAxrPJlHuyBSFrR%5szKg)iVhfa#8
EQ(_|Xx5xF&cLeB#?kKOgWupZW4 zb+sHU`Y=2hz6ZN}+fZ@xA|T8kKgz}RX^(f!r&OEC^?kXh{B~3>&}BlDNtq}NO``W? zVCLp=x)>V93&z_8-KIIKj8!xTBR3%Hs89v>4hDu7P15t~);nEyG@~^c6!FVVnfUlzV-ZO1F*UT5 z^$#V+qJtlrY~F~p>ggPxH~MN|lEstI2ckIuWiVjeUnX4*nTq|p{9-=u0m6?m!dV?g z^R2zMQgn3UA49 +8-pgnBk2l5I$RpeU zALSLAdp~8Dy4X&&nnKgkoUoLJj5Nm)i;%}NN|sOUvnGQQ{*&5bmI4g4sHiJ(EhtVY zrkckO{|zn-US7bO^u3|`DQD(`!t7k<@Ej4f<95669?HIpH&k()&pf3m719@MAB7qB z#t4ah>nSArY-@CJm{}b8As*hk+b3vw1(}nUlpN`jh`5(0nbs_P*MvX`b3_QOgboMN zw{WD}0~1ydJjqSTl^%+S>m{us)id$g5yUq5g);n>k|?2p@*yYZjnvRXEZqk*NVche zD6nD1>va`!Va9p4{cJ1sFB}SPfUjwxVU+Jvz6~jW#4t#Z(L8T4-@s?5hk}hjdo`oc zhCzSGz`*!)>Q=~vueG>~G9X$Wv%CbXt(6f)2rW8sprbDG!udsAJs)}32llZqX-{y= z8P8p_)U+8L-epI)y9d3w9o+YFYFYPgyg5rH((K0fELh<~{fsh+pC5-$Dd#unXu{CI zzVFMqhBY|$0wB@OoEP57N=@C0We%~oVV+4{cs+tZv~g;bqdHgsNm(RRDHHyr5)NIA zvS<2VEq3q8zzyu3>=R{@^iSm)P^&Q{^Igf!xGLzfgJ!wszj&cs&4`ZGTDVX(Pv!fN zIy8=Lgm9G|5^f=v_FY6JL5{6qPD?; z6}r1QM>K{C9To$QqKGssEV;hqR@iU9Nf@%U>y~$sQRD$Gx6Vixt{8^|L@#5ZtJ z!2zHSSM$0vD+VpCCnSONWzUDg5&1;GC}#LirE*22)E4SFVIMc7>N%|DjkSm@A0R1& z>Q1ao9UPJSXH8%h1*GPq8q%v}@h*pLw%mkBsH?+`B))1pKFlaGQw_eESIFjSiCGxK z=Muku#kq@M({0?eb>)`@d oW=RuXsnr zr{6jkEc9e{TRU3HX!9uG*e__m3^vrNc#svrZG*NYJ$~z9L0~Z*c&RwP(l(iXzj!)^ zl`Gx7VJO{28s@-@u46Ak(N@uX>vsd>6Fz=nJE@Cj2bVBx^w#iac;$zp+uK&FPp%Wq z*@3hU*QhF1RNs6cn 6=A8{jg3+;SJn)f_5W;F5><*@-#^=Xhz54`zyy*3qqnnO zx-;{R8bKip6}6VAlVxKK)h!K;Y3m(}6j4kaqf~yWKEn==T(%^w(Ji=B@zd*b2V5PV ziUm?{NIdC9 _+IDsd8r)MHsbR!D;+ z^?e(Xrx1`in!daRI+dA(*0v%@`#ha=3 6fuuD0Z zt|XXL)5R!hkrUu(NRWwrvQ^&B+C4-P(ffnE30 g9dyn(IJUPX#EG#0iqy9 znDI&px#kxF0sf=t(iCc#pg53LI6VmS30pWAGxk7Sf)r*}PcF9vo=B)a6ZSiYMPShD z*++ GfB3p(VI!M=42Ulfj+RGsC2l3?g&@lJA$W$oo_S8x&tO8d z(z4uPl0o0;8spW~%qqC#g}HfuOGbWzonAVfyKj6hq&Vj_WPP(f1qb3=bvbDj@9!Ue zLeAAmLxr~*=;YBH;S`3JM@lIpmQM}!UDQ*Cx&tPjN1~nWr~Mzglz}Ruv|X@{m~o|2 z%m$OG$soJ#{jlBK;&Zk^8z&_rgbl0g6hTy%MP6%##+_(k(Nh!sggz}q;cr2ed#D(_ z69STSf4Lj7pG)V!HfZZ)s7$q? 2->dcz1MM{9Rk?_a|2IgdP`kBGdp WVZ@=c)d%4^@*aZx+DO(QTtzC~bwzYV1a|v%G)7EX? zpWJSLe-~kv-7uEs_gk&3k4Q!$ q&S{XcgAqeOd6fBh_-c38PZz(&y>O6i+YH>cnd8HJuB?q R`U7iBY6QcW4L;n)${(U^8 zh!SPLely(1MYL1+sD4Bomk-`GmsS-I*3i&U;hTu=ckgW VutROxf%!t{=zfiQ P+-p2R$K@?KeU;4hHqS$&0;W#Oci9t*q-i)k~`zj#pH2k5ET)i-33 zFGkG8y}|1^5}8#4Ulg{=Zisz1Bws`sI*4>uVnxykyche!AKq7rY)RDE=&-(e4G!+- z GMC6c4ZfbL7VroD!cf+2)gfx wj&18(aqw`z)fV$45m2Cd+c1mg*h59J z*v88K@*wK5+5a*<%C-6#pZ}aENYE8igd~Mjd+@`iH#rp*KbR_cQ8qqcF7?ai`z{Og zC>z^o1y_OXMW^$<@LH%xe-BSs1w-{oKl;aB&7k*G3UH=#4*{7sD(iu+15riTbHy)n z>NW`AZQLgvK$lSsa>BPcFff=RbRwjVpy*v1qhEW)_ZhczitkA>C@eMgX5zMMBlx%h zfsZS{64Gr*NNA{dTQUF8xq|9&3%G-j@J2ChsL?(wHXZIs_(yobfnI5DrPFo8eoj6S zkOV+_XK34tRl?${zXcAP< Un#In3PloZ;YbGXCH+%6PGnZvv#fr5%1tJe(!YCjo2_B|vbY`@Tv2V}9 zaSxa;N#D1jF_L8zedXsjDF 5Z$>w)_6S>0n0w-B^q{Qb|)SJ8rU&Upd1qW#YI;Tj7C@ME)@^GITDtLpCvsY;J zNmNW96^VBbH^mu+Qa>J_G -ScZL&C9~oeolF@yXww{D4b`6)NW$YaQc`P@3<^mf#|Bd1h)hg0 z@#H<#Y#zJLsNSd4P=!A{NS2ZDFgu}2dXf*M(#=ZQtMCvIfI{darfXwf#)qRaX5PT? zxu 65H&Li9f&nvo;ME8K6~+Y zw^{529~6;(ii7w-H%?DaKS@CfCk|&zWnRGl6ZEeQ z_e#LtQ2w0>j{Ey5X66lKiAetxL#7D2d+T+Cw)Jvp4 UsV3 G`Tqd**vq*9 literal 0 HcmV?d00001 diff --git a/assets/slp02.jpg b/assets/slp02.jpg new file mode 100644 index 0000000000000000000000000000000000000000..77e530cdea664076f0ebc93368064193f0253c26 GIT binary patch literal 30925 zcmeFZbyVEXvM)L~L4v!7!6mpm!Gi|(;5N7uG=UI;6C`+WcNjE4aF@Z|-C=OK^E>;T zz4zVcoVV_K@BZ=LT6bpkcfQi!?y8pRs!vtV%iPNv09#R3K^6c92L~{PeE~0v0BHa! zGBOG>5-JJ`%BxqXXc+jI80hF2B)E83_!Oj6loX`o L_k79M1 9QO;AR;s#_Kx5(z$Zh5t@(PWRh?s @beRB&-D{C8DJ2!U^PcLsD-_Kt{!@h=pi-=G7k(iX6@-sCjH!r`S zu&B7CrnauW0o>Ts{HLqCr?; H6M;(k?k zzM|#UI3qA~oj@Z5@~qRH|HazBarVE)Sjhh)&i>BWKloYzU?9N3Iu8K{APzX=ag8Q7 zr{0Z|S1?bA=`c&;xddvCa=D~Rp{0`tpzr`rIqs}P*k6sQ*aofbPG)UqF%HCaB9IU` zlF6WvN+yZ6G0n*+SlU{!cfk82y`qumK)MTiEo(0~@cr4Ra$7Ee=<(8IFe7BgNHD#o zi27450(@O-O8ai=v!)Mc;27^?QI+A?*QZZ`r&zo1Ru8vc0NyVEp$QyWR2qC7NCbv@ zyn+l6y73)p_>{Lbiv=AlxIZHM`n5mHhySSp*z;L8+9Ya=dknP-EnR@v$Io&4#_vro zM*^8e{#KnXyCq~rYF!fjA`$~bJLYeM#n8XK+i6cEME^OVI3Z6V0rZXdC@2UmSN+?4 z%D ;}t6 zt9M0OkYBJU{cG8?t|x|@z};X)APb2E5#ny#f2zU~k}(_=k0K#JT>kc7iI0~i0U~Xg z$E8}@{d>3kqw>tj+TOU>M&lIxsed0U|EXoIaCNsf&xrG1zq91vQ1Ny9j|><%I5BL2 z%&bIQot 86>97~$rouTZEdG35uYUI5VJ=Tj(wcDd~f z;BfJ2^? nVuZzkRiLP5^R=wL x3b!I_UmN&>IvK zu^+qt(N{FF={}&bdX~;Nf@) T);3rqRkg~ l`>@M+c9fhct=0Q=nk!ol1(V8sSSctFd z0IX$kt)}c`6*6)k*lOz>Z>cLK Nr1ihwBc+^@v_ zf?FDY8#{%0xWb{#9e4w@`N$-iYq Hw&6&+-gvSGbv)jJ5xf~%RBq{-nK;cvL zjteh_t?9Y|Uic>&@O6+gr%JT;chB)c=g$5Smc{<4sJt^Q1fJ?ek+d4LH46(5u^&NU znUjPv8boLu9E=xvu!#k_`;fXKBLm9Yaz(KNm (ts}<~HE&`Y)ubN(>O>!nz%jnZ;z^0~k|YW_ zu_?e@zD?fiY+O+pj`Z~Vso0)fMLdBq-^fUEUp1tn7r++T+lSS4t-r>xe$2CE%?qII znLraG-4_DL$--mqFFS0K+|m%#*eW?T?h?#{Bf6i0iBs)*>v!kJnitRhT{~lKHq&o( zvk3(N@qTE2lFaNoQb@Xxj+Na;a;?h{!F^3y+(fO6kdh=T0RTq4jf0be`xt?_YGeGY z8n`h+oJ&6Mb#de_ia<7c&8@vo2uk9yK$MqIS;T1WRFNQ6qI&9}4IA5uiFLBraf-7l z3JPt#Qx8E>X^{e7oWF;4(Lhr--fQyoB(%d@C;@wxrNd?y&2bLBPd@H8%2?Q@SY4Q_ zyN(L5ZVKdKZ*p{~D>i_qgc!$84l?EFyRA+2=uS#~-yq}+VROXQ&5gIUlrkEEF1Ymy zn*|BZm7UPnXYL5xNF%Ru)`%IVzZQNbK=R~wmcut@3c=Ui#FHv1;lOvgD%H@nZSd++ z`RVRr5yV=_n$k2X=x{B#OTpNvyRM~Fr9}c<(*%3g>MkpQoYUwd*ORH&o@4}Z%%=!& zx=MzEx*Esy$Ine3qljSQ3UZGI7|R^AxA*hOo3B|{qMt=vBX>nntTc+wFt?@~`-+%U z%{7A9tETp8%dywr?rR#T#K!mA^H@FDPc#bsPaYq-X_(;M?}8w~1(s$%OmWqwh(DSW zBSl)53qGigz#s*bTmPU6_5*>9mQ(=?+;`D~(c pdjn4O4|z+4-<@-<8rscVA7p+=>F|vGC?|m|*jN4`0|fQw z+c~F^U)j}0t zO4BCXYl^;{c~S~ zy{^JH6C|ttXST NM>vgn40Ri47Y=MdqI@4;OYM#jlb==*MV zW0WcEbd8)P%RyDW*%rs@y*^LO!-T$usax#T^TU**I+>_s?sf-Q%U5IjG94RxrTnvj zpmasH^5YJ*U)0K_u*Kk}WD1orC&Cn8T?X*aNlsuG>#D4II*n3k%fdY0s=t32jeR1x z=Y7Px`@s9_7l7A&M5%V&-&dBrkJ=!b*FAF b0?$p=ga;LSCB_Qtxo*Hmn)8!38Odvd z7(V&dZ=d=*+0$NYzRruDLJf<^v=>g(2-#V&@p@Y2MBCj@tuMCanzzTb9ZznGbBT&e zZ;%j0_P0S0im005x8;_asVysNna8kpHqj7e28QY3tOzX6a3(Y7g;Ewy29d}Ba3v6c zR|M7NHg9wL9G|^Y6cQ8AW7s+nD~)}}kwpotM8&R6F|@s2qn(nOnI}T`Cv!O7(_BWX zyjiXdfPlRU{B7Wcn2s@uaTO<;d++A9 N%(?+tZPhrZu_SyMnZR+3b>=|xv}fS@47j!1$Kg1)b%lQOe*4= z MMvz*}?I&p6VjE2%F>o5j$3d05u))0{DCPNk_ z<%cXb1vY;(h7F#q8~v)!)QUO%5gFTV=$`!!Uo*Cow>yXNO}rk~I~i8hHRhcR(*%2t zIg@YYkG*r=3xj L)x BYj9~ol5`5GW4XOt*N(ghg ztzk_GlgARj`y-|`IUx`O<4ly9M81~l@w4R%!0(Z{{2yXjPafkH3CWi4IER+CX$hCA zq@+e62CCQ>wY*Yf3d#PwJj80*hq&vEmahUg Vp2-ys_5&vm}676Jfl7{brP^F z4<6RV!W{;yS*XWp%4;^<;4T>Uxgh*V;=?Et#!-jel_2}tJy|-$L+T&ZHkBRL7|q>i zT}%Rm_Yc+nY}5>X9-WKLs^aF+L)l?<^>TZx*87QXp+Vw`sc7%n%2=IM-#al7>y5az znPs 2+is!US%r{n J;uXoTGVaJpZ7zh2?@c+#bb!P_!;h~_G zMDH~*wo9hHird3C@nzl=1(B@xn*DitkQcx#_@RADOTWJG1yJd96IfJIPfI@0Tx6EV zwCAGZ&^`rzn0^;8fl}2`I`fw(JFs`*8ga-i3nx)Ut}d45x&r!R>d_6|e5gkOy84$S z;;W%Zj1TdLloK+pNMFycYi6wz2uZT1tsffL*Kv-y1;qE^MRG`RHb&3$hB_4=5XRkk z&dzf5r5{IVt7m2NVkF}!i)XM-isbG3ak6EV(_|zr4;dWj-wz?}&I6m&ZU`L^dS#ul zig?+65XIhx$P#fGDbxQLLr@~t18mxSJT!FI&v+!lav?bWqs*`xXGxQG;5XgIuj^;u z(vnt~YHQu#?UgiS5gej$uWrg?nsgC}VP~!3lcBBq_*oG6jk}-Z`cU7i_|4(M^ju3L zIE--v_qzoqO9%=et65-cmddTjc;yR`j@u~S$u}TdOo8nOjo%Ub6&e@oj>M*eK;iH! z`XHghq3!DLT{qoE#5al+j*IS5B-G>&rs>)NwRSw1Zw&BFE!rC2#`^wg_qt>d4>hA( zZ*Gct(AYV#ckW4ZNK4C7Uh@3_jZ%8hco@;->>_1Vr*TM>Atn*4gEQ~qt6s9_91;l>aa%Rug8F+@#WsS3jHK0CYat?H4YOR`zhyUY!UtA-H_Hv0CH=|{7r26( zJula&uBK(>snnERPDLhJ?SVC1y&S oKcdZnpBG*LU$$$n zW2#OC4!7>S?_3rk=M}FNw$n_LbYf+Hsd3}g`=ex6M6Vh{*hGrgj8uoit%T*$i3zGB z?>E~O0nt7u2Aw5@dJ*WevT)Jx$K+IY(@j%OZ_Wb}oG6A%v63ANIJ%iIkX?mmDJYJo z)RpjcaQnzt4{^vtor+H7XT8{jRAzC1CXiXMd$9|dUiSdpYnPPG*S~k#vvg*tLpU2C zV5j%dOIi(?EdFn0ITcEn>m(}Y!WSlYcg9Ms8h4s9HaK}Ec^sZUN^OO#G(vBRLG>($ zj0?gBL*Y10Eaah*Fa(1lCJiOA!jP4}p_c5+W&Em5A`$r$oWm|ba>=NpiOeg^y&rtE zsfT1+MqLy_YqO$A+tYPB-t2S{=F=1X=C{+OAmbf24N)mi`{K>*_a_FKtI7JTh`;F= zKPeUAKm2xie0Z);REb;ABbB4e_-4h>#It}1(}FnA7;|9q |I-IBmFZRSCc`xBxGJ0LTqz`XBq$1>6v~0uiw01PXyB0r@5`d( zyRV*wuJ~tpEzn$EpIijqLr0o<9Q)V8K7?SIYkkD*xXMMCtaH3ldSK&%sAb}^odh#> zP;$7875Mp1Yu7X@&_ MH*DW!laD|p$sL`An`5})US zV<{CcI~=S(%l=y1F9+@X{;C0?>=q6;IgWTA EWF`b0Oz|AmsCb_Lwb5_I8T$cOBf=ny-5B zzLD-(M(JLaUDcA^<>E;DllBiXQ{(*bWI$kWiB~3ZQkU}YrpAmEx}`s zoD#(U#{Y*nN gpX~tjJ_dIx|LQPX4qAXSvPzw|Y!5T{97<^&kH7K&;+^HMNWE z7eH3lqw{o{|2GoUZP=RIW4#t>;jyp7CO%DdQ(WGe1dfrGJ>Rpf(+c-I-?Lc}#pH_s z{QvtbVz0Cpfm6Muf?MmcNPKtq1whWrJ5J9F!1Zz`Q2cemWAg6%kp^Qjvq92=_x?iZ zom$}7*t3A``3s<*&*Y~4Psun!+@OF< ;U< vIw+vTK@gX3!v_b3LFUX zFMgibK8CHX?tLbcjip1Mz5GNwiMjesD1QnT*_1fQ720~?8SbxOrS90~LvrFZo2*^U z_29ZCFZ)o4NBFgbhHPsL(l8B LL4%ZBHcy4OrC zuJGaZR#+Q7s-ia)8^h_^)`Zd)wpACL#R9~?R)}8ew&N%t-WKRt+osOQz#t3YFQe}n z8P!>eTSWr`1N)QzrJVb(WS`I&s{WW8(h-q!)%Xb>5kI?U9;=`Z;+ZaGS3;`S_p-tW zbo|<&f$T-OhLwXi6c!9gp0p>`qA~eyUP6h`E$mJ=FP^GDzs#bR5+y`YBo#nKEAu@( z+Ouxbv~2)SF_Pwq?HSfG5ESzhYkcrF3A}9Is=YOpV)2Hklk)WTk1?Mz zB~~B#9Lp#(L&_AC!r!kd{8VOmDX0hCADY;Pvr(8 m7Bt@vg^I) zE!idDTm}aAWAyJHx)$ |Ge88-MP&c8|u FWJ)uiU(<@`@tiS#n!sNz zY#ydgDB!lV(zLC 5E sL*q1zg#*To1xyol zJ0Z+_JCgZJE3-FD4s464EH*T}B4$W8rL0d|Yo}cDR;Fw43#`}cUwmwPP;B6g4TMv_ zh4c|ovU!^kZY+%AHJL9rCPC?&@Hwe;+nyj}YTZxPsn7dk`>B>QmELS1Y@ReF++hMO zIc?w>ptR=J{DabifqXnmQZrJvpO4l=$Kj !1mdTCG1ba#2t(`U|_Z|}wIaOIXg zcDF@uc_*WsBx uCllP@ExoWd@H8tg|UI)JOBxH%1?* zBf1%k*2wJyy2p)A3tSltnEj5E0@cLPrtO@J)S1u58L?-S+6Iu;)Hg)md7yx#gp2hN zEp<0lZ-VHeebsqazM2;v+B=o8O@VK)he%m**{Aiq$m509vIc{=Dnv+14Oa8NJ+Lfu z3Vvh9Pnp6<3OuP0P7QHFJBV9a=t7frXP+y>U3_07yX8R^+|l=G24cTp_?vT<&M(OT zQxPTDQJYVgA1-V$a+7v4ccP-s3DfS{^#x$-U!MVtUf=kVl7qp4iUDVS*aI-L%cN|Z zET7zwYsj2m>f1GVUz6?f2#gM^DJ`4zU<~_uP0Xu=9?ZHS8`h_aT>x1B*-*TE{25xI z^1m!v{ws0w*FBm>H&PZ13x3}m6&1V3^Sg-B^iR|8A~{J=P>PDoWm5hd O(- &aw!2^SjY(Je`>!%{)^8F|qRo z|Mzrz`S|n53!waGTk-9t6r_%4dgh)iO((-tJ50j0J1CIaRW7>}9KbMMM$?dbs$Cl* zoQH+3z-V;%w4S*XZ680&Gc^0XM;SA*i^Wb`hp`wBk2(8GlLX4JECj+pOJRE-vp{n$ zvr}?uuco&;FGcMq%A=yPJRdcY<0*ZK5CYiRjr-s)UNQUF=XAK^F`G#}$+L;wI#q6Z z`9s8D8^Jdoz;Za{ULaT2g)bD<`^(MT31sbT&h `QkEckA)8q#qcgGQP{z&N2hh^i2EH~aZaQN?8AQKK7&{(m^-DGp2 zn;hc_5-p=+(hjpYz}rR5fkrSH1~^ & 7W4Qk0bqGpuqo%4#S5vy#U@k=f41qYhD0*^uOOvxc~IXkYURmtkk2T z^6 w}H%8{;It*I`{6^1%E#5up?g+qs+8!>^_T;ojq%g|I~N z3ztnsw)Gaq+^ESSq)FUj4B@owiyD%Y-U7x%YwKK>>{#$CzM_~FtZ_pHADQnBlic<# zU0CD$C|XC)nQRHv;)6VZo(OHyb=ubvz^MwTUWFrrZ9u2U@P-t670F$U%K?jA*Mf13 zOM#w3AczODa)3Obs8mJG+|J*G)U1{eIGYgy!#Oux$z;f6yhwGzuBr=V@4rhwCyGq? z=O}f5J~~K8M(cK>Yle1|Hc*m}Q;znlS__W=JwunRsqq9Y_xCtcMMc`N+hT+km^`2C zYbQPlg91NpE$O1>B{5~PfZNcHG;z^nrYea=C?BUVT};I&x(ij!Y1-VecC( zkDdt=;>jCFVhw_UH6zy_-L?j Ah1EjcZSri~7x zc8;$6+%4Ci0o9e$&+}|rvZe-uqjg#?`_WDiK#P$CfG0O)=yS87Li);tMqAm0H2$RY z8yQA=eoGn?STxsfOfGN*Yp#&>S0#}$_D>xLql%TME*H_Op|6bpI1cWL*J&Kz&zfvt zzLl+SXioYw p&l+^& WpW|1_{kiu`5?5 zZ7MZ8ww&g>D?i&-FMoUI%OQJ*N|CfYdO6J)Pkt&xbDq6AWxf}H_Sscc$Mv=EFU$DV zVYceTh;)8KN~~Q4yX2JgvNVC?oT!{S4_lty=2r!aA{^a(PVrJBOem*WC%fZXS(y5B zD|Su _>;J~7|Wo z{A!a_zJTrrSg7ydFZt_ zIU16`gNvVB8~ub4G&D0S$3By`+FqwgzRbeioDZ^{s6FQ_wEk6Wx=XSDQutk_q2)JC zwv61WF<%{0uQv E$P$`xhu_>Sc;R2s*tTIP=2Pe%GpBi0Fx@6 z>_nq)dgI!8j{zh!I%_=;SAR+O=gNwAZen-Or?C|d<0aF`2Z(Q=an=q|JM_s@AR~7r z!KP5><1g=kMGXj{aE6F9aC``; Qd3v40@HM8l@DowJQ zR{Jqov?t97E*y^a_6A5D_o4;g?nEb}ADX8vFfOpvHjdZz)U`k+UlFO*LMHD{BJ;ii zS-3#^ksO_eahmn0JSnZ*w%*Ndi_1$x;lYh>n|U9GWs$kOsiH9TLSasc?j6qvzKBDQ zauijF`{CkkcNqHDFShdm!!2`JhFHl5_Q~NiKM^CfxjHxzvQMQ}I{n#YU?ZCnI^`YR zrwZ8t`x!Cy#3gVp)6K`R=ThF@8BD$Yxv%e=PU={?Y4lc=PZf87qA{_%`{V=enmM`o zY#SM@T9$Omi4O|aJlf++tqxVgy0W{upu?B~8TV$BuSb=+6Ys-hh`5(t&8yPU!c~dB z=DwTx`CVbU{1ZRu+Pbd3$-Xg8WMjqfOVNjfDaSq&eOCG-XJJ^Yf$UQqNHs}4s }Q=AFt7pVbI=pdnwkWivZ4j#DV z$H36KABm(maOqvw*OGsK{Wh4AW|HUaF-*xYl3f`aeGpIH6)?KJbc-pF+coZa0idJ& zp}OMSU%h$M>BoKn5V+&s8mNK6N%r5^XmI9xd #1RWvhNJxj#Sgl#eI~^EBEDx1X+OQq z{ipNFIGb#&iuQHWTj}R8QDK tFlL&sSp2+nsI$`%|7X6zC-*s^?q6v(VVtYvFUF*hq5ERZh1L_z7o3q zca|2$(=uyI&)}s33SX|OElT+tg6~GBUqP@?ja%8xB!9kz4QnFTyZ8{*lQ EPeQ117 zVkR@qL#3j^3aJ~%JVSb+z4-*-MCKFSiCi7i+-kZ;(dr&P(YGp-?CbS>*hcv$m23$- z9SP)$QbC2apXSGm85LHBhOPpO`Bm?sF93RToBLWjF1h@n{6*uz8!WoQ3|i*y( X($C!hiuj6+6>n3 N!4JU{@-2Jmt#DBkF`zCw0FT{ zE21Or%}E(~ccfo%_6g&D@N=?86uKUTTA&CXHa;6_@wP)3AG=|?yz1L>qUq)1y2kg4 z$e9MVW2-|aJIzsce>&Mb+JsohyrUEGu`vIz16_Nhoy2=G=C6Asi=}OSK-PRe%}wuh zQ}JzSrPyiA04#4swste+$Z@2Wb(JfO-upm(pfK=_6}7y`4t`ho_aQ~cTgcAg2Rote z>ziw(Yu)v!x|}MWLmJa(y$<62#q)}glZ8Qp#Yz?xa4m>mHw;yuj=Dc`7}e>+#b+3x ztvhGmoJrbC=GuH->-C)`Pda`v+6VY~%wf`qZTsHflFZZb1u%2-7_F){1FERVPK79j z4EHhpycXt+8$i79eM=4pp)Wchf|29JKO9Wzqpy*D#^n~VS6`dEv^0lqQuRH~ePW0p zo$C!T7_$XjboZ5dv)stWeQ1>ulZNNehLv?EJ)LQpy~j$pe}E-%4+TDSqVn(~G;r1p z