From a78782c78b5cc1e15cb559be91a46cd0c262b2d3 Mon Sep 17 00:00:00 2001 From: Lance Martin Date: Tue, 1 Oct 2024 17:05:36 -0700 Subject: [PATCH 01/21] Add shared state conceptual docs --- .../concepts/img/persistence/shared-state.png | Bin 0 -> 181625 bytes docs/docs/concepts/memory.md | 4 +- docs/docs/concepts/persistence.md | 63 ++++++++++++++++++ 3 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 docs/docs/concepts/img/persistence/shared-state.png diff --git a/docs/docs/concepts/img/persistence/shared-state.png b/docs/docs/concepts/img/persistence/shared-state.png new file mode 100644 index 0000000000000000000000000000000000000000..b48b0baa087ba37c6d4eb9309e66f5bc3cf64617 GIT binary patch literal 181625 zcmeFZ1yI!A_cyMjA_#(rfP_H{C=wD2i=aq%E(@_!?zuNmO+}7^jDhUPks}oHw`Dbs z93gHxa)j{sF%mFxEu9zvejIhwkh^gN)p~B`$Pv~f^0LxeZboy%q;X8z!~094=oK4} zixDT^a6+gIh^TLT;-JcYhLqz{&|W&FE-M?8v=?zQg!t-tf;YE)sc4UN!j8p5kIk5N zh4Jq9tq*zHPPUGqtBPIiHor8VEpnaz61^Vnx&Fn@=Z840GWhe+?+C#$)`$P;A80h0 z78NIdSHe`mDd>@-L{$IbpSUAP2Nk0K_+Q|0WYHN`HKX3)w)%_zaRx9e73b8s|M1

u9&MMe=@!(?e1cBKNCZAF?r!)qDE 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

a!WTRaUd#TAgVa65I0cP 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
H=PNS0mGf5 zp9nuEtG%sMkxu)5BJM$%b*Ps{N%`g+H5!Rwh)BdX3-0%-2NqQ+am4Wg#5A(%b$q!7 zJw19cFKk-|N)7G=D`6~%8_mSvE)ODF#AD=D?+bDg2iL&kLX~cpK1hYG^H~494@%-i zA+mHTz2-b+L4TPle?z@={np%9?VJbhyU*Etw+ut$UiXFGF3AP&5>Q81{9lg^O((N? zM78kWmHa<7*Zj6ehuGw{k`nU<>c@PbpT0}u%Bm&Ty@IB|Wx()9mYza?pFMbJcCPe! zl)2!o{y?oDp}xX&+rta83mA=qeSkd@58CQXc73(TEv>bWb|O}YP#@wNmEJC>{<>9{ zo+r0^{l!B*8S$Zj{BL~-EsbYVSm`8wdcOCdkbfuq$TkMP3jI|xzH#i-@%D?!NSILCO|xtmQBD5lqg`C} zQZ(P&Q?Y0EIf|9+Kmpqq?ypwY61ekTGuG6rDZO(agmu+|npt7(1eFC3roOFc$A1gh zO^}?1{#gp`49DRXeME54X?%cwh56OLeKwv2`QKk$S~vTmE*#$9PV)s{ehja+nC6T zN$~)v^4JYaBv6O5nCC?qo54*GE@sx3szG;yiu=iv5+*CsM~yvK1tRD4Zk#5nNgAg$5C{)?4(AS-70DOJK2or8$AWe zYFiUe(LhCVkI_5%Ga9R+*6_sS2dSq)6?AiYuz0Q7oQwi7AO-|W7;=#pW!SHJEALG2Y`s#fn$to)5%PmnSi0JlFU5?G0Hv_K{L758^wN$h z?NvY`a#6USDRzGr*&u&ItyFSaV*&rCG3Q{~IEf&sK_a>IuK$uO^iO<}&jaJ|L^Iig zN~)?RR(GIaTL|O+&IrYQ4A%__w?F{yv-T$|xEtttpV3fs|3y;X-v~8pPXsiF);Ckn zvt>)CQL3~bpl)c}T}s1VLjHf)daHo8x@cXrXtClBrMNp3Def-8i)+yUg<{1i?(WbK z+&xHfmjVHb1$QsS9ZvqU?>^1kSY!l;~g7LVZowVN`?kwG<7;Pk$9PGlH#{;`^>` z-$&6g#mZCTOEDA636cLGNT8MVB?JVEDCgm7?zGYm-68;$SIs4J0EWIVtN2~uH))~E zxJ|q6%=>OzF_Qo>n%#apnmHmnZ4cbc;eBW=X9_Xsi-ILuBKz4}81j=|EE;|+OIk2| zQ415kl|hl=0@T2p=@gg;6?uNj)iBY~`*5ztiFQv}14j1GI|pm64s&vRrE*Xmsq89| zOY<2`yTiQDU=^BJu2m`K)rd_18>za7bPz}AdE>rS0}jmdu`%RK0e^3AIxqs+Sw|#M z==N;quV>ry`x9xDe7_4NzYU}hiMB8QZeIIxwKbN*^xsWr|LxfBKA#l{pndzevM(N? z;eVtp<8J=S{6EM39~<`;+lEgnmrx74xzf&72b{|tNqQy1Es6~-2F*}!L6ayP;R6FSMow6w~ z(BAcw^Krl4Db@ASgo3|@Dy9#osWJF+8=*O2#5&QOjuWP+9F%eR<14vWt80z90VB%u zhOZT?8dNr4Wkpl}O3|bwz4d*sjyszl)=8q|TFkI74@f#{D?8eg|9NT7U!mxcP*jW7 zpNwvx780}Ga%7_j|MzmPyNBqf97?N_U?#ihj@ST3ijqzlmDUPJ+-^*kMD;#;Y@~

&$V%C0F5o&=`!RNj24%=}%1#1q2shro`& zd-#prh=G;OY&OL`70n|VB7om@EYM;B@aJ0_NkeY>N?Aq7jAHEob)6Hz?(f*fmV+C{r!&7twzOVA8xPIY!v^CebEu4TzO1?+ zz;^DCf%dK6JL0LMK@->!x^-o!zz`QS7zXm^v6S3lG$!pjS^)CEwlNzU^2aQ~Joro! zkLmz^;(&K6yRlNZA#Ya@hW@V>z=gc2dU+=5>}glmX=Q#lSfKDgKVso196sxA2_!4@G zrghPvH@w7h^u#2(!rfld7U#tJ$2&UCiT0VaxDC?uW4Z@ryauJ~EuIeN^CkWtuKB<6 zWXKf!B53=|S+p!NU@K~vmi(eVsee<-P8;`3_cP`2AX$dqL4ht+wJ(0~4?hnM$8$VB zx&7t0j|}X;%)5<Zn4FeJ}D_8Mi$22YREQ-2K{^UAz@K0)4(_d5c`D&KR-jqz*Dn4*Vi3#2Qr9Q!5 z)sOReqP8c$q6eirTT*1RkR`Khei=F;6TJa%+uhpZn&Gh3Qh!l;nW zW%f5^m+r1}6EYy_ocXP+rMy(c^Ex7_h9N$m%_cKpZGIeiIdXf zji0%P%A4Q|$6&qZ*>!dM$EmECkG4KoP3eK!+Q|59CsXryJ5p%!`#l~PY6Hj;M4xPP z10D|H30;rj$Gp!TaX}a-RDhQ|uC#U<9B5%K2>3jtr?E=i%j*xHBYbCb;tK->dhs^N zrHq7wCMP;UY7Ah)02-fu#ta1T-s>9kUXo!T+^wUx5RTv|(`&{VPNS(PJ zr4n4%+yIc;jOiaE?Z_i#sGekb51ulsnkPzAaT3$#{7Lhzv#vy=rPHV zx{txNWxEkRe@~~1{{D4l|J;B~KY0&VsP}tD6wL%jEj8Lstu2qkIl>@)xK`QhzZqY{ zEgeVff&{Lx@?6Y2hkbPXw|2{n_zE8^2W-VJvn*QV1Em5`Zb~skA5R)vPa4LpM{z{| z1--5(KOb)0JHDU6xH7C|ANm9{5on>#W9uhUkt1;w1okICa2S|0Z0ay=auY;rx1Us& z{UHu(&|`axgvOJ>Vvb(0T>q5~HqT$aLL2XQ6d-+=Eho5I=_=r`&nq^SrYRpHWD~9T znC94*8+}c{IJdcdCW^r~v_OrE9i#7)>2Tq##ctqqO5+STbrw!uSCVTB^&tQ0Mn`xg zp>`bhxnZBRAa#Ozp*->;zU0d{;1Vsyp&ctjQO8*JO!FJrs+7|s{FzT5zwjq-57TB> z$(L0aR++^%7=3njn7RNLj5J@PmwJUUmtIF7>Fc7|q06Zg?O#f##(eN;fBP9vqj->< zF=c#{WU6ZD%*^SZGb(ArO4&$Ug~{<_T3$)n@wLaa;78Rdxe&25MUdwcsex4rb3|+l zlNkZ7jgORXD<23B1tE*+@wgdY;H!v977HOsGhd?}XAQtsO0+^n<`09!b(JC|Tcau@)`x~sFj8oH~YFhY)fo#}It)8tFalGb3$e2(q&rK;MRMRmg zbB>&wi3(IFrLrSfATWwN0u}b#prXUtTbzhM@(sB+Y^Y6S-C`jSWBrWS-D3GTX}7*s z_|?IOeSkMhSqd*OmussM9h)l*wFLYSU|s!aH~!57T}mCAKJn%2`laK)oPB*3$?7?J za6zrA`9j6pa!(29Uf7Y{#z`>btCe}23W#!M!L+TBZnzoRpZCT;LvlGRa}4>WHBjH5 zS%O_LUHkMO-0V6MSmnL?doLwi#)kp>x7F&m+3u};-@iji3RGdg&VB_h=I^|ffV+tT zPd^&_oe$nkCj{_2EgW+FuI+izMEJ?P{-GwhduUTLSXoZkz2KA3pvqT#e@Kj6)l%y_ zjjGk~=3um3*66Q)dKe$snTpsA>^7O7Nlx|4SaA%QiK4;GE+(tY0<<-EDQpcZiH&K` zK@Xh}IzY*0G$rw7EWXs}5AEh+{0b|J-(ms0a1;S)T2{6pqiA1wrco4;X+TqBS9j8M z91_AjE0Sj|9Ce}G?RsOH>iG6bzftU&Zke%&T1lHjv(FYG|S`GfNRim z=~W*6{J7;rANsPQXgur(6Rki6@uoLofleImZU>$uUIt-*;?;LVgI#4nTAsoZN0}4z zOOEP4)?R~Y-AAu$WEV&&g&*Nelf~#(T#3NbzO;?|Xby(-<|XCC1ln4Od4jQ?pzr`V zW#55b=~L}^;?9iTTf|7FEmE;A?1FQaRB5T5OP?%C&80$y(XwQZT};}^Y+`n+-py?u z2PY!Rhki$J?mXMJdRD?{X1{};GkgyjgCnxXF)hz2>8()9I=vc+@yB{|j z;tIT1i6s{!Pk6C8U-rLG6n|Z^eF@hH*!m>Qcp4Qiv=vDs))mOzjac#@glXT|5KguG zEJ-o4N^lf@+i1-U5@?B>j1zeaq>?A7^{6 znvq`57u~9sXK2i|gnwoJ@u{XEVd&3C0J45Fg%=dJ7@Pip;1g4dO9eyTxYRIv{6GMz zn%_oU_}^~MO-~0enEI-rT@J>OY*$p)^vRK!G@TLeeDLY6?eW?FnINcF)$_>Jjrj91 z(2NqYfB9qCdC>oM?T1yo7%|TCp+>)F-b){RO~N7i7j^Nx$$IZdiA}V)R@i}_RfT@Z zZZS~;^mYSM%=aKz;)O~>u1IZejGv+#aEA(97wMYIsTfDsx@yRl^#o~{Gds!{jVFZ4 zvvy8BI2JtFm904ln#PvpE(!*uwH|Y0;xL0)Jaq4_+J?7wSgZgTavQRA((2kK&J@ez zxTpG*G|@k^++4(W{V27o|2w$2p2=|oh6O&^jrRVr;jPe=c7p|g`R!EXAM zG1euegf9Z)RQn>+SVV6`5FYz8oGb42STKoD;p+TGS~X_Y_o4^yFTE<<@ICl5yB7T6 z>0r43`@KnCp7%ml={UJd+b*#S;#UJMnAr-#=ipv~-SH*`pYa|Lkb^SS3lVmJ$@GfA zm0@lakGuQ+*r=|$08gr3WStMB){}z@oE_HN9`gDSv&}eH;3R28OT+rsDB}CfLM=%X zo-xWtJIw3kVfZjauCB9;EotQ5$b42#O7eXj+)%I}9%dm@poq+Z0BkZ*qM_92Q~FEV zgl=$x1CzCA5VPZ>3kq{W{fwSUW2f>%qQ$f1yeG!-AGE>4QoG-uH9^#0MyBsuYJ&w7 z1e8`L+=X|zs3ju;+!&IF^BXvuCBMD{N)WzUL z_AlLX7p?U3+`kJx?H|av_AeV(P=^MToux5h4b%~8w&fJsda zbqb2+=6b2}ozX+gNgpfx-X(qvlRW8kFW_=`ezj53-vepR9J#E{q^?ZJY2@{nsuGOz zY=;3yM?7_g&4GjC_xfYbcqpSuX%#DXKUCIr@y*--sg1Tdww$kz$qUfD3Cy>(>=u7YDBV(RFs{uj4tWuZj)cMd`tgEm!dYqZ zED&-LjHGj2W(D99iLbqQ(JO1ZO>#>j2OOifFzg`$`(cTVAq^FZ23gaFp7TBDI|@BL zKRW(nt1D&Y4t(*eziQi)`OteU=;x+!>REfbKZ9~vXYu^qZxhq3he`ZAs?(D)a5w

1T&h;h;ET_9gaw`^AtmEBAyErQAi%W62DV!qU4ENXc40Zv#5R>5bA$=V**+8~Wo zoLjb?T9;NGP{MU|sE+_m4wniiAqtKZR?rz^sB*yM_?0NN37dM8@uGfLXi$W z@R4UIY;~Ko$n@&72Bge-G9)Vo5j5pj<;Z7J z{&!K7BhM`%CIQg>kk!R4c}gdzk^;FY`FB49%OrHt$uRQ5*b8UH33cMs{%PZU;ryh6 zu`LP|`IS7Tf=WNWvb!Q>K7^G@f!%=6rN*$v6w&ONF-VaW=)15d$lQBv&Y+PoJK=Ofys&Kf-I(h;7bEI5|B0VJ~|06!-cZ^bR?fzYjUbBe* zpsZhjV7O3(C`SO;2b5@ie=SD>mcmVTb6(4>TCa_s9g{L!nzuW&#b4l+y#LlJS++q;{=jt$Lj z9KWf#nWnM&9a#v(N&QV;Q0^Og*;M;~)7E21K#LHFB38N#(XVr?TJs8&QgRLWHHN?I zEcFMA7jf}J6OWHc^873!rMnosH_iU6_f(@JxO8m=D~H-ZTC^F_h8p@MC7Yg6E;asfXC4xb@P@lzvn@HWk`Fk{KMP1=lE)L5J(mr)G z1QBLpN+XKwfx=wbHr2K75Vq)_dQH{Xh##Mc1KFq;4d<%Tc4xez6nx~?i^+LaYbuB0 z_CF+~l*S`TW8K8k(I4Gr-lZ-R((w#vr##?Vu1j%KN+&wFHtI1nyp zhUCujd+BEF19x0Tm%VvD>6^az9~FSP$hbo&gY+8FV}^8Bq>~qU%D9hQ zYJz%i!OveZ$7w+j)3$*YQ!?ids4w5)6Pi3qiCRv$bV1PYPe1Y~SxdnietxdbC;!(_ z-O3~XnmcZ2aI_Cdmg~i4)X8wEhetilWZ*zU$9cg4r&pZiS0MDc4l$hBtlNoa-a$^dU(}?9UhGZOMe#eM`Ucz$QYKo! zTXi9j|@|G8@|+py&N==jqYzW)Ixn!o1`|?5VAC|4d8H|D=m%C zbQ!*)oT`~Ejkyt;VLI&`(n%CGLgCCYp-I+Cv0z)I|3JCcXJ6DZdagFtMo~{wM3KuS zDnJU!ciw};!`>K2qklgJ*`Tnzn+Fcvc@XVx^Iw(JOE)bd9pOg~mbNyk(sE8Z4E?0; zGsddo9thwru%E=!pMM!A`sR-qlyKFF9XvOZi_yF7;r^0yU{5W__3^aD7tH$F{y;=} zgn^aMY*rHK7LPy_=7|eNw2|JN|nvgX;h1K9T6HR z3YX**B1+tkYPeob2#(j>z6C!WRn`nR)^;5c?D}p`Y@E5v>h>^=Dg4>J(eM;x-N4)B z;^>1h1%}0Q=%mV2=||VZc;vwT4P;lBaiLl;SVhXyZ2>s%L=_p@@JW?$q{7;)Xhv#n zFjsS6Q20Ykh0*8erWA9C@$;Per1_?{o)6b#($9(Sj_oxRF@Bc|o}g0o`I(?Jc&@=$ zx-G_68ntRIL>wlQq{&Zfx+~B*w)BXs6hE6D8ngefgqg&yPapVU^kW7!J#WHrer*tM zV*)e&OsMeOj&V#b*;Gz4+i((90f?EEynOQeXGkL)w(9;yBB@%2TE08BwQmIhly-y`h zRj2^SwWirIh=lX;_6ZkCjr(+4F)5zgwF`meX2F}}JF4=|<=fT5%r_O7>it$hBj+lp#YKTuf{8pfp{UHL^@?l z1ThG<@*xh)yujB=0;)%*tAzlI1%qZPCNCYeT@{1ydf^n~@?wP$XO2H9ajvNDpPfxO zugLQbCXLaAp0)b6X^9uC5GG@T7IS+;`lbnR%@Lg4R`q5%Sp`}cgzZA;4T_8Qs95-+ z$7P4_I?OWwV&;go6}iA4ra8zl;CXaSrFzWs>^bPGe{$HZvb zoe?hj)y~5J!e8{lf^o_Z+%ijWOGG_2l7A(-8{`TIuJu24e0&FZ=?&~ctnGfu)<{ig z^{NQ$^KJj{<0sD64aB9>i{0@g<@*#%-}a%G7wlLJZ&_hqPW5x=r4UsFWZBsT!7_>xm!G z{QV{I^oY1G&;RFpi}lhIvx7J)b6?t*o%ByW)qfd$^-Otp`-=(@5Akji!Nb+_dUbSUI{u$g02)`XbTikzN=SM%^_1IeRX?S{N#$?{Ug zGh}_)9eiZ(cZ9_O0p@24CiKz?79U^eLSiC z6WrOeNb>p>0iMz)nXX^J`B4hy%ChE?cO}@0>-*=fOMmeF%h98tb0kjvzq-3Fbr; zE+g6Ro-{3K6p#)j!#@n6%<`^@m+>XU-)RyZMYnTIkt7L$*a6?=DiRJF>%k$t_moma z3he}Oz0pv&Fu3+7cHPi{KS7Wrb~hRU2wpkBgej(`WRe)AeA7$aS^7p^Y>d4O6Z!Yp zT|0<0Rh!)W7q@8?!3!CN7Jxn-$@;_P9c(B;x{VP-2%$|$)71nWTMJap?r`CxVb~|? zg#jyb{x|#v=R|}4^+X;XF5|O<=l8VzVcjM2qKzasVsDS}LsML)S6Lv~w-J#-&^dMW zG2qp=aqOk*_7>ynd#Zc%t@yX5rbw{pRMZlfZJsTm)}gl|InGt>qcn}mh(mJ6RT%_` z52Z&WLUH?FEkNE6@E-`fN~BGTrff}^?7iN{>WU}vBI6m`Q9Ngt<<`37s?MMDrAV|n3~U zJ`cWM{J-S6#S%Wv*z!la6rLV9LDz&=qYF}#KZ76v)4lib&;UTrv8^xfU}&ai3kp93WU>iH&_>`r@XQu$@O`g-EVrK#!;V6vz2bwNwz4-0%t@)Q;NcfZQ<5xp zA4ltf(-JENDgw8m7$>OO=m(?*K6|-y&~FqXTSl2eOF}$D%*lN-K^){MI-UVs3Eqf$ z{Op3HcB8bvTgA-)Uq@tEsNkUe_momTF!j_mGlP$Uf?#?F1fkonhRR5UuP%1sy9AUG z!!5spm-^(L*2m!;pCcaC&k7RIA^kc%WMGsxWfadGT5MDS`z$hCFL#86zYCwkVTA0y zzEA<1NksU{*YhHJG3AV`yD>;&Hc*^l%4+-cuMm@`q{i9c=W}_Zx}KC!fS9){=P@dqSexOGjpX2%UO2pzH-Fk;gsdoT^zV; z>Mk-t_l0Po(+m&Y53BVx+kS|F9kJHuG!=f81q04GTk;aok_LF?t29ES(ck{KGH9VM zyPO-;0KMF2*!*1ifNmF|-9kI2rCpQz+vbDC_&u9jHiz0MNB^!h*Qo6_Rlm#K_vIw< z*uLVO14Bx`6P~hsAt_l?%k{neU&XtV83Y#87HmQ-VO8J*ji!>$>_jv~c#)Xyfl3s|(~3K57|k2xL)in9~M?=h^fj zg;tV(h!HytieRRA54qB=mvTiSzTB&<6)dK#V;mGTITra+I>of4zB8h#S)Ff^LM2Wc zUjw60KG^=}k>5;|!S1y$%?l?`7ea`j`hM_I|L@s4ZT$fr(=q$=g|IaL2K#A4L4s<& z^5y!ud!YK&2Xj*NQgy}ucD4U|^~)Ca$$yh|pba`Xl|G0g2ZxpmR2_7kv&pSyp5p-Las zbSqocA_H}VWTgf6@`Z>#h&&o7ArM1}RjB(kHDE(fg;jW;dOd+6T^ldN3R9}fX%oLH zV3P>p>t-F&caVs{+e556i+8EXKR{}qYnY)!zaDE0$`1C)qu%_~FzeD(oY~wibl}+> zp%aCEL31;#CWSKU@i`+Di%R8?BNX)oS6uip#@QZGoUbQzhsPQH@_Yl+xx-3P8BX@?abAGVpw` zI1}uLYj)=SYA%xa@}beFIi~zPx$W=Ph?Uo z2So$_23`dAp8WKvPUQCc&wlOKjvZa&XqmF9MGu_%58T`OHKr-ipS)k~6}J2vab#%m zGSH3GFL-OC){SPoScp0_$1F(-=T3XyzyyFp4RRXbfTf%RRa*dck`oF5>kT`mNWUg` zWSt!1sx-58KLl|kOcq%!?(Ki0LNBYf1$!X${D~s( zFvmW_0i_eGtE(D=8f#ulFQsI^`}QwSQ)cTujuemzN6EofVuq-f9DiyTY44XE<&WJa zk)>rrnX|l+qm#jQK@mWear?_dems1|#XN#Eg%`Zk%qb zpH;n-!OXSq(?W@wnibl@D*ls8k(ggp-J|`-3tmhG%D(?4!6R-pgq8bkMk!Ow7lK|Ro*Qg<>I$Z(fV*y8S($AL*SA? zeX8Btang-txP}{5I{i}plN3d@ffG$MpW3OSi-QdG6vZ4BTM@qv704@K%NdXQ6~2+B z!VDkx$e=^(2xUf{?F9gMf9NQ%((!rf>@C!LRkyq|Yw$f_0>X+gjx7zb->M37p-0}u!1 z{RU-Y=T&v4ow~^sI$t@W$@&&yTpmyA?ArXzw5!1nNGmFEr5F*2b;)k+&b)(x^g|#X zVd%Tma#0q^qg4>yhKzk{-qz38C)*YGDKVkrsz%qB`+cjKBBg#{)Z^~=i+j-$jh~#3 z-48M!hM1i1{?v&jM7&%n_-#81TJ(jYd+%l0hM#_V4*Or5PfxIRuqoJ&W?uB%@tc#q zw1AoXnoXuPfN&S{IOqIJ4c0H#U^{+xdcJyJ7ENN_blUf<;cZ;3lQzjDHan2wq}4^# zR@P(1j;`k9m2vi&c`A&JTdgMfwo|;}hxH|GGQ_-q#oWEL7ZtX#IJAlyR+@?nO!Z6* zHu4Yx@U=DEhzXxfKL2I@itmeh*r`LnOw0=>#<#DBe+~@^>eHo66tbDgs?-FPs3PR~ zkO;#>k8m}vwdC$D^_3;5Bv-I2BCO~R4a(d?%2ecde1-@qpC^UO#Js_j`n-@(>NAG1 z7!-XQDVxSIHwKkt% zH%k+oUF#i~bJqNZjnECZQkj~+3nMs_qqDdjB4^W*GC`X%+IKp-$^9$VMyMVM_Pdj=Rg(vzXSC3pUi2!p^6P`FXwHKYbAzme{ER?kp%h{s4UMBVYbLW1O@i z{*p@N8ptk&zra&7SS5`pi01`6flzs_&Xf5TRA6U-lL#tMep6LeXRGWzAWYqS9nX$J zKX1U}OdNavy&#G?`FHr-5{o;GAcG9Vy4C^3;XBq_Ow(lQjJG(iMCy~g66NR#Q0KT$ ze`YQa&QY*pOqle;YokpgVvW}RdWzZvu$TIWJaE8e`s-&bK4JalD1~ z*0k-B!-ZC|_={Ns;>Inn9lH|$dTP&x;c2k{Az3&JHV?-a|2rkYbvvCF`7zUVR{`IY zr{usL$YbCIXXpODv^Z}%qY&*pX;G>qbW@s8B-}^5EqnAqLfVy(UFQ1e<#Z`XIXsB@ z>|B|4Wy5=_utS=gu4`vV#OSqahB#E7Z7e*DzK!@I(lP3WGlR19O-X!p-|&9>1VuOj7zL9L_(*ct!XTbNOREW@ESHXn+B`O6p^>TsP-0==0*;b8SaKk z^Rz(cPv%nTL{9Zq{1C#7O$m3L(*-g2sO2MLg z;r(2?Erxc2yX6|)pd+WXSfTTQ6xU%BiREUJcjt{SXSdyhEw9fxw939)QB2`?2QQmX z7+2Lj8&MZFG1LEqq>Km}J{iadL-g2Xn0E$2v1=!)cLGLIYfx;%tJ$`U>7AJ%NTcx!`txpu6xZ91D z5;48{hd!3wEHUdYZ+o^;-Feyq)ObC}$twYO+rB08uQA^HCDBg}7)>^qayU(LloWWw z(kqZqLXA%tO-nkUh<;KLAUKdzAxr5bh#xD70;qC&3u` zc4KZR8Rjz|tE@y!LbQu@X+8BZSZpB|CGu{bjqaJw&LCF;-JNyfXTXC!_xgxalOxUN z0C+G$lv+&pX$PXjc?WazTk?K6e~rO!?s+mf!nX*>~|>03F6|H8`ajDB{5l63zQ zqHu8yWfxzKFC*BE6I+zx6M@uN>cyZXDGP6rV6oR@H6a2F%=+_eLu@Y8&>=v_;kM(y zQA`c|h82u3JbH^YoF;&Yx^8%%pz<1Zbnu(RGo?b{Gb(>|8OatULp(okWEiKr&RT{h zb1M;OLMrpIMR%*MDBFm5tI(0>%NYG1s_$rhy1JjX<&w6C3gWFYhK_U4&ybzK&eX2s zyZ?@0U!HF6)4U%h$!I`v0X~Q@xLSYY!JFLFR;4f3`u;57R;0@07i4OS zRI)#*hi_5{sq|++`^wHmOG}L;XGZ_;EWYWrwRjxkYbn2@p{cIxnD9HYYc~C@=-Y1n z_y>6Ds!w5zOb6Dh>;JP2^|5kmW|r2Q;(`6#DTt@PGnj>>Mbk(#2s9>3(;R9nJ|?>E ze>@QYr4ZvZU8pt)aw-GeO&di>Ctvod~ja?o%DN^nGmDFjW)S7i#sD-Bulyet|>9 zu&%7vZL0KB4a%8oC7iaH{ha@@2z|NmrWslC`bw@FBKAIcPx&)dket3EdSB{C`(OAs z1Z_2(O~94N`DVwYwfT6r0&1G#lTvF8{Z3_dKmfL3T|do${2cYib84Lr{MZHF#&{Rt zHwyzz{E1kMx(LOD^!4kkT7a5I4#T>R6=>wIboODkVk@LFx4xNqZ=yh5 z9;X#P$ho^Ww(JSJ@1faG4!3^YzKL-sJCf^yXHmgJJur9b76MK_`CVCk_;AEue zEJhQ>&Z?Dh)V*RHr74Qm2#Hip^pai$g(U07vkABudGn4U(f;_2v3{g$2;+Ao{Lt(0 z)>OIj-e&~|Ek$+Ggd_BAT%}^!LFX^;#B^JNR7x^uQ*!Bogb6Wy2zlv88u1U5lAr!E znfAxP?PVnBBY!^m_!ZkNBG~cu<|0a8JI31Qck!5?xD@>v%IT1>n;mEm5(o#!!@VpK znymUE0=pW{lFLn?7$2k{NQE`&wt9Z4RE|q$1D6E%lNC~ys{DvsMM1gqK{p;KiCZwC zg7sDGSL5x(e*vs3zGt2I+&7oLe+S`4YM!dKFD(JL6910PRukZ>1&Pc z;-e#qP+p31@y){S=pc!NzR?hsBQni zXYtc=pA^e{?9R~G;{hP_xX2PYREQQTU1#^JPr+cx44*FXPVX}S)~8hyayQn)v6FPH zM7O*a1(z2c_FssR9VS>K=qxM~_l+WhKk7#Q`9o`%7D5m=ddA?YeE?5vPQILV@LnKt zTbW2<)=$t9=ekLnT5#!mhF`Y3$1Pw@b{3Rwn$FJr@z5mJK2ybu00^6w*|V?q*-J{h zh~KRJG=Z-u6FELul+?&h z#IENtP@;$IOw@fbw;qr(l_x?1H$*2yOte3R#jgBcquhV2w-!MBjh)c|PY)d7IotV# z2#ci+a<#SvRST9D-PW`r@*MqbTM~tqoK5OiP-5BfSp|X}7V+%Z%Ik9av8m!J)g{Pn zsl=2bO+y4i_#aXU;66Jj^SIhw++DmQbO=hq`m1qubp+x;J*y0z50?H!XRaa;BEZ<- zZrorP3^DLXDk=I3dJ;cp)|f5q(3Eb|?1PmEu&3u&GF#-=+ac?X$U`xr7sD!mz4u_$ zeM>}U5)+%8%&!1gvOLc=t>R!4#EAc8o0n%ffx1>F@AmN5)m1tAE&b3wBZm8Ff|^?{ zG4ll%{e*qoXuf>vUpZCMw7!qF?_=)aDgX4ua#z=qAm^9s2d)nl7#;U}IaK!Qeij0#Qpwy*U&TF+{uCHa)`_cYXe2N< zmk&wYZOHsvm*~Xwu)6I$wJFYi670T*XDnrZtU5m6a<Gp>AjZJ&VbKmvFO0N~Cyh3g4iU1O-^9Gak=QkEKYI~y9su8b56GUl7h35s4L24;Gh{Qg8)c7HMH5kDd z(4kA*dU-%F#8?AW8?G&TFF7&|;`nRc$Ie*y2p{UUt?XY#Rb(>x{H%}XtC#aaHL}m{ z+Fy>lU)cV3Jv#gJ;kdkV{T9A%vN&hF+q~_L@I7mzIP;nE{nvTs?_y9jY8DDNe0CyY zDU`g@3%;WMc?tOVe0??nXI$^u5(+I2JMA2ur8zOP2#cR-tM!R%9r|*7dTt1JmH)`Z z;4ws^M>0fMj?EnpD0DF4v=l3djuAzyiO{f3{Ye35H=nv^kDVE-y&b2LReiCh14$pN93()uf14o=;X7(FD8yIJg)uCtyR8)0l~O0T^$rek z01fWkkf{925so3A%3MmDDfmM5o!U2SgfuMJre<#o`30Nji(1cFYkx-`5t(HXYEKm# zn_#}bIXpGecxQx1(aVF5T*$hk`Cwf0lcr*j*KJ7@UOC0x&$7MM&lCyH71WddJs!QJ zH~^#+-Pigb!_`DLFmT>kmXo*^l?TK4+%xVpm+EP-7lt=8fE=@W^+Ls`$Z~)je=n z^@2PEqDpl*$*F3K_=vas17f{0G_aIW!L4Bi5U&!Kd>V8z3;y=$G;9)@9i|-dVx*=P z7mJ)dta!`6ABPfBI9I7}^>9VjdK%GUbt0}O#O`}<Uj%? zUCeQGHXzH+{r?4mEX~3>zndPaXA^i*1vi_feJ9whAUkoC=d3K2w^|?Wpq&Xbs123l zs7A9flFz9c7X=a$3tO*t(wDq4m*pn!>wH za|WZ_R3j?o;PcwC$z&iwj_N%|(UwKWcI1!q7ca`VLZ-MdwV9utn2#JPnCahM2RoS8 zka7Er8Lc`AnYg_Ee6v&@tI1|Hv}hnpeo+o6);S%+FNx%Rg|Y290eSjhbX* zHnyEj(%812?R{VO^?%;)o1M@1H#6tVnKRvviAxih({l?kxSFUpaXfIGobVN-!HP1; z)aYD11N?52klhD-EW(;n{W=L0+#$RpE)5D9Yy%Azyw8V4013v=d?Q)*ZSW5um$=tC zfY39m?`hk~gAQZY?ZC%RNyHDbjcW`ALjT9D7hA^npf?0{&41}P>>r!*_*G=>n5v2a z=`#>B-r*c=+M=oR^XfQ{E{qj>P~K-C?HHD^IvpJr!-wl}0?&3lYoQs+bSdBy{5FP@ zJvj*-EZS@bZvGD;%yIRXYe&lN70PK%tm#2kNfjqv3M`pvt;PcLyz4q1OF; zdz~yc>v`)p%~$?$;eNoo@zN~T$ezAAvUx_d0b31|8}RNW0RHp&iS-{`-+G~OgUPM^ z!6f)S@4LU-9}ky0WT8irfAi-t!&t#{&)2D`lwMyWTY9ao2xi~&hGn2NxqZi#l!?&LC|(2L(U~Bj2JjBZ;A$bJVI-{O;XFV~Q}szF ztzs;OD@0L^QXfl!`8q{w>!DP^C3ERd_cFxq0r){HkzKZE*e_nN#_ru_)J8>D6E9v`>5T>pcNK zcuj70_Q&9$)JO&!zNG9w->dL1F|V^}T_G2}=YO~D!HZe$5O(Gmpjq$^jrLO+?zZ;aAOaAz7zLPsgG?6hreb@9 zCE050Enx>%U`tJgEOX`$-N0#?2IR^Xm~c$rjGbI$Y3--yUl*-?1*XV`huLMbmcCExM*!TYe$1J1sEiE=uJ|xpB?U0It$vsE z<1`IaFHPdv1U5n`b$1a(8Cmz(oHXZC>nZ2Q*!+TXXU$hg*zdHt7Rgeq=l%}OoDU?n zLgx$!?FB*EgJ*exO$ZviK}IYlq%3@4&gm6*2;*1sn^;zJ{$2?!#L+y<$Z?c%slx#w z?h?uu*4L}@xJd4uM&3unkE>eU z41v#)^ff&mT{k(TM!^9h-H@=(FusMaB3*6ot!E<$w`hBab?!&C(;MK?=~ojNvPJrs zGi~+F5O3_?l}X`Jy(S7|yT6A^OEOfSq}pJ&9w=s@S|Mfi*l0=+bB7wklQc-uWI?LPC&^4$Ov70I_Hz7!kV5wsoK-k2%2}?a)DOzjze+ zeaR+;o$z9LJPFXQ$`4eSGE`1mUE@aZq3MWaR`R4jNbgx*bs|zEL?_?XB;-fm2g=u1 z^y+HDXbyD8YNGV1Vz5uRcj5wShi>k&W)_p~yfb8-LZ3DYM-84CQ!}82;%2hYOPt%( z3F*&ROT^92yuM~4S+4gtgHT@E^3K=?Y`}*S^yBz`5B4j&d%hnJ2Aa8~1e$Qg=`(>f zH+XY7Z2L3bB~%cVVk)`P%jrBPs+&c=-0$&VPkcC`_tyjAG4-QdlBmt^#O-w;)VEn= z|I6SNm1|=MFJHmBiXsA`YTBfh12r^DifR)B1yd3AGQ);`+tQgjBjlIbL)p8*@Dtb;v3LVMjGSM?LDX zcj4W0@Ot0eJ#ZlO&??%!5wJC_87TWRgEzDHjj=={y<-8*5Q6ceCTO84Bh;sH88)?c z3&L!sQf1n?nV8sWy_uDb2<)ZCzs<}JJ-gI*Y~5J zl-MUK7u0hTH{sGTDr*-mFu54^b%$TXHj|aPB{@))8vO)9RNW+cA3CpZp$B^h0Z(ZG z5b!?W&2|>hzs+_K&FEStJXkZ^5#H#44TNVkfLPU?b!=}u$a+Wa4$O`m^~#?BIn{o$ z+pe=4{6sHqF5g1+P$ZgVqrM0AgG&st#2>r|eEYS8&14HjF{=BTdJJfJ;@?c1qOu1w8c)+JRrO8?BV za5Jo;kypAfXI~c`3>a{{+A?(-Z}~nS^Gj+XUAMnd6>h);E>sMTC-$1Ij7KK?`<0jq zO!*b-axk_hoGp3+c!~+$gB2iRsAK54sx0Saa$K) zw*jy#jXesu9PURL6?9g>;F6AlXA{Sa+8RiQ#u;a#S=XO5i8i2V2&mCmT3|)9EMI;{ z~YD*)^)@`}Xq?a2H^i0+!&cqBJN`Bc--@NFnIO634vmOLOUW z1kAh1JQXP2z9Zk%L$ZGcrpP(Ec(IMvcAMleFdT z1I1zm+GaNG_C^}l-@DSUlD%nTbcnLUUL{u8Cvu59nLKIUc=WP40ev^DVA@wBl3u3L zqv}WsJ4)fnl%>zqT+X(OhMiNxsz(W!iQ$`vz@@7Y81p`co4SXgsnldHpyfY?$mfp3SQ!wvNnq zm@j%Z7mxsUmMrf%N8OWq32I7&w39mq3;7{|Ft)M%@cPSNfikm?;9YUQ$a?f?3lUA? z#y*k!YIV&nFTOL-&BR=OOp#~q&m18hRuIsMR^R=FI<0Gg8ox|75sXNm+5 zQSccGPzOv~{|frM(8v5Hnx&}2Y{oVWzVSV`9xM+?^DUVbm7)rU;4qhMx!8;GtgaK6 zxCOT{9AAMya6bWYiJhV5!7FBX6o^)Hn?8T5H`{0NjX;#s7Az#y9^pxHY@cZ)c;BuC zPEru2v6@xXFs0TbTv*Qt(;oBf;`0y!9{Y%YgGt9uDS6~DU#z`ZxV6LX3D^kd214({ zf|lJxxex;3_s1Q8wxqj%8zMGSe~!mSDENjnY56~fNZ;*_6YOF^?$NF|F`>|Mk=uTC zVpKtbZ?9$OMOhAg&Hc}6^WG5LKl@%RENJC#C3Iz;h)VcWtLl zCeaF0rmIs6E#3s@DqVsQ@#}3g<_jXc4cgwR-DtH=ak1rz9BydmniB`%j}yT%DWIbn6(uy*aWLDMN@v_!vsqb$G)XcSBF#EX ze?NqvY}@delW^V|_J{Ub#=tsrO`lE7+3L6?>P936@{d>GvOOLmMh>jGKbL5ZSgy@1 zDE`SXuf*m^LHVJ4N|xR*DPU~O6^ot0 zcms7u#ULj>;;IU^L7RhN?_FG`{Ygy*g}nP zO59DNRucNH=+B%xG39^Hep&aeFH8s!A!V8_Xc@Z;xMFqM?$4DjF4!<6-(taKb5?wpSnr~OTWC4R^|_pI@SnpkD)!i*EgSF0wag98%*<@w z2=f0ta&^$}e~2saaM}QNijNQA-Ah*MC%!msnA+I$ds4dn$Kp9+dV(*rI-WHyk!8ql zFK8JNf)ro1z*rmt^H47N1MO@=FMdL_)Ki9`cC7<5O3NXI){q|)yQERx+51~A9kYy2 zJlwuk(7CUm^6^N)?^bk8UYgF(%tsB)7_lDj_l?!LEY4cx#Id+s`_`pjlKw+PJ>_|g z4!kl}XnSPIGbfK9r=6C`1_y4GEe_rlhUV&|NhI)SL7!ZxD3fH1Y<0f6);3uV+O3?M zdsSx;zi$c(p3UzppPf5REi=lcGFqF-*;P==VaUW6(y*g{qD7OKtO%r2Ul`+_SUvFF z^g)h*ASr>oN>P_6I1crBsH8h>xDfJT_f694aLtfYZH*C67?uyr>$D%C@xM!@H`_XV+ouPcG#1i<}Ou8x@! zY)97nnun$Wl2Sh&{5`3XeUYv+xv(Mvsr0<9A^%!-)=*!P!}jxtWpQA&YyW;t4=e7a zYl*iHe4?4F60|W`DRD_nHw?K>@YfLHW9lhNP|K+-Sg|40qB?>z0do{qR9uf2jzu|! zML@lOdo5epANSR}byqRrO>`GolSKFi8b`-^;OYT<=`RiR#Fz}VU-jHN<);XJBUR)y z*=G_x(Z5SUMMXt98b&-NuVlK}<+t4Jz+75ZHr2LSCUi&pdOG#a0J3RNHnjF2a0uxc zfZvPzsFtXOvnIci{$jo6RhX5g#g_!sK`R~qi!_@`UhNi7q%tctd)1WC#18t>WGf|| zWoJ<4lfB|+t55xhAK6;&Q#2(la!&itmMVxF%r5@objl&M>mv`Y4}y8O7$-A#*1e}A^9=a51mfUq0==;+`;6m*amKooF= z9T47cIb+&E5GThXTkZZL9v?pNl{U%;_Prm#=* z;o8ayzyvW8LOLKr)^=PYfQ$Rabjt0$K$Z{2&z_Qq9&6maxB&QBL`eWIjA5!5kr3?+ zJ-^Pr48W@bDG!qM0MazEfVBdROHQF=8-6dfz?IaV;);efDfn zFOxYJx6`CyqOmIJCV5a+l>j?95e`JR>>(#uf*t9OCuMZ(OW}eUc#;;grDd-Zq~V$z zby*qfK+m#fI{)b8H)$x8;BrT~M?jN@93;#~tv#x^trOoZ{erbeKBtV}G%X z&bK2|r-{FD!X=~`!U)&4f63v28YLJSsUb#&%$H*2chJ%I zJ~)PeA%2&}eOHFpscDInuA#jfPQ-x!qLcF#&xNxJo;I1e@A5E^Z`6+%Dj3EonYndu zr)ALY$}qE=V?ggk8R@le0JpH_EnC}pkJoiu z!n_qho!c{+!_RzJw{j=p^a@_l;NY@db`*`RmlJmtt)r`0-PI-j~We-a?(PTs-&FZ!l zUmAp#$VH#LMs>eLY6lMJHaMWPHi4>(8%nFT_bsHfTy2u|S4dlR6u_up9G=rq2%_dq z^i(ebDwgcs1dwB!Xn}7)98jjBQwKsI26*)SZx*H9;+J;|Y5X{Y2yLb1=1H`IVpJJD z_;<%A+u40uYdQXi@I4Bqy56-KD%UYiJz(ai-eAgT4` z7dG9!G%$u2EdX^I5I|y#cZ2KY$jejq*V+dp*E(INY(?jXeH2GH9%ur{uR)>VB3d+? zuWsn&Tc7c{7c!+w2K@%dz$jiV!U~rH@+b6 z0kT(S?%JN~EwaQa2POms*wzeEmsH10Gwc}=7P#gA7xd56Af2GmV2ENTR z0s4bcY6M@;l23*upSsaTq-wIE$hF2@#y&&1tVlA%&6t49a(~V2EhV`Foi6x zAmY4>81oA7T==AG6TI`I-R25jhKOHx;e%$v3qr&ieQ@xHZkJh&B^Ixg1hjI6T?me? zJNnO3eGKPC0S74T+=_4PpfSc2M#k4fSCb`h3%^C0GerYqb^^M*U^J0ZqT35*HL~zlkO8+q;L>zbMk~0-yCB**tgwfk4(Q z(*|9hS0*}$#XBJx-s6n=O|~n0pVRn_eg=y7kp4w!=|?#PR}hm2Q=|ThA^>Mm_M{Cs z)A2?qw8xrS;*k&#iPYtr=kC7E`_n#tE+vm-&+K<+K@C}};X|p&%6yY<{CaHxnRgXl z;SSHrF=vX^;woPus3YNWf^iYm4ZI>T@lI@&QV?o_Q-`s#h%d`zX9}al44_RvVJHaD zx?06?`hoJGFBoCe<;9Do6&22IT3FZ`Zk~Bvwm#2!(4WLDML#KuSH9w=iQCt1Li*Js za&*>o;2_P<$Z4&TB?o@PXvJCi`tQk^dZB@>bs6SpHNMfT*7z&slng6~Z}f=j!sYa# z&0F3hg;&ak`s7|@WXCEws)OZQU^H_?9+V`pf9oga?avLUbM4r4+Gq$AGKJU_vjjPs z_|@J}OHTW`HWM;JvZO^?uKUh<9cjzVksd2ssw4+587n)duFv3;A~cXsVDR$9#D5}p z;QGj)EmiXV;N8i@o|;w5l(RHLc!W>xxFzO0MX3VvL5?hrvPR6&QJUmI_l6#+|uq!s(|LElG0jIIHdk_0r_lJd~$C9knZ%4*Q z1jP#M5HU_0;Im1kxd=<6v&s416lUK!v56!+_~BXBk;nwHgkNOzs3$H{7=IS?G|un} zTPFz!1h*ziHq;{G2Dr2GcZ0 zzm*aSAU#Y44(L|7D9#RYir5)nBywr(KMe{`oMQ=VLboJZ=q(;OH#tx^2!GrNGhdva z4Mp|L6agf8%2*VGvc+0`T>dwiL4Yf2xJbb5Xzox~h}uwG;lc>YkO-FLvd1kn(TZTG zfpuW-FbM*~^{xOV?gHKcj#NU1__BxD4l!lj4BQ_&CPeBo5kl&1wz4LI@POzO5e-hF1}1EgQ8~Qv)VRf7%Ux*=Qu>VZyPx(ncik~&R6fHvUwhrdt~_iEl*rwy zuLtpiYegCyBsN1bySMpNX}6C}vBL0-9)+E%EBJ!81dFA76dEU5Rt<@rbavI)T@sht zJlW(Y@l~2<1XMP&nDft!sVdmw!q#e{-GEi!#3oMJRjNvueu@NDAng-%XS6V>OlFiN z;m*2#r+rv%qR!eN6HJWg^!TzX5IO zZfRV{Or01&Rv9j#!92%YGzfgQI|otf@xYV?c_w`C*=1`i6u~LJ76Sharw z|7kC;wBgzmkBe_ae6G^c1e^Z^^?B}v6iygJIutt_;K~T`pX}ubr;h}wNwe9#r*i6j z8^z-mE#?)=GeX(rxS3!r&~}33P9ap7K(~x2+04E^h!L@nQtc8`?04%X%u3b2&*!X{ zg5^5WG^v`P7dq%dk2!B94(*?BQN*A&141~7*wAtwUb!(FSHM^`U)+YJjRBAM<+p`- z=A;X#+B3!(O2q_;#|Zcb43XiA$b?$I!3ee5vxd>bM3~eS0x>HGN*Hev=gS}oBE_)`oNB(bOSbHeP>_KLvR#%$ig z_;jr?{j#6Jh#NAQ;!R-J`YWeWF{v743wa4wyqp|U074LnB|$>PM5Idw6zGG(cNCXq zHf*_OteZ8c9&{GJ*DvV&m1#AajH>;jpiP^o_{%9Rp$vDg4>Q8BB4p-BtTn5ZX&_%a=WB|30Tzxp{RV_LXf*2jMaAvgpZ`xY!bJ41UT%g1&*XhW$b)H89^?4e z2W5RdVK&=r1=a?RmkB`NtdgtFr8sh0N%T&Ni%!;_+`6!IXf zv0L4xB#9+dbH)TkNT&q+tJU3ukvc?cQ&vleJeFd+V%2#1mqa-L07~mE1p4TpztuRr zl#v+|&>GLSmn!Iw0zdkHT7aRJL_ixpMRe%yU{jXII*zyPd}()sDPG*E!}jnv!|_eo zE~_{i(@qtN2aik^sihbwg!Z9Odp_cube7U=Y3v6Hf?14Gtt5?gkzDR_JP=bBhSEcY zW|`GeKS~ZFv1z$q32vsLcp~1`Edr-Zh#QuVHdAa>o1p=e&=mF2>K=E=McxyROdr2y zg();J7=z!A>&1}d>hS-2oIKDQU!kj%{f$qkPCaiOIJ`@eiqI<$z5Wh!5Un^Nt(lVG zRTt{hA!u=LSn)!;Nm6q$gTwMZ!rU%?9byeyT9Vkw)k} zUe-fDFjeG_uLOr?aGXe6S7f?MP^B%)A@q6cvZZBU2Q{Qd-uv+$4-!ajb+zx&dvLjA zWVG-0il%O7JR!IzbD4av2}S?uA5yFa)q&wOD^bZArwE!!RF>NG#OSa)kB;1CL!Vu# zMjYJ6-KMhF-sP=`pIqW6H3U`NTWxH^d?iLbU}QBp%1%j-Lh4XT>?cdUY1++skq zPh*|cXGq9ElU{{CX1HPSd|b{f!6{TGdMcNILHa7Cy3gyiM(vp6lH5%w+-S#0APS=SWQ4suQztqn;@rR>u@6t#pC-WRNEH6l?R^m ztb{R~7^P+t#5y1Gyl4&B$5LaQj0n<+={AAOB>her|Dx zd&e})YBU#d^}tX7UB->Vbpvh7=xilltvOSop~7m9*PNkfska`mCo$Gy60!HB_367T z>zug3TI2u%!T??5z_0L~Afv#8pEyLVXemJ{ zRtxt#sjrk(SEVZ3_x5J}uBgS<%CjAgSbDM)(eRDC9p-uMW$9Uplv#E5lj0PvJMq|- z9dB(B4BtRwniq7oi1wnI1b~s+KVzAP{hSiB`WB%C*SGKeWk^iA~a*11gg#B5tX23DNP@M7W&UWiJY(TF(nE1x#=| zXwzr}=nu1$uCLiOOl(8GmCXoiKlBn(sFm;c1A#&A0&(7FIQ#ptCS6>i7A{0*?u0pt za?YnA%ZcfC30#9)hmoa;T#fe!Md}We|g2Uj@Jh`%{6jPN^4kyR?ql2J31ZY$Cksy9F)_Dj&%xl zg%A6gR>%j$Q2BArXK9hWF`OxMqI98C`BBo?u* z^|-9CWy)>+0|Qr=%v!I)XaXKyLL`wmmgZ zx)>HdH@?ZRy;VOHnVd9=p@}q$+`4Ee$R|>V$Y-i|T zGP_TmsXeXzfTyDP44Y#bT}Fhw%)8Eq zOAaFMGZw>~I8>xm6^^>_U!{=~dXf&F+h$mkcH?5-PgMY|^Q0?hstqah`ofmqBkfy$ zS&ncpjSv`*%lqwRYDVoN72N!Yn-#%aIK~N+N;US~mW^g^LlY+-L&XHdQ}FT;a(+mg z!R0Y4jE`>>U_!|O1oZj2ein#N8ME;RB{(Zlq)iy%lbepRoBK3(W6bSOFaLF$D=2m; zpX4z)XWeIrk)PR#NJ2X6WqGZ1_>-EX(eWGEY7nE!1v*q3Nt^9QriLS8!vNXW?2KsnM#3U71Q@({{qKe17P zF^%Q{AD#DYC+f5RkY=wQbDx7dcsab!!xWaUhBuAFzMQ54OK9&CfOh=RS~l>nf9m1( z#{1MNv@2&rvvL3E-Lz8HP4M8%R~yS@Etr+`s1X%vsTWF!hguo%vV*hnEbSv66cDca z-YY7FjV=Wh>8paVuQMi=f_~`M%pMKKP)~Uq&twV^UWH6XKE7Ug{$~30)0mWC6%lXf zRv$RJf)QJhq;_O@HcbOQD{1BIQmfEl zxSB2)J#g(#?JUlkSYh6==M|2`%dluzV|`1wmo zI(q3u=jdlsaG4swIE~nG4{&8J*vn+`9fbmACi824%G4{tP6UZiv@PJ603R8{}*F1NJFPfK9>bNmpR+M+@I;i z4;_9TCH;+pau{d0@_x7(S(MF=&Fj&QZhG(s-ShhtMr@ggwbdt>R54XA%sOrM-vjlg zVYDa7sVo>q+>SoHd-oP^>#~A#DjpDv5?SHcgOSrx42xbr2?6H$%93?_L6r10ecO9W zroPUcvjP&8MZJvN%8e)-OR7o+zaCiLx)i}twA*I2^$x0YB08VI#Cb;~itav057 z=6#)cwa_Vx*b6et$CJx7z1ZWzY326Ogeu(CSosDg{TPmmMayy3QS{yTSA)kcd(XW( zTBt?YXI3Kdhe@xn&=U~$yq!csFUs?&N?TZCf_?J(z`CKC3}Hyu{XmNINdQ_&;Y5Wq zk4b9%PYX#mywM3sh=r$##kz|OkRrGK3mD?5ezLm zT~g#OJ7N6f<3$M8uPYL%Uip5l)J)2H@0yZau6#byWkhU^KBI{fbpDbdDMpDA23_7; zWu_#ZH3+<2U0;|wgOMbmD-d9b#jIR3UBTowaX#WJhMS?Vmh&!F=s#kY$>RAX$gxH= zI7$d=`1a}UO}O_Fq*(Q9kf!c6al54o8(d7`f1%L`y1VFGb}cTh8>?9tpN1C4h_zZo z-Rv+ZOkX0vX|Bgk4$F4@E(^n!Ufphx$qHXj1!hp)mZRjOcpuJ}{q{IOuJakXv6>); zO)RyADxWiyv#g?*2yvEMEzTa~AvHss*2iG6T^U?GJSrb{sK}EVNk`|t;&x7uU|V6I z-_O$4xx9Smlw+y0f>R;3#wVmTp_ReMU#_eH?NHxT_6k=1H}NtNK~N_f351=aG9g2I zo9D)TdwJ*zJgOi^>qPTl%jVG-`h(tp=G6NAsf8!l++}VzWbAgQVkOKWF^Um2^%s#E z!_r4)cb3kmJpDEicTjrMlMHcrnQ#_B^BdOXQh~q)2@}cvsW6^$QTn=GIodTlI@eNx#PW)wX6`D}`e9jTtQYlS1{YvpiA^l8U1J{-IDC$}Kfbq6`nE|~TIYQG9@chbSA}2`0Uo1-_cN2n zN+lo}289$?w-B6l(8OLb+=T#T{;Tb>0l)Isk+UY%5 zSarb9N_hl_AA|v&?0)Z-mCrX9u)N?!Ru|EjeGy-^rSFIcJxb*2>yL&i3BdiMU(3Q= z&>H^D=w2wYTJF;#Wi9?^3Wr8rbl9)i5)CVZkJ>Qg8h}+$?f*-b9cw6#Vo&X7m~IC* zilozS$qs%5YsBw1E8BJ+ff=n-rKL9ISmd_)ozPkgM4~t>o0+I|i)Q_2`f9&da+0c~ zYh2X1KUQ-C$8DZ1%&*VWCfyPfwTMV#=&UfPSvA_Q0DbhVIY@wMf3(pf zv}JC081_1f@Efx`(K2mKCe2;5d=4o@c&)Z;IL$%MI~rD;dOVl24LHBf`bK3VRVB(A zC)E>Y?3z9IrgFc@2*`6;43su!U8~~Cc~HP%evmRD0;ry!d1S{-Rx6HvgkS$ zUCyj+QGqqsY_94YPTU43DVb9eB+Y_`*IIhotLW=nC%|>Wp=*MlO5@*7VoiBeY>a>F z_8yAJgg9FyGk4#pY5Pr;DZB3%dmIDS1Z)2DjWakxGiifqzq^;^t4pIO7+Q?@Nsma0BnDUP($coNn;MP=2pq-oklNl~VbQSB;%iKXfT2Y9$~l>!Wfkdm!zk@6xD2na=C8}a`*@<#6y zH;+~y#ld56m09ET2tY^?J+RmQ+pPxL;{D&RH&Fa<2OLiU$j=2#P7#2)Q{l(ihq|+Z z?!nV}75S+l9s$m%9|t?f=B7A!bWx^RZwl*GsOZgwlyR0iJqkPk5l&4UJ{Xs8CtV?e z?l9U7*f!|$xB2EiOTpM7!$lBggnCZHWET}ieD+OP&t(xfx$ zH0OQD4_xlR<@_EV?_La~;?I66MmqfwfLi&mtHX#LfA zhRg1dSqitZW+Be^Y9o!1QVyAR+cilbSN5xxTNeSM9G4YJ4W`dHIRWrcL%E^C9^tr* zvubY7zUE;Rei>~yb!VRSb7_+Xe9ZV6Ado0?=Q#_OjXia%XN?CCX}tgLK- zBN22`pAog4mZpsF)-gs6q@J=~WZasa|1-h$!2id~6Z;;)+xi^3h^< zOpX0!R!kOaJ5oUY%5lVVK?XWqzc00MZ^tH^{-#H6;Jfn-6nBmm1rRZ z1)0PqJQ08UyL@wb5J#evDTUMApI$5JkfUOxsnInd2lDd+!U7Kf36LZ%3xQrYgKH$s z*h?WJn>J1S%O19$8}7KMq+r3-T|{OrM>u%l;T7n@-Ld8m)q3OfpJ0w5{HyDl%+35O zQ6l;D$=$Ee?n19#1j`M`u(3-Nb3V2$KUC|C_1CzJC0mZ`JLfgwpMWwCzKRIwG z09Gs@3yK9?2NEfNro5;Hci14pglh~w$V4RxVJjqgZkTI+aw*cNs4luje)A$K1&X?|yZ~Wqx@pv~o&|SS_m;Uk#hdyeA}noI z5=rG_k^hdi^SZnt$wG-^U#*{t#^n>_$f8O`Lb0g+E_;ZXVEi#jz zx^=PhWE)b28*{+dxHT>Opp)4{V@Y35<<#JA=9x@hf@kV442(4bYrE9bq?F(VDQb*wF-?`y~ zSkem)g&8ZOjXYAjvhKmfgWAbtCg!uLS$1mr68269I6Gf({}8dmWUbfbii2*7sqeH@ zM!{Um@fY+Z?YtJ>WA{HTyJIW)-;nFEH~yZSk1WX^ggro$U?_I?l~LVOXxg+D1rAOelLykg7QqqCYu0OuN+oNGvt>MpDGHOn1qJ$|E?IAe1D!OD0 z6d$S$_{JKd>b7_o;4anbM4MDltTli8Tck^fGUIEpj}d#m5;1w}k5m}DMbl@DN)syd zruKcc4wX_s3ojwQ0L!P`Eig<=l%t6tszx`?#2l`n;f4)+6paDKAK7Z*;ObTrVUG}q zmfyoRMFZWQS5=g4!efamWce57QcOwmWm=*>yg`3Q`h{?xL!Gr0_=D^B3+a4w0I{_n zUbc?;Xo;0Q!3WyT2(F4&yjv`rrq^Vagu?oc@6K@z-@#q4%u@2#yq3#zp*YI;)|MHo zZ=S!SD>cC;{;>WKOQ1KIWIFqO?*`$@bNBy)OXp%>TJ^f9Rxos8^EKf2UTB(fB{fdf zHC;dfHQyLlR+F>dY-s>D)6eMMD#I16_ukxFA-3r^*t}v92l|g`Ife+}?C_?SMhA=6 z7g-zO5ZkLShxrsC31X)wiCkQnS*o~lt1ZuEyNB|#QetKH$2@m!#dd-+dUX^-f6_B# zOBg7V%PdM+8w0qvGlIi_d)sUm30&fQ)mb16_r)E8I~*`y6vHsE{Hu{hT}rvKxwu4M zF^4`9;}rkK^SOk!qoqB#32sktmP!%Aso^1k%b&oLY&B1DRsKo-Lzlz=)iBc85cXc+ z$KWJ&0+%8@u9kQ(se#loRzr)mall;h1dnOxk_b#dn}-LYk23dRujgFDkQ#?x8!!um)qa!({0#QFFH~nDhl5%W3H7PO zqGQJ@qun~Bs$FXtX>Uk1_$WSHpX*)7vprzPPdIc+Rb^a6CQGK$G_mc2Rn~RGzP^T5 zl|5q{DtDx3a<(W|11hPxrCCyyWwT~e`G*eDF<#EYVZGB*k=nmSwoGQwC#=-wc!ghM zZMeLBve#|K*mKr#R8MQi3o4|EuX057IdS9o&I!bKkzRH4bVB@=E8_aizV;d8HzHi5 zxx^l6GVG8tArS`BK(txxP~c1t4fBQsgPp$*K2fsmXA^K@{0g?nYZMw7OqlNG8Vh=$g|5+ z_NzZo~H@jybX{Ucemz2Ex~^AQZscl{1Zt#e|-n5^e8|F|S@K{&yXnjeVN&> z)46A!x0QJS({qYK6P29hL0$?$xq95nhUk8N_XFA(E>r-UR}%nL&s2eCH8F)9UBA_f zX=(uZN!vmf9Z}7Cq!CW5n^?vgzCOBYWB8iNLXu#wzGQ6Zz`~X+E(<4(2j(vM>orA! zPQp;XHad7@*`T6*P^WgO#O}&BPBVo9MiPTQ+(>`--NpvuDX<~r<)fL3jz5V(w4q4R zV7a!Zs?gv$9Q`pR#5hP|nckkv&gz9)5|0W?~n?=jUCaN*6hcdS|M z)stClN?)1DLZWtZsVH+GC{03Lus3<5X1+~6Vzy0q;qUBQNXe1hV8uraPfpSjzt0@Z ztiIE96f?#RxGXFQYOrGnTgD~T8Z^((rv|M;Ds!gIv@(TJyA+~zn-cvTDp#q9Hi>W= zf(^i1+I&)@NukHSG&nim{(mK%IH;K+S#Q?ec!^8k*5iX2udEa$B^hX)9X66x1hty1 z7TNrV2ZQ2gY_UR!3#LUz9My>#gVUvB%? z-P|O0Xsu#mGNgiA2!B_KV<-}OTc$-4JD9A;zF6Djqyeua6h_^4 zZ!F$j6{yPyOp28l1UHRxCId8(`77xI=*$EI4F@E43_Vwq;;Rw@!m!rpup#kH@%+Kh ztnl>k1k!L|=}m)G$1}>TyBd6Eymevn=q9I7OX$7s|7igRc57Uc0*mEos>#UCKjXKM z)p)ciUo#b8dx7HRH`2UVdgMuY41uo{80a8IQ2{61n%b5JTL#i zIxQJ^Y|(@1dh^I1{B}Qk@X3t{_rMbGX98}1T4($h8Kc3iR#OxWiN${LIRy7a18{P;O-8CTae(+;4XnMxD#ALaQKsVbMxN+zp9I(25P$d^gjEn zv-aAnrTahIL?paLiVLl|(Aa0o7~m=l9i&`^UO;)3qs&C#L)3Rgom zD=>e>gRiN+(rAmB6s*QNHS4$Rwyk)Lb69^ipnEt5X1qAwGs(RGEKcO}deWut9%4rB zMrJ@bCEoR0pM}*vh>-9f&FUFE>{`95gB&pmlT~S4)bND=j*s(BsbC%er@6DHTF3ic zEbU8lR`;05fF*a;7|gNA$|vhH!I?q3_eihHC~uGld!Ii-!tQ58QLkk}UT`B(U7lo| zn9rf?;*doK9Y*W`2Q>g=h3#|JVvT64_-x7DT59}()GLF5q+L;G=8C;lrBltz(heFs1{k>b39 zyE$sgVLaBs8yg?q$4lq^e~02<=ElMC(-`ev!*y?~PtF?Rhuwj&OXI!gS0KP(*@bJvr6GN^`2 z``umYDbVp;dR{-()SJErLA@<{R#;KleE~dIfl;M-WP@X|{JONa$qyV+p@}**kO?$K zGt@ymP{>{=RyIg^5s_s_k&(827(sce%NZ-xFV*Tbof9{KVAYkoe?NK9UP5W)*UvC& zT*c%2KMLkCjNif`|6`z1@HZ!yn&48ytiiw}t0W!)Z0wO%DjUv8=aDf^NU|`SBnPzO z4^Lm`+xbHtjB}daEPOr=WF0#G<~2t55pY?OKby%1Q4v+y`x(w!7Rpaj0>1JK-LGuc zs2Ubw@hS!9P#y--ma`2mMszCS6VZP-L%nEpfXT6l4Didth`xDnGJSct%JiEB@fu5<_g*L>&eIQX>+zhvo7{IH z`yNf0@9E>xV+=9XvZu&o?P=f~ER(}aP$FHE*_m_#S9a3p;(-_Gzm6>TF5iWKdx{BY z4y;uKTdba7Yr0KgVQBomwGFLbI3nG^{=L5zdn~Up@w+&ja!7J!akVZ9Wp1}}IyWbl zt08ifA6HC{)On!dPug>P;Ku4s>0q!qnxdN0pl;^>=*GiFyd2M?!)(50xPpaF17x<| zhT(S zKn+hnAjo5}sFhc93LE8YMGoxjf`o4Fha@H9Dgw*Wutt`1t@GbWMkm+d$-*I-K<9J?z{a~Y$ z7u~Es6OSHO;Zvt-ry--DK)FddZxRybCyDg7VWmfTPbYRVLSApr)TA!Pwt+zK3Q5?V4BwclOU-4#}gQRyc|`yImuS&HTHE*riYr=)NL|n4wVep@=EAL@6#%YO11y z*R3N`8oZ%d#+#*)yF#SGA7*VoqxhS9A>J5vBQDmK$?DK|JM2#>ocK( z(WQsTU)KFCNS86D3KwVq37Cz^z){5Qx5`jMux2arT)6Rj*LR=p-!G$UC$ zH}fd8rbU8QlC7~dn$jp&2c!Tr$2S@@psE#Eub`Bo46Mql%=BntHqTIYqMpumziT@R zc-lFM7D{5V$;#_TVSUp(DZ%ut;R(Y^8sBJ>)tTBaD;AAwo;ltTztxi1bSe77ewG$J zoYba>uSVyiJor}IxspQC%if&uriN??yc^rd{FBVh)A#?Kc7dE&s%ko+XR9)HUKgSW zL&^(mygtY#1=Lq?t2-`?8LfOiOAhoo?ejVgW=s<$we~wD)=l8_EJx$hdDOkqIC2|B z7#)O@yX~^6984I@3E_p%HAT}EHoi#BU>tgQ;Z&BlrfxG|T9zT^=rQwU=3@dDvmD4A zaE^YtID}(@?%SGH+zeOA_Bg5Td!mFDen{HD(hb#sriU@5r7P+2P$=ErD-x)!dPt0{l(4htqE}2_ zDp#`feR8)ZWX#a=J7G(W)%7)aJB?+k=l3><%^zL zPRhp-Uams}NQ|RXVxzWgjpwa-g3g6VPD==wp4$-EMfsJ^D(>2ZE1nj5wq-}*4(F}~r7It+`q_g%k&Caaep8v^J z()=!{ll2(~J{(^2%P$UR1J{83{8OJmzP2Md;ujZdRFQXWh{g2cecB^z(vN+54(SZ4Dm33F{;` zuDSw)7SV$tamipG5-L97n9C9V+agU8lI))5+7~u3^@m5 zuAHyd%7qg8MJzO~2B<0muH0Ey^tYtagVI>u{HJXWkO}=d!CKLMvAu7i`C-5JUG9Hp zbfYQ@kQspo@GiFhDloq3M~01#Ckl!M4TA@o>Mtm%?h}DgW}BpI(L^5naS#&NIl6TT z-m;{Wyac>SIYzQO`81 z$}l60YNbJ3L&UTAx3W*K>W*LACVi9+l1{XiB_{jqeFyL~_0(ccrtrlX0v(&k=;$ncHw%847xi}R5Z_f87|70xR4#jjPHQX- zlc$YX7EHMg>Gz|L6pL-ICGNXtlxZ9uOyIfE8~BUy|HS{74XkPYw>Y`}Zfz0a&AFmf zQPU2ke9n)sF6%ON+8@HdDsmr!_MWKs)Dz!pkfeFbL<+v&k&9I(QCJy`==X8HOp*Dr zpEATQpxtxLyY~6pVs-DvIU6!oLzhGZeMFF|l4Ne&ZZStHda@c5en3F1hr9n+oyWEo z2oA`JvCq!w>P%W_CwK$HZ|U4lhg8oerHY94F;H^w;6m5Rw<3Wdkkzy!%?dF{byBI& z`~d$(u{O!P*h>~Tp>dWLRbL$jysxY+yyAT!LuTy^N}|HKU3++ei>+#di6V$8guLbe z6CT@cq*V@8j>DDxS3R#|`Ndm_A|BSTlDaxIr?~ryi&vid&4@`=Fx5gw*$PHIF*{!_P!JR3{&qg;xTYq%DtqG!?PAqP`3Xc^{VnWR_ZhH2v}hg1Uyit(WNKC`Qua-zTz9 z^J5*rLFu3Yy_D&oqfC=~)XnJ%8h|lVLmqd7O#s=hpYFJZ%MlQn`t9VyGhA#5cK$9witxkUheFibZX~Rywf$F7!!Bg+-@pHyL|8lLnlm^xvL3=+<`gt&yki1f4|Hpx1| zk>hW&9OF$m*&mPD-JU19Wg2FB&Bz`!N%Z}QX=w-9xHJ-m;=RW_BqEF_`J>n~Rwbk} z2do$N)ZUbtn!6zm3)1Ju+}LXe#Z(T$`jgiFw>b&|?M|eOdr@{@9wBw0?^+Vdv#Ah> zR)LA*?2?u3;*1RuE_fV*oJsulj=ul;=|6N{sJ7z!aME%G8HZLcbpteUaB>TtHi@mA zUKvCjT>6<6cI@+*v<&`iQ5`!Nk!pq+w|wo&5P@=@l^1P2lXQ`AoUQjODl=*TySyR7S*ss=jVJKrdjV{&)LB3cX}79 zj|2)*)Y+AfuR`g?+0_e#P_GS;IT^Z2xiD;yO1zTXFtjC9qUW+8{v`jrQ|lo7wH-ro9v7X>croHGhw9;}(`()t zTOKwcuAsw>SM|UcCWoy_ZnGBG6Vv1}CeAI+8qcekuQBT|5niV@dRTVJlhU2)*pVvI)iQVTG(O+XzO1TCW^h9~@SEraq9eaiP*&>B;Gl2XV`p5hgUkt@aUN^Ds=~dInPfwqQ$pNIn;JDu6p6$VJyk zIV-H{$(cEBsyNVnA3_7ap;Bw9k)0i^5+b7?er@*IvLQ6-{hYOz@L~H+{JqzSY1`od_W{t)7w)bn`w5OUd*=3R+z#W!PJ z0BKf~u02_eI>vY*>^+t6`U&%b{qSKuJVL67@O4R1cC5E>sdS6=N_6Qy-4%7p$NX)m|erql*|<^Q_|; zoSoN#36z!|PRk@t?(u$x?9!=il4KxDjW`{@N2a4PFTx_?w^j1Bk65im^y2R(o$A*l zD_5b?aaug{;(7dUDD3ZhSWVUseI8`>pbU)*4X7{Ae1X-m)ThSgZi)-kb1gKn;a|s6 z8kvb)fq=m0s`mar#g*Sp6rvmL>rX5nYV;$nj}}=!Z#yGwVz!WAO&{QL(|&pif2i}U z2<3~CtSVtI`*v*X;PD|^a6rABaYI*3mr`5N9&+K3x5B0;y}shRKW?tOwtFE6nsH{* zX;N&9IiNl>M}knqs2IVy;V_nsxb)EoG^D*uut&qwdOwm+ zE7M}F@;9?f(}46FLaCf1!OXl=9e4QDwI=~LL;lgmi%|9-H^h#0u3pg&$*{{7Wbf0* z6-kg^;ECn6?h25PW^30@j4a9w5frE*VtQr{Z{ZJCQjoSdm)la?qHFC=a#bw_KHqh}Xto{2p~52;v)AfwAM~Rxt=YpVul7 z0(RLul%9IvO<3e{q_-=qR>@ z)?#0len0yP60$r~b!UM-@y}o@)to$uUxM8jjt{~@elJs|H*FZh;}DyIvv9=nM9!r5 zqe9mP!aVSAQ$r@FrV24r*oAl^A+%HTvTPEMyjbJ|kK$I1dlXH@Apa=qUTM$j;$Qr3 zMFq(l5ZP_4V)J=(+$q*9yaKoo+Pdt+?1Hp~DBRj26=2JW4OnfE)!Rk)Oq$hwk*CI# zqJ}IEGK~F@nj;OaiA28buEa?{PiagjTcT9B;~VS6<^Q3WrYWJ2+gO%l&XTOzVpu>2 z=V+syR-%ZPv)l4R_57W6A4Jh94l75^Jt-xdg}9$NvUr^asd*=gt%Xr5lX~pL%=?ubiVk+Y}5unfu;w8f+lr9oLv~EJ9(Ys|uz8c!%A!>PV^~QH3?q?{xF1raFMS<0S@uPUDs@+pMFrQv-O3jCAm2h&~W=LBHtf^EY=@dV+?I3b9zpdjQSS*?-`SkX}pM}E^+IyiWyQ} zpLO-hHbn0F=|LI3N@Pa!4n(OS43Kk3E=8>I?3E-zOT{0d z%@Ky<#=8p z7Nd~ET1IvIiav}|WeJay)rW|?Ezj0@bS?)D`EG+7#nqn#oACf%@Pd`EKOm&@KI)o@ z7Nevs@EXPY)-x>wjz$r8^PvFjwa7xp_!JIr)7i8GV8AaA8NidI@2wY9r3pL?{U(EX zjkS4V;DcvbfwINJG7SWFJ}zo8&hbeq8x&b^&1*>EmZ=vs8~|bTS8Aa>d;XsoNP~ga z9hQ?&iDeb)fDw%QI-oS^M>`24rXAl^Y*`t+^nOlVTZbjB-2tH1AVs}6Vel;Hs-9a~ zf1#Tv9Cot)Ak-xCtchDByO+)rBj+8foJ%q3$~A{eEDv+r??foImq}cZz1)Et>m7hQ zOti#2>4-I|#GB%sV2!;6p!XXyaLMm)m1UBkMGtE(z*G`jB}}59AJZRjQQzu8(7?Ja;2mV@dHPtxL!wl(z(Pm8Za`7Gj(u(ojGbsvkd znW85`6MK1h{)$q1L^dtuE(yapT22@Hut2A_=vxH4kU*?@YtJ#k$a|GJLLG4L=nSIB zS7)RJ1OBz;NB4o;wEnmnL76{j^Ol|bOa6c0L?EkhJ&a&%BS^_lzy@X7{_B(qn8}25 zr#i2ZyClx+q2H*dNy$jMTou!l%E2Xa=M(VcUU)V&Q#NgWXF6goz_hWpkQ<2@$zU;q zT>fKhPYZ-pppPCB2XjeFT|F|{%(;tS)B#*a0&B!3y zk&6yI3`q8M!A+p~z!=M!2C)vg(%|v7qr=$#cIJoPp8NQER87rc8Gb*Jq;A|W196vF z0p_;Ii7=GujDIvn;xh-gnU;9QfRMQ#O9C@b|MKg!pF2t#G!rUYOuSd|{K^iemsi=F zZLw~XrX0OXnntU)c#CcJcNK_J3=;$e`s>t@QrRbiHo5zVNhBw@d`?$i4;~jBjW4z= z4j@LKP=;Q3Q|li^47;wx6qTb*oysV&a&cci35@ZZ%<$0=_tFNz<^FWG$OuoUbH+vP z8rSn4U5s|sLii>gd1ELN@xa4!G#JpKz>qu+KjR zimYkIY2qZQ(+Dx0--Vmbn>@-l7)n^=N3*>>w5(=-nogLUFkt>=PHhp!H8zvYANeNE z7m8Krk|sK3l#;JmjE+AZSiY0uy4TjKKR|XTaq0Dj;m7=_^7i_N<|c;bWF}`$9CoXY z_U&aW-9xF*u6}d3vTGkKS+)^NKeNy}EcJ1-zx4?I{`vTk$--V>k~8kv4M)l*_rrjT zJ1|P@?Fd#WKf24_{lt0?sD9TP;&lWy)fGL_+>ODy{)~d{$Df3B@D(=0D%VdRp3hHiavu6>c02rrQ7w{ix3D4e|DqeVu(a94 zTWJ8*d;^s}%3E2iBw~!GkW8C_J1fnBDU0G$X{a@8$#K;NjFA*aW`~p>e#)m7naD2h z$#jRzY(Xd{351OJrmRuT#{!X%9*9ptgMv<3fdjP<&-=%Tcpia40MR&cB2Uf5o$tJG zRvXrmH*9@8U0+*blLKKi-g3;`6W6TAoNc4X1F?38Z)kkeV@6utT@ylbqf&IIuuaiO z(A}X;kaTtI7uDVkS@YDPRgEIr9jO6pi@LN_2Fs9Pp6+`-%%r?-zYf!P#mHl{zj0j~wB>W%usEzsm} zoa+X2fJlJd>7b-?=CRsns1Q#p|E|3|?zpx3cIFe=Q0kFLU_=C#MmS+7CAQFGJmCW( z$k2h(QYe4b9@6{4#>Ww)9$}yl`Vi{Epg5uK1_o3a81@dGY6ljZ!PHleFAn^NZTmA9 zoGuWVma6(|UcLk`L8F=D&vE$hV zQFov4NPrK7%6#Pe8mH@Jz@WMwF9PX`&tJFfXDx-0A*=G7YSGRS6U1W>yY~TgmR9@@ zVqKIK=TP}w4lItp4dO>%bwhid_vEfv)q#zMygLOL7`yR9)#LTOR7z@6u8iF$SwI?4hGK#)mcXkhQ z#`(b|6-RysGc#OJQ|ZA?A>zr!gC(v~gn(NbA|6^X;?8=&2=SBlDRt z(|lN2$(>6#xGdf*Z?9X9QJE1}o^(p^Rz%*eue2kTDbyOrSt4<@Ti{_xTO|+^tkj@a z;d5Pe!aK}+;*K_QN7L=TdFYvAHC}!a3Er=Lpr@siQ6;L%C!b;L+NjoR&(vh8%QcL> z_eIk=HFL8^H94S~QtwSh7~rJ+b)t-*5a#Q9yHMQX_pN1cW?EzKe_e1|tYPt!Rh2KD zU78}M{2c|A=OGGfEoLnPThrNw#4WwkU8yIBt~^+%5HC!2sm*S%~k_cvYt7D zJb75hZek`IMz`ydz3)8>FVlQH>Y2Ql{pV-N* z?stti=TUEy-+w9263ADaxRqUf8%j|4A#3RIk>u?zwtR8opt{SX>2V~;&;|dCUWcgb zJ)4K`4Qt)*17v==NJ$zZ?|SUXL)d3uMCK!UUROL%I}5+W&+^E_xv!J#?UA>+pVoZm zai*1AXoQsMUPE3;HZpF?GdO^%jeRZ7nW$*dA#A+I^_=rgBYXMw(bkj${pWLs(zaP# zBB~Bue*#)1+e=n=nADsIl zO_+FH&}IS_KZ;)JTk+P?fpX`>!VPz)moTIi|2db8)t@BU+Rr@CWi8?Vic80E1L0_r z-+Qh4*rWSjPotX~VyS6x4AAn?LF&ADGMzl(^%MZ?uP*oygvI@OJd0E2%T>F7#6+CG z5`-O;?*7dNX zs=lc>cx{~4cLQ^)D@Ed-2CNc84Bo7kTxf+pb(d2DSBQ9<7jlE!elg)9#XdzwB zmO3-8|1Lq_V9G6JQH7+h$?*lQ>FKJO?L$pj!64#pqFV0$7JYY|UI*?d1MopQelj40 zjQFg@kz{=VNu`u8)C74y!*OMORZk*Dv5WhS%>rMjXXGw!mrZ)B1<=N~1g8ljiC;k8DgU@MVeDTsIIHpcU-wIr48uRg+I`@GN5 ze4_{zc(~#de*4jQm`7bzm&&D~(nU1H9WW`0gk5}~(bW1!qfl2<r8XO*N> z(ICcw#7Z3ig2xouwg{hdBUL0i60$?Qi%g~b{ z1dsHxte_ACBPPT*u6BKtl+|m+6`1uvdU0_I|Hmup@BZ@qR9rM#+&MDbNa*vBp+JOq zT{O9IFZF<)Kv{-n&HngZxH!uhr>pIUNb0d-4oJ(!3}a#rfMi#lhaszj|Bw!S{XR)_xnPvHNBcGkrIirJAPgDs&ZP&y#!9ufwob8$7!NTc2x-zu9DED zJ%KoD#gdu2-G=Oj9nO+h^G!3Mmafz8x!d_tCae33qg}ME zN@3(sv&xZ0M;}JVxtmTuVvY9GJrfC@K9c9Q?GmuJTEj|6z+e-PK6*yrT9wnq$opdW zGAPAx8he=&hSDEPM~wQ_y@6LsuqE+yn%JTg_FZ6K9L+VC-D@0s-$1jlBPNew2J3B8ufb*R3eQ6GRuHRLK>aXoF18Gf05G?#B?#t zE{wRKV#MWZPgjYXOhW$IFIW5yB8T(c`DLLk4B0TLY=wj0mHvMlCPi3!%d6@c<@0Yt zo?FE*O1KI%A;PW=<%#c|O5~Z#S1IEw>y~9Y7bGiZMC%|{P4pB>^QB78`uoh0t>Y{z z?EbzYhId0E{k;Ta5-H-|(h2&ZE?H`ZDmW`fq#*xsc=r8W>qz?Qx>Syv?}WI>bNrYy zt4hvb4bRaI^FmDx!o>sJkJ-0kTMx4LIeXH)&9u}JUvaOn&#KABWQ5Q;!)@NS2-k8` zUrzzvuI-;=f9C)39gLU$u$b3-I~ZgA7%n3D^A_VAd_va4*)05dB!V5nh>#=FN8>oU zpU;h`jN8Ol@Y*8wQ&t3P-gRuSa;9Y`JEt;E;*Qe62Vkt#!}97kXtNTgqrjXBuK(rD z&;wCqjKvUlQyaMjk)EF~a=y29Gl+Xzf0%>FsokS$21gt+Iv8y#i?pMY8;b{5S7-pJ zbuj9QP316N*WE8f=p8L`a>O}kgR9djV879Lp1q`QEE^Owo4FMMY({|rrS}2`SYetr zJl?VMi98Z}2LbW;9%iqMlLXce>^Jn%AY@w(Z7!o(Qlgqf4hZ0=3m({r-+}CW31>Yd z;u-W_BywHv3ZDpP&WKyMU3yrTdR z*XACR=0q8_o|CD2s{DUIdVrGrNqpGZr6%+@V-jw~nH(u~EA}}6-|BTTVY?|EX5>Qj z^Z7e!=dh2}ER=2qs+a_xgOik5DlC~bk$Vj?HygX%FI0-1m$>lqctG#4ri|8EMG*(; zI>cT7WQ@YSUF+RweReDBm0e2TBT>kE2KjIqx5n6CCp^4ZoeA}9mrZg%P8?TgDWvM} zP~NOL55Ox%{D@b@-heKE6GwtYqz(~<4hcz(UkMRy5k0^}%$e@R^|W7UXV!sOoTh#o zgPd>5zsZ`W8mQKwHS2k~Q&;^C(hz1jka6~S^(0S`ChMdSY;pTEwtJ_RTe;&c#l*Us zF_G9D3^QeXNm7pOJ?e_)#s_^ZX{;qu_c*y%5?OW=S9!|c$nw!3*X#|p!5NQ}@y@Gc zgHQY%bShyFn z1&G=d`_DC%j+ZSr@+VKp?=zt$xzr_FMH9Rck9n$`q6mKay0!(kj!Ec+svBn zjk_A=1ON%o&CN) z(RoZvwMDD+?>gFHX#}T|Us>Vnoa?3siu6Gyc%N}`M~@!6pDqMn+g8|ZUVC8@6K~%z zV9=f?@4vd3#79valf3H^s`5DzBLR24j+oTGh8PF$Y)P?*w_eiUc(aR8z+q6}rDT?e zxF89rd(ihDIAPTebj_9*LF{h99Py_O@eIfdafAvIKc6vJnBkvy zRD)w?#Wi7T4md=!hUCdZr4jU}{$Y`7Q<|6A`^`G#PPf$tiAvp5-W$$CWVE=r%TF9a zTy^bk4^GCC{>d*p9OlXy$TvkVDEmW3l#ZA7zMT8m=5Umwnofz5=L$xbBH`%aHND&T z5~^r&3=D7CMmQd~FBx|NyDN>o@rG(cT=LrSW#T45HVv*R#Zjp0I;r*lgaqVgV}_^( z;%={!-rAZ=M~4%_+fH`*WI%__m5j=R%5|{J!)8{Kc6Y7kZHdy;YPUCv16aPPR$BbF zWP-~Cws7oQ2{StphOSMSt-~Dc#})~RatWCj3(D0m(~MtilF;-r(1C=a^)$rH`RX^0 z;6%mzw9iMWp`(Oo7U*b1q&S_>qogR`y?xkU+*49P~-w&W&a-e5{Sc`X+u`V6S2WwJ~J#{SmA^go(#E5m#KEs zKbF^X<}vR5qFx<&_-t0xg!caknfno7au3}rhb^<+jKq$Hlk#v?cQGMSV7#ghqytHC z8PypkJgQu#II)I}b^yVWAesFVBxf=trd@ju!55^g4l zQlSarxRC?|c9AL|O%~S)%;vBkww8ZC67x@sAi?<3?n%khA8vx@fO>Oq&i^>GQ}X#q zY%E39lD?a+*RqBkWVZ-~F zop0>{70#@5E6S`!^n=Irsk(NQ>S>(n;v2sQyyoR189)gS;=8&vUgVmPNXV zZ&DHRpRA*{=##eC9`XQ6exP)~(-R}9H6HN*h}Z5pJ!%bteulty^N~8wrA8u9VC~Y{ zQe*2=4)*f^-rhtmhNR+#ua4BwpSMi2ez9pVpTn;$kmdYVGEsg+ANwrNcT z1CE(>wBu3v9!o+(!_7g&X879oT3I|VVT|!d2B9Tm(&Isk1yro?=e-~{&wiyW`!ZUAG0lvq@omA>NQ&83NLZugQ<<}OGUDzf z(c4UpwI3QI$FtjJ@r1;|<3KO-Qfg68zP5o!ekAPA@X(j2G#}Cw7S4K0E2E4L>PFkt zcSEt)kMp%m$%9tN5R0f?X|S_|acXoUe493$_{5tSD-6lm%=aWbs-%#p&&wpw;yTDvNomk zHJPQq>9S>`@6hmXaQMnzXVOQxR;<6lp{Xlf?13kwzqw@_tt{eUB+5c1gHK&BcIs(S zAK(>x58VO_$4|qfKd1Wos7GudkbtHC!lp8@aFh%2@@n@$26VNO^83pxsaEhI}t zf45+Ju!n7JtO(oPg;Tu7mH)Y(YKyRhwA%09Ug5Zl1^zg;-7&g@(+-$Q&hi*UP20!xi}cA^oMl)YB)JOJ!smRe|eNlEfWW%BKI>RK$=Ej3bb<3tX^ zx=3EY^}^7z(z3HVBsB50)+04B#jQg zSj_FYd@}}u8`1h+jr2__=@C4B>!C>c&)Od^dW1CJ(mBk?GBmm6qM`7!e6f^Ln}&}f zpOw3v6>+Z`>GT0qLO%IJR9sYuY>pS_(_E6S2%Di8Gm*M4M$lf z8@rR+oqm@9aAYx;oL!AH ziW92rpRXE?u3;y@fri2_{Bku?5Tbp2;hnI1O+m|#B*=`j#QpWaN;WyJo=wZtcO%sJ zngnNidNb0sr&LhQ^j`JoS7A4Xthxss<%*qOfzVIMLxQUTDRCeZXmAK2#34eTz*z`00hrqf zZR))Nu!-2KEw3I3Fs$SAFcrBTANcIzH}Yq#$$x?^6sL#erMN)H1$@)pU)bsBFC|Je zSIMZyhuoqsNUdODIk#p33k(OsS9wE~9pL2BtVn@coMBCDr8)6$&(QY1`)Bmy>!0T# z@thuL!1Hb^hc2rr<0Goyt}MDenCZH~7$`>X9t8)AV9QPndE|SucBqSrVh=_(pR>&P zJQpCZB$H}llE2t(BbbgG1)WFmNk|w}LT#31QK;gM1`o>vcwRgNb{i{ulqu-}vT=mN zaR$N&zB*vIbco86BYeCqVQz6x5}|qBZ+EXcTgof%@5J(PDjjNSj8)?07=?t81ATq6 z6Sk9cE+IQRADxh-Z;67Kx6T_Y3-2XRLfrg!$-jc^@iwUS_h4nBXu;%Y{EUR73sDm49C2<5kaHF=j~ z=g(Co_h*4z4gQU(Y>&)!oP5x{d;?Ka>QfM(Zn}0~&MOIB@v1eNiBOCvui>*cgPWU> z!xk$;);ByR^IqPyY`)s!Qj!vxfA9`bN{p;XWjeQ|vg{?Y1|cHf2YSIQeF+s#LOrf8 zSA+N$^z{`af+SgbL)dMz_Am}UcyK(Y$3e{EDi_z8-tH60J!ZteGDvh@n198>i)w`` zR2Ok*EcR|3-tZ)fE3$;lqo3EqotP)($-uBE*1ar-80B9yEqX)wB_^f`tWgqO z(yH)Pb}#f8Q_+dpC;8D@q*g6T#*AgB@WTAn8zh23yMZcf1fRQo99_vR6m*1%Xmv>@ zGe1h5dCebsviz#qAGJoAzl)TxM zYS|zv?1(M_XQgq8VqDWsMx`_}HAcH<|EU&)%iR_QUYL|B79#ne<3hR1M+9_q^; zCt-_p@CZ42l3Zsw*#T;wIN5|tJvRU?lP5{lfAZ!(+4B{W8`Pyau=|Use*ZEJKvJbYYf>1CNci`p@uJH}A+VRDuXj;M4ex(VO6tldieP!+ z46rHLPprSG_qKk3sQrtzPhw8f0(B%FD5Pl^%_*QDbK`%Gz+qU33VHH>KSRVSt8m{Q z1B8CpR990WPb<5Kp2r22P%jsz7`0$3|2@o!qW7gc?|2qymNGlHxq=ve>A>D>t$aFCiU%c@ue-DS~Ppo`Z(oc4M zSpOZI9upd;FZJ+w_QNuvV>pp5sUg`<9Gvzt@dya|x@r-h5HQ{>Tr`((@?)m+gf;A z*cP2k{vscC3BE}s*uAd*SX@r;(mrrOX41dvg^;X&fQF;OxG`(WS^esU9e`0y_DXxzh%bNIOJ0`W7rfT zOj%niPO|>R{>0&QJRGR_bICBhBlkbcN4^Z!cfGyAI*cmGuYzCl5XYZ`^Hh3)fxi;{ zZ|IG)nSN6QIFKN^RscaI{&$8AVSV?`$0Y--6iYfJRN`OH|iB@i0^VypdDtVZaHa5FT7| z{<4JqZ}KyPe!0=4IQ?j6RYdgs2o$>=UTFX1x5hxoq$tk+2hdZ%#qOUoNL>DyOcm8wNvTL1ALxb}*A6uy=j65Jj>`axuNd zkx%pULMFn~v`%REi+*^r6KOOLLExitb=Z_=vk@CX-QzI>RXnyzT?bBDg3>>k8#0Td zn$k8qh8D_oKm!L(K1zxt@zGy>D(0us=NqC}*}_$z-z7t)7irshHqXD2D>_Ai$&zT- z7Tf!&At4=eo%&S->3U}^qG7*d6s7RC#2iyL*KifiFgIEzC(*}C;~r;oNsBQ})JhK# zrvBo>aVa*|viUF8tg1f%?Z#yLZW|p%(i99VCHpJX*$jV9(iqfpQVSTmQusx|FbP#_ z(!0&+yr%Z)9Nhd2%GDyv3T~fz4UWXuN%p75LS!Fw5>%;#QqU_a3{K4bGU7t~H1u~CvhU8$7Zf+Ll$PsUeEd2U9E7$( z3tVcoHM`{jnw{;+Y>R=#4{lY=4($XA;?X$!q}@htZYvm+7|} z^Y>1h<6T}hItiH*%qZ|C?qYbt%NjuiI!L#BS~BjNIxY~iNa%M7kU`CDIn3t#JE(Ew zU$#YwgxAt*CC>;;Vfx|sL>H-KbQQ$MU}%c@G(KRNa#GCo9sBjtyNr>EbWqRGWDS%gNwCmHkLjxF)M4_6YIy&b9BkzA5Ha%cHq>w3-p~?76OaX3& zBmV>^<`XQbQ47LNM^Y*L{U|ri7s^_Fq@A>hlen$77!Du3EANkYD~Gnft92IoiWzo@G9IADCHQ}b z76rQW(VKhWxCT^ZV&k>l7ID3&@nO3^`$0?ex#PZtWaSg>iB{V{p({4^w8Za;M1eA4 z^EY?>B!PCQ4NOaQ3>va}l^HhE3X_F3qO^mDA1Zk{?uD|CT6;ygxb+dv{)0fQkrm3W zEwF?@dZ|R!?XE^1E$?(8W&NXFq$D_Q>PJi~6@23!#{$itT<;*a(QOyyyxaZg7`o~| z>GXJe;1{#!{S>8lJ~#?PxXO!^x6bob&t(G$iO@DWNQADs8t^mz8=--@@;&wEqmj(? zweAvJn^?gvn8Y|sNh^&^J16B))MSaTQ@^~QD=3X~;E3#KtRm^0odZkWP3+ozv7Y-i z{nc;|WW*v^s{|k_fyVGvjnL7u6KohR~KU94MRF&QHwICAGAR*nI zN_R?kx0G~ucXuld5=wV>cX!t%q`TpJFy7z)TkBaYYTbKc&YnGcX3lkp0d?#Zg$R!E zez!QcnCx;!{=1?=gkZ@1!ZgPT@B9L4r34d6KAOl1kzkZ-4q(s9bQNVi92>o(BMlM) zCqeRg6=1u9{?}Yy=vM@^dj%mrCqg3sBoo|GQbbNyS8!#V=w2FFjOG&$sYYiw52U2r ztOGgD`%9f%1eOh3x0CS=t7%@0A@;YYHsvDmE94T&**&11z9lfsG)__QU2HS}7lwWb zT-r&^o<4kPGpv%PnYD-KP3J}^A1N!!6S3buNd4`+yde#3<%R<*FF2nW0g$;`WE}dxZW-7xA7f%!c~D2;s-<$vmd6J-!pe|f zE94&7P=w5eJY|^8$@{NgV?oy>Nl?v(EV81s=Zb38X_B_mF-FXjhml{mNB-p@YYa$r_lIfDXA;lt zl_aNJUkqI1njsHW$Pgvly}WpC8NwsAUI3r(9^kZAyn;3V=U9oPdIztL(yhFz9hDWh z-Och#!I^B?5Tu|j_1FB!jQusyqM$)t66K;wj&=m}Sen>wgjuj+qtHuCOIzJ-#?jYG&P1*q~muYzS)tQ33LL?_{rx|F2C3e*y1K z(8hT_5%0^Gv{g7g8YN@qT(Z7TcwS+89|x5ybbi6c^76kYyohRN{#^opBe@s*7|Vrm zuj4_y?FJ$ByLGjtlF`Zy3{aQV)(H(e2sH%UzJ3VdJPh697q#*#SAAqAWd!RTO|_ky z50QQDF{BZEW;A>(ySY-aq*gGp+pq*V&TRXac40FjX#m@$+xX0X-J%wLB74-{y@ zQN-wwLGnjDb`&K%bouiz@rrJYJ5N?}a{HYY`EWf_KM~&K|ezJiEz% zXYWXeZv!v=#x?@QYEmI?oVU=aYj3(?X|CL;G?eW)$zVO4&;qqT_mp0xsC~%5mRnz7t=>s5 zx^(CEO8XV&K_;54r50MYA(qx>rP02Vm;XnV6siB?g+cY&o)6{VpqEKVk(G^Lf-@PUAiX_}9G2jF8Dk zvQp_ckLT9YxYzcI=QWFrg|NEQM;LH7?zNG)peyz+Hk>;5qjlcTW!&t_B!2-NfrtQk zGs?Y6qWbCpZPR+9F5H!tl{6kB!Hr?(3C-F?>R~&a@MiA;43~+B<@fZ{1ObYI`*?wAdPZw>XPUF_*8ZNzyj6VQJP zP3PrG%%kZAef}wDb2>wMw~oJ@^u@S$A%Lii6O1YanA2|hi?xh8fQm#jsZl9tin|)k z91DVXJ=MPLP75*Jj&QrJ+q#W$;@v!13#yeE!_1GxMM@f|Fu{PpJ1Nv&s{)_uYV2$m zgpe<_=#XEs8S3J`dpxj87@79loHJd(*K4S2Gm^uwWpL(peYgG3cF>PI>2+31N^b9x zM08cJ)_F5`uwIC!w-zw0!&p6T0EqEqfHjM1eFNqjFi z8^Pamy$cP_zlheqS$=Y5f{Dk!Ybi}Z&$cChMVHbl-PEY$e5)*y#CCK-YCgjU% zQYfpCdx;c8Um^ufrI8Sb209<{Bq(~i<(%yPNrl*P-bSace)GXq_)^`^dgu(q8t%f8 zsUY#Hx1bMnVh1MmgP&D7(idJWhH&erB4~OtH4ii%v4#+n|28S($hJK%wFsp~Dx01y z8ZMju-C(5@)B%w1vy1I(o>fI(wa$r?9*3dJF3v~@Q36-M4MeR}ulE6`J3Ab(CJGHC zgdhl4HlL&waJkxiSe z*R*}V#u9O)3mL_=MHujDyg9v4X=<0$?2$fogsUVOsBxo;Dnz98ns@qztvWf3R) zR4ROL-Rt#mMO~`Hifk8{>(FC8Pxb=1RVlz=9ElBH0~X00&{prI6V}Z+z-Z)*rQMns zgT!sP%r1ixtPC#WS&g1&NZ6C5FLaa{+__X^#@fX5y7CTe^CO(-O+B%GEQ+6BZc)Ws z8=F(nU^JP;PK9iKiqTcKSM`sT`%-g7^H35`h->pwj3?h>FRDNjyxi}NB(Y{}g=hW> zGd^@ck9+C$2CLPPEU~upB2)N53Z~5kt#JG?rGx$veoH{F(MGnK$LZKDaRbsD1Ry%d zB!9u0IOP<(7p%bmT)|;SZx{eC9MNq~Z|=)!N};j5`5*5H*voD7ib4xa59YmOLt0eA znKLDrT=aByLoS>7d2hbFap%bphjg8)i@{|Z$V=gf6}WAmuq|3?!kwpkd42z7 z8h+}->kw{QbDHro=Zxhawy?7}oVR6V`s9DlvUMHw!_Ci#8|O|!(rDlUL`4%ZilqIL zyIHcP)*8$|3d_iPGWh+AKINnQGIA=-B1yo##=(d(1qdlEReWZ!R6}BStt3BRUjk-< zfbWyvq79p2@-z5syxwoko&(FF#cou)ZV69vxPpOs5&!*RU%c^ILqp@+urk;Ek+JHA z68()}Ld>OBnSAMOQ5cX;v1ZUj=)l+#iObIW-XZ_IS(ptJIl34S5AXpaeh5LS409B` zT&8Rjak1u825A2d8x}<1vn``3S73!E@_s^I=v=|O1hksL4QXObES%3#S_%@I`{bIXP&VAlqCJ~gvXMk8U&{+#5L7r5P+ z#wGx00U$i-PW;dn6%Q`uon4@#gZ&b|r)X*ZAEm_b>0TVPInp;% zavHvkTf~jxk_dSecPWliPISyF$AgJ((mu_VEG%S7nIvjtIE*)O#jB(9_jC1)NI_Hu3~ut10pjipuU@ll}XP7r#vk9!0MSe>#KimH_k( zvJ}wquBNKI8U&}qH*5R(+EtvcsxCY+na4asq*0cRAUxK=d#^hW1wPE2>@qca65B3t z2Ztr{Ao%}(r_9Zl;EpZPJmi1B=Sbj-=ndORGFSA-Atfiwmr?%ygplwX8apRxaCjL$ zH%_>H$YhS>I-Y80nRHe`8t@b2E^KZ)PjO(gAh~3cgqyZKOqO$b8AePq5=AjP_28VC_$(T5qC}V? zt(b?-hR2w2Wvs?@RcYy~W*KajANr{_G6McL_Lud_Gi#bMH)ODefRV`lk zb6-a9oFs$m_6~oi;h^?!XBuAnthOcv`6Xy`xwiKmG2o5>$*W8#Kv-Py!^ltoyrVI$ z&!YBXAV%W5^$>~PwQ#X!4JSsk7p}kug>=)~F)fY*sKcKS-cSALt{9+theu(#Cc}d^ zb`a8p%OIp7WsjD%WQ*2WM8#K)=poOf*NZp$l!L`)p@UW({^!S57eJ#qDTb8frCta>kdgiID zU2OK6JWc{ZANBqIZUa&T#1apxpruAmpkuE|echA4&p4Z8-4OJ~Bby7lfiS0IFFd->Zq~Ani|4^OKHx$X z)>R&%%AW_9Ei}@kU=SKam9;}z=~fDS#vqXwGn4|%W2DjV#X!vg2(v_e_mb4Gf9oT>c=h>lMX=yd zuKxA9H52*(>+#Z?THW=ta>xxF@AMB4>YAm}?`7Puii;?E(a!S)Cm-#;x}ELSt*-~8?C+zF8W+x7J!ZQu_?sLoc0((e+LJ1S_x-*aF# zXs}+B<9SY*9k#6b&^_(pC#b9xFzf%Ak- zxV8^j*I2N_-!Oj}+vy?~ET@mPPNJYPG##(IWfm6{wN>X2`Ei=VwYRG#hVZT|UtUz2V7_c^uktynViKW^g&u)b!}}5S6TPVq5zN=bqG>pDr~}_Tm*w z^uH({_=6|~brvP20mWk(cVywu>ClR43+ymWz38K2zR0J?4~y$% zm1bE%+v#QmHs?YTn3LOfgWU}9&lUtoC<8&c>zDgvHCb=8e=86cO1*JEffMGHzHlg}0E@Q>XY;k^&z<3_hLX!W*3!0<%^ z0k1;bnbr*GllJ_;yc*ZCZTenhHLeV3lHOI>Qe8pv`y?9oW@I?`T^uRMF1x>S}jo>03 zdv;e1v`0FtvwnM@4`BTm>Pz-Cq;P~CSl6nMHYs|m?pBq9Uc@}ZO)HEDQw8j%-%fWy zd<~F31O+DrZdbBjQxul)7j^nb^g3tDQ?wo@!{g~pS?M0b0LmS-!(7iq5ci3z{eTL;uTYO+5kseh}7qWyZ|D(FldgA z;w2E10@(fRPvbMu8EWlPL{3KxDl>FS{-~Fq8xa!%`J`~TUh#4so~V^Joj-hZev-N7 zcj{qjR`p@8`oi43su{X|y3vKN9iFk`5>-4XOwqdj(<`V*1#Ys#0hUOk^qsQVjrR<7 zO^p3{qj!dz)?53Cd z>8OrKbbm_~+L|Jbu%QEsIgZ*5O0=EWi7m53y4s+NU z{^@hSqvu^8K)<+d6W)n`(Sm+I4R}6jPy;9Zd0M7xosd_(BOOEuWtF;&G_X4nWzon+ z{4xhnwB2 z|L^^M@Fd%IPS<{trkEqMnUsaJ_oG+UX^$xc&NT!k5Fs%vF^JDlW&fyc3{{Y!&}#oQNaR0U*j` z_M$kuubUdP&~O8kK9!?OafT*xMd8)3Hj{nSo5ilK;)O?sLRh(@@sj~%cm(VN@{8jL zc4FJ$*uU@M3I`lW6f-vXS{lqL{q3QU7nG8DIT||+w#tA(r17oQ%+{<2kP16*Ofa(P z%O6Yc`bfRxTKLW(p31GOX^+h^U^G9r%SP<|?92ivH+e!Y0rK2A# zmD7UcLmcYD7&iUiDh!_zkdYszr73-x*(J696jax1SF<&`rj}GCoSv^z zapR+#7A)4Ho`-uExRrL(aQx2muiJf3ziCAy1uezB1P5Y;!}Y*us=~a@Ul|g!{T3)3 z^%@s8x?ik$3>}=FcG+LNHosehfkx`Amme+V#E&0UzKF^x5B$Ns#zwy_q6NyL1A# zk*}+rZA_2>Zt0Z44pHv-)VV69d^07YqVK?;n><|Ii`bTyU(1X9z`8hK{lq&XOfp4H z33>cvjuQCg6u!yQ7S^HA1Xw!d!T$ai&PN7}FHJ1T0&oy>grC*X(;o)#tEc7PN1Lz5 zFL}$j^fXz960)zya~Bh@^O(q{&{0{ajIRg z3~p3f$kT?_Jr7OqVSQMEp}pEeAO~!-b*4I=?-bThP1knYkear7TIUs}TI$xHqw_OohjM;Hq0GeU` zAWX0$_%c65lBjJ+L5+s=x9AY+ZIC@I?-iO08r#0ttbd;8#vB}%li~e!xPoV+B+SOo zQ)%e+in>6J( zJ3^lliOjMbxZ{#V!@+#bSeJCp4y)GeYpmD9?{5in8fF4=%~%Aq1G#}Rx)Rv@fS4p@ z#f^QXeMXXeda`iiyK22kJx&^#H&?T!&PMr`Vb!|Hb&gN*mV=R~e=~GGq7V%YvX*LX z8N8Hjo%lz-3bPDms#rZ&GQO$-?^ImMEWBu2R@6f`sI0#4NyOip@uqpFYTIaCZ3Bph zw{#xK%f=@z0t521eEc+D6kI)kQ7cv0+siEgy`o&`k&AM~C$}{{Qj+ZEpyFE2 z35zY@?5HX^6=2wW`6$qDL6rcj@D8u$eRas#CidmkB63+f9Tmv+l-V=<0huIO!tM@TQJKc|DEyISvb(_dzY4Rh#Oo zTNa2f&6hdD!>&FrCP#Bih^VzxnXNT_g?I%d?k#?^8x~-XYhgmC0aW8iYqJYu&79e< zoQ_g09l|#T;ut`8FHD*`|19<%y>uSal$??fuaZ0>;9(wju*3tZ%=P?gY-%Dl&U#4> z71xcx%!`534}k#u%p zsBd%TpLZSsXnzIJ7uGgvMB}Y@ASO|N7ZvJRuG;s=2Jg87@vWgS$IOD{24y1iEY2dE`oK!C>c0vj zAbU`Og>UI)fjxne=6uq0Mef73M8a}Z+!KOW`qqK^X-SWFLjKl35QfgfR4@p3i1u=E zJVWQs3tIr4V&dxc4t#HS<$ZNy3NV+4uiDP*1*cLqP91`UWhOezUDuC42YYH7by)bo z4_`v|W(XIcYYl)`g7McHSF@i-%1Un4wW8E0q~jr6p?%0()nOIFnJwaNzM*el#Qm@Z zTnju9@HGrL}vq0fkdFh*B`8toM z@KqJuIKS02?yC8Ev8}2_Gb))QW6GUpecYCLWpu2OdseBQcz()5JZ)Ku3=Xz8$IEQ> z{a0sUW~U>+^d3eJTKYso`*eSYT7?DgdC}#X&Vu9&1JjeaU8)I_%XRK9v1KWVRxRtAu*S!*oy<5AS`q;=^bhHUV$a1U)wbFRw{7idi!c zYEVJ*jlG~)Glluj>!XM`Mhj~LA2p#?x0U&j4tcK>y>X&MlG!wdSMwsOH{6@0W@R5* z1tKIM9*VC=VVrWzrqyYdGx21)apLWd!?PTc*VA z;ajsUbT|=80tzPQEfdz(5h0O9t%rbV)8t^n_{sO)km=mjY${p#@y5( z>{l|6IxrcBdfI8Cb*ywgLOy`^_r(bAV1gMqcdn@gUTZn-*yDIS*AB2QTE=W8#X?l- z&MW-t36LpLA=1hr+5m~L%CviH+aU8k>)BD_-C1L>92P6b>=V7qBj>PDw4{2nUGEF- z_}m$2fHz9JknjHp6vRcx;RR7g?L{5S3@huMU*p{(5EY1BYxeAr z=s$Rqgdb;wGd{+>uoVhduBHm1Yy9&z@pxso6k%QpVmx{+Ztaj0(rN9b%NgmW@-x1; z*&)2dz(twi?r_2@8c07g{3kLWp)b6rAiQeGSZAi1_vN!k9+QgPdxK_QBkqupT{>4x zHQ6fZ@A8Bri>_}ZHJ>-on`-mw`gNOb;!eNvHmHPk#@FcKxHkKthDdu|Y=ZZtfagme zEdPLafnDoKstG*$8Hnb;_f4U~8jvD)Gqj&ubZRPb0FSYN-b)%J$?9Q+B<*JJ(0qK@ z7T&|2IC6WhE{YfMdH%HbJGO8x>p`@DOPEC4zXUblRFKjjo|^Sw#mzKpAjwmX;_Rg0 zBx_zt1rh6WWisC8w0$(Y>L{4c&+cDcSa0L^LW(c8-8(1`j=F568v3t_WULz6oU)+( z0ZJthviX7aqc!LwcEXP(d1SDg3|>6HrJ){hExCFqa;~O=^j&HqT|uy?rSBD|v#=u5 z`{GyTwXH4i^fZ*Fw$La_ZqMwUDb+UfK&h+nvnJv<{Z1l*pU`=|4>pFPeYN|eD^r;( zPe%lvcMsc%Wj{xStmE$1qy-G1o-4z3j~HDLQI0?r4dz zoCh&cj`KWI&btrD;#&xbxKO627M^cB8HT-#30Uw{xGIrhS(7@l%%W>y4Z`Jt8airV zU0UxN!}kDgQN=vEO{LTT*L1lImdeHR@!jQ9o7efNm(H;g@@16H2P`A$5qYTxBM{iq z$p-qRQ^)W7N3hH;m$&ZNHyk@K`IJH7_3o5`EUl> zf3bXan75EZ7#{{rm=`zh9*i`Amir0Cg3ic3XJ2FXFemB7)I`H~6_U_*E4^C5 zyTJ%$cu?g|fjHrZ=z0*(TmU(E%bJ}y z8X(PHz>~s8@E(7KiA(MYeSc~DSbW06&|!#+iBHijdC;K2yv zup1Q?R!&xrK3Z@Aneh73jC?JdoYkKODBKcn_p&NDwxF9~w)I9z^~zx!!buL)N##;K z1fg5d_fD=J6g#QfET6tU*`EyhApt_-&%W|vsziLc=#06s*N36IZEb)keyOlreg6Da zy>PX;xl-FH?3hhlZMQ0)>lUbG_B6|{xK?wSg>z_?d_1fea}~Xx7)e9j{ag z?-bkoK+v+)%d42Ac%2sqxn83HIcsL+q8-3d2EA|x!5hDOvH#lFT&_CaC@Xg0h#LR?e`@q$7pMjE*KeCDsu?SyNe0M&lsxNqUaEnv3k`6;W z$EY^D^lcccijX4w+jaQT7>}Oj zdGYdI94D3HMd^z$*NoTgq&4v5oSo{su8+fhqCCE2ZY)$3xPcFtcJ}OVk=1ZYV;2g! z#g*&$?ni3szR~uMG%=KbDrNwlyAPko3&Qg8x<+LIJn|jQ#JU0We~QScDxs*7^eypZ4i^O^Z~8%NWUoQPcC;7@JT#QXmyK25zsEPL=jbp55 zoUDVK*p-f=wSpR^R*svPFHr90(HJT3G?=nOkgwez!j`eJ#eG_{p85wI8j$~HOjILMkp~fG5s;2LfkT~wRG&pWsyRnVWk(fE@+oT!@@$IzbeWL7K~EF ztxw||kcVR++5)fM=|!AQ)8|iPhX$V#AFJY^sE~e8A+qlbBVkXy53<^SJlI{|b3R;v z!L4XW;;lr+hs@sKZFZmn0?&fk66m~+f`LPYnE4GEk6}B{#l%1&>m0BURgT*u!>lOZ z@l`2!o~0RK2;FjBnCsF+9_$u=0(9!Lk0CXdsx7Q^sLu@@t(F$F>jL!`Xh*rU7NK=1 zD97QuHu#=xL~i%ru4%0rW71xo4qzOge2x)48NMDxc;uvrmoRXv9{k~?N{~SE z;W2I6Q?5Z5`91?5f4MZBIeZG{Qr=!s~UIphp7=%yf!=%oJ-&Pm4w~ygFipgiA z$gJi@l%5y-uV?Q(=2n|LiMFJCPbzFxNJnlY(t=zVY?nvWi2d(2FZ5JQ$pbbffN-7_FZALBEuRWRQ7NsG+F2zrG`jx2pF-knhqj z3n9|<6KE2`A0!m&6p9+YBsaS_&X8^^N4$AF05J$7C@m;pwcw6vYMeRxTzGX#XbAY; zlmu-T+|#>TI`*7DC~aDId~K*D@)f90GwWW|&K~ijAq{e|7M z^uf(`bYAfEa^^#VwekQx!0AS@mhRyfQRr_oxyL7yBD(ugKL{$3a6H{WsRSTk63yQ* zv9bVnr5!>1S;1FM4@R6%)y5eMNDkdn1Q;=Z4&#RE{42%b84^=oOZ zjsg9(UFJNce(u$0)Ayg?M%sh<*=ycxM{4_+Cczf69=GMlbw;O-vBfAWJgSxWF%-U? zs$)$sz9~R!*+L28t8z+7JIw`Ku?BmGy%L!Mgz< zut;4kg{~$=C%_0Kb%*nmRX(U$A?VU(BQm||JcI!!4Ri7w z(F);H5k&gh)|%#YP-yU8d+;Vu;vE@gRJ)oeBV>i#nj8FFd*jWj(ltYD+&r$Hr75)K z8??hR-vpiC%U$-Ni^W(11*oU`VOpLKL%)Iid`q8K@Hzsy^-Sa!YxscW;4r2b1x6!U zNR^c;iOUb6w4nRwu#6UxSTx?pOsmGG!xxUf+FXfxPtA3i9CI3$I6hWD9xIC%;&<`< zONRWjN;&NL)2ku34E-<&&1PHHzcaM_GfE&2buSN3+^H)s*O7Y0PFC#{79vK zHxgWHeFP1g*Hk(Gw!A5)2}P&$?4CJ~lzgLZ?=p_oVXGGYPUizBUI;9Ku- z4e6Xli6BGaSr&ii5fwcCmRU^+Y$S0{*5+9~?z#He`dSyyUwFv;2xIS%r3qn==%0)-Ppx+cXs1d^Ar!aERz?M_fMQy-tPmn~Z#qU#i;fCO z^4-gIll8VE;4Jeqtw#$`80>j}H4>c=x=X2-Po%xmPL$mo{M7_z#1);6C{#SYDIRE( z($HB}9{sdA%8L~ObWE}BA$t*Ziz?Gu)O(Sbe0P?UKwh;w<+Uma7R9@0Lm(?RFKOvD z(z~I@2tpBL0hQ80y#fe1W&A67|J_l`w9qLCqwm4Cr#PtVjDhCUuk2- zymjbXhYA1vp7dueEKvf$HiV4A=AIN)1!Q!IJDP@65b(CJD5Xeo(5x;g{p7J6$YEGY z-E<{(*LJHynx}onDZQSgU1lYasWH@ownK$7pHEIXj-78?LUKpKB*K2-BF)t&VO1%Iy#vX_;HX%v7NMPFJ_NGoCBjVyP2 zsR(GEO{ygJIpSNpw5rXlTQFSo70&(+MWVsRtP<-6Nj%sKu6|y+)KY0}L$L?)omW7{ zUuC~fOPn!S4`rq(J#(Xz#%FyClx1o+hTB^(#Nv!umnnC0ax$v|tyGDI>)~RZ(UXOz zJ*~OrXLf%%+HT~Fj7evPLidh^JRWNHc$NA}@ZgKDu#hD3N77$z+a3<%d)UV*5f?(w zJ}qgstBo$s2e4kTGL$IQnwyLQde$dK$IDD&FbnHnW^~0xl6UFj4J9{S(re}_ef;#B4yCWIW84{8KCrwL?Sdz2&x!Qh+OOBdi44SDgz~M3~60l zVE-2}0wN%>)5Q3~(9*mI_dCxeSUMC7YMY7LxBTR3Qn}bZFJ`l6=12K%2h(`&9CHRU zr#vDHG|R`?3{??d2SyB?F9%3Wsk#UHR7UY)AuK;H*mUa690Vv;BJ#&PG;_fR8ji+k zE}&$8zq{yo7t)zAPz-* z4}&$@O``7N@U6w|78F5j5(VR!+eo1G_{+|Vtn zpMC8eb}A8t7(=eVgP}xuho7p2p|oOkXi+5P?hmo!m&ph+zITh2fg9w#+f`EzaT!7Q z_M$oWu{ttAI4FJG1Xm5|2|vAy zB^EbEbt06x_+5E!Oz@@EIkok+&g|SC3ec?G#_PrPsa{GH24moGiQYEC-Kg7)H&#i? z8fow-HPYvOG3;)ZEMATO#>b14TF13PTEm+?8}_=huQRJBXUS4GN%o_}=b4LMkP15T zw-w?slO*hq!HPh8+}kuHM9d#?#*C?ZU(o9u_F44CboW>V~K!*3Lkd zl$R@Y{w3>i4-MQQ(cMA&rZ_n6Dy)rN3|+dPS#WmG1W4TGe8L$Th*&H$TlGwJSi)h$ zi3!--{z91TD9C$xGne-oBH3)eahOw9UEAlBIFNvoSU@q#u%l?m4@9ZpNPTbS(A21~ zy%Y+M<=s_>smWz#evclc^0&~6kCk`~*Wb202n`z*c~|HnE>naP^xQ(#rDb*4WoUQ5 zdChwQJJ{-CC(G08+N7Yl zA&pCSHIVmK?s9+~89d4oS2$m>$z<8O#67B$RXl3%7|vz$ussf*p=)Qw@`Yl`u%P;h z@rEA!P9Z7c=T6$HHQa4?H3f~`cO7*cyob+86`L?*?C>)QTgj9*2t!zjGsbT>@@zUf z3l$+;>X;+S?$62J+~_HoeD}kuzaIIP7*QBGY+}HDanr$Fw}a~?d*~u!xJi!@Sz#CU z6WU?i=DBejNiPjcFV(d#ut!>cTr^FV0`dFANz&jI?}*7&k0~_MgMk=NoWYyes!ZnG z^+Mvm$;(DL)b-Nxz9b#bZ-Yr<(ydoXjnjKE&QMbLv7yKwC>kIArHdC&rY>XfBl$eb zC7RLgek_FLs6xeV;{LMlKk`cDaA*UPh8=)??Hs=3+LfT)YZ&nt5fW?V-$Kgk`&0(K z4~92hRiAjZ3lnio*wKD+y9RyZSDQEpt3%(LZ^jZpcaBA--E>+p!!oJoF=*XMvk0de z=sGs9oTs~>IsHV|#5rh|mSmP$8Bc%{0 zagi_t+9IZB>QYGz`H2jzzG0)hchBtjjsVtGs&>GToU(b=^fr7{%rpUgW@@fW$D=>e zmKpEV+Uh4XVtIOuf4tt{_=3FrVRsf4Jw!f<7+P^rE|ITQxPsYbLl~b~{$t`@QlFcP z;0H{#W%~+J)h!Q?jU9o#Kl8)G?Od z!T_#&t9G^n`N(GbZ7;;p2MukCV%&l%>wl=HDZbIMFtL<`_xKulaWl^g1O4Jr5CM%Z^rk}~UeP7xvL}=Y(S>_2FK!pi)F?u2=L8u@AKNxOX6#1}UH>{6 zP6V2}0lEyHr@J8 z+X-*#%$>K>IS$1&1gYJ}s}F(3eny z3I)^U^q>VPtBD!8nYMax)D0ah&AXw_4ou;~)P4k;Cs64z5AM}gLURF{_E zMzU8`BfbS$koN8awiWr#XTlUiTcaLLnHu1&y;MXt%3Q#w+xtL>5H#RmU0lSBrHUOU z$3lZLihyjj;1$=X=IThW?Idhv0}{|pF=me@qAmNzJzD2l-P8<{_8dPo##e!iAw%4( zuAJ^qfyyY+NuNj~fnI%lvsdzLC7G3e&Dq04M=X&!MUn5^WrGJgq)`v`vi?XJ6VAs1 z6(M|6Y^ln(FhV2*M7M>5*MjEuHR#h6#q`vqka}QD4%Tm_aZ<*=n8g`?dO8VeJjsuG zYz^yz)Ho200+?inK{;C=Gp8gaEi$5oyvO*7c(2FT=@ zejw6B(O9v$iw;ib2I?Bf-u=Wgi4hLgbh!=>)^n3!4Il}=nf7x0Z0H$KK&5vN11OlG zF6>{K80vEeQy#du=8Y8+NaO;9Ks7zHKeK1@v-d%;^eYN`A<}S1xKZbkzg~-(E+~l` z+0=4+o%(yZ%zGLJ5eKo%|18H`q=(s&8nwLQF&*~68B(X+zrTWyW2o`cmlO8%S-sqr z25FG3Qo6)tGGF^G-#RKbr)aOd6-y;_c}?Q=>UYhu{TpyMiNcek1zZcf0$s3tI2J~V z?&FM~p-0~7MEyLAWM8c)X*x!-{Vsd#2dZE!u)pv5DK+AM8E%Q@(>4Rg2XR_wLRy3l z#eTbzlIogQ_*7*f`RBG5z$RRgz+kZ6Ssk3`*Ghf;#s7m%3CKoB6EPgIO2`4)M0;|| zamMnO43D=UUDzrIFZf8w~u{(plU0`wM3N~pj2U!?5gK|T;){A<^$9t@}k8l zVbW|_sh17xiiX0{R0&ER(gHc!`C ze_18-h~|iO>&zkifX+_o4&?M4#GQY2^{5q*)(04XERQbf%h6(TpgsoX%%td;9dDxI zsiV1~Ze*Q{tO5OS*o29*zE3Bfp1V6QiaDum#5NI>X>4%7?|u{jzkLPKZaz2j#<^>R zLib9;-?Uq!?v;aaqML})sL2NbnQ$>jM+-K2Q)lalVzi$oxUQk2P^g0Jj%zI42 zILn{U`xQzkd`@sS5yhPl|2sGSc5vl_UiaG1SIk9~i) z`j6lGhe+ZWKC0c{ufz>;U&lW$K~#*im>G4!Huc5uNA^)7&3hJvnu}kcSoH$Et2|{h zcg&BV9?M8H1E-mWImEvd;BOk=`w=4Ao!#BDssYTE#(sVRGQjpVdvLe~dGRC*hiR>?UD=!?mg?HGNkuxnx|CpEYI%RqthOql071EsC8M{#$o~6-!}Yo77J#wx&wFUi^ziRK)E<=(E0_oyn(cS<6qwr<>H5GFQU~#cqzo_X}SG3PYli zBqQ)Pt~FPLw40uMlSsQd%8X`yB~mAvt4XK!E6>k*9kPG#Nw*a=b6Ic9R>_%_JfcII zp$)iF2P?t#$SoCKM3=aZ(5{m3Tum#|=`a}_S})F3cCb>zOCxb^tD-P@nBcNTYHXBR z&a@2ZyI-AL7C(SY&mAT!p_<9Fl(PE9Or)4Rb)`_lm{A<2vU03$Z-z`Uh_|aqv%eU_ zZq{-hVR}2Ty+a?9Q>7W=ZqrQ1q_5M~`+)RD|Ffmjg{8pvD57MB=Yv`(!_xt_ z=3~Sj$7p_BKhTVmW3nO}!bKrjqtOLQDn?tub|7mlh6Yb)GY?~3y=f%}nJ{{3=tr0H z^>$Aw&^I%U0%p!T95X*PYWI)>NB3jn^*(IK$OGcVKgE@r1lDKfG4K+UG=pKfL(~+} z`|4=oomfO<{fhx_s2Z0BOG^|_3pGfRi8t@vXKFp}!Q`6w9!nYM1>b($%w-^-7QzwX zRl6nHmr;(<>et@b^yd(Y@H6cjqszLIiYW%L_WwR~RA9RmV}+R-gmUL&gC63B%|B=X zMSR{7t9xgaT!<=z_Iq6+v)65&Y<;r|v69@3F>d+xH@pd=Iho^WO(CsYdncu;c6kCn zb{2Mt*a=&Mt&X$;F)_%CAKPzN?S+PlRvd4S9~zItQ5374Gj$YPt`-vSX3G%k?M?$W z)CjWD)KniBH-S zd?jw3iYJ~<_Ft*s&hGGg!?GUMV@4*Lg)<4LAGd3rzG~t-sf}kvmKU&imNngv!hCz0 z3<&SU$KRt-DscYRB&WO2uH8V%pMIOSTL!f$S)b)h$aD@~x1VuHIQ&cVW`%OluE*_9 zq6@epX=o%yX7)G++z;fe=G=ai<54V7pQGzDb%L%WG)Y3>OssMQO^2Oqmk4i&%si9Pc!6gWaZ}28;C_enMeXc$3Q97OeGB?>6E4iYv%H{;_T76l zqF$;$n^AY7RS-7;IcyTvzn(30)N{^J{OI1fbb3G0ag?H@ljHx9^%X#IZOzt!K(HV| zgS%@WIKkZs?hXm=8azO7cXxMpcMI4#@-Zv2Y)OSdr#$? z;5*LRTD-)Zfs=5&uX-1ms7ONb&5ITMELk-$p-aF}GELZ9d{J{0Up9R?#SMEX7+YQ4 zP`_H$i`V1(q8h@NzW%e>=Dj{dXgMK{5Zz}ozmmIX7ZhjWf6ft4MQ{n$)2PYss?wy< zQS``1P~*+AiIAwU&yBT@thH`k8w?mdf=sqT4kT!*MGBWx;f2!3{h#1|ZTWE4M#tLw z93`Qu1IYjHY4p#VdI+x!OEYC@lwTrcCb=djF{BjHN#jkRYxBzOJ$78HOC1mA9|O;N z!EsBoVh%ky15@~P1}p9lvOn7gJ3rzV2Tn4XTEm;02`$Z=?Ypm}Ze2LkYzMh=sx|je zM4!fEk#;cC$NLi5x?WWJOcZ>Va^5P;Jfg_@W@(C0|2$A{wU58E)ES7h?GSkc%GUbW z%|6tJL|kdr22&U$O-_+{EJ zo!LtEGksPYwN?LVtn`mvARh@_IBBz?u39lsMHPrqm@S;>$B{gv501o>SV|PV;Bjh~ zbrz=NGPEI-B9xzpn*x8LiW%h|DIl6ULj7OR=dLACw4{-UQx_z$+EH|Z0ybH5rJ^VlG3>{*Qs)IvnoQ$pn_X_DpbN{C|BRv zVqfEjkBDRG4&ha2X(~}~a|dRt!~Ne2iAc2QHUmQ9>)I`$606yv#o-5Fi~?|3iTo&dqEiA^u#?#64c8YxxYqW_hGmDq6Dj#-O8m##9k z+B<2-vjnCd34{6cn=4mCjeE$(9)Kw#a%+N&IhH{u(q8ne;HtaAx~~1r=9R}Paz@Q$ z(OJK8$x2Ny_b7I1IO#MUx^n}{>f)*`6$Co5rps^cC>1$N*hnq78JohiteA+&wHIXQ z7}r=~w`bcLG+FTITtdJf-n3;DiV846zzTF8Y{uc{P3IvQSCIGT)0?Xx4|=#Z7rl2e zFA|HJ^skAnh+|Po!$hR0CQ35gwxEm7+9O3^UtvYPf}n@KWOgf}a<7NV_+rcM42gVy zh4u7%_wG<_&`tR>t=~IHxzl@{FdQ)| zKHag?G+}G|A-FF&y5TYv&xG&0;IMRQ1_SQ&aiOzhSOve0tlnoebsF;4+nOsLxqZ}a z$uup=nU99-g zH#ktFGppV6{=7n-CX3u&3a4Jfe&N-5+k+UkU<-B ztBrmFgn94FSPZ&|StT5%4}*k8{>-gsaBbsRVw}MYJP@7O2+QgaqRVgaJ9sQ)`={e+ zwVV9v9-j=drx4E~Cb;_O-91ECgmP+-J6Gyxj@)Von{cHmt<~;E_ZTo28Z4X<`<`FV z+w@MDY@?li@X>x`t+Y*mx>*ujT4;JVhySz^%E}a7=MMVd}#2pX9oqC?U94q z0T)h_aK-LqHlQJ$ryE3i9_{Tzec{-zd&l=5fYVZ@<0mQ9R?xN31{3%OiMb>9Fx~kE|#x=D* zGUn~MeVQn}uuGAeDBXzb>5{|}nCJINu{>lB(^U=B7fHHv>f@EqvVq(rf$75dGE5cq zd>^ELJwh9_glRZ=iHO+>flaUizYK;u=nj20+D2|Lc;i216+g6K?2^CBSLNMd{K7Ra zC0j2KH(YbP#XJ}(av4WY?Wq6m*<0>-+ppiH(#$rK>v5i&`6xMQvHv9#D^ceYUhLzw zV780=nxsqVRZ5NO)2!0k-K~>GeKj;lUP|H;$9Na5{|o*}#OjzjrYhFt#FF{Qv7VMl zhRUOmx4=i7UWV6@(vAXyijF?$)s3oJaai6rS8@ArH~6cxB&TuA*M%;%-cbYP?}MQ5 z8SK{<($EL%GEKGdE?X`jwP!@ydzc_wc2Ks>q7ZPzv!?d7sWSh`1|NY1CU5olBwj>brprX6E5WjP=F9g3~g(psAPqVXnSlroP-=u})0CnT`Of)tF9haGkNfo!fj$6fj9+XN(Da1lMr8UlDUM*l zINIw91y#$zIx?hR*wq1Q6s56H09BCRBy`PlyU#q2gmOfI!G8_W6x*OP>7hLi#NHdv zW~FlLSj_RwM6FL*_32xMs|$URzvSqgfbk7q#?rjtJU+04sZshz=);fuPz;YVqBb^j zpSRC6@n>p6rV3AtXR+N%oAHye|K5rESIMxno;n!?W{yl&mSV!LQ@kZ(=T_%Iddvd& zi=EFFUmT=U@_9cO%XiuA$Vuw?LEJ0L*P_;fcQPC)%koZsu+;yRSpJ>zJ79ms1;P=U zYST9`nN*Q7Sh+7=?_RE@~!*PjQ9k`}L+ed3$}R5UO|uK-DOI9~zfATwM{NTVxz2Io%{ z3bC`dtEq@_JT!=ldBFC&ysuUyiM(==$u{Vu3iZsMCnc8pz+c~7J8IZT;#lGV2m8Sr z%H>75Ha~1>!~xPaSN5de5$rX|a)R|rZvHXvOeCg+&qc_sSb|^LH0W{(2TM{eY>$b& zqG2LW;22}R&h_Wuyab^Kr`b?N!t;!Qil`khU0`O*MTkb5ohA zSh`ltlhv9@arAnK=y+Uxt^z+jSzkVoIJ}=>Y9p*Cl7Cut6B6P*hDW`9ybKU^OsUY?Rr;M0%)K;CXlHOy>?HG{sf%v6y?DjqCJY?d zUyr!G4FGCZAn~d`!eLKHCVIhPqeRLt(j*z@B5&hWn}v%^rNtJLwO}{}cudSgZ&!iMQ_>=u zq=LMblZflCcZuf;Ft_H70RnKiuQ@;vBDvtt~bjHt|gtEYAO;5 zV2O%ar9<33{HnvA>!@GOwdwrBe~{?B_5pS9=2$iR8_e$q=an!*M}C%2bAs6h=>Q!_ z|19RwDy9Yxi~^F^1NTZ%U?fp2HxglsfDhF-gI)M6nC*P#@}myuUHjqGf1;}ZbbBf( zEvNECl`SbZsixjoa@5bM_XDFt%G6V^7V4Gelr%JjaNvA6mb!dah!>YJy)`DHRUBSa z`dq)qL>`-qoS|vy{%O4d{JEvH*F6lf+QVKnyo^w=pG5IV8v0FVzkOCf6YwP}Clcc= zkdCEbO>ZUsYW%AB;2)(gP|gf9CzO6Fk)+@zOuN$B(xS0i<5VKh#8LITUo*`fb~|U; zdIfNq>9B&KvYPWamu#V-!XEu_kP51N&{8%L%~*&Ubf(?RHx3UR&s> z;_mLP?T;nt>9Q~zisv3$S{w2;frG*~*QHdg)3V(QLn*NXuO+{)Nf&PpF>l6FD=kk{ zDs_`g?vOy*39t${NvtC{cvSlLpDX7>;YHJ{Av)94$(`tGco_*I!H2L;o`Jnfe~8ll z0DuHDZo@<0Aa_*$W#?Zri|H!ug;?YoRt66}dqwU54{XE|Q z`L(OAP}7t;Oqf$|aw};h;Gzpe!tTtnXz&Y@wKkUXVL>^Zk&;&V>;zD(R}SDs90P`v z!3&h8C7O$3%_j&^l=q?7*pk^lH-)XWh5Au*ABL88%%$=>tL~j^0pBGv9gU)^X7+olumEQPf}7e**NCK4$>r_SYL>4hI6=a}X% z+8iCk0pQSME$4Go*ViOIxsa>RVXLo;IAPi=%=fN7$MZMtnzo|%W6{8sZVBmN;229c zC<*H<|~^rR~@G!luELkeyqDAIxb2JvKV=e1&-FDay&0w#k`$}DKbD7vVFLtpzRV^Zyn zxg1dkQ}`m>fZ(D+de%|M=Dd@XsXSVG_*DjdWjwX||L!%>_H7v6c)Z(#89ngbJ?;<% zbjP|KFNArA=7&=l=ko`FLY}D;e)zIT@Qs5je8eI(RS?9_2TQ!b@KQoBmrG0lCEa=S z9B30`<7Bp2GSko7Z6ycXBAkOx$(zIu@1K#=B8i`N%|3mYvtC}Zbo-m`%`>%pt?5{* zc&9&AvQO)%JtGKQqOxJ#BJ8iDCnL*Rs#?<Gg0G$ z6ZxglcSH|BT0#MOOgQaOud9i|ZknE5Ecp^oXJ%JuJ|%d)uPT#ZTsH2W^jH6KE5c{=V zNAt&caA)OQYGG+&dqSAI=*U>xc(v}f^P4YEVW#oix1qESjv3%wEz3#JiD4`^){tOI zw3m%o`$bP*2GPA(G9bI{Zxf7nwuY|KLi00=p{;s$e^pkB;CHPA)_$AyG48*0;H^XV zx_IhJ>G}2nfgZ$HrpcDwK?seE2xb3XsrHkjN4ejm!Dxl0WqB~K zsmRP)!kUg+TMtk_ujAagGvU_1!M&K=su07%3FSUHsh~g0N9Sm*@U!E1`!!VyD{B>w=c0hMdPZo!q;GUTSjYFR1dgEUe3vrUV}pIq zPBE_Dk5)P@GIx94Hj8J!j+iReq1IcXA#8?c00w(~K>*))>G$O{7#g=dFwN>?Lx2qS zH6nj+Qi@=BHeZVJy-?*S8Xw`%|82boKr>&pmV5~cb=LwGwhDImD}|$7-h3*AMshoT zQ`9sy3-n`-m$KEz|GO!HPjZMoiw{M(SINt(8N%FkYhpsgRkE;HI9ZM6v4m7jS?Ly& zDG<{zX2y4XDsUBqD{?$NL*5(E%HJ)I>wX28_ZzonW#%w5JOZ9CCW%rO1^C4^ebw+i zbn80ly5V7F9LXknx;FNCI?gYn2rRQ&Gw%)&bMk8lk`}lK+{5sZh{_E?`72Y@=3btHvlgdj_|ioAQK zA4jJz+22;HJ&)ld5sMxaBHC_JKe5-3udMjTJsMWA9Ny@Z0B}l(A8= zO-0jr89-Mm4KKybce~b#>Em4YwFNm4eUXgAZ7TTmD6y!9AG$aUS4zyK8auAjvZ4&` zLo!~~pq@wB8d8(ADI{1)DaNh^@&b>(23xz9318f%BSqc)l+?%x8hrV(JVMumex<4ens@f? zX`WtxSt(tIY>Ed!#`mWy6E~PdNb$M??5(YNv!>s?H>#fqzZ&+p0dkQd1G-mdN`Ecu zJ6Ow1OM`6eEUxOTK=+w-)zjc~*%OGsJ4oM)yL+dOL##=QZzWm*I^pd-L<}IG<%`46 zNfW2!Z=2UR#zNvosm)K0#V#R-6<&m+2Q%jP3C%RZ+!}6QpY-3o*=L;DxL8j>+Q z2R(^XoZ>5qaARUhsC>N1`mORv8t8+J~-59)_M~q&~t}qQg zL-x>yc)hnZC}Ax*RySKcm!w&arU)^;L+5;NH6s9yc&hBdNk;8}wvXS-fL`~x6bf(k zjJ1w@a1f7$t=#RCU(R`jv0Cio`n=l~z*;ptZf6!-?FF^T1S_PTsqHjW@Nkj85`~|! zAYgko8U*8wqXeSy87+$}cD;`tlAHO(Mh4}N0pZp{Sy#bzE(4h6b;y=)BMfA8;6k^L z?QfyIHr^rLSnmAPnummm4&_~qW7#J!k}`Q11jHdqO%e1H{)$k_U240R3l(Mm=DB2+ zfS|eYUy$RKWMo1ujX&G${?B7An*b9Wk56lgkSkjDn?QA^qm4Kt-`K&z>vN$Y6>Jwa z4(873lWV6S1O5`F3VO)C&e!A*V=!EK>t8|`WXybOpaXe`{DfxW?y?pNeoAKb-HvTG ziOz<5>V+*`?2&kd_>&oFqsS=-%vE_btR07d$07+x1TyV6G?vwl!$J_5+8wda+cFAZ zLEeexc&JD!kJXss z=D80b)HvGn^-oPIK-4UGs&+g9T6dEw@^d=ju45zWmhDEN_!(l5$OgYzvG~Sf9rMgC zjb=@>U)+8u#WebYB*X`e3Rfb@m(k34%rYzfzvG2Y5U=5f!9KTo5!FnBp!=3_UGMDA z`n(MO@KnvEHN3f}0OU-p_PG{%00jRu+~jGIN4LU$Aceu?ax7}c$I+#kn+FhoRA&&< zI&tERLM_!N7|hBaecw^2;cu;olW=D9UVx+MQB%PVWn*t#`978csY^UBk8jJ*O1-GD z;G^kb!rTuMMZeYxO=epo;6#j?Ej-$di2EF#!0Jb3(d!A# z8Zr)We;mQU6jc!&PH?5zOqwI>J+CfA39#eeLqihn;&5E@hiNT>I;t1lcSLC*9E*<+ zeHriw@YSBUU!_(}F1l*v$tHg@E}k#hyR_!7QCwxct#T>a?Z%V?7MN)#n42P+(`yT~ z`Q7Gvi6{d{OW+Jg4+tm(<>Yjl_hXbUO?(f0yOJ4?Av~c&#g}E~>juc=(J_<&7m>TX zqxMHh{tps0`;boq=tu1lghi0uYN$qLAGeAalOqP;sl&yF^z14Y)gmOaj9Gqe#o9kz z>qYJ1s~$QrX-rbH;)=x_j>3)Ag7kU)IWA7(8I}XPD55u4aOJZ|=J-1#O0=CkSv@xR zFL2Eav|1^rX3EKCJr=TG zpd}(e0%33dDV}r2^X>bQqU8ydGmq01M%hd?NU^Y3uZdbdd;4@*bPyl~2&q`l=~+x> zjX)mWJ+F_7SNEwO{l=?S`AjD1CpcB(E2_Eb%BXpt;@Dj7;N#4vl2woJKr%8 z>Nt}OWW-)1Txou-ty0%N{U6H6i2y=G%LD1mO^cCi`eB)o=^VHTzA)CcXsB@Jr=_y z?A5|Z>$}hHlFuu)x$(+uN1}d?Mf96=mS2YvAaCGZN+>EOzvXx}%mt3LvmE5BH>x-*E>+Bc+^ zN5(;ZAbJO^Dd^i?qTVo;kNlHm7#>TWU_P{KT;_kS8> znyp2htDFlAPW}N{cYL(AJ{$`iDl5+vr3ipWr@KDd#hS4@NdLYWd@{b4{0_b8Dr3}N zt1sjYvK3H&O%Q9Cvo&WkB!*uO>)VlMn#=QZ5M--S(1~}vXsiud$~dE`IQ1uKK=$&0 z5O?ovX|?$jS`J8;!f7DDv_b-~9RL-iGIGL-XZ3Bf%f?tifp~we+RsV({A(xZARe^_ z3h;E@f3Daet9jZQTOROk>8_e95R(d^(mg#V>i{^(LcAoVtjsif<6(f!gbX|zpT|zi zfMu>WRnYv>tk$l*S3!>mjdyf)^ur(2z5?5YV1JMi5)lzL$)J5og}hSl*VCrKWw&pr z7JGLnIHPr4X&ip@%t;9M!cI8wy}{v$)Zhq(e3T+|{X4+$PdY>&zH)Mq;7yLFvG#{E z1HV2HlQ1y+M$7GH{||nd6H8}=+2;K!OL1`=E2s!z?Wob{(uDP4O)T)F-9BHf=5%;gpKnMQC;c#Xrd26w`qs=($ODZfa?#3-izi z9qL$rIRn+uKPo&jOQlPqMH=2R;G2@X;aps_mw7VO5dAgem^ zbU~!to4$gTurLR?X@d{6X&UBn-=G%*@|CNr>*!^SaXdpIUFt0HfKC(^KOB(x=#e^Ck3^J@IH)!Nd``yhqk3;xXf%% zTs&^5x9=G_|HqI$THU^`hC5%0>{LRyTT_g*399Vbmv0b zs)?G{Y%?(Q`B!wga4xraFUwh?xAv^IE8Uzo@9>Z3MkUhHoa&>R3ONeB^FlWJ!9X7v z1*zIyMY7{({5o>LT7$6P!+jP9=bry%uB~7o={?AX#pTy#YK)Ada%WAJE{&||vDRE8 zFO7rX55WJvekQs0V@})MBrc-S~~Y!is&#z&naD0aGZ>u zgRCxr{hL0{Of>un2Gi!sF7{UGGBWo1F-OzqAdts|h(F9AI)yg}ZSXu?6QFn%y^%tE z9*Zc)?=M|B3SWp?SE4CUT9;lq*jGNDv0CEG^;wygnENXs_0!zVbO-MX9$3o(K5PDnX~!WB$#>%|p*wqwHUTU-a63)O_Nz zI8xHa<$tYd1YU#E>H2-4HYZE$n4Av9&1ao(hNt0Q{u87WK7u{E|6Gm2JDOE+)?uPz z1!IGJ6@($d20}$$ii^(yp8Gm8u{M&2nwnTy!x30-%YT%mWafDkXm3D1_zIq$MgAp` z6z=D|zU}?Ok|`=;{mo{J&4pR*NbNUIe(-$hB4-WV6BQqHFZb!K!ZQx>CI7hSig@q^ z-fzOSOb|nW&5(kuTz{qf<#*?bNxy^Cia4>v{N1cWX;E`F!NlU`Sj}3Q3ScONEczfJ zkYUvU7f~rH*NpwL_zId@zS^}zsArVn?-^8a8lTm&i$b#S*4Uzc z`kRch`M38+5XXo(D=0+Ms8)8fr&RuHiFg$ZykN;a4LZkz915)0hu`@74PwE)1jH2Z zpzbTe3D?A76CEllp<2|Oh*L*nGg;Q)3V?NTKCme1Rb_p6UgFTa<+>MNMJ__v#XuFW z3MdMM_j-SzO3bfluci|4qn1t!lq@;BX#dA+n+>rAXpfXHC)Aagd^5MTlwYKFLI!JX z-M^6C_6i0!6$b#$%9wjE!(ne>w6%mT^`cA^w!5a?tjs8$?! z;FhjP|1QMk;bssdL!fg>SyuJ(NwJV;%|DU7zHiHGikYina^f^SIr?V`gJ?T5(1_7- z#BII!Kk!|&T@D=Jr6-zhGhjs-*@&&)OYmS(v%sk^GYB_2Qq`*PYR!qK#dOtt-k zxINVhz&p^ut6Rped#+uWb)=$e9Lh+~87iGUe^^`Q=|NJz zthfp*HuNB3Li{us9*Yn8vb)1_(U$Lr?%&0MNNy)T!mIdfaQK24$Gvee*I z=k7M0eNw1r>)aE-G|zZeQ$m(7{Sgl8-K3=%Ez)@jWHDc7s_HAjUI+t%Evx*v>k0^` zF^bT7tHUdSB}{WXtp;sB8n`>3(jS z{#sPafGmdbWvl6e&yo!l_^`P`DDgaLjT=Kh9hd;$9 z{NQ?^5o+hI+tLW>Pr)WhNtxWS7;#rY`wxWld;r=)p18XLRU7}}^KegQaBJf#Qu4O) z3H0-+dfqV8rzw-=7F~cZB*~WErZGE^UZssuqL^jbkE$WxPB4TDa{eih{o~+Z$42B- z*g@6vBhw&a^VFh|SJ$uI*?rZXvudqRgcBy{_kf3$?*ktM!~|NHBU*5t(2{A~!jGM` z!U@~^cbe_f7M^qSxvg#OOpEa?2-I;cOs?}sb;a=EcifwK#NcVxm!5l1o%SWsthLS` z6V?{$5QRj?l=#R-LX$@$eLecbXT#rMIuAgG-BgzQ`$_7%d8@uTDa3fMAOLgpp@VVVX}E&%;6>s9O0=wIjB+ z<3HY2g(@NRlPyE29Qnz_i+;tCspH=FcBWc03v9hKS_aZDpFVx1OQ{jlter)9@;A@h zY7M(tc!F?aq|>=%9bV;r~$&V&;&7s{ryLWA;2&A&- z%j*tdD(E1j)RC6y^}NuHyj}*ihi^hsG=`b#NuNQOMAc-iruuqqj*>xCMu?w*h+dID$s-_)oq z3%KwD+T02EQky7>K|LLy`TMnaNkLRP7}N3)J!~*ZI>3A1A%@v0DZ0}3037$>O?w^Y z^N891=Jt_O!vOS zr-eBro>#xNA#GA0K$Rp^(+Eqa48<6inP+gtCgYx+`Q6+O4TYg|R<|#-IWzEsKNSr$ zy`+X?wDDy7`G-H>L`68LZ%6w+-5@%~vP8|q(_pJUzcLzy$r$I>A0S!rAMMgi^3bNI zU|TnsoaCQsZi3T478n&}*$2MAbQJLyn_Or;AVyX7l?~AW9t!~?O9%V$mHRG#%_ApLP2v{%7=_5qd8X`|@v#Zc(vfmSf0 z9IoC)$YoHm3KB@ACH)Pt855FPFDF-pV_(it=-lV?YfvO8#6;x_bi3Oo_YyIW2zddw z6|CPRFkKyi9D&3jzaj+8`Xi5|5iO6&hAx8KeOzDTVC$`2!}kt^C-fiB*H0-&RNQLl zAh74@?3>__o>+LE>pDxzGR74`GDKI?COW0ni7GEHM{|i~y1w{;lmvN#@rqr8v4QvB zQMa;IIKF8Vi4x3qQb=#M8_iZz7()GgQa^JnULz2O8{RCDJI)@NG_?bBKMmG8uG+nZxKY^46Q3u`!I)xIhBw4WUC)&;n95k2*%#!p9&3_xk&6 zNiFm&ZvS|=Fw^eSrbxr9ho-CbwVNfNfZ#jc5jntKK;SJU)|dXZiNZ&|dLj9<)gHMC zzjh`?YlwXW&sDm;0KBNQ_wI`>x35ec3qB=PDEnsb%wTA4F_@7KR4LpkwEQ8{JHgp7 z<+SLySbRAs2$x?a^lVuSTk%`-$3`Z0Qg<5Nj{@P^bID`R4|g z6Q!V`UM!-->FB-9?_^r*@zg6H_t>Aj+gkz0T!G@U`}xAR8}D6c2P#05Ni4><{Pf6O zQ8akv4qEi7bTW)MeSn*-i*%*8{5n%Iaq2(Ts8p;_<=_?nvX1LcKjjDHj3r2`MPsAHgtk@#BA#c0YXD-HgdZX{s1dx>!N-Z}4K}bD>POB4P zePkCK;MV^rcWj_y;5H30-%gBiBAZ!P!mB&-#~>QW)ivUK0hzTh1RrrNek5Gg%}Wej z=plJzq8#y6KTlY9;p@4i`eC`98(<;bO7W1{i*u<#h4}k=xZG`XVZFXK0Reqnp8@zzaWlm$%C}hNkVp^G4(JnjbzCT3N1P9yb zS4dZjpgYB3%&51Z`BJQ6qZrxXu1xjcKN*-eiy1Ls=_Zd7g4w*FNf}t>HIhBg)|YMC z9$vjaq@}-#_T%Fw<*vC6g7fhD4u*JfbNZfo93N(Wfqc|RB8xy91_m_gRyppUg*iS$ zR>!eZ9N-)HW!0tR;BKf;Y*|r$&aL^b&sq_BiegIbps(IB#}Ftdh{$<5`W<`V3EUOw z_+UhOSLlL%tJ#ePOT@y=3N%gmPRVD!e z@s(u=Y}qd7;t)G|whFtbam<~qn<=YlN&Mq%-HJ9|PTkEQS`1b}Dp>)wdyQ5?5mVWG z3;pjC?jHr8PDH2s@tdkGgOH2wyMaomTh7QKb0qRDYX}w`=@{&lrP8v)?xHxg=@>4H zbF}hwaasbVRF!|d0MS15Kbnjme+ahDCx64RFaRUQp8G2KvR_U$`YqT2zKHtMlu|D% z#A+_bLf&=f?F*XP-tYtL%iuS5sr>L%^?c2&c-%} znFL5zDY0mrQTB4RaHucYEwW*`QBjo}<`}?$LIbyq0yQ6bchisbZ;kWGmaZ zhD@sgA~z8Av{dZC<6tUHtP;9g#D42fkMtrzB^d+?J#*MeP8rAWwK0}8!2i!K{_`f4 zAHW-VM3riKU% zZ+%#Wna58fTuy|__aQJ%Ju79xB5%t@h{Wk|6+WekcwRrhr$lH_k}0vlsG8SWD7$5CL`>=HZ9aw*2IEeRG9 z=;n}cwBU`fYw+f2R*XQVSKH}l=w_W4#@m__Dkkht)>gL8KXkTf44eS#*;Q(Vob^X% zv9}4X68k|h?XHiLHRqLwf{9cri7CnyBR)@4>d-CfPy>d?CK4lGpV#b~peCfqBr}$z zSOO>i_Ko<@#UcT|UTO#?sB+E7?`6bu!@wHFVG?rY3qrVzEs>OO3Gvdr91e*3S9a+7EZ*-ENr?xg zOlDH~qFD%iApJZb~N(uk`reI@-n(FDQW|GqYFg{fn?{jXXScm}6 z!lF4QIWQn~?Hz=0C=TV}ObLKxC{!yA0efAXS%2jmV;L?y8aW$j-u_l7_!&-C2#U&f_~9vj_<1{@-%2yirSdEk6oV;}qxNu14;lj8 z7+V0cFjy(cxydV2_+78^dP(Jcuh;Y8@6}mpzt*@&K81dEQ!&LvI;mf+d?-z3qNnx3 zt@wU1vLkq>>l&HNm1I6K0+dk>0p*m7%gohOQ%i7XRhl1BYDtG2Ne27`3L>LpvyQ|8 zmBj$CjaHkgocA!;Uci#H@#5H+&Edw;DUZx&UhdCRiMF~?bXsVceFKIG+bjmpc|%A- z13BYHX9c@kOdV?1CCp>}7co#@p2VUbv%$CB#?&^Q((qSikLq>A3#{ib;s4Mi>A?^L z;;u1Y??pvNA`Fv|w|%CqU7k24CM)XDmqt;(Gk%}vn+Jqmd!OK=zg)8Dt`T#PeaP^2 zMwunXk})Nnxw^zkV@b*s+!-Zt&P9vc<+v^5)wTIOK`0(g^yv{-mLu$TYDJia5G2a) zBV~ece779Sf|tttwePlU|E?iBaLY9ty6&V5!DAE(E8PG~RgCYBmPx>+%jX$b)vOS$mj8fm90M1aY z6$Q1~o4Dyu#@o4&oLBqiX%my%Jx@Ucm7nzipEEo&&;bOdJ8!H1NIR^*y!0B9JnU~q z0PuSg09&HPVbT2WJd4-G4{U$+TWvpAnbiNjpWX&&ELGgb#VPo~uiMYmNrSJt*khZX zVXut8)WYn4*$>sGYR2NYSlfW9F7;XQYatN5&EEViFYmm#D}go%_p>`2j6d&+Iu9vy zpGCjss>Pi@1ICJh^8Wj6KlFsVwqq_@b1Vhrjk-_hPmcVlFDKzW6|aST$sBRiSu2YL zrCnpMtkgEk*x!_~h5Qf|6(nAiE1{}MmZyy=HQhmasjXafz8ACC1s zGf1hfV>DDO^BLCgclvtSgTcZqjh|#s%>fG_Y2zYx7RGTTAPygnjQ9Ol2Z5U()go=R zMmCO`o^97DDHo@$Ob1w%y>(Li1%fuTj5ZgF)+4?z-GyPjnlpmAOTPzKzOyf#{3G6P zi$HikrDC?&`Fo$%CPzYXFPql10riQoZ&nLmB~!(u{vEK3$t+DAyfoHmN#JQsL;9bM zMc@@A3{0LB5*YLPAJM;^4m<>3yP)nt#|#Q{>eJkYTUuFAT!1#N>})tCLI>9Q#RYL= zyJ_=zuf?_E3}6h9fQ4R0YW}bC`u^Xow&xa4rUq)nn^+$htz%L@asP)DX^EjZ@|&@mC3*yLu#@sE;jcFMa3#LCuJ>a!dE^Bq<4RW>}sWVC1bfSJ6EA;ZY}s zJvFS)76&}*yB7wQB(f&p<+jcThi`!lMi$`Uqapbvq#{}WIQQ#OfV*{4t)5K%@7>}x zBz|*_u2+Q)@B|Pulsgd#^6A|xQ^j2NF#IeK=Cm{T;t{Wf5yrXLry{jiKxTyg;9Dd< zwvQc%2Ih;j3b1V5sROZJ$S1E)!V6j)jp(nh0jeCv!y?6<_M}FF{vJd~i~|MrD+f_f z^b~LdH8V=5K7rEj-jr?V~w;u#9fJ(iqYxO}ckr~j06wF}Vtjj_BJ39@L1{;tOP`Z$@1M>;rb{ZTC_DOr5Xx~80qs-8+YEiF8g*H&QN5bUq-`JbY z2KQf2)<5v5UKGMbdX=Itsw#Ty>PcCve7;_Ea=m<8a1HPY4X`GmT(7KOyJ^n4h;w-W zb->QE;bNuCjP&=;07$DuE7(_`Hi$i2b>H75z8FG~@Az?FJ_9Zh3()`l16A_}sjo(w z`rJBH^gy6U1LN0m>x$Mys~kLxsY2G=!K+0EdspNz4d1DtZi)fBEje8E*Z~OcS7}v3 znzLqlbV)U;cj3g($sZ|oLxN_&<(^i;Zub09Ut5tB<~0rN-8dEy6+r91a}z4-LFvnq zJqc(UWNyF(b8@b6cd6k%UChK9q-L$NZnAf}|0zQAE0*~a)<5 z8|7t`GPz`gCYu)!l*oAvF#f;H3J;j;+t6p0Gva&16+uS4bNXAz^b*@*f1cL}9x+CX ziFF@yEzviyVT`?7r&)}rUcY<_{!EF8LD0^?Q%1vvSC$v`{6Z?@Vj$6}WA4}MSs50f z*^`%8&~IUWvBQ7&x5k!b_CVAJu%C!=#Zkjh&KIsxFzx~_qrvrT8urBK?>1IvKz_be zKuD`#tx#N{*>!Mn6Sch60+=S?R&gsiXdtfB@Q;gWLaP}94@<)-PobHVEdU38jHAD; zEgU#Z0lUpz@yLNc2V+Rw(&|9B%wVbz%_F%|?z5GOrFg~?o(bBjAHQ=C)9$bT@B6>D zmTNdXk#Zh>KmWU2?T-Dv8rdg;kDGu?<)pQ^!om$1s1(9`uxSGbDypGA$8mGPQa86G zGj=tFxRI6H+Y_tv3*?5UmdvB?5RCb&ZA_Ad5AkaCA0N7xUaM%=uvQqaLXI2l2VyZ? zV&m7KGh9LRBH5Zr*1UlT0 z{Gt_27X)uR6<2zeRa=^BX>ERPb3l-D{ln!YyCZ4|CAvze``_zqUI5X(`4Q6=;{S^b zH?QfN8|Xl93{~&!u`P56z&qES(WE2$jda%r>$t~?Q4w&C{ew>!fQBEz{aq9;zyz0s zu*03o)YaH5k?MV;o^fUBHG<6PSg-HUj0YPTM!ivs9>lJun26ux)$rzKG$tPIl0;i)0mb_#hd6{S)4ER zeofs7e&hV_k+Y)hw6BJSAak1nvCKCVl?Ai7;t_7=nBsdSYCRGrievqb!I!nyfdO?C~Xbp`a(8QDPWMxkhfv~@+Xd$lQW3TSoY<*wMXr~@U> z)2@#7?yiu=PXEJ{kbb9usGz26ZWjwi008fUAXcLMePa|N@a1z~%lZ*QO!M(wQgO~H z*)I+(MGOc0AV}j^7pgLvIVPU$s`yYa|Lbxy!)JsG78`LeZ$$<&xYa0+V zCFx84a^g!iEK;^DM<3O`q$xT-i2V3?3Ywx||seb?e@e-9JBB>B%MhGGMq+un> z-eqQI@6}Rf+4G=;>^+WSlKD@6Z3gKYp)2Ubko0Ij-k*J@(^q z-5=MvhzvNv&V)+NciSAgzmOqhfUEgOxC0q)Xeu&AbtPW&iASiygHwt{W{sqQgzdR;LdBI0&uW8z6UW>-*$Z+8*j)Rlh>)dMC!z&z9v3T^IPojc(rQYGxN2jOHxqe7=>#>`L0Gm10d0iGt zBd31@kkMlE09Uf?tJNN_B8~S8`tL_K#-Abjw+4hXqHx9>vT z(In+4abu!{)3f(7UMTgtkpBpW4xruN1HJp{|NV!Xw%#<6rwxvn)|7F_^ymUTdaQm0 z|1+7WdlG>~*Ci(XTL>B2qEcg_sZPO`d7l@`e&vook?im5tL$g;Z7p>QHm7NSN4^ot zQDl$(kdTt^zW zu0q9^YSVAq1g+UR7N=%~&w(TH;l@k@Ljeb0Ho<$cBB8;IP-EAP*p@5_>2Pal0(#|M z3eXFx+hRl??DVBn!RjX+$~kl#j?rcNU2>bZ1_dw0W%uWmN0s#vvp2ih zi8oScDnKnA1BSuL8Z|!^Bn#cfzy(BV^7lGUaV|JD_c1Xx>8j0Hfjdsd0t_jve__y` z0#X25{59f)Irf*C?VtwXep{cVf3L!7rUS!VYaQtdmtC@|_d-NfBs-|2l33>b=K2zf zyP+h9ce@%{CPi+aH}jXw&CotcV_-SF zKWA&Z!p)`3g3mTu*7AhVjbfEWv^RuSABD&-h<=jMDlQDl|1{oc3#vDgvtl$l)Zu8= zWr7qaGG^-3AV_mY#L84k zuS@$z>7b+JJVrO8mR>oj+#iXMA>&T?<*K*W%lG-w90+EavM&E&zWiGi9FET@J(^@5 z4_}wj>{qWMy0s!HV$CeKS(;n>=59=j>f*`?@=Lt~68YHT?Hc&a%08DhKQ2aWHFEb8 znd@LU(6;S+-m;sX_bgv{`aCE2LCj(gWx_ah0^{%rmbDnN3tevp3mstUp3eq~RHOr? z9%l7+whP=&zsACFUy>~2bBHN}M&_%Hv8;4ky^P)~UsAg&K$EvYs}rf%GwH<6xc~b>S;q-k^D?AV; zqSLJzV>egah7s?$XvZTL>z{1cN@-`6J}D>F5q0krtskiBO1~aNL14MFB+ol0l}^Pe z*jE<5XwF+Dr&S%MoDO@`b&gGzgA$4DYZ;ott@5Q{WKm50xL@#0WDlJ=@N;`q2mM>1 zKxM7NtgTwl!&nEdlWg-ud^I@XFg<xUY*$IsdG^jrV5ibuWKS6HUsP{f=(fvwnmPr`^0dgzh_g<@S5oe>eqF z)}ha!K=1k_v$!fYb7vA1*Xk(QZ-72#2_r@Lz)z+}{^*zfTa?jsOhX$3leY}D6>pKg z+F&WW8cd{EIkiSBK>2_t2EYwBQy*x!sc;n)-;)JU*qpBXpi`R)CJXhz{diP6nz_c& z)DILVhYGHaxvFGeyPKv1+S$H>C>C^Yq-`R~lT2SvLv3ITg67^vNpEa$x9a|=`N5vc z8Sl)W`>w6?AF(C$Po`5iP|_LAG=OUWIS}_^D5jVfP_EjjkVAtjBO$L;3BMlE8RS2I zE>xx7fAV@J$B8~=;tNzhAo+r=n?hY4Z8=M4f|SDK#QPi z_7|rtxOE~fdm<5Itt>r~zZoawOsP}`W?MJHKY(&8!1ZywRbniVsxjF2(;iohJNkRxzJaC=pqHZE@gN;-_U}EinhLdw1ZVqb|fu zGKf6goStd=gZ)Z@4iqj@eZF%M=PzLzKr(`olq(7}!;xIr$-S6))1!bdyPbT8G^IDH zfx6@Iy9cTwB~7&~A8&|IhJXy>tL=)>uw0r~{KTk~Em ztK8}^WhGWwt+|Bauz8KJLkGd1vX_gw_Q2^tVKDLcoQ<&~xNkJhGVQIKxZqOb-Cz$) zIk@YpJC6LmwVKt?$|B<}a6@e>Xs#|%Jq6B8Y3tlzen;Huo+W3KJjQ<)v|E4cmcG&| zdbKn;+`B2LZP$&Vfk`UxCk6c=$22F}+yqk}e=@~ORoQXKj$|JC@MsA%A7?UrFZp|m znyf>dpC|3wfC4gzuog5IfcsB%16KUbE`qiTh3mpwjfC9d-qOb}FM$YN$Jj^@QEH_c zL^2HIh|E)QWou<;xJjSj5`DtB_-h!o9`|b-MV9BSAgGiCmqElMWI8w-y?F%=Dt!O$ zVP0xTU9mJb68VsIsB%WF7ThCXF9NHeubr33Dy7Ts!V0Br4029c~Li#PHaAG*` zyK5-`{Dm5Rb*8$9sg%NN*jDwt?&V_pf{M$1Ogq1^P>_w=`hR~n4<)wfc`AcF0NcSrhtzQ-42wv> zMU)*=spsPWxbHJ>^X^@^L+OxXooRAtL4pI{x-VL@a{27^c$}F~`U6n#HQ=s?+3Uwd zmgd`dpz03u>*Bi~{h5=x$G0$|Gia%L$DOCehyvysL-TT+llfdVo3621IV4;?b8~@n z>d^HnU4yhuyN4TxRxDQgbSzxS-;kpHnU%R=ic!ceu(>=M0*OxaFJ%_dl2V2Dph-DL zC#P;Mq>X>QKWj^vTn~=@Qa*>%cLyt192dB7Vf@V){%hPia7v85C*!Eak-2^>rM;Bh z^r@8UODCtIIAb9h)vI0L7g%NS!D}+!L^ja_Ee-Mm+Sh6^q5*MBmc*mK*sgxK(p#_G z{W#}~7MdT}aEjz5DUQ={>sL$^t5H4*#Q)uCoX~!-YaZzX$q92%`F>j_gdou)dMH2n zo6-kZb-E2|O)M4wS1`D|ugFSo0O`=0Ybd8u;+U7n7C3`_kw0zbew8pUU8ef2RM{=` z&8I@=aLMn3e2)W)b{Z5duYuK$NrQbmkm_T=bMPm3h9I3eG5@P+KBo)y_sQ^53TNir z*BW2*2Ps8vE^drdZ3!W2>8}H!ApSVWpe%(6pj|&>^jOfE4b9+Tr~$UJ2C3HD<3Jv{ zS0oF%4^`%guoG(GfXkGbRUGgZD@&-pKKYn|W_z<2`KO-e?gSFwc{sXC<0f4;Zo!M|Vah5XN|S`FUeFvw`YSgBL> zZXR<`D0F9pUM5jon|I`^k>^|9EV{cN>n^fNjBJEMXQS8{5PJA~0mLLidW=Qq4u@af z+wCyAA(v1CVF1&M=PfJ9Ue+BFV3!PV7*J%!+3Q^gbouvz?9ov5oJ2sR63uG?JSm%) zWHLd1&)tY<0$RN~d=})M<*)H){hL3s=$nV&zm5PN>e^N0Q#SAcw(7n2Ajtr63>1Wu zuCP)MJ^(mc;>%Elw2&K|RhX5yLzU)v zyg=`9+Ia4)$LT4uE2B@BMs#;I1&Yt8=&K+s?Nza383fnW`V>P7X+<}3!R;VEUO-kH zDcRZH|L5wMf|f2rq`VE0(p0SIDtMVE{%u$1uZW2~FavAqfO&@O&M<&)^}ESH7QA~? zTgG#ug5p0mDqh|JS(p{7;Vtk9B^0DT(Ke9*ie-Td-`aF{M(}7lCo6n{Za9vP=*%sA z==63GTxuKIDE1W8a0xeDMB}R$hF|^Xw2+QKjF*9OE^H%N7z~6mXI)KG5as}QvN&!! z2k?c}(TyRXg)a$>Dh06qlDOcCr9XuK!FsxXw89T!Clg0L$Rz%X{c=H zH~(BM6UI^Qv*6~2unlUaAU`9_wIPZOiWT6B6(#TS7&eV_FD($AoTW; zyx@&v;LOc|?}YvucqV%cp5M|=xP#|(@$xW*oiaF~UQ-QEWx@xq`St2&8J%~tK^vBL zec=q~{0AV?x+-uwijWY`jA3C5wb~Vf&}+9q$Vwk{>g35fKPmxrea)!T*g89`7U=mB zK7f-PWuwPaQv0F6lEwZ`xu+?P+#74(=0Skb8_%vL3dJ(&JjOYQiOuwt(YfBTK>g|9t?tvNv+tFP*hbVR(=NYLo`q0B3?mXTJ+nw(rfW~dgb=j1Uj0szZTd& zpI~PGfmso(xO_6)Bb;j@%Atu5H9^MyY}~=M429Yj2yEW?D^O-ojq}PfgBS<*G%<}V z9A}0Hc|InhfRlA6;zPxkL3nY{1WaDq{g?+U_!>JN_*yRMowZ1o;nj|rVIQ3}f6V6c z`#F;Um%2nBstaERvIlJkoiI^kS;N0ekbh`+@>9V9z6Eh2ce&2?3_XCz}r#w*Zoy6fuz<|T$;Aq!P7pC&NXe`2JSh;Y8u z=J9oyJ1mbt`HALS#<3B`!|4dYbUfpC$#75W-XAJj$*8`Ju{K8jU94LF(fwL`G3*OM zzMGs}_>zeFs;;BiVr=uMN6hZJeiymNI!`=oI$Rnob{*%{;xNUG$1x91()ETsH?Nq% z1ry|U*v>+Z+Z~I<4#v36;*3IWxW<}el(T%<`ru}ut)nj~AR#PP0VX>ie6TLC+Kafj zV=7^I+{82=Z+N_mjPa|**tn^-t;h{ttnmA7;JLCrnUJV$RB>X8kGu>sxxR(=YiPH> za1RjuCc){t96Y%qv{*%=n6;{C8!3AwT7LlUiYci$_ujafdVpeVIuP(tkENxrk8&c$ z&DDoWfQLZ_uAV<4duNZoyHk&`(lD{3Hspkk<2)c)|K7?tB86Fc*0V`nW^Hs<*goT& z(`G2We^tYbV&WjWQ;Ujxh2fxaw_^T}(?s;$X z9!3|4gOo;6DY%Z~XppQ=uFd<22>%t0;tUw>ERaO%$buogygM>y_)Wci@qrBCYK`r5=zBwkR1K6D9 z+|e1k%o*N@{K?(C`A@@h1|1`OsAcC#`i*s3tt?$gd3MsA8s&6GZJnGMRCg1;< zg$DM_08l9!e?#~^LE4Z4jbG}L2o2(0c zn_W8P1I1N6p}bYGC)RvAjCt-43ZHk|YW-%heAh|g#9Iz9Nh}i%=s)$o%%vZ1nxR>O zU~+j8badqcq{Km}M>T8s#7T}G&6vqj<(D&DrsuZT`nXkjOnh?QQ4@=V-9b*f9D^(Y zBTkM%^JAqTf;y+qld4Bp>&Q&Qg!&dc1E#U}cwm?D;X_xhSy}5&q4t*AFtUv(V|{^w z2B?wO4WK>=>G}9rO+8IKnd}~mOnKTw3yV$0Yg$k29sX{h>DO;JN0DLLcfo1ClQ+b5 zs{M{LMku+batQokiyR<_44#I}AtPbefJJ&M+kWym4jKE)4U90!VCkQ%d<(eK@Li5I z(t9kfeJ90%=xGD%tN+x0am9W0+9Kqd#^Qv9}l=SF;ZP6CL@qLt+BiD zM8I1383g>0bRMFoff&an5kdwic6FxU=a**l_ZsNc4+3mXVw8o=W(pi;ujzobDRNj}4 z#fxFQ=9&#*9JD2_E7Khg1tX$Iwgw~%CObeXbSO;A;;}_Vd`%*ltxLkr_6-r-DPpEY zVTYSKjP+l;g*yl2=)vtdHAYBC_(V-j%Jb-&=*fwLLZj3@57x$a{BBVf&XLJf z0GSM)Uu?(HF6k+tYVc#^bJByY*Mzyp3hI!4rrcjKj2qb06vKSq;DcAeYym;KqbY*1 zR+Aap(Sn?b`@x$*x(|jfw#AEMr_lr4XR*@s^*WrU2+Uk>TGcMKPwXTbuo^t+gt$ZA zFzJAy%QEm*tX7Y)wFon5A*>DC+uMWCAKQ;=>SgeX`j@Q$rndKvqzfJ)At8mc+4ZgN z&Woe9!JIco4)zI5P6Nf6z)DK6a|F-43i>rGC$fHl1p#FbMo(hy96R!GyNINI6tfAd+ZiF7t@}Gw@ zK-$?;6FU!9i@0%1r^;v9%djoMW=S&fklA3Jx1e?2F?x%gfriMVs;Vj}B}FPjJ@>_v zvlKix{T0~G(4(UB~Z|2jE2|8)3u}sfWpI_}YFB5MtGBUc($GFjd*Bzz@TosFx ztFIqSA1{C+mtHC)euY)5)VY{H(0_Qsiqgq>=FA&mm+PDNbGHXn)DmM{9Saas(`P*W z6fLatzKk;1jnxH5!-bvK|62RhHmWMkOc@OVCws8W*~^$ zyiZrQ=G!^gixJvbqKKp&_lZ;>pbS)n6_Q4euA5u z{XNVtUyS4_a5Y~F85Cf4{##?JgfzFGs60-dqBv>4aNieb%B zd|Ux7Aohmo0l{X`x$650VmzySfM@QQ@JaicKPPn7C$l()OGZZiUi;Apf23}iv$~$< zJ@O83Y4{sszQ&(h;3m$bj0}{-Qu+~NN%IA#7M=3s%fo7fO`5m+YG0z3&rZ$HJ9-W4 zmtH27|GaIzt$WET{n&0_v z%N9eEj=K%BXIi*3zU$*GYq6&Yqy+duR4XVI_~ z6|Q&)EAq-u-=rY-s3TD>%(QvXS7Q9_TdJUEI#zV8a*%JI;!@rYS3j3VM!s{ z-4!W#+_m3#X?R90za$G0H=Edg?6iC?%*x7YbI^BGIrqgU&+|&lCKQyANx2|8WQw{( zWehj+TVji*sCek`QTN&-r`9T75k6)Y{dQ0c7y6yU_%WUS<8i>glMHw9ahWBatB@)*qRwdh+j>JNM$ZV&lfv=IqL$f^0P#oT8vCbN5|I* zhfAH0i=uXIh5}p5PFZA|n`J@A=w*AMtz`=GpN(Z&+UVf34R1+KFUx~aQ|@jTDNUwt zIk@eqwPO@b&3}un)b?_;<^}taKUM2>gZb}d6b)C0?@vY?^PmEby9Bmtc41w3mc8nZ zWgRv-+A&32)j1>NT@4?4dU}?rw;{2}0Ak@h@pufEld(m3)*j`svQWAt*bra9I2F+x zO|^!Z8u%;QJOIbvCZ%Z!2advc&rw)w(5&GP=sfJKiVqjNw*Idq6O% zh=(w&Z@OI!{->Vw=9q^cUMkaC-QENmKsxREljRK@n-!Q1w~3ib!OqsJ9BE{^A-5=P zGoO%_kiZbarV&wsqj29H)&UeJWrzOQt_mQoeMDbC)uOJDQg2Ty^cS{%s|4PjTuQMR zR}$1;*h`A8;>&{=Nzh3S4eacCr$LhhK{1fCFK(EfZkDGHcC(+PCtsevo=Gom!pJCW zryK{mRl=HS(Kh}&&pc*;?H(rj^ysU_vM6Qh#7^n)paY>kLkHeK9Ir1)JCu-iyJ=%J zfS}GZN||CptNWulS2{~(d1%#HNi~xfFT`Vh9$F-(sPfcG|Eko=l#w*gc`9=uUDPGV zpTY~D86A}Q)lSpZ7>Tfu+uEXj>_fXcNISPtsl-!N3Gy_%QX9oTXpk+LIcpbZMG5Pc*<)&6 z4>!b}sAIS-gR>A9dQ+x)(eFFDQbt68b9;#>ROqsn`uelY3CvEz``fqJ3r0Zkqq1mF z{XCHnTJmOu^HWNT6dH@O4qvO5bBD;$A;!i;ZRhF|wfJOhRV55| z*Wsf6T|(S5w1D?MUlb*20Pk^Ygl0u$2kw<$*I;8}CrQ=E#(z|&=~zPCoKQ;(kqHwc zRpkQTvmV46=cI2W&s~SL@g#WzEsKF9`#)3F6<&)^ zKg?ir#1`h3<)2a(E^@{%TzhF*dow8uQDzI@1JC&p!L4NxjS?6A0EV2`)n>xV^lOx* zH70E1S3yNh`sKyvFs<^U6^ z#ZRcd;8lmlH_sQoZAeqCifpo?t6!D%@?3D8-5|8+Y!LXYS5dVbq5F1gTc(WCSj$m} z@Q0EH2mj{khjmcAPUwx^Jp%aI!O|AIT0}N2QZ~{Jof$}GXmO5>-g!P$x=<{V=8L}+ z*`sL2I4A&0bHladnx-kHRa$5LmYOeJV$Cq|87UBaZ~gbXQ)Ts_h4O5P)8P7whH=lT zFXmS~>F0$w@)6oZN|NfU2sB+c+3Awc0xh<9Lh1|YB`bs%LOACtySX_fEQKJN8WHno<1E{PSn40Sz zCB4RG1U4UV`*MS;rPa`}Td!CswEup{qj!8esV|1J#GdSZN)h;ENl^byhvKf>+}xj; z&nvRk;-R!q7S}^p&w(TavpGL89O7BfA3?9O9YxS+XI?OkIIR~i{TP{WBaL1~$OR+f z=Oxpi7H&onC=l>$eHf3ZDsJ1(Ux3X;thbBT-0zahM%qG+RYv?EdTc^Qa&4w` zi41?K0$qu#MiBx5LgNO`_TrQ-L-5LofOEZML7_p#_0jls#gE4B{?i)owT4mQDR z;YW&TN@v-IQg!9J9Fas>jJn9S0Z}CirPkZ&yjbGh#K#|C5jqTXA7G4JMqgR3arPI0 zkl`k%#N^zjFq(owhK)UYaL;*;eCG4iY86P%MIV7&Gx9;Q*D;S|vKN>^KV7FJ-AE>= z7@4dxG}blnLPO70X~uPY&R>K&9C!Sb4PwHs)GTJZ89mHcAQY%Mu)NaN=28#{JfhZn zyaHh=t&MUHi@&AC)kCaKVeApkmQnVjrBi$cn0l(I($U(Go3*y|MJ0`aDEgGjjGfVz z+e6KGW6>R9QA;RN&+6VXTdOO|A}=?R@?()Xe+9agwr0v4?-14ny8H;_$kk%q87~dk zZt~R379<=E%oOQJ8OFvIQclrL3QkMW9lu=t1THQ4jT@o6DkC+y)HHe3syi3L>~w>< z`UaBn7Und$OkK>3f77Q>A%%N2m#C2GRw9geE-s~0+<{!PlLi?!SMy5;igz~qK1a?N z7k4Qbh}3T&g$p{@x0Z}YLex~1Zo)064LP2byLZL}opTGZ+v4h8n6a8Elw5Q}@LvPL z+;Kcj2NyX+^V$--sfn6L^zAaKL19B>xCwr1+m~&xzy2j7E!Gr)O@4i)!!d4ypDY&8 z{*Ui1d`Z~h5E8=A57b!@G9J##%cxrLoTJitM}5gfl^kwP9^|&LEtW{s{K!vNVMAI= zh;_Bsxa-dN=gw1J40DZ`5mF0q@)D3PiK!r$F(vrhWol1*#mtpie{1+p?z>TsxZ0}| zwIVm^QU)<2uSof+D$bJ+gt?;D$YTOD17{=Qy^PyU)t%Lg3hY1UizI}7ZCBr%jO_PrH%16gIwHl}+8(ni+V*<~=lu6@HyQ^dUA z;1xb!l%{F>F1#K6*DB-wwu;zS7Y3HWz!4dl(hCy}nx9T?kw7cgciH}E%@7N=gsp^g12%kI=mNxW75467&VOq7*&1=t-d)il7mWb>^>v)X?`r{~nEf;9JLjhNYJcq*NY zqBmpLIEXG@p(9SL`jptAD4KJTo%ziU{k=rK-PAMA3a&B}EaX8%6x<9=#mmWXo{3Ey z{NG=Yu#XYfTI!)%DEwGIN*S2tnZTj?u>{s{3bOE$m}$Jw_R6^eYnKNbg{VHV`g}p> z8%|%IoZl@KfWiR+FThilf#}O@8m)u9{vvUs9W^hF>sA5d{p{@;rwn9?srjNVI;72S zo;t&DdQ79*WGH%G0sFDM9r1W!_a8L^pL!#;T{cnP=@9l zX_3RH_s|+1# zKlHiu34YtOCpYYlh4!x+OQ)~`p_*q>GNxMQYrcI0^X6;`UwHC0%T{JPUH%qenryWU z3&@?&rTKgr8i`b^9pA|XrWsic1^UyP&rJ5|vB)RtH0Jf1HAEMisQvUa?q4m|SV6rh zo8u!l#G8v~D(>W+ODxObn@x(DGw$E?@i2|&cStkg3OZMvJ4bFO?3q?#t7?osb=qW& zD|e(zvN|u{iLi8PrTbU&b1@N$=HL!p$aI0*CTk6$>I${YQ@vLW zKd32Xc#CzJykN0i(?D0=(oAK87AmpdAFziG?2_}=8vh_JKHYo zKUbuitE2tXdJ`ISxvl4wvXhIV{ODdju3B~j$$N*f<_A}&`H1=L?R1?}KWoKSyrXYk zN3Fy$py9lITh@rm`b{O?1axMMy>8i^rS;<$L#35YcMR-Ku`!|2l?|K7gF>rR*m1p} z)6x9QRjz9wVYhAr|A@9xa;odkZHyM+t@5Ml?Wm6u17|t`Ao!7bm`00(>nJe<#V3P< z1w7k%+5MWm5`48+`wa+1XsXVN+V;c3r|zg_=$gCA z-;Wgl>N@{|4?t_8K?%lAQht$C(4%B@lpjDSB5@d_UW%rw6|h}oRlQL0j&NqY<1v6; z!FcfI%`~aYlow1k|5odk&8&(o!kXwV$>1#N=HUSq?^3|&e*9)EqYSyCR6iJJky6`9&?}qT!&sm z$-DzaEhDqh}m6^aPj^5&w->^f@*F*VSRdieqifKaps{#Ep&! z`3PrGL}VfMQl{O^Jw7VjMY1p2V4El*LvAp4OGDEy9G5#owmK7Ak_YV09K5M?S z_VabC`s5E2vF$uxE@o^&z}f z)gqk;-rg}O#ihFUpkPQ#8h3VoKiBc9Tqe?$^Xci_0DP+&O6>`2*80-SANX~}Ix2yp zbMX$<3L8`NKvdFuSSjGU^O(Ard$}!+udnZ?*>Fat<|gk7P{uv7bUB)C%dwqAO+OK8 zhi6cAESOLHOPvpRF_+vg#rL3KY4!Q~5hO(P$uUo&t5;&sJ2r1PX+9PkQrvm@?50}& z%@brdJRoB1IY|IPu=Ea`eFD#T_9ufhh-MMa*~kE>%3$~)*hNI=O|>TJ3IPVmi-1a+qKK=kj3fPKcyTcOxQmuom8hOSgBiJ?5bi+|2tH36RB9b z5^gnIs~|mKrT3h(9Tw{eD0USG5p~QX4M(De!*O|XnLt7ojyvu*KvuZgO7PjRI{+Li z`PT+Au9!m#=Bj(2SQBz z{tkLJXJo($<-30n^fsOxuT!|66635na|ZM7-AT18%fsrs#}I(LC8GP)cw9@Cy1<;~ zZFv`;okAI3Tj}&W2K1k~O0mM97&+SC2AJ86wj0~eoDjO(_} zG!b%QIzs(Vvyp24o%9mxr)m|#mzC^wSV@@jfGV~RZ_>*C!2w`jUZI%K z;4km@(Z<#2*oU;e;n{E4ucX}#N%g0ve) zZ0EBG`_n0@DlO8h8ObookGlOIKTbX({1GS}_a zN{MYW`o7JS{#_Z|GtgN8^4mpx`4SlVR0Ew_1|3oO<(EmOB9a?FUbv0u>)pFCw(`Io zCJZTWyZY|=S_gB>&bFfVN906=wchJfP9c+czg+8s10SdPk`?gu#31jlBCg4rfG|Jn zZJtc*89Y^0RqghqC#ETNfgc4OG7}lIL&qyKfdDpa{hYKn)Q~z$#eW<02OwIlQ^|qG zjshTBGij3^q`R`gIE{^s7OUL`1to)ZZ^vpA9b_(Zl`>09a!=CHY2C6iqC*u8IE;s_ zkC=zXYp6xZCtq$M@)!oL#d{{j21fxptz4uO&9>9b_Jn`2$3f3tT$tgL8$radzpPLc z)Mq87k$nc%>T#DFxH$-;*76ITrrT0`@#ci9euT{O#dWfexFb?-{2~D|^9BGoWW|6hFHXTsVQur*3 zc+SJFaj8JPfX1x!8^>I`T$hwV1|#sN47c>^f|N_09n@V`Iyg*zXTrJ1_pl+d^f**t z+k`?YDsbe)72C})YvYh~N||&cFGBV_>#=rl+}*iG+0Pfi?{}#+2h#-N!(0?CX<+rd zp^wOpuBISbcgeP51%F^3i4!FS+!HuDYW{QvKPV5jD8EX;j=Xi%ZEL}_>XS(|r^)i~ zOTtEvf;RONQ|}gBh)I26zZjRWd~#(WxPBz-RD||6B8@kX%b>|;VZ>!Nn`FG_5;gM}O1dhZrIC4;R zTiL2FdyF(;BV;AN4UunDEE6MMKy8S2sgGHjf)E+Kvqf+jimwQL0NUfQ82*`*HWwlH zZMv1{IF1lFja%!JB>)?}N7G%w+AU*V8$fTdCd4xGb!7%&ktZiWDlWVj`evk-Pz|%A zfqp?RjrBc{N0y_(Z&Fj`*HjNgY9+O&HQDB8m!{-ID@7uWY`OVPRj?BgG;(v|Fm~?RgcyNvKYRoIur?aSU421>3$B{gAf6H zsXP$6uT7~ISVSJcSWttZjfP-J?4cDIFiROVhTKetjMbwD_A_Pb>COE>BX$w&KbSZ1 z;r-n}45BIk7vPSK@#suraUb#kABgb`LtlJsz?fCapO1x1Zvj#w5P{Sc5g7VP(xrIF8}+#JvgJk&{pt(tKq zX#O9QCjp|zMqN38T}|#DFwm7585L^ej;q)K zu*rT1nyl2YaXoaZ&*JWn*z9}K+({3CCADs?abzO#SkcQAwpfdfuI zqE2shzTI0*qcn@^F|MAh#s9jBH6siPeE7z0uQ5niQ3ef@`; zZ-IWZ=w2s0f=a}`40`J#pvlCC91(yW3#OA* zQX&WG*p%1eyLay-uS8@W*|aPJ*ePc?lO7fi$_(0#G{12fs~@hqP7DkQTYY_sH7E~& zO0!t15+3>hm#SiIqI_NccJ*B>c?~$>iG`|gK^XmmS7K44{9grxE0gMs5r^-`WtTgT~aNq4+ zfNb7vRYI%>_*cqce309F9?}l_E&kWvKY&byuVTgjv9fbO8Z5);xeug4JvJ+g1DHz| z=b(4H!Smi9!W01$RH852VA%^|;<}(4Sug+m*gqvJk$h+xcH}L(0Cx=k+AWLqcOYq) zo}Rv5@EI8w7k38lZ1~}FJq94G^Xl2jgUDbEEQ{Ig_$AQWvp=QBS+Gy8TlkV#;>qU# znnxH6{>I8Z=-UIn5$@|Ci)DJO5m>Z>z{<%3Lj|MZ0y8%}db^i`f+ci75kQjz?*VZ8 zIF1UioCbzG?O4x{BnsF^_84*PkOTkK5ReDd0i4JC9(q*RDv;#vNK&!`ib(=KDzuqq z9ukQY%8EvFnXq~Vdh@X3~Oi01Yrr#KW2UY$KUh-d^AajsFe%=%JFL80lvAFf!%}avh zo1L%d+<|oAj%glZ@qw)Uw|J*AW&Duf)jfRUWuSWoCZa)m5LOV8@_>!!H5M)$ESb0l z4gvO{`q$n%VG58S86gM{8yH~>K#IeoE&?p$9$%6n^DJa#dPFd?LB!TP-H_zHzhRJM z0tE_xQ2`pF_J=+`2QPoeC}y}%5Dz2BL{{9SI5ayRCLqAc5fVwp#!vFd@>h5S+5lpX z4T&oKyN(@@1OPbxWBEtv4c@~91;KBABM$3t2g?Bu9i+@ZZ^9A) literal 0 HcmV?d00001 diff --git a/docs/docs/concepts/memory.md b/docs/docs/concepts/memory.md index 2cfeec233..1151a1178 100644 --- a/docs/docs/concepts/memory.md +++ b/docs/docs/concepts/memory.md @@ -160,7 +160,9 @@ config = {"configurable": {"thread_id": "1"}} graph.get_state(config) ``` -Persistence is critical sustaining a long-running chat sessions. For example, a chat between a user and an AI assistant may have interruptions. Persistence ensures that a user can continue that particular chat session at any later point in time. However, what happens if a user initiates a new chat session with an assistant? This spawns a new thread, and the information from the previous session (thread) is not retained. This motivates the need for a memory service that can maintain data across chat sessions (threads). +Persistence is critical sustaining a long-running chat sessions. For example, a chat between a user and an AI assistant may have interruptions. Persistence ensures that a user can continue that particular chat session at any later point in time. However, what happens if a user initiates a new chat session with an assistant? This spawns a new thread, and the information from the previous session (thread) is not retained. This motivates the need for a memory that can maintain data across chat sessions (threads). + +For this, we can use LangGraph's `Store` interface to save and retrieve information namespaced across threads. This information can be namespaced by, for example, `user_id` to retain user-specific information across threads. See more detail in the [persistence conceptual guide](https://langchain-ai.github.io/langgraph/concepts/persistence/#persistence) and this [how-to guide on shared state](../how-tos/memory/shared-state.ipynb). ## Meta-prompting diff --git a/docs/docs/concepts/persistence.md b/docs/docs/concepts/persistence.md index 4dc7af632..44d13b7f4 100644 --- a/docs/docs/concepts/persistence.md +++ b/docs/docs/concepts/persistence.md @@ -216,6 +216,69 @@ The final thing you can optionally specify when calling `update_state` is `as_no ![Update](img/persistence/checkpoints_full_story.jpg) +## Memory Store + +![Update](img/persistence/shared_state.png) + +A state schema specifies a set of keys / channels that are populated as a graph is executed and written by a checkpointer to a thread at each graph step. Persistence of this state is scoped to a particular thread ID. + +But, what if we want to retrain some information *across threads*? Consider the case of a chatbot where we want to retain specific information at the user level, across all threads (e.g., chat conversations) with that user! + +We can do this with the `Store` interface. Below, we specify the `InMemoryStore`, which we pass when compiling the graph and allows each node in the graph to access it. + +We want to store memories for each user, so we namespace the memories with `("memories", )`. The `` is specified when we invoke the graph and is scoped to the lifetime of the graph invocation. + +```python +from langgraph.checkpoint.memory import MemorySaver +from langgraph.store.memory import InMemoryStore + +# This is the in memory checkpointer we will use +# We need this because we want to enable threads (conversations) +checkpointer = MemorySaver() + +# This is the in memory store needed to save the memories (i.e. user preferences) across threads +in_memory_store = InMemoryStore() + +def call_model(state: MessagesState, config: RunnableConfig, *, store: BaseStore): + + # Get the user id from the config + user_id = config["configurable"]["user_id"] + + # Get the memories for the user from the store + memories = store.search(("memories", user_id)) + + # ... Use memories in the model call + +def update_memory(state: MessagesState, config: RunnableConfig, *, store: BaseStore): + + # Get the user id from the config + user_id = config["configurable"]["user_id"] + + # Create a new memory ID + memory_id = str(uuid.uuid4()) + + # ... Analyze conversation and create a new memory + + # We create a new memory from this tool call + store.put(("memories", user_id), memory_id, { + "memory": memory, + }) + +# Compile the graph with the checkpointer and store +graph = graph.compile(checkpointer=checkpointer, store=in_memory_store) + +# Invoke the graph +config = {"configurable": {"thread_id": "1", "user_id": "1"}} + +# First let's just say hi to the AI +for update in graph.stream( + {"messages": [{"role": "user", "content": "hi"}]}, config, stream_mode="updates" +): + print(update) +``` + +See our [how-to guide on shared state](../how-tos/memory/shared-state.ipynb) for a detailed example!. + ## Checkpointer libraries Under the hood, checkpointing is powered by checkpointer objects that conform to [BaseCheckpointSaver][langgraph.checkpoint.base.BaseCheckpointSaver] interface. LangGraph provides several checkpointer implementations, all implemented via standalone, installable libraries: From 02533a996a4022389389cd41d6690a602e2dc527 Mon Sep 17 00:00:00 2001 From: Lance Martin Date: Tue, 1 Oct 2024 20:18:37 -0700 Subject: [PATCH 02/21] Minor updates --- .../{shared-state.png => shared_state.png} | Bin docs/docs/concepts/memory.md | 2 +- docs/docs/concepts/persistence.md | 79 +++++++++++++----- 3 files changed, 59 insertions(+), 22 deletions(-) rename docs/docs/concepts/img/persistence/{shared-state.png => shared_state.png} (100%) diff --git a/docs/docs/concepts/img/persistence/shared-state.png b/docs/docs/concepts/img/persistence/shared_state.png similarity index 100% rename from docs/docs/concepts/img/persistence/shared-state.png rename to docs/docs/concepts/img/persistence/shared_state.png diff --git a/docs/docs/concepts/memory.md b/docs/docs/concepts/memory.md index 1151a1178..c63e17198 100644 --- a/docs/docs/concepts/memory.md +++ b/docs/docs/concepts/memory.md @@ -162,7 +162,7 @@ graph.get_state(config) Persistence is critical sustaining a long-running chat sessions. For example, a chat between a user and an AI assistant may have interruptions. Persistence ensures that a user can continue that particular chat session at any later point in time. However, what happens if a user initiates a new chat session with an assistant? This spawns a new thread, and the information from the previous session (thread) is not retained. This motivates the need for a memory that can maintain data across chat sessions (threads). -For this, we can use LangGraph's `Store` interface to save and retrieve information namespaced across threads. This information can be namespaced by, for example, `user_id` to retain user-specific information across threads. See more detail in the [persistence conceptual guide](https://langchain-ai.github.io/langgraph/concepts/persistence/#persistence) and this [how-to guide on shared state](../how-tos/memory/shared-state.ipynb). +For this, we can use LangGraph's `Store` interface to save and retrieve information across threads. Shared information can be namespaced by, for example, `user_id` to retain user-specific information across threads. See more detail in the [persistence conceptual guide](https://langchain-ai.github.io/langgraph/concepts/persistence/#persistence) and this [how-to guide on shared state](../how-tos/memory/shared-state.ipynb). ## Meta-prompting diff --git a/docs/docs/concepts/persistence.md b/docs/docs/concepts/persistence.md index 44d13b7f4..fca6655c6 100644 --- a/docs/docs/concepts/persistence.md +++ b/docs/docs/concepts/persistence.md @@ -220,35 +220,46 @@ The final thing you can optionally specify when calling `update_state` is `as_no ![Update](img/persistence/shared_state.png) -A state schema specifies a set of keys / channels that are populated as a graph is executed and written by a checkpointer to a thread at each graph step. Persistence of this state is scoped to a particular thread ID. +A state schema specifies a set of keys / channels that are populated as a graph is executed. As discussed above, state can be written by a checkpointer to a thread at each graph step, enabling state persistence. -But, what if we want to retrain some information *across threads*? Consider the case of a chatbot where we want to retain specific information at the user level, across all threads (e.g., chat conversations) with that user! +But, what if we want to retrain some information *across threads*? Consider the case of a chatbot where we want to retain specific information about the user across *all* chat conversations (e.g., threads) with that user! -We can do this with the `Store` interface. Below, we specify the `InMemoryStore`, which we pass when compiling the graph and allows each node in the graph to access it. - -We want to store memories for each user, so we namespace the memories with `("memories", )`. The `` is specified when we invoke the graph and is scoped to the lifetime of the graph invocation. +With checkpointers alone, we cannot share information across threads. This motivates the need for the `Store` interface. As an illustration, we can define an `InMemoryStore` to store information about a user across threads. We simply compile our graph with a checkpointer, as before, and will our new in_memory_store. ```python from langgraph.checkpoint.memory import MemorySaver from langgraph.store.memory import InMemoryStore -# This is the in memory checkpointer we will use # We need this because we want to enable threads (conversations) checkpointer = MemorySaver() # This is the in memory store needed to save the memories (i.e. user preferences) across threads in_memory_store = InMemoryStore() -def call_model(state: MessagesState, config: RunnableConfig, *, store: BaseStore): - - # Get the user id from the config - user_id = config["configurable"]["user_id"] - - # Get the memories for the user from the store - memories = store.search(("memories", user_id)) - - # ... Use memories in the model call +# ... Define the graph ... + +# Compile the graph with the checkpointer and store +graph = graph.compile(checkpointer=checkpointer, store=in_memory_store) +``` + +Now, let's assume that we want to store memories for each user. We invoke the graph with a `thread_id`, as before, and also with a `user_id`, which we'll use to namespace our memories to this particular user. + +```python +# Invoke the graph +config = {"configurable": {"thread_id": "1", "user_id": "1"}} + +# First let's just say hi to the AI +for update in graph.stream( + {"messages": [{"role": "user", "content": "hi"}]}, config, stream_mode="updates" +): + print(update) +``` + +Our memory store is accessible in *any node*. We simply pass `store: BaseStore` to the node as an argument and we can access the store from there. We can write to it using `store.put`. We want to write memories associated with the user, which is specified by `user_id` in the config. + +Each memory is namespaced by a `tuple`, which in our case will be `("memories", )`. And we call `store.put` with a key, value pair. The key is UUID for the memory the value is a dictionary with whatever we want to store. +```python def update_memory(state: MessagesState, config: RunnableConfig, *, store: BaseStore): # Get the user id from the config @@ -259,24 +270,50 @@ def update_memory(state: MessagesState, config: RunnableConfig, *, store: BaseSt # ... Analyze conversation and create a new memory - # We create a new memory from this tool call + # We create a new memory store.put(("memories", user_id), memory_id, { "memory": memory, }) -# Compile the graph with the checkpointer and store -graph = graph.compile(checkpointer=checkpointer, store=in_memory_store) +``` +So we've written memories namespaced to `("memories", )`. We can read them back using `store.search`, which will return all memories for a given user as a list. + +```python +def call_model(state: MessagesState, config: RunnableConfig, *, store: BaseStore): + + # Get the user id from the config + user_id = config["configurable"]["user_id"] + + # Get the memories for the user from the store + memories = store.search(("memories", user_id)) + info = "\n".join([d.value["memory"] for d in memories]) + + # ... Use memories in the model call +``` + +If we create a new thread, we can still access the same memories so long as the user_id is the same. + +```python # Invoke the graph -config = {"configurable": {"thread_id": "1", "user_id": "1"}} +config = {"configurable": {"thread_id": "2", "user_id": "1"}} -# First let's just say hi to the AI +# Let's say hi again for update in graph.stream( - {"messages": [{"role": "user", "content": "hi"}]}, config, stream_mode="updates" + {"messages": [{"role": "user", "content": "hi, tell me about my memories"}]}, config, stream_mode="updates" ): print(update) ``` +In addition, we can always access the store outside of the graph execution. + +```python +for memory in in_memory_store.search(("memories", "1")): + print(memory.value) +``` + +When we use the LangGraph API, either locally (e.g., in LangGraph Studio) or with LangGraph Cloud, the memory store is available to use by default and does not need to be specified during graph compilation. + See our [how-to guide on shared state](../how-tos/memory/shared-state.ipynb) for a detailed example!. ## Checkpointer libraries From 0460aeec4166980c68eb943a12defaa2c55f0ada Mon Sep 17 00:00:00 2001 From: Lance Martin Date: Wed, 2 Oct 2024 10:57:44 -0700 Subject: [PATCH 03/21] Address comments --- docs/docs/concepts/memory.md | 70 ++++++++++++++++++++++++- docs/docs/concepts/persistence.md | 85 +++++++++++++++++++++---------- 2 files changed, 127 insertions(+), 28 deletions(-) diff --git a/docs/docs/concepts/memory.md b/docs/docs/concepts/memory.md index c63e17198..325b7fb2b 100644 --- a/docs/docs/concepts/memory.md +++ b/docs/docs/concepts/memory.md @@ -162,9 +162,75 @@ graph.get_state(config) Persistence is critical sustaining a long-running chat sessions. For example, a chat between a user and an AI assistant may have interruptions. Persistence ensures that a user can continue that particular chat session at any later point in time. However, what happens if a user initiates a new chat session with an assistant? This spawns a new thread, and the information from the previous session (thread) is not retained. This motivates the need for a memory that can maintain data across chat sessions (threads). -For this, we can use LangGraph's `Store` interface to save and retrieve information across threads. Shared information can be namespaced by, for example, `user_id` to retain user-specific information across threads. See more detail in the [persistence conceptual guide](https://langchain-ai.github.io/langgraph/concepts/persistence/#persistence) and this [how-to guide on shared state](../how-tos/memory/shared-state.ipynb). +For this, we can use LangGraph's `Store` interface to save and retrieve information across threads. Shared information can be namespaced by, for example, `user_id` to retain user-specific information across threads. Let's show how to use the `Store` interface to save and retrieve information. -## Meta-prompting +```python +from langgraph.store.memory import InMemoryStore +in_memory_store = InMemoryStore() + +# Namespace for memories +user_id = "1" +namespace_for_memory = (user_id, "memories") + +# Save memories +memory_id = str(uuid.uuid4()) +memory = {"food_preference" : "I like pizza"} +in_memory_store.put(namespace_for_memory, memory_id, memory) + +# Retrieve memories +memories = in_memory_store.search(namespace_for_memory) +memories[-1].dict() +{'value': {'food_preference': 'I like pizza'}, + 'key': '07e0caf4-1631-47b7-b15f-65515d4c1843', + 'namespace': ['1', 'memories'], + 'created_at': '2024-10-02T17:22:31.590602+00:00', + 'updated_at': '2024-10-02T17:22:31.590605+00:00'} +``` + +The `store` can be used in LangGraph to save or retrieve memories in any graph node. The compile the graph with a checkpointer and store. + +```python +# Compile the graph with the checkpointer and store +graph = graph.compile(checkpointer=checkpointer, store=in_memory_store) + +# Invoke the graph +user_id = "1" +config = {"configurable": {"thread_id": "1", "user_id": user_id}} + +# First let's just say hi to the AI +for update in graph.stream( + {"messages": [{"role": "user", "content": "hi"}]}, config, stream_mode="updates" +): + print(update) +``` + +Then, we can access the store in any node of the graph by passing `store: BaseStore` as a node argument. + +```python +def update_memory(state: MessagesState, config: RunnableConfig, *, store: BaseStore): + + # Get the user id from the config + user_id = config["configurable"]["user_id"] + + # Namespace the memory + namespace = (user_id, "memories") + + # ... Analyze conversation and create a new memory + + # Create a new memory ID + memory_id = str(uuid.uuid4()) + + # We create a new memory + store.put(namespace, memory_id, {"memory": memory}) +``` + +Anything saved to the store persists across graph executions (threads), allowing for information, such as user preferences or information, to be retained across threads. + +The store is also built into the LangGraph API, making it accessible when using LangGraph Studio locally or when deploying to the LangGraph Cloud. + +See more detail in the [persistence conceptual guide](https://langchain-ai.github.io/langgraph/concepts/persistence/#persistence) and this [how-to guide on shared state](../how-tos/memory/shared-state.ipynb). + +## Update own instructions Meta-prompting uses an LLM to generate or refine its own prompts or instructions. This approach allows the system to dynamically update and improve its own behavior, potentially leading to better performance on various tasks. This is particularly useful for tasks where the instructions are challenging to specify a priori. diff --git a/docs/docs/concepts/persistence.md b/docs/docs/concepts/persistence.md index fca6655c6..2c6f54cf1 100644 --- a/docs/docs/concepts/persistence.md +++ b/docs/docs/concepts/persistence.md @@ -225,28 +225,60 @@ A state schema specifies a set of keys / channels that are populated as a graph But, what if we want to retrain some information *across threads*? Consider the case of a chatbot where we want to retain specific information about the user across *all* chat conversations (e.g., threads) with that user! With checkpointers alone, we cannot share information across threads. This motivates the need for the `Store` interface. As an illustration, we can define an `InMemoryStore` to store information about a user across threads. We simply compile our graph with a checkpointer, as before, and will our new in_memory_store. +First, let's showcase this in isolation without using LangGraph. ```python -from langgraph.checkpoint.memory import MemorySaver from langgraph.store.memory import InMemoryStore +in_memory_store = InMemoryStore() +``` + +Memories are namespaced by a `tuple`, which in our case will be `(, "memories")`. We can think about this namespace as a directory, where each `user_id` can have various sub-directories of things that we want to store (e.g., `memories`, `preferences`, etc.). + +```python +user_id = "1" +namespace_for_memory = (user_id, "memories") +``` + +We use the `store.put` to save memories to our namespace in the store. When we do this, we specify the namespace, as defined above, and a key-value pair for the memory: the key is simply a unique identifier for the memory (`memory_id`) and the value (a dictionary) is the memory itself. + +```python +memory_id = str(uuid.uuid4()) +memory = {"food_preference" : "I like pizza"} +in_memory_store.put(namespace_for_memory, memory_id, memory) +``` + +We can read out memories in our namespace using `store.search`, which will return all memories for a given user as a list. The most recent memory is the last in the list. + +```python +memories = in_memory_store.search(namespace_for_memory) +memories[-1].dict() +{'value': {'food_preference': 'I like pizza'}, + 'key': '07e0caf4-1631-47b7-b15f-65515d4c1843', + 'namespace': ['1', 'memories'], + 'created_at': '2024-10-02T17:22:31.590602+00:00', + 'updated_at': '2024-10-02T17:22:31.590605+00:00'} +``` + +With this all in place, we use the `in_memory_store` in LangGraph. The `in_memory_store` works hand-in-hand with the checkpointer: the checkpointer saves state to threads, as discussed above, and the the `in_memory_store` allows us to store arbitrary information for access *across* threads. We compile the graph with both the checkpointer and the `in_memory_store` as follows. + +```python +from langgraph.checkpoint.memory import MemorySaver # We need this because we want to enable threads (conversations) checkpointer = MemorySaver() -# This is the in memory store needed to save the memories (i.e. user preferences) across threads -in_memory_store = InMemoryStore() - # ... Define the graph ... # Compile the graph with the checkpointer and store graph = graph.compile(checkpointer=checkpointer, store=in_memory_store) ``` -Now, let's assume that we want to store memories for each user. We invoke the graph with a `thread_id`, as before, and also with a `user_id`, which we'll use to namespace our memories to this particular user. + We invoke the graph with a `thread_id`, as before, and also with a `user_id`, which we'll use to namespace our memories to this particular user as we showed above. ```python # Invoke the graph -config = {"configurable": {"thread_id": "1", "user_id": "1"}} +user_id = "1" +config = {"configurable": {"thread_id": "1", "user_id": user_id}} # First let's just say hi to the AI for update in graph.stream( @@ -255,9 +287,7 @@ for update in graph.stream( print(update) ``` -Our memory store is accessible in *any node*. We simply pass `store: BaseStore` to the node as an argument and we can access the store from there. We can write to it using `store.put`. We want to write memories associated with the user, which is specified by `user_id` in the config. - -Each memory is namespaced by a `tuple`, which in our case will be `("memories", )`. And we call `store.put` with a key, value pair. The key is UUID for the memory the value is a dictionary with whatever we want to store. +We can access the `in_memory_store` and the `user_id` in *any node* by passing `store: BaseStore` and `config: RunnableConfig` as node arguments. Just as we saw above, simply use the `put` method to save memories to the store. ```python def update_memory(state: MessagesState, config: RunnableConfig, *, store: BaseStore): @@ -265,19 +295,31 @@ def update_memory(state: MessagesState, config: RunnableConfig, *, store: BaseSt # Get the user id from the config user_id = config["configurable"]["user_id"] - # Create a new memory ID - memory_id = str(uuid.uuid4()) + # Namespace the memory + namespace = (user_id, "memories") # ... Analyze conversation and create a new memory + # Create a new memory ID + memory_id = str(uuid.uuid4()) + # We create a new memory - store.put(("memories", user_id), memory_id, { - "memory": memory, - }) + store.put(namespace, memory_id, {"memory": memory}) ``` -So we've written memories namespaced to `("memories", )`. We can read them back using `store.search`, which will return all memories for a given user as a list. +As we showed above, we can also access the store in any node and use `search` to get memories. Recall the the memories are returned as a list, with each object being a dictionary with the `key` (memory_id) and `value` (the memory itself) along with some metadata. + +```python +memories[-1].dict() +{'value': {'food_preference': 'I like pizza'}, + 'key': '07e0caf4-1631-47b7-b15f-65515d4c1843', + 'namespace': ['1', 'memories'], + 'created_at': '2024-10-02T17:22:31.590602+00:00', + 'updated_at': '2024-10-02T17:22:31.590605+00:00'} +``` + +We can access the memories and use them in our model call. ```python def call_model(state: MessagesState, config: RunnableConfig, *, store: BaseStore): @@ -292,7 +334,7 @@ def call_model(state: MessagesState, config: RunnableConfig, *, store: BaseStore # ... Use memories in the model call ``` -If we create a new thread, we can still access the same memories so long as the user_id is the same. +If we create a new thread, we can still access the same memories so long as the `user_id` is the same. ```python # Invoke the graph @@ -305,16 +347,7 @@ for update in graph.stream( print(update) ``` -In addition, we can always access the store outside of the graph execution. - -```python -for memory in in_memory_store.search(("memories", "1")): - print(memory.value) -``` - -When we use the LangGraph API, either locally (e.g., in LangGraph Studio) or with LangGraph Cloud, the memory store is available to use by default and does not need to be specified during graph compilation. - -See our [how-to guide on shared state](../how-tos/memory/shared-state.ipynb) for a detailed example!. +When we use the LangGraph API, either locally (e.g., in LangGraph Studio) or with LangGraph Cloud, the memory store is available to use by default and does not need to be specified during graph compilation. See our [how-to guide on shared state](../how-tos/memory/shared-state.ipynb) for a detailed example!. ## Checkpointer libraries From ff54dcc6f83c343a050b4a56d80ee77a9bc88d20 Mon Sep 17 00:00:00 2001 From: Harrison Chase Date: Wed, 2 Oct 2024 18:45:14 -0700 Subject: [PATCH 04/21] cr --- docs/docs/concepts/memory.md | 139 +++++++++++++----------------- docs/docs/concepts/persistence.md | 19 ++-- 2 files changed, 72 insertions(+), 86 deletions(-) diff --git a/docs/docs/concepts/memory.md b/docs/docs/concepts/memory.md index 325b7fb2b..e47fed390 100644 --- a/docs/docs/concepts/memory.md +++ b/docs/docs/concepts/memory.md @@ -7,11 +7,11 @@ Memory in the context of LLMs and AI applications refers to the ability to proce - Managing what messages (e.g., from a long message history) are sent to a chat model to limit token usage - Summarizing past conversations to give a chat model context from prior interactions - Selecting few shot examples (e.g., from a dataset) to guide model responses -- Maintaining persistent data (e.g., user preferences) across multiple chat sessions -- Allowing an LLM to update its own prompt using past information (e.g., meta-prompting) -- Retrieving information relevant to a conversation or question from a long-term storage system +- "Long term memory" - e.g. memory that persists across a thread +- Allowing an LLM to update its own prompt using past information +- Extract specific information from previous interactions -Below, we'll discuss each of these examples in some detail. +Below, we'll discuss each of these examples in some detail. ## Managing Messages @@ -142,102 +142,79 @@ If few-shot examples are stored in a [LangSmith Dataset](https://docs.smith.lang See this how-to [video](https://www.youtube.com/watch?v=37VaU7e7t5o) for example usage of dynamic few-shot example selection in LangSmith. Also, see this [blog post](https://blog.langchain.dev/few-shot-prompting-to-improve-tool-calling-performance/) showcasing few-shot prompting to improve tool calling performance and this [blog post](https://blog.langchain.dev/aligning-llm-as-a-judge-with-human-preferences/) using few-shot example to align an LLMs to human preferences. -## Maintaining Data Across Chat Sessions +## Long term memory -LangGraph's [persistence layer](https://langchain-ai.github.io/langgraph/concepts/persistence/#persistence) has checkpointers that utilize various storage systems, including an in-memory key-value store or different databases. These checkpoints capture the graph state at each execution step and accumulate in a thread, which can be accessed at a later time using a thread ID to resume a previous graph execution. We add persistence to our graph by passing a checkpointer to the `compile` method, as shown here. +LangGraph's [persistence layer](persistence.md#persistence) has checkpointers that enable [thread](persistence.md#threads)-level memory. There are several situations in which you want to enable memory *between* threads. For this we can use LangGraph's [Store](persistence.md#memory-store). This enables "long term memory". -```python -# Compile the graph with a checkpointer -checkpointer = MemorySaver() -graph = workflow.compile(checkpointer=checkpointer) +The `Store` interface is a very low level interface on top of well-known data structures. The interesting part of "long term memory" in LangGraph is not any particular novel data structures, but how you populate and use these datastructures. We've seen that both **what** you may want to save (the shape of the data) and **how** you use this data is often very application specific. We highlight a few interesting use cases below. In general, we believe more in giving developers tools and resources to build out memory pipelines themselves, rather than an opiononated memory service. -# Invoke the graph with a thread ID -config = {"configurable": {"thread_id": "1"}} -graph.invoke(input_state, config) +We've noticed two ways that users implement memory. One is to update memory "in the hot path" of the application. The other is to update it as a background job (or by using a service). -# get the latest state snapshot at a later time -config = {"configurable": {"thread_id": "1"}} -graph.get_state(config) -``` +### Updating memory in the hot path -Persistence is critical sustaining a long-running chat sessions. For example, a chat between a user and an AI assistant may have interruptions. Persistence ensures that a user can continue that particular chat session at any later point in time. However, what happens if a user initiates a new chat session with an assistant? This spawns a new thread, and the information from the previous session (thread) is not retained. This motivates the need for a memory that can maintain data across chat sessions (threads). +This involves updating memory while the application is running. A concrete example of this is the way that ChatGPT does memory. ChatGPT can call tools to update or save a new memory, and it does that and then responds to the user. -For this, we can use LangGraph's `Store` interface to save and retrieve information across threads. Shared information can be namespaced by, for example, `user_id` to retain user-specific information across threads. Let's show how to use the `Store` interface to save and retrieve information. +This has several benefits. First of all, it happens realtime, so if the user starts a new thread right away that memory will be present. It also makes it possible to show the user that memory has been updated, and so can be a bit more transparent that way. -```python -from langgraph.store.memory import InMemoryStore -in_memory_store = InMemoryStore() - -# Namespace for memories -user_id = "1" -namespace_for_memory = (user_id, "memories") - -# Save memories -memory_id = str(uuid.uuid4()) -memory = {"food_preference" : "I like pizza"} -in_memory_store.put(namespace_for_memory, memory_id, memory) - -# Retrieve memories -memories = in_memory_store.search(namespace_for_memory) -memories[-1].dict() -{'value': {'food_preference': 'I like pizza'}, - 'key': '07e0caf4-1631-47b7-b15f-65515d4c1843', - 'namespace': ['1', 'memories'], - 'created_at': '2024-10-02T17:22:31.590602+00:00', - 'updated_at': '2024-10-02T17:22:31.590605+00:00'} -``` +This also has several downsides. It may slow down the final response since it needs to decide what to remember. It also means your application not only needs to think about the application logic, but also what to remember (which could result in more complicated instructions to the LLM). + +### Updating memory as a background job + +This involves updating memory as a completely separate process from your application. This can either be done as some of background job that you write, or by utilizing a separate memory service. This involves triggering some run over a conversation after it has finished to updated memory. -The `store` can be used in LangGraph to save or retrieve memories in any graph node. The compile the graph with a checkpointer and store. +This has some benefits. It's a completely separate process from your application, so generally incurs no latency. It also splits up the application logic from the memory logic, making it more modular and easy to manage. + +This also has several downsides. It may not happen realtime, so users will not immediately see memory updated. You also have to think more about when to trigger this job - how do you know a conversation is finished? +## Update own instructions + +This is an example of long term memory. + +"Reflection" or "Meta-prompting" steps can use an LLM to generate or refine its own prompts or instructions. This approach allows the system to dynamically update and improve its own behavior, potentially leading to better performance on various tasks. This is particularly useful for tasks where the instructions are challenging to specify a priori. + +Meta-prompting can use past information to update the prompt. As an example, this [Tweet generator](https://www.youtube.com/watch?v=Vn8A3BxfplE) uses meta-prompting to iteratively improve the summarization prompt used to generate high quality paper summaries for Twitter. In this case, we used a LangSmith dataset to house several papers that we wanted to summarize, generated summaries using a naive summarization prompt, manually reviewed the summaries, captured feedback from human review using the LangSmith Annotation Queue, and passed this feedback to a chat model to re-generate the summarization prompt. The process was repeated in a loop until the summaries met our criteria in human review. + +This will utilize the memory store concept above to store the updated instructions in a shared namespace. This namespace will have only a single item (unless you want to update instructions specific for each user, but that's a separate issue). This will look something like: ```python -# Compile the graph with the checkpointer and store -graph = graph.compile(checkpointer=checkpointer, store=in_memory_store) - -# Invoke the graph -user_id = "1" -config = {"configurable": {"thread_id": "1", "user_id": user_id}} - -# First let's just say hi to the AI -for update in graph.stream( - {"messages": [{"role": "user", "content": "hi"}]}, config, stream_mode="updates" -): - print(update) +# Node that *uses* the instructions +def call_model(state: State, store: BaseStore): + instructions = store.search(("instructions",))[0] + # Application logic + prompt = prompt_template.format(instructions=instructions.value["instructions"]) + ... + + +# Node that updates instructions +def update_instructions(state: State, store: BaseStore): + current_instructions = store.search(("instructions",))[0] + # Memory logic + prompt = prompt_template.format(instructions=instructions.value["instructions"], conversation=state["messages"]) + output = llm.invoke(prompt) + new_instructions = output['new_instructions'] + store.put(("instructions",), current_instructions.key, {"instructions": new_instructions}) + ... ``` -Then, we can access the store in any node of the graph by passing `store: BaseStore` as a node argument. +## Remember specific information -```python -def update_memory(state: MessagesState, config: RunnableConfig, *, store: BaseStore): - - # Get the user id from the config - user_id = config["configurable"]["user_id"] - - # Namespace the memory - namespace = (user_id, "memories") - - # ... Analyze conversation and create a new memory - - # Create a new memory ID - memory_id = str(uuid.uuid4()) +A key part of long term memory is remembering specific information. We often see that the information that is best to remember is application specific. - # We create a new memory - store.put(namespace, memory_id, {"memory": memory}) -``` +A common pattern we see for remembering this information is to extract information from conversation history. The exact structure of what you extract is up to your application. For example, a coding assistant may want to remember what languages you are comfortable with, whether you like spaces or tabs, etc. A travel app may want to remember restaurants you like. -Anything saved to the store persists across graph executions (threads), allowing for information, such as user preferences or information, to be retained across threads. +One choice to make here is whether you extract a **list** of information, or rather you just continuously update a **single profile**. In the above example, the coding example is more of a "profile", while the travel app remembers a "list" of information. -The store is also built into the LangGraph API, making it accessible when using LangGraph Studio locally or when deploying to the LangGraph Cloud. - -See more detail in the [persistence conceptual guide](https://langchain-ai.github.io/langgraph/concepts/persistence/#persistence) and this [how-to guide on shared state](../how-tos/memory/shared-state.ipynb). +### Profile -## Update own instructions +The profile is generally just a JSON blob with various key-value pairs. When remembering a profile, you will want to make sure that you are **updating** the profile each time. As a result, you will want to pass in the previous profile and ask the LLM to generate a new profile (or some JSON patch to apply to the old profile). -Meta-prompting uses an LLM to generate or refine its own prompts or instructions. This approach allows the system to dynamically update and improve its own behavior, potentially leading to better performance on various tasks. This is particularly useful for tasks where the instructions are challenging to specify a priori. +If the profile is large, this can get tricky. You may need to split the profile into subsections and update each one individually. You also may need to fix errors if the LLM generates incorrect JSON. -Meta-prompting can use past information to update the prompt. As an example, this [Tweet generator](https://www.youtube.com/watch?v=Vn8A3BxfplE) uses meta-prompting to iteratively improve the summarization prompt used to generate high quality paper summaries for Twitter. In this case, we used a LangSmith dataset to house several papers that we wanted to summarize, generated summaries using a naive summarization prompt, manually reviewed the summaries, captured feedback from human review using the LangSmith Annotation Queue, and passed this feedback to a chat model to re-generate the summarization prompt. The process was repeated in a loop until the summaries met our criteria in human review. +### Lists + +Remember lists of information is easier in some ways, as the individual structures of each item is generally simpler and easier to generate. -## Retrieving relevant information from long-term storage +It is more complex overall, as you now have to enable the LLM to *delete* or *update* existing items in the list. This can be tricky to prompt the LLM to do. -A central challenge that spans many different memory use-case can be summarized simply: how can we retrieve *relevant information* from a long-term storage system and pass it to a chat model? As an example, assume we have a system that stores a large number of specific details about a user, but the user asks a specific question related to restaurant recommendations. It would be costly to trivially extract *all* personal user information and pass it to a chat model. Instead, we want to extract only the information that is most relevant to the user's current chat interaction (e,g,. food preferences, location, etc.) and pass it to the chat model. +You can choose to circumvent this problem entirely by just making this list of items append only, and not allowing updates. -There is a large body of work on retrieval that aims to address this challenge. See our tutorials focused on [RAG, or Retrieval Augmented Generation](https://langchain-ai.github.io/langgraph/tutorials/rag/langgraph_adaptive_rag/), our conceptual docs on [retrieval](https://python.langchain.com/docs/concepts/#retrieval), and our [open source repository](https://github.com/langchain-ai/rag-from-scratch) along with [videos](https://www.youtube.com/playlist?list=PLfaIDFEXuae2LXbO1_PKyVJiQ23ZztA0x) on this topic. +Another thing you will have take into account when working with lists is how to choose the relevant items to use. Right now we support filtering by metadata. We will be adding semantic search shortly. diff --git a/docs/docs/concepts/persistence.md b/docs/docs/concepts/persistence.md index 2c6f54cf1..bccffc648 100644 --- a/docs/docs/concepts/persistence.md +++ b/docs/docs/concepts/persistence.md @@ -220,11 +220,11 @@ The final thing you can optionally specify when calling `update_state` is `as_no ![Update](img/persistence/shared_state.png) -A state schema specifies a set of keys / channels that are populated as a graph is executed. As discussed above, state can be written by a checkpointer to a thread at each graph step, enabling state persistence. +A [state schema](low_level.md#schema) specifies a set of keys that are populated as a graph is executed. As discussed above, state can be written by a checkpointer to a thread at each graph step, enabling state persistence. But, what if we want to retrain some information *across threads*? Consider the case of a chatbot where we want to retain specific information about the user across *all* chat conversations (e.g., threads) with that user! -With checkpointers alone, we cannot share information across threads. This motivates the need for the `Store` interface. As an illustration, we can define an `InMemoryStore` to store information about a user across threads. We simply compile our graph with a checkpointer, as before, and will our new in_memory_store. +With checkpointers alone, we cannot share information across threads. This motivates the need for the `Store` interface. As an illustration, we can define an `InMemoryStore` to store information about a user across threads. We simply compile our graph with a checkpointer, as before, and will our new `in_memory_store`. First, let's showcase this in isolation without using LangGraph. ```python @@ -232,7 +232,7 @@ from langgraph.store.memory import InMemoryStore in_memory_store = InMemoryStore() ``` -Memories are namespaced by a `tuple`, which in our case will be `(, "memories")`. We can think about this namespace as a directory, where each `user_id` can have various sub-directories of things that we want to store (e.g., `memories`, `preferences`, etc.). +Memories are namespaced by a `tuple`, which in this specific example will be `(, "memories")`. The namespace can be any length and represent anything, does not have be user specific. ```python user_id = "1" @@ -259,6 +259,15 @@ memories[-1].dict() 'updated_at': '2024-10-02T17:22:31.590605+00:00'} ``` +Each memory type is a Python class with certain attributes. We can access it as a dictionary by converting via `.dict` as above. +The attributes it has are: + +- `value`: The value (itself a dictionary) of this memory +- `key`: The UUID for this memory in this namespace +- `namespace`: A list of strings, the namespace of this memory type +- `created_at`: Timestamp for when this memory was created +- `updated_at`: Timestamp for when this memory was updated + With this all in place, we use the `in_memory_store` in LangGraph. The `in_memory_store` works hand-in-hand with the checkpointer: the checkpointer saves state to threads, as discussed above, and the the `in_memory_store` allows us to store arbitrary information for access *across* threads. We compile the graph with both the checkpointer and the `in_memory_store` as follows. ```python @@ -273,7 +282,7 @@ checkpointer = MemorySaver() graph = graph.compile(checkpointer=checkpointer, store=in_memory_store) ``` - We invoke the graph with a `thread_id`, as before, and also with a `user_id`, which we'll use to namespace our memories to this particular user as we showed above. +We invoke the graph with a `thread_id`, as before, and also with a `user_id`, which we'll use to namespace our memories to this particular user as we showed above. ```python # Invoke the graph @@ -308,7 +317,7 @@ def update_memory(state: MessagesState, config: RunnableConfig, *, store: BaseSt ``` -As we showed above, we can also access the store in any node and use `search` to get memories. Recall the the memories are returned as a list, with each object being a dictionary with the `key` (memory_id) and `value` (the memory itself) along with some metadata. +As we showed above, we can also access the store in any node and use `search` to get memories. Recall the the memories are returned as a list of objects that can be converted to a dictionary. ```python memories[-1].dict() From 9c609d9237debb3ed85a66f96aeab5456c8827ff Mon Sep 17 00:00:00 2001 From: Harrison Chase Date: Sat, 5 Oct 2024 11:20:58 -0700 Subject: [PATCH 05/21] cr --- docs/docs/concepts/img/memory/filter.png | Bin 0 -> 20708 bytes .../img/memory/hot_path_vs_process.png | Bin 0 -> 62356 bytes .../concepts/img/memory/short-vs-long.png | Bin 0 -> 36564 bytes docs/docs/concepts/img/memory/summary.png | Bin 0 -> 28900 bytes .../img/memory/update-instructions.png | Bin 0 -> 44526 bytes docs/docs/concepts/img/memory/update-list.png | Bin 0 -> 43956 bytes .../concepts/img/memory/update-profile.png | Bin 0 -> 47390 bytes docs/docs/concepts/memory.md | 122 +++++++++++++----- 8 files changed, 89 insertions(+), 33 deletions(-) create mode 100644 docs/docs/concepts/img/memory/filter.png create mode 100644 docs/docs/concepts/img/memory/hot_path_vs_process.png create mode 100644 docs/docs/concepts/img/memory/short-vs-long.png create mode 100644 docs/docs/concepts/img/memory/summary.png create mode 100644 docs/docs/concepts/img/memory/update-instructions.png create mode 100644 docs/docs/concepts/img/memory/update-list.png create mode 100644 docs/docs/concepts/img/memory/update-profile.png diff --git a/docs/docs/concepts/img/memory/filter.png b/docs/docs/concepts/img/memory/filter.png new file mode 100644 index 0000000000000000000000000000000000000000..ed1bef4f6f5d1ae7d8324a6d2ea65ca22c160387 GIT binary patch literal 20708 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 Cee)s! literal 0 HcmV?d00001 diff --git a/docs/docs/concepts/img/memory/hot_path_vs_process.png b/docs/docs/concepts/img/memory/hot_path_vs_process.png new file mode 100644 index 0000000000000000000000000000000000000000..ac49a6a3b78c08c2dfb817a01bff8c0af9ad9039 GIT binary patch literal 62356 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 bjZ+EL%FDx$&n%26$Uj9{HJMUrlfeH24+VoP literal 0 HcmV?d00001 diff --git a/docs/docs/concepts/img/memory/short-vs-long.png b/docs/docs/concepts/img/memory/short-vs-long.png new file mode 100644 index 0000000000000000000000000000000000000000..08f731af1bff343828ba53bd8bf635cc8af6e012 GIT binary patch literal 36564 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 literal 0 HcmV?d00001 diff --git a/docs/docs/concepts/img/memory/update-instructions.png b/docs/docs/concepts/img/memory/update-instructions.png new file mode 100644 index 0000000000000000000000000000000000000000..6724e4eeba2de1ea0ebae2853b098609416b1550 GIT binary patch literal 44526 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 literal 0 HcmV?d00001 diff --git a/docs/docs/concepts/img/memory/update-profile.png b/docs/docs/concepts/img/memory/update-profile.png new file mode 100644 index 0000000000000000000000000000000000000000..5248a4af00b00931e3d2543c584403aef6568cbc GIT binary patch literal 47390 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 Date: Sat, 5 Oct 2024 11:27:51 -0700 Subject: [PATCH 06/21] cr --- .../concepts/img/memory/short-vs-long.png | Bin 36564 -> 41501 bytes docs/docs/concepts/memory.md | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/concepts/img/memory/short-vs-long.png b/docs/docs/concepts/img/memory/short-vs-long.png index 08f731af1bff343828ba53bd8bf635cc8af6e012..3dbd8fee155846db2388c2f407521b548648a2b5 100644 GIT binary patch literal 41501 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%0DJNgi9h)Pt&Df4S}JscQ{AGVP5@37Yyx8{ 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 VBZIU0$qZP)PXVqfTP|%B@L#8XB7pz^ literal 36564 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 Date: Sat, 5 Oct 2024 12:37:45 -0700 Subject: [PATCH 07/21] cr --- docs/docs/concepts/memory.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/docs/concepts/memory.md b/docs/docs/concepts/memory.md index 1f1a6aa34..4cf23c9b6 100644 --- a/docs/docs/concepts/memory.md +++ b/docs/docs/concepts/memory.md @@ -169,7 +169,7 @@ Still, there are several patterns you should be thinking about when implementing **Do you want to update memory "in the hot path" or "as a separate process"** Memory can be updated either as part of the application logic (e.g. "in the hot path" of the application) or as a separate process. -There are pros and cons to each approach, we document them in [this section](#-in-the-hot-path--vs--as-a-separate-process-) +There are pros and cons to each approach, we document them in [this section](#how-to-update-memory) **Update own instructions** @@ -196,7 +196,9 @@ You can then pull these raw interactions into the prompt as few-shot examples in We dive into this more in [this section](#few-shot-examples) -### "In the hot path" vs "As a separate process" +### How to update memory + +There are two main ways to update memory: "in the hot path" and "as a separate process". ![](img/memory/hot_path_vs_process.png) From 97029b0936d06d4564be312b846907d5d1f7a83f Mon Sep 17 00:00:00 2001 From: Harrison Chase Date: Sat, 5 Oct 2024 13:11:01 -0700 Subject: [PATCH 08/21] cr --- docs/docs/concepts/persistence.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/concepts/persistence.md b/docs/docs/concepts/persistence.md index bccffc648..7bdb2f5da 100644 --- a/docs/docs/concepts/persistence.md +++ b/docs/docs/concepts/persistence.md @@ -356,7 +356,7 @@ for update in graph.stream( print(update) ``` -When we use the LangGraph API, either locally (e.g., in LangGraph Studio) or with LangGraph Cloud, the memory store is available to use by default and does not need to be specified during graph compilation. See our [how-to guide on shared state](../how-tos/memory/shared-state.ipynb) for a detailed example!. +When we use the LangGraph API, either locally (e.g., in LangGraph Studio) or with LangGraph Cloud, the memory store is available to use by default and does not need to be specified during graph compilation. ## Checkpointer libraries From 4df8291d3499f0efab3732dd892ab3d91624b8d6 Mon Sep 17 00:00:00 2001 From: Harrison Chase Date: Mon, 7 Oct 2024 08:23:06 -0700 Subject: [PATCH 09/21] cr --- .../img/memory/hot_path_vs_background.png | Bin 0 -> 60391 bytes .../concepts/img/memory/hot_path_vs_process.png | Bin 62356 -> 0 bytes docs/docs/concepts/memory.md | 10 +++++----- 3 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 docs/docs/concepts/img/memory/hot_path_vs_background.png delete mode 100644 docs/docs/concepts/img/memory/hot_path_vs_process.png diff --git a/docs/docs/concepts/img/memory/hot_path_vs_background.png b/docs/docs/concepts/img/memory/hot_path_vs_background.png new file mode 100644 index 0000000000000000000000000000000000000000..4f4d66b3ab5a57a81eaaa40f4bfd470fc13ac33b GIT binary patch literal 60391 zcmb4rbzBwO7cU$RaR7-!igb61bc2+1Bi-HIDIwj`AV`XYbhk)@(v5VdG;i?UU)}fq zd3@$@hMB!*@4fcQ?^;8IqP*lYWCCOu7?@|$QsT-mFmN(3FtGVZ2*8zDA7p$|g zq$o_q2;mO!hmonKw3(b73_Wm;1Oppp2?Ks=0(=O74-5=A;T;Sj@C^k%in*{baKJb0 z)BRk~zgoh{y95x@g4xM8<{eD*g8CQf#LVy1x{^ET?|P*Y;EkEc|8Qk|Fqx*&Yv!`kdyvt;$kg8t|_NT zDrWCwO8SbKm6?@X5Sf⪙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

MFZ_b@XF|+6Op7+OUd6 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 ChwGvM literal 0 HcmV?d00001 diff --git a/docs/docs/concepts/img/memory/hot_path_vs_process.png b/docs/docs/concepts/img/memory/hot_path_vs_process.png deleted file mode 100644 index ac49a6a3b78c08c2dfb817a01bff8c0af9ad9039..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62356 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 bjZ+EL%FDx$&n%26$Uj9{HJMUrlfeH24+VoP diff --git a/docs/docs/concepts/memory.md b/docs/docs/concepts/memory.md index 4cf23c9b6..41350a002 100644 --- a/docs/docs/concepts/memory.md +++ b/docs/docs/concepts/memory.md @@ -198,9 +198,9 @@ We dive into this more in [this section](#few-shot-examples) ### How to update memory -There are two main ways to update memory: "in the hot path" and "as a separate process". +There are two main ways to update memory: "in the hot path" and "in the background". -![](img/memory/hot_path_vs_process.png) +![](img/memory/hot_path_vs_background.png) #### Updating memory in the hot path @@ -210,11 +210,11 @@ This has several benefits. First of all, it happens realtime, so if the user sta This also has several downsides. It may slow down the final response since it needs to decide what to remember. It also means your application not only needs to think about the application logic, but also what to remember (which could result in more complicated instructions to the LLM). -#### Updating memory as a separate process +#### Updating memory in the background -This involves updating memory as a completely separate process from your application. This can either be done as some of background job that you write, or by utilizing a separate memory service. This involves triggering some run over a conversation after it has finished to updated memory. +This involves updating memory in the background, typically as a completely separate process from your application. This can either be done as some of background job that you write, or by utilizing a separate memory service. This involves triggering some run over a conversation after it has finished to updated memory. -This has some benefits. It's a completely separate process from your application, so generally incurs no latency. It also splits up the application logic from the memory logic, making it more modular and easy to manage. +This has some benefits. Since it happens in the background, it incurs no latency. It also splits up the application logic from the memory logic, making it more modular and easy to manage. This also has several downsides. It may not happen realtime, so users will not immediately see memory updated. You also have to think more about when to trigger this job - how do you know a conversation is finished? ## Update own instructions From d9dc3fe47fdd6ae6135cb4c229c3f9aea3f25075 Mon Sep 17 00:00:00 2001 From: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Date: Mon, 7 Oct 2024 10:14:52 -0700 Subject: [PATCH 10/21] Some rewrites --- docs/docs/concepts/memory.md | 59 +++++++++++++++++------------------- 1 file changed, 27 insertions(+), 32 deletions(-) diff --git a/docs/docs/concepts/memory.md b/docs/docs/concepts/memory.md index 41350a002..35c179ee5 100644 --- a/docs/docs/concepts/memory.md +++ b/docs/docs/concepts/memory.md @@ -2,12 +2,12 @@ ## What is Memory? -Memory in the context of LLMs and AI applications refers to the ability to process, retain, and utilize information from past interactions or data sources. -We break this guide into two parts: short term memory and long-term memory. +Memory in the context of LLMs and AI applications refers to the ability to process, store, and effectively recall information from past interactions or data sources. Memory is how your agents' get better over time. +We break this guide into two parts based on the scope of how memories are recalled: short-term memory and long-term memory. -By **short-term memory** we mean memory that persists **within** a single conversation (or interaction) with a user. In LangGraph, we manage short-term memory with the concept of [threads](persistence.md#threads) and [checkpointers](persistence.md#checkpoints) +**Short-term memory** persists **within** a single conversation (or session) with a user. In LangGraph, we manage short-term memory with the concept of [threads](persistence.md#threads) and [checkpointers](persistence.md#checkpoints). While this memory can still last forever, its scope is saved and recalled within a single thread. -By **long-term memory** we mean memory that persists **across** conversations (or interactions) with a user. In LangGraph, we manage long-term memory with [stores](persistence.md#memory-store) +**long-term memory** persists **across** conversations (or session) with a user. In LangGraph, we manage long-term memory with [stores](persistence.md#memory-store). Both are important to understand and implement for your application. @@ -15,23 +15,20 @@ Both are important to understand and implement for your application. ## Short-term memory -Short-term memory primarily refers to the ability of an application to accurately remember interactions that previously occurred in the same conversation with the user. -Most conversations are represented as a list of messages and so the best first thing to do is to store a list of those messages and pass those in to future invocations of the LLM. -LangGraph's [persistence layer](persistence.md#persistence) has checkpointers that enable [thread](persistence.md#threads)-level memory. +Short-term memory refers to the ability of an application to accurately remember previous interactions from the same conversation or session. +For a simple simple chat bot, you would persist a list of messages for each conversational turn. If a user uploads files, if the bot generates code artifacts, or if your agent causes other side-effects that should be re-used throughout the session, you would also save these objects (or references to the objects) in the graph's state. LangGraph checkpoints the state after each step of the graph. This [persistence layer](persistence.md#persistence) enables [thread](persistence.md#threads)-level memory. -As the conversation grows in length, you will need to think about how to manage that list of messages. -The reason you will need to think about this is that too many messages will either (a) not fit inside an LLMs context window and will throw an error, or (b) will "overwhelm" the LLM and cause it to perform poorly. +As the conversation grows in length, you will need to think about how to **manage** that list of messages. +Too many messages will either (a) not fit inside an LLMs context window and will throw an error, or (b) will "distract" the LLM and cause it to perform poorly. Therefore, it becomes crucial to think about what parts (or representations) of the conversation to pass to the LLM. -**Note:** we say "messages" and "conversation" above, but short-term memory is not limited to conversations. -It can apply to any type of interactions. -For the more general case, you will also need to think of how to represent the list of previous events within that interaction. +For the more general case, you will also need to think of how to represent the list of previous events within a given invocation. -We cover a few different concepts below: +We cover a few common techniques for managing message lists: - [Editing message lists](#editing-message-lists): How to think about trimming and filtering a list of messages before passing to language model. - [Managing messages within LangGraph](#managing-messages-within-langgraph): Some concepts that are helpful to know for managing messages within LangGraph. -- [Summarizaing past conversations](#summarizing-past-conversations): A common technique to use when you don't just want to filter the list of messages. +- [Summarizing past conversations](#summarizing-past-conversations): A common technique to use when you don't just want to filter the list of messages. ### Editing message lists @@ -157,18 +154,16 @@ See this how-to [here](https://langchain-ai.github.io/langgraph/how-tos/memory/a ## Long term memory -Long-term memory refers to the ability of a system to remember information between different conversations (or interactions). -There a many different ways this can be accomplished, and the right way to do so depends entirely on your application. -Rather than build a generic "long-term memory" solution, LangGraph aims to give you the ability to more directly control the long-term memory of your application. +Long-term memory refers to the ability of a system to remember information across different conversations (or sessions). +There are many tradeoffs between long-term-memory techniques, and the right way to do so depends largely on your application's needs. +LangGraph aims to give you the low-level primitves to directly control the long-term memory of your application. You can use LangGraph's [Store](persistence.md#memory-store) to accomplish this. -Long-term memory is far from a solved problem. -It is hard to provide generic advice on how to build long term memory, as it often depends on your application. -Still, there are several patterns you should be thinking about when implementing long-term memory, and we try outline those below. +Long-term memory is far from a solved problem. While it is hard to provide generic advice, we have provided a few reliable patterns below that you should be consider when implementing long-term memory. -**Do you want to update memory "in the hot path" or "as a separate process"** +**Do you want to update memory "in the hot path" or "in the background"** -Memory can be updated either as part of the application logic (e.g. "in the hot path" of the application) or as a separate process. +Memory can be updated either as part of your primary application logic (e.g. "in the hot path" of the application) or as a background task (as a separate function that generates memories based on the primary application's state). There are pros and cons to each approach, we document them in [this section](#how-to-update-memory) **Update own instructions** @@ -177,15 +172,15 @@ Oftentimes, part of the system prompt (or instructions) to an LLM can be updated This can be viewed as analyzing interactions and trying to determine what could have been done better, and then putting those learnings back into the system prompt for future interactions. We dive into this more in [this section](#update-own-instructions) -**Remember a profile** +**Remember a single profile** This technique is useful when there is specific information you may want to remember about a user/organization/group. You can define the schema of the profile ahead of time, and then use an LLM to update this based on interactions. We dive into this more in [this section](#remember-a-profile) -**Remember a list** -This technique is useful when you want repeatedly extract items and remember those. -Similar to remembering a profile, you still define a custom schema to remember. +**Remember multiple memories** +This technique is useful when you want repeatedly extract & items and remember those. +Similar to remembering a profile, you still define a schema to remember. The difference is that rather than remembering ONE schema per user/organization/group, you remember a list. We still use an LLM to update this list. We dive into this more in [this section](#remember-a-list) @@ -195,7 +190,6 @@ Sometimes you don't need to use an LLM to update memory, but rather can just raw You can then pull these raw interactions into the prompt as few-shot examples in future interactions. We dive into this more in [this section](#few-shot-examples) - ### How to update memory There are two main ways to update memory: "in the hot path" and "in the background". @@ -204,19 +198,20 @@ There are two main ways to update memory: "in the hot path" and "in the backgrou #### Updating memory in the hot path -This involves updating memory while the application is running. A concrete example of this is the way that ChatGPT does memory. ChatGPT can call tools to update or save a new memory, and it does that and then responds to the user. +This involves updating memory while the application is running. A concrete example of this is the way that ChatGPT does memory. ChatGPT can call tools to update or save a new memory. It decides when to use these tools and does so before responding to the user. -This has several benefits. First of all, it happens realtime, so if the user starts a new thread right away that memory will be present. It also makes it possible to show the user that memory has been updated, and so can be a bit more transparent that way. +This has a few benefits. First of all, it happens realtime, so if the user starts a new thread right away that memory will be present. The user also transparently sees when memories are stored. -This also has several downsides. It may slow down the final response since it needs to decide what to remember. It also means your application not only needs to think about the application logic, but also what to remember (which could result in more complicated instructions to the LLM). +This also has several downsides. It adds one more decision for the agent (what to commit to memory). This can which can degrade its tool-calling performance. It may slow down the final response since it needs to decide what to commit to memory. It also typically leads to fewer things being saved to memory (since the assistant is multi-tasking), which will cause lower recall in later conversations. #### Updating memory in the background -This involves updating memory in the background, typically as a completely separate process from your application. This can either be done as some of background job that you write, or by utilizing a separate memory service. This involves triggering some run over a conversation after it has finished to updated memory. +This involves updating memory in the background, typically as a completely separate graph or function. This can either be done as some of background job that you write, or by using a separate memory service. Whenever a conversation completes (or on some schedule), long-term memory is "triggered" to extract and synthesize memories. This has some benefits. Since it happens in the background, it incurs no latency. It also splits up the application logic from the memory logic, making it more modular and easy to manage. -This also has several downsides. It may not happen realtime, so users will not immediately see memory updated. You also have to think more about when to trigger this job - how do you know a conversation is finished? +This also has several downsides. It may not happen in real time, so users may not immediately see memory updated. You also have to think more about when to trigger this job - how do you know a conversation is finished? + ## Update own instructions This is an example of long term memory. From d999a6b4a4f2a695afdb2f87ccd3bad24f6f230c Mon Sep 17 00:00:00 2001 From: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Date: Mon, 7 Oct 2024 10:21:19 -0700 Subject: [PATCH 11/21] Mem --- docs/docs/concepts/memory.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/concepts/memory.md b/docs/docs/concepts/memory.md index 35c179ee5..a3c9e8935 100644 --- a/docs/docs/concepts/memory.md +++ b/docs/docs/concepts/memory.md @@ -264,7 +264,7 @@ Another thing you will have take into account when working with lists is how to ## Few Shot Examples -Few-shot learning is a powerful technique where LLMs can be ["programmed"](https://x.com/karpathy/status/1627366413840322562) inside the prompt with input-output examples to perform diverse tasks. While various [best-practices](https://python.langchain.com/docs/concepts/#1-generating-examples) can be used to generate few-shot examples, often the challenge lies in selecting the most relevant examples based on user input. +LLMs can learn from examples. Few-shot learning lets you ["program"](https://x.com/karpathy/status/1627366413840322562) your LLM by updating the prompt with input-output examples to perform diverse tasks. While various [best-practices](https://python.langchain.com/docs/concepts/#1-generating-examples) can be used to generate few-shot examples, often the challenge lies in selecting the most relevant examples based on user input. LangChain [`ExampleSelectors`](https://python.langchain.com/docs/how_to/#example-selectors) can be used to customize few-shot example selection from a collection of examples using criteria such as length, semantic similarity, semantic ngram overlap, or maximal marginal relevance. From a611b507fd3800b57b3d9193768bf2a0088c8a1c Mon Sep 17 00:00:00 2001 From: Harrison Chase Date: Mon, 7 Oct 2024 11:24:55 -0700 Subject: [PATCH 12/21] cr --- docs/docs/concepts/memory.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/docs/docs/concepts/memory.md b/docs/docs/concepts/memory.md index a3c9e8935..36e3e7dbe 100644 --- a/docs/docs/concepts/memory.md +++ b/docs/docs/concepts/memory.md @@ -156,7 +156,7 @@ See this how-to [here](https://langchain-ai.github.io/langgraph/how-tos/memory/a Long-term memory refers to the ability of a system to remember information across different conversations (or sessions). There are many tradeoffs between long-term-memory techniques, and the right way to do so depends largely on your application's needs. -LangGraph aims to give you the low-level primitves to directly control the long-term memory of your application. +LangGraph aims to give you the low-level primitives to directly control the long-term memory of your application. You can use LangGraph's [Store](persistence.md#memory-store) to accomplish this. Long-term memory is far from a solved problem. While it is hard to provide generic advice, we have provided a few reliable patterns below that you should be consider when implementing long-term memory. @@ -172,13 +172,13 @@ Oftentimes, part of the system prompt (or instructions) to an LLM can be updated This can be viewed as analyzing interactions and trying to determine what could have been done better, and then putting those learnings back into the system prompt for future interactions. We dive into this more in [this section](#update-own-instructions) -**Remember a single profile** +**Learn a single profile** This technique is useful when there is specific information you may want to remember about a user/organization/group. You can define the schema of the profile ahead of time, and then use an LLM to update this based on interactions. We dive into this more in [this section](#remember-a-profile) -**Remember multiple memories** +**Learn multiple memories** This technique is useful when you want repeatedly extract & items and remember those. Similar to remembering a profile, you still define a schema to remember. The difference is that rather than remembering ONE schema per user/organization/group, you remember a list. @@ -202,11 +202,11 @@ This involves updating memory while the application is running. A concrete examp This has a few benefits. First of all, it happens realtime, so if the user starts a new thread right away that memory will be present. The user also transparently sees when memories are stored. -This also has several downsides. It adds one more decision for the agent (what to commit to memory). This can which can degrade its tool-calling performance. It may slow down the final response since it needs to decide what to commit to memory. It also typically leads to fewer things being saved to memory (since the assistant is multi-tasking), which will cause lower recall in later conversations. +This also has several downsides. It adds one more decision for the agent (what to commit to memory). This can can degrade its tool-calling performance. It may slow down the final response since it needs to decide what to commit to memory. It also typically leads to fewer things being saved to memory (since the assistant is multi-tasking), which will cause lower recall in later conversations. #### Updating memory in the background -This involves updating memory in the background, typically as a completely separate graph or function. This can either be done as some of background job that you write, or by using a separate memory service. Whenever a conversation completes (or on some schedule), long-term memory is "triggered" to extract and synthesize memories. +This involves updating memory in the background, typically as a completely separate graph or function. This can either be done as some part of background job that you write, or by using a separate memory service. Whenever a conversation completes (or on some schedule), long-term memory is "triggered" to extract and synthesize memories. This has some benefits. Since it happens in the background, it incurs no latency. It also splits up the application logic from the memory logic, making it more modular and easy to manage. @@ -233,7 +233,8 @@ def call_model(state: State, store: BaseStore): # Node that updates instructions def update_instructions(state: State, store: BaseStore): - current_instructions = store.search(("instructions",))[0] + namespace = ("instructions",) + current_instructions = store.search(namespace)[0] # Memory logic prompt = prompt_template.format(instructions=instructions.value["instructions"], conversation=state["messages"]) output = llm.invoke(prompt) @@ -243,16 +244,16 @@ def update_instructions(state: State, store: BaseStore): ``` ![](img/memory/update-instructions.png) -### Remember a profile +### Learn a profile The profile is generally just a JSON blob with various key-value pairs. When remembering a profile, you will want to make sure that you are **updating** the profile each time. As a result, you will want to pass in the previous profile and ask the LLM to generate a new profile (or some JSON patch to apply to the old profile). If the profile is large, this can get tricky. You may need to split the profile into subsections and update each one individually. You also may need to fix errors if the LLM generates incorrect JSON. ![](img/memory/update-profile.png) -### Remember a list +### Learn multiple memories -Remember lists of information is easier in some ways, as the individual structures of each item is generally simpler and easier to generate. +Remembering lists of information is easier in some ways, as the individual structures of each item is generally simpler and easier to generate. It is more complex overall, as you now have to enable the LLM to *delete* or *update* existing items in the list. This can be tricky to prompt the LLM to do. From e99a675b1d220d08c3ce10d8bc6832752e0475a0 Mon Sep 17 00:00:00 2001 From: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Date: Mon, 7 Oct 2024 15:07:56 -0700 Subject: [PATCH 13/21] Another push --- docs/docs/concepts/memory.md | 310 +++++++++++++++++++---------------- 1 file changed, 167 insertions(+), 143 deletions(-) diff --git a/docs/docs/concepts/memory.md b/docs/docs/concepts/memory.md index 36e3e7dbe..39264050b 100644 --- a/docs/docs/concepts/memory.md +++ b/docs/docs/concepts/memory.md @@ -2,12 +2,12 @@ ## What is Memory? -Memory in the context of LLMs and AI applications refers to the ability to process, store, and effectively recall information from past interactions or data sources. Memory is how your agents' get better over time. -We break this guide into two parts based on the scope of how memories are recalled: short-term memory and long-term memory. +Memory in the context of LLMs and AI applications refers to the ability to process, store, and effectively recall information from past interactions. With memory, your agents can learn from feedback and provide more relevant outputs to users. +This guide is divided into two sections based on the scope of memory recall: short-term memory and long-term memory. -**Short-term memory** persists **within** a single conversation (or session) with a user. In LangGraph, we manage short-term memory with the concept of [threads](persistence.md#threads) and [checkpointers](persistence.md#checkpoints). While this memory can still last forever, its scope is saved and recalled within a single thread. +**Short-term memory**, or thread-scoped memory, can be recalled _at any time_ **from within** a single conversational thread with a user. LangGraph manages short-term memory as a part of your agent's [state][#state]. State is persisted to a database using a [checkpointer](persistence.md#checkpoints), so the thread can be resumed at any time. Updates to short-term memory are triggered any time you invoke the graph or any time a step completes. -**long-term memory** persists **across** conversations (or session) with a user. In LangGraph, we manage long-term memory with [stores](persistence.md#memory-store). +**Long-term memory** is shared **across** conversational threads. It can be recalled _at any time_ and in any node. Memories are scoped to any custom namespace, not just within a single thread. LangGraph provides [stores](persistence.md#memory-store) to let you save and recall long-term memories. Both are important to understand and implement for your application. @@ -15,16 +15,17 @@ Both are important to understand and implement for your application. ## Short-term memory -Short-term memory refers to the ability of an application to accurately remember previous interactions from the same conversation or session. -For a simple simple chat bot, you would persist a list of messages for each conversational turn. If a user uploads files, if the bot generates code artifacts, or if your agent causes other side-effects that should be re-used throughout the session, you would also save these objects (or references to the objects) in the graph's state. LangGraph checkpoints the state after each step of the graph. This [persistence layer](persistence.md#persistence) enables [thread](persistence.md#threads)-level memory. +Short-term memory refers to the ability to accurately remember previous turns within a single thread. A thread organizes multiple turns from a single conversation or session, similar to the way an email or slack thread groups messages in a single conversation. Reading from and writing updates to the memory is scoped to within a single thread. -As the conversation grows in length, you will need to think about how to **manage** that list of messages. -Too many messages will either (a) not fit inside an LLMs context window and will throw an error, or (b) will "distract" the LLM and cause it to perform poorly. -Therefore, it becomes crucial to think about what parts (or representations) of the conversation to pass to the LLM. +LangGraph agents access short-term memory using checkpointed state. Using chatbots as a common example, the state would contain conversation history as a list of chat messages. Every user request and every assistant response is appended as a message to the state. LangGraph saves the state updates in checkpoints scoped by the conversation's distinct [thread](persistence.md#threads) ID. For every subsequent user request, LangGraph can load the state from the appropriate checkpoint so your chatbot can see the entire conversation history. -For the more general case, you will also need to think of how to represent the list of previous events within a given invocation. +If a user uploads files, if the bot generates code artifacts, or if the agent performs other side-effects, all of these objects could be stored and checkpointed as a part of your graph's state. That way, your bot can access the entire shared context for each conversation while keeping the context for each conversation separate from others. -We cover a few common techniques for managing message lists: +Since conversation history is the most common form of representing short-term memory, in the next section, we will cover techniques for managing conversation history when interactions become **long**. + +Long conversations pose a challenge to today's LLMs. The full history may (a) not even fit inside an LLM's context window, resulting in an irrecoverable error. Even _if_ your LLM technically supports the full context length, most LLMs (b) still perform poorly over long contexts. They get "distracted" by stale or off-topic content, all while suffering from slower response times and higher costs. + +Managing short-term memory is really an exercise of balancing [precision & recall](https://en.wikipedia.org/wiki/Precision_and_recall#:~:text=Precision%20can%20be%20seen%20as,irrelevant%20ones%20are%20also%20returned) with your application's other performance requirements (latency & cost). As always, it's important to think critically about how you represent information for your LLM and to look at your data. We cover a few common techniques for managing message lists below and hope to provide sufficient context for you to pick the best tradeoffs for your application: - [Editing message lists](#editing-message-lists): How to think about trimming and filtering a list of messages before passing to language model. - [Managing messages within LangGraph](#managing-messages-within-langgraph): Some concepts that are helpful to know for managing messages within LangGraph. @@ -32,88 +33,73 @@ We cover a few common techniques for managing message lists: ### Editing message lists -Chat models accept instructions through [messages](https://python.langchain.com/docs/concepts/#messages), which can serve as general instructions (e.g., a system message) or user-provided instructions (e.g., human messages). In chat applications, messages often alternate between human inputs and model responses, accumulating in a list over time. Because context windows are limited and token-rich message lists can be costly, many applications can benefit from approaches to actively manage messages. - +Chat models accept context using [messages](https://python.langchain.com/docs/concepts/#messages). Messages transmit both developer or application-provided instructions (e.g., a system message) and user-provided instructions (e.g., human messages) all while recording the trajectory of the conversation or interaction. In chat applications, messages often alternate between human inputs and model responses, accumulating as a list over time. Because context windows are limited and token-rich message lists can be costly, many applications can benefit from using techniques to manually remove or forget stale information. ![](img/memory/filter.png) -The most directed approach is to remove specific messages from a list. This can be done using [RemoveMessage](https://langchain-ai.github.io/langgraph/how-tos/memory/delete-messages/#manually-deleting-messages) based upon the message `id`, a unique identifier for each message. In the below example, we keep only the last two messages in the list using `RemoveMessage` to remove older messages based upon their `id`. +The most direct approach is to remove old messages from a list (similar to a [least-recently used cache](https://en.wikipedia.org/wiki/Page_replacement_algorithm#Least_recently_used)). -```python -from langchain_core.messages import RemoveMessage - -# Message list -messages = [AIMessage("Hi.", name="Bot", id="1")] -messages.append(HumanMessage("Hi.", name="Lance", id="2")) -messages.append(AIMessage("So you said you were researching ocean mammals?", name="Bot", id="3")) -messages.append(HumanMessage("Yes, I know about whales. But what others should I learn about?", name="Lance", id="4")) - -# Isolate messages to delete -delete_messages = [RemoveMessage(id=m.id) for m in messages[:-2]] -print(delete_messages) -[RemoveMessage(content='', id='1'), RemoveMessage(content='', id='2')] -``` - -Because the context window for chat model is denominated in tokens, it can be useful to trim message lists based upon some number of tokens that we want to retain. To do this, we can use [`trim_messages`](https://python.langchain.com/docs/how_to/trim_messages/#trimming-based-on-token-count) and specify number of token to keep from the list, as well as the `strategy` (e.g., keep the last `max_tokens`). +The typical technique for deleting content from a list in LangGraph is to return an update from a node telling it to delete some portion of the list. You get to define what this update looks like, but a common approach would be to let you return an object or dictionary specifying which values to retain. ```python -from langchain_core.messages import trim_messages -trim_messages( - messages, - # Keep the last <= n_count tokens of the messages. - strategy="last", - # Remember to adjust based on your model - # or else pass a custom token_encoder - token_counter=ChatOpenAI(model="gpt-4o"), - # Most chat models expect that chat history starts with either: - # (1) a HumanMessage or - # (2) a SystemMessage followed by a HumanMessage - # Remember to adjust based on the desired conversation - # length - max_tokens=45, - # Most chat models expect that chat history starts with either: - # (1) a HumanMessage or - # (2) a SystemMessage followed by a HumanMessage - start_on="human", - # Most chat models expect that chat history ends with either: - # (1) a HumanMessage or - # (2) a ToolMessage - end_on=("human", "tool"), - # Usually, we want to keep the SystemMessage - # if it's present in the original history. - # The SystemMessage has special instructions for the model. - include_system=True, -) -``` -### Managing messages within LangGraph - -When building agents in LangGraph, we commonly want to manage a list of messages in the graph state. Because this is such a common use case, [MessagesState](https://langchain-ai.github.io/langgraph/concepts/low_level/#working-with-messages-in-graph-state) is a built-in LangGraph state schema that includes a `messages` key, which is a list of messages. `MessagesState` also includes an `add_messages` reducer for updating the messages list with new messages as the application runs. The `add_messages` reducer allows us to [append](https://langchain-ai.github.io/langgraph/concepts/low_level/#serialization) new messages to the `messages` state key as shown below. When we perform a state update with `{"messages": new_message}` returned from `my_node`, the `add_messages` reducer appends `new_message` to the existing list of messages. +def manage_list(existing: list, updates: Union[list, dict]): + if isinstance(updates, list): + # Normal case, add to the history + return existing + updates + elif isinstance(updates, dict) and updates["type"] == "keep": + # You get to decide what this looks like. + # For example, you could simplify and just accept a string "DELETE" + # and clear the entire list. + return existing[updates["from"]:updates["to"]] + # etc. We define how to interpret updates + +class State(TypedDict): + my_list: Annotated[list, manage_list] -```python def my_node(state: State): - # Add a new message to the state - new_message = HumanMessage(content="message") - return {"messages": new_message} + return { + # We return an update for the field "my_list" saying to + # keep only values from index -5 to the end (deleting the rest) + "my_list": {"type": "keep", "from": -5, "to": None} + } ``` -The `add_messages` reducer built into `MessagesState` [also works with the `RemoveMessage` utility that we discussed above](https://langchain-ai.github.io/langgraph/how-tos/memory/delete-messages/). In this case, we can perform a state update with a list of `delete_messages` to remove specific messages from the `messages` list. +LangGraph will call the `manage_list` "[reducer][reducer]" function any time an update is returned under the key "my_list". Within that function, we define what types of updates to accept. Typically, messages will be added to the existing list (the conversation will grow); however, we've also added support to accept a dictionary that lets you "keep" certain parts of the state. This lets you programmatically drop old message context. + +Another common approach is to let you return a list of "remove" objects that specify the IDs of all messages to delete. If you're using the LangChain messages and the [`add_messages`](https://langchain-ai.github.io/langgraph/reference/graphs/#langgraph.graph.message.add_messages) reducer (or `MessagesState`, which uses the same underlying functionality) in LangGraph, you can do this using a `RemoveMessage`. ```python -def my_node(state: State): - # Delete messages from state +from langchain_core.messages import RemoveMessage, AIMessage +from langgraph.graph import add_messages +# ... other imports + +class State(TypedDict): + # add_messages will default to upserting messages by ID to the existing list + # if a RemoveMessage is returned, it will delete the message in the list by ID + messages: Annotated[list, add_messages] + +def my_node_1(state: State): + # Add an AI message to the `messages` list in the state + return {"messages": [AIMessage(content="Hi")]} + +def my_node_2(state: State): + # Delete all but the last 2 messages from the `messages` list in the state delete_messages = [RemoveMessage(id=m.id) for m in state['messages'][:-2]] return {"messages": delete_messages} + ``` +In the example above, the `add_messages` reducer allows us to [append](https://langchain-ai.github.io/langgraph/concepts/low_level/#serialization) new messages to the `messages` state key as shown in `my_node_1`. When it sees a `RemoveMessage`, it will delete the message with that ID from the list (and the RemoveMessage will then be discarded). For more information on LangChain-specific message handling, check out [this how-to on using `RemoveMessage` ](https://langchain-ai.github.io/langgraph/how-tos/memory/delete-messages/). + See this how-to [guide](https://langchain-ai.github.io/langgraph/how-tos/memory/manage-conversation-history/) and module 2 from our [LangChain Academy](https://github.com/langchain-ai/langchain-academy/tree/main/module-2) course for example usage. ### Summarizing Past Conversations -The problem with trimming or removing messages, as shown above, is that we may lose information from culling of the message queue. Because of this, some applications benefit from a more sophisticated approach of summarizing the message history using a chat model. +The problem with trimming or removing messages, as shown above, is that we may lose information from culling of the message queue. Because of this, some applications benefit from a more sophisticated approach of summarizing the message history using a chat model. ![](img/memory/summary.png) -Simple prompting and orchestration logic can be used to achieve this. As an example, in LangGraph we can extend the [MessagesState](https://langchain-ai.github.io/langgraph/concepts/low_level/#working-with-messages-in-graph-state) to include a `summary` key. +Simple prompting and orchestration logic can be used to achieve this. As an example, in LangGraph we can extend the [MessagesState](https://langchain-ai.github.io/langgraph/concepts/low_level/#working-with-messages-in-graph-state) to include a `summary` key. ```python from langgraph.graph import MessagesState @@ -123,28 +109,28 @@ class State(MessagesState): Then, we can generate a summary of the chat history, using any existing summary as context for the next summary. This `summarize_conversation` node can be called after some number of messages have accumulated in the `messages` state key. -```python +```python def summarize_conversation(state: State): - + # First, we get any existing summary summary = state.get("summary", "") - # Create our summarization prompt + # Create our summarization prompt if summary: - + # A summary already exists summary_message = ( - f"This is summary of the conversation to date: {summary}\n\n" + f"This is a summary of the conversation to date: {summary}\n\n" "Extend the summary by taking into account the new messages above:" ) - + else: summary_message = "Create a summary of the conversation above:" # Add prompt to our history messages = state["messages"] + [HumanMessage(content=summary_message)] response = model.invoke(messages) - + # Delete all but the 2 most recent messages delete_messages = [RemoveMessage(id=m.id) for m in state["messages"][:-2]] return {"summary": response.content, "messages": delete_messages} @@ -152,80 +138,136 @@ def summarize_conversation(state: State): See this how-to [here](https://langchain-ai.github.io/langgraph/how-tos/memory/add-summary-conversation-history/) and module 2 from our [LangChain Academy](https://github.com/langchain-ai/langchain-academy/tree/main/module-2) course for example usage. -## Long term memory +### Knowing **when** to remove messages -Long-term memory refers to the ability of a system to remember information across different conversations (or sessions). -There are many tradeoffs between long-term-memory techniques, and the right way to do so depends largely on your application's needs. -LangGraph aims to give you the low-level primitives to directly control the long-term memory of your application. -You can use LangGraph's [Store](persistence.md#memory-store) to accomplish this. +Most LLMs have a maximum supported context window (denominated in tokens). A simple way to decide when to truncate messages is to count the tokens in the message history and truncate whenever it approaches that limit. Naive truncation is straightforward to implement on your own, though there are a few "gotchas". Some model APIs further restrict the sequence of message types (must start with human message, cannot have consecutive messages of the same type, etc.). If you're using LangChain, you can use the [`trim_messages`](https://python.langchain.com/docs/how_to/trim_messages/#trimming-based-on-token-count) utility and specify the number of tokens to keep from the list, as well as the `strategy` (e.g., keep the last `max_tokens`) to use for handling the boundary. -Long-term memory is far from a solved problem. While it is hard to provide generic advice, we have provided a few reliable patterns below that you should be consider when implementing long-term memory. +Below is an example. -**Do you want to update memory "in the hot path" or "in the background"** +```python +from langchain_core.messages import trim_messages +trim_messages( + messages, + # Keep the last <= n_count tokens of the messages. + strategy="last", + # Remember to adjust based on your model + # or else pass a custom token_encoder + token_counter=ChatOpenAI(model="gpt-4"), + # Most chat models expect that chat history starts with either: + # (1) a HumanMessage or + # (2) a SystemMessage followed by a HumanMessage + # Remember to adjust based on the desired conversation + # length + max_tokens=45, + # Most chat models expect that chat history starts with either: + # (1) a HumanMessage or + # (2) a SystemMessage followed by a HumanMessage + start_on="human", + # Most chat models expect that chat history ends with either: + # (1) a HumanMessage or + # (2) a ToolMessage + end_on=("human", "tool"), + # Usually, we want to keep the SystemMessage + # if it's present in the original history. + # The SystemMessage has special instructions for the model. + include_system=True, +) +``` + +## Long-term memory + +Long-term memory refers to the ability of a system to remember information across different conversations (or sessions). While short-term memory is always scoped to a "thread", long-term memory is saved within custom scopes, or "namespaces." + +When adding long-term memory to your agent, it's important to think about how & how often to **write memories**, how to **stores and manage memory updates**, and how to **recall & represent memories** for the LLM in your application. These questions are all interdependent; each technique has tradeoffs, and the right way to do so depends largely on your application's needs. +LangGraph aims to give you the low-level primitives to directly control the long-term memory of your application, based on memory [Store](persistence.md#memory-store)'s. + +Long-term memory is far from a solved problem. While it is hard to provide generic advice, we have provided a few reliable patterns below for your consideration as you implement long-term memory. + +**Do you want to write memories "in the hot path" or "in the background"** + +Memory can be updated either as part of your primary application logic (e.g. "in the hot path" of the application) or as a background task (as a separate function that generates memories based on the primary application's state). We document some tradeoffs for each appproach in [how to update memory](#how-to-update-memory) + +**Do you want to manage memories as a single profile or as a list of events?** -Memory can be updated either as part of your primary application logic (e.g. "in the hot path" of the application) or as a background task (as a separate function that generates memories based on the primary application's state). -There are pros and cons to each approach, we document them in [this section](#how-to-update-memory) +Managing memories as a single, continuously updated "profile" or "schema" is useful when there is well-scoped, specific information you want to remember about a user, organization, or other entity (including the agent itself). You can define the schema of the profile ahead of time, and then use an LLM to update this based on interactions. Querying the "memory" is easy since it's a simple GET operation on a JSON document.We explain this in more detail in [remember a profile](#remember-a-profile). This technique can provide higher precision (on known information use cases) at the expense of lower recall (since you have to anticipate and model your domain, and updates to the doc tend to delete or rewrite away old information at a greater frequency). -**Update own instructions** +Managing long-term memory as a collection of documents, on the other hand, lets you store an unbounded amount of information. This technique is useful when you want to repeatedly extract & remember items over a long time horizon but can be more complicated to query and manage over time. +Similar to the "profile" memory, you still define schema(s) for each memory. Rather than overwriting a single document, you instead will insert new ones (and potentially update or re-contextualize existing ones in the process). We explain this approach in more detail in [remember a list](#remember-a-list) -Oftentimes, part of the system prompt (or instructions) to an LLM can be updated based on previous interactions. -This can be viewed as analyzing interactions and trying to determine what could have been done better, and then putting those learnings back into the system prompt for future interactions. -We dive into this more in [this section](#update-own-instructions) +**Do you want to present memories to your agent as updated instructions or as few-shot examples?** -**Learn a single profile** +Memories are typically provided to the LLM as a part of the system prompt. Some common ways to "frame" memories for the LLM include providing raw information as "memories from previous interactions with user A", as system instructions or rules, or as few-shot examples. -This technique is useful when there is specific information you may want to remember about a user/organization/group. -You can define the schema of the profile ahead of time, and then use an LLM to update this based on interactions. -We dive into this more in [this section](#remember-a-profile) +Framing memories as "learning rules or instructions" typically means dedicating a portion of the system prompt to instructions the LLM can manage itself. After each conversation, you can prompt the LLM to evaluate its performance and update the instructions to better handle this type of task in the future. We explain this approach in more detail in [this section](#update-own-instructions). -**Learn multiple memories** -This technique is useful when you want repeatedly extract & items and remember those. -Similar to remembering a profile, you still define a schema to remember. -The difference is that rather than remembering ONE schema per user/organization/group, you remember a list. -We still use an LLM to update this list. -We dive into this more in [this section](#remember-a-list) +Storing memories as few-shot examples lets you store and manage instructions as cause and effect. Each memory stores an input or context and expected response. Including a reasoning trajectory (a chain-of-thought) can also help provide sufficient context so that the memory is less likely to be mis-used in the future. We elaborate on this concept more in [this section](#few-shot-examples) -**Few shot examples** -Sometimes you don't need to use an LLM to update memory, but rather can just raw interactions. -You can then pull these raw interactions into the prompt as few-shot examples in future interactions. -We dive into this more in [this section](#few-shot-examples) +We will expand on techniques for writing, managing, and recalling & formatting memories in the following section. -### How to update memory +### Writing memories -There are two main ways to update memory: "in the hot path" and "in the background". +Humans form long-term memories when we sleep, but when and how should our agents create new memories? The two most common ways we see agents write memories are "in the hot path" and "in the background". ![](img/memory/hot_path_vs_background.png) -#### Updating memory in the hot path +#### Writing memories in the hot path -This involves updating memory while the application is running. A concrete example of this is the way that ChatGPT does memory. ChatGPT can call tools to update or save a new memory. It decides when to use these tools and does so before responding to the user. +This involves creating memories while the application is running. To provide a popular production example, ChatGPT manages memories uses a "save_memories" tool to upsert memories as content strings. It decides whether (and how) to use this tool every time it receives a user message and multi-tasks memory management with the rest of the user instructions. -This has a few benefits. First of all, it happens realtime, so if the user starts a new thread right away that memory will be present. The user also transparently sees when memories are stored. +This has a few benefits. First of all, it happens "in real time". If the user starts a new thread right away that memory will be present. The user also transparently sees when memories are stored, since the bot has to explicitly decide to store information and can relate that to the user. -This also has several downsides. It adds one more decision for the agent (what to commit to memory). This can can degrade its tool-calling performance. It may slow down the final response since it needs to decide what to commit to memory. It also typically leads to fewer things being saved to memory (since the assistant is multi-tasking), which will cause lower recall in later conversations. +This also has several downsides. It complicates the decisions the agent must make (what to commit to memory). This complication can degrade its tool-calling performance and reduce task completion rates. It will slow down the final response since it needs to decide what to commit to memory. It also typically leads to fewer things being saved to memory (since the assistant is multi-tasking), which will cause **lower recall** in later conversations. -#### Updating memory in the background +#### Writing memories in the background -This involves updating memory in the background, typically as a completely separate graph or function. This can either be done as some part of background job that you write, or by using a separate memory service. Whenever a conversation completes (or on some schedule), long-term memory is "triggered" to extract and synthesize memories. +This involves updating memory as a conceptually separate task, typically as a completely separate graph or function. Since it happens in the background, it incurs no latency. It also splits up the application logic from the memory logic, making it more modular and easy to manage. It also lets you separate the timing of memory creation, letting you avoid redundant work. Your agent can focus on accomplishing its immediate task without having to consciously think about what it needs to remember. -This has some benefits. Since it happens in the background, it incurs no latency. It also splits up the application logic from the memory logic, making it more modular and easy to manage. +This approach is not without its downsides, however. You have to think about how often to write memories. If it doesn't run in realtime, the user's interactions on other threads won't benefit from the new context. You also have to think about when to trigger this job. We typically recommend scheduling memories after some point of time, cancelling and re-scheduling for the future if new events occur on a given thread. Other popular choices are to form memories on some cron schedule or to let the user or application logic manually trigger memory formation. -This also has several downsides. It may not happen in real time, so users may not immediately see memory updated. You also have to think more about when to trigger this job - how do you know a conversation is finished? +## Managing memories -## Update own instructions +Once you've sorted out memory scheduling, it's important to think about **how to update memory with new information**. + +We see the two ends of the spectrum being: continuously update a single document (memory profile), inserting new documents every time you receive new information. We will outline some tradeoffs below. Note that most people settle on a combination of memory types and update strategies depending on their use case. + +### Update a single profile + +The profile is generally just a JSON document with various key-value pairs you've selected to represent your domain. When remembering a profile, you will want to make sure that you are **updating** the profile each time. As a result, you will want to pass in the previous profile and ask the LLM to generate a new profile (or some JSON patch to apply to the old profile). + +The larger the document, the more error-prone this can become. If your document becomes **too** large, you may want to consider splitting up the profiles into separate sections. You will likely need to use generation with retries and/or **strict** decoding when generating documents to ensure the memory schemas remains valid. + +![](img/memory/update-profile.png) -This is an example of long term memory. +### Remember a list -"Reflection" or "Meta-prompting" steps can use an LLM to generate or refine its own prompts or instructions. This approach allows the system to dynamically update and improve its own behavior, potentially leading to better performance on various tasks. This is particularly useful for tasks where the instructions are challenging to specify a priori. +Saving memories as lists of information simplifies some things. Each individual memory can be more narrowly scoped and easier to generate. It also means you're less likely to **lose** information over time, since it's easier for an LLM to generate new objects when it receives new information than it is for it to reconcile that new information with information in a single profile. This tends to lead to higher recall downstream. -Meta-prompting can use past information to update the prompt. As an example, this [Tweet generator](https://www.youtube.com/watch?v=Vn8A3BxfplE) uses meta-prompting to iteratively improve the summarization prompt used to generate high quality paper summaries for Twitter. In this case, we used a LangSmith dataset to house several papers that we wanted to summarize, generated summaries using a naive summarization prompt, manually reviewed the summaries, captured feedback from human review using the LangSmith Annotation Queue, and passed this feedback to a chat model to re-generate the summarization prompt. The process was repeated in a loop until the summaries met our criteria in human review. +This approach shifts some complexity to how you prompt the LLM to apply memory updates, as you now have to enable the LLM to _delete_ or _update_ existing items in the list. This can be tricky to prompt the LLM to do (some LLMs may default to always inserting; others may default to always updating). Tuning the behavior here is best done through evals, somethign you can do with a tool like [LangSmith](https://docs.smith.langchain.com/tutorials/Developers/evaluation). -This will utilize the memory store concept above to store the updated instructions in a shared namespace. This namespace will have only a single item (unless you want to update instructions specific for each user, but that's a separate issue). This will look something like: +This also shifts complexity to memory **search** (recall). You have to think about what relevant items to use. Right now we support filtering by metadata. We will be adding semantic search shortly. + +Finally, this shifts some complexity to how you represent the memories for the LLM (and by extension, the schemas you use to save each memories). It's very easy to write memories that can easily be mistaken out-of-context. It's important to prompt the LLM to include all necessary contextual information in the given memory so that when you use it in later conversations it doesn't mistakenly mis-apply that information. + +![](img/memory/update-list.png) + +## Representing memories + +Once you have saved memories, the way you then retrieve and present the memory content for the LLM can play a large role in how well your LLM incorporates that information in its responses. +The following sections a couple of common approaches. Note that these sections also will largely inform how you write and manage memories. Everything in memory is connected! + +## Update own instructions + +While instructions are often static text written by the developer, many AI applications benefit from letting the users personalize the rules and instructions the agent should follow whenever it interacts with that user. This ideally can be inferred by its interactions with the user (so the user doesn't have to explicitly change settings in yoru app). In this sense, instructions are a form of long-form memory! + +One way to apply this is using "reflection" or "Meta-prompting" steps. Prompt the LLM with the current instructions set (from the system prompt) and a conversation with the user and instruct the LLM to to refine its instructions. This approach allows the system to dynamically update and improve its own behavior, potentially leading to better performance on various tasks. This is particularly useful for tasks where the instructions are challenging to specify a priori. + +Meta-prompting uses past information to refine prompts. For instance, a [Tweet generator](https://www.youtube.com/watch?v=Vn8A3BxfplE) employs meta-prompting to enhance its paper summarization prompt for Twitter. You could implement this using LangGraph's memory store to save updated instructions in a shared namespace. In this case we will namespace the memoreis ```python # Node that *uses* the instructions def call_model(state: State, store: BaseStore): - instructions = store.search(("instructions",))[0] + namespace = ("agent_instructions", ) + instructions = store.get(namespace, key="agent_a")[0] # Application logic prompt = prompt_template.format(instructions=instructions.value["instructions"]) ... @@ -239,36 +281,18 @@ def update_instructions(state: State, store: BaseStore): prompt = prompt_template.format(instructions=instructions.value["instructions"], conversation=state["messages"]) output = llm.invoke(prompt) new_instructions = output['new_instructions'] - store.put(("instructions",), current_instructions.key, {"instructions": new_instructions}) + store.put(("agent_instructions",), "agent_a", {"instructions": new_instructions}) ... ``` ![](img/memory/update-instructions.png) -### Learn a profile - -The profile is generally just a JSON blob with various key-value pairs. When remembering a profile, you will want to make sure that you are **updating** the profile each time. As a result, you will want to pass in the previous profile and ask the LLM to generate a new profile (or some JSON patch to apply to the old profile). - -If the profile is large, this can get tricky. You may need to split the profile into subsections and update each one individually. You also may need to fix errors if the LLM generates incorrect JSON. - -![](img/memory/update-profile.png) -### Learn multiple memories - -Remembering lists of information is easier in some ways, as the individual structures of each item is generally simpler and easier to generate. - -It is more complex overall, as you now have to enable the LLM to *delete* or *update* existing items in the list. This can be tricky to prompt the LLM to do. - -You can choose to circumvent this problem entirely by just making this list of items append only, and not allowing updates. - -Another thing you will have take into account when working with lists is how to choose the relevant items to use. Right now we support filtering by metadata. We will be adding semantic search shortly. - -![](img/memory/update-list.png) ## Few Shot Examples -LLMs can learn from examples. Few-shot learning lets you ["program"](https://x.com/karpathy/status/1627366413840322562) your LLM by updating the prompt with input-output examples to perform diverse tasks. While various [best-practices](https://python.langchain.com/docs/concepts/#1-generating-examples) can be used to generate few-shot examples, often the challenge lies in selecting the most relevant examples based on user input. +Sometimes it's easier to "show" than "tell." LLMs learn well from examples. Few-shot learning lets you ["program"](https://x.com/karpathy/status/1627366413840322562) your LLM by updating the prompt with input-output examples to illustrate the intended behavior. While various [best-practices](https://python.langchain.com/docs/concepts/#1-generating-examples) can be used to generate few-shot examples, often the challenge lies in selecting the most relevant examples based on user input. -LangChain [`ExampleSelectors`](https://python.langchain.com/docs/how_to/#example-selectors) can be used to customize few-shot example selection from a collection of examples using criteria such as length, semantic similarity, semantic ngram overlap, or maximal marginal relevance. +Note that the memory store is just one way to store data as few-shot examples. If you want to have more developer involvement, or tie few-shots more closely to your evaluation harness, you can also use a [LangSmith Dataset](https://docs.smith.langchain.com/how_to_guides/datasets) to store your data. Then dynamic few-shot example selectors can be used out-of-the box to achieve this same goal. LangSmith will index the dataset for you and enable retrieval of few shot examples that are most relevant to the user input based upon keyword similarity ([using a BM25-like algorithm](https://docs.smith.langchain.com/how_to_guides/datasets/index_datasets_for_dynamic_few_shot_example_selection) for keyword based similarity). See this how-to [video](https://www.youtube.com/watch?v=37VaU7e7t5o) for example usage of dynamic few-shot example selection in LangSmith. Also, see this [blog post](https://blog.langchain.dev/few-shot-prompting-to-improve-tool-calling-performance/) showcasing few-shot prompting to improve tool calling performance and this [blog post](https://blog.langchain.dev/aligning-llm-as-a-judge-with-human-preferences/) using few-shot example to align an LLMs to human preferences. -If few-shot examples are stored in a [LangSmith Dataset](https://docs.smith.langchain.com/how_to_guides/datasets), then dynamic few-shot example selectors can be used out-of-the box to achieve this same goal. LangSmith will index the dataset for you and enable retrieval of few shot examples that are most relevant to the user input based upon keyword similarity ([using a BM25-like algorithm](https://docs.smith.langchain.com/how_to_guides/datasets/index_datasets_for_dynamic_few_shot_example_selection) for keyword based similarity). +## Fin -See this how-to [video](https://www.youtube.com/watch?v=37VaU7e7t5o) for example usage of dynamic few-shot example selection in LangSmith. Also, see this [blog post](https://blog.langchain.dev/few-shot-prompting-to-improve-tool-calling-performance/) showcasing few-shot prompting to improve tool calling performance and this [blog post](https://blog.langchain.dev/aligning-llm-as-a-judge-with-human-preferences/) using few-shot example to align an LLMs to human preferences. \ No newline at end of file +Thank you for reading! This doc just scratches the surface of how to think about memory in LangGraph. Please comment below with more challenges you've run into using memory in production. From e21da046571c0abb631fa7e2b4f748687654ca07 Mon Sep 17 00:00:00 2001 From: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Date: Mon, 7 Oct 2024 15:09:30 -0700 Subject: [PATCH 14/21] changes --- docs/docs/concepts/memory.md | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/docs/docs/concepts/memory.md b/docs/docs/concepts/memory.md index 39264050b..36f8baf9b 100644 --- a/docs/docs/concepts/memory.md +++ b/docs/docs/concepts/memory.md @@ -224,25 +224,27 @@ This involves updating memory as a conceptually separate task, typically as a co This approach is not without its downsides, however. You have to think about how often to write memories. If it doesn't run in realtime, the user's interactions on other threads won't benefit from the new context. You also have to think about when to trigger this job. We typically recommend scheduling memories after some point of time, cancelling and re-scheduling for the future if new events occur on a given thread. Other popular choices are to form memories on some cron schedule or to let the user or application logic manually trigger memory formation. -## Managing memories +### Managing memories Once you've sorted out memory scheduling, it's important to think about **how to update memory with new information**. -We see the two ends of the spectrum being: continuously update a single document (memory profile), inserting new documents every time you receive new information. We will outline some tradeoffs below. Note that most people settle on a combination of memory types and update strategies depending on their use case. +There are two ends of the spectrum: on one hand, you could continuously update a single document (memory profile). On the other, you could only ever insert new documents every time you receive new information. -### Update a single profile +We will outline some tradeoffs between these two approaches below, understanding that most people will find it most appropriate to combine approaches and to settle on somewhere in the middle. -The profile is generally just a JSON document with various key-value pairs you've selected to represent your domain. When remembering a profile, you will want to make sure that you are **updating** the profile each time. As a result, you will want to pass in the previous profile and ask the LLM to generate a new profile (or some JSON patch to apply to the old profile). +#### Manage individual profiles + +A profile is generally just a JSON document with various key-value pairs you've selected to represent your domain. When remembering a profile, you will want to make sure that you are **updating** the profile each time. As a result, you will want to pass in the previous profile and ask the LLM to generate a new profile (or some JSON patch to apply to the old profile). The larger the document, the more error-prone this can become. If your document becomes **too** large, you may want to consider splitting up the profiles into separate sections. You will likely need to use generation with retries and/or **strict** decoding when generating documents to ensure the memory schemas remains valid. ![](img/memory/update-profile.png) -### Remember a list +#### Manage a collection of memories -Saving memories as lists of information simplifies some things. Each individual memory can be more narrowly scoped and easier to generate. It also means you're less likely to **lose** information over time, since it's easier for an LLM to generate new objects when it receives new information than it is for it to reconcile that new information with information in a single profile. This tends to lead to higher recall downstream. +Saving memories as an collection documents simplifies some things. Each individual memory can be more narrowly scoped and easier to generate. It also means you're less likely to **lose** information over time, since it's easier for an LLM to generate _new_ objects for new information than it is for it to reconcile that new information with information in a dense profile. This tends to lead to higher recall downstream. -This approach shifts some complexity to how you prompt the LLM to apply memory updates, as you now have to enable the LLM to _delete_ or _update_ existing items in the list. This can be tricky to prompt the LLM to do (some LLMs may default to always inserting; others may default to always updating). Tuning the behavior here is best done through evals, somethign you can do with a tool like [LangSmith](https://docs.smith.langchain.com/tutorials/Developers/evaluation). +This approach shifts some complexity to how you prompt the LLM to apply memory updates. You now have to enable the LLM to _delete_ or _update_ existing items in the list. This can be tricky to prompt the LLM to do. Some LLMs may default to over-inserting; others may default to over-updating. Tuning the behavior here is best done through evals, somethign you can do with a tool like [LangSmith](https://docs.smith.langchain.com/tutorials/Developers/evaluation). This also shifts complexity to memory **search** (recall). You have to think about what relevant items to use. Right now we support filtering by metadata. We will be adding semantic search shortly. @@ -250,12 +252,12 @@ Finally, this shifts some complexity to how you represent the memories for the L ![](img/memory/update-list.png) -## Representing memories +### Representing memories Once you have saved memories, the way you then retrieve and present the memory content for the LLM can play a large role in how well your LLM incorporates that information in its responses. The following sections a couple of common approaches. Note that these sections also will largely inform how you write and manage memories. Everything in memory is connected! -## Update own instructions +#### Update own instructions While instructions are often static text written by the developer, many AI applications benefit from letting the users personalize the rules and instructions the agent should follow whenever it interacts with that user. This ideally can be inferred by its interactions with the user (so the user doesn't have to explicitly change settings in yoru app). In this sense, instructions are a form of long-form memory! @@ -287,7 +289,7 @@ def update_instructions(state: State, store: BaseStore): ![](img/memory/update-instructions.png) -## Few Shot Examples +#### Few Shot Examples Sometimes it's easier to "show" than "tell." LLMs learn well from examples. Few-shot learning lets you ["program"](https://x.com/karpathy/status/1627366413840322562) your LLM by updating the prompt with input-output examples to illustrate the intended behavior. While various [best-practices](https://python.langchain.com/docs/concepts/#1-generating-examples) can be used to generate few-shot examples, often the challenge lies in selecting the most relevant examples based on user input. From 2baeebe5eaac5923a89be7d04c04fae1ae1678f1 Mon Sep 17 00:00:00 2001 From: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Date: Mon, 7 Oct 2024 15:26:00 -0700 Subject: [PATCH 15/21] Explain namespaces --- docs/docs/concepts/memory.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/docs/docs/concepts/memory.md b/docs/docs/concepts/memory.md index 36f8baf9b..2539d6dc5 100644 --- a/docs/docs/concepts/memory.md +++ b/docs/docs/concepts/memory.md @@ -176,7 +176,21 @@ trim_messages( ## Long-term memory -Long-term memory refers to the ability of a system to remember information across different conversations (or sessions). While short-term memory is always scoped to a "thread", long-term memory is saved within custom scopes, or "namespaces." +Long-term memory refers to the ability of a system to remember information across different conversations (or sessions). While short-term memory is always scoped to a "thread", long-term memory is saved within custom scopes, or "namespaces." You can think of namespaces like "folders" or "directories" on your computer. They're one way of organizing information into arbitrary collections. Common things to include in a namespace would be a user or organiation ID, a schema type, or other contextual information that makes it easier to manage. + +```python +from langgraph.store.memory import InMemoryStore + +store = InMemoryStore() +user_id = "my-user" +application_context = "chitchat" +namespace = (user_id, application_contest) +store.put(namespace, key="a-memory", {"rules": ["User likes short, direct language", "User only speaks English & python"], "my-key": "my-value"}) +# get the "memory" by ID +item = store.get(namespace) +# list "memories" within this namespace, filtering on content equivalence +items = store.search(namespace, filter={"my-key": "my-value"}) +``` When adding long-term memory to your agent, it's important to think about how & how often to **write memories**, how to **stores and manage memory updates**, and how to **recall & represent memories** for the LLM in your application. These questions are all interdependent; each technique has tradeoffs, and the right way to do so depends largely on your application's needs. LangGraph aims to give you the low-level primitives to directly control the long-term memory of your application, based on memory [Store](persistence.md#memory-store)'s. @@ -228,7 +242,7 @@ This approach is not without its downsides, however. You have to think about how Once you've sorted out memory scheduling, it's important to think about **how to update memory with new information**. -There are two ends of the spectrum: on one hand, you could continuously update a single document (memory profile). On the other, you could only ever insert new documents every time you receive new information. +There are two ends of the spectrum: on one hand, you could continuously update a single document (memory profile). On the other, you could only ever insert new documents every time you receive new information. We will outline some tradeoffs between these two approaches below, understanding that most people will find it most appropriate to combine approaches and to settle on somewhere in the middle. From e2049401d40f164a816d0f9f813f2419ea4f9b33 Mon Sep 17 00:00:00 2001 From: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Date: Mon, 7 Oct 2024 15:33:21 -0700 Subject: [PATCH 16/21] Context --- docs/docs/concepts/memory.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/docs/concepts/memory.md b/docs/docs/concepts/memory.md index 2539d6dc5..784eab75c 100644 --- a/docs/docs/concepts/memory.md +++ b/docs/docs/concepts/memory.md @@ -176,7 +176,9 @@ trim_messages( ## Long-term memory -Long-term memory refers to the ability of a system to remember information across different conversations (or sessions). While short-term memory is always scoped to a "thread", long-term memory is saved within custom scopes, or "namespaces." You can think of namespaces like "folders" or "directories" on your computer. They're one way of organizing information into arbitrary collections. Common things to include in a namespace would be a user or organiation ID, a schema type, or other contextual information that makes it easier to manage. +Long-term memory refers to the ability of a system to remember information across different conversations (or sessions). While short-term memory is always scoped to a "thread", long-term memory is saved within custom scopes, or "namespaces." + +Long-term memories are saved in a [store](persistence.md#memory-store). Each memory is a JSON document stored in a custom `namespace` under a distinct `key` in that namespace. You can think of namespaces like "folders" or "directories" on your computer. They're one way of organizing information into arbitrary collections. Common things to include in a namespace would be a user or organiation ID, a schema type, or other contextual information that makes it easier to manage. To take the analogy further, the `key` would be akin to the memory's "filename", and the value would contain the contents. This permits arbitrary hierarchical organization of memories while still letting you organize and search memories using content filders to support cross-cutting searches. ```python from langgraph.store.memory import InMemoryStore From e303117a452befd4aae9ba662fd5b1e554a13281 Mon Sep 17 00:00:00 2001 From: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Date: Mon, 7 Oct 2024 15:40:51 -0700 Subject: [PATCH 17/21] Rename --- docs/docs/concepts/memory.md | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/docs/docs/concepts/memory.md b/docs/docs/concepts/memory.md index 784eab75c..156d286da 100644 --- a/docs/docs/concepts/memory.md +++ b/docs/docs/concepts/memory.md @@ -178,7 +178,7 @@ trim_messages( Long-term memory refers to the ability of a system to remember information across different conversations (or sessions). While short-term memory is always scoped to a "thread", long-term memory is saved within custom scopes, or "namespaces." -Long-term memories are saved in a [store](persistence.md#memory-store). Each memory is a JSON document stored in a custom `namespace` under a distinct `key` in that namespace. You can think of namespaces like "folders" or "directories" on your computer. They're one way of organizing information into arbitrary collections. Common things to include in a namespace would be a user or organiation ID, a schema type, or other contextual information that makes it easier to manage. To take the analogy further, the `key` would be akin to the memory's "filename", and the value would contain the contents. This permits arbitrary hierarchical organization of memories while still letting you organize and search memories using content filders to support cross-cutting searches. +Long-term memories are saved in a [store](persistence.md#memory-store). Each memory is a JSON document stored in a custom `namespace` under a distinct `key` in that namespace. You can think of namespaces like "folders" or "directories" on your computer. They're one way of organizing information into arbitrary collections. Common things to include in a namespace would be a user or organiation ID, a schema type, or other contextual information that makes it easier to manage. To take the analogy further, the `key` would be akin to the memory's "filename", and the value would contain the contents. This permits arbitrary hierarchical organization of memories while still letting you organize and search memories using content folders to support cross-cutting searches. ```python from langgraph.store.memory import InMemoryStore @@ -194,21 +194,21 @@ item = store.get(namespace) items = store.search(namespace, filter={"my-key": "my-value"}) ``` -When adding long-term memory to your agent, it's important to think about how & how often to **write memories**, how to **stores and manage memory updates**, and how to **recall & represent memories** for the LLM in your application. These questions are all interdependent; each technique has tradeoffs, and the right way to do so depends largely on your application's needs. +When adding long-term memory to your agent, it's important to think about how & how often to **write memories**, how to **stores and manage memory updates**, and how to **recall & represent memories** for the LLM in your application. These questions are all interdependent: how you want to recall & format memories for the LLM dictates what you should store and how to manage it. Furthermore, each technique has tradeoffs. The right approach for you largely depends on your application's needs. LangGraph aims to give you the low-level primitives to directly control the long-term memory of your application, based on memory [Store](persistence.md#memory-store)'s. Long-term memory is far from a solved problem. While it is hard to provide generic advice, we have provided a few reliable patterns below for your consideration as you implement long-term memory. **Do you want to write memories "in the hot path" or "in the background"** -Memory can be updated either as part of your primary application logic (e.g. "in the hot path" of the application) or as a background task (as a separate function that generates memories based on the primary application's state). We document some tradeoffs for each appproach in [how to update memory](#how-to-update-memory) +Memory can be updated either as part of your primary application logic (e.g. "in the hot path" of the application) or as a background task (as a separate function that generates memories based on the primary application's state). We document some tradeoffs for each approach in [how to update memory](#how-to-update-memory) **Do you want to manage memories as a single profile or as a list of events?** -Managing memories as a single, continuously updated "profile" or "schema" is useful when there is well-scoped, specific information you want to remember about a user, organization, or other entity (including the agent itself). You can define the schema of the profile ahead of time, and then use an LLM to update this based on interactions. Querying the "memory" is easy since it's a simple GET operation on a JSON document.We explain this in more detail in [remember a profile](#remember-a-profile). This technique can provide higher precision (on known information use cases) at the expense of lower recall (since you have to anticipate and model your domain, and updates to the doc tend to delete or rewrite away old information at a greater frequency). +Managing memories as a single, continuously updated "profile" or "schema" is useful when there is well-scoped, specific information you want to remember about a user, organization, or other entity (including the agent itself). You can define the schema of the profile ahead of time, and then use an LLM to update this based on interactions. Querying the "memory" is easy since it's a simple GET operation on a JSON document.We explain this in more detail in [remember a profile](#manage-individual-profiles). This technique can provide higher precision (on known information use cases) at the expense of lower recall (since you have to anticipate and model your domain, and updates to the doc tend to delete or rewrite away old information at a greater frequency). Managing long-term memory as a collection of documents, on the other hand, lets you store an unbounded amount of information. This technique is useful when you want to repeatedly extract & remember items over a long time horizon but can be more complicated to query and manage over time. -Similar to the "profile" memory, you still define schema(s) for each memory. Rather than overwriting a single document, you instead will insert new ones (and potentially update or re-contextualize existing ones in the process). We explain this approach in more detail in [remember a list](#remember-a-list) +Similar to the "profile" memory, you still define schema(s) for each memory. Rather than overwriting a single document, you instead will insert new ones (and potentially update or re-contextualize existing ones in the process). We explain this approach in more detail in [remember a list](#manage-a-collection-of-memories) **Do you want to present memories to your agent as updated instructions or as few-shot examples?** @@ -260,7 +260,7 @@ The larger the document, the more error-prone this can become. If your document Saving memories as an collection documents simplifies some things. Each individual memory can be more narrowly scoped and easier to generate. It also means you're less likely to **lose** information over time, since it's easier for an LLM to generate _new_ objects for new information than it is for it to reconcile that new information with information in a dense profile. This tends to lead to higher recall downstream. -This approach shifts some complexity to how you prompt the LLM to apply memory updates. You now have to enable the LLM to _delete_ or _update_ existing items in the list. This can be tricky to prompt the LLM to do. Some LLMs may default to over-inserting; others may default to over-updating. Tuning the behavior here is best done through evals, somethign you can do with a tool like [LangSmith](https://docs.smith.langchain.com/tutorials/Developers/evaluation). +This approach shifts some complexity to how you prompt the LLM to apply memory updates. You now have to enable the LLM to _delete_ or _update_ existing items in the list. This can be tricky to prompt the LLM to do. Some LLMs may default to over-inserting; others may default to over-updating. Tuning the behavior here is best done through evals, something you can do with a tool like [LangSmith](https://docs.smith.langchain.com/tutorials/Developers/evaluation). This also shifts complexity to memory **search** (recall). You have to think about what relevant items to use. Right now we support filtering by metadata. We will be adding semantic search shortly. @@ -309,8 +309,4 @@ def update_instructions(state: State, store: BaseStore): Sometimes it's easier to "show" than "tell." LLMs learn well from examples. Few-shot learning lets you ["program"](https://x.com/karpathy/status/1627366413840322562) your LLM by updating the prompt with input-output examples to illustrate the intended behavior. While various [best-practices](https://python.langchain.com/docs/concepts/#1-generating-examples) can be used to generate few-shot examples, often the challenge lies in selecting the most relevant examples based on user input. -Note that the memory store is just one way to store data as few-shot examples. If you want to have more developer involvement, or tie few-shots more closely to your evaluation harness, you can also use a [LangSmith Dataset](https://docs.smith.langchain.com/how_to_guides/datasets) to store your data. Then dynamic few-shot example selectors can be used out-of-the box to achieve this same goal. LangSmith will index the dataset for you and enable retrieval of few shot examples that are most relevant to the user input based upon keyword similarity ([using a BM25-like algorithm](https://docs.smith.langchain.com/how_to_guides/datasets/index_datasets_for_dynamic_few_shot_example_selection) for keyword based similarity). See this how-to [video](https://www.youtube.com/watch?v=37VaU7e7t5o) for example usage of dynamic few-shot example selection in LangSmith. Also, see this [blog post](https://blog.langchain.dev/few-shot-prompting-to-improve-tool-calling-performance/) showcasing few-shot prompting to improve tool calling performance and this [blog post](https://blog.langchain.dev/aligning-llm-as-a-judge-with-human-preferences/) using few-shot example to align an LLMs to human preferences. - -## Fin - -Thank you for reading! This doc just scratches the surface of how to think about memory in LangGraph. Please comment below with more challenges you've run into using memory in production. +Note that the memory store is just one way to store data as few-shot examples. If you want to have more developer involvement, or tie few-shots more closely to your evaluation harness, you can also use a [LangSmith Dataset](https://docs.smith.langchain.com/how_to_guides/datasets) to store your data. Then dynamic few-shot example selectors can be used out-of-the box to achieve this same goal. LangSmith will index the dataset for you and enable retrieval of few shot examples that are most relevant to the user input based upon keyword similarity ([using a BM25-like algorithm](https://docs.smith.langchain.com/how_to_guides/datasets/index_datasets_for_dynamic_few_shot_example_selection) for keyword based similarity). See this how-to [video](https://www.youtube.com/watch?v=37VaU7e7t5o) for example usage of dynamic few-shot example selection in LangSmith. Also, see this [blog post](https://blog.langchain.dev/few-shot-prompting-to-improve-tool-calling-performance/) showcasing few-shot prompting to improve tool calling performance and this [blog post](https://blog.langchain.dev/aligning-llm-as-a-judge-with-human-preferences/) using few-shot example to align an LLMs to human preferences. \ No newline at end of file From 509f7dcd9bd098393b86ebfd14c33f100698d3ec Mon Sep 17 00:00:00 2001 From: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Date: Mon, 7 Oct 2024 15:45:10 -0700 Subject: [PATCH 18/21] spelling --- docs/docs/concepts/memory.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/docs/concepts/memory.md b/docs/docs/concepts/memory.md index 156d286da..6c2b449a9 100644 --- a/docs/docs/concepts/memory.md +++ b/docs/docs/concepts/memory.md @@ -17,15 +17,15 @@ Both are important to understand and implement for your application. Short-term memory refers to the ability to accurately remember previous turns within a single thread. A thread organizes multiple turns from a single conversation or session, similar to the way an email or slack thread groups messages in a single conversation. Reading from and writing updates to the memory is scoped to within a single thread. -LangGraph agents access short-term memory using checkpointed state. Using chatbots as a common example, the state would contain conversation history as a list of chat messages. Every user request and every assistant response is appended as a message to the state. LangGraph saves the state updates in checkpoints scoped by the conversation's distinct [thread](persistence.md#threads) ID. For every subsequent user request, LangGraph can load the state from the appropriate checkpoint so your chatbot can see the entire conversation history. +LangGraph agents access short-term memory using checkpointed state. Using chatbots as a common example, the state would contain conversation history as a list of chat messages. Every user request and every assistant response are appended as messages to the state LangGraph saves the state updates in checkpoints scoped by the conversation's distinct [thread](persistence.md#threads) ID. For every subsequent user request, LangGraph can load the state from the appropriate checkpoint so your chatbot can see the entire conversation history. If a user uploads files, if the bot generates code artifacts, or if the agent performs other side-effects, all of these objects could be stored and checkpointed as a part of your graph's state. That way, your bot can access the entire shared context for each conversation while keeping the context for each conversation separate from others. -Since conversation history is the most common form of representing short-term memory, in the next section, we will cover techniques for managing conversation history when interactions become **long**. +Since conversation history is the most common form of representing short-term memory, in the next section, we will cover techniques for managing conversation history when interactions become **long**. If you want to stick to the high-level concepts, continue on to the [long-term memory](#long-term-memory) section. Long conversations pose a challenge to today's LLMs. The full history may (a) not even fit inside an LLM's context window, resulting in an irrecoverable error. Even _if_ your LLM technically supports the full context length, most LLMs (b) still perform poorly over long contexts. They get "distracted" by stale or off-topic content, all while suffering from slower response times and higher costs. -Managing short-term memory is really an exercise of balancing [precision & recall](https://en.wikipedia.org/wiki/Precision_and_recall#:~:text=Precision%20can%20be%20seen%20as,irrelevant%20ones%20are%20also%20returned) with your application's other performance requirements (latency & cost). As always, it's important to think critically about how you represent information for your LLM and to look at your data. We cover a few common techniques for managing message lists below and hope to provide sufficient context for you to pick the best tradeoffs for your application: +Managing short-term memory is an exercise of balancing [precision & recall](https://en.wikipedia.org/wiki/Precision_and_recall#:~:text=Precision%20can%20be%20seen%20as,irrelevant%20ones%20are%20also%20returned) with your application's other performance requirements (latency & cost). As always, it's important to think critically about how you represent information for your LLM and to look at your data. We cover a few common techniques for managing message lists below and hope to provide sufficient context for you to pick the best tradeoffs for your application: - [Editing message lists](#editing-message-lists): How to think about trimming and filtering a list of messages before passing to language model. - [Managing messages within LangGraph](#managing-messages-within-langgraph): Some concepts that are helpful to know for managing messages within LangGraph. @@ -39,7 +39,7 @@ Chat models accept context using [messages](https://python.langchain.com/docs/co The most direct approach is to remove old messages from a list (similar to a [least-recently used cache](https://en.wikipedia.org/wiki/Page_replacement_algorithm#Least_recently_used)). -The typical technique for deleting content from a list in LangGraph is to return an update from a node telling it to delete some portion of the list. You get to define what this update looks like, but a common approach would be to let you return an object or dictionary specifying which values to retain. +The typical technique for deleting content from a list in LangGraph is to return an update from a node telling the system to delete some portion of the list. You get to define what this update looks like, but a common approach would be to let you return an object or dictionary specifying which values to retain. ```python def manage_list(existing: list, updates: Union[list, dict]): @@ -186,7 +186,7 @@ from langgraph.store.memory import InMemoryStore store = InMemoryStore() user_id = "my-user" application_context = "chitchat" -namespace = (user_id, application_contest) +namespace = (user_id, application_context) store.put(namespace, key="a-memory", {"rules": ["User likes short, direct language", "User only speaks English & python"], "my-key": "my-value"}) # get the "memory" by ID item = store.get(namespace) @@ -228,7 +228,7 @@ Humans form long-term memories when we sleep, but when and how should our agents #### Writing memories in the hot path -This involves creating memories while the application is running. To provide a popular production example, ChatGPT manages memories uses a "save_memories" tool to upsert memories as content strings. It decides whether (and how) to use this tool every time it receives a user message and multi-tasks memory management with the rest of the user instructions. +This involves creating memories while the application is running. To provide a popular production example, ChatGPT manages memories using a "save_memories" tool to upsert memories as content strings. It decides whether (and how) to use this tool every time it receives a user message and multi-tasks memory management with the rest of the user instructions. This has a few benefits. First of all, it happens "in real time". If the user starts a new thread right away that memory will be present. The user also transparently sees when memories are stored, since the bot has to explicitly decide to store information and can relate that to the user. @@ -246,7 +246,7 @@ Once you've sorted out memory scheduling, it's important to think about **how to There are two ends of the spectrum: on one hand, you could continuously update a single document (memory profile). On the other, you could only ever insert new documents every time you receive new information. -We will outline some tradeoffs between these two approaches below, understanding that most people will find it most appropriate to combine approaches and to settle on somewhere in the middle. +We will outline some tradeoffs between these two approaches below, understanding that most people will find it most appropriate to combine approaches and to settle somewhere in the middle. #### Manage individual profiles @@ -258,7 +258,7 @@ The larger the document, the more error-prone this can become. If your document #### Manage a collection of memories -Saving memories as an collection documents simplifies some things. Each individual memory can be more narrowly scoped and easier to generate. It also means you're less likely to **lose** information over time, since it's easier for an LLM to generate _new_ objects for new information than it is for it to reconcile that new information with information in a dense profile. This tends to lead to higher recall downstream. +Saving memories as a collection of documents simplifies some things Each individual memory can be more narrowly scoped and easier to generate. It also means you're less likely to **lose** information over time, since it's easier for an LLM to generate _new_ objects for new information than it is for it to reconcile that new information with information in a dense profile. This tends to lead to higher recall downstream. This approach shifts some complexity to how you prompt the LLM to apply memory updates. You now have to enable the LLM to _delete_ or _update_ existing items in the list. This can be tricky to prompt the LLM to do. Some LLMs may default to over-inserting; others may default to over-updating. Tuning the behavior here is best done through evals, something you can do with a tool like [LangSmith](https://docs.smith.langchain.com/tutorials/Developers/evaluation). @@ -271,15 +271,15 @@ Finally, this shifts some complexity to how you represent the memories for the L ### Representing memories Once you have saved memories, the way you then retrieve and present the memory content for the LLM can play a large role in how well your LLM incorporates that information in its responses. -The following sections a couple of common approaches. Note that these sections also will largely inform how you write and manage memories. Everything in memory is connected! +The following sections present a couple of common approaches. Note that these sections also will largely inform how you write and manage memories. Everything in memory is connected! #### Update own instructions While instructions are often static text written by the developer, many AI applications benefit from letting the users personalize the rules and instructions the agent should follow whenever it interacts with that user. This ideally can be inferred by its interactions with the user (so the user doesn't have to explicitly change settings in yoru app). In this sense, instructions are a form of long-form memory! -One way to apply this is using "reflection" or "Meta-prompting" steps. Prompt the LLM with the current instructions set (from the system prompt) and a conversation with the user and instruct the LLM to to refine its instructions. This approach allows the system to dynamically update and improve its own behavior, potentially leading to better performance on various tasks. This is particularly useful for tasks where the instructions are challenging to specify a priori. +One way to apply this is using "reflection" or "Meta-prompting" steps. Prompt the LLM with the current instruction set (from the system prompt) and a conversation with the user, and instruct the LLM to refine its instructions. This approach allows the system to dynamically update and improve its own behavior, potentially leading to better performance on various tasks. This is particularly useful for tasks where the instructions are challenging to specify a priori. -Meta-prompting uses past information to refine prompts. For instance, a [Tweet generator](https://www.youtube.com/watch?v=Vn8A3BxfplE) employs meta-prompting to enhance its paper summarization prompt for Twitter. You could implement this using LangGraph's memory store to save updated instructions in a shared namespace. In this case we will namespace the memoreis +Meta-prompting uses past information to refine prompts. For instance, a [Tweet generator](https://www.youtube.com/watch?v=Vn8A3BxfplE) employs meta-prompting to enhance its paper summarization prompt for Twitter. You could implement this using LangGraph's memory store to save updated instructions in a shared namespace. In this case, we will namespace the memories as "agent_instructions" and key the memory based on the agent. ```python # Node that *uses* the instructions From 36330170adeabc9607024c4c00ad04e3db490e80 Mon Sep 17 00:00:00 2001 From: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Date: Mon, 7 Oct 2024 15:51:16 -0700 Subject: [PATCH 19/21] fixlinks --- docs/docs/concepts/memory.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/concepts/memory.md b/docs/docs/concepts/memory.md index 6c2b449a9..2610efb0f 100644 --- a/docs/docs/concepts/memory.md +++ b/docs/docs/concepts/memory.md @@ -5,7 +5,7 @@ Memory in the context of LLMs and AI applications refers to the ability to process, store, and effectively recall information from past interactions. With memory, your agents can learn from feedback and provide more relevant outputs to users. This guide is divided into two sections based on the scope of memory recall: short-term memory and long-term memory. -**Short-term memory**, or thread-scoped memory, can be recalled _at any time_ **from within** a single conversational thread with a user. LangGraph manages short-term memory as a part of your agent's [state][#state]. State is persisted to a database using a [checkpointer](persistence.md#checkpoints), so the thread can be resumed at any time. Updates to short-term memory are triggered any time you invoke the graph or any time a step completes. +**Short-term memory**, or thread-scoped memory, can be recalled _at any time_ **from within** a single conversational thread with a user. LangGraph manages short-term memory as a part of your agent's [state](low_level#state). State is persisted to a database using a [checkpointer](persistence.md#checkpoints), so the thread can be resumed at any time. Updates to short-term memory are triggered any time you invoke the graph or any time a step completes. **Long-term memory** is shared **across** conversational threads. It can be recalled _at any time_ and in any node. Memories are scoped to any custom namespace, not just within a single thread. LangGraph provides [stores](persistence.md#memory-store) to let you save and recall long-term memories. @@ -64,7 +64,7 @@ def my_node(state: State): } ``` -LangGraph will call the `manage_list` "[reducer][reducer]" function any time an update is returned under the key "my_list". Within that function, we define what types of updates to accept. Typically, messages will be added to the existing list (the conversation will grow); however, we've also added support to accept a dictionary that lets you "keep" certain parts of the state. This lets you programmatically drop old message context. +LangGraph will call the `manage_list` "[reducer](low_level#reducer)" function any time an update is returned under the key "my_list". Within that function, we define what types of updates to accept. Typically, messages will be added to the existing list (the conversation will grow); however, we've also added support to accept a dictionary that lets you "keep" certain parts of the state. This lets you programmatically drop old message context. Another common approach is to let you return a list of "remove" objects that specify the IDs of all messages to delete. If you're using the LangChain messages and the [`add_messages`](https://langchain-ai.github.io/langgraph/reference/graphs/#langgraph.graph.message.add_messages) reducer (or `MessagesState`, which uses the same underlying functionality) in LangGraph, you can do this using a `RemoveMessage`. From 43b6e8e60eef4f2bde8620d7818c49864a2789df Mon Sep 17 00:00:00 2001 From: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Date: Mon, 7 Oct 2024 16:00:32 -0700 Subject: [PATCH 20/21] gs --- docs/docs/concepts/memory.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/docs/concepts/memory.md b/docs/docs/concepts/memory.md index 2610efb0f..224fa5040 100644 --- a/docs/docs/concepts/memory.md +++ b/docs/docs/concepts/memory.md @@ -28,7 +28,6 @@ Long conversations pose a challenge to today's LLMs. The full history may (a) no Managing short-term memory is an exercise of balancing [precision & recall](https://en.wikipedia.org/wiki/Precision_and_recall#:~:text=Precision%20can%20be%20seen%20as,irrelevant%20ones%20are%20also%20returned) with your application's other performance requirements (latency & cost). As always, it's important to think critically about how you represent information for your LLM and to look at your data. We cover a few common techniques for managing message lists below and hope to provide sufficient context for you to pick the best tradeoffs for your application: - [Editing message lists](#editing-message-lists): How to think about trimming and filtering a list of messages before passing to language model. -- [Managing messages within LangGraph](#managing-messages-within-langgraph): Some concepts that are helpful to know for managing messages within LangGraph. - [Summarizing past conversations](#summarizing-past-conversations): A common technique to use when you don't just want to filter the list of messages. ### Editing message lists From 9c004da36881fa5575a3a9b72992c59b76b92e69 Mon Sep 17 00:00:00 2001 From: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Date: Mon, 7 Oct 2024 16:00:43 -0700 Subject: [PATCH 21/21] other broken links --- docs/docs/concepts/memory.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/docs/concepts/memory.md b/docs/docs/concepts/memory.md index 224fa5040..8206b95c8 100644 --- a/docs/docs/concepts/memory.md +++ b/docs/docs/concepts/memory.md @@ -5,7 +5,7 @@ Memory in the context of LLMs and AI applications refers to the ability to process, store, and effectively recall information from past interactions. With memory, your agents can learn from feedback and provide more relevant outputs to users. This guide is divided into two sections based on the scope of memory recall: short-term memory and long-term memory. -**Short-term memory**, or thread-scoped memory, can be recalled _at any time_ **from within** a single conversational thread with a user. LangGraph manages short-term memory as a part of your agent's [state](low_level#state). State is persisted to a database using a [checkpointer](persistence.md#checkpoints), so the thread can be resumed at any time. Updates to short-term memory are triggered any time you invoke the graph or any time a step completes. +**Short-term memory**, or thread-scoped memory, can be recalled _at any time_ **from within** a single conversational thread with a user. LangGraph manages short-term memory as a part of your agent's [state](low_level.md#state). State is persisted to a database using a [checkpointer](persistence.md#checkpoints), so the thread can be resumed at any time. Updates to short-term memory are triggered any time you invoke the graph or any time a step completes. **Long-term memory** is shared **across** conversational threads. It can be recalled _at any time_ and in any node. Memories are scoped to any custom namespace, not just within a single thread. LangGraph provides [stores](persistence.md#memory-store) to let you save and recall long-term memories. @@ -63,7 +63,7 @@ def my_node(state: State): } ``` -LangGraph will call the `manage_list` "[reducer](low_level#reducer)" function any time an update is returned under the key "my_list". Within that function, we define what types of updates to accept. Typically, messages will be added to the existing list (the conversation will grow); however, we've also added support to accept a dictionary that lets you "keep" certain parts of the state. This lets you programmatically drop old message context. +LangGraph will call the `manage_list` "[reducer](low_level.md#reducers)" function any time an update is returned under the key "my_list". Within that function, we define what types of updates to accept. Typically, messages will be added to the existing list (the conversation will grow); however, we've also added support to accept a dictionary that lets you "keep" certain parts of the state. This lets you programmatically drop old message context. Another common approach is to let you return a list of "remove" objects that specify the IDs of all messages to delete. If you're using the LangChain messages and the [`add_messages`](https://langchain-ai.github.io/langgraph/reference/graphs/#langgraph.graph.message.add_messages) reducer (or `MessagesState`, which uses the same underlying functionality) in LangGraph, you can do this using a `RemoveMessage`. @@ -200,14 +200,14 @@ Long-term memory is far from a solved problem. While it is hard to provide gener **Do you want to write memories "in the hot path" or "in the background"** -Memory can be updated either as part of your primary application logic (e.g. "in the hot path" of the application) or as a background task (as a separate function that generates memories based on the primary application's state). We document some tradeoffs for each approach in [how to update memory](#how-to-update-memory) +Memory can be updated either as part of your primary application logic (e.g. "in the hot path" of the application) or as a background task (as a separate function that generates memories based on the primary application's state). We document some tradeoffs for each approach in [the writing memories section below](#writing-memories) **Do you want to manage memories as a single profile or as a list of events?** Managing memories as a single, continuously updated "profile" or "schema" is useful when there is well-scoped, specific information you want to remember about a user, organization, or other entity (including the agent itself). You can define the schema of the profile ahead of time, and then use an LLM to update this based on interactions. Querying the "memory" is easy since it's a simple GET operation on a JSON document.We explain this in more detail in [remember a profile](#manage-individual-profiles). This technique can provide higher precision (on known information use cases) at the expense of lower recall (since you have to anticipate and model your domain, and updates to the doc tend to delete or rewrite away old information at a greater frequency). Managing long-term memory as a collection of documents, on the other hand, lets you store an unbounded amount of information. This technique is useful when you want to repeatedly extract & remember items over a long time horizon but can be more complicated to query and manage over time. -Similar to the "profile" memory, you still define schema(s) for each memory. Rather than overwriting a single document, you instead will insert new ones (and potentially update or re-contextualize existing ones in the process). We explain this approach in more detail in [remember a list](#manage-a-collection-of-memories) +Similar to the "profile" memory, you still define schema(s) for each memory. Rather than overwriting a single document, you instead will insert new ones (and potentially update or re-contextualize existing ones in the process). We explain this approach in more detail in ["managing a collection of memories"](#manage-a-collection-of-memories) **Do you want to present memories to your agent as updated instructions or as few-shot examples?**