From fb4302934bfdca731a7ecbb3b4949e50f2d1c9a6 Mon Sep 17 00:00:00 2001 From: Dev Sanghani Date: Wed, 13 Mar 2024 14:12:34 -0400 Subject: [PATCH] addes UI changes for MTU --- .gitignore | 1 + private_gpt/ui/avatar-bot.ico | Bin 15406 -> 16690 bytes private_gpt/ui/avatar-bot.svg | 40 +++ private_gpt/ui/images copy.py | 1 + private_gpt/ui/images.py | 2 +- private_gpt/ui/images_icon.py | 1 + private_gpt/ui/logo.png | Bin 0 -> 16690 bytes private_gpt/ui/ui copy.py | 454 ++++++++++++++++++++++++++++++++++ private_gpt/ui/ui.py | 273 ++++++++++---------- settings.yaml | 2 +- 10 files changed, 643 insertions(+), 131 deletions(-) create mode 100644 private_gpt/ui/avatar-bot.svg create mode 100644 private_gpt/ui/images copy.py create mode 100644 private_gpt/ui/images_icon.py create mode 100644 private_gpt/ui/logo.png create mode 100644 private_gpt/ui/ui copy.py diff --git a/.gitignore b/.gitignore index 847a30db..f727666e 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,4 @@ __pycache__/ # macOS .DS_Store +nohup.out diff --git a/private_gpt/ui/avatar-bot.ico b/private_gpt/ui/avatar-bot.ico index ab220adb2ff076d74bac45104f3c068b85e7aecd..04cb72252b62d7f49d2ed232dc0d1c0b67021ffd 100644 GIT binary patch literal 16690 zcmbWecUV(h^ESEzNC1@pf`IfQRYZCx0i=tegMc8S(xmqqsz~pMAVujQ@E{$5pmdQU zRq4I=9th!VeBSRpzjMBSzH@S2`ywHGXV$DWYv!JNW?lZioCV0#lvI@f2m}KBeO=B0 z_Z2;@UjcxI2EYUUiwM9&002Jt4g#P6009C2UcLX%>v95607#%vVkjXAF%j|g>m)Z| zv}7<+QW)cHY6@C*W{$gT%xtV&d=d}1ctm+w*#sX7ib}~K5D1P3O6rQTY7%gS%+-%T zu3x_ny9r|;BV&-^X5*Im|NOda0mzAfQ^+_zgcZOehv1V#F53VmaIDur?f$DE_!$qM z;2I&6h?wL$ctbTAfCs_H$0NYMc8!1l{MHZr9v~pUM!_N=M|exi9LnlMDHs_4k%&#c z;v1FruU&Sb=gvXIB)6$)Xz$$R;N;@w5f%{@6PJ)wc&MnPtfH!>qpPQHVEDwy;>F8X zmR8m_F0O9w9-dy_!6Bh`~Bco%#|BTPgFDx!CudJ@E@9iHP9vz>YV$QDgf&lpcs`X#Z{$F~LgL>f+ z5a1I)uk?c8d0Z(@PH>GyfRI8?3u^9ki&Zd?h*CcOW5qXOHX-d@s^`wXNN%$W&)wa- zQthv1|7VH?{r}SJzl#0edW{1&@FC#h;gbV!;Mk~Cf>rJ?yRRiPD_Mr@(bx3y$6S!O z#AR6ClR}1v3f?QShchx4g^?nIdlo~;1&P14OlmVCZ($hd z)~8%5)Q_?OY$c|>c61P`H;;13N`OuY=?`~oaVrpbWMUeSrf^cpA*z6ws_?3`DLw_T}+5cSX+_fE0rj>nuFkL#VbQfW0$(FC7 zyn?O<*mE(_y{h)Ae2DNDkclf9%8ZXmJT}sR_st7_JekW!MFcauDwK$+QL>PXtIe~Ym{ZymlPKZ7cJSQa}H+41Bk;9V1p@> z2`g)A@t?D$EI9|0TSDwja~INp^wA=F2ctw#(|4O|JD33oF^9m>C+CN#Xr(@LDFd2~ zUZQ1->WWw!AkxKqWIXb(ep;BFEyQ&Rmd?Qh3g2&s1+2vHT-^G^KaM=78YUU_}Qq!wkOs!(c4ayXp;k#yMkl|G}81WKrA@;y8i94wMXZYsA|mc zD;-)MfxwooZ0IC~=&%Yhweh5&V5bsY`^X6?z=PK+!60abXH>#1YrfLNpNSh`j=owK z8AmG!UpM;&kN$b|VWEkaIQLAM^`}?QAssMi#FdQUiHXsSW7kW-_MpH^9h^=A4r=y8 z>{{16)%bdCGZ)`1=-%<8gKGGXjeY=IL5BlUIK=)$u% zP7(5T|LW(kI{zxj9i?AnTT!HSMg9Ys1^b^+M@q#51o^kwf z2ea$XHx9F*!a<5$_1#BQOn+u34sydTo|U*l$dWa$Np#WgJxVvE7K3b_F-n`r z@w0+N-cnK!eIOw&!asg%7^nN?5-4%V)6FJ+^r-Eh4&tuv0_F1$J3B*E_fYF&Yg&_+ zz)gTV*@TL=o8C#wFXI9&`5LuBy0vej z*_VGTqVN-Y)sI7t;K>rWxidXUAUQ`cVIzw1eICM`9j(yPt`0lP%Qw0Bb(9VD>hh%R zJ}&g{!_8zoa5F1?noX4SHt}XAOq_Cz_2qbm+>UOUv|PTit)um=DW!Kq`KNOh(XCjd zv`4$uJ!5uuzdAAD zW#exVucLUvHg~o#!*1RI%*teCV;h;nWmoHjlpf-|TA`$rOJD;!7ytv!WJSlTOME5P zCZUM2U;{x>Cq&jgaD#r3-Hx2}cgsdZ!pwG7sieaZAAa#;Bpvt*Z zQCVxUr^0I0Wf4XC_@*qlayF`{k=nrkx_?DHwxN$D;o%JJQxg5QuyKVzSS0;8BZCwH*IN|(joF)ElbP^$3CKlzw z5cZk%{?X#av$Rx+)Xmq=4%*?H8|yO}fQlq6&!7%8&YXVp4(bSR$b-o#WqM5lM^q`5 zZA3sv1>VMoSR;qb>EQirq8SPMCL16BunqOa5@+=n=R@=tSrBi~XW%_Sja2J)ABjAO z`yns-zmSKE9Nxc98C zPg#0M`uLD384yH*>K2uvBLXSvZnz|Nx3l3E=)C$(1_-{Ou1tSrcsNLhg#__!c0Tu9 z@~n0RK^l2sbiw_O0XmxYQXnCihCxW43C>d2`ACz%I%8qOK)f)DC*YqxWj2nSgNXru zT_EuiC>1_OHTx$KjcPJfCax(!@Rq!@jDXZbxLVsDVUz8g9pQpblRX>F!~Xl7pJERN zs~?_gEhZH!1*CBPLv;|_)=yU(={CernYB5gtq-|4nCc(HXhOwGHr_S#)ryw5@%j}j z&(uE_wa8`+aKaeWV);+wq?Jk5B)Krr?=o3NW{0XyPx=K~ z`V|?v4*}h@HyK5z>ZT7&pf$}kjz50*Nj{Ki2mGF}zoaM6$i?Z|Ml3cnd3NyAp8DPO zEAbp&c&bXT*&!xW(SkpmI37Uvz=DI4F{9|0QWwTP^{D*8 zo>(Ux9WCPwqUQW{z(Rjga_lYxa_y;Q>&)#enp120CGxz*M-~}m^!UFoh&neA3>rEs znHnmVj*f^T*}mpdFcvxBK3`bBx&-w7tFJ7~G{Yyag=f!`zT$N@guPmQRnVwZyEl4)yJ#>Z z_27z{lW%3QL9Uknu3%gkjf@k5+-2Qn+^_vi=kGX%Up)^g#K#Xz1B|og@|CX)iq-!T zkOEgo^-~ypkaO@C&daA-#vVS%c$AL)Oixg-}`0Ri1M4>A1l+=E2WlbfJQ z;6^0~3a|TKEi2Pmw4hU)&Gak^lRGRvf&2P#LAF?bkd#l$2!Ydh0bO|r-v~9zCJN~S z2tLF}>aY_&CvgV8^*+1=d@pQ#9Kc8fv_<>~IX#_+)Jf+AF@LH9G#0K8Qz#7l6_fkwQ} zYVPQB8vT@bVc}@c5A`1U=~b3({bk?$fHC?t_bc8A5^Ib_M(aE|b~4br?MK>1p`h?Tz-@a$Bn{()e5c z+p=#=P;@A{iH)b!olMv7R{y+nQGCrfcyTfS9?Qh*&rE)55I+EUI`$n!c?o=%n(xZ4 zOSH?tvAp99b(nMLkNsG7JBcEfOogp38&>fmq@t^HLEDnCdcXHw8$YF?9odG*OM_2c z=bal*Z^m|90=FiZ4&yD|(Od0Rm%sw}jDLb?{C-Z9NA5$bnB`eg@p7Iaf7uCHYMoz8 zQ72aHH{fg$8&&-grj#SQ!P>?ioFVmu@Zr6)0qBz}b1P=L+xHkMdniA8;zVp`scK=~ z%0>v?FOf}x+;|~Rf+pA(P#YwMD4uubD+;dc#O8@I9eod=-rQM*OD3rW0IFRJdFs09 zJ6WZGIKZAIW%nqTb{+{hQbp1y`4{ws^^mc%{an`||eN$fWNU;u0E ziNs8Yw@#X3yjsy>jClT4Fjb~L8v%o9&GOzyvd(4F= z?)-vwCFaNyf52alSdM7Ap51%Me{ebyL7w33CF5t~DWQ<*wWIuJ_#m-YxFT%HR1S># z94&7bV)OJT{g5l#;WrA*0sOVc=YnTxKpZ5nWo=D!(oso#p_+4?XaPTlyTuDzOLLe_ z_)sSgOyk)o|!~ebDc3wXfIw{4p|5_!7vO z<(F6lv$8lCUmXKa*}^&sT$GnmL^Lug1#iimok8!i+Oj_uIQS+?R0^_Yf{bY9Sv9>g zLm)_ZKC;jq5C!IM)(x;$jz*uhtXo)xdHKDjUzJt%(vdDz7E=vb2kn4QOw-==*33JT z?+iBB7jT9xzMWX7p}lsmn)iyFa8d@YzoILi9TkM=B;}o!BlXK+q4lUs%@6 zzpnkl=(kbps_}i>*fEibezJAK;-gl-1XTJ;)l6!F zgm?|U59TuR4!(T1eRoo^IX(2HPEP!%_@|F)Ri62^`xLMoYf$}IWg>IEsiRS8En=&( zofod&&K~&0j6RCVcT9u6;%DHzo2v{hsa*CACdSnq(_Pa%%UahUHg>a}@}KY&_#KQ< zbGI95)MvrmXAu}W(@IHqbfFQ|#NwnRWEGzt+&Ni_l$ubzSw1F>vFdQw3yl{Si;ACK z_)?i~&9Gq%jD2>!NA_R4aa)Mby+X_smfiX`mfzam@OpNZc;vAk-4d?)kbExMciAbj z&D@q-CpppBRm$;jPMc4pXns8Gd$0EppZz~mg|rt#`zU;qrsH_Od_gGoXbYlo?4Y=u7HG_@~`bhf-I{It?8~E2t)^7nn{Oi%a};rs_W( zbNl4`dhBqks4!PDN+HPPHR^m7rDEST6Y?o9Pz`jrn}R%HB#Z}$U1nd^Ml;;2MY)7 z?mzY>5scLOO0)(Fai}{O!tEdP9WFPADHK?bo=_H1m1KMN81D`TR`sm0MbW3GZbzeM zInN9V(`;5(exF5;43#;p-+ZDe%8#Gt6&BhoYTXdi>Sm*yI&EG&d{3ylF`X~)9@gI>Y0)Iy#(M1=d(8W6;(uhI zOM3JfTiqKQ$a4j6K52OxLiWXdCj4n&S9MEP9=X)0fudOfPj#?d*P^v&75M(CHTYeh!N^2D-@9Vt(LC2cvOgeF9SE? zy97pIc_4_wE*@R*NI;T;J_J0lVH>`%X=8G{u)-73k8XYNJtjZ@An|-AkNpx@kJig3 zzVTR<+3~Tm2>XkNME=AQM@0tPv3YVXCu3^}nAh!xJO%f>Nt3A)ISV#aVQ1g;SMgYQ z3Q3S`<8R~y2$+)G=HtzKQXEXLIm=3)hQFNcap2&qmCTJyo$V)rH{yaPin4D``LubP zg?_%-SKwH||4^={%MaML{qAeAXQ98xD^ndQnpKb~%I3QdJ5E1?jn?zonxOYcbM77& zNNEV29cryY&9{`IKbdZfmDm=1A5`(q3{)l>b>_M!K5}=G*pZ9(HP>eHgcwc=HDW|f&Ly}cH&74RtpCy#l;)-=L zA*|f9U$^_UI$C0%k(a)L>dC&a?a2%3uz10sCY}a2H=9u~0{o0-;-=vRIn+mokN{wfSMWHgeDO?kVV zDS!?&+?Li`I5#6}8Hm13nyQ-r`~@;!z(j=au1^w|&PP%;TZJ?i7Y}nqO8wkxlv)VV zht@Pa+^=K+T9FY?Tih*;`&y!*4#hl2TonRJXGOCShp@m*y0?Z;ZO6#pq$uw{W4E-4 zZB(w8_NUr7gmj(qw%@6#B(EK-vTc&xBlPVEPvQ1|zv@@gA$xC4+tBk|GqJ~s>f4j# zAG_+1O#k}wJR9z61A>D*;=GHTOzywG?b=0H?Ry z%yP<5{F^Xcu}(u?;1al(zLwEGtxlURW)IgSdsCWT+^@o?LE0TL)t18z+1C4ZC=y zL@Js{rh73=N?Il}Ay_+$c`JQZ{TWUC<$z4ODWucZuz_mCY1*lGs@J}*zGV?{QAzfv z2wuD&-kFK!pAqK6e9!AlCpy_yy(12?$grF#GDE9Ev<5i8C2{jZ8Q4O^5fAUz>!}8< zaHq9Dn--D}(ngqsO~!jIrM|h`YUiOB6#qumH0MCS!AS9eL3XyfUc$$k)WV^);)H6` z`x1ELxgm2}8_0(s1 zU`i~2+mJe)8fudM@tGvJ`#85AcjpcKDDsL-<6k=)E@JHnG@J|5(jHMojf#y1+)X^m zCRhwk9M2&aXO3@?K6qTSKBJZa^37KW73Fi7cVIAfSnMVOC@s}8B3E=;gBg*WGOG{p z{P*&yA7BGsc&7orEkxb)Og829O@G1T3=0jkuD~x9joxoJJ=rWZ+r7& zwh%N-B3u5IK$dE8v>-A!bJc7Ld)1?GIv zx7HaI|M^4Va<9#|5MFd#?(|ETmkIW}G%rNXprro1&rh}Rut^HJn;*jbgo4iV&DyKD zt;v~bS=>m=Y0mtIgq`Z$Q>%ql`&9GT^PGQ9q%U}voTvn7^B${7%At%df%utgBqaNj z+eb5$Yo-iQ8S;x>xi6o^zH?};9iDGQw=vyv(=hNAWm*;OjAFT1fVpp-KCfFVNLhZB z;$h8hkzy&qKI~O)3{4zp{nPED{uQ+2%zO@)Usjh|6iDc;MS2B|g(KOpzp<)BY>0g5QuVX`pvrYLCcN0F*}o)Kxt7N|KZ2G(?R`yHuV<7OiglI7dx$4HYW{S z_zTH`DJyDC^^#&2ZHJ|q_5?WoSjBtb;X zQ9&>xUf4H}OJLlTY$(6)sl|S3mfpe{$z*x|#-MAlxNLOJSX6z2-}eZv&*~&GK34Wy z)6>g$Q)mfCm1qfclk_;|w`*@1{K^zs$bvKnEFZTBr}<kuExP9L=y3^}*c?=}jt zHfnPl=+oY~>FE$7&4If!B1Fb#Au)BGY3>quaUQ#5W|8#DfvhRoV28i$z=={qW_8mW z`aLWBjeexu*sGq43H2};Kl0dp5E_y~9pOBuQ>scga^Elz$?&eCLrujlfsg`4QI9W{ z+Ft+(nU{|PaZS-aVJs6SPPOzP@tp8NQ7M>pu}R!*Rr&-VT4lPNIc>JeL9pNS6Z`oW7TduT;y2*2W;sjN+K896dXwbsCeA z>6|fEcqTA8jP?~|EBRL*c43tZ(xHnxQe>rlytrsl`tU--5Tx!6P6r5_K8Bx&w;UBU zu3iF7s!kwXXajQPOA_4^XT$OFWGsEe5>#BPvdN}bYycpu^n|SVL&Yi&Kj=umo(;C* z>hy|%D3BR2j*}={B-Fm5y9%>FegJ8A0viory7L+#byA*%6FU7^jiR^&ULr76LpW{7 zT%HVaZs?%gb+nplP*{E9<9SN8+<6bTNO@|y%uVULf$(U>|ktg~0_%el`bAbB#yrufgmJ&Gaq>X_+kI7<4&b)?I-72YIS zrvr%s$vvlzk9xY#xEO#Uu1^6Z;Ki0nw9RUjAI%|{_+0SJ z=muG7^u}|uLh0VqP5cIx2U<=QN(kSasJUa3!gHWQIVc6wWHZTA)RT9J(bAo{ZUM2M z_2)mlW7`Y{M5&L*^P&t=w8NQ`UK+X|%Z7LxbgtAXKd!A&SM|5d3n~2IWx86aNNEt@ z4x+_Jc$L!1pA_dANPTDl(pJ|;sL)P@3;3NON{>=*-DK{f_CKYnNxF%TFq!kjeD>@? zFL~Kt>jiEqQK|gFA)hkl^v>toM$uaTK`R!@X?XCID+c)VW7*w`ltSQRcB=`s90lZucYSMnuALoNZ2Vq6$gsQW%_hUG}4fY1l1DUo>B%H@s~?*km4dkez;*_my}{wVpW)=U{EFrX9t4Z0oM7ZBv|;e&fiHsN=56$pEj ztB8dS=$SyuD@x%Y_=CG}mNl4SWB^J}zxZ2>jTVHh$QvhS9%flWGdi9BBB_?S0}%oLl9H=&zKry8_zYNnQLcu%O$Qgqqheq`=%&F z?%57vWp??s8n55~>RzLjg?UNc&$%+-U%lzg8Rptg`X|zkXHd#>uUjj{!Pz^}$Q9CQ zJ#*cczu<`~p7p#zf)JgCz%(|BLZ}7HyAn%om3Zo5`gQ2O+zfv54drRm&OI8DqjoRL zj#$DBq{dVC4%RXK;MeOpDUoCA=&k{1@R-YPYfC|U!?(;ml_5SAAtub~R2)iZ%S2a8 zrmdS&%}DuKG1S?U>c}ia8czL2TEsHHgK%}o^)o!Y{~k(KHYh-pIY`P=n?}nbMuem| z2ZC6=rmCnrTz%b-^Ks_cz8pg%(bM0@cmaIBbPr3FWQ^5n(4kK(>Y`MNrw}5}|IZ1W z^HtwXY{fBq-Dg$3cYpD2R9q&_dC|gtyN9kOw9l0JRA!!!&NU^zEYBVuF|z|JW<=c^ zgMT`WHQ3GAAfjDZIjK3ouWl~(X7a!3XKZ-366%T~|86mIkLANcI8kf)uP~8YAvTH~ zHfzzM8NXH z+oW{6_F;RSqxIMQEZY4E>Ti!}^;25l3{8pzvOa?T-wYnv#m4(1xHj?kW59J}HVeTcj(QGwT z79u$epyLquxH3b-7i`tw*C7$}O5Q&QKG+!36gj{7QCi5B_PpPj2n!PU(Vkm=qbd{M zm2jx{i}UEW{Vz@-?j9SrGv3B%oyG2!zev1zBGb}!TuyO{PmUWMS;CRy@h{I@*c`7( zn0W7*7WL^(&rCb?eeQrDR0!g`S>GRoDovoCzmBuFuGb+L?Hf4T({F&-d*h+TTTuUwQ(^az=_ zpOzxXrcvhTJv&_eFAD?4cFN)pS#nxl$crI$2i!k?JR^WmFLH+@Lh~ha0kd2CL+`9o z!{BYEQb74m>ZH&Ou5}HK<${yY|Bx`y)DIObkBPgA%rSzc-#7!c%RvnI#v)wvOp}m5 z)^&Nr7gl1F{qqgpx{MmO6=U$D`dAh3A#;FkjNFbHujc~7;il)8vsPr(_5aCH@x+F3R?#Eg$}rg_ouu--@!PC4G6>ZiZGSCy#pO^fnHg$z*s$)64@ z74}_U-OD$Uqf`*vJ1h^|Ek_sOk|4;rlkX*Fuw3t$s&JQLMm-oebZDgM65u&Z?T`j~l&zVj$ ziZ78GcvHJHexDYgr4Q~f9UClxzEC!9*B?Fy8x$DY zjK2g{MJi2pS~1PPX8CSET1?l2?k=1eC?c+ikN@p5XsW0lwoAJ{;aSFN9+bfK3?*3s z4lg!B_U5U(t@Y09l|;4u;jTr7J%G@gQF#_cvX>#$=A9qPa>ou^k?qhRp??VkWb&^2 znISa{lp8C2?dn2vx=(1z6Usj?5ACc}*2^a%mc?{_2S;d!ysCdu*4UAbR2amH?P+b7 zvsR5}M?Z|B-XeDj-fqsEZ{p1Jgod~hW97ZI6tvh$ zWbaO0oCnDcIg-0fGG79>*>=k{6Hk%PoRN7iJ&_O1NKc=)YM9u+VOb^>pfaBjf_FC5*7IR0BF$ap|qU?+Qba>>#QEE(w^s6GV5Gm#V`0a%+2oJFI;Jye7Sl^H(;puykp# z*n@1DHTZyiwrf3BB~bjN!|1q$LO$wUWD%3r*g-ks7A?(vfy^TT&6Xetf%8qk*H+Qn ztlccEG~2YhWG!yxQO1|moC}4li=@oV3>n_ut8JPx{xWD;!bl{Ejgaetjv=-h@Ui^X z4~dl0-MgK~boQ|If}HM@>=Ixaz6AJ7y+?evWkpXj0K-J2B0bM%DB$l3i=O5^s(>59 z&kiAnic|*|wVga-Uh1S-$stoSt1Wftav^3*G_Sm7SnW_NSa} zU)J8;zkO2f6=6 zt%^jSo{ZdEyae3c;G^Z8_ngZt;!V6uUIj4yB^#)EJ$pLNP{FR3fZ$q4tuy}O1UDvY z@(i+pxGilk-wXdPsbgvbOOaM2$x72dWLg++_H`ZcXFsj6O$riUOkGxz3kiqfbJlmx z+qB(2TWPxl$W=W&SjdCJlE6l`P1`u?ZUcF9EzmM`XxxS40^g0|k6C2Sb;&EKfdsit4R~bKG5%5B zeh5ldwevL?da2J#FnZPu!EwX@JpfZff#jO<%H#czELoNQ*P8g|n1ip&osSM8l7Gol zP~t%eNMbLPk?FEknI7-=w>mugtnlCh=*F20!zjFfIAXR0MX}A+^UnQzOtV3E)Izfr zWXLx{6k9L75E0H02^h|PV6=IJ!7{z0-&2mGUY_(^$ph4v%1;dT^Txq?kEY)hdEoEH znXv^{%%j3D<}}rA#3s?wtn-Mi+q9$4&>aD6;Wr%W-w;ZsrC<3t_1GiJ4LvIePG=EY zP^wB!{*lx@!TU}s*t}crbX6LmP}yLm(k7Mx3VjQ3Yk9#JRwcT?H`V}%Ihf7o5z3SJ zw%nlCMV|DJ7Sx=FZ6L@yqRMCk0XL3<1D*5l;iwU@!D7v8k&&JbcA3}TjvBtyE{hVR zxq~^M7i*=(3JIshq(qA*b+Wrz$;1|(U^iBE&x6-gS=rxO#4GULpfZnB1biJ7eUxKm zZ(>S0KF+y8!ujsTOZ#lX&$+QOyq)*?@~bjt>%-?$gsS5^NV32R*8j@N4H|u^_I%cj zOvd>(Kc9$ZN#9$!nmF@3tkkObnED?Z zeKJ#{I!{YE)(2q9_W56i&5ZkWMFaO^udLLDGSv9Z%l;GNWu}kiCA=N}+@~;uF|6&) zj@TD3Rkwy!IpmA~VRuH>aN&1a#D9!`5gpMGrx&=Y=vE7-@_p(;7Pa0>1KjAmQv{C@ zO53bL1$+@V7_CNR{M0W2TiX1Xc14ENch6gz$%Zn|bpxceVocZN&ttQ-hO-b{_^tOF z)yr(OQMv22Ljs$xES?Mrm$Dr6ykqc4%o_a~OO92cCK&g$cw961`duKqW8wQtVAc?W zBK6yNlk$W!shhX*D}9PZf)ymWsKC=jeSB=ccK74%PTNli z?nj*E$S}$X)>?iGh6zPqV9oZ*Jw7$|AH6~Emv>@&aRsC+0X?%0gjUo&bUIkk}+J?l*tHtAN0M@R_vpP#*m$B zIzd%MhysB{D8q%SOn;M;?1R(9n?X%6Z`MRcNt#-gEWp%$`23LZsOz*~{`SXtV08DE z^$XAaU(J@6fal2>DQ|qK;}fCf0MR8Z=s`>7|4f zC|edxtUYV&UBtgV%0X$M!bA|JlfDzgVFaz618f;wMbV*bQ zNac!nKA<;@K@`+;{_{1aVvMpqIygu-0A}P?yQe#N)dUJ~re#f25xo7mltclO=aH_s@zirn4FlWqq>S79aDbV1Ed7)4HZ+i3cm{WhbCe()!h&t(I0-Nz{53`90Y!G*q zR8}G)o?9?;{(zZiV@?+wklv5Huosg~h?~)WCJEVthwoG@6@b3Eu(6zXrO#=C(y!nm zYczn(i$((S7TAT_Brs*&t!LiVV0?TDq`Ql`L}}r2Vw=){)Hn!dc9}!F>9t>tX3#TN z$bH0jllFiO9NX{Fo%Chj)Q)YT5A&Jvg085+09offv+o%$t)a_rgiy~V4zkVOE1#7b&c5Fb5&l?Mr~ya?%wZ4fwVzdMm&6 zC$UX4_j0Y#P=oZ{T8u-rAkA8ERA5R^ZRER5H(_162)*`FzThaEJr-u0l9o}#szNWoG|kXCFUY$-#jh1?FvM5B zMI$Um9!`0IDz^dZ|5FbED-@+qPJL9fw1?UM5U_DF7#`yfr(v=>WChWCF@;E95|KyJc?6BIy=MX~M|vABxT{m(9j&K;o_9x5=_a(7qG>2Y2k? z#(=&RXfox!@|}+ScC4Q_V&>kb2Tp&KQ135z!vxzTX{!)Or;f)zeVNF$zFT!mr3;{&=yPjdy#Kw zvJOYX#(5-dz*~ql%lOjpDl^_&daDtq5OK)0BwqYgspsp!55u>h7xN3>luR72zp(7Q z!x&lr^6Qgjru`qVRGi;6&*hT&Da$8aP3YvfOQ1(Y%3z-={*H7Rg|MZwBbAbBxdp8C zm(gf4HojNd!dsD{hNs*rXo)c?F#Dn4-z#lKo{(;KGz(VP3#2P#KtVQDBC;eA(R~y8=pnNB0^I5r? z7sTJbZY2#cdX6DdQ1-bszFvPMrCq z2)?jz@xfmrr+Xh~_oow-qW*W+7VitO#pMP_kq%!1V0fuK`?chSmUYVfolOvS60(E& zM`}1<1c=LFc4}9SWy@;HH@1jAp`&pTo(QPpQU*sNpls6apm2F{Hw zwt5@=ppCoF(Z;A0e%AjzfITTpo-)W~K$p?@5^zKFxS`L!9fBaMU%(Ud?%*%Rif(04 z{GZIq7x8;U_(dY{)U0WG!vzdX-b(=@p_0{v;i zgBL6+?1y+I7>A2dY!SHi4SA*j0S0-%5DzME!;SWe&JvZJ&q>^=9nG&@M1^EWW|NHKAQ&XRR72H+iT%&z>SEVW8Q9a|?%s_{xwL-7c`p|K{Lz z>-G~?I!TZTBXG9D&;Arg=EcBm1(d1Jn}x&PVCmeX`D@lulk#$lLT>PY?y{OXWVq?I zVd>X3+?J@DjrtRj%3R{F#J?>J;9~}$y%%1enpCg^qvtl>URbkBAiNMg_s}y8hY|)e zwJr2%8gL-F*(kP0YIbuq=sO)zKFc3$r?XI&xpC1h-Bae&s*9VQEx07FsEDRIfI zgY{7!ndJV%&m~#~rqan&zqHaL8w8e4n?8&BmZ)Dt#aaO z_aO5H*kM(+*q`PRRKPj46~Sj_Q3A6){mGOR!N zorpLOL`G%Te{W!L)ke$`c4DJ|&HZqIj1OiZkz;qfrtC7}pVWoE;%RR6ptft5^tFbWuLUr> za%Aa(NwXnn@d*yo7M8s+b@|0qj%sm`Zq8~|yI;*!m@7i)f618wkK?HlERs*>lz{&7 zs=%TE+de=q^*%$B|S+_P?YM!NINb9?amjnU-#`4PYL>?{A^=kRUvTR-!|LrM4UFX5+X7I2Swo zRw09-(bu_vmBK>lG2C8}@4uW-;$|m!&y@pX;wsGJ5X581jtR;*4iF#rJjtC{!TyQwA*}o!$8g!Zm;SDHB;BD8pw>KO~uc?wz;F&Em@1-FtS2Cvj zid+_*PAX3|@fY=U?_B{SJ?vk(zxcbOESs%mf1;W|M^kbqj#yKbmgCdAf4!{KP~&XY z{XzG=4};*|+@24hDf>BRm_YoEuwXy&{L`oXMs$|MM4v#^(0`;yPbL2*WX5k{DBAP? z*VS_-F8iKWWIDwpq1WN#{c{MI=P(Nkg82mq&B`wpw7tF~-`NXwxG4WYkAo*6_KLp{ zJ_8eJ>o2%1IpjOe587Uz_!DV6ednVvSieaZ1bH~kKi9$uW+N(>I8PK67B?}qmJZ_W zQd?~21qa!LDnHBgQ~_7K6p9z@0-Ov&%E`-EOoxw!aNRk)_oT8NP(uIp6Ytcm?j+JBfqFaVjIcYJ<3guleV!~gf0ohnGjP$z>GI!Y)%PuEchZ2^UewN=3^wh6WPL^)ZKuY z0uTq>L89`?EFF@UeXo`w4E2?@NW-OVw@eFw5|*xhWJ~N(8}J4Q!nSAW8aAem%#vz zt66{7W40X;`PU{2ykj6}>#$F3e8umm`*(xmrEbbPaA5Yon z;f2+w06rywI~P1s0goq1xUz|Ibe8!U)~6^nuRYPN3X4dXQsHE)rqm?(EUN?_g#K5; zlegqFy`r-e!HnQ$|f1&7NjQ~{)d~?SqcC2miV5^}czJa1)_9M(0X1`azN9OYF<1N`#O{{`f@T~h!6 literal 15406 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 F{tMXj*>eB@ diff --git a/private_gpt/ui/avatar-bot.svg b/private_gpt/ui/avatar-bot.svg new file mode 100644 index 00000000..2d810c57 --- /dev/null +++ b/private_gpt/ui/avatar-bot.svg @@ -0,0 +1,40 @@ + + + + + + + + + diff --git a/private_gpt/ui/images copy.py b/private_gpt/ui/images copy.py new file mode 100644 index 00000000..6705b57e --- /dev/null +++ b/private_gpt/ui/images copy.py @@ -0,0 +1 @@ +logo_svg = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODYxIiBoZWlnaHQ9Ijk4IiB2aWV3Qm94PSIwIDAgODYxIDk4IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNNDguMTM0NSAwLjE1NzkxMUMzNi44Mjk5IDEuMDM2NTQgMjYuMTIwNSA1LjU1MzI4IDE3LjYyNTYgMTMuMDI1QzkuMTMwNDYgMjAuNDk2NyAzLjMxMTcgMzAuNTE2OSAxLjA0OTUyIDQxLjU3MDVDLTEuMjEyNzMgNTIuNjIzOCAwLjIwNDQxOSA2NC4xMDk0IDUuMDg2MiA3NC4yOTA1QzkuOTY4NjggODQuNDcxNiAxOC4wNTAzIDkyLjc5NDMgMjguMTA5OCA5OEwzMy43MDI2IDgyLjU5MDdMMzUuNDU0MiA3Ny43NjU2QzI5LjgzODcgNzQuMTY5MiAyNS41NDQ0IDY4Ljg2MDcgMjMuMjE0IDYyLjYzNDRDMjAuODgyMiA1Ni40MDg2IDIwLjYzOSA0OS41OTkxIDIyLjUyMDQgNDMuMjI0M0MyNC40MDI5IDM2Ljg0OTUgMjguMzA5NiAzMS4yNTI1IDMzLjY1NjEgMjcuMjcwNkMzOS4wMDIgMjMuMjg4MyA0NS41MDAzIDIxLjEzNSA1Mi4xNzg5IDIxLjEzM0M1OC44NTczIDIxLjEzMDMgNjUuMzU3MSAyMy4yNzgzIDcwLjcwNjUgMjcuMjU1OEM3Ni4wNTU0IDMxLjIzNCA3OS45NjY0IDM2LjgyNzcgODEuODU0MyA0My4yMDA2QzgzLjc0MjkgNDkuNTczNiA4My41MDYyIDU2LjM4MzYgODEuMTgwMSA2Mi42MTE3Qzc4Ljg1NDUgNjguODM5NiA3NC41NjUgNzQuMTUxNCA2OC45NTI5IDc3Ljc1MjhMNzAuNzA3NCA4Mi41OTA3TDc2LjMwMDIgOTcuOTk3MUM4Ni45Nzg4IDkyLjQ3MDUgOTUuNDA4OCA4My40NDE5IDEwMC4xNjMgNzIuNDQwNEMxMDQuOTE3IDYxLjQzOTQgMTA1LjcwNCA0OS4xNDE3IDEwMi4zODkgMzcuNjNDOTkuMDc0NiAyNi4xMTc5IDkxLjg2MjcgMTYuMDk5MyA4MS45NzQzIDkuMjcwNzlDNzIuMDg2MSAyLjQ0MTkxIDYwLjEyOTEgLTAuNzc3MDg2IDQ4LjEyODYgMC4xNTg5MzRMNDguMTM0NSAwLjE1NzkxMVoiIGZpbGw9IiMxRjFGMjkiLz4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzVfMTkpIj4KPHBhdGggZD0iTTIyMC43NzIgMTIuNzUyNEgyNTIuNjM5QzI2Ny4yNjMgMTIuNzUyNCAyNzcuNzM5IDIxLjk2NzUgMjc3LjczOSAzNS40MDUyQzI3Ny43MzkgNDYuNzg3IDI2OS44ODEgNTUuMzUwOCAyNTguMzE0IDU3LjQxMDdMMjc4LjgzIDg1LjM3OTRIMjYxLjM3TDI0Mi4wNTQgNTcuOTUzM0gyMzUuNTA2Vjg1LjM3OTRIMjIwLjc3NEwyMjAuNzcyIDEyLjc1MjRaTTIzNS41MDQgMjYuMzAyOFY0NC40MDdIMjUyLjYzMkMyNTguOTYyIDQ0LjQwNyAyNjIuOTk5IDQwLjgyOTggMjYyLjk5OSAzNS40MTAyQzI2Mi45OTkgMjkuODgwOSAyNTguOTYyIDI2LjMwMjggMjUyLjYzMiAyNi4zMDI4SDIzNS41MDRaIiBmaWxsPSIjMUYxRjI5Ii8+CjxwYXRoIGQ9Ik0yOTUuMTc2IDg1LjM4NDRWMTIuNzUyNEgzMDkuOTA5Vjg1LjM4NDRIMjk1LjE3NloiIGZpbGw9IiMxRjFGMjkiLz4KPHBhdGggZD0iTTM2My43OTUgNjUuNzYzTDM4NS42MiAxMi43NTI0SDQwMS40NDRMMzcxLjIxNSA4NS4zODQ0SDM1Ni40ODNMMzI2LjI1NCAxMi43NTI0SDM0Mi4wNzhMMzYzLjc5NSA2NS43NjNaIiBmaWxsPSIjMUYxRjI5Ii8+CjxwYXRoIGQ9Ik00NDguMzI3IDcyLjA1MDRINDE1LjY5OEw0MTAuMjQxIDg1LjM4NDRIMzk0LjQxOEw0MjQuNjQ3IDEyLjc1MjRINDM5LjM3OUw0NjkuNjA4IDg1LjM4NDRINDUzLjc4M0w0NDguMzI3IDcyLjA1MDRaTTQ0Mi43NjEgNTguNUw0MzIuMDY2IDMyLjM3NDhMNDIxLjI2MiA1OC41SDQ0Mi43NjFaIiBmaWxsPSIjMUYxRjI5Ii8+CjxwYXRoIGQ9Ik00NjUuMjIxIDEyLjc1MjRINTMwLjU5MlYyNi4zMDI4SDUwNS4yNzVWODUuMzg0NEg0OTAuNTM5VjI2LjMwMjhINDY1LjIyMVYxMi43NTI0WiIgZmlsbD0iIzFGMUYyOSIvPgo8cGF0aCBkPSJNNTk1LjE5MyAxMi43NTI0VjI2LjMwMjhINTYyLjEyOFY0MS4xNTUxSDU5NS4xOTNWNTQuNzA2NUg1NjIuMTI4VjcxLjgzNEg1OTUuMTkzVjg1LjM4NDRINTQ3LjM5NVYxMi43NTI0SDU5NS4xOTNaIiBmaWxsPSIjMUYxRjI5Ii8+CjxwYXRoIGQ9Ik0xNjcuMjAxIDU3LjQxNThIMTg2LjUzNkMxOTAuODg2IDU3LjQ2NjIgMTk1LjE2OCA1Ni4zMzQ4IDE5OC45MTggNTQuMTQzN0MyMDIuMTc5IDUyLjIxOTkgMjA0Ljg2OSA0OS40NzM2IDIwNi43MTYgNDYuMTgzNUMyMDguNTYyIDQyLjg5MzQgMjA5LjUgMzkuMTc2NiAyMDkuNDMzIDM1LjQxMDJDMjA5LjQzMyAyMS45Njc1IDE5OC45NTggMTIuNzU3NCAxODQuMzM0IDEyLjc1NzRIMTUyLjQ2OFY4NS4zODk0SDE2Ny4yMDFWNTcuNDIwN1Y1Ny40MTU4Wk0xNjcuMjAxIDI2LjMwNThIMTg0LjMyOUMxOTAuNjU4IDI2LjMwNTggMTk0LjY5NiAyOS44ODQgMTk0LjY5NiAzNS40MTMzQzE5NC42OTYgNDAuODMyOSAxOTAuNjU4IDQ0LjQwOTkgMTg0LjMyOSA0NC40MDk5SDE2Ny4yMDFWMjYuMzA1OFoiIGZpbGw9IiMxRjFGMjkiLz4KPHBhdGggZD0iTTc5NC44MzUgMTIuNzUyNEg4NjAuMjA2VjI2LjMwMjhIODM0Ljg4OVY4NS4zODQ0SDgyMC4xNTZWMjYuMzAyOEg3OTQuODM1VjEyLjc1MjRaIiBmaWxsPSIjMUYxRjI5Ii8+CjxwYXRoIGQ9Ik03NDEuOTA3IDU3LjQxNThINzYxLjI0MUM3NjUuNTkyIDU3LjQ2NjEgNzY5Ljg3NCA1Ni4zMzQ3IDc3My42MjQgNTQuMTQzN0M3NzYuODg0IDUyLjIxOTkgNzc5LjU3NSA0OS40NzM2IDc4MS40MjEgNDYuMTgzNUM3ODMuMjY4IDQyLjg5MzQgNzg0LjIwNiAzOS4xNzY2IDc4NC4xMzkgMzUuNDEwMkM3ODQuMTM5IDIxLjk2NzUgNzczLjY2NCAxMi43NTc0IDc1OS4wMzkgMTIuNzU3NEg3MjcuMTc1Vjg1LjM4OTRINzQxLjkwN1Y1Ny40MjA3VjU3LjQxNThaTTc0MS45MDcgMjYuMzA1OEg3NTkuMDM1Qzc2NS4zNjUgMjYuMzA1OCA3NjkuNDAzIDI5Ljg4NCA3NjkuNDAzIDM1LjQxMzNDNzY5LjQwMyA0MC44MzI5IDc2NS4zNjUgNDQuNDA5OSA3NTkuMDM1IDQ0LjQwOTlINzQxLjkwN1YyNi4zMDU4WiIgZmlsbD0iIzFGMUYyOSIvPgo8cGF0aCBkPSJNNjgxLjA2OSA0Ny4wMTE1VjU5LjAxMjVINjk1LjM3OVY3MS42NzE5QzY5Mi41MjYgNzMuNDM2OCA2ODguNTI0IDc0LjMzMTkgNjgzLjQ3NyA3NC4zMzE5QzY2Ni4wMDMgNzQuMzMxOSA2NTguMDQ1IDYxLjgxMjQgNjU4LjA0NSA1MC4xOEM2NTguMDQ1IDMzLjk2MDUgNjcxLjAwOCAyNS40NzMyIDY4My44MTIgMjUuNDczMkM2OTAuNDI1IDI1LjQ2MjggNjk2LjkwOSAyNy4yODA0IDcwMi41NDEgMzAuNzIyNkw3MDMuMTU3IDMxLjEyNTRMNzA1Ljk1OCAxOC4xODZMNzA1LjY2MyAxNy45OTc3QzcwMC4wNDYgMTQuNDAwNCA2OTEuMjkxIDEyLjI1OSA2ODIuMjUxIDEyLjI1OUM2NjMuMTk3IDEyLjI1OSA2NDIuOTQ5IDI1LjM5NjcgNjQyLjk0OSA0OS43NDVDNjQyLjk0OSA2MS4wODQ1IDY0Ny4yOTMgNzAuNzE3NCA2NTUuNTExIDc3LjYwMjlDNjYzLjIyNCA4My44MjQ1IDY3Mi44NzQgODcuMTg5IDY4Mi44MDkgODcuMTIwMUM2OTQuMzYzIDg3LjEyMDEgNzAzLjA2MSA4NC42NDk1IDcwOS40MDIgNzkuNTY5Mkw3MDkuNTg5IDc5LjQxODFWNDcuMDExNUg2ODEuMDY5WiIgZmlsbD0iIzFGMUYyOSIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzVfMTkiPgo8cmVjdCB3aWR0aD0iNzA3Ljc3OCIgaGVpZ2h0PSI3NC44NjExIiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTUyLjQ0NCAxMi4yNSkiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K" diff --git a/private_gpt/ui/images.py b/private_gpt/ui/images.py index 6705b57e..791de71a 100644 --- a/private_gpt/ui/images.py +++ b/private_gpt/ui/images.py @@ -1 +1 @@ -logo_svg = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODYxIiBoZWlnaHQ9Ijk4IiB2aWV3Qm94PSIwIDAgODYxIDk4IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNNDguMTM0NSAwLjE1NzkxMUMzNi44Mjk5IDEuMDM2NTQgMjYuMTIwNSA1LjU1MzI4IDE3LjYyNTYgMTMuMDI1QzkuMTMwNDYgMjAuNDk2NyAzLjMxMTcgMzAuNTE2OSAxLjA0OTUyIDQxLjU3MDVDLTEuMjEyNzMgNTIuNjIzOCAwLjIwNDQxOSA2NC4xMDk0IDUuMDg2MiA3NC4yOTA1QzkuOTY4NjggODQuNDcxNiAxOC4wNTAzIDkyLjc5NDMgMjguMTA5OCA5OEwzMy43MDI2IDgyLjU5MDdMMzUuNDU0MiA3Ny43NjU2QzI5LjgzODcgNzQuMTY5MiAyNS41NDQ0IDY4Ljg2MDcgMjMuMjE0IDYyLjYzNDRDMjAuODgyMiA1Ni40MDg2IDIwLjYzOSA0OS41OTkxIDIyLjUyMDQgNDMuMjI0M0MyNC40MDI5IDM2Ljg0OTUgMjguMzA5NiAzMS4yNTI1IDMzLjY1NjEgMjcuMjcwNkMzOS4wMDIgMjMuMjg4MyA0NS41MDAzIDIxLjEzNSA1Mi4xNzg5IDIxLjEzM0M1OC44NTczIDIxLjEzMDMgNjUuMzU3MSAyMy4yNzgzIDcwLjcwNjUgMjcuMjU1OEM3Ni4wNTU0IDMxLjIzNCA3OS45NjY0IDM2LjgyNzcgODEuODU0MyA0My4yMDA2QzgzLjc0MjkgNDkuNTczNiA4My41MDYyIDU2LjM4MzYgODEuMTgwMSA2Mi42MTE3Qzc4Ljg1NDUgNjguODM5NiA3NC41NjUgNzQuMTUxNCA2OC45NTI5IDc3Ljc1MjhMNzAuNzA3NCA4Mi41OTA3TDc2LjMwMDIgOTcuOTk3MUM4Ni45Nzg4IDkyLjQ3MDUgOTUuNDA4OCA4My40NDE5IDEwMC4xNjMgNzIuNDQwNEMxMDQuOTE3IDYxLjQzOTQgMTA1LjcwNCA0OS4xNDE3IDEwMi4zODkgMzcuNjNDOTkuMDc0NiAyNi4xMTc5IDkxLjg2MjcgMTYuMDk5MyA4MS45NzQzIDkuMjcwNzlDNzIuMDg2MSAyLjQ0MTkxIDYwLjEyOTEgLTAuNzc3MDg2IDQ4LjEyODYgMC4xNTg5MzRMNDguMTM0NSAwLjE1NzkxMVoiIGZpbGw9IiMxRjFGMjkiLz4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzVfMTkpIj4KPHBhdGggZD0iTTIyMC43NzIgMTIuNzUyNEgyNTIuNjM5QzI2Ny4yNjMgMTIuNzUyNCAyNzcuNzM5IDIxLjk2NzUgMjc3LjczOSAzNS40MDUyQzI3Ny43MzkgNDYuNzg3IDI2OS44ODEgNTUuMzUwOCAyNTguMzE0IDU3LjQxMDdMMjc4LjgzIDg1LjM3OTRIMjYxLjM3TDI0Mi4wNTQgNTcuOTUzM0gyMzUuNTA2Vjg1LjM3OTRIMjIwLjc3NEwyMjAuNzcyIDEyLjc1MjRaTTIzNS41MDQgMjYuMzAyOFY0NC40MDdIMjUyLjYzMkMyNTguOTYyIDQ0LjQwNyAyNjIuOTk5IDQwLjgyOTggMjYyLjk5OSAzNS40MTAyQzI2Mi45OTkgMjkuODgwOSAyNTguOTYyIDI2LjMwMjggMjUyLjYzMiAyNi4zMDI4SDIzNS41MDRaIiBmaWxsPSIjMUYxRjI5Ii8+CjxwYXRoIGQ9Ik0yOTUuMTc2IDg1LjM4NDRWMTIuNzUyNEgzMDkuOTA5Vjg1LjM4NDRIMjk1LjE3NloiIGZpbGw9IiMxRjFGMjkiLz4KPHBhdGggZD0iTTM2My43OTUgNjUuNzYzTDM4NS42MiAxMi43NTI0SDQwMS40NDRMMzcxLjIxNSA4NS4zODQ0SDM1Ni40ODNMMzI2LjI1NCAxMi43NTI0SDM0Mi4wNzhMMzYzLjc5NSA2NS43NjNaIiBmaWxsPSIjMUYxRjI5Ii8+CjxwYXRoIGQ9Ik00NDguMzI3IDcyLjA1MDRINDE1LjY5OEw0MTAuMjQxIDg1LjM4NDRIMzk0LjQxOEw0MjQuNjQ3IDEyLjc1MjRINDM5LjM3OUw0NjkuNjA4IDg1LjM4NDRINDUzLjc4M0w0NDguMzI3IDcyLjA1MDRaTTQ0Mi43NjEgNTguNUw0MzIuMDY2IDMyLjM3NDhMNDIxLjI2MiA1OC41SDQ0Mi43NjFaIiBmaWxsPSIjMUYxRjI5Ii8+CjxwYXRoIGQ9Ik00NjUuMjIxIDEyLjc1MjRINTMwLjU5MlYyNi4zMDI4SDUwNS4yNzVWODUuMzg0NEg0OTAuNTM5VjI2LjMwMjhINDY1LjIyMVYxMi43NTI0WiIgZmlsbD0iIzFGMUYyOSIvPgo8cGF0aCBkPSJNNTk1LjE5MyAxMi43NTI0VjI2LjMwMjhINTYyLjEyOFY0MS4xNTUxSDU5NS4xOTNWNTQuNzA2NUg1NjIuMTI4VjcxLjgzNEg1OTUuMTkzVjg1LjM4NDRINTQ3LjM5NVYxMi43NTI0SDU5NS4xOTNaIiBmaWxsPSIjMUYxRjI5Ii8+CjxwYXRoIGQ9Ik0xNjcuMjAxIDU3LjQxNThIMTg2LjUzNkMxOTAuODg2IDU3LjQ2NjIgMTk1LjE2OCA1Ni4zMzQ4IDE5OC45MTggNTQuMTQzN0MyMDIuMTc5IDUyLjIxOTkgMjA0Ljg2OSA0OS40NzM2IDIwNi43MTYgNDYuMTgzNUMyMDguNTYyIDQyLjg5MzQgMjA5LjUgMzkuMTc2NiAyMDkuNDMzIDM1LjQxMDJDMjA5LjQzMyAyMS45Njc1IDE5OC45NTggMTIuNzU3NCAxODQuMzM0IDEyLjc1NzRIMTUyLjQ2OFY4NS4zODk0SDE2Ny4yMDFWNTcuNDIwN1Y1Ny40MTU4Wk0xNjcuMjAxIDI2LjMwNThIMTg0LjMyOUMxOTAuNjU4IDI2LjMwNTggMTk0LjY5NiAyOS44ODQgMTk0LjY5NiAzNS40MTMzQzE5NC42OTYgNDAuODMyOSAxOTAuNjU4IDQ0LjQwOTkgMTg0LjMyOSA0NC40MDk5SDE2Ny4yMDFWMjYuMzA1OFoiIGZpbGw9IiMxRjFGMjkiLz4KPHBhdGggZD0iTTc5NC44MzUgMTIuNzUyNEg4NjAuMjA2VjI2LjMwMjhIODM0Ljg4OVY4NS4zODQ0SDgyMC4xNTZWMjYuMzAyOEg3OTQuODM1VjEyLjc1MjRaIiBmaWxsPSIjMUYxRjI5Ii8+CjxwYXRoIGQ9Ik03NDEuOTA3IDU3LjQxNThINzYxLjI0MUM3NjUuNTkyIDU3LjQ2NjEgNzY5Ljg3NCA1Ni4zMzQ3IDc3My42MjQgNTQuMTQzN0M3NzYuODg0IDUyLjIxOTkgNzc5LjU3NSA0OS40NzM2IDc4MS40MjEgNDYuMTgzNUM3ODMuMjY4IDQyLjg5MzQgNzg0LjIwNiAzOS4xNzY2IDc4NC4xMzkgMzUuNDEwMkM3ODQuMTM5IDIxLjk2NzUgNzczLjY2NCAxMi43NTc0IDc1OS4wMzkgMTIuNzU3NEg3MjcuMTc1Vjg1LjM4OTRINzQxLjkwN1Y1Ny40MjA3VjU3LjQxNThaTTc0MS45MDcgMjYuMzA1OEg3NTkuMDM1Qzc2NS4zNjUgMjYuMzA1OCA3NjkuNDAzIDI5Ljg4NCA3NjkuNDAzIDM1LjQxMzNDNzY5LjQwMyA0MC44MzI5IDc2NS4zNjUgNDQuNDA5OSA3NTkuMDM1IDQ0LjQwOTlINzQxLjkwN1YyNi4zMDU4WiIgZmlsbD0iIzFGMUYyOSIvPgo8cGF0aCBkPSJNNjgxLjA2OSA0Ny4wMTE1VjU5LjAxMjVINjk1LjM3OVY3MS42NzE5QzY5Mi41MjYgNzMuNDM2OCA2ODguNTI0IDc0LjMzMTkgNjgzLjQ3NyA3NC4zMzE5QzY2Ni4wMDMgNzQuMzMxOSA2NTguMDQ1IDYxLjgxMjQgNjU4LjA0NSA1MC4xOEM2NTguMDQ1IDMzLjk2MDUgNjcxLjAwOCAyNS40NzMyIDY4My44MTIgMjUuNDczMkM2OTAuNDI1IDI1LjQ2MjggNjk2LjkwOSAyNy4yODA0IDcwMi41NDEgMzAuNzIyNkw3MDMuMTU3IDMxLjEyNTRMNzA1Ljk1OCAxOC4xODZMNzA1LjY2MyAxNy45OTc3QzcwMC4wNDYgMTQuNDAwNCA2OTEuMjkxIDEyLjI1OSA2ODIuMjUxIDEyLjI1OUM2NjMuMTk3IDEyLjI1OSA2NDIuOTQ5IDI1LjM5NjcgNjQyLjk0OSA0OS43NDVDNjQyLjk0OSA2MS4wODQ1IDY0Ny4yOTMgNzAuNzE3NCA2NTUuNTExIDc3LjYwMjlDNjYzLjIyNCA4My44MjQ1IDY3Mi44NzQgODcuMTg5IDY4Mi44MDkgODcuMTIwMUM2OTQuMzYzIDg3LjEyMDEgNzAzLjA2MSA4NC42NDk1IDcwOS40MDIgNzkuNTY5Mkw3MDkuNTg5IDc5LjQxODFWNDcuMDExNUg2ODEuMDY5WiIgZmlsbD0iIzFGMUYyOSIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzVfMTkiPgo8cmVjdCB3aWR0aD0iNzA3Ljc3OCIgaGVpZ2h0PSI3NC44NjExIiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTUyLjQ0NCAxMi4yNSkiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K" +logo_svg = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmcxIgogICB3aWR0aD0iNDY1LjkyMDAxIgogICBoZWlnaHQ9IjE1NC4yNDAwMSIKICAgdmlld0JveD0iMCAwIDQ2NS45MjAwMSAxNTQuMjQwMDEiCiAgIHNvZGlwb2RpOmRvY25hbWU9IlIgLSBDb3B5LnN2ZyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMS4zLjIgKDA5MWUyMGUsIDIwMjMtMTEtMjUsIGN1c3RvbSkiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIgogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxkZWZzCiAgICAgaWQ9ImRlZnMxIiAvPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0ibmFtZWR2aWV3MSIKICAgICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgICAgYm9yZGVyY29sb3I9IiMwMDAwMDAiCiAgICAgYm9yZGVyb3BhY2l0eT0iMC4yNSIKICAgICBpbmtzY2FwZTpzaG93cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VjaGVja2VyYm9hcmQ9IjAiCiAgICAgaW5rc2NhcGU6ZGVza2NvbG9yPSIjZDFkMWQxIgogICAgIGlua3NjYXBlOnpvb209IjEuODk3MzIxNCIKICAgICBpbmtzY2FwZTpjeD0iMjMzLjIyMzU0IgogICAgIGlua3NjYXBlOmN5PSI3Ny4yMTQxMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjI0MDAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTI3MSIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMTY5MSIKICAgICBpbmtzY2FwZTp3aW5kb3cteT0iLTkiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMSIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJnMSIgLz4KICA8ZwogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaW5rc2NhcGU6bGFiZWw9IkltYWdlIgogICAgIGlkPSJnMSI+CiAgICA8aW1hZ2UKICAgICAgIHdpZHRoPSI0NjUuOTIwMDEiCiAgICAgICBoZWlnaHQ9IjE1NC4yNDAwMSIKICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiCiAgICAgICB4bGluazpocmVmPSJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQmJBQUFBSGlDQVlBQUFBNTBlcFVBQUFBQ1hCSVdYTUFBQzRqQUFBdUl3RjRwVDkyQUFBQSYjMTA7R1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBZ2JwSlJFRlVlTnJzM2U5WjNMamVNR0FuMmUvdyYjMTA7VnNDY0NpQVY0SzBnbkFveXFTQnNCWmxVRUxhQ1RDcFlVa0dHQmc1UXdRNFZIUGorSk9lMWdtWXptZkJubUpGdDJiN3Y2L0lGSWVDeCYjMTA7WlVtV2ZwYWxaLy8zbjJmL0t3Q2c4dUxsdDJkU0FRQUFBTWpGYzBrQUFBQUFBRUNPQkxBQkFBQUFBTWlTQURZQUFBQUFBRmtTd0FZQSYjMTA7QUFBQUlFc0MyQUFBQUFBQVpFa0FHd0FBQUFDQUxBbGdBd0FBQUFDUUpRRnNBQUFBQUFDeUpJQU5BQUFBQUVDV0JMQUJBQUFBQU1pUyYjMTA7QURZQUFBQUFBRmtTd0FZQUFBQUFJRXNDMkFBQUFBQUFaRWtBR3dBQUFBQ0FMQWxnQXdBQUFBQ1FwZCsyK051ekZ5Ky9sWklRSUM5ZiYjMTA7ejUvUHFpK0hVZ0lBQUFEb09pT3dBUUFBQUFESWtnQTJBQUFBQUFCWkVzQUdBQUFBQUNCTEF0Z0FBQUFBQUdSSkFCc0FBQUFBZ0N3SiYjMTA7WUFNQUFBQUFrQ1VCYkFBQUFBQUFzaVNBRFFBQUFBQkFsZ1N3QVFBQUFBRElrZ0EyQUFBQUFBQlpFc0FHQUFBQUFDQkxBdGdBQUFBQSYjMTA7QUdSSkFCc0FBQUFBZ0N3SllBTUFBQUFBa0NVQmJBQUFBQUFBc2lTQURRQUFBQUJBbGdTd0FRQUFBQURJa2dBMkFBQUFBQUJaRXNBRyYjMTA7QUFBQUFDQkxBdGdBQUFBQUFHUkpBQnNBQUFBQWdDd0pZQU1BQUFBQWtDVUJiQUFBQUFBQXNpU0FEUUFBQUFCQWxnU3dBUUFBQUFESSYjMTA7a2dBMkFBQUFBQUJaRXNBR0FBQUFBQ0JMQXRnQUFBQUFBR1JKQUJzQUFBQUFnQ3dKWUFPZDhmWDgrVzYxVGF2dGY5VTJreUlBQUFBQSYjMTA7L1NhQURYUkNDRjVYWDJiVjlqcis2TEQ2MllHVUFRQUFBT2d2QVd5Z0swNnJiWC9sWjBlU0JRQUFBS0MvQkxDQjdIMDlmMzVTZlRtOCYjMTA7NDc5MnBRNEFBQUJBZndsZ0E2MExBZXBxdTdqbi84cnF5OXQ3L3RRVUlnQUFBQUE5Sm9BTnRPcnIrZk5KY1J1ZzNxKytIOS94SzFPcCYjMTA7QkFBQUFEQk12MGtDb0MxeGRQVzdwUjlOaXFXQWRReG83MGtwZ0h2cjBmQW15a1BUS1YyOGVQbnRXa3ExZG4zQ2ZXelU5T2RXMTN3aSYjMTA7OVpVMUFJQytFTUFHMnVvSWhrN2dkT1hIZTZHelgzVUFwL0gvZGNBQmZxNDN4OFh0QXJhSFQvaTc4T1d5Mm1iVmRsTFZzWE9wMlpqeCYjMTA7VTY1VlF1NmZ5aG9BUUcrWVFnUm9TK2hjM3pXNitpaCtQUzZNdmdiNDd1djU4MUEzenF2dFE3RlpRSFMvdUoydTZlOTdwbXNDaW45RyYjMTA7elN0ckFBQVpFY0FHMnVnY0hoVDNMOHk0V014UnB3L2d0czRjRmJkdnJPd2sydVhIT0lVVDhHdForNmlzQVFEa1JRQWJhTVBKUFQrLyYjMTA7Q3ZOMm12c2E0Q2VUSWwxQWJlRllzc0tkWmExUTFnQUE4aUtBRFRRcWprUzY3NVhjY1kwZFNJQ3VLbXZZNXl2SkNyODRVdFlBQVBJaiYjMTA7Z0EwMGJYTFB6eis5ZVBsdEZ1ZDVYWGYwOVV4eUFnTlF5eHNwY1Rvbm9QaG40Y1lkWlEwQUlEKy9TUUtnU1M5ZWZpdnY2TlNGVHVOaSYjMTA7N211djJ0SkpNZmpSdFNERlJWVW1yenVZMW1XSERuZGVwZkU4MDNQZFZYTGhId2ZLR2dCQW5nU3dnVmE5ZVBsdEViaGVMSjUwK0lRLyYjMTA7djVDQ1pDUUVQNzUwN0pqL0tPNmZrejVMOGFGWGw5TDVmV0ZhSkFBQWdJMEpZQVBKTEkxQVhZeXFmbXhFNm16bDMrVVRQL0phcXNOVyYjMTA7d3BROUp4MDc1dEpsQXdBQUdBNEJiR0FyTVdnOWp0ditFLy84Y011UG43c0NzSlhEVUlZN05vM0kyR1ZMcGl5c0pRQUFBR1JPQUJ2WSYjMTA7U0F4Y1Q2cnRiVnZIc00yOHNzQS93aWpzYVlmcW5YMlhMQmwxS0FBQWtMM25rZ0I0cWpnSGJaaC8rcTNVZ000N2NxeUROWmNFQUFCQSYjMTA7N296QUJwNGtCcTluMWJiVDhxR2N1UnFRUk5taFl4WEFCZ0FBR0JnQmJHQnRHUVd2Z1hSMnFySjk5T0xsdDlNT0hHczV3T3N6bDBXNyYjMTA7cXlwWDVSMzMwdFdmTFJZOEhsZmJubFJyallXaEFRQXlKWUFOckNYT1BUc3Q4Z2xlWDdncWtFd1kyWngxQURzRTJZc0JQandMYy8xWCYjMTA7NTY0ZTdkYzFuZDN4NDlNWTJCYkFidSs2WENockFBQjVNZ2MyOEtnWXZBNGQ3cHdXVDd1T3gzWVJSNFlEbXlzZFk5YnFtRExwNnNYTCYjMTA7YjBhY3dzOHVsVFVBZ1B3SVlBUHJtQlo1QmErRDY2L256OGZ4dUdieGUyQXpleDE0RURUaythK25IZGtuZE4ySnNnWUFrQjhCYk9CQiYjMTA7WDgrZmg0N1hxd3dQTGJ5T080bmZoMmtGUGdwaXcxYXlEUkRINFBwZ3AxWjQ4ZkpicUlkVGpzSU9vMHhQWkhtNHM2eGRLbXNBQUhrUiYjMTA7d0FidUZRUENyek05dkhCc3F3RXRRV3pZWE00am5NdWhYNXk0R09EN2FydlpjbGVmUW5xYTBnRHVMV3NIeWhvQVFGNHM0Z2pjS1M0bSYjMTA7OVRIalF5enYrWGtJWWk5R1VRSHIyNi9Lemlnc0dwamhzWTFkbnUrQnRVbjFaUkpIcElkdEZQOHJmTDk3eDUvTWxyKy9aL0ZBNFA2eSYjMTA7VnE2VXI4ZktXZ2hXWHlockFBQnBDV0FEdjRqQmtkUE1EL09oNlFRRXNXbERDRnhjRmQyZTZpS013czdxZGZjUVZDL3ltNE4vWFdFRSYjMTA7NXp6MVRxdTZMVXloZEtISVFiMWlJSG9tSlFBQTJpV0FEZnprNi9uek1MSm9XdHpPSzkxbGd0ZzBLZ1lWUnl2bGFiVHlzK1hSZStNaSYjMTA7djJCM1dlUTNYMnVaMmZGY0ZUOFdaWnNYUHdlb3IyTStBQUFBSUJFQmJHRFZ0T2p1YU1kVmd0aTBLazdITVYvNjBXenhUWHcxUGJjQSYjMTA7OXF2d0VDdXpPVnR6bTV0N0hxY1hBQUFBb0FFV2NRVCs4Zlg4K2FUNjhxcG5wL1V4QmdxQjllUVdNSDdsa2dBQUFBeVhBRGJ3M2RmeiYjMTA7NXlGbzlhNm5wM2NhNS9VR0hsZG1WaThCQUFBd1lBTFl3R0xSeG1tUFR6SE01MzBhNS9jR0huYmtXQUFBQU1pRkFEWU1YSThXYlh4TSYjMTA7bUd0NDRvclRVMWNKOTdXVDBjam5Nc0UrYnFydFRCWUJBQURvSmdGc1lGcjBaOUhHWlhjRjlONjYzUFRVYWVMOWxXMmZVSHd6WkMvRCYjMTA7dEFFQUFLQkJBdGd3WUQxZHRQRlR0ZjNyeGN0dm8ycDdGdis5Zk02bEswOFBUUlB2TDRjUjJLbU9ZU1o3QUFBQWROZHZrZ0NHS1FaeSYjMTA7KzdobzQ2amEvcG5yK3NYTGIrUHFYRit2L0QvMFNwWFBMNnA4SHQ0NjJFdTB5NzB3QWpyc3Q4WFRTaFhBRGlPd3gzSkpKKzlSd2NGeSYjMTA7blg3SHY5Y1I4dkgxSGYrK2JqbVBkL0dhN01ackVKUVAvUHAxVE9kRmVzK2xkVGJYY1JUYlFzdGxxWHhpT1pvcFAwK3V5MFlyYmREUiYjMTA7Qm0zUzJUMy92cWl1eGJYVXJ2MWFMdXEvUmRsWnJnL1hLVE9oSHB4TFNZRE5DR0REY0RzdmZYMnQvckRhenF0emZGODFFaWZ4WjJFVSYjMTA7OXV1bERnUDBVU2pUS2FmSk9TcCtCS0RhcUtOU1RHMzBPWFRxcS8zbFhCK1AyNmlYbHVySEhPNUg1VkpRSUd5cDEyUTRmT0R6dzVlYiYjMTA7bU5jWDIyem9RWWFsNjdLNE5wdVV4MWQzcEhXWWozNVdiZE9tMDNpb1pTMU94MVRHT24yYjhyVmNqdDZ0WE5PTGVFMHZjcjhlZGVXOSYjMTA7bHVxeWR5dmw2N0xhNWt2MTJDeVQrcVNOTWhDQ3hkTkVaV2V4N1NRb016ZXhEZ3h0dGxNUEhnRFc5K3ovL3ZQc2Z4dis3VmxWNFphUyYjMTA7RURyWEtkMk5EYWY5QVp6dVpmRmpGT2RGYkhpK3p5VndVK00xbmhVUEJHd2U2V2cvVTByeXYwNTNYYmZZMFRwUFdYNnEvUjYwbERiSCYjMTA7MVpjUENYYjFKblJnVTZaMTZ2WlA0bVByUkZtUGdaN2pXRC92WlZwRXIyS0FZZHJVS05QVWRjS0c3WU54M0pwb0k0VEE1NlNwSU51USYjMTA7eWxxOGxxRjhUUm91WTZIY1RLdnQ1TEhBWEZ2WG8vSjdxandYUjFlSDhsSm1YSmQ5TGxvT2xsYnA5TDhXUG5hamUzVnNTNDBidkQ5OSYjMTA7aXZYZ1hNc1k0R0htd0liaG1SYkRDRjRYOFR3dmloOGpKMjVjZnZvcUJ0bXVVcGFmR0doc1E1bG9QeFp3ekVnSTlzU2cxZC9GN2RzQyYjMTA7ZXhrZjdsNDh4dkJHenp5T0Z1M3pkUWx0Zy84V3R3K09tbW9qaE9EbGwrcXpUMlBBbFRUWE0rVFZlYlY5YktHTWhjOExJMDFEbVpuMCYjMTA7OGJxR2N3b1BXVU85RVBKdmNmdUdYODUxMmF1WUY4STFtYlo0WDgrKzNGUmJhRWVkTjN4L0N2bm43NVpHcVFOMGlnQTJES3R4TmkzNiYjMTA7dDJqalkzWml3MzB4Mms5QWl6NUxuYi9MTm9JRGllcXBTNi9tWm5QdkdjWEFkUWoySEhid0ZFSWc0Mk1JYnNUUmVYMjVMdVhTZFhuZCYjMTA7NHFHRThqN3ZVOXEyZEQxMzQvWDhXS1NmdW1LVHR0Y2lrSDNVb3pSZVRLMzFvY2c3YUgzZk5Wa0VTMDg4TlBybm1vN2p3NGhRYnRvYyYjMTA7NFBNdWxGL1hCZUIrQXRnd25BYmF0T1VPYXR2Q3VaOFVQeS9rQlgyVE9vRGRSdUNoVExTZnFleVFSM0NndUEzNEhQYmdkRUp3NDd6ciYjMTA7bzdGRG9EakRCd29odURZVHhONzhtbVphenNKMS9TdTJRYnVjdnJ2eEhQNHF1aGU0dmtzWVlYd3g1UElXSGtZc0JhNXp1YWFIc1I0VSYjMTA7eEFhNGd3QTJES09SRmhyZHI2WEU3WlFpU3l2Q1E2L0VlVDFUVHBYenFvV09WS3FndWJjdDJyLzNqSXM4Um9PbTlyR0xRZXdZaEFzUCYjMTA7Y3NNcjhqaytVQWo1WkNwNDgrVHJPaXB1MXpiSk9iRDZPcjdCc052RmNoUFR0Mi90NkpCZlpuMGFJYjl1ZVlrUDhISjlHQkg2S2lkcSYjMTA7Tm9CZkNXQkQveHRxMDBMd2VyV0QvTVZjYy9SWTE2Y1JTZEdadnJRZ1V1djNubkZ4Rzd6dXE0OWRDdnpFQjdkaGhPN2J6QTgxQkcvYyYjMTA7bjllL3JydXh6dS9DUTZKd2JiczR1blJXOUhmdG1NVUkrWU9CbEpmam9odHZCTDAyMkFiZ1Z3TFkwTytHMnJRUXZMNlB1ZWJvcTg1TyYjMTA7SXhJNzBTa0NNVFBab05WN1QraDRmeHpBcVhaaXRIQjhZQnVtQytuSzFBZHZMVFMzdG5CdHV4UmM3VlFRTzc2eE1JU0Z6M3ZkSG81diYjMTA7bjRTMjBZZWlPMjhFVFZWdkFEOFR3SWIrTnRaQ3cwZncrbUZoQk1hRk9UZnBreGN2djRWT1dzcHBSSm9jWlRyVzhldCtvS0FZenZRdCYjMTA7SVJCeWt2TzFpRUdiZHgxTTIyT2w2ZEhyRzlvdWJ6dDQ2TitEMk5XMm0zbjZsaDFOMzAzcnNtbVB5MGtZZGQyMVJlejNoamE5QzhCaiYjMTA7QkxDaG40MjEwQWdWdkY2emdWamNqandaU3dwNkpHVUFjYWZCVjFsVGZNN1ZpNWZmTG1TQjFreUsvczE1L1pEWE9ZNFdqa0diV2RHOSYjMTA7b00yQ2UvTGp1anhQN242Ui84am15Y0R5MDZ1K1RWc1JBOEN6b3JzTGI2b0hBWllJWUVQUENGNXZKQVJiUHNaWFJhRVBPamVOU0F3QyYjMTA7N21kNDdqenRHcjRkNEttUE16eW1XZEh0cVE5MmpENThzS3lWUmY3eitIWTVmUThHbXI2VEhwMUx1SVovRmQxK29QcEthUVQ0UVFBYiYjMTA7K3RYZ25oYUMxOXQ0YTE1cytxQ2owNGlrK2d3QjdQWU1kZHFIY1liSDFJZFI4S1VpMWFrOEozMjc3N0JIMCtyMTRrMGdpemtDL0NDQSYjMTA7RFQwaGVKMnU4VjdjVGlsaVhteTZicFp3WDNzTmxJa1VuYlNiRnkrL3pWejYxb3dIZXQ1N0ZoMnNoZnZ3M2UyOVhlMjkyZzE1OVAvWSYjMTA7NWM5S0tRa0FidjBtQ2FBWG5abXB6a3hTM3hjWUNxTWV6S1ZMaDRXUnlDbGZQdzJkcUZyS1F3ekl2RXAwenJSekh3b0JuNlpHdkYxViYjMTA7MjN5TjN6dG84SmhDK1pqS0NVbVpJdU51cGxiWnJ1NjRmcVF1Qy9WR1hYTW1ueFczRDVjdjRuSE1xM2JtL0pIaktaZnFtRkc4L2pzMSYjMTA7NTYvVWI5TmNGdDJlMHFoTnBTUUF1Q1dBRGQwUEdvUU9zK0IxZXFGemNGNmw3NXVxY3pHVkhIUlFDT1orVExpL2NWSGZvbUdEblQ2ayYjMTA7cWwvS3BmbzhCRTUySCtpOGhtdVE2MkpVZFFiVlBzZHJlN0hKUThXWXJnY3hMZXNLL2hndFhFOGI1eURWZzJSbGJTdGhTcXE3cmtNdSYjMTA7RHhrK0ZiY1B0YTVYanZQUkFIRURaZmttM2p0UHFtTzUzaURmenVLM3M2WDh1d2d5MTVIKzM5OG8yU0RkSGpxSGc1VnlQU3B1Zy9ITCYjMTA7YWI0b2orL1VmRDhaU1FLQVd3TFkwTjFPM1NoMjZJMW9xRmRZM0xFUXhLWnJRa2U1eXJzaDhKZHFGUForNms3dGtqTFJPWjkyL0pyZCYjMTA7RlNDYUxkWDdJWjJHRkZRTFFhbkp0bmt1cG12WXBqRWR4OFZ0UUNsbElMdnJBZXlybU5mbXhZL1JvVVg4T2w4NXYvRDlLSmJidXRzZyYjMTA7dThwYVBmWGxQUzVqMi9KN1huaHEyVnNaTGJ4NGFOVEVXeERUaE5OSEhTUk96M0tUd1BVYTk3clRtdXF5eGZXcnJkMGI4OVg4bnJMWCYjMTA7WmdEN2NxVWVYSmpIdW1oM0pZMFc5V0NkZFVXdTlSQkE0d1N3b1lOaUIrRzA2TWtDSlIzd01RYnVKcEtDanFsakdwRTZPclVwZ3ArZiYjMTA7WGU3VzdrbDFUTlZSMjlzdlliL1ZNUytDZEtrQ3NGME1ZQzlHdHMvV0NGVE83dm8rUGt3UDk4YTYzZ1E3S05MTzU2K3MzWjhYamhNOCYjMTA7TEpyZGtVZkNNWS9qMW9WMmE2cXlIQjRLSlE5ZTMxR1hoVURyZWFacGtMdWJXQWN1NnNHblhLdlpTcjhzMUlPSE5aWDd1Z1lQQUhTSyYjMTA7UlJ5aGU1MlgwQUg0VWdoZU4rMWRuSzRGdWlUMWlPVGtvMnhqeDI4bnczTmxmYW1ESFgvVS9kWkxERlNFdkhlVGFKZGR1U2VIRVlaLyYjMTA7Vk52L3E5TGdLS1R6Tm9HUjhMZlZGdG9sdnlkTXkyVzdpdGRQeWhyMitTYm1oWGxOWlMxTS9ST0M0K0ZhdmlsdUE3czVTNVhuanVzTSYjMTA7WGkrbmIvWGxmZVoxZW03Q0E1dC9oendaNnE4d29uMmJheFVlM01RcGl0N1hkTHdqVlIrQUFEWjBTZ3lnZnBRU3JYa2RIeUJBSjhRTyYjMTA7V2NxUnlhOXFPTXpCem4vZEl5bURIV2RWdmoxcHNId2tXNndzamtiT1ZaaU81ZmN3RjIxSTN4cW1OSmdWRmhmc1dsa0xHbDNuSXo0dyYjMTA7Q2VVa0JMSnZNazNqRkc5bFhEVTVwVlY4UXpCbGVvNTZXSFpDK3Z4WmJmK0tEMnhPYTdvT2Y2cW1BT29oZ0EwZEVEckY4UlZCaXpXMiYjMTA7NzJOY1BBZTZJbWtuclliOG4yVDZrQ1pHdW5HdmxFRzFTWk1ISG9OM3FRSS9vd3l2VFFoYy95dU9NcHpWbkpheitIa3BHWUZkWHg3NyYjMTA7MU5iNkh2RnpMM3A4bldZdGZHYkthOW1uZVpkRC9SNUdSby9pbXdEem1qOHYzTU91Q2dDU0U4Q0d6SDA5ZjM0Y0cva1dhOHpIVkJJdyYjMTA7NEk1MHNnQjJITEc2bCtFNThqVEo1b3l0TzhoNmp6Nk8zZzhCbTBYZ2V0N2c1NTVrbXJmNkl1VWN1eFBKV1p0NUM1K1orbUYxMXg4ZSYjMTA7aGNEMW16aE55S1NwaDl6eGMxTDNFMGFLRklBQU5tUXJ6QXNiUjExL0tNeDNuWnVkT0c4dlpDOEdyeTRUN3ZJb3czMlpQcVRsT3JIaiYjMTA7MS9HaWgrViswc2FpWDNFK1hxTVA2MmtYcGd3b2ZySW8zSjFwbk9xQnlVVUxaVytXZUpkZGYzaDAwZFliQm9VQU5rQXRCTEFoczg1SiYjMTA7bUdNNUJxN0RRbzFHWFFPNWRhWjJFbmJ5VXdTd0x3VmlXcjF2bFFsM04ydnBOQzVjeWFSbWtxQVdLUU9LSHZyZExkVkRncmFtdExwMCYjMTA7Q2RzWDJ5UTNVZ0lnTFFGc3lDY0lFRG9UL3kxdUYya1V1QVpTU2gyc0dDZW84MEtnSU1YcjhGT1h0emNFa3Z0aExnbHFrWElFOWt4eSYjMTA7MWlJRUxjK0s5Z0xZMW9Kd1B3UG9yZDhrQWJRdmpMcXV2cnlTRXQzcG9MUTBUeXRzSkl3R3F1cVpNRElyMWNPeE1ITDZPTUUrVWxBVyYjMTA7MjNXUU1wKzJkQTd6aEdraFB3cmM1RjdXTGkxNmU2K1FMcC92eU1QWGQvMHNUcG1UazFDWHBab24zUUtxK1Z3TEFBb0JiTWpGa1NUbyYjMTA7bEdOSlFBZE5pOXM1OVZQWUN3c3diaGx3TEJNY3gxV0dBWVNoU1JYa09HdnJCT0lEbm0xM0V4NFFDUXJla2c1NVUyZmVYeGRjZEx4TiYjMTA7UGsrNHIvREF4RlF6ZVZ3TEFBb0JiR2hkZkkzZTZPdnUrTlRpb2pDd2pkQVIvWkJ3ZjZHVGY3TGwzNmM0SjBnaEJORG54YTlCaDd0KyYjMTA7ZG1FRUt5MUk5YkJvTGlrQmdLNFJ3SWIybFpLZ00wTHdlaXdaNktJYXBoRUpaV0dqQUhaMUhDRjR2WlBnR0thdWJPdFNUV3R3MFhMNSYjMTA7Y0M5R1dRTUF5SlJGSEtFL0hSTHFKWGhOSDh3Uzdtcy92a0d5aVRMQjU1cytKQStwUm9VYTBRek5VTllBZ000UndBWjRuT0ExZlRGTiYjMTA7dkwramh2OXUyY3psQkFBQTZEOEJiS0RMUGpYd0dXOEVyK21MT0dMNUt1RXVueHlJL25yK1BMeDFzcGZnczgxL0RmQjAzbHdCQURwSCYjMTA7QUJ2YTUxWE96YzFxM3Y4YkN6YlNReWtEdjJWRGY3UHFwaXFiQXRqcWN4aVNKRlBPV1lBVUFPZ2lBV3hvV0pnenR0cU9sK2FPTlJKbSYjMTA7Yy9OcU82dGh2emZWOW0vQmEzb3FaYjdlaVFzeVBzVTR3ZWNLWHVkalZ4SkFJM1lrQVFBd1ZMOUpBbWpPMS9QblpYRWJQQXF2ejArcSYjMTA7ZjA5ZXZQeDJVbjI5MFRIWjJLVGF2aVRlNTlUb1R2b3FUQ05TMVRsWFJacHBQSUlRd0Y2cnZNUUhkL3NKUG5QbVNtWmpYeElBUEhqdiYjMTA7QzZQbncvMXY4VFVZeFczVmdUNEJBUHhLQUJ1YWFiaUd4dXFrMnQ0dS9UZzBUajlVL3pjdWJrY1NDd0k4WGZuaTViZndJT0RQbGJUZCYjMTA7MW9ta3BlZE9FNWFaOGdtL2U1VHcrQUVncC9aK0NENnZib0xSQUpDQUFEYlUzNWdOQVp2cEF3MVlnZXN0dlhqNUxVekpFcjVORVpENyYjMTA7czlyZlhLclNjOU1pWFFCN0wzVGE0d0tSajBrUndQNXNEbGNBTW1qamorSjlyWXliWURVQTFNUWMyRkJqbzdiYVp0VzNmMm5RMXFaYyYjMTA7ZkJPQzJOV1gzNnZ0OHhiN3V5eHVSOHBEcjhWZzgwM0NYWTZmV21hM1lQUTFBRzIxN3hkcjJZVDc2Ti9WOXFIYVhtbnJBMEM5ak1DRyYjMTA7ZWhxM2srckxzY1pzN1ViTC8zang4dHVzaUhQakxzMDNHSlRGajdrSHc5L2NOZmR2Q0Y2WFJuWXlJQ0VRL0RyUnZzbzE2c1dqUkhXaSYjMTA7QURZQVRiZnRRL3R4a3ZDK0NRQThnUUEycEczY2xzV1BSUnFwWDVpNllQZXVvUFBLZEFhemU2N1ZLRzZ6R1B5R0lVa1p3TjRQbmZ0SCYjMTA7cHQ4cEUzek9wWWRNQURUWXRnOERJRTRLZ1dzQWFKVUFOcVJwM0k1aTQvYVYxR2hjV1d3d0lsUEFtcUdyeXNCcFZYZUZhVVJTdlNseSYjMTA7VkR5OEFHcUsrYStucmh3QURiWHZIMXZIQmdCb2lEbXdZZnZHN2FUNkVrYjdDbDYzbzVRRXNMR1UwM0VjUFZCUGh1bDc5akk3WGdCNCYjMTA7cUgxdkhSc0F5SVFBTm16ZXNDMnJiVjU5KzA3anRsV2xKSUNOcFF3SUg4WlhyZStTWXZUMTVTTlRsQUJBaWpiK05MYnZBWUJNQ0dERCYjMTA7MHh1MW8ycWJWZDkrS2N4MW5ZUDlPSVVMOEVSaEdwSHF5MDNDWFI0OThlZFBNWFBGQUtpNW5UOHB6SGNOQU5rUndJYjFHN1M3c1ZINyYjMTA7ZDdVZFNwR3NIRWdDMkZqS1VkamxIWFhucVBxeW4yRGZVNWNLR0xBYlNWQjdXei9jdzR5OEJvQU1XY1FSMW12UWpvdmJ4Y2xNRlpLbiYjMTA7ME9Fd055NXNabGFrRzIxMmRFLzUzTmJWaTVmZkxsd3FZTUJDSFdnQVJYMXQvVEFGMXJTaGo3dXN0bm04cHZPNGZiL0cxYjN1ZW90eiYjMTA7bUJRQzhBRDBsQUEyUE53UUxLc3ZFeDJHN0pXU0FEWVdIdjU4VExTdm5WQnZWaDN3MmRMUGpoSWRJd0FKMnJZcmRUUzNqb3Y2cGdhOCYjMTA7aXZleFUya1BBSnN4aFFqYzNiZ2Z4UVZjd2p6WGd0ZjVNdzgyYkNpTzl2cWNjSmZsSS8vZWhBQjJ2czRrQWRBRHh6WFZqNzlYOTlsUiYjMTA7dFIwTFhnUEE1b3pBaGhYeDlidlFpRFZkU0xlTWloK3ZZQUpQRXdMRXJ4THRxMXlxVHc4UzFLVTNPdjJEc0NzSlFGbHJxZTEvbExqZCYjMTA7SCtZclAzTHZBb0Iwak1DR3BjWnJ0YzJMMjduakJLK0JJVWs1d25uNXJaVXlzMk1qWHhiamhZZk5sYlhhSENYY1Y1amZlaVI0RFFCcCYjMTA7Q1dBemVHR0VZTFdGUnVaZlJYMXozd0ZrSy9VMEluSDlnS0JNc0RzQmJJQjBBV3dqc0grVktvQzlHSGw5TFVrQklDMEJiQVlyckRaZSYjMTA7YlNmVnQrZUZlYTRCVWdhS3k1V3ZHM3Z4OHBzQU5rQTZSbUQvM0I4WUZlbmV2RHlwN2xsenFRb0E2WmtEbTZFMlZzTklpMmxocXBBKyYjMTA7dVpBRXNKVVFLUDZZYUY5bG92bXZQN3NzMlpzWGFSNENqenJhbmlpWDAwTHdpZzYwY3d6YXFLL3VPWkdjQUZBUEFXd0dKWXk2cnI1TSYjMTA7cXUydDFPaVZTNjlyd25aQ0dhcnF5REIzNTM2QzNZWGdkWmxnUDBaZjUyK2VhRCtqbHRzSGsvanRmZmwybmFEZis5akdnRHBjSjh6diYjMTA7cFRtYS8xRW0ycytadGlnQTFFY0FtOEdJbzY3RHlBanpYUGZQVkJKQXNyTDBJY0Yrd3NqclNZTDlDR0FQUjl2ejhyNUxzSSs1eTBpTiYjMTA7VXVhdmNiWE5KR2xTMGhNQWFtUU9iSG92em5VZGdpQVdhZXluTVByYUs1dVFSc3FBOGRiVGh4ak4xZ256UlB2WmIrc0U0dHRaT2FVRiYjMTA7L0NMeDlEUkhDZk05QUVEdEJMRHB0ZmhLY0dqd3Y1SWF2UlRteHkwbEE2UVJBeVNYbVJ6T3pCWHBoSG5DZTNaYmk4dFoxSTZ1T0V1MCYjMTA7bi9DQThWaHlmdGVuZHFTNkRJRGVFc0NtbDhKMElkVVdPdFh2Q2dzMTl0V25GeSsvSFJtaENjbE5NemtPMDRkMFE4bzZ1SlNjOEtCNSYjMTA7d24yOWErT2hVZldaby9obXBNVWswNlpydUhjYnNBTkFid2xnMDdmR1cxbHRzOEowSVgwWHBnMFpTd2FveFdrbVpYenVVdVN2dWs0WCYjMTA7Q1hkWHRuUWFSaTNTRlJlSjl6ZHJLb2dkQTlmVDZ0dS9DNEhXbE9tNm1Dcnh0ZFFBb004RXNPbEw0MjBjQTlkZkNpTTYrdTZtTUVvUCYjMTA7YXBQSk5DSlRWNkpUcmhMdDUxVkw4L0lLWU5NVnFRUFk0UzNGOHpEbFhsMWxMNzRWR2VyMEVMak9NY2c2VDdTZnh0dW04WnFGL284SCYjMTA7QWdEMDNtK1NnSzRLSXptSzIxWFV3MmEwOVhDTVRSc0N0WnRXMjRjV1AzL21FblRLUE9GOU9NekxPMm40K010RSszRnZvbFpWK3llTSYjMTA7bUs1ajEySEt2ZU00a2pmVXZ4ZWJ2RjBSMithaldLWU80dGZjcC9LYko5clBZUWdvTjlWR0RXK2RGcmR2VEprcUVZQkJFTUNtVTJKaiYjMTA7TFd4SDFiWXZSUWJuck9vWW1CY1g2amRyOGJPdkVrOUxRVFA1SmRYYlR5R0lkdEpnRUdoY0pBcSt5N2MwSkN4Z1hjZUkyeEFJZlIyMyYjMTA7SWdiS3cxdHY2K1JyYnovRytxdG80QUZjWEtUK25lUUdZRWdFc01sV0RGWWZGRDlHY0JobHpVUVNRUDFDSUs2cWc2OWFxbmM5cE9xZSYjMTA7bElIYm5aZ0h5Z2JhR2VIMSt4T1hqNDZaRmMxTkdSSEtZOStEMHlucnI3QXc1bWxkRDdQaWZPWFR3aUFlQUFaSUFKc3N4RmNPRjRIcSYjMTA7ZzhKSURuNFZSbC9QSkFNMEpnUVIzN2J3dVZOSjN6bXA2K2JET0pWQmJWTkdMUVdDVXIxK2Z5WWIwR0RkL0VFeUpETlBYUitHUVRncCYjMTA7ZzlpeG56UXBMTlFJd0lBSllOT0sySEVzQzZPcldkOVVFdENSK20yMytIVlJ1UEtPZng4ay9NeFo4WE1RTVFUOWxqdlAxeHQwcGtPWiYjMTA7YXpxQWZiWGh2S3ZMNmJ1YS9xTWk3U0o5QnpHNHVucWN5K2xmRE9tQld3Z3lWMmtTRnY1TU9Tb3dqRENkaCtsRXFxL0pwaFNKN1kvdyYjMTA7bW4vcVFKRDVyMm1xdklWeVVkYzBJa05NejR2RTg0b3ZGc1o4WCsxN3NtVjlGZTV0NDBMZ0dnQ0taLy8zbjJmLzIvQnZ3MmpJVWhMeSYjMTA7aEFiWVlqc29MRGpDMC8wL2l6ZXVYZDVteFladk1WUnAvRXdLTnAvdURYZlduejNobk9aRnN3OFlQMVhITjM3Q2ZlVkxCN0xHZzBHTSYjMTA7cFVYUEZsYi9IZTZadTB2ZjF6RmllTGIwL2VyRGoza0ltSzF4UFVLZ3VjNEhIcGZ4T09jUEhkOEQ2Ym1Za215dnlldDh4L0VzWDg4MiYjMTA7cnU4djEzdmRoMFl4K0w5ODdNdjlnT1VIUitIN1ZBOHpsdWRnL2lWdkZqK1BucjE0cUozUWw3SVd6eVdzQmZPWE8rOC9mdC9tb1dHTiYjMTA7OSs4d0ZWZDQ0SG02enZHdHZKRjZWTFE3d09kcXRYd1Z2ejZvbTYyVGR4K3BPMWIvZmRoQTNiRk4yYnV2M2x1dFUwWUpyOS95dFpnLyYjMTA7ZEYyOHJRcjBtUkhZSkJkSEg1WkxtM25hMkRwd0lYZ05yV2g2R3BFaHpuODlMZHA1OEhINGhJREJzelhQbzg2OHNuOWZleUx4Nk1sTiYjMTA7elRwMGZkODk5ZnEyK01Cb2RRN21oMFlkdnk4ZVhpdWpMMlV0QktsT1cxeW5JRW03YnFsYzUzS3ZxeU52N01WNjhXMnNwOEo1MzlXZSYjMTA7M1MzeTZ5L3RyZVN2dTlMbjNacGw3enp6dXVPc1dHUGRoUllYejF5K0ZvZVBIT1B2Z3RoQVh3bGdzelVCYXhvZ2VBM3RtQmJOQmJCdiYjMTA7UWxCR2tuZFR5d3QvNW5EK0FnWTBiVngwNHkyVVZaZXh2NUJUZmQvVXZPTDZTQUN3b2VlU2dLY0tBZXZ3Nm1KNFhiamF3bXRML3kxdSYjMTA7WDJOOHEyRUcwQjl4YW9HcmhqNU84THI3SmdNOTc4OHVQUzNVejdNTzVyM3Z3ZXZjM3FxTDAwZjBvUngvVWpJQTZDc0JiQjRsWUUwRyYjMTA7UnBJQVdqUHIyZWRRa3hjdnYwMkw1aDU0NU1UREY5b3lMbTduK3UyQ0xJUFhTMDQ2bmhmV1hrTUNBTHBJQUpzN2hia093enhmQXRaayYjMTA7WWk4dUFBTTA3N1JubjBPOUpnTTczNnNZdUlmR3hXQndXZVFmeE00OWVMMFkwWDdXMGF6d2ZpbDRmYVprQU5CSEF0aDhGMWE5cnJaeCYjMTA7dFlWRllVTGpNc3lwRnhhcEVMQW1Gd0xZMEU2blBnU1c2dzZPZkxaUWEyL3l5N1FZVmdCbDRxclRjcGtMZzAzS0l0OGdkaGdaZk5DUiYjMTA7T241Y2RHZEUrOEtiS20zVlF3RDBuZ0QyZ0lVUnJVdlRndnhkYlIrTDJ4V2FkNlFPR1JwSkFtak5hY2YzVDdQR1JmZUNRSnU0TlBxYSYjMTA7SEN3RnNYT2F3aWZVQWYvdTByUVdjUzdzNDQ0Y2JramYzOVZCQUF5RkFQYkF4TG1zcDlVV0dtam5oV2xCNkk2UkpJRFdDR0N6dGhnRSYjMTA7S290K0I3SER1UjI1Mm1SVTdrSVFPN3l0OW1jR2h4TVdFeHpGTjNpNmxvN1RUTkx3SVdGS2xvTTQ3Y21xQzZVQmdENFN3QjZBT05KNiYjMTA7R3FjR0NYTlp2NjYyUFNsRHBxNkt1MGNRalNRTnROYWhyM01ha1V2VGgvUXl6K1ErcmNFMndqbVZNVkFQT1pXNzYyb0xJNGovVmR3RyYjMTA7a1pzdWYrRXoveFZHWFhlNVhvOXArQ25UdzNzZnAyUzVyLzV4UHdXZ2wzNlRCUDMwOWZ6NWJuSDdDbTlvZ0FsVzB5VWh2LzU3TVdvbiYjMTA7TENoYTNJNG8ycFUwMEtwUUpsL1hzTitwcE8ybkVNU09DL0NHdk5PWHQ3M0N5TWR4RE5CRHJtVnZIdnNCMzkrK0xHN2ZGaWhyNkJPRSYjMTA7QVBrc2x2SFRQajJNREVINE9NM2loMHdPS2F3dGNLenVBV0NvQkxCN0pnYXVqK05tTG11Nktyd3hFRWEzWGNUWEkyZVNCRnBYVndEYiYjMTA7OUNFOUZnTnA0VTJ3MEM2WmRMeHQ4cjdhVHJ3eFFNZks0T21pbm8zOWhJUGl4OENBVWZHME45eEM4UFE2ZnAzM1BaaGFuZDlpcmFCcCYjMTA7MGQ2QW9QQlc0dVFKYzEzUDVYb0Era2dBdTBkaW8zUldtTk9hN3R1Sm5ZVURTUUhabU5Xd3owdlRNQXhEREFTRmVqMEVzc2RGZDk0TyYjMTA7dTRuM294TjVsUjZVdyt0WWw4K2t4dHBwRnRKcVZOVmZrNkxaQVVKUERWd3ZxS2NBNkNWellQZEExYUFheFU3aGZ3dkJhL3BqdjhyWCYjMTA7WThrQTJYVGlRK0RqYytMZHpxVHNzUEpRdFlXQXpLajY1OHZpZHFHMHl3d1BOUVNPd3Z5M1lUcXIzVEFmcnVBMURMNyttaFMzbzlYZiYjMTA7MUZodjNjUzY1L2RRVDI0UXZBYUEzaklDdThQaWlPdVRvcDVYdWlFSG9iT2c4VTVYaEpGWnV3TTR4NU9FKzd2WThtOS83MENhemVXYiYjMTA7WDhXcEI0NlgyalBoalp1eStERzFRZmhhOTBqSG01aVA1bkVMMzE4a0RsYjM1ZnAyb2J3cGE5UmRiMTNIZG1tWTZtNFU2NnlqV0Y5dCYjMTA7OGxiSm9nNmFoUzJPOXU1aVdYMnM3T1ZlZDZ3N0xkUzB5UC9CdXpuU2dkNTY5bi8vZWZhL0RmLzJyTHJKbHBLd0hUMlpTeExXOGNZSSYjMTA7bENmWEQ2RnhmYmhoNSt5WkZBUXlxczhXd2V4bFQybC9MdWJzWGE3blpsSVd1dHRXdWNQdk9aVHJ1UEI0TUNydW5sdDhIamYxRUFBOCYjMTA7a1JIWTNXdnNoY2JRTkdHREQzSjNYQmlGRFRCSVMzUDJMcHRKR1NERCtrcmRCQUExTVFkMmg4VDVnTU5JSXNGcmhpVE1oVzB4UndDQSYjMTA7L2pDZEN3Q3dOaU93TytMcitmTXc1K2hiS2NGQWxZVTUzUUFBN3VzcmpJcTdwNjFZekN2L2s3Z29ZWnRTTGp5dmpRZ0FQU2VBM1kwRyYjMTA7NmJTd1VDUEROcE1FQUFEZit3Yi9TN0NiU1l2SG4zVDBkWnhxQ0FEb01WT0k1TjlBblJhQzF3emJWZFV4TWJJR0FLQWZUQTBIQUR5SiYjMTA7QUhiR0JLL2h1MU5KQUFEUUcyWENmVjFKVGdEb1B3SHNUTVVGR3dXdm9TaW1rZ0FBSUdsZm8yeng0NDhTN212dWFnSkEvd2xnNTltZyYjMTA7REsvVm5VZ0pNSDBJQUVBTldwbkdJeTQybVhJQlIvTmZBOEFBQ0dEbmFWcHRPNUlCMmx0Z0NBQ2d4OHFldE8wTWRBQ0FBUkRBenN6WCYjMTA7OCtlaFViY3ZKYUM0S2N4L0RRQ3c2aXpCUGw3RjBkQk45blBLSXYwVWlRTFlBREFBQXRnWnFScDF1OVdYWXlrQjM1MjhlUG5OYTZFQSYjMTA7QVBWb2JLQkFuQ0t4anM4VHdBYUFBUkRBemtzSVhwczZCRzVIWDVzSEhnRGdWL05FKzluL2V2NThGZ2ZSMUtiYWYramp6R3JvNTl5OCYjMTA7ZVBsdExqc0FRUC85SmdueVlQUTEvTVRvYXdDQXU4MFQ3dXN3N0svcWk0U0JBOU5VQWVIWXR6a3FidWU4M3FzcEhXYXlBZ0FNZ3dCMiYjMTA7UG95K2hsdEdYd01BM0c5V2JlOFM3bThuN3UvZDEvUG5sM0gvMThXUEFQSDFpNWZmN3B5cUkwNE5zaGpCWGNidnc5Y20xdlN4VmdvQSYjMTA7RElRQWRnYU12b2FmVEl5K0JnQzRXOVZPQ3ROKzFMWDcvZUpIOFBuZFVuOGx4NlFRd0FhQWdUQUhkaDdDNjNWR1gwTlJYRldkTXFPdiYjMTA7QVFBZTlubmc1Ly9KZ0FjQUdBNEI3RHdZZlEzS0FnREF1b1krK25naUN3REFjQWhndCt6citmT3lhR2FPT01qZDJZdVgzN3dLQ2dEdyYjMTA7dU5CbXVobm91WDlLdGRna0FOQU5BdGp0RzBzQ1VCWUFBTllWcDg4WTRyUnJJV2cva1FNQVlGZ0VzRnNVRjI5OExTV2dlRzhrRFFEQSYjMTA7azRRQTl0WEF6bm1zelFnQXd5T0EzWElEVEJMQTk0NlhoUnNCQUo0Z2pzSU9pOEVQWlNxUk42YWJBNEJoRXNCdWx3WHI0SFlralZYayYjMTA7QVFDZXFHcERYUlMzZzJMNkhzUU93ZXVwS3c0QXd5U0EzWks0ZU9PZWxHRGcvcXc2SXpQSkFBQ3dtVGdxT2ZRdCtqaWRTRGluM3dXdiYjMTA7QVdEWUJMRGJNNVlFREZ6b2tFd2tBd0RBZHVKSTdJTnErN01ucHhSR2xMOFA1MlN3QXdEd215Um9uc1ViNFR0VGh3Q1FhMXN0ck0xdyYjMTA7MFBUblZ2ZkZVdXF6UmY0SjdhcmptSDhueGUzODJEc2RPNDB3d0dGYWJTZGRhaWRXYVQ1cjZacXJNMkM5TWhydTZTRU9zMDZaQ1E4RSYjMTA7cnowOFkyRGxvNDExeVM2cWNyYjIxTW9DMk8wWVN3SUc3ZzhOQWdBeUZocnloNUtCTHFyYVdQUFEzNGlEWmtJUXV5enlEbVpmVmx0byYjMTA7RjA3alNQSXVVbDlBWm1JZE9DbHU0eTg3Ry94OStQSTU3S1BEZFJPc1k3Y0w5ekVCN0haWXZKRWgrMVExQUU0a0F3QkFmZUlJNW1uYyYjMTA7UWpCbVZOdytuRmxzVFhkWVE2QTZIRk1JQk0yTDI1RlhNMWNLU0MzV2Q2R3UyZmJCM2F1d1ZmdjdkMXh2QUdpSkFIYnpGV2xaV0x5UiYjMTA7NFFyQjY3RmtBQUJvVmh5WkhiYlRPL29vbytyTGFPbEhxLzllMXlKQS9jKy9qVndFV2pBdDByNTFNZzMxcENrd29UMEMyTTBiU3dJRyYjMTA7NnJQZ05RQkFmcGFDMndDZEZoL0lwWDY3SkFURHcxUk1VeWtNN1hndUNScXRTQzNleUZDZEZSN2VBQUFBVUsram12WmJTbHBvanhIWSYjMTA7elRMM05VTmsyaEFBQUFDYXNGdlRma2VTRnRvamdOMnNzU1JnWUFTdkdZVDRxcUs4M3F4cGZPVWRBQUFXRG1yYTc2NmtoZllJWURmayYjMTA7Ni9uemNXSHhSb2JsanhjdnY1MUlCZ1ppVkczdkpFT2pab1g1V2dFQStGbGRnZVo5U1F2dEVjQnV6bGdTTUJBM0liKy9lUG50VkZJQSYjMTA7QUFBQXNBMEI3QWJVdEFvdTVPaXkybzY4MWc4QUFBQkFDZ0xZelpoSUFnYmcvWXVYMytSMUFBQUFBSklSd0s3WjEvUG5ZZjZsMTFLQyYjMTA7SGpzcmJxY01tVXNLQUFBQUFGSVN3Szdmc1NTZ3A2NUMvamJYTlFBOU5LMjI2K0xYaGFCTUNRZmM1WDIxSGFneklBdlhOZTMzVE5MUyYjMTA7VS9ONEh5dFhmajZxdHIxY0RsSUF1MzRDMlBSTnVIRlBYN3o4TnBVVUFQUlJ2TWM5ZXArTGI5ck5xbTFmcXNHZzY0ekpPcjhYNjR6LyYjMTA7U2pHbzFVVzF2WklNc1BZOWJGNnNPZlZ4ZFI4YlYxOCt0bkdjQXRnMWloZDJSMHJRQTJHMGRSaHBIUUxYRjVJREFMNDMrSytyOXQ2MSYjMTA7bEFDZVVHZElDS2pYdktiOTZnZERmZVhyVVFMWTlacElBanJvS2xaSzgzaVRuZ2xhQXdBQTBBR3ptdmFyVHd3dEVzQ3VTUng5dlNjbCYjMTA7NkppckZ5Ky9qU1FEQUFBQVhST21RL2g2L3Z4VDllM3J4UDNrcWRTRjluaC9xVDdtdnFhTFpwSUFBQUNBRGd2eG1NdEUrN3FwdGlOSiYjMTA7Q3UwU3dLN0IxL1BuWldFeEg3cHBKZ2tBQUFEb3FqRGZmTFVkVk4rK3FiYXpEWGNUcHRiOHM5cEdwdFNFOXBsQ3BCNFRTVUJIelNRQiYjMTA7QUFBQVhSZW4vUWhiR0dnWUF0cTdhLzZkZmpGa1JnQTdzVGo2K25DRFB3MnZwZXhJUVZwMEUrWUxrd3dBQUFEMGlWSFUwRzBDMk9sTiYjMTA7dHZpN0Q1S1BGbTExUS85Ni9qdzh6ZDRWQkllTi9WR1ZuNU50ZHhJZnBBWmZFaDVibUVNd3pDVjRuYUx4SDQveGkwc09BQURBWTh5QiYjMTA7blZEVklSOFhtNDIrdmt3UnRJQXR6YmJJKzZQNDl5UEpDQnRMTWlva3ZQSll3MnVQMTNHL3FVYXVYTHZjQUFBQXJFTUFPNjNKaG44biYjMTA7ZUUwTzVwdjhVWnhMTEFTMUxGd0tyTVVybkFBQUFLeExBRHVScitmUHc2dlZleHY4NlZWY1dBRGFOdDhnMzQrTDI1SFg1bThIQUFBQSYjMTA7SURsellDY1FwMCtZYlBqbnAwdmZYeFdiQmNGaGEwK1pjaURPZHgzZUhIZ3Q1U0FabzVJQkFBQmdoUkhZYVV5THpVZWdMZ2V3NTVLUyYjMTA7bGx5dCs0dHh5cEJaSVhnTlNiMTQrVzFvODBKZnV1b0FBQUE4UmdCN1MxL1BuMCtLelJadVhGZ2VjVGVYb3JSa3ZrWmUzNjIyTU9yNiYjMTA7dkxoL3Z1dGRTUW1zeVVLT0FBQUFQTW9VSWx2NGV2NzhxUHJ5YnB0OXJJeTRDOEhzb1k1cS9WVGNqa2EvcU5Ka3ZwVEdvK3JMOG5ZUSYjMTA7TjFPdHBEVi9JSitIb1BTazJzYkY0MjhhSEJRL3YxVUFyT2RHRWdBQUFNQ3ZCTEEzRktkUm1HNjVtOVhYcDRjNC8ybElnL0dMbDkvdSYjMTA7UFBjWXpKN2ZrZjZqNGpaWUdoNGlsSVdBOXJibUQveGZTT08za2docU5jVDZQNnNSMkVzUFRNTzlaYmY0OGVDMGlQL2UzM0RYTnl2WCYjMTA7ZDdaMHphK2ZzdjVBeG0yaTNaaHVpelJiL0h0aG16ZlZybGJ1VWIxTHY1cmJxb3M4dlp5djk5Wk04K3VZem1HYkRYQ2FvMjNMUTdsUyYjMTA7SnZhZlVGZk00alc0dUsrTjNMTTZJbnkvazdpT21DK2xvYnpiN1BVdVY2NXh1ZlRmNjlSQkR6bGI2YjhzMTFYejVZRlFIVTY3UlgxZCYjMTA7YnBCbWx6RTlsdXZ2aTY2bkM0L2U2NWZ6eStMZmRaVzNSVDE3M2VYNzB5UHQvbTNhcnZlMSsrZXhqdEp1M1lJQTl1YVZ4R3lMaHRhZCYjMTA7bmZlUW1hdDkzeVRZYjFlRUcyeTVTYU55S2JCOXVuUk54c1Z0c0ZVdysra2V1dm1Va2dlb3FkNTUxZks5ZlBFUWRKdmd5V04yVmhyQiYjMTA7aHl2SHNiZ2Z6aFpiN3NHVzJPaGZUcnM2Nzd0N0svdS9LLzJ1WW41YXBOOGdGMFNOMTZWY3VqWTdDZEw4MWRMK1F6NmRocTJ1UEZwOSYjMTA7eGppMjU1b1d6bW02eFhFdjBqeHMrd25xaXNPbGZkL0U5dTYwS3gzZkdJUXJHNmhmSDYwajR2R29JL3B4UHlnZXVwOHUzUlBPNHJVTyYjMTA7Z2R2VHpOTnZOOVo1WmFJMjBYTDk4MnFsRElRME9WMDNUZUpVcWU4U25lcnFnNmFONitQWWZqdHBvOTFhSGRkeEJubG11YndkdGxUZSYjMTA7M3EyVXQ0dWMyN0N4bkpVTnBkczY3WDczcEEwSllHL1c0WjBsYW9nZDNQR3pjRU1ad2pRaUd3ZXY3eElMZmJpaEhNZEc4NkloSUppOSYjMTA7bnVzbjVsT0FybmEwajR2OEhuYnV4KzF0UE01UFJXYkJxcVZPOW5HRzk5WkZBT3ZWVWtjOXRLZE8rajdxTEY2WG8zaHREaHZJcHgvQyYjMTA7RnZQb2NRMGQxVkVENTNHWDJRWnBmN0JVbjlRWm9OMkpmWVBYMVdlR1FNRWt4MEQyVXZ1Nzd2UlFSK1J4THgzSExjZSsxdUdpSG9uQiYjMTA7b3MveG5ucWFXUnBPR3V6Mzd5M1ZJeUgvVDJQK3YyNjRES2FvajNkYnVrK29YeDh1YjRzMmJDaHZwOXM4RkU2WWJvczBlNVZabXJrbiYjMTA7YlVnQSsra04xVm5DU3VPdS9VeUwvZ2V3dzBpU283cHVtTEZSUDF1cDhJTnlwWU0wU3Z6UjgrTCtKOHQzL2Q5UHI5MVV4L20vRnEvSiYjMTA7L0lHTzhiN1NEN1h6NUwxZkhjVnRaUk9zaXZlQms0NjFUZlppUitwdERMUk8rdFloV0hvWU0yNnBNeHZ5dzFIb0hPWSt3ckdtRHZGeCYjMTA7UysyakVDVDRVaDNEbnpGZlgyZVNIcE9pVzROR2x1dUliQjhLdUpjbUU0SkVyMktRYU5KbVlHMXBiYUczTGVmL01JSTJEUHc2emlIUSYjMTA7eUwzNXBZeHRzUDBPbHJlUXowTkE5cVNGZEpzVStUNWdjMC9hZ2dEMitvVWdkZkQ2bi8wdUJ6SGpOQ0puUmIrZktoNDEyWkZjS3Z3cSYjMTA7Z2Z2VDZMN3JZZlExTkdPSTgzTTJFclJQL0FwczAxb05Wb1dPYmV4b2QzbHFzOFhEZ1BkVitrMTYwQjdONllGQ3lCZC9WY2YwWmdnQiYjMTA7a013Q3RhR2pXNGJnUmx0QjdLWFgrTHZlWjFuVXMySFU0Tmg4MmZmV081T2krMnZpaExMN2NSSGNhanBBdExTR1ZpN0J5SjJZSHVPWSYjMTA7SG5PNVBhc3lkOXJ4K2pXVXR3OUwrZXVpZ1hRcll4bnI4bHY0aTN0U1hXKzZkZHB6U2JCMlFaalYxSUVyNy9qWnBNZkorYWVuU2RtNSYjMTA7ZVdMK0JFaWgxZ1paYVB4WFcyZ3N2K3RCV29XZ3dTeDJhQnJwT0ZWYjZBQjhLUHF6THNlN2NFNU5wV0ZOMXlXMEQwT0FJYmZSajRzQSYjMTA7U0cvN0FiRXUrVmprTi9YUWFVdHBNbzU5b3o0TnVBbWpCdWN4eU1pUGE3MFl4TlduQmQxRE9mNFM2OVNtMHpISGtiU2hIRi9FdVpYSiYjMTA7bzh6TmUxUy83c2MyN0xqbWRBdmwrVXZSbnlsa1g4ZHk2WjYwUkFCN3ZRYmFseG83Y09YcUQyS0E5MU1Qay9QN2ExdHkxYjNPV3ZwYyYjMTA7Q3poQyt6eGRUM3Z2M3MyNG83aHRCMkMzb2JUcjQzUm00WnltSGN6UDVkTERtRndmS0p6RTZRVjZWWTlVMjBuc0IrUmFseHcyR1lSYiYjMTA7Nmh0OUxQcTU2SHc0cC9NK1A1QjU0clhPT2VpYXdydjRzTGFwZE56SlBPLy9KZTluVStiNlZyOHVSdnNmMVpSdTA2SWZBMVpXN2NXMiYjMTA7dnlCMkpJRDljRUU0aVEyME9yMjZwOEVmWHR1OTdGbVNUcjBDOGFBYzAwWmxDYzBZNGh6WXRkUjVQUTFlTHpReDRuSmE5SHZ0ZzFleCYjMTA7ZmRlVnR1aWt5RHVBdXR3NW5mYW9EMURHZXJrTG8wN2ZOZlh3WUNsNDNYY2ZoejRhdGNlQnRGV3Y2d3hpeHpiSnRFUHArTEhwaDJJTSYjMTA7cXN4TlV3ZGo0M1IzZlY1REx1UUhRZXhJQVB1ZUcwMjFuVGJZYUQxZS9VRU05SVpHNGsyUGt2WlU3bnBRV3dHcytUM2xZRFNBUml2USYjMTA7a2hybndnc2RyejRIWUE5alk3Mk85azlJdTFjRHlINXZseFo0enJVdE91cmdGRGlIdWFmckU4cEIxMTVEbmpTUUx1SGFEaUY0dlREdCYjMTA7MjFzRlQra0xGOTBLdW03cmRWMzMxWTYyU2Q0SllyZFM1azRIVU9iQytaMGtUTGNRMVAwd2dDelNxMEVDMnhEQXZyc1F6QnJ1d0kzdiYjMTA7ZWlVNGR1NURZN0VQUWV5ckppYnU3N2g1WnAvcktSL1F0WHQ0dUdlK0hjQ3BUbEpQSlJMYlArOEdsRjBtR2VmamNDMUNtNm1MRDJLTyYjMTA7dTVvaGxnYXdkTEVjdks0ejJMb1UwQnlTSVFjTUprVy9Id1RmZDE4ZEpTNDNCeDF1azRSNjBKell6WmE1dllHYzYySENxV3BPQnBSSCYjMTA7OWoxWUtvcmYxQlUvM1dUR3NSQTAvZVFyZkY1b0dQN3lPblVJK3NhYjMybkhHeEpHWHo5dW50bnhDR0REK2tLdzZmY3QvMzZJVXFmWiYjMTA7VUlJTml4RXM0NFQ3UEJsWTN2cytXamkzaGFWN01FVkRtS0psdDROVHh2Vmg2cUdqR3N0eGVEQ3hWd3pQOTBCTGxaK0hjbThaMG9QZyYjMTA7dSs2cjRUcVhDZmM1NlhpYTdCYzBVZVlPQmxqbWpyZHRzOGU2Nm5CbzZSYW13UnZ5dEx3QzJNVS9vd3BDZzYrdHVYTStWNWx3ZnQ5LyYjMTA7eHY4N2lQTnpkWFYrbnhNNTdXR2hFMTFkNHpZKytyN0FXZW1xd05ybE56UWtabExpNmZWZXdudjV1QmhXZ09Vb1ZhQndvSjJBWUp4aCYjMTA7dWUzREZBMUhSZmNlSnIzdFNYNU8zdDZPL2FUallyZ214YkJHWWs4R2ZLMlRQZGlNbzdsZkZmQzRJZGF2WVRUeHdaWnY2QTh4M1hiaSYjMTA7ZVErMm5oNzhGQ0pMVTRhMEdSaGVxMUZVRmZEUU1QM1V3V1ErZXloQXowK3VXdmpNKzRJZlJtQURPZ0I1TjJLUHBOMVd2QjVkajFJUyYjMTA7dEJZUTJLMWh2OGZGc05kRTJVdjR1bnNYK3NXSEF5OUhFL2RWR2l4em82TGZDeERXMGdhTDk3cWhQaUFhRDduTURIb0VkbHlzb2UxSiYjMTA7MzhQYzBFK1pYdU00RnZZdU5TUW5CZXVhRnhtTUlJdzNCUXM0QWwzcWROZjlxbXRZajJJeFVtVDJ5TytXOGV0QnpYVnBpbGN3aDl3SiYjMTA7Mk1seEdwRWVLQ1ZCYXc2SzlHOFZDTVFscUdzN2RKNURGMFpoanhJTXZocExTdVNUMnRvS1RRMUFDSU1MMTZrTDZtN3ZMOXNiY3R0MSYjMTA7a0FIc3BWVmVjM2pDUEhuS0w0ZFhoY084TjBWM0ZwZzUwekY4a2xrTCtYSitUeVVNTVBRT3dGbHhHN1NZYmRxWmphTnJqb3A2NXBEZCYjMTA7VHpDTlNCT2RwOHZpOW0yZjFmYkFSZno1S0c2ckhadlFYcXY3d1VRZEFiK2gyeWFmejVhdXkvSm80a1BKdW5aQUlGbCtydXFYdGdiTiYjMTA7TE9xTXU0eUs1Z2Q3cEhqZHZRdmFlQ3RsK2VId3FpYnVBZmZkRnljZExEZGRkTGIwL1hYTUM0L1ZZZGNyZjlmbGU4UzRvVFNlMzlIbiYjMTA7bnkzZE4xYnIyRkZSZjFCMm0ydFcxbFFYbmNidFlwTjJmNXlTN3lEV3BYWG15YU9odGwwSEY4Q09ONVJwSmplVnF3MFhCZW5TQ3VtVCYjMTA7Z3Fkb3ZHRjhUK1VzZ0ExMFNlcUdiR2pFSHFWNEFCdnIyUERnK2FTbXhhTExZcnVGa3N1YXJza2krSCs2VFlBOURqb29ZMlA5ZFUxNSYjMTA7cDIvcmRLd0cvNW9jR2ZSUEoyNlQ4aFAvWnJiTy9tUEhQNmRYcjFkSGFyVVJmQnZWMEVtdXkwMjgxclBZL3IxNGFsMFJIeENPWWprTyYjMTA7K2J6T3QwbU9paDR2dU54QTBQVXkzcXZDOVo0L05UZ1U3d1VIUzllN3p1TTkycklQV3paMDJSWjEvZlVqZVhOM3FXL1gxa09CVDdGTiYjMTA7Y0xIdDJoM3hRVks1Wm40SnZtUmE1c0x4MWZFdzdpYW05WFROaDI2elIrcllvM2kvM2E4aERUWWRTWHlRT0wyK3Q5TVQ1TTNGUGUwayYjMTA7cHQxSlRmZWxzaGlvd1FTd1l5VTJMZko2VFhheVljRzRhR214dnlkM1hvMitmckpjR3NZamx3TG8wUDA5WmFNNmRBakxPbGI0RGcrdCYjMTA7cStOZGpDNUsxZkV1aSswQzJLbmJSY21DL3pITnJ1UDVuVlpwTjZtaE03RGI0ZXgvV2Z3SUFNNGY2Nmd1ZGVqTDJCbnQ3S0tuY2VIciYjMTA7dGpwd1Y4VlMwTFZZSXlBVEF4V0xVVmwxOWtWU3Q5L3FTT05RUjRRM1VrNFRCQXZteGUxRGc5bFNIajh1NnBtM2U5dWdadTdxS2s4aCYjMTA7Y0RuWmRrcU9sY1d5cC9GNmorTTFxZVB0cG0ybUVha3JMUmVCeWROdDc3RXh1TGE0SDVSRi9VSHRlWk54Z2VYOGtuSGNwSTU4OGpuYyYjMTA7MzFPMVlWY0dZZFF4RUhUVGU5Wit3akpWMXZGMlRVeTdvMWhQcFY2Z2U3OFlxRUVFc0RNYmRmMVA0M2ZEMGRmTG5aYmNNKzVZYU9YcCYjMTA7RlYwbU45bE5uMnFXcmlMUThRN0F1STdnOVZJOWZ4SGJKYWxHQkcwOENxV0dBR0J0SFlHVnprQm9QNlVhZWR1MTE0NDNIdG0rMUtFUCYjMTA7MnlSZS83Q3Z2WnJLNWF6b2p4QzBEZzlTcHB2azcvZzNZWnZXUENvcjJRT1plSnlwODBadER3aVg4bmpJMjZjeGI2ZnNLNldZc21sSSYjMTA7OTlLa0R6UHZ1ZDdUZUsxUGl2UnZZeXpxeDZlV203cEdPTCt2em5lUytINDZqL1hhb3J3ZngvNjc2VSs2V2VZK1ZkZDFYR041TzQzdCYjMTA7aGxuQ1BETGFvSXlsSEgwOXJudHFxRmhQaFcrVEJyR0hPZy8yOHo2ZlhMaUJ4SnZhWHhsV3hOc3VrcEY3NCtsOWdzVXZodW9zZzg4eSYjMTA7aFFqUUZTbnJxL2ROekhFYUc1eWZFdTB1cHprRXk0YlNiOXp3dmJKdElSRDB2dHIrVloxN1NPTnBpaUJhekllaC9GeXFSdTRWUnJQOSYjMTA7dTBxck1CcnpPRVgrRHUzamFnc1BzZjZvNFhoVEJzNVMxdysxQnE5WDBuZ3h4Y0JWeHZlYjNLVE1PNHVIbWJNR3J2VjF2Q2Q4eXVSYSYjMTA7cDg0aklTMWZwZ3hlUDFBdmhmakVLTjV2YmxUL25XcS9udFVadkY2cFcxTk9MVFhhNEc5MkU2YlphUk1YT2c1Y1RkMXVIUTJ4MFBRMiYjMTA7Z0IxSE44Mkx2S1lNYWJ5d3RPU3k3cHRzeitVd2pZZ243MEJYbEFuMzFlUmN5TW51azNIa1ZOdU4zMDhOTDNDV012MXlEVXFGNE51YiYjMTA7S2wzRHFNOUpIUU1EWWpBeHRKa0ZLMzRJYWZGbmNmdkE0S2l1Tm51MTMxRGZmTTQ0SFZMUE1YclU1T2psK0ZuampPODNPZldiVTUvWCYjMTA7cElVRkw0K0x0QThzY25rYmRkeGtXc1lIQXBQWVB2aGNVRmVaQzBIWWxHKzRqQnZNSTdNaTNRT2pVVU4vYzVkcEMzVlVTcU1obHAzbiYjMTA7ZmF3TU1oNTFuYktDeVRuRGpndTJjZEZ5R1NwZEFxQkRVZ1ZaUGpjY1hKa1g2VWEramxwT3UyRFM1RVdQSGFoVXdZcmM1c0VPbzNSKyYjMTA7ajZOK3B3M2x4ZFFQYjdyWXNWcU1kRitNdHA1M3NFT2JZOTM2UFZEUXhwdVpzWjQ0eXpSTitucXRyK0xEbWFhdjlYWGkrOUNtYnplbCYjMTA7clBzK3RUWG9MYVpuYnhjdDdWbVorOXhDL2RybVlNeFVaZXlpNFRKMVVlVHhrSzNUZWhYQXpuelU5VUtxcVRWeVhYam5UUXRQM1B1bSYjMTA7N2ZUYmRRbUFEa24xc0xxTnhuaXF6eXczL0x0VXI0eGZ0alJ0V0IvZlp2czlUaE15YS9oenA1bDJNSnNTUmhxTzRrajNwaDlrNVRySyYjMTA7TVdYbitLVEY4MGo1MlgxdEk0LzZjSzNqQTc5a2I1TnMrSFpPeXJTY2FPTDFWc3I2OWJTRnN0YjU5bGRMTWF1VTZUYkltRTF2QXRoeCYjMTA7UVorY1IxMHZPbmlUQk9kYVpucCtuNW9ZS2RSM0RWZW1zNXB2cUFCMTN2dFQzZy9iYU1qT1dreTdsSjNzdGpveXZYdGczdGFDUEluZiYjMTA7Q09paWl4WVg1OHMxRUpDcVQzWFo1cm80TWRDU0txaDUyTlA4ZjlDai9OeDJnQ2hWSGptem5sU3Y3ZmFnektWb000d0dkdDFuc3Y1MiYjMTA7T2gvQURwM1hhZ3NkbU5lWkgrcjN1ZDh5YkdRa3E4Q2FXRGhnUU5wY25Nb0liR0J3MmhpSmtUQlkyZllvc2JZYTVEcjNPbFo5a04yRCYjMTA7bU1RUEIzTUkwSjhtVEpzK3RwTlRuZE5WQmtIWGxQbXQ3TWw1a0o5VWVldXl4WWV2S1Q2M3JWa0ZianFjWm5XMDR6dmp0NjRlZUh5bCYjMTA7Sjd5aTFKVW40ZU9FTi9TanpNN3RzdWpwb2lZdGQyYmF5dHRHWUFORDZ3QzArZER3S2tFRGZyZWh2M25vbmtYM1hVdUM1b1dIWjFXLyYjMTA7cHU5dDJoeU9JZFZncDlCT252WHNHcVdhVGlxSGRHbnRHQkkvK0prVmtIZjkybWE4WWgyWGQ3UnJMdUxQNWkzZDcyY0o3L2Q3UTh6dyYjMTA7blF4Z3g1dkRsdzRkOHB0VTh3VEZWMzRQTTZzWXloYWYvUFZWYUxTODdlQnhqMXc2Z0NlWnQ5UUlUZld3OHFiRk5zQkZ3clFRTExoTiYjMTA7ZzNlU2dTTHRZSVpjQXRnMGN6OXJWYmdmVmYzbE1McHlKN055OE5UemtHZjdiZFNETXRkVzIyOTZSNXZ0UWp4cUdMbzZBcnZzMExHKyYjMTA7U1R3djlEaWpjeE84N241RCs2NXJ0ODBEa3Izd2tNV2NiVUJEVW8waW5yVmMzMi83WVBxZzVlTnZxNE4vL1lTUkxBK054QkVvb0cxbiYjMTA7UlY0RFZIWVRsdE1jMm9RcHkzaXZIbmoxZE5Sd3FwR2h1eTJWbTdPQ3Z0dnJXWmw3eU0wZGRmREdiYTk0VHhGckdLaXVCckNuUmY0aiYjMTA7Uk1JcndVYzFQRDBkWjNKK1ljWDBzZUIxYlozeWVjTFJBMDBISHNJVU55ZXVJdENBUGt4NWxPSSt1c205WWplajQ5L0d2Kzg0QmlOeCYjMTA7SUE5WkxBejZ4SWRkVGRXZDFHZGV0UE5BS0ZXYnhQMkxMZ2d6RE14Vzg2NjNCNmhUSndQWU1iajN2c2czaUIyTzdTUjE1Nms2NTNHUiYjMTA7eDF3M255elkySWh3UTNqVjVBZkdLV3EyVlJZQzJFQzNETEd6bUtxajNXcEhKZFVVYlVBdDlVTk9kV3NJcHUrN3RMWFd4N05NRG1XZSYjMTA7V1RubzFIMlYydnZidXhubTlVM0t1M3hLNHpxN1lraFZZQ2JWbDArWkhWWTRubitGWTZzaGVCMHF1a2tHNS9oRzhMclhqWmRSaHh0NyYjMTA7QUYzc0xPb0FBTG5wNHlqamEybFRXOXUvcjNZa0FUVkkxbGMyYlNkRDAra2xyMk1ndGUxWDA4STBENHZBOWJqR1N1UzRhSGYwZFRqUCYjMTA7bDRubjgrWmhzNDRlOTE2aWtkd0FqK2xESUNGSlVDWHhpQjZBRlByNGdLNXZBelZHOGwxMmJSSVB0Z0h1OEx6ckovRGk1YmZRaUdoNiYjMTA7SkhhWTMvclBhdnQzOWZtN05RZXVRNmMwbkdPYjA2V0Vod1FIWGhOcFBHL1BPdHp3S2wxQm9BRmVCLytocmFES1hOSUQ5N2gyTElOeCYjMTA7NVZxYkF4dWdUcy83Y0JKeEpQYnZSWDByOW9ZYmNnaVN2eWx1UjFxUHF1MjR3WGtYcHkwbWJ6anYwdXNwcmFuN0RZTjVUUTB2MDRnQSYjMTA7RElQMkFkQUZCdUs0RndEUVliLzE1VVRpYU5VeWpsWWVGN2NqUURjWm1YVVpiOEFYaTYzTjRHMTFQaWRGZXlQTTNwZ3lwSFd6T3E5LyYjMTA7alhsYkFCc2diK3BwNEQ2bUpJTGJ2dmh1NnJXdElKRXpTZEJzWGFEdDNMN2YrblpDY1pxTDQ2V01kaEFiWWFQaTF6bSt3dTh1YmtnWCYjMTA7dWQyY3FtTWZWMS9ldHZEUlliN3IwcFFoV2VqcU5WQzVBMTN5cGJybkR1MmNMVTRGM01mMFRQQ2pUek9URE5BL2NkMnVVU3pucXpIRCYjMTA7QTIzbC9Qelc5eFBzYWhBMkJ0NVBXdmpvOENUdnlKUG1iSFMxd2FTeUJ3QUFBRm9WZzlWbGNSdVlEdHVoVk9tZTN5UkJsb1ZyOGFTMyYjMTA7NlNEZ24yRnViMWNnSDJHS2p5by9oRG5ZOTZRR0FBQkFyODBsUWErVmtxQVpYOCtmSDhYMERsL0ZVM3BBQUR1L1F0Wkc4RHBNR1RKdSYjMTA7Y0ZGS25pYmtoOWRkek11bW9RRUFBRmhQbSt0dlFkZkZrZFpoVUthZ2RROEpZT2RWMk5vSVhvZEZLOGNDalZrTDErWjFCNC9iQWtBQSYjMTA7QU1ObFNrTGtPNkIyTVhBOUtib1pOMkZOenlWQk5nVnVYSDA1TDVvTlhuOHVMTmJZQmJPT0hyY0FOZ0RBY09sajBEaDlXeGlPcitmUCYjMTA7ZDZzdHJCMzNkeUY0M1hzQzJIa1V1bkgxNVdQREh4dm11N1pZWTNjYVlUYzE3UHFzNWtNL2NQVUFBQURXamcyVVVnSFdLaXNoM2hCaSYjMTA7SlcrbHhqQUlZTGRmNk1aRjg4SHJOeFpyN0p3dXprOXVCRFlBd0hBWnpFQWIvV3Y1RHZwZnpzZkY3WnZxNXJrZUVBSHNkZ3RkQ1BDZCYjMTA7TlBpUllSVHZ5eGN2djAybGZ1Zk1kRm9BQU9nUWd4bVE3NENrbGdhQjdraU5ZUkhBYnRlNHdVSVhndGZtdSs2dW1jWWpBQTl3ZndjQSYjMTA7b0xmaUd4WW5VbUtZZnBNRXJXb3F3Q2Q0M1hIVnRadFhsZlZWVWY4ck1yTnFlNWRvWC91dUhFQWovclNtQlFCQTlsTDJ0d2Nsem1BdyYjMTA7TGRvYmViMjZobGhvZXo4MXh1YmFiMEVBdS84RXIvc2p6SU5kOXdJRkFpREFFSDJxdG5sSGovMml1c2VmdW9RQTBDcjlLS2hYV01ldCYjMTA7N2tGeVlkRGdMUFlMdm44Tmd3bFQ3ZnpyK1hNQjdDMElZUGViNEhXL2hBcTAxZ0IyeUN0VnBYcVo2c1lRWHZHUi80QU9tRloxMVd5QSYjMTA7YlFSekJ3SjNTZFlXaEk2N2VPTHZ2a3J3bVNQSkRqK0xvNitQYTd6blRhdnROR1d3bXZUTWdkMnV1cC9TSGdzZTlzcXNvYytaSnR5WCYjMTA7ZWJBQnV0OHBCL1JSWUhCYW1wNXJKT1ZadytIQXpuZGNwQjk0RWFZRStiMHE1MkhRM1luZ2RmNEVzTnRWNXl1L1oxVUJuRXJpM2pXZyYjMTA7cmhyNHFKVDVwblRsQUhwTlJ4dm9nZ05KNEY0QWROWTQ4ZjdldkhqNXJSemdHNWlkSm9EZG92aUU1N0ttM1Z1WnRaOW1EZVRMRUNqLyYjMTA7cERFTGRNQ2xKR2lkZWg2NHo2NWpHWXc5MXpyWm13dWw3QVEvZkQxL0h0cWFLYWUxK3QxZ3oyNFN3RzVmWGFPd3ZScmNUN09HUG1lUyYjMTA7YUQ4amx3em9RR2NSZ1BUNk9PcTViMzJzdVh5WFhkN3dzQVYrVmliYzF4OUdYWGVYQUhiN2FnbGdtNytudDFKV3RoZVA1Si9QQ1Q3aiYjMTA7MENVREJ0WXdCdWk2UGo0YzNKVTJkOUpudk45VlM1OXJBZFYrUy9ZUUxJNU1Ib0pVRDZXdXdselhzbUIzL1NZSjJoVVdXYXdxbm5CeiYjMTA7M0pNYXJKRmY1Z256eTJNTjhGQzViNzJTZG5XOEJ4WVRCY2l5QTVYaUlXT1dJeXpqYXZWM0hkdW8rUFh0b0puUk9QQkwvZkFxd1g1eSYjMTA7R2trcUtGaC92WnZMZkxLalJQdVoxL3o3WFVoTDB2Zm5yNnZybXpLdnp6T3NDdzd1cWY5LytYbVZIcE1HMjVxbmNtQzNDV0RuSVJTayYjMTA7dDVLQk5ZWEd6T3NHYnE2elJNSHlVV0ZLRzZBZXFZS3dRNVJxRkdHckFhcnFQaFh5UUlyQWxFQUJwSmRGMERnKzBNcXQ3cVErb3pZKyYjMTA7TkE0MFNyVzdJL2NsY2xibDlYRnhPK0J0Wjh0ZFRSb3Mwd0xZSFdjS2tUeTRPWkZyZnBrazJJZFYzNEc2REdyQnBQQ3FhQmlWZGNjMiYjMTA7YnZFMTByYnJlTUZyeUxkdXplVVY5NVQxVks4R1pTUWU1WnZMdmZTZ3hYS1FhdHFSSTlWUXIxMzFvTXlGdW4ybm9jOUtOVnVCUVhVZCYjMTA7WndSMkhnMkgwNFJQYSttL0ppdmU4SlJ5MnllcnBVc0daSzd0VWNTek80N25xWUhaMzR1bnZVYWE2bDZ5MDJLNmpXUmR5TDZ0ZVZDMCYjMTA7LzRxN3dSVE5hTDFPanFQdGQxb3NCeUd2cHdpMjdZV0gweTllZnB2S1ZyMlVLcDlvQnoxQm1MNUZLblNicUdrK1Brc0MxcXg0UTJQcSYjMTA7cHNGS2Z0dFhiWkoyR3VJSXhERGFjRkp0eHdJWU1HaXpSUHRwK3pYM3c1V3RpZU5KT2NLeWJDbmQxUCtRdjRPZUhVTWZSL0JkSnRwUCYjMTA7bWNHNXBEeUdUZTZUczRTZlAwazgvVTBYeXk3NVhxTVVuMzB6cElzVnAxMWhDd0xZL2V1RUk3K2t0dTFLdlRzcGdzd3hhQjNPKys5cSYjMTA7KzFodDc2cnRRL2gzbUFQVkRRSFlzbzdwZEVkdGc5ZkE1NWtHRElEdTFTY1B5V0VxaEtPRWFkUEhFWHlwem1rdmc0RWxLZlBicGlPdyYjMTA7VTlsTDBBL2JwRDBVcGlZTDUvR3FJUGUrL0g2TER6bDJXeXBqWGUxbmpJdmJHQVpiRU1ET3A4TnNRbm1hdnVtVmF6YlV3NDNscW9uUCYjMTA7dXEreWo0Mm9VT0hmdDFoYkdLMzRNZnllUURZTVJ4L203bXdyY0I0V204bzBZSkQ5TllPQlNEVXlici9Ob0daOFF5VFZsQkpuUGIzVyYjMTA7S1lOSWJUK3dTUG41MXkyblpmQzZ5c1BUSm9LVTFXY2N4Y0ZDWDRwMGN3NlRMbS9sVnVZNk4vQ2pyVFozZUhPOEVMeE9RZ0M3ZmVPbCYjMTA7anVTVjVHQk5zNFkvYjl1bi8wKytXY1NuLzdOWTJhL2JpQXEvOXpHT3lDNWxFeGlFVkVHV3R1cU1ObDhQVHZYYWVGc0JLcTgzUTMxUyYjMTA7QnVLTzIrNXJKZExYK1ZQbmZialdjUkJMc25VWjRpQ2VUZjRtOWJRSXIwTjVqSU42ZGhPbjJVRzFuY1RCUW44Vjl3OFdJdC82OWFpRiYjMTA7c2pZcVdsd0RwU3R0L1ZCZXd3T280dmJOY1JJUXdHN2ZjcVBLS0d4cWExRGQ0U2tOb0dsVE40dWxpdjdMRm8yb01DTDdTMU1qRm9CZSYjMTA7ZEFKZXRSU0VMVnRNdTNuQ2ZVMmE3aFFVNlY1dnRpbzkxRnN1eG0zVXIzRXd3K3RNMDZTdjF6cE1JM0xjd3JYZVRYd2YybWEwL2F5RyYjMTA7VS93K1NLZmEvaHNHK01TMWdJN2lnSi95a2JRNVdQeGVYRDlvRXZjUkhzaWNWOXZid29qckxwZTVOdHF2NDQ2bWUyUEhIYS9KTFBFOSYjMTA7YVBCK2t3U3QrejQvY0J5QlBZczNFRmkzWWJYTlUvSzFGd2tMOC8xVitmVFRGaFh3OHZ4Y29WRjdWME9yamlmKzRYaEQ0MjVTbmNPSiYjMTA7TEFPOTdRU2txaitPaStaSGo2VVlPWE96UmRxbENnS0gxNXhQRWoxZ1hmZGFKV0ZWZXJpM2ZralczeWx1QitvMDl0WkViSGRPRSs5MiYjMTA7MXNjTEhhYmpxdElyNVM2L0IwZ2J2QjhFb1oyL2wwbitueFgxemg5OXVOcnVTWHo5cUwvTWhiNzFUWkZ1RlBPMGFHaEFSS3hiVTdYQiYjMTA7MXExVHd4dURLUlk0RHpHSm95cjlUMnRPbzVBK2s2S2JvOVN6cHFiTHd5aDFvNmpyaTFIUlRDTTZWT0JQK1BWdEsvcmoyQmg4dDlUdyYjMTA7T3J5ckVaWll1SEY4aUNNTmxBdFFGejdrYlpQMVJCdzFsYUpCZnBGQjJuM2ZYeFBwRis5ZHFWN0h2RkdFb0pINklRUU9UaHVheTNjVSYjMTA7anovcHFOTEU2eTdrNWpMaHZuYWF1aC9FNnowdDBvOXkzQ2FBN2ExcW1xNWpEMk01YU1LMGFENHdtM0tnd2JTdXVpbmNlK0lVcUI4SyYjMTA7d2V0YUNHQzNhS25nbExGUmRKMnc4V0RhQkRlOWRVelc3VWpFSjVYYnpOUCtybWozOWJRUUpEK3Z6dmQvTVpoOUV1ZVNLMlVsNkxUVSYjMTA7STd5YUNzSWV0TjNKclNFWXN3aGFITldZYnVGaDZGOFo1eC9vaFpyVzV3bWpVaS9xV25BN1RrTTNpZVY2UC9IdUwzdCt5ZXU0SDV6SCYjMTA7NlNwMmE3cmVZVXFNY0sxZjU1UWVzZXhjcWtWb3VNeTlydk1oNFZKd051WGJCUmN0cEZYeUIyd3hiYWJWdDM4WDVwR3ZsU2xFMnJWNyYjMTA7VCtIY2x6U3NFM2hJOExwWXlHdGhMcld6bFJ2SjlkTDNGN0VoRm9SZ1N4K211ZmxwMUhkTXg4dkYrUzZkdDlmS3lVWnNhSTJLbjEvQiYjMTA7M2kxK2ZTVzdqb1pUR05ueHYrSjJ0T3JGSTQzSzhPL3JwbDRkRHZWVGRXeXBYaTFjYnRnZVYvdWUxblF0eDhYdDY4NnBSbWRzMDdBLyYjMTA7UzV4bndqbjlGZThySWYxbVMvZVFiZkorQ0lxSGRFdjlJSFNlWUIrN0NmUEdybnVQUGtGR2VTalVMYW1EZzRzRnR5ZXhYUmsrWTc3cCYjMTA7UFNQV0QyRXJZejFSMTZpM2FjL3o0S3ltTm40WXdQS3V1azZmNDJkY2JQcndOSTZzWDc3V2RRMk11ZHoydmhYdjhSOVZiYTIzblhjeiYjMTA7TDNPcGhlQnlhQmVIdW5XNjdVQ0ZtSDZMOGxiSGc2SjF5MW5xUHNYaUFkdjdVRlkzdldmR0FSdmpvdDRwZzdRWmx6ejd2Lzg4KzkrbSYjMTA7SFo0cXNVclY0bFlaTHFUZmwrVzBqSVVneGNpaTMzdittaHUzK2FXT0VTYjNCVGhDM2d3TngvTUJKZkZWdkxITzR0ZUxodWZ6MnpSZiYjMTA7aE9QZEtDQlZuZDh6SmF0LzE3VUZqYllSd2hzVk5YVzhyMkluZE91NVBPTTkvNmltVHZlYlRZUHRjVVR6aDRicTB1VUhwSTlaNUorNiYjMTA7OC93ZmQ2MlJFQjh5ak9JL1IwdmZCd2RGYzYrR0xqOWd2bDd1eEZYSFBWbmorbzZLbnhjdFdpMlhUZFVwVnlzZDFlVzhNRnUwV1dNNSYjMTA7S2U4NTN0Mml1VUVlYXgzdkkybmYrVHlVc0YreXJwc25CQ3FhdmgrK2ZPZytFQVB5UmNldjkzWFI3R3Z2Nnk2VWVORHdjZjJ4N2RvNSYjMTA7TWZBM0w3bzlqVURLT1pyZnIzUFBXak50TzNWZmUrUmM1a1g5YnlpZnJkWUZqeGd0YmJVZTI3cjl6bGllL2x2am9menpnSzI0WXhCYiYjMTA7L1B5RDRzZkFvVExqUHRscXZYb2R6Mm5TMFhJMVgvcjMzQWpzZHQzVnVaOUpGcDZncVFCMnFMQk9RMENxcXR5dWl1R3NWTDBYdC90RyYjMTA7YTU5MElhQU5BekF0NmdsZ2gvTC9ZYVhzWDYvUkVWZzBjcHZxZUcvVGRqZ3Q2ZzlnLzFLWFp1Uyt0QnRuY3J5cng3QTh5bWVkWUVEbyYjMTA7a0x6TDREejJWdG9PaC9kY2g3Smp4L3VRenVlaE1IMWM0b1hHSHJPVGFUMXh1VVo3NzEwbXg3cE5uUkh1QjY5YlBOWmNiRDI5VjF5ayYjMTA7N3lTamZQRlVuNHNmYXhmbHBtdjN0Y2Z5MnR1R3l0bXJ6SzdqMlJQTDArY2F6K0hWOHI0N3ZpanE0VDNuTitsQnVUb3pCM1ptbVN6aCYjMTA7UE5qbXdCNkdKb09uaDNGa2xJVkpiaDhhaEFaK2VQVm9tdm5yYWRCN01iQncyVkRaUDR3TndYY1BiSytLSDFNVjFSMzR1ZHJtVmVmNCYjMTA7dDU4SG1uVnVQSVNFUjUxSWdzR2tnV3Q5K3diWlBHRjZYblV3RFVKN2Fpd3JLSE0xTzYzNTkra2hBZXgyM1RkeC9LekdmZE12VFhlOCYjMTA7SjBYLzV3QjhxaERJbnErOE9ncm9CRFJsSnUwYTZ6eUJ1blY0cnVwYUR5RTM4WUhlMmNDdjl5Umhlb2FCYWVPT25YOElYcGZXWW1pcyYjMTA7ek0wSFhPWTJDV0RmZFB5Y1EvbjZRODdmbkFCMnUvNFp0Ymt5Z25NbWFWaFQwd0hzTUpxd2xPeS9DQ01zd3dJMTh6aEtIV2krRXpBdCYjMTA7dWpuU2FWc25DZEp1TnRBTzFGVEpnVWZyaHhESWVqL2dKSmc0MzhFNFM3MkdWTnpmbngwNWY4RnJaYTZ4dlBiVU54MWl2dXp5QTlYdiYjMTA7NWF0b1BuN1RLd0xZN1JvdGZiODhZbHFtNWlrVmVkTUJtdzlTL2w1aHZxWXZZYkc5dUJBQzBLenhBRHZicWRvTWt3R20zVXlSZ2JWMCYjMTA7ZFNxRWJWME9aZlQxVXQ4aTFJdC9EalNmajJ0SzA3Qlk4cWZNei8xVGRad0hndGV0bGJtaFRlVjJzc1hmZGZGZUZLNnZoME1KQ0dDMyYjMTA7YSsrZVNtdyswRVlpbTVsTGd1eUVrZXAvaDhWYnpJOE5qWGNDUGczb2xDZUowKzVQYVFmY1VUOTBjU3FFYmQwVXc1MEhlRExBdnVnZiYjMTA7Q2VlK3Zxc01qVE51bi93Umo0LzJqSXZ1VDQreHJyTk5Id3gyOUY0VUhnNGRMUVd2QmJHM0lJRGRrcS9uengrYm8zcmJFVldsVkI2TSYjMTA7bVNUSVZsaFZPa3dyY2l3cG9ER2h2RjBPNER6L3JPRlZaMmtIM0ZjL2hETHpaa0NuUEI3cUlxOHgwSEpVRENlZ0ZnSk1KdzJrNjdqSSYjMTA7YS83YmNMOS8yY1M1czNhWjY3dWIyRTdmOWw3VWxRRVhiMVlmRGxrOGZEc0MyTzE1YkZTbWpNMjZQTVhMVzVnZis0UDVzYUhSVGtCWiYjMTA7OURzUWV4bUR6WFdRZHNCOTlldTBHTWFiR2lIb2NEcndhMzBSN3dkOUQySi9hbkwwY1F3Vy82dG9kOTJKY0UzL2lGT0dpRG5rVStabSYjMTA7UmY4ZkVoNm55SE1kbUpZbnZNSHljbWhUVURWQkFMczlCNC84ZXlhSldKT0dSemNzNXNjK05UODIxTjRKNkhNUWU3RUlUTjFwZHlidCYjMTA7Z0hzQ0IzME5zb1RBM3UrQ0R2OWM2MFVRdTYvVGlmelp4dFFaWWFxU2FndnArcks0RGNJMTlaRGdNcGJka1ZIWDJaYTVVUGY4dStqbiYjMTA7ZzZNM0tldldqS2ZsQ1E5NVBSeXFpUUIyZTNZZitmZEY0djNUWDNOSjBDbXZpdHY1c1NmbXg0WmFPd0hYWVhSUjBhL1Jnbjgyc2NoUyYjMTA7VEx2UXVYNHY3WUE3Nm9ocGNSdDg2OU5Ed3ZEUTdzRDBRcjljNjlBbjdkdTlOQVRrZjIvN2JaeVF0aUVJVjIyaFAvQjd2T2VHZkpncSYjMTA7ZUJuMkV4YVBDOU9XL0N2ZUE2ZnVnOW1YdWZEMlI5bWorclcyQjRPWlRjdHp1YWhYMWloalozTDZabjZUQkswcEgrczhmajEvSG02dSYjMTA7ZXh2dWYxOFM5MStWUjhKY1dWNkY3cVozNGRxRitiR045SUZhT3dLaG5JVXlGa1liSFhiME5FSkRkOUowWUtYNnZFbE11Nm0wQTFicSYjMTA7aCsrQnphcU9DQUdFeVJaOUZuVkUvdGY2T3JaWlQrTzE3dXI5NENhMkJVNXlDK0xHL0RkYjZlY3Q0Z1dqdUQwbW5OUEYwdjVRdjdidCYjMTA7ZmQzbExieE5VS1hUTExaVjI0aUJYY1Y3aVA1OEF3U3cyN1BPVGVpaXc1VVZOWW1qZG84NmZqUGpWcGdmKzJOYzVQRllZeE5xN1FpVSYjMTA7Y1FIbDQxaUg3blNnb3gyQ0JkTTI2NGJ3cW5OTXUxRzg3M1FoN1lKUGJhY2RES1IrRFozMmFSeFVNUzV1M3pUTFhSYjFhd2V2OVd6cCYjMTA7WGpxT1d4ZnVCMkVVOG1uWEFrenlKa3YxNjZLOGRlSGhVUWpvaHVOdTdFRlJTd0gveTNpT1V6bTFPUUxZN1ZtblVGMTBwQkZJQTJMdyYjMTA7NExoRGpVWFdGNTRXaC9teC83UzRHSS9jRXh6cjlnM2NjYXhUUTdDbGpGc3VieTJkeGJRN3phM2pHZ1BaaTdRTGFSYlM3eUNqemxUbyYjMTA7U0lRMG15VmFmSzB2Y3hkZUYvbS9xanBmK2I1THh6dUVQTFJ1SFJISzNXa2NhRkZtV3I4dTZvaFpUZnNmeXJXK2lIMlM0eGpNWHR4UCYjMTA7RHpMcG8xekc4amVMOTFOVFp2UkwxKzVyS2NyY3RMZ05aSTlXNnRjY0JyUGRMT3JXV0wrMmR1OWJTcWN5dGxsVEQ3cFl0RFduVzU3biYjMTA7cVhLMVdkdjgyZi85NTluL05yMUp4L2tSZWFKWW9MNnMvUGg5ZUZWMzVmZENnZnRyaTQvNjNaUGJ6dWVWeFUwcTVBVVBNNFloM0RpTyYjMTA7dG1sc3g5ZW9OZ29xVlovN3pDVmd3UGZtM2RnQkh4VS8zcFJLMlNGZmJoak9scjVlZDNteGx4akFHTVcwV3FSaEVYK1dxbk4xR1J2WCYjMTA7UlF4TUxGNlZubHNvQjlRUkszVkViK3JYanZaZEZ2Mlhvdmg1MnN4VUR6ekRDTTk1L0g2K3ZPbjdKcjJXSVRieEx0SHVmb2wxa09RYSYjMTA7TGVyVDVicDFOM0Y1dXlsK1BKQzlYbW1EWGVUK2dDamVmOHFsOXYyNjdmckZQV1VXejNYbVlWajdqTUJ1eDJqTjM1dExxa0hlaUhJYyYjMTA7RlVoelFtTmpGbDZCMHVHQzVpeDFldGNhRmJFME4rVkQreHBLMmwzRXhyMjBBMUxVRWFNSCtrc1hnZ2haWCt0NTdNUE8xcnpXeXc4MCYjMTA7Vm5uNEFBK1h0MFdBZGQzeTlsRGQyc3Z5dG5UL3VTczlsZ1ArMnFBZElJRGRqdEc2aGEwcVZOdDhUcmx1WlVaNzRvMWtFYlEyeXBvZyYjMTA7UExnSVFld2pOMUxJdGtHc2JFbzdvSjQ2WWw0WXlET1VhMzJ0dnpvSUhqcXBXM05NRHcvSU9rWUF1eDNsRTM0M3ZDSzExOERuMEpDbCYjMTA7dVFFWFFXc0xNWEtYOEdwVG1CZjdqY1VoQUFDQUJwVUo5eVZRQ0d4TkFMc2RveWY4N3J6WVBNQjVHRWIzeGlkdHRHaGxnWk5ES2NJVCYjMTA7ZkF5djIxZmxlQ3dwQUFBZys3NWZlVWYvLzY0WXdFOVRHQ3ozNHd2cldRSDhSQUM3K1p0WnVFRTlKU0E5TDdZTGVKNVVuM2xhL0ZqWSYjMTA7WXQ2Qk5McnZCbDkwNkJ6Q2RWNEVyRk92ZnN2d3ZGNU1OV1BlUndBQXlOcVhIcHpEZ2NzSTVFUUFPNThid2V5ZW44KzMvTHhYeGRLOCYjMTA7eW5GTzdiUDRlYk8ybnVyR1lGeFovRmdSZHY4SmY3djROcHpIWWtYWTA3WXU2TkxrLzR1VmJjdkM0b3VrRng1a1hjUjVzYjJHQndBQSYjMTA7ZWJyc2NuOHc5dFZURHNBeUFBZlltZ0IyODhvTWp1RXdidTlpTVBoenRaM1dQYzl1ZkpWcU1TcDVQK0Y1dkszMkhSb0prN29DMmZIWSYjMTA7RjBIcTVXQzErYXRwVXNodllYSEhjWnNQYlFBQWdIdDFQV0JicHR5WndUZEFDZ0xZelh2cXF6aE5WUGJmUjJsL1BYOStVbjJkVnR0SiYjMTA7aW1rNmxrWlpMNExXZFU2akVRTGlmMVdmZVJQVGJGYkVhVlBpL3o4NDljalNLT3BSM0pZRDFhYi9JQ2M3TWEvL1VlWHBFOGtCQUFDOSYjMTA7VXhiM3Y2VmR0eVBKRCtSR0FMdWRHOUZUTlBuME5nVEczaGEzSTVvL1ZWK25UNTFpSkFhQ3d6bU9pM1plbXdybnNCaVp2WHBzY2g5OSYjMTA7OGlHVU40czdBZ0JBNzdReUIzVWNoUFlxNFM3UFhFb2dCUkc5Wm04R1hSck4rN3JhdmxUSFBJMDNzUWZQSzR6ZXJyWjU5Yy96YXZ0USYjMTA7bUFNYUdpbW5WYm56U2g0QUFQUkxlRU42dDRYUG5TVGVuL212Z1NRRXNKdFYzdmNmYlMybXVJWVF5UDY3dW5uK2RDTzdJMmdkUm02YiYjMTA7RHhxYXR4K24vd0VBQU5xWGFvREpjWk1ISGRiWmlmMy9ITk1DR0RnQjdHYU5PM3pzWWNISHVhQTFaT2x0WEdnVUFBQm9WNnBSeDZFUCYjMTA7M3NoODFERjRYY2VnbUpuc0FLUWdnTjJRT0ExSDE2ZlZDTUZxUVd2STA3U2wxd3dCQUlBZjVnbjNGUlp2cjIwa2R1Zy9oR2xEcTI4LyYjMTA7RnZWTWQyb0VOcENFQUhaekpnLzgzNlhrQWJZVUhpeE5KUU1BQUxRcWRkRDJRM3diK2ppdXE3V1ZHTFEraW9Ici94YnBwdzFadUh6eCYjMTA7OHBzNXNJRWtmcE1FOVl1akloKzZLVHhVcVpkU0VGalRxNlplTXdRQUFINzE0dVczaTZwTm5ucTNZYkRLaC9CTnRlK2I0alpJUGk5KyYjMTA7SHUwZGZyWWNXd2pCN3NVYm1ydngzNk9pdVRlcXAzSURrSW9BZGpPMmVVcHFTZ0RncVExRkl4MEFBS0E5WjlWMldOTytkK0srRHpOUCYjMTA7ZzFQWkFFakZGQ0o1bUQzd2Y2WGtBWjdZb0RWUFBRQUF0R2Zvd2R2UEwxNSttOHNHUUNwR1lHY21UamNTcGdBbzQ5Y2RxUUlBQUFDZCYjMTA7RVFMWUh3WjgvaWV5QUpDU0FIWWVydVBLd2lGZ2ZTZzVBQUFBb0p2QzZPT3FqLytwcUcrQnhKeUYwZGN6dVFCSVNRQzdHWS9OUi90QiYjMTA7RWdFQUFFQnZUSXJoQmJEREFwTmpseDVJelJ6WU5ZdFRnaHhJQ1FBQUFCaUdPQWYwKzRHZDlsRjEzaGFVQjVJekFyc0dYOCtmajRvZiYjMTA7ODFpL2tpSUFBQUF3TEM5ZWZwdkUrTUFRUm1LL01YVUlVQmNCN0VTcW0xSVlaVjBXdDYvTDdFc1JBQUFBR0xZWEw3K052NTUvZi9tOSYjMTA7cjBIczc5T0dWT2Q1Nm1vRGRSSEEza0lNV28rTDI5SFdlMUlFQUFBQVdCYUQyUFBxMjNjOU83V3o0alo0UFhlVmdUb0pZRCtSb0RVQSYjMTA7QUFEd0ZIRTZrVEJLK2FUYURqdCtPbGZWTnFuT2FlcktBazBRd0Y3RDBwelc0OEwwSUFBQUFNQVR2WGo1N2FMNlVzYUJjY2ZGYlp4aCYjMTA7cHlPSEg2WUtDUUg0cWJtdWdhWUpZTjlEMEJvQUlNdTJXVmx0dS9mOFdnZ01uT3BZQTZocmN4WUQyZU9ZNW92MERrSHQzRVptaHlsQyYjMTA7d25XK01NYzEwS1puLy9lZlovL2J0Q0tyS3JDeXB6ZnJjQ01SdEFhRzJKaCtKaFdBRE50b0I3RUR2ZTRvdGZmaFZXMHBCNkN1N2VoMSYjMTA7R0JXM0FlM2QrTFdJWDFPUDFyNnN0dXY0L1d6cDYzVU1zZ05rb2ZNQjdLcHlYK2NZUXVVL1g2cjBkKy80Ly9CelFXdGcwQVN3Z1V3NyYjMTA7ODZFZDk5UzFSLzVsVVNrQWRXM1ByMW41aEYrZnUxWkFWM1ZpQ3BHcVVoNFhQMTVqMm5IWkFBQUcwemtQZ3d3MldUZzd0QjFQcENDQSYjMTA7dXJhdlRPTUNERVcyQWV3NG5VZFkxR0JjQ0ZvREFBelY3b1ovTjVKMEFPcGFBTG92dXdEMjBtcThyMTBlQUlEQkt6Zjh1d05KQjZDdSYjMTA7QmFEN3NnbGd4N21iSmtWK3ErNEN3R1AzcnkrWkgyYXQ2MVpVYVREcndQMzdkNi9aQWdBQWRFL3JBV3lCYXdBQUFBQUE3bEpiQUR0TyYjMTA7QlRJdWZuMmxTS0FhQUFBQUFJQkhKUTFneDRVWHd5ckU0MnJibDd3QUFHeHBWbTN2TnZpN0Mwa0hvSzRGb1B1MkRtQUxXZ01BVUtONSYjMTA7dzM4SG9LNVYxd0tRa2VkYi9PM282L256OExUMTcycjdVQWhlQXdDUTJJdVgzK2JWbDdNTi92UlU2Z0dvYXdIb3ZtMUdZTy9GRFFDRyYjMTA7TEhUNDNsZmJidkhydWc4TDRmL3FldEI3VTl6Lyt1NTEvTDk1eldrd0xXNWZQVDZJNTNxWDhIODdOWDMrWlR6WHUxekUvNXZMcXAxMiYjMTA7SFBQWi9wcGw0amdHWXdCUTF3TFFjYy8rN3ovUC9pY1pBQWlxVHNnenFkQ3NyK2ZQUThEM3Y0LzgybGwxYmNvZXA4SEZHcDNsLzFlbCYjMTA7d2JVY00vanlFaDZFaExKdzM0T1NXYlZkeUNzQTZsb0ErdU0zU1FBQTdRbWR2NnFqT1BSa3VGNG5uZVFXcW53UUhuWllNQXhBWFF2QSYjMTA7Z0FoZ0F3QUFBSjN5OWZ6NXFQb3lldWgzWHJ6OE5wTlNBTjBuZ0EwQUFBQjB6YmphM2ozeU82YkhBK2lCNTVJQUFBQUFBSUFjQ1dBRCYjMTA7QUFBQUFKQWxBV3dBQUFBQUFMSWtnQTBBQUFBQVFKWUVzQUVBQUFBQXlKSUFOZ0FBQUFBQVdSTEFCZ0FBQUFBZ1N3TFlBQUFBQUFCayYjMTA7U1FBYkFBQUFBSUFzQ1dBREFBQUFBSkFsQVd3QUFBQUFBTElrZ0EwQUFBQUFRSllFc0FFQUFBQUF5Tkp2a2dBQW9EdStuajh2NDdlaiYjMTA7dU4xbEhyZml4Y3R2TTZtR2N2TlB1UWwycSsxZ3pUKzlycmFMNWJKVmxhbTVGSDFTMm8rVzZxdTc2cXhaRG5YVjBuRXVLemZZMVQvMSYjMTA7NzRKNkdBQzJJNEFOQUF4Q0RFNk1hOXA5Q0dwTmF6amVFR1FyNDlldzdXeXduL0RscXJnTkVvWHR0RHJXNjU1ZWh4QW9taVE0eGtrbSYjMTA7MmJhdWZEWE80ZVJTWEt1VmM5dGRLUy9oWFBkcnlNUGh5MDF4RzlnTzJ6eVVyZXA4TGhvcVEyV3hXV0IxSGJOdGc2M3hPaHpGclZ5aiYjMTA7M25xM2xLNXZVdWY1bFdOYnpodUxORHhzNEpvdHZyMksrV1dSYnk3cUNtNTNvYTZOeHprdTduOFkrNWh5amYzWFdwOC9sZzQxbDlkVyYjMTA7eW5qRzk1V3BCNHpRWDlzRXNNK3F5cUdVaEFCNXFScVJzeVk2WTlCQm9ZUDFycVo5bjRXT1U0THlleEE3Z2FHTmxUTHd0bGR0citQMiYjMTA7c2ZxY3o5WFhrNVpHQmRaNUhZSkpnbjI4eXlUUEpzbFhEYWQvbzljcUJrNk9Zcm5aYi9EWWQrSzk5bkRwV0VKUSs3UzRmVWgwV3VObiYjMTA7bHpWZnc5a1cxMklTNjVsdDhtZktOdEZUZytsMTI0dmJjcjRKWHo0djVaM3JqcFQxU2FMOWpHdHV0OVpkMzAxYUxxK05sZkVPM0ZmQyYjMTA7ZWMwMWQ2R2ZqTUFHQUdoUkRMQ0VEdnh4Y1J2WWFNS3JzRldmSFFLa3gwMk5ISVdFNVdaVWJCOHNUVzBuSHMvcjZ2akNTTnRwY2Z1ZyYjMTA7Nk5xMWFPMllqb3IyZzlacjE4a2h2MVRIZmpLRWZBTUFUMkVSUndDQUZvUUFTN1ZOcTIvL1cyMGZpdWFDMTh2Q3FMZFpmSVVidWxCdSYjMTA7ZG1PQTcrOGlyK0QxcWxDZXc0akVpNVg1dC90MlBjS0R0NHNpcitEMVpPbVlkanFXcERzeDM4ejduRzhBNEtrRXNBRUFHclFVdU00bCYjMTA7QUJjQ0poOEZzZWxBMlFsVDdNeXE3VzJIRGpzRXNyL0VvSHVmcnNWdW5MTHNRNUZSa0RqV3JlK0s3Z1d1NzZxWHY2aVhBZUNXQURZQSYjMTA7LzUrOXU3MktHOGthT0Y1KytRNFowQk1CRUFFOUVkQVRBWElFYmtmZ2RnVExSR0FSd2JZakdIVUNDMFN3SW9JSHZxODlqNjY1UFpZeCYjMTA7cUs3VWtycXE5UCtkbzRObkVOMVNxVlNsdXFvWEFDUFFnRS91d3UwNVNoQWJJZDgvMitEMWNhU244Rjd2LzFTdVJla0NXMjlEMC9jaSYjMTA7c2F3djVmS0NFZ0FBTUhYTWdRMEFBS1pDNWhQZDFQNWI1cDRlSlJpbXcreFhMdnhlZ1RML2F2SG05RnM1NG5VNENUQmRmbmVQaTFMTiYjMTA7bnZ6LytaUC9iblBzdDNydWRhVjdmc0dwN2Y4ZllnN2NHejIvN2ZFZlByUFBjLy9mZXI4ODZIZlVGY2J6ZnVuK21lbG43SkpQNnNkViYjMTA7dFB6YmJYckljZXd5MVkvTWpYMWYzVi9MSGE5aHVjZXlMS3QrZkE2dDROTGo2aU40dlduSXQxM3lqTmcxMEovTFBkQmhUdXdZeWxyMyYjMTA7VEhreFduNXU2YzUxV3lBdzE3ejB0Rnc5MVA5WGQ5WXhyOWF2K1V0cldoUzE4bU9vZXVXNWMzcXBUckhteCtmcWxKc245ZU8yVG1FOSYjMTA7RHlCaEJMQUJBTUFrNkVLRmM4dSsyc093M3RqS1hJZmdpSDVPdmtOamZGTnJtSldHaHFlYzMweC9kZ20wSGVqeHp2ZDVIWjVKZjZmbiYjMTA7bGJrUmVuMVd4MWkwdk00U2tQeVhaN2QxOWJtckFPNERhZlJ2ejY5b2NZNitmUHloK3V5aHBzbFl1L2FCdDF2OXU2THQ5VFNraGVUZiYjMTA7RTgzSDV5My9YSHBpcjNjNXB1cHZjNzFQcmNkYWQ5bTFQTks1cFQvdWtIU1dBR0RaOGJPNzVMMHY3akhnSmRmaVpzaEZFM1d4WHNreiYjMTA7QzgwM2JhNkI1UDN0UzlDa3lsbzl6bVdMZE94U04zOXl6WUhkclVIeWdMNFFManVVdDc3enlyVXNDT0g1cWw2dnJJM242RXZySWVzVSYjMTA7QUJFaWdBMEFBUEI4dzcvZTBKcTMvWXlPd1o1ZGcyNUY3ZnRuMnJpWHJVMHcrMHpPdCsrZzN5N3AvK1NjemdMTU1oSkU4QVd3NVRxcyYjMTA7WXJ3Zk5QaTJNS1RCRU44dGFkWW0yUGRudFYwT09ZcEE3dzNaTGpWdGxycFpnK3pTby9aa3lJRHBrMk90cCtkOXgrc2cxN2ZOUzd3NyYjMTA7VGFOQ3k3Tnl3UHladFVqN083MFAxMk9rZiswNjNOZlNZeHVJdld4Um5pMkhLRDlpSzJ1NzFNMGh2RGpzNE5Kd3YyVkRsYnNqMUNtKyYjMTA7ZS9ZaDFuTURNQnptd0FZQUFPaTNZVGJUeGMyc3dXc0pXbitvdHQrcWhyWUV0Vlo5Qkk4bFlLU2ZOWE9QUGREYXlMaVNyZEphZ2xOWCYjMTA7bnQyT0lwN0xWdkpEVTdEaGFvaGdZQzA0YkwyUDVCNWFEandGemkvWFhnTmtNME1lK0NjdnREaXZFTXEwM05tRDE1SUd2MHU1VTIyWiYjMTA7OUJBZDRYb3NXaHpiaVI3VC9aN0xET250TzYvKytjNzRKd2ZNaFQycE9rVUM5UnZQYm1mNm9pSFdPcVhKZXQvM0tJRHdFTUFHQUFEbyYjMTA7aVFZWXBPSHA2N2ttdllza21IS3FRZXVoZTR5dTVMdjBleTB1TkhnSXU3eUhSbnVvbGoyY2U5ZnZ0ZlNzdmRMN3FOeFhBbWtnVzY3diYjMTA7dTU3U05KUXlUYTZ0SlhndFBkOS8wNkIxTWZKaG5odnpTQlphVUV5bmdMRG1HUUxZMUNsUHJTSjhUcG9abnBHWU9nVEFMd2hnQXdBQSYjMTA7OU5Nb2t3Ylh2NTEvV0t6MGh0NzJUaHh0d2FIYWZLaldJUGFjcTlvcWZRdjNPRDFCay9QWWVzenBFUDJtS1dodWh3aFl0dWg5dmRIQSYjMTA7Y1NqNUlIZTJFUThIT293KzVHc3Y1K0lMWHNzODBxUDNmSCtTUDMwZVhNQXZERFRQV0hydm4xRFNUcXBPeVEzMTlTTENsODIrZTNFeiYjMTA7NXJNUmdIZ1F3QVlBQU5pZDlDWjYzL0Q3ZXVCNnRhOWVnTm9vWEJsM24zTlpXN1AwR3NzaU82ZXNoM1B1UW5xYitucGZQN2dBZTZYcSYjMTA7aUllTjhSeURaQWhleTh1YVA2cHpYZXl6NTd0N25MckZlMTlHTUIyQnBWdytkcUJPK2RsQmduVkt6bVVIOEJ3QzJBQUFBTVBhZStDNiYjMTA7VHFZcmNmNmV3b0xlZnUxSnc5dlhZeTZMNVdTMFoxOVRFRlBPZFQzUTExdUN1OHVBQTVPVzYzd2VZdTlKN1JuZWROMmwxN1ZNMmJJTyYjMTA7NEhCbmhuM1dvZDlyK2hMZzFuQnRLSmVuVjZkNHk4R0k2aFFwV3hwSHFXblBjd0Q0QlFGc0FBQ0FZV3lIMXE4Q0RMS3REUHVjY1FuYiYjMTA7MGV2c0M1YkZ0SmhqNXZuOWtBdHQrZVkxdmdzNTBLRUJTY3UwRVBQQURsM3k1dWNYZmljdkxONXByK3Y3aU83TFdLWWpzQVRhV1p0ZyYjMTA7V25WS3FjOFN2anBsSHNrcCtlcVVuS3NPNENVRXNBRUFBUG9sdlp0L0QyQm9mUk5UajhUWTVtc09SRXJUaUN4N09OZldqTUdZZFFUcCYjMTA7bHh2Mm1RZDJ6TWNONWRvOHdKY0d2aDdKR3hjUFM2Q2RNcGs2cFV0WnZYYzZlb0RGR3dGMFJnQWJBQUNnSDkvbnVYNXorbTAyeEtKMiYjMTA7ZmRMZWs1YkF6b3pMMmpwdEpRamxtd29nK01VY2pZczNEdFd6ZFc3WUo0OGdMMGc1Y05mRHVlNmJsQlVuZ2Zaa1RxbEhzcVZYTzJYeSYjMTA7OU9vVVN6a1N3d0xCdmlEN2w0QmYrZ01JQUFGc0FBQ0EzVW5qOGtRWGI0dEZ3V1ViVEFxOXNQZlMrMXI1ZXRYZUpUUXRST2dMODExViYjMTA7YVQyUGFjcVFXSVgrNGhQVUtWM3BYUCsrcWJOeUxqT0FKZ1N3QVFBQWRsZEcySFBJRWdCa3Z0VnVKR2daN1dLTzJwT3ZhUTdxb1JmYSYjMTA7OGdXd2k0anlRbUZJNzFBWDVwUDVyak51WjJEdmNrT2RFdkkwSWhLOGJscTg4UzZRUldFQkJJd0FOZ0FBd0RSWmVsU2VrRXp0SmJDWSYjMTA7WStiNWZUN3c5eDk1Zm44VFVYYUljVjdqN1dLTk9YY3pFRTJkY2xEVktWbWdwN0RQRVQwQUVrRUFHd0FBWUpxWUVtQllNUS81em5vNCYjMTA7dDA2TUN6aEdFOERXa1JtK25wTWh2U2lTWTUwVHZBYWlyRk9DNjRXdEkweDhVeVZSM2dEd2Vrc1NBQUFBVEkvTUlWdzFMRW1JWWRQMyYjMTA7MXROdy83N3dWa2pUejJpdjhLWWUwSnNBanZjbXN1d2d4M3ZXOFB1UXB1cTVqR2grOFJSOXF2MjcxRzFicGhRa3orVHJsSTJuTERtVyYjMTA7Z0hGZzk3QXZxSDdGSFBzQUxBaGdBd0FBQU1PUUhuT2ZEWTM3a0hyTlpaN2Y1d04vLzl5M1E0VEJqdEkxQjUyWXFxYzdYMTZJYWg3LyYjMTA7eUJZQ3h2aHlUMW15clZPeUVBNVdGMis4MkhPZEFpQVJkTHNCQUFBQUJxRFRNRVN6bUdNQWl6ZGFiQ0xNQ2lWM3cyQjhQVTJQU1NKTSYjMTA7ckU2NTBNQnhDSHoxMnkwakN3QllFY0FHQUFBQWhwTjdmaC9Td2x1KzR4aGpvYTFaZ25tZ25PQTVCeVBneFZLQkxtSmFYNEhGR3dIMCYjMTA7aGdBMkFBQUFNSnlVZ2czNUNNY3c4L3creHJsU1M4L3ZqN2hOT3JQTTlVc0FHeW14bE1ON241WktGK1J0S3R1a0ovbWF5d25BaWdBMiYjMTA7QUFBQU1CQmQ4TkEzN2NXWlR0K3hOOW9ML0tCaGx5K0JMRGJKQW9Pb3MrUkptVktCZWNhUlVwMXk1ZG50S0lDUkI1bm45em1MTndKbyYjMTA7Z3dBMkFBQUFNS3pjc00rK2U4eGxQWndEbmtlUVppQnZUci9KQzQwSHl6MFkwTHpBUU5KMWluSHhScVlQQWRBS0FXd0FBQUJnUUtFdiYjMTA7NXFpOXY4OGFkcm1yem1Hc29kNG5DVjcvRytNMVFEZVd2Q21MT1JZRXNaRkltVkpJdWV6WmJaOGplM3oxMlNhUUVUMEFJa0lBR3dBQSYjMTA7QUJoZTd2bjlQaGR6REdIdTYzL1NZYUw1WThZdE10aTl0U1ZCN0pKRkhaR0lWUTlsK3hUcUZBQ0pJSUFOQUFBQURDL2t4Ung5MzVzSCYjMTA7bEk0RldRbDEyaHYxMXJpN3ZDRDU5OWZyMThVZVh4Z0JmWkNSQjk2UlBXT1BPdEFYUkUyTE45N3BxQ1FBYU9VdFNmQkxnU3ZERnA4VyYjMTA7OHZlV29YK0pwWU9rZ2FURlhOT2pQcHp6eE5sN3gwaWxXazg3K2ZlOU5qNXVwclp3Z3lkZHoxcDgxTk4wTFRSZGIvUWhQdFgwbTdtdyYjMTA7ZWlpVkRIOERBRmhJZlZIVll4dFBmZjk5eVBlWWRZdGg4Y1lyNmpwRVFQTHhkWXY5ei9SK1c3bkhRR0ErdGZZZW9xOVQ3cXY4SzNtMyYjMTA7YWE1cEtkc2xvSnlQZkM4MnlibDZBTHFZWkFDN0ZrU2M2VFozajhIRTR4ZitaS1A3VENGdHBNSlpOcVJGV3dkUEdtcmJmMy9VNy9zaSYjMTA7RDQwcHY0WFYvTFlZS1YzbCsrUkhxdW1hYmZOT0lENDUyL0E5QUFERXBmTy9zRjY2Y1lkOUUyeEE5Q1Q0WEQwRHY2disrYm5sbjBwUCYjMTA7MGZleVZYOHZIVVNLN1VaQUd4R1Fkb2h2c2NUbFdPVzRkalk2cDA0Qk1JU2tBOWkxM3RSejl5TlkzYWIzOEdSb1dxMWQ4M0NmSVVnRiYjMTA7ZDE1OXYxU3NXV29QaWdHa3F6UktGd24xZEo5enR3SUFZaVVMSVZaMTg1M251U0J6SXdXdzlUbkZ0M2hqd1pWREpQZFhyaDA1UG5mOCYjMTA7aUlQdE03VGVIOXNSajRYK0xBbHFJN0E4YnhuWmMxenRNeCtwTE04OHYyZEVENERPa2dwZzZ4Q3d1V3Z1VFkzbkd5K0YyMjlnZjdzeSYjMTA7K0N5VllHc2c2WHFtNlRxZjJuUXRBQUFFS25mTm80bStMK1k0MGlncVg2RDhrc3VGbUdnUSsxN3ZzMTJmd2JjakhwK09kSlQ1dGt2MyYjMTA7R05UK1BqMGlMM3F3NXpyRk43SW5jK09zSDVBWmpoVUFPa210Qi9iUzBidTZpOHRBMHUxQUs3VlVWZ1pmQjVLdXgzcU5NN0k2QUFCNyYjMTA7Sjg4NnZ1bXdzcUViK3JVcHpuekhHcHEvTklnSVBFdEhPc3pjNC9RSzd3ZDZ0cGJ0dkhZL3lZOXRqKzNTL1FodzAyc2JRK2YzWER2eSYjMTA7Tlkzc3VaQjlodXo5YkZ5OHNlQ0tBZWdxdGFjL0hnN2FWelJ6MTI3eHdLR2Q2d05uN09tYXVmR25EWEdlaDVaRGNqd0FBUHVsQVlRdiYjMTA7bnQzT1JuZ2VrbUNEYi9GR1JtOGgxdnRNZWtWTDU2YmYzT09hSlE4amZPMjJ4N2JNU1N3dnFmNWRiZGZWdmZ4M3Rja2MzUkpvWEdyNyYjMTA7QytoVGJ0Z25HL2dZR05FRFlGQ3BCYkJMTG1scldZREhsRUlQN0FYSEJBQUFYcEQzRUF6WTFiS0hZd1NDSmkrTXFrMTZua3BIamorcSYjMTA7N2NxTkU4eCtTbnBzUzJEN1grNXhGSUVFdFdXYXY1Vk9Pd2dNWGFjTTF1N1hGNjVObmVJZXFGTUE3SW9BTm5aNVlKTDUzell2YkxjNyYjMTA7Zk81ODR1bTZJVjBCQUVpWFRIRlEvYmp6N0pZTk5YcEtBMlpONjhYY010UWJLZDUzMVpacE1QdlVQZmJNM3V6eGtDVGdKejIxcFpmMiYjMTA7dmZiUUpwaU5Mbm03ZEk4dlo1b2M2U2poSWZoZWlLNFowUU5nVjZuTmdWMDQvNXlDK0ZtYnhTNmxvYldTZExiT242VnZZK2V1M1R6YiYjMTA7c3dUUzlhaER1cG9yZGszWGhmN2RsTkxWbXA1NUQ1OGo2WFZCRVFFQUdFanVlVzQ5MExvK0grQzdHZXFOU2RONXFXOXF6OWJTWGptcCYjMTA7YmNjakg5S0JQbmZLdEgvU1llVnlwSVZja1ZhZDRtdTdaQVBWS1JsMUNvQ2hwUmJBdHI3VnE3OXBQNXZxeFcvWnEwZUNnaWR0MzV4cSYjMTA7b0Z0NkUwaFBvOUxaZ3EzSGthZnJ2TVh1OG9BNjc1aXVsekwwMEQyK3VMR2s2MVI2ZEh3Zkt0clRkU1NBRFFBWWlnUVJmQjB2bG4wSCYjMTA7R3d5TE44cFE3eldYWjFUYnhmK3dKenJpb0hqbVdYQ20yL2JmWTZ4eEkyMmh6ekpmZHZVell4RklXUE53bFdmdVBIbjArL29LZlM3bSYjMTA7cUwyNm05cWlHL0l3Z0Q0a0ZjQ1dnbEZYZ0phZzRIM3RJYVNvUFpqVUM5dVZtM0FBMjdVTGFGN3VNdXhIL3JaSzcwdEhEL20rMC9YNyYjMTA7Z2pET3RzTDZBY25kU2trU0FBQUdmRzR0cXpwY2hudzN2U3c5bGlrRmVtNzgrNElOb1EvMXZrcXNqcFpyV3pDOFBzaDd0SGp1LzJ0ZyYjMTA7KzlEOTZLMTlPRkNiVWdMWk1yM0lPM3BqdzJoVmJaOE4rMlE5MXlsTnlMc0FlcEZhRDJ4NTBIakZaUjFFMGRObkVNQiswa2pzS1YzZiYjMTA7azVTREJCWklDQURBa0tSaDd4dnRzM1Q5Qmh0aW56NGtaMzV1N1BrWnNYanVPVjZuK05zR3RlZjZzNDhPSk5JYjJ4SEVockZ0Nlp1NiYjMTA7Y3lFamNmcDRhV1padkpGOEM2QXZSR2RnZlZEcm8rY1BRNGQrVGRjK2V0dlFZd2NBZ0RpZkF3cm5YOHh4MGRkaWp0cHp0R2w0K1MxRCYjMTA7dllITzkzT3BDMFd1cW0ydWkwWCtWbTN2M09QSWdic2RQdjV6eTJrS01kMjJwYStEbEFTM3M1NiswdmRDTk9lcUFPZ0xBV3lNWGFGYSYjMTA7RzFpc3dHMUhRM000RzVJQUFEQXdYNC9uN1dLT2ZjaDJQQllBN2RvL0V0U1dVUU15bC9XcytsK24xZmFuZTV6M3ZLMmNGSVhCeXJEUCYjMTA7Y3RjdjBSZXIxQ2tBUmtNQUc2RTZKQW5NRDhiMHdCNk9QTno5M3JEUmtBQUE3TXBTbC9RVmJHaWFyb1NoM3NEd3orMDMxYmJVM3RuUyYjMTA7TTd0TnIrd2pYVEFQYU1wanBmTjN3am5xb1VlL3ZGaHRtcXJrUzUrTFJRTEFXNUlBZ2FLeVF4Q05ERklCQURCd1hYTS8wbUtPbWVmMyYjMTA7ZVNSSk5pUFhJSkY3UDYvdWE1bnVZZVhzNjlrc0hSMG80Q2M5bjg4TWVhblk0VHVZUGdUQXFPaUJqVkFmNkVwU3dZYnBWZ0FBaUo2bCYjMTA7b2I5ckwrellGMi9jbXBGZGtGQ2I1MTU2Wkx2SDN0Z1d4N3B3SHRDVXIrVEZpSzkzLzNuWHZLVHR6K09HWGU3MEdBQ2dOd1N3WWEyayYjMTA7RG52NERBS3R3MkM2RlFDcGV5QUprTEtoRjNNMExONjRDYWp6QVBjN3BsZ0c1TldQRDhiZGFWUEJJamZzazNYODdGUmVpQUtJQ0FIcyYjMTA7YVd2VFVPbmpRV2xHa3YvU29Cd3pYVk5vRVBMQURxVEpOOHlWNlh3d0JVTXU1aGpUVUcvdWQwelNtOU52VWdaWTVzVG1lUmg5MUNtVyYjMTA7dXVHNTl1dWhvUzdLU1g0QWZTT0FQZTJIcExMRjdvc2V2dEw2R2JlUnAyc3hjcnBtRTJvUUhuRG5BZ0FTSlExKzM4dm1Mc0dHV2ZYaiYjMTA7dkdFWEZtOEV3ckV5N0VNQUc1WTI2WDMxNDhyWHR1cXdNS2h2OGNZci9XNEE2QlVCYkZpRHhlOTNXYWxZSzhZTDQrNWxBdWxxWFZGOCYjMTA7dVVzdmJFM1hNK1B1VStuUlJNOHRwRmdXMDFnRkVxY05mdCtjb2NjZG5oc3l6KzlqRytvOUo3Y2dZWlo1ZzVrK0VGYTVwVDNhOGpOWCYjMTA7UFh3bkFMVDJsaVNZdk1JMUw4QlE5MWZWYVBxaWZ5TkJRbGwwNU5sZ29UYXU1T0ZLZnNwYjJyTVd4N1JPSkYwdEFYdDVlMzJ0NlNybiYjMTA7WFhyU2RkdG82NUt1eFZReXRhYlR2SllIWFMzZFh1b3g4T0IrRG43ZjYzL0xOYmw1NlpvQVBiazNsQlVBMG5kcGVINlFZRVBXNGpOOSYjMTA7KzRZV2JDaGJQdDhBeVpBWFdkVno3SzJuZlVZQUc5YjhWQmp5MC9jWG81YTJqbUU5aGR1V281RUJ3SXdBTnFTaDlMN0YvdWV1Tmd5MSYjMTA7cXNUNlBoNEpJcVlRd0Y0NWU0L3pNZEoxU2l0QnYyK1pwN2NPbm1rdzE2L0pObSt1QWxyb0NvaWVjWFFQalNGTUpkaHdZd2cyZkYvTSYjMTA7MFRKRXU5cHY0UWsyZkFtd1R2TWR6NHljQWsrK24yayt1WSswQTRMdjNqN21LcU5sZS8relp4L3JpOUhNOEYwQU1BaW1FS0doSkkyRSYjMTA7ZHdFZFVwYkNuRm1hcnA4Q09Sd0p2QzdJN1R1VEFMZThsUGh2MVRCYWtSem9tYVhYQzlPSUFOUFE1MktPTVMzZWFIVkVGb0hXaTVmViYjMTA7VnVqMjkzYVRaN1ZxKzh2RkcweGoxQi82dEhiKzlSVVd1amhqMC8xMjZKbzdhS1hTRVExQW9BaGd3K25DUFg4NCs3ek5RNUR2L2oybCYjMTA7WHNMVnVhemM0OHVCaHoybjY1enBMM3IzVVJwTkpBTjZaSGx4bCtxUVlVdGd2aVNMWUVJc3dRYnZuS1hhQzdWcEtvNVFSMmNWeG5PTCYjMTA7aHJ5QXJBVmFaU3ZyQVZjTnVxSmIvWEhtMHB0eWhnWHcwR2ViVlBKVDd0bk44bUkwOC93K1ovRkdBRU1pZ0kxdHhiYXVObWtNU0NENyYjMTA7ZHNTdmxybWYvNUR2VG5HK0xIMDVJT242Ym8vcFN2QjZHRHN0YkFvOFVScjJTVFcvelhwS0h5Q1Zad2ZyWW82K2V5ZlczdGVXQU1ncyYjMTA7c3NzcUx5RFBhdHZUWHVSMzVId0FBN0owdkZudStIczY5d0FZRkFGc2ZDZUJ1R3JMdFRFejVyeHFNc2R3THQrZFlqQlF6K2xTdDdIVCYjMTA7OVZMVGRVWU9IOHlLSkVCUFNzTStxVTRoWWprdlhzUmhhaXlCZ016emUxOXZ1anpFRXplK2VFL3RtYkVreXcrQ3hRNEI5OC8wbGh2UCYjMTA7YnNjdlRWZW4vNzlwK3FZTmF3UUJHQm9CYkRnTlhNczhjVEtuMWNFZURtRTd0L0JmcVV6TElIT0VWZHQ2eitsNjVIN00yY3diOFdHYyYjMTA7OFlJQVBUVXNDc051cVFhd2ZVTy9IeGlTaWdtV0NSTEU5WTNjeWhxZVEzeUxOMTRGSG16dzlVaWVrMHRnd0dLSHdBKzd2QmlsOXpXQSYjMTA7dlNPQVBYRWF2TDRJNkpEZUp4SnNsWFE5RHl4ZFZ4UEsydExvM3hpM1hkR0lSbDk4QVp1ajFGNllhSkROaDk3WG1DcmY4OUJSdytLdSYjMTA7bWVFNUpXUysrejYyRjNyMEJCNUdRUklBTnJybWdlOVpjOUh5LzM5L2ZrMXBIU3NBNFhwTEVreVhUbS9STlhodENmekp3M3FYbmc4UyYjMTA7Yk0xam5idFpBekxuQWFiclIwM1hNdUpzKzBsLzN0Y2J0N3ZPbjY2cmFwL293NWswK3R2MG1KOVJtcURIaHJpdlRKWThtbEl2bDRVeCYjMTA7WFlBcEJodHlmYW5mVkNkSm5iVjhwazQ3OXdRYlFyK3ZDczg1SE1qelZrUkJreE55OU42ZXkwOGliRlB3YkltaDVOSW1iUGo5MGRONyYjMTA7UnR1MkI1N1BCSURCRWNDZXRxekZ2Zy91TVdqU09nQ3FQUWEzRFN4cllIRFo4dmhpVHRkVnRhMDdwT3MyNE5vMlhaZXhadGdxalZZRCYjMTA7ZmU2OU5wWUxEUlpJZzlqNmttQk9VWUtlU0I2OE1OekR5VXkxNUd3QmJIcGdZK3JCaHZjTnYxODhVNi83N3FzWXloRExmYjl3L3NVdSYjMTA7UStFTFlCZGs5Y0hNSXF4SFpwN2YzM0paMFpHVS94OE5iZGxsaXpvbEoxa0JqSUVwUktadFlkeFBncXd6Q1I1MjZiMHJmNk9CeDdsKyYjMTA7bHNVODRuUzE5cjYrMDNTOTdKaXVOeDNTbFI1QWh2emE0dDRBK2xRWTlwR2VNVmtpNTJ0NitjYXdWQkJzOEpZSkp5MmY3NElQTm1nUCYjMTA7Y2QrenpZVytDSXNCejEvRFNIWEJUMTkrWVYySUZocW1XcHBpTzBmeXpsWExHRUZUblhMRjRvMEF4a0lBZTdvVitjeTE2TFhieHdKYSYjMTA7T2hUSjJ1dm5hQUlQU0tzZTA5WGFHRDBqOTV2U3REUTgzRzB4cnlYNnpIZVdYbFdyaUlJMkw1V1ZjdnlXMFNCZnlCbWdYUEJPTDVZOSYjMTA7dWJmT1BjR0dXSUpmbHBkWHF3akt1N25odWJZZ3QzZGl5Y3RSZFVyUXRzUkJEK2ROSHZpQkFQYlBmTzNHZjE2TWF2bkY5Q0VBZ2tBQSYjMTA7ZTdwbVBUY2dldjhzclRCall3NHF5ZHlXZTBwWEFxNDIxdUdtckhDUE1Sc1YzeHNXTHY1cFJOYk85aEtWM3RlQXYxeFl2UER2cm1WTSYjMTA7U09XRXovc0llbGV1ZW56bXdNL1Awb1dsem94czVGSkdmdW45ZVoyUmxiL2VONzRPRTNORDJzV3duZ0tBaEJEQWhxV1N1Ky94czFKLyYjMTA7NExJMm9tNTd2a2JGQU1mSUF6RXd2dHpacGdTU29mTjVqQ2VveDIwWkRYTFg4NHMrSU5ibk1GKzVVSjlHWk43MDdCRlRzRUduRDdLVSYjMTA7aCt0UVg4N3I0bWUrOHU0Mm9sN3hJVXBtNUpLT2tIMXYyTFhrc3YvRGN1K2NhOXJpQjE5SGlJV2hUbG1SakFER1JBQjd1cXhCekExSiYjMTA7MVlyMTRaaUdDb0JmYUJERDJydGFndGpyV0VaVlNPT3gydVRGMElYeFQyZ1lBVC9rbnQ4dm52eDhUb3dqTnl6SExLTlNpdEFDVlBwUyYjMTA7SWUvaDJxSlpZY3dqUWFlejF1WHJIczk1S3M5TjFnNG5sNlRXVCtrbTkwUFRDOEl6TFZOZkdtbjY0QmdsQjJCa0JMQ25hNThCRDFiTyYjMTA7Qm9EbVJwWjFZVmFaNjdhc0dobXJnSHNnSHNyeHVjZFJEZFlwZCtoOURmeGFMalJaZU9iT2pUWFlZQzBQcFd5NUNXV3FDQzN6cmgxVCYjMTA7SlkzQldsZElMOXliRUh2aTZyMWJHT3ZJT3hiTis4WEdlUDE1cm1oMzc2eWF5aTFHamdBWUd3RnM3SU8xc21PdVpqUTk3RXR2em5sdCYjMTA7VzBRMnh5SHdMRzBRdE1uTEVpRDU2QjREMmJrT1dkLzMvWG1vOTZRMGp2NVBqKytneFVkd0x3TS9sd3VsYXc3U1NPQ3JLUkFhWmJCQiYjMTA7ajNuVm9pejhYSlU3VWhabVk3L1UwK2VTcFh5L2xua1dWd1FqZDg0ajhuTDB6cmo3OWtYSFpRaUJiQWxjYXoxNTdld3ZlT2xKL0V6NSYjMTA7WnR4UFJxNFZFY3liUHhaZlhyb2dId0lJeVZ1U0FBRTdjZlJLZ2Z1cFo0b3ZBQ2FOKzV3VVF3SU5jcGthNU1yWnA5dHdlbjljYUFOTiYjMTA7L2x0R3UwakR2blEvaGh1WGZRWkxOQUFnMjZHVzJUUDl1Y3ZpcHA5Q21xZFh5NTlENTEvOCtIQzcrSERvOHd4cllNL2FnSi9wZVpYNyYjMTA7RExUVjh0ck1zTzljLzNtVFdBOHhDUmcwemFkOGxHS3dvYnFHbDhhNXBPdnA4Tms5QnJNM1d2NFZmZWJoMmoyMExmUG1IY285NlZtKyYjMTA7R3ZFZTJ0NFhoOFo3L2o2aXRXdFdlczJ0ZGFYTU15MExnTjQreVI4M0E2Yi9OcytjMVBMTVVZYzhrdytjVDJJc2EzUE5BNVlYNVZLTyYjMTA7WEd2WnNOWmpMOXdFU1hsWXBjTVg5emlhcjQzTkJOYTFBaEFnQXRqWUIyc0RoSW9ScnRiWU9pQVpNTEdHUmFhQjZJdU9IM0hzZmdSVSYjMTA7UHRZYW5QVjlwTmRhMmVJelR3YStGNlUzNG1yQWhya2MvK1dPZFZOVGV2LzFUQnJYU2JEa3VVWit2c3VVS2RLYjBEMGZrSllBeE5HTyYjMTA7NTNXeHpZTXZuTmZEUy9WMWRVN3pQVndIdDcwT0RjZjhVcjZYUU1ZeTRESkJYbXpkZGJpbXR3a0VHeGFhejlxZSs1bHVIMnY1NFdHSCYjMTA7Wjh3K3k4QmwxNEM2ampqTFhuaGVPaDc0bmhlYmhuTzYyY085a1d1YXRDMC90dlhrKzRiOFVYUTRwSG5QMTJScjFTWlFQSld5VnRKRSYjMTA7NjhHUEhjcUcrckZ2T243L1BPS3lWWjQ5emp2OERRQ01qZ0EyTEEvcSs1THl2RnBNanpLTUdVbUFsUFFReFBZNWNyc0hPUHZ5NXdqQiYjMTA7dzhPZUd1MWR2UlRFS0hxb3EvZDFYZ2Nkdm52ZjF5R2tmTitXQkE0K3R2eWI2SWQ2YTRCS2d0anJIcTdkd1o3em43amFjWjcvMlo3UCYjMTA7NFN6QTU5dXVMemw4K2VNc2tOdmdpNHhHb0t4dExPZXlIYjh2bEdzOVp0bmE5c1hvQTJ1VUFOZ1g1c0NHOXlHdXp6a0VRMXc0WlUrTyYjMTA7Ky95dzJoQytxZXZ6SWRtYXBnOGtPd1p1WEVpRDdGM0NlVTNPNjQrUWU3NENBY25iM2wrcEJCdTBaNis4cklsOU1mQVBXcTZqMy93aCYjMTA7SFY4V0xzM0Y0bVdhQi9LTTdmcnpYTjdlNVVEN0FrQ3ZDR0JQVjlGaTN6NFhCT1BoUy9XODBOcUNGTzA5WGEyZncxUTNHS05obHJ2SCYjMTA7SG5kWENaMldOREkveVhsSkR5Q3VNbUFxQzByM0dNeXl5aE03ZjVtWCtVVExqdGdDVlJKWVBlM1FpeGIyL0NIUFpQT1c5MGpvWkYySSYjMTA7UldMeitROTkvUWxpdDVNUHRDOEE5SW9BTml4NldhbGI1MkZMdllmZFRjdDBQZXdwWGJNV2Y1TDZBL0JxMTNUVmVSU1B1ZlVSV01QcyYjMTA7WG52dC9lWWVnemQza1o2S0hQY0g5eGk0WHRFb0IxcHJFMEJJTWxpcWMrWFBYQnlCYkFsY3Y1UEFPd3VmalZaWFNpZUUzMTNjZ1d4NSYjMTA7WWYzYmtPdENKSHI5YjF4Nkwvd0h2MmVNNmZWbG40czVBMERTYzJBM1RLc3cwMjF1L0NoWmpWc2VIa3IzL0VJVVpZU0ZlWnVBZ2N3RiYjMTA7ZDFPbGdUU1kxbTFYYXRicklBK1NtV3UzOEUyTUQvbHQwbFdtdXloMTBaRmloM1I5MytIQkxqWnRqdmxZOCt0SzA3VTBwdWVobGdtUyYjMTA7cG0zbUcrWkJEbU0zTkNUUFNmNWU2UXVzaGViZGtPZHVsSVdSMW5wUEVzQUJkaXNEckhPV2JsSU9ObWpRWlZzV1pyV3lNSVJGbjdkbCYjMTA7M3BxQXo5N3loenhYRjlvSlo2RmJ5UFdrdklncGF2bUdsN3U3bFEyWnRyR1dldTBQQnJ4dUtWZ2Iyajg1dVF2QVByMzYzMzllL2QzMSYjMTA7d1N6RUZYZXJpdXJ2UFIvQzcyMERrUkdubGZRb2VlbmhhdGNWdDJYT3h1Z1dPdFFnNlA4Rm5LNTNWYnJPWWl5c3FyUzkzK0hoOCttSyYjMTA7OG4ybTZZZlFoZ05YYVZWMGJhUlY1L0tLcWpGZUd0Q1diYVkvRC9YbkdBRWRDYWlWV243ZDZGYUdGTERXUUVZVzRLVXJkbmwyME9CZCYjMTA7Y0dYN1N6MEhBNzRPWlN6elJldDBXU2RENXFzRXlzRjZlVGpVUW5MYmN1OW0rM09NTk5kT0RQTUFrejhQUFdDdmFWZXZKNTBiTjdBOSYjMTA7V2wxSldmdHNtVG5mb1V4NGVyOG44MUsrU2g4SllKK24ySVlFa0E0QzJQMkxLWUF0Rlc2bzB5UjgwZUYvTVQ0QWxHNjhGYmZidW9wMSYjMTA7NFNERGc5VytuSWIyOEVvQUd3MTVZeHZVZnVxbC8vOVBZOU9sTXdJSndIVEx3T2ZhTGszdEdhbmZuM1lxdUdja1NiTDVZL3ZTMTdYTSYjMTA7SjFzdnRRR3BLK083M3BPNTMvVkZ4Mzg5dTMxZy9uNEErL2FXSkppMHZOcitGZWl4eGJ5Z2x4ejcrMENQcllnOFhVTUxZTi9SaUVWTSYjMTA7R3ZKclFlb0FtRUFaV0ZEK29TRi8zRGZrQi9MSnRLNzNsS3lNY1FNQTJDc1djWncycVloQ25MZExqaW5tQVBabG9PbDZGOHZRNkJjZSYjMTA7TXVYWVExdTBidVVBQUFBQUlETGFDOTAzNnZtS09ka0JoSUFBOW9ScFJiUU04TkN5bUN0SkhTSVlZcm91RXNpMklaM0RWY3d2QkFBQSYjMTA7QUFCTW1yUlpmZXVrckVnbUFDRWdnRDF4R29CNzU4TG9NU3pIOEVkMVRHdlN0VmZTYS9rMGhha3U5QnhPM2Y1N1l2OFo2MXppQUFBQSYjMTA7QUtaTmUxLzdPbDF0bUw4ZFFDZ0lZR01iYkoxVjJ5ZTNuOERnYmJWOWtHTklJWGdkWUxxZXBEUlBzNXlMcm9MOVRzOXhMUEl5NHNvOSYjMTA7THRTNnBPUUFBQUFBRUNsNlh3T0l5cXYvL2VmVjN4My9WdDdHelVNN29SZFdGeC9UVGV4elJPbEt4TEp0MC9KcG1wNFlLcnN0Q2ZvOSYjMTA7RFo0V3RaODNVNWxUUzlQMXhQMVk3WnAwN1NkZEQydnBlbGo3dVNYL1ByYVdhN1YvMzJzYTMydDZGaEdsaVJ6cldaZS9yYzd6RlZVaiYjMTA7QUFBQWtIVDdxZlMwUFcrcmRzRUpxUVVnRkc5VE82R1lna3dCcDJHcEZScHBPVXk2cmttTlh0TjF1NEk0K1JVQUFBQUFtbGw2WDErUyYjMTA7VEFCQ3doUWlBQUFBQUFBQWlkTlJ3YjdwRU85WXJCNUFhQWhnQXdBQUFBQUFwRTk2VmpQM05ZRG9FTUFHQUFBQUFBQkltSzRYZHU3WiYjMTA7YlVQdmF3QWhJb0FOQUFBQUFBQ1FLRjI0TVRmc3VpSzFBSVNJQURZQUFBQUFBRUM2Wk9xUUk4OCswdnU2SUtrQWhJZ0FOZ0FBQUFBQSYjMTA7UUlLK1hyL09xaDhYaGwwelVndEFxQWhnQXdBQUFBQUFKT2JyOWVzVDk5ajcydWZUbTlOdkpTa0dJRlFFc0FFQUFBQUFBQktpd2V1aSYjMTA7Mmc0OHU5NjlPZjIySXNVQWhJd0FOZ0FBQUFBQVFDSmFCSzlGUm9vQkNCMEJiQUFBQUFBQWdBUjh2WDY5Y1BiZzlTY1diZ1FRZzdjayYjMTA7QVFBQUFBQUFRTHkrWHI4K2RJL3pYVjhZLzJURDFDRUFZa0VBR3dBQUFBQUFJRUpmcjEvUDNPTTBJRXRuNjNVdDdxcHRRZW9CaUFVQiYjMTA7YkFBQUFBQUFnRWg4dlg0OXIzN0lQTmZ5ODd6bG56OVUyK0xONmJkN1VoSkFMQWhnQXdBQUFBQUFqRWdYV3J4cytXZG5PMzZ0QksvbiYjMTA7YjA2LzNYQUZBTVNFQURZQUFBQUFBTUM0Wk03cXN4Ry9qK0ExZ0dpOUpna0FBQUFBQUFDU0pYTmVFN3dHRUMwQzJBQUFBQUFBQUduNiYjMTA7VW0wbkJLOEJ4SXdwUkFBQUFBQUFBTklpdmE2WGIwNi9yVWtLQUxFamdBMEFBQUFBQUpBR0NWeXYzcHgreTBrS0FLa2dnQTBBQUFBQSYjMTA7QURDdXN0bzJycCtGSENWb1hWUmIvdWIwVzBIU0FrZ05BV3dBQUFBQUFJQVJ2VG45VmxZLzV2THZyOWV2NWVkSnRSMXUvNStxQjdjMyYjMTA7dFgrWHVzbTgxamY2V1FDUUxBTFlBQUFBQUFBQWU2SzlwZ3RTQWdDZTk1b2tBQUFBQUFBQUFBQ0VpQUEyQUFBQUFBQUFBQ0JJQkxBQiYjMTA7QUFBQUFBQUFBRUVpZ0EwQUFBQUFBQUFBQ0JJQmJBQUFBQUFBQUFCQWtON3U4TGVIWDY5ZnowbENBQWpPSVVrQUFBQUFBQUJTOE9wLyYjMTA7LzNuMU44a0FBQkJ2VHIrOUloVUFBQUFBQUVBb21FSUVBQUFBQUFBQUFCQWtBdGdBQUFBQUFBQUFnQ0FSd0FZQUFBQUFBQUFBQklrQSYjMTA7TmdBQUFBQUFBQUFnU0FTd0FRQUFBQUFBQUFCQklvQU5BQUFBQUFBQUFBZ1NBV3dBQUFBQUFBQUFRSkFJWUFNQUFBQUFBQUFBZ2tRQSYjMTA7R3dBQUFBQUFBQUFRSkFMWUFBQUFBQUFBQUlBZ0VjQUdBQUFBQUFBQUFBU0pBRFlBQUFBQUFBQUFJRWdFc0FFQUFBQUFBQUFBUVhwYiYjMTA7YlJ1U0FRQUFBQUFBQUFBUW12OFhZQURBZVk4bEMzMlZjd0FBQUFCSlJVNUVya0pnZ2c9PSYjMTA7IgogICAgICAgaWQ9ImltYWdlMSIgLz4KICA8L2c+Cjwvc3ZnPgo=" \ No newline at end of file diff --git a/private_gpt/ui/images_icon.py b/private_gpt/ui/images_icon.py new file mode 100644 index 00000000..0bb1fe9e --- /dev/null +++ b/private_gpt/ui/images_icon.py @@ -0,0 +1 @@ +avatar_svg = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDIwMDEwOTA0Ly9FTiIKICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy1TVkctMjAwMTA5MDQvRFREL3N2ZzEwLmR0ZCI+CjxzdmcgdmVyc2lvbj0iMS4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiB3aWR0aD0iNDc0LjAwMDAwMHB0IiBoZWlnaHQ9IjI0OC4wMDAwMDBwdCIgdmlld0JveD0iMCAwIDQ3NC4wMDAwMDAgMjQ4LjAwMDAwMCIKIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiPgoKPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsMjQ4LjAwMDAwMCkgc2NhbGUoMC4xMDAwMDAsLTAuMTAwMDAwKSIKZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSJub25lIj4KPHBhdGggZD0iTTIyMzIgMjExMiBjLTI3IC0zNyAtNjggLTk1IC05MiAtMTI4IGwtNDIgLTYyIC02MiAtNiBjLTMzIC00IC0xMDYKLTE2IC0xNjEgLTI3IC00OTAgLTEwMCAtODM2IC0zMDUgLTk2NiAtNTc0IC0xNDkgLTMwOSAzMCAtNjMwIDQ3MCAtODQyIDEzMwotNjQgNTA0IC0xODMgNTIwIC0xNjcgMyAyIC00MSA5MyAtOTYgMjAyIC05MiAxNzkgLTEwNCAxOTkgLTEzOSAyMTYgLTYzIDMyCi0xNDMgNDYgLTI3MiA0NiBsLTEyMyAwIDE4IDMxIGMyOSA1MSAxNzEgMTk3IDIzOSAyNDUgNjIgNDQgMjI1IDEyNyAyNzYgMTM5CjI1IDYgMjkgMiA1MyAtNDcgMzIgLTYyIDEwMSAtMTU4IDExNSAtMTU4IDYgMCAxMCA4IDEwIDE4IDAgMzIgNTggMTQxIDk5IDE4NQoyMyAyNCA1OSA1NyA4MSA3MiA0OCAzMyA1MCA0NSAxMCA0NSAtNDcgMCAtMzUgMTUgMjcgMzQgNTMgMTcgNTYgMTkgMzggMzIKLTEwIDggLTI0IDE0IC0yOSAxNCAtMjEgMCAxOSAyMCA0MSAyMCAyMCAwIDIxIDQgMTYgNTggLTcgNzEgMTQgMTI4IDUyIDE0MgoxNSA2IDUxIDEwIDgyIDEwIDQ5IDAgNTQgMiA0MiAxNiAtMjAgMjQgLTY5IDQ3IC0xMjkgNTkgLTUzIDExIC01NSAxMyAtNjggNTYKLTI0IDc4IDQgMjAxIDYxIDI3NCAxNiAyMCAxNyAxOSA1NiAtMjUgNzUgLTg0IDExMiAtMTc1IDEzOCAtMzM0IGw4IC00OSA3MAotMTkgYzg1IC0yMyAyNzIgLTExNCAzMzkgLTE2NSA0NCAtMzQgNTEgLTQ1IDcxIC0xMTMgMTIgLTQxIDI1IC04MyAzMCAtOTIgNgotMTUgMiAtMTggLTIxIC0xOCAtNDQgMCAtMjEgLTEzIDE0MSAtODAgODMgLTMzIDE4NSAtNzYgMjI4IC05MyA3MyAtMzAgNzcKLTM0IDcyIC01OCAtMyAtMTQgMSAtNDUgMTAgLTY3IGwxNyAtNDEgLTY2IC02MSBjLTcyIC02OCAtMTM1IC0xMjAgLTE0NSAtMTIwCi0zIDAgLTYyIDEwIC0xMzEgMjEgLTc4IDEzIC0xOTUgMjMgLTMxMCAyNiAtMTY3IDUgLTI0MCAxIC00MzUgLTIzIGwtNTAgLTYKLTIzIDQxIGMtMzAgNTQgLTUyIDE1OCAtNTIgMjU2IGwwIDgwIC0yMCAtMjUgYy02MSAtNzggLTg2IC0yNTAgLTU2IC0zODEgMTAKLTQxIDE5IC03OSAyMSAtODYgMyAtOSAxOCAtNyA1OSA3IDY1IDIyIDIxNiA1NCAyMjMgNDcgMyAtMyAtMTUgLTE2IC0zOSAtMjgKLTk1IC00OCAtMjE0IC0yMDUgLTIzNCAtMzA2IGwtNiAtMzMgMTYzIDAgYzU1MSAwIDEwNTkgMTYyIDEzMjcgNDIzIDMxMCAzMDMKMjQ4IDY2OSAtMTYxIDk0NiAtMjcgMTkgLTEwNCA1OSAtMTcwIDkxIC0xNzIgODEgLTMyNiAxMjkgLTUzNSAxNjYgbC0xMDQgMTgKLTMwIDY4IGMtMTcgMzcgLTM3IDY4IC00NSA2OCAtMjQgMCAtODkgLTM4IC0xMjggLTc1IC0yMSAtMTkgLTM5IC0zNCAtNDAgLTMzCi0xIDIgLTEzIDIzIC0yNyA0OCAtMzAgNTEgLTExNiAxNTUgLTE0NiAxNzYgLTE5IDEzIC0yMyA5IC03MCAtNTR6IG0tMTgyCi0yOTQgYy0xIC03IC05IC0yOCAtMTggLTQ3IC0xNiAtMzMgLTIxIC0zNSAtOTUgLTQ4IC00MiAtNyAtOTQgLTIwIC0xMTQgLTI4Ci0zMyAtMTQgLTM1IC0xNiAtMTggLTI4IDE1IC0xMiA1IC0xNyAtODYgLTQ2IC0yNDMgLTc2IC00NzIgLTE5NCAtNjM4IC0zMzAKbC00NCAtMzYgMjMgNDUgYzY5IDEzNSAyMDUgMjU2IDM5NSAzNTAgMTQ3IDczIDI2OSAxMTQgNDQ1IDE1MSAxNjEgMzMgMTUwIDMyCjE1MCAxN3ogbTg3OCAtMzggYzUyNSAtMTI4IDg0NSAtNDI4IDc5MyAtNzQzIC0zOSAtMjM3IC0yODYgLTQ1MSAtNjYxIC01NzIKLTE2MyAtNTIgLTI3OSAtNzUgLTUxNCAtOTkgbC0zOSAtNCA2IDUyIGM5IDg5IDcwIDE4NiAxNDAgMjIyIDQ3IDI1IDE0NSAyNwozNzQgOSAxMjIgLTEwIDIzMyAtMTUgMjQ3IC0xMSA1MyAxMyAzMTAgMjUzIDMyMiAzMDAgMTAgNDIgLTUgNTggLTgyIDg2IC0xMzQKNTAgLTM2MSAxNjggLTM4NCAyMDAgLTI2IDM2IC02NCAxMzIgLTc0IDE4MyAtNiAzMyAtMjIgNDggLTEzMCAxMzMgbC0xMjMgOTUKLTEyIDY3IGMtNiAzNyAtMTQgNzcgLTE3IDkwIC04IDI5IDMgMjkgMTU0IC04eiIvPgo8cGF0aCBkPSJNMjYzMCAxMzYwIGMwIC00IDcgLTExIDE1IC0xNCAxMiAtNCAxNCAtMTQgMTAgLTM5IC0xMCAtNTIgMTkgLTcxCjExMyAtNzUgbDc3IC0zIC0zOCAzNSBjLTIxIDE4IC01NSA0NiAtNzYgNjAgLTQwIDI4IC0xMDEgNTAgLTEwMSAzNnoiLz4KPC9nPgo8L3N2Zz4K" \ No newline at end of file diff --git a/private_gpt/ui/logo.png b/private_gpt/ui/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..04cb72252b62d7f49d2ed232dc0d1c0b67021ffd GIT binary patch literal 16690 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 literal 0 HcmV?d00001 diff --git a/private_gpt/ui/ui copy.py b/private_gpt/ui/ui copy.py new file mode 100644 index 00000000..7c34e849 --- /dev/null +++ b/private_gpt/ui/ui copy.py @@ -0,0 +1,454 @@ +"""This file should be imported only and only if you want to run the UI locally.""" + +import itertools +import logging +import time +from collections.abc import Iterable +from pathlib import Path +from typing import Any + +import gradio as gr # type: ignore +from fastapi import FastAPI +from gradio.themes.utils.colors import slate # type: ignore +from injector import inject, singleton +from llama_index.core.llms import ChatMessage, ChatResponse, MessageRole +from pydantic import BaseModel + +from private_gpt.constants import PROJECT_ROOT_PATH +from private_gpt.di import global_injector +from private_gpt.open_ai.extensions.context_filter import ContextFilter +from private_gpt.server.chat.chat_service import ChatService, CompletionGen +from private_gpt.server.chunks.chunks_service import Chunk, ChunksService +from private_gpt.server.ingest.ingest_service import IngestService +from private_gpt.settings.settings import settings +from private_gpt.ui.images import logo_svg + +logger = logging.getLogger(__name__) + +THIS_DIRECTORY_RELATIVE = Path(__file__).parent.relative_to(PROJECT_ROOT_PATH) +# Should be "private_gpt/ui/avatar-bot.ico" +AVATAR_BOT = THIS_DIRECTORY_RELATIVE / "avatar-bot.ico" + +UI_TAB_TITLE = "My Private GPT" + +SOURCES_SEPARATOR = "\n\n Sources: \n" + +MODES = ["Query Files", "Search Files", "LLM Chat (no context from files)"] + + +class Source(BaseModel): + file: str + page: str + text: str + + class Config: + frozen = True + + @staticmethod + def curate_sources(sources: list[Chunk]) -> list["Source"]: + curated_sources = [] + + for chunk in sources: + doc_metadata = chunk.document.doc_metadata + + file_name = doc_metadata.get("file_name", "-") if doc_metadata else "-" + page_label = doc_metadata.get("page_label", "-") if doc_metadata else "-" + + source = Source(file=file_name, page=page_label, text=chunk.text) + curated_sources.append(source) + curated_sources = list( + dict.fromkeys(curated_sources).keys() + ) # Unique sources only + + return curated_sources + + +@singleton +class PrivateGptUi: + @inject + def __init__( + self, + ingest_service: IngestService, + chat_service: ChatService, + chunks_service: ChunksService, + ) -> None: + self._ingest_service = ingest_service + self._chat_service = chat_service + self._chunks_service = chunks_service + + # Cache the UI blocks + self._ui_block = None + + self._selected_filename = None + + # Initialize system prompt based on default mode + self.mode = MODES[0] + self._system_prompt = self._get_default_system_prompt(self.mode) + + def _chat(self, message: str, history: list[list[str]], mode: str, *_: Any) -> Any: + def yield_deltas(completion_gen: CompletionGen) -> Iterable[str]: + full_response: str = "" + stream = completion_gen.response + for delta in stream: + if isinstance(delta, str): + full_response += str(delta) + elif isinstance(delta, ChatResponse): + full_response += delta.delta or "" + yield full_response + time.sleep(0.02) + + if completion_gen.sources: + full_response += SOURCES_SEPARATOR + cur_sources = Source.curate_sources(completion_gen.sources) + sources_text = "\n\n\n" + used_files = set() + for index, source in enumerate(cur_sources, start=1): + if (source.file + "-" + source.page) not in used_files: + sources_text = ( + sources_text + + f"{index}. {source.file} (page {source.page}) \n\n" + ) + used_files.add(source.file + "-" + source.page) + full_response += sources_text + yield full_response + + def build_history() -> list[ChatMessage]: + history_messages: list[ChatMessage] = list( + itertools.chain( + *[ + [ + ChatMessage(content=interaction[0], role=MessageRole.USER), + ChatMessage( + # Remove from history content the Sources information + content=interaction[1].split(SOURCES_SEPARATOR)[0], + role=MessageRole.ASSISTANT, + ), + ] + for interaction in history + ] + ) + ) + + # max 20 messages to try to avoid context overflow + return history_messages[:20] + + new_message = ChatMessage(content=message, role=MessageRole.USER) + all_messages = [*build_history(), new_message] + # If a system prompt is set, add it as a system message + if self._system_prompt: + all_messages.insert( + 0, + ChatMessage( + content=self._system_prompt, + role=MessageRole.SYSTEM, + ), + ) + match mode: + case "Query Files": + + # Use only the selected file for the query + context_filter = None + if self._selected_filename is not None: + docs_ids = [] + for ingested_document in self._ingest_service.list_ingested(): + if ( + ingested_document.doc_metadata["file_name"] + == self._selected_filename + ): + docs_ids.append(ingested_document.doc_id) + context_filter = ContextFilter(docs_ids=docs_ids) + + query_stream = self._chat_service.stream_chat( + messages=all_messages, + use_context=True, + context_filter=context_filter, + ) + yield from yield_deltas(query_stream) + case "LLM Chat (no context from files)": + llm_stream = self._chat_service.stream_chat( + messages=all_messages, + use_context=False, + ) + yield from yield_deltas(llm_stream) + + case "Search Files": + response = self._chunks_service.retrieve_relevant( + text=message, limit=4, prev_next_chunks=0 + ) + + sources = Source.curate_sources(response) + + yield "\n\n\n".join( + f"{index}. **{source.file} " + f"(page {source.page})**\n " + f"{source.text}" + for index, source in enumerate(sources, start=1) + ) + + # On initialization and on mode change, this function set the system prompt + # to the default prompt based on the mode (and user settings). + @staticmethod + def _get_default_system_prompt(mode: str) -> str: + p = "" + match mode: + # For query chat mode, obtain default system prompt from settings + case "Query Files": + p = settings().ui.default_query_system_prompt + # For chat mode, obtain default system prompt from settings + case "LLM Chat (no context from files)": + p = settings().ui.default_chat_system_prompt + # For any other mode, clear the system prompt + case _: + p = "" + return p + + def _set_system_prompt(self, system_prompt_input: str) -> None: + logger.info(f"Setting system prompt to: {system_prompt_input}") + self._system_prompt = system_prompt_input + + def _set_current_mode(self, mode: str) -> Any: + self.mode = mode + self._set_system_prompt(self._get_default_system_prompt(mode)) + # Update placeholder and allow interaction if default system prompt is set + if self._system_prompt: + return gr.update(placeholder=self._system_prompt, interactive=True) + # Update placeholder and disable interaction if no default system prompt is set + else: + return gr.update(placeholder=self._system_prompt, interactive=False) + + def _list_ingested_files(self) -> list[list[str]]: + files = set() + for ingested_document in self._ingest_service.list_ingested(): + if ingested_document.doc_metadata is None: + # Skipping documents without metadata + continue + file_name = ingested_document.doc_metadata.get( + "file_name", "[FILE NAME MISSING]" + ) + files.add(file_name) + return [[row] for row in files] + + def _upload_file(self, files: list[str]) -> None: + logger.debug("Loading count=%s files", len(files)) + paths = [Path(file) for file in files] + + # remove all existing Documents with name identical to a new file upload: + file_names = [path.name for path in paths] + doc_ids_to_delete = [] + for ingested_document in self._ingest_service.list_ingested(): + if ( + ingested_document.doc_metadata + and ingested_document.doc_metadata["file_name"] in file_names + ): + doc_ids_to_delete.append(ingested_document.doc_id) + if len(doc_ids_to_delete) > 0: + logger.info( + "Uploading file(s) which were already ingested: %s document(s) will be replaced.", + len(doc_ids_to_delete), + ) + for doc_id in doc_ids_to_delete: + self._ingest_service.delete(doc_id) + + self._ingest_service.bulk_ingest([(str(path.name), path) for path in paths]) + + def _delete_all_files(self) -> Any: + ingested_files = self._ingest_service.list_ingested() + logger.debug("Deleting count=%s files", len(ingested_files)) + for ingested_document in ingested_files: + self._ingest_service.delete(ingested_document.doc_id) + return [ + gr.List(self._list_ingested_files()), + gr.components.Button(interactive=False), + gr.components.Button(interactive=False), + gr.components.Textbox("All files"), + ] + + def _delete_selected_file(self) -> Any: + logger.debug("Deleting selected %s", self._selected_filename) + # Note: keep looping for pdf's (each page became a Document) + for ingested_document in self._ingest_service.list_ingested(): + if ( + ingested_document.doc_metadata + and ingested_document.doc_metadata["file_name"] + == self._selected_filename + ): + self._ingest_service.delete(ingested_document.doc_id) + return [ + gr.List(self._list_ingested_files()), + gr.components.Button(interactive=False), + gr.components.Button(interactive=False), + gr.components.Textbox("All files"), + ] + + def _deselect_selected_file(self) -> Any: + self._selected_filename = None + return [ + gr.components.Button(interactive=False), + gr.components.Button(interactive=False), + gr.components.Textbox("All files"), + ] + + def _selected_a_file(self, select_data: gr.SelectData) -> Any: + self._selected_filename = select_data.value + return [ + gr.components.Button(interactive=True), + gr.components.Button(interactive=True), + gr.components.Textbox(self._selected_filename), + ] + + def _build_ui_blocks(self) -> gr.Blocks: + logger.debug("Creating the UI blocks") + with gr.Blocks( + title=UI_TAB_TITLE, + theme=gr.themes.Soft(primary_hue=slate), + css=".logo { " + "display:flex;" + "background-color: #C7BAFF;" + "height: 80px;" + "border-radius: 8px;" + "align-content: center;" + "justify-content: center;" + "align-items: center;" + "}" + ".logo img { height: 25% }" + ".contain { display: flex !important; flex-direction: column !important; }" + "#component-0, #component-3, #component-10, #component-8 { height: 100% !important; }" + "#chatbot { flex-grow: 1 !important; overflow: auto !important;}" + "#col { height: calc(100vh - 112px - 16px) !important; }", + ) as blocks: + with gr.Row(): + gr.HTML(f"