From e129638a87d1374cde9717a18c043b99f15cbc1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Constantin=20F=C3=BCrst?= Date: Sun, 3 Dec 2023 14:27:51 +0100 Subject: [PATCH] add benchmark plotting scripts using seaborn to display the results, the plots are also added --- .../benchmark-plotters/plot-cost-mtsubmit.py | 77 +++++++++++++ .../plot-perf-enginelocation.py | 80 +++++++++++++ .../plot-perf-submitmethod.py | 105 ++++++++++++++++++ .../plot-perf-enginelocation.png | Bin 0 -> 25443 bytes .../mtsubmit-bench/plot-cost-mtsubmit.png | Bin 0 -> 21397 bytes .../submit-bench/plot-perf-submitmethod.png | Bin 0 -> 34465 bytes 6 files changed, 262 insertions(+) create mode 100644 benchmarks/benchmark-plotters/plot-cost-mtsubmit.py create mode 100644 benchmarks/benchmark-plotters/plot-perf-enginelocation.py create mode 100644 benchmarks/benchmark-plotters/plot-perf-submitmethod.py create mode 100644 benchmarks/benchmark-results/cross-copy-bench/plot-perf-enginelocation.png create mode 100644 benchmarks/benchmark-results/mtsubmit-bench/plot-cost-mtsubmit.png create mode 100644 benchmarks/benchmark-results/submit-bench/plot-perf-submitmethod.png diff --git a/benchmarks/benchmark-plotters/plot-cost-mtsubmit.py b/benchmarks/benchmark-plotters/plot-cost-mtsubmit.py new file mode 100644 index 0000000..614ca33 --- /dev/null +++ b/benchmarks/benchmark-plotters/plot-cost-mtsubmit.py @@ -0,0 +1,77 @@ +import os +import json +import pandas as pd +from pandas.core.ops import methods +import seaborn as sns +import matplotlib.pyplot as plt + +x_label = "Copy Type" +y_label = "Time in Microseconds" +var_label = "Thread Counts" +thread_counts = ["1t", "2t", "4t", "8t", "12t"] +thread_counts_nice = ["1 Thread", "2 Threads", "4 Threads", "8 Threads", "12 Threads"] +engine_counts = ["1e", "4e"] +engine_counts_nice = ["1 Engine per Group", "4 Engines per Group"] + +data = { + x_label : thread_counts_nice, + engine_counts_nice[0] : [], + engine_counts_nice[1] : [], +} + + +def index_from_element(value,array): + for (idx,val) in enumerate(array): + if val == value: return idx + return 0 + + +# Function to load and process the JSON file for the multi-threaded benchmark +def load_and_process_mt_json(file_path): + with open(file_path, 'r') as file: + data = json.load(file) + + # Extracting count from JSON structure + count = data["count"] + + # Extracting time from JSON structure for elements 0 to count + times = [data["list"][i]["report"]["time"]["combined_avg"] for i in range(count)] + + # Calculating the average of times + average_time = sum(times) / count + + return average_time + + +# Function to plot the graph for the new benchmark +def plot_mt_graph(file_paths, engine_label): + times = [] + + for file_path in file_paths: + # Load and process JSON file for the new benchmark + time_microseconds = load_and_process_mt_json(file_path) + times.append(time_microseconds) + + engine_index = index_from_element(engine_label,engine_counts) + engine_nice = engine_counts_nice[engine_index] + + data[engine_nice] = times + + +# Main function to iterate over files and create plots for the new benchmark +def main(): + folder_path = "benchmark-results/mtsubmit-bench/" # Replace with the actual path to your folder + + for engine_label in engine_counts: + mt_file_paths = [os.path.join(folder_path, f"mtsubmit-{thread_count}-{engine_label}.json") for thread_count in thread_counts] + plot_mt_graph(mt_file_paths, engine_label) + + df = pd.DataFrame(data) + dfm = pd.melt(df, id_vars=x_label, var_name=var_label, value_name=y_label) + + sns.catplot(x=x_label, y=y_label, hue=var_label, data=dfm, kind='bar', height=5, aspect=1, palette="viridis") + plt.savefig(os.path.join(folder_path, "plot-cost-mtsubmit.png")) + plt.show() + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/benchmarks/benchmark-plotters/plot-perf-enginelocation.py b/benchmarks/benchmark-plotters/plot-perf-enginelocation.py new file mode 100644 index 0000000..6be1dd6 --- /dev/null +++ b/benchmarks/benchmark-plotters/plot-perf-enginelocation.py @@ -0,0 +1,80 @@ +import os +import json +import pandas as pd +from pandas.core.ops import methods +import seaborn as sns +import matplotlib.pyplot as plt + +x_label = "Copy Type" +y_label = "Time in Microseconds" +var_label = "Configuration" +types = ["intersock-n0ton4", "internode-n0ton1"] +types_nice = ["Inter-Socket Copy", "Inter-Node Copy"] +copy_methods = ["dstcopy", "srccopy", "xcopy"] +copy_methods_nice = [ "Engine on DST-Node", "Engine on SRC-Node", "Cross-Copy / Both Engines" ] + +data = { + x_label : types_nice, + copy_methods_nice[0] : [], + copy_methods_nice[1] : [], + copy_methods_nice[2] : [] +} + + +def index_from_element(value,array): + for (idx,val) in enumerate(array): + if val == value: return idx + return 0 + + +# Function to load and process the JSON file for the new benchmark +def load_and_process_copy_json(file_path, method_label): + with open(file_path, 'r') as file: + data = json.load(file) + + # Extracting time from JSON structure + if method_label == "xcopy": + # For xcopy method, add times from two entries and divide by 4 + time_entry1 = data["list"][0]["report"]["time"]["combined_avg"] + time_entry2 = data["list"][1]["report"]["time"]["combined_avg"] + time_microseconds = (time_entry1 + time_entry2) / 4 + else: + # For other methods, use the time from the single entry + time_microseconds = data["list"][0]["report"]["time"]["combined_avg"] + + return time_microseconds + + +# Function to plot the graph for the new benchmark +def plot_copy_graph(file_paths, method_label): + times = [] + + for file_path in file_paths: + # Load and process JSON file for the new benchmark + time_microseconds = load_and_process_copy_json(file_path, method_label) + times.append(time_microseconds) + + method_index = index_from_element(method_label,copy_methods) + method_nice = copy_methods_nice[method_index] + + data[method_nice] = times + + +# Main function to iterate over files and create plots for the new benchmark +def main(): + folder_path = "benchmark-results/cross-copy-bench/" # Replace with the actual path to your folder + + + for method_label in copy_methods: + copy_file_paths = [os.path.join(folder_path, f"{method_label}-{type_label}-1mib-4e.json") for type_label in types] + plot_copy_graph(copy_file_paths, method_label) + + df = pd.DataFrame(data) + dfm = pd.melt(df, id_vars=x_label, var_name=var_label, value_name=y_label) + + sns.catplot(x=x_label, y=y_label, hue=var_label, data=dfm, kind='bar', height=5, aspect=1, palette="viridis") + plt.savefig(os.path.join(folder_path, "plot-perf-enginelocation.png")) + plt.show() + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/benchmarks/benchmark-plotters/plot-perf-submitmethod.py b/benchmarks/benchmark-plotters/plot-perf-submitmethod.py new file mode 100644 index 0000000..1b5e4ed --- /dev/null +++ b/benchmarks/benchmark-plotters/plot-perf-submitmethod.py @@ -0,0 +1,105 @@ +import os +import json +import pandas as pd +from pandas.core.ops import methods +from typing import List +import seaborn as sns +import matplotlib.pyplot as plt + +x_label = "Size of Submitted Task" +y_label = "Time to Copy 1 KiB in Microseconds" +var_label = "Submission Type" +sizes = ["1kib", "4kib", "1mib", "1gib"] +sizes_nice = ["1 KiB", "4 KiB", "1 MiB", "1 GiB"] +types = ["bs10", "bs50", "ms10", "ms50", "ssaw"] +types_nice = ["Batch, Size 10", "Batch, Size 50", "Multi-Submit, Count 10", "Multi Submit, Count 50", "Single Submit"] + +data = { + x_label : sizes_nice, + types_nice[0] : [], + types_nice[1] : [], + types_nice[2] : [], + types_nice[3] : [], + types_nice[4] : [] +} + +stdev = {} + + +def index_from_element(value,array): + for (idx,val) in enumerate(array): + if val == value: return idx + return 0 + + +def load_and_process_submit_json(file_path,s,t): + with open(file_path, 'r') as file: + data = json.load(file) + time_microseconds = data["list"][0]["report"]["time"]["combined_avg"] + if t not in stdev: stdev[t] = dict() + stdev[t][s] = data["list"][0]["report"]["time"]["combined_stdev"] + return time_microseconds + + +def stdev_functor(values): + v = values[0] + sd = stdev[v] + return (v - sd, v + sd) + + +# Function to plot the graph for the new benchmark +def plot_submit_graph(file_paths, type_label): + times = [] + + type_index = index_from_element(type_label,types) + type_nice = types_nice[type_index] + + idx = 0 + for file_path in file_paths: + time_microseconds = load_and_process_submit_json(file_path,sizes_nice[idx],type_nice) + times.append(time_microseconds) + idx = idx + 1 + + # Adjust time measurements based on type + # which can contain multiple submissions + if type_label in {"bs10", "ms10"}: + times = [time / 10 for time in times] + elif type_label in {"ms50", "bs50"}: + times = [time / 50 for time in times] + + times[0] = times[0] / 1 + times[1] = times[1] / 4 + times[2] = times[2] / 1024 + times[3] = times[3] / (1024 * 1024) + + data[type_nice] = times + + +# Main function to iterate over files and create plots for the new benchmark +def main(): + folder_path = "benchmark-results/submit-bench/" # Replace with the actual path to your folder + + for type_label in types: + file_paths = [os.path.join(folder_path, f"submit-{type_label}-{size}-1e.json") for size in sizes] + plot_submit_graph(file_paths, type_label) + + df = pd.DataFrame(data) + dfm = pd.melt(df, id_vars=x_label, var_name=var_label, value_name=y_label) + + error_values: List[float] = [] + for index,row in dfm.iterrows(): + s = dfm[x_label][index] + t = dfm[var_label][index] + error_values.append(stdev[t][s]) + + dfm["Stdev"] = error_values + + print(dfm) + + sns.catplot(x=x_label, y=y_label, hue=var_label, data=dfm, kind='bar', height=5, aspect=1, palette="viridis", errorbar=("ci", 100)) + plt.title("Performance of Submission Methods - Copy Operatione tested Intra-Node on DDR") + plt.savefig(os.path.join(folder_path, "plot-perf-submitmethod.png")) + plt.show() + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/benchmarks/benchmark-results/cross-copy-bench/plot-perf-enginelocation.png b/benchmarks/benchmark-results/cross-copy-bench/plot-perf-enginelocation.png new file mode 100644 index 0000000000000000000000000000000000000000..98f085dd8b5053da221e1425c39886cc5fde2057 GIT binary patch literal 25443 zcmeIa2UM2lwk?b?#zaA4iy#OVP*IdFDgt)>L;>kiRRjd2_imzMEQo$0C?JR+RY2(- z6&01H`8Rtsw*q51_sUdD&~WO?|64GRnVDf)L# zq-=yS3(M(J#{NAjj)8rRPOislW@f*Pt=Ydf+=Sor=IS+-Dtp)@k_`DHt5q(p%&FP6 zOm)?7SJfmuO+xj5lZ#0`psFRdr-=Wx4@anfW&D9cku$S1mVLeAi$%`mw~n~(8f`O- z&n~VDwh645EPhuv`JOdT_%*D9Jr&c3(uIvGI(*u9Q?fYfA9zYyzjq%W0+|0eqy+L9Yd6L z-{QrKH>pJ4Y-nguNj2B$Ys#*Fu8K$U?8MI*{ANvAC*Hn&+mT}1t;8t5CX}<0u~ODO z>*2$P;&weM^jmj#cazcwztSzeNx;3d@SXEK#c^ZnhdpAJExWg9rzu{!a)lYT_tFC6 zmS?}NlyObt6WFrlSWZrk^Fa1kWsG|KIWMP)VPhvJCjkiw)u5mt->O9{Ea&HYUkhF6 zSgM_2%b1-R%aw5ae6sf3wpF_v6$JzYOx`~Usm-sdQnl-;EX%O#HD8%gQC{xj>ucB_ zEaNs2R8#k)uggWIk<*zfW6!!@DGFvim5n^fM!H5w+?_HlXM3h6tz z?%;Jr6O-ulRnpFtOlREq=N5gZw`@1KcRVyG@HOslNH+`!4h{}86>FNe@E7rVZ(iA; zQ=^jylwD)YghQqW(#f$I5v0wB9${|!hZYhw`I$gg}r%m zI6X5nX5ZySiym{}UB$nZPU{u;Zc$cJV&XaZw!VLID$lm{#k`UJMy(ABK`O~6RY_;w zE^%^n-2Q+faywUlgImh9- z{+NH*t#yZ@?Ru-3VciuG1vNG5iAE)A@w(al4sY?@mZIKMN5_7fw{Y3YmC-BoT#wIN zuuSpMkvqe+M#1;;*;nlh^YK|GaqfNTIU74W)%!c`lFS=30&WEO`i56TDAb$bBOJx0 z2SX-Xo?p0n}-#bRW-7=FTe5&P+?_zh?dCF6_5LO6Yi6c%4g9URPJQqhnye zqVYC9;@RB3TkMV9-QCVTQ4z~HIirr;*%YN7uiH}=dih~!Xx{|VLZ(}uuxL`_*_XdB zK631sL~7_EZ%rjxyqU+<+qG+}#*+u{d<67sep#~QVOSU+gNcpFXK=Sl#(m1svvzbBiWmC3GU)^Y5eFRpC!TfIS-1g4Sh(~gM{`o>W8DVK@+p8jv zx8+n*$?P0{)0};#^ueC!#TU(#Kqh%KSBkLZw{41A^1jP=RzqcQj=Iq>)c&1qE z##VY^kn_iyZxv7NzqR7oSlP~bCadbY;YAsLgUuI<{o6B8XIpj`{;#WRTR%Swk0x9F z4SU<4#u}JAEOy|n&sLob=fb0X!V&U!KUOGxcYbNqSNV&fa!>Y8aV@5M6MS`467M)E zviJXkKT^Yf|NTdb)S{A-l3nH;o@>{xRf$wwlb)U)ga__5 zcLD>?nM*nJi+g+V%IY3Je%ybjUGz4KCP7(QS&6fyy8$JvPQJqZTK;mef7aT{>K1}J zUHZ$*rOdb@YXyIC#=1i{RC=ppM?T(GFhQ-~=`oXKSQ6CN5=~*i`eWnlox67Vm4*rtU|Mg27r(v#z`01BFJ_--_ugA{W63dAAr1v&o2MKZMH(1Nrz2q z;v~joC%V?DKGrzCYNu`K+uIu~OdqT3xv5%NS?#p#y1C7~A#$5p9f7=_@<-RsZ43Be z5qBgCa8ZDyLZ*G6lA~iV6bcZKd@r>@d9cLbCVGKU)-n!Cq4gVliyQp_8p!;b|tRcq*ZOxyY9 zn{5j~>@8co*eaqOz^G+$N0L}$x=m;G_)sT516V<9Aawe@zPFW&3_TFVK>P4awOGxS zyBwdGR6mY77O>42V2>H*HaQw~_}1D*aX@P)+jsm`NB^7PmwmA#c%WS^7`d$&TZrRmNMB{BXlaH&%F5= zp>zz{qAW@|!glZ@!$t~M@aI=@Wq7ZW3ZI#tENE78cCLX#7Vc+JG%H^6q%$cb^N=?WGYs3$Xggps)~#w%X9<3H zQvlaFn{{9{{`~oYb)5t{OP2GAmOZ7bR;-BVC<=%<^Om__!2%@&Mv`IC%0qq#XqNX@ zb*0k-9 zLHoeK!1=3q*ZIO7eS^$3`#d8(W@oN?d#fW~AU!47_i4U*{n}*kE5(J4vlhmVC7%roq ztacy3uXcAJgJou9^pwcX7M2DD1`6UK>qb*cb@_UQXa5guEB}N^_0$U0=y~X{trWLB zNlT58y1!%w&{8GS-fa11wWD`7sWSOq<>wPN6f-KewY0;lp3QDI>)NWF_Qd|v`w+A( z#@JleHa5yNaXM8wZZ7Tb?i7@@(~ez_g=hLmTIh~^s;&4(EFroi8kyoY9Y;|`w7jFMn8n(!TD2+`X)%Uzd;LzQ!LT^p>`jcpFJH>S7`M5#xbZ5> zx%hNm_pc!`lb^)AxObHI|MF`{NJw3}O~l;Iw4pv>Rb-H;oobkb@Om23ZT`97{m-85 z#(f!`okf~d4L^EsQtxN_(53P&V@$+(v_h~V`2RPc& zmVr;%{eygF_~eUA3#mBsb$`j{twClKH!kPfaw6g7^E>nqN3oulkt`6;%rNB$`6xsW zq5oyS{1V>P)g{H_fD22gJ-2eZ<%3$ozX29wjWV>McCEz+Su|#-mh2k3&evUUk$VS- zf%;WWF~hUK#}48h*o=f%qg}@b?fcsDz16Xg!sYKrqofs-lqeuhO7Dpo^-nnA^IBRF zgp*U_LxZ0`-=yo^AFGwBhR+*DdJWL~$wR6*NIK@mDyg2t5}DiH-rlu9J^#{kI1j$v zAmKJ)dtcT=7i~w5QOSIKD!UL?m0!-c5+7_g+;x15Zk7gest?~PS$A!a1F6!w=V2I@V#ktK<_@f2MbfL84$hW<(QLf3kcMDK95(8T~t|O+WDn>42 zTkri^Nmax4-uT?=>R7F0r=bqkd?h6%J_dRa`#${VL~&%qKXJ>jSru~r`OBBFe^Bxx zQ4WvD%c~)J3r9PHT;yXlli!VQNBXNeKW8r0<@UF?JHw{|2^w=wad6g|i<>uWNAB2E zPur)ZwLPgoj_)lVD7IHQug6q~e*O&xGg>V+8o0#B{VP{v#zcX+KLpm zMJJ=uwGge&GNg``5+)6{+Un}+PR`DCXz8A%b9#mZNxSqs&F8sYWT=d{poP&-KftCbu!2s>dgkL5TV3xgX!Z|Ke8NtVkdjLsM>c zc6RCUkGJj3umq|zQ{zRW06CjPMV0pK*+V4(rSMM-HIs!ezt3PW%8&|2+Pr0Z@N<*m zgY%oz9!KI`J?Wi6nHxGalFr^bt*;MWW7BdWU2SjKnY51L`!Oi{jkmuHTsnWAg^hcA zY5$5}Q_Sk4(WKqjyr7sXBLe6X2~&HEW|D9{*surKlQF*A}YI5M0^fR_3NGtdIOEh_5cQNL8*iolQ$+S1$5CSX@Zp1K;SJ=u{O-ogRD>D=GYtQ3+`e4{1XLAjUGk~C z9~cO0CQ6Wxke&=yu;-DVZh5fBjPVVyej!(vZ#L;Dytm-TA8&&As!KLCa_7_qY@HbC zjXGN^7`=PG!Y1BdqT6Eh77m&_w{Yb6Ru1!kh{O#YA+BxwE>H`w?9A> z)Qw16ww&)M364kZHEDfu37tVj=0MJ7hW{?7goEBZv1<=p-MC}NjtVU{Ii=3x`y=_h z9%oU$2;>bTUG`w%9flhSqFc4S7Fe@p4{oyt52*^UZ;MvS(fSlKW%MzXSxz?m{QL|i z1tdQ6EU+o%5o>Gf@U~)f4L~lXH`nY-GOgJP^dzT~X_UtNe`?Ov^E`FNX$+6u z*BE>P^)FM?)BFt7bQLt4$bg2bQA!8Oler{bzJBd5cUa1D4Wpj^~3?ZnE@us>gr$k_8eg@(x9h^pgSGpIEv?hv#@YqmiiG^hP*J7!GvjAM0 zPfq?iG1?cC&*O4*hfRmi<;(fUOnt(BTDpGYu3g&LSH65hLfFO zC!0?Id4LK$MK+*)bJ>uS&yK#M4wU9Cnq{!Xk3`7dFTb*MLuH1YX(01&~ zDGsKnd&Fz6B}S!2xbj zjk5K#PAirK6xnN~uFaWQxLd6cUGtk#`|-i{qr77!?V{jvt3JHCCUNS;_jd$OD4Cm^ zqe1c7s*~Z^;75>Us)rB1k&by}+g+Yv-F_9@!7!x{;erP%Iu`8s;U`9dmW5l} zfjcJv^t@i=(?hb!GKl0sH!J!ECsukY+6&73>?rOl=I7zPM;91 z4EtLzKpnPriDF;QZ9&?uu8L7tO*T<=8*6kpa`dPQo(AC8LwrPx`}D*ny__uSXYd)+ zhXJ%D_EbjQKJ`<6<3^o~q@J4icoZM{Rb7f%fb-}l0ZBKAaf`+OpCO*g6L5Ritoq(U;;hLP~gUCWPNX*MuuJms$5dtamt@~-P`1RLc z>oV+OUf)<1gKh!2;)KGkFBj1#J?`o{i_BOQEUSkeRT(tPoppy6NticiAh27d;|+l7 zoZIiH6W$&lA191SR1i7~{n7Ek0->r{ElDKOXq6}>(p^ByI2JtJARibB&WN-D=czCG z60Tn@@5{K=#gza9;Nc40*?4@fv9a;JtxnjckJc*$JqEPao1Pp~hrDq5^l8XEjhXH< zZvu<-}=i79fz*rx!IR#)n^g2!%s&vRzlm)+9#C*QB1)6pu;Vd2@n zS?zHtGNWpo_746H8%!Zbp!yK~v`S|s_Z#DV4$xG9_5E98)D;4^uUWCe&t+QxI!sHc zt$I0+sacuN&VvMUnHVR8q(R!!A9=ROyR0z)RY3}TEe9AFn(1I zfIiY0>_Pn>0K?tTg5NHnKWIv`(hu*=K+23k2e$LUTHv$QHmE9)lWYOMSo^Szt5FxY z6&K@IH+KM?QvCu`jpOY=siwt{NKF8t}$N^#g)>Iobh|7S&*C|7roH zDs&PJkHzZc>dwr}P@_1U$1WR*4!G{A{^cO24$ebJ+TbR4WKfU2T25Y~ z!mX_)Fi6I2X947xU7844;JUsp(VJHwX(gYlEiW_J?xS2}JNfl1MIjoEo2jWl2U?yo zo~NMtbz_??iu{@7{AB#8`m(V;ZMlvtyL#`R*x75qV~Hh6;%T7`&sbr=U}A&C5OI|F zr9T2F2Xu64Ly4bI@Kx|P(2`6*Xak~&dh296tD*|g2iSdlvlwtj02lG;3K@cRc0JMy6D@&SoOTpGs_Ay;M5J|eY4+(?3x>Ehj<0lNVF^40J#P8Z zrTR4;Jw46}C9NGD>m?;qU3PX%qeT|Ivqej-vn05t_`Z~c)8HA^NX0!wg*dhS4xZI* zqC0}T5Bnx-^i%bib8Fz<&SqVWy%8*%8Vj06|2?5r#>8lp)C>%pw{)FsF0y7VOr znj)!31i6i#pvALA`v~{ceK+a^G)0CHFlOj|rC_Tw8W99%ChlO&d5`ccqcNzk!A{HJ3TAxLB zg_I4Vt_sDtNQOe=;!jJ7XNc9!)D+pr0X0ygNl5(xKePbC!~o6_=Rj?7@a)tf5>mn070K|re*QIQYEaJY%c~Wd znf9^3>>=o2YQ1bW#AhbjM7Q%ZKUGWV%*J-VPL_Mz{R3hs(Xw?fF0CZa?Ca-N=b<9W zqG{T)7R|a$61CW6rxXFO|lW0&^d4UjfZ(A5+}4T9EQJ z`YmVN0Kd+p=O=VRQTwkfVTOTYGa2rZ(sI$uur+4XxPOV%Opb=$Um1Rk3l%ErTx|lW zTxcmk;op{8IeU;u9Q3{7fGtObTmvOceZdVq0I9GMA;k>C7Kp~PA+;aM0P#7-km-mu z<Dq)8gU%Grb25;%GhVcElC0ac`h=jhnIK2ov9pIv( z;GvEpdI-b`Fq0exbb(!8#d!dlSU5GI!xOWVQ+oc}ydsgYPqm?F#iG&v+k2)XK{IqJ3-8)<;rYBf~)~S{1CyZL{Po)>BWoRBP%^;Z75G3kY^|;)Idi@K&er->Lld(zU)#Jlftb_D4bb`MlxQ=Pm{V9B zaNk+XM!K;1Yt0Pz4(mvWjL}Muu7U>)^O&7%CUkZ12DfpIkl2?mUph*_v2fmSad9!l zA^|=61bNIjW$NFXmeO{J$waHSA$~INS$DPVB+v>X8PBa0us8;!S2QIZWZn^yhi7jR z(QzCx1d~W@oEf%`gM{HdQG<^?J<;eb0cFe0hsMToyY+E94^e#m%{*qOQ&BjL-hO}5 z**Swi;j?GY1dVGXYbF&)vHlky)pkXQzXm=E3jbXc-2| zhoAqI`6P&;gz2wHP6YWYKDXv!pUSvl({^NsCraf_DDd#`P(pzaxB6JHjL!T;+@*ld z!)1qf4V?9?7(`uYXxw!k?h2vM0Y6HzziOK0DbW6n$5%;COb+DUVKN_Hn9pv4NR8IZ z&7m$wDCg^5YLNJnjVlfkCyKU*YASWsZWF`DEiIp<&rF(wUOI$+vfM{N`BNPdY~(Jd z!ALp3t&}LJqyk4{*U1l#jNIX4;}G6WnG`uJqS<}&7`m;L0;7LK-A>zhtyFpFcIxF?NoUK}E*I1&HK#h4!pn=U-y(Nf4XIHTJ8=1`Rc1}uAI*LFpaUMH zYKjYuxOwwuLR+ZA`+ViZ323HU8%WPi4UtHLItPI6bBgiyekAU8!7qZ5sJPw9HM+`& z5C4wN_LM{Or(OvtoZ8QyKPSj=#BXaX0=}Wbv=N4vhv>=Y zp9<9LBAI=jtjCcFm-Fz%Aqy7dd+fytqo zls))v^Cqp7$Dwis_U0uaM$y5xf8f~E{*Sxa z+l)S*nsPm?^bhG-{w&&L|7~Xepz3?Nl+J5eXDk%BwtRCqift6u#iZ=vCEV;IbR{O} zzU`;Yv%XsiMKc%dlm_7Bab)6=0-@Zl>9OY2Oj+^It8Fq$-P+$R2U}oVcvr-^^S%S0 zK^F7wB-HfJpBYDwR!R+Ig(5&A&z3!0DSGC2SO!|V63(Bq!uucs9`XZT?${!jV zq=x?AD=zgzNF-?;8#875NTVG7z+$w!iyVG}2mk92_Dk>IYvkOUm;*6K++)V|kYB4X zfH9U+0j?_svOe?LwQFDnj8oCu&fkY(OgJ+ZHFIoumsx!Zw1CO}?z>|Z4$W>6Ag$km zjKsd7r|rqgd78)D%PZMs+SSdi3cLu}&ddYxtc*cyMk|K=hFm;?Y)0G~Ef-3sh4T!s z;yZv?Y|j+aU~yySci(;2-)-ZzY)9jkx$z6x+0{XIHMtHQL*y!M3n(h%pTpAf^YZ2^ zX%?MVJ=%(ks{r?3y?psT8G1m|g{w39XdBT`kJ%PZ8lZbIsfoJ}`$pBn0}Ii#Q6E|0 zCzRUT+1(w5ZSzi;6+G!tU>;>6T#ymki|=dsZPii2UQBYEwD-bZ059MZ5fMSUE$EF% zNV(A(Pd^;%eRF$*caviqTlVJ{3&H95y(*a~`vBn;Iy1P@#Nl|4X*p0uD##j*SP>p> z_{4ze66;-ET?^a5>JZ6-1j~<TS2Ea)Iq!ch7&R}GK6g5 zJwc8<%af~{kG;1X-90#vC@e2HtDNq;3s-Da!3GnDpiO86o7M!~rVKWJraP_|`~W3k zKyXTuumbFN8SB4eYo-Rhze+R5HJ!LQbez$SUq1AdhFl;y{lS9=g27tImUsO9qf2Ba z1qC&aD=$9!A8ocu%K zQ}}+eC;KxyzDPDX?h_Fafv>5$zcG{UkxDkG!_4lxAh7BZ46dOscz|ZGK$sO6q0+qj zHF{8@af$+WC?gf9Ay{?YMydjCbi-MMER0ytsdb9tV*uKff2vL7e;arw2ylu>4^(Y~ zuHen;TiZ#C5dn)o0^-6H4B}3Qe(i8KO7C;#{%{ti0;&RZ{c$>(CTL-qVUUfJ%^NjQ zSSrC$iUY5(@yaxqUnhi%8b_T3Okc66RQ|bvFkA}M$Nwq@2~HZUbM|PRDf@`Uesr6H zbpHr}S~LCE*Pr$-MV>{qCh-=&rb=)uNyZiH8Rht|O0=!ZFm?WF1QN4-brVYGerF0^Cr3kI2a-_WB{R za1R22riAR#0>qLl0Q8rkTa8DKGWNMz&@QKC%a`Bj{_;X-HnjvCse=cIqRtk%9Kd z96$%#%}hBFP1E1s&sn`nXSN7t&Fxr=k!7f?HKVX!)DrX1G_`{+^z-M^FKzk!4D29P z?6pr5>am(5zMX8~?ZJek>peNS$EHx)WwZ;AkIcA@`a}4-Z_6hIgdn3kr4p$Si1^WRF?*Ob;#wNgLqhZyHP&zcb!9MrtqFci)7A z#*ap*ofsYO{N5iVDiC5=Vcr>g-+P7<9V4^T&`t?oWx7jdz8Ny?oHBB|cVAL!#1{{l z|A>#`Sbw90^~b~W=Fc~UdxaWZK7m6wxI20^08t->g+-!ZX=Xbo^MSi~zjewe9M%T= zT=A))bh&a==En$yuKNy6Z-GpR-sn^fDa@HO z2YEQRyUv8MQvB>qGF@9V?IPNn3`r=0akyxMyRn3E;d6o+@YX5M@nG~}A;{8XA>uU5 z+_!fx`4y1YYtLz=n%^Iv0-O#70;eZNzVC1D8GHR*BbCZzS6HxY<7x$k60KYg_Bj!n z6+oTFnZb#5=s+&4gKrz=Yx{cWlXv>^#~@MUPLBq7vh&8l4AdQ9kwXe#*!9H7+V`J^)%dVG!?$4c3hLG;49%<*ZAph!e+%k3D#|QG7s(VN1HYD8a}H62m6FY_ zp#UAVjRx&%h`Vt7*+8QiegH+XZXjt8_l%|)T8ydgM$KGzH>zSV*Hj~^B?EP^uE+)| zJx&55stFlW@YD}OI$9}w@;oTdv3ke$z{|>)%z1fvZKQobv!PUrp2KAwvb9Y@QWa8A zP=MqXja)o|^z~m|z5%TVhf$L{kbuIFgW7BGidU z!WwEOoVkJwd8b`}KFAQXs?(jav$tS`^WCZwjYr=N>Yxk)QY=z9c>{Wyb8~}S2jA95 z_rgkC0qD?I2Mr?%D7qKvfDDTybZlI|{vg5*W!~2nL@P3`GS;vv+reNu79aLRk2%FHy2WkVNi10iUIKSwN zb@z>}twAo~6O2QCC$F#v2Yl*Uk}xdnevs#N$z|J4y|mvB)k9mR#-7~$utlYQR58u4 zU@cEw8g20i%!K_UBsf(pGvPc@gLh}k!x$@fSchq*ns4dW+&DHeQib~67dHdrMfEsf ztm>m9%ZV_{of^E>dUqzKO|+ ziJmvN)=91sf+Mrvb5y(GCzfZ8_s}D(mk;df5$MZ3J)ubx%%Rm>G%ppbn-k z(a76rSIp#bLqkXuPy|IKVTCI&0ag9%f){2CaOrAqnfy>jqAB;F@$rXvidhCe2BnPY zKgS>b9GkGZMQ;r)i1PD;Y;^$AZaGxqN?2$xiqM5kcM~WY8{R=(pUX2ODM=h*{tk`_ zT#JN-s7H4>KUE^cVrF-nj*iYi&o2jAK5y(!bv+M9@XHJCmw8#nykXY>&lgFM^~ez= zO-+BK(beFM2>q@Q(yc@hOOURnL<(QZo91RcvdIx7K+kIo&%__D8ngtk6b*ctA%a>Md2{s^dQ%$fuUWc z4h-^UH5|OeuAs?o2kVVRmOw`ioaJC^%t<;jnh4cfYYz~O0}B=Lms%<3tZa>$VQ2{6 z;NhSoXoZu@G(9~n?OT5e=V;^D~L?IZkO+WV-2`YS-+{NiF7e~vV;Y3 z)iBAG9LsA%zX$*pm$_ve3~|B%st(9s3^$<9P0$g60YbsA>Jn$5t=-@jyFm<*btgAB z7p#L@g$&ZE30$kBIrY`2#sHbWgS-psz=n5oaw-@{a>FDq->BFU6x22m8^pUG?oA!| zx#216g;@+aI2)`YKlKXGQR<~<=cDm! z0}?26XmUEl1Rng)eh5i-SZE-^Y=S8VQ%Q#*>`8jNK?o$)3D}ibRuCf%N%DEZ%K*|5 zx3MP@4;J}LCOP3Ft3CyYBN*|N>9L$l~Cu3+DL*&H%HwPW|OGm zVr773{P-ARhJ}h~h{OtIa?#5|ptbRh?}We@k1}?qHov}J3#}h!O==*P(*HY)OmFX& z;H)$EyYKjPGWT36G87w&57=Q74s8Are2aZwT{nRAiRyJa3*Y0t_F6Z%YaVuu)DY69 z9+H47rnDT zLnjT3Ly~p-5!xl+#z(wX@-v9ow}W*WPMK$)W|7m3VQc~H?LB5nxdJ5@QjvXy%q;O3 zvD)c0Q6g4vK9XUMnZEL5&Y_PV&)DcO$s&WU)f8{04j8h_FibConLz<3(ybrSZ?Vg0 zy5Oppmny)YQx+P!2|U3h_^(LeC$F^~C>^aEQh?vt6Fo8HqeVAGMt5w`!x^Im-@Gy8 z;CTOZpG`+$85XL@qoCf6-QX2$WQWU<`G$!dgHDD4xKt_oHj8wui^%9evrwLJg7yL{ zGWtdW-P%tga7pdryO-GZho8j9$A=H%9qfX7>DKK^NbBT2_~whEU4|5`ORN+$;qe0w z_rR_BglSdpM2|_HF9f@=$E~~267gi?Fho@{^_oJy7uVwhSModGEiveHOyMS`Y7BoA zl`v3DU9VQ?iRW)o3i}vP4gk`f ztvZ_6<`vi|RiTI2vCA#UXaY|4acQX{qa0s^Z16y^M1T>WGZ76~yq-ZEKivhgNDR7Q zX8>C=vce>%$fSuv0p;*W_=Lf8oEhUrc1m1=u{ei_Gyri! z)7MV;UIeOSDsHrXl@OpNh|YW6X~bcH^$c?E5g2j=-oc)xwv^BvA})Q}UApXHHE{2ZO&zY*vY;tf_~xo%GA`_cOYfV7ysNG-q{y&9?e1-# z?j=4Ro{D+Gh1*bk$<#zm69pDVzldl6E#Ql;pT;_{h({oPR%%&fKU%PSQy0R3sAe4& zRyH@mK^gleu5j~LCw9%U3G63G$J)XFE@bjm|zGa7%7_n$E}z5*-o5jbVQ4@9Ax zrJ%t5h9W4Mld2yF)p*S~S;gQ2pL|#?2D8hi6A5AI(>C`V)!KAtFLec*SGy-##mnaQ zwuMJT0L|*!4_v}S-Yg<=9L@KeL227eWZ7UiebMY?wp%!3`&#k1d=eqOfbOsHm2pku zrmTw>FH$>bZ-$ydvOxMkM@Kl-5VRm5Kkrn>>&2r*JHmurO9d?(0XgU&rLB3Fli?iz zbbLQ=H)rVyT%@$y=XxsnLl{^nL5Yd@1HTkP@Y4b1?$*fK_` zg%7d5#5TjH8U^yBpt*TAJpKSs$RbRfphO#v`x|sjunvwmCk$nDfGw#Q*l%@_dVKtu z3`w;qNa#`vawW-`p9H}=bL_=P-^2>xrcd9V!P6Y*4HG3EGi~1tQCnP5w#f)e-e0IR z@{nptQG>8UP)Lwh>hJp180xH<%ec5=NG~Fd5=MCmNZsTh(0F>9GBv4ZU%xsM?@9$5 zp-AmscRGxs5N0UpQ!L3&58tNwBhYCiVRW$CK%O9x(yqJw0DUlS3yD*fxC-r(Eew#| z<+SaIYeF)qMhhNGW#||OwaR#Jg;B7ZVXCjRShL4$Hh4>m)HCgdG-iNFQ6e13S_zlZ za&GQ(o;_OGaplPdd;o6h7&(&%bSbcDdIzQp%Gl}DMn?zcV;^KRP^jwgs)3zdPaFci z+b1AEE5&cCfgvbfbne+iCF5q{+#)dzUmMKVIO?)-Gi*WaX;y8+aP6BS?}Mt*_LODp zKX712Bk3`RHTy;#`_nrq52Gk<2LFQHp$zz^!wYhOw1f#f)GAO*f_m2o z&+25@zD+2xs~I>C7w$*U%JeqaC}C!)b=KkUzQ8V1ikw3dZIor}3pn^JQ;OZh?#-*h zQ|^VAwYa*?sPJxxx~|g!@WH-F3#9CUZrQ95w97$TnZ!T1!oiLAfR4R&ii6mBME+)m z!!S<*axvd>0( ziWf=$*O~9`PId!?`T@ZcHi9d^xU9W_Sy60z=)i$)RO_tvdEe#>9s-D+MdsFgdioMZ z8=MPrVB_<)ZPCTwNdkpVCjjRZsXV)PKU>u-Iq7awSK8Op=b+<0?G*mKV8l z8D9+h?Y)LW!vP71%Ly$=(}%t$2^kn|+ga2nFdXMRo2?N~y$@(EhQ$THN9G{)fUy*`p4b@Xqs;ca!doqWD70;U0IHu1j5$bmtoi?O z@CDN2y@1@@S?Tx{czN-!V2i*oQ~+pE*Rotd>E*exp`qJAyaT>4>yr!CjOf0jr$K%y*%R*jkFGUL?hrU zVGhU(EE|Qf9ep3J_K(S32&)1cHy(zRL(Lz&P0Pf6&&LengE!S~`#o9zKTfsq;t<&z6&2NCk1;yAUS!f|7p|4MEd+drv7iEbr6>iQmjE&p zPcz}zzgn=j|gP&16BY2=$Ysy_t^K zU}vlTU!NrL-+H3O|HU8H>`BHW1j0MGQb@prYh`-|AFaWhy$;*RAr0F@C6oeKDz-@v z6^bG7uV8G1TZc+HkLAVwa~P`s)(XJ5Q1T zY{*K`NA6#U2H3#(Hx3LbZUF`^N1(Lh$cUPL@RlHJj`H3HCxT62Ba2R%X^Z0KqE>UK zV8uYK20Jrm1=}G%%MzWPe)hfc@?E+)!LgtJP;OoteYAIUbcD;jamZ?p24bCSW}J6N zp0N1@Zw@p7@LG6vo3YrKTe?< zbJb?4UTbTV2Qn)zaEFcIU&qDt()lbvc>$9kbjXPYezJu1)!Y_{Q^b3Mi5Qm^TD{cu zAdfcS0_Gl`ty*nsv=4foDhzR$t|Z@#Xg!*#=qFE}9OZ2T(GD&*a~oXMn+sm9`aC?$ zr^s@mMeIA4u^&RD0?2rP9!da%ns`<<5cbGH`OUZ(Do03T?v2v>$Iu&9q3epp*KY=Z zr2_6g(Y*nMvaswC?dds(x^mda-vD`RmCg_SbMT$S1atbb%t`Ys`H`hTYg?W$Pw}Jz zl?wJBbGQjG|H}a^-brwTnYaJg@PmvPi>1+zjlyKqh21=Lgaf=Q+8-??Z$4uE(9Zg2 zWo1E;4nc21Ctdj7AFwAEBPecgSs4a;dBQY0N1jpgpI|PFq$8x*ZWwZ_S1gp&yLC&T-^eobhFM8r;#I zDddKSW)^%UGZOa0tcG+BIiCVcGT0;pe?9@Q{g4!Xcg5+n1#`e+EmX| zXF<_!(#=W(&!iHvcb?m1Un-7~*;tK92IfbMAYgf6;yIc>je!;N-w@aA46_UAnwX{A zh*koVJ;M3qb4Gu!3KKVM4$*KN(irBB;*k@D*y@@nG>T~R(GQ=XU?@+n9R^)z_@frM z1|=AJZ81}Fv^OuitqTvGWGD#qfQ0T9GJiV`VebaAO*QH4aXL&3svEg##je}LWXyI` zCq}H0Rog-0GC&5Ad6o>hAPOK332BY!==F#KE5H&$y)F4>VBg%-UDwGEq)Ux@<2YGa zv4O60+OdrJ&6!fimc5QpvB|}D^n^eO5$@Ed`qYxUFm9hpti2AqDhE!#1E7%PsIJn%COK*hzN9QW_ve^*~l6t;_#uHfunqqts2+#5w2 zL1=xwRAJYtPYvlq;SweHrE1>5IQRt~V@}Xi5;9*~=B`6vzQ(S=sfO1xJPd>jv*vAg9*$hRWXWk;&^p*938y$bzran#g-x-IR2;g# z->+N|0V43iW90;IB9b%NFSU>P6w=qa9Xo2b7%F+w>xe^#&#G7pOj)>5rX51+QiN+di7dWD==*I z5ocHY$i^mt?=ymK_=<)f@S$ur*Ws7vK=MrCN(D#y8jP!5!O+}i+55XZ1rk3i#;9${ zl!2311ZEiXemPO7K}I#5U`RwD9{1JJ81pi?sr#)^R|^w@AX}}(tcnC5CzM?=&?lzf z)*fVYkqq{TFyi#oSQ_Rg%g*9_7%b0I3{*qP=6;PK0x{|Qkv4 zwBkQ(jo2Anv`XZxK-8l6%?Ojn_gq6-86t-&I*yo9;DF;Ib(gGp^M%p$^ckL7P@hlX z7+;4-d5x6EmiL6c5l$vCK2CBxjK2plUSMfsBbGDX!G(_vMN}Mwq}BJ@qCO>7r>j`L zQE~!$Asgc$JUPB4>!e1Yp>Qy-qglS|2JL{A(J|=((bf|~W8=-V)_I1BoCvCSgHtS) z@lUh9KS5rZMt2ZuiBmSoeA9?$64r><>G#GpWuFmhv&6~0ylqk5S`H4vIHGQteQ*P>nB538$W>=-08Oy>I%69A0_ zsDr^o2k_UpNePX1re+_--P$w+?7-nyG@KzATw;eBF6m*9`IEC}BWoj0KL3p->uH*Z zQRCaKjdToF_k&s0b*aubB}LE?Ou|qkyNe{73oQj9gn-JU@>=UF>*0>Id*>tyKdFyO1VsXkG{|Ox*XqphV0H5%ZVfFc62XWfP_@ zpxhmYfwjor+*bdYosCUqm9h_da5Arwy^x9)d;^7@YZ$UKUqctH*c#X>lDcmD_U-#D zbM8G3Qn2T(flr96gr@#-5x2F%xN~S z?v(Gz=_kp|+q-0oEPHL#Kt`bqZ%sW}h6y!6t->&IH9CKIpTY!7*jUtXw44J!LY2r{ zoqBSPVrP@PkTZpQhp0yZY-sO4DL>YD8W1G3di8FYG-0w0vqU4xjCQNdb7`CTBRBfu}V8PWqroLR}BbyG6`&302=-JsiFd)=jHya}N?(@ni zWdtwL@NUqjIB$T_sjO5Xx0qtc-V-vxy)?Ws;|jwi1u~(W+G-po0Q0Xp9MNPa!(?!( zU~k^Eovf@Ray0p=M(RxCYm@yjw}g8u18-ZD@`s~Ptl0t;@Tp5YpG+1%m2E9;n9V5SyMihvo6>qmunc zcJDq9*((kjBAxO8+qE<4TVUEDn&=^dACe7`bOq?+Cz{M!gTa81vIkd{3fWnpw2K?O zTc(4Dk+dd_<4MT$B@Sydou9x|iI87KdWBHd=ig9iR1(fGNZf># zf?OI-gwL^wPSB|VG_^?B0!D&ACv+gA!gr#%6MGN|GJ;&}C=jIhqBxML8B?w}SE?v$ z=!KWAb2mS@1O=#9H83G|x$E2?k2HT%z2HXgfik1Swj~i5ieNf!~lLqF+ zN$JqUygqUFxEmu{Ss`I!-B4kD;39|rOr5|2GKtA3a@#krAMjEPDB{|Qg&ZsmHa9en z-k7goxZ)xvh@QnMz?4!3TdR!+GAz|tHk?Wm3bDy>5+&t2vIPeQDG1SUaU~c*vT!9J21NzVTxH z#Z(Z#?0v^YM_%1L<1ofVHsgSFA&P#871AVOl#ct>ag!K9yN*LZ=&>C{cJ+dk{@%?n zLD_-yGJ`Cv{6WkXkB`S;T1o`I-=WhTT2&6yLz6h$kMr9j>nt|gHTfy=UQ<;&PG%P7 zu~jeVnRMV13QY%TB`$qR68D3btJz=;kRq!H|SdP=at}H$G@U8e6dYL=<7v%av#i z_~Gt((ZCB&uY9mfEHH9n5$2SzC^t63a901~sO0D0d*LWSs-XT6|Nf^Fb`tge{)8PK zZ}3+Le)7eVw-8n2n<)qVBcmLE6*A*i7|-9|_dt6bjcE7GK*`#IPSyth+(zj{(As|a zaDY5sumh#I6kg_ak3>uL7LX!*3Ww0Bzy#rg&JOwi7@S;5E`?ZJI!XdU@LPN(GDZ!y zT>q%SJeFsRLbx0+{+*SHpW%5b5=ow@3>bWfN?(Noix4%*y}7XE)7&FvV;TvBy)6dJ zKa=Fh81$=D@M>ovfKH6%&cVdQ&><=w-;$W2gW zICrNg1)kwI2ux&NLoIS7p!xkn)DZAusW9--fpfqb8GZgNENPs3aYYNi9Yd42 zu=t(`>$-}Q?unzlalDx`xpcfUG7%142!%F9V+%?+DWpGg6ox0l1LTZAiztq>2G4oh zWe1_{z$}*>jSZ*3OF;)*q8>V^K<2q;1$vK#yA#S2xw~jEHVV!NPQySP(#DS-jE*VA zRQ^tMqC4udjY@cMcIzfSzL%eZeSE?I5ceUpnS69i29Co~MC)D~fu@%R^x%Gah!dhB z;SzVy_5f6&18&K*M*s!VXfLZ9xw27}jxbStqtI$Z0R%I{B7&TcU>}i9c_0lMX2OMg z<}Hh<0@3+3V4|X_$ED+6fU=dtkBayiR>CxfPgO@?CWGj~!37N1Pt=gkaU{0MjX#|d zI9R3zsird5!y|jRTn_ZQ*rYg|Eg

bkltDyLTQ7{-wy`lI}IhSYmjK2H_xq(t-5S z=nu$q$wy<=f9q;!)~UiimR+3j>mhB(UgQA6(iK+3L zlnu!GhJsOpz47TaS$BZzW9b|zFtQzj!(N2cZ~=6V2ktJXcS6speL0*2-QjX_bf6B6 z5R)kaEfkHkAsXbENJlFB6O101szJR^HZ-8AyWxNSVXkcDwTet+EFlfV5BJ3<1W_<5C`Ca~2v zWjeZ*8FX|jCVpOnpOpI-^5PF+$J6H>RcwqMUG(iQ(aGsM+FIH;TACUB=6uQC!OX^5 zfbS^Zq5Z#^Iy%}qi171U{mTpZZ0t?=o9TbPi4Xb3_Ur`*I=YSexS{j|Z)5xE7$WlPacZNxN>rBeVtnB%7oJ!|-PVbs|Z2Eif+uOhP z7jWNdV+y91<(d(c+`6lXRpo+5NaK8qv1q%b=hJMBFnweG_tvzsF6}nms&TO%vC45B zhmqVKVg4|E7GE3)-5s8{}_Z~m%a zHH&Z5#DwEE-><#6m~{JZN_nh1=F}hb>eVa9{yOe6A^7Tx!v9CU>wj?Y!oqntIBQOQ z*>}Q&O-UYS@ZZb9hfc1;Pi6O1;}~Dp{EUS__u|OP1LQRPr2h4Ec5NUHb3Y+r!n;tSC;($c=+UQ-v;;uVj_ z%7&XnF8hYLGM@7lF1RKP@@>SaIb6Sfq7pUgP9;3D2B|2eh7Z%04tL_FXUHHJg#=*!OI3aPV2)dfZQgl=D7mC*tIv z)+MOKiA}q?xpDLHRZ^{{1{=+rG7QpyiM`oPfZq%i}P-NY@+I3vlI8@;^H{Cg@rFvR#x(8P@m}N z;UCU@`}9V&m6Vjm#>Nh3U%q@fOj8t>edw-~$NHBqU)JTj*mQMv_6}vY7n=JNAH)Gr zb9`EI>||tR1+op_`!gBm;;TyNuT1ffmnUiPbMD>CgEM{dG?+tDQu30qF^`~N{qUop zAjX;5S>4eme0+Rk6B8MK9igW-efrvs>~-1g-brI!Wz9o2H8Hnjf_W}YfB!t%@qTi= zN;2v6ovo*J_~_`Q(o~b%?QLf#%-BR6Kg>UQ^eF!N^`G24Jj&YJ^)`xqzwA8tIf{u_ zol8`-S(|xaXy|~6i3zT}*_YQ>+!tqh)CxV_@M??B5BJThBd^RftirLkXydk9H)qLB zw>SjMxc%|_=D?W6g*o2Chn4j_M{jT>C`C&q4j;w-02>!ucJFl>gZo}3rqbJ4Gf;^X?V(R+y z+bsSM?)HDb14AD~W1}z@zToWG;XG7d5WU0Mimqgfz<<1#T)7xtAGotNjE;_Wb=!Zk z1iiD!r_)v%IIgn8-7DK;hr1iy<*QdgN??ZV*Av)h=A++ASdWz0hXy!!d`j~ctbeS4N=)okAJ z&Mz=#s5zULm$!`iXQ8o~DwRbUt*NaYB8S7saAk@<@WBI4N?~E4^AP^iUD(-aBrGbL zq@8Q8G58=PKAsDE@UfPZl+-Sbji^hWn@m&R8mBjU2{G)^XqMDTsmihI2zvO?*!sOc z8*h*%`rz$7D~FhV%*;@fsgD~_Ivg4rs;U$oKYlDDCs$w)@hT@L=R<96tu;2V)Ej)< zZ(Lkwy}i9}-?<~ud{{sr(|f@^)AZAcz`7X9mS7&WkJPF^Ye|?Fj@j0MX&`&Y6A3R( zT$96+`%tlV?KOzV^A?gZ%t_+^#(ol*pRbS5{5V zk5?sm&Ww#sO*MSDzo$O(_^R=gwfNYaTy&(?EUU2L+#dGv@!vP^;h-$cO>0iXz?`F~hY#^!J(xcu>51^sMF$2(nAGrNIrR2TJuYQrJfO+tfnYQk_sM=rpv1z2ic??BX{?4?00PI6f@zT) z5wiLP%POixL`4S%8`A@0NY~ca*AL{dv9WRJCJ3(NW|y(4R;GFE<~`E!m&zVCV~(Zv;Y(u zEwe28!=66%dXR*(dY$seuUDK=vAQDyb_hR9Gknjpd-sWou%jUyR!td{b6KghhMf}03X%(Tf8L4<*1l7yVfAmWt*uYdI{NgO-3gzih3q_+ z5$dY78+!38Cr3AY8JEGsu&Ce|9<@Z%rVKNGKGNK?>15Y5J=mvUKG2XNL!l_i%lo$$ z0uBnt^N_>4+O={hM9({+&}**0{IS5;_wO&}-mVU-SjOF4#{08=5L5RevLkpK+w=>XWI3DHC&os2&r-GvSt>d@W^iyHI;2!uT1vleoj`z{ot;v1mQ|)*$2+lA zR%joG4<9bC>g(&fp(!w!$$q3HingTR_R~$>ophI*pW?1a>eV`>6Buu1W|pWD=P&bc zf5PCPr5sLmqvZUHWgHvWIWS=1@+37i)t_BFv`0Al*|Q^NH8EjY$IulH>E{Y&oVEf3 z(9AHszm;D%nN8H$^y}Lj?hBK&OmxY7?~o#ib9p(8Un8tS?ruLSk8kP*fJ_Thmm~H$1C69$adx07+a|(ND6GFBB?)ja0p0zEcMASyhS&GE=4W#x9KW_k#C;^5fl|3rMKRXaPnq+UO&^*2S!9heEasTd;y(Mv&g#ur>4|9 ziTm?99CZeGAhEADZXmZOT%g%^{r2ZT9OfT`xch746ryxf0b@c%oDx^ATIKYf&BYXp zfFKZdkHJF}<`7nfof6vE!z#A6FRos@Mmk__em=81pDhqGgdWttx@IGLGJ*GVa~9Q+$3u_VJ!>?X==~((GW>-6s;*8|(4yg7l1A#o zn>Wuy(a65^c(^WO#flZ0>BfHM4asJ-LgNb7)j$2jI6EmOCWh5$Rrs8jUnorO{{8#6 z@7~=%F@QJy=7Tp?NiMze-N2Rz+)o-jUP6`|I&7P3$NDoNXv3Fx8|O;RP1Gus0Wk;| zmsh{v>9e1bsFh7c;Y}QF%@_Tva0IktOE3+IvM(6Vy>bQ2YL%&PGvr^X!U zU4~V&&{|a#M7lFCwIkUM8=VbrPo6}@viNXs*M|6?@e6;WT&aAQ5#3hQxZI}gN3D|! zJf{CHe<^qF+*t%-&>ngpurmZWDdZ=d%a=9h`Kqzllz^~QG&MsToyR&U1>fJUBl~$3 zFJ5tZ&v|PZhj(|knb$t|OH@xueCM}aHt^S9f5oCt+9>hk^^??)^ibV4qK2q@(?Qfv;Ld8QWp9^MQiMU#FYxs~#xvB73`bWl70tlgcM{Qm66Z zwj3yZk&(Y~a&UB-FLj66sHW-`JmV*qb;G6H>>YPe$4>e(e3}{Wxy0g|W!;(>ATfIu zY}I|b)rC!GnH)dD@m*fA%JJ*l)qd>ankZpv5fWaiXrBe6@3xc88C{0!DYY3TEI4Lg zxa$c8vC-?;)BGT|AKt%z|A~_v;&D>!ah@U`Q^_0&CvMP_hhc{C^h>cJa>Zyvx&Q_jub5w zwt0@rt<@ll^cfZ@I=}@$z_Wqssk$j35s9a6{hBv7oL`apW|=hT=Spd%8_ONgE7S%s zu1!=+V%)lQF9m&!Q2A>~lzCV$lB(i zhZSwrMzKis6wSULqaF0W{Bo$dIol=`Usd(@{oyRdenCf>1=lA!11=z{K;5THl(K(4B;y#3Fipb&{ZmXcmOxfdw%o` zFl+z(%s8n)(X!Z3Qk$`%baHH?+PtQ9P){o?*ZuN~QrE{|LD%mW2@;e#WSGmjcAxwc zMQ|PaOj?4<8T^m!-|Obyy-gL51@>vop;HdFx#LtXe|uvuyWzP)1QpbL0K$$MAjhTj z#tgd-X;lAndOi!8I8ggvv<_G5({x)!KkC!g0PLN&_663-B28>Ke?;P`n42>B-l}l% zOrIt1OzYOBzxI&1uMjVIYMfq4>UY9>on3R)q?1ryzqGMl;^Bnd=U*t!8*6|&} z_NR^?Ki-t<5XUNL-q~x=P>n&D7K-8FWm-f%xd>K=%KEEe0U%Ul1{vCfxEq( z-KS5{XM*vq_#?@_>m!d&UPh>(#dEBm$L|-w)!l!5y{Q%}!-U?IgpNGh8yzrcF6PjE zcXo0h?(n6L@yf9>p@$6Lsg3Z8h-d=26`gxlk7k~zTaX8$7kxl0iwo2*FzEjM zsHl@SKfZr|hDxPkcLjgz=x}JIbv@+Qv!15&G%||8O^QJ=mI9c1fPLXUJ)8odND17% zd-pPQKn3b9pT586Oi*ZOB2Z?cLCI}<2M5w+4GavZi$0;NQJ1HNTeTn{mDVqgzTcVT zGSar(Sr~l*$%s}ZbM~xaie~1-_u`EMfS28i=_XY?JUlY!T~rj^Jv(>qT+eb)N^ zG!YGOSNq$$<^qe$tX(7sH5>&mW>ACE}%%7`OYas z%dAh*umDnQD)jOw%=E^k?5~cxhTHhWLN7r%w%o*%&{!aIRZxXG)HqdCC#VQL!ondD z#Wy!vKz;=^xuKqXK5BA+Hh=8*_}r~wkN_uQjM^vV7(o5D}H zE=OF3wIRxW&7)c{q0582d=j5-d5~0qlW|_M1-7-=CTt&rnw+eeX%3J_A+2fyn~2eH z)yI!D*y<@;4`{}N+(5!;0IZE!n(vV`Z_UdzuZxeu^+)kk?>=Wl>Wh8nS%)=~M5}Ri z%~>3eSUMXhA0d$f5~x6yt%&nr{F?Qw1S+D@Rc1F_Te~q45PN0{sQYer<HCO{1(5X<7p)2Cg-!`79aA^R^V zQz#VkmYlQ`Cr_%SXbKYihjT2T4rt!!YN$3gGWxtgYvR0c;R5MD%T(z`lzy>qcLc9m zA_uAchpt7Zr>E;gprCy?$bf}cHcV7s9=*a>F?TGi^xV3b4(Q~m7A-C217u?j>sLmy zOL(3KWF+^&?NxSmwmI|!n-pJt?a6{4H#hE7S66?C&1;qgxF91JCRC3*GA2G1fs3|x zPhV6FD4Ju>Vu^O<+(v9a<(mI(hzZp6qx}6%Dv`sHxqp zhYhRlkK<}9U~;H|hKyH*yfr|tXzcFpHfG-KU~jMb(uiW!UZ?~4G(%M5@!?Ax6oS~2 zFQgMjg1Zop`iK&hgF?os!|;5y5{P1wZ;fovqRICHF@_K>rQI6q-3oSn9ZSn~tSo!K zmmfE#2GwD*UPG^sbbz_3Awi=Ln+S-XVK+IA#f1&32HgimOOjyiz!;!Y!lnRFoo$^6 z`9EUaa=x*#kq}1k#__@N;*FB=;8X6M_s?+XFuZ|Yt%`lZNx?f+u`@E<#*J66StApu ztfJ!d<@Jh8tLCZOwBg#g0A1IwtAU;bXd+G6GhBQ2oWxs#aQ~oCL`rzgp3P%X&$end zE;L9&Wgz-r=7h!5Az)H@*k)=hL2{nlNtO9MzDbWr5wAeJL`tg|!JA7SK?R z{^y?w!cFEcnpehW*HLxysXsOfK#f|cOH`A^391!&FHB&$6FxRNI_i!~GdW4qlg(o} z-|_7m>5WkM6hIY~?d@N>`J+mjLN7;U3nI0Vv^8`S4KKFOP{!(CUXsnUY1g$Wn0)9x z+qZ9Fb|7{3M@K+?@&y4>YhbE0;JPkTBkZ-Ne3w+R@t=x&sDrBqao`Bgf$q3}y}|6* zTfOUm?yK`@X=ya^t%Qx@j2t^ZYz9Bm`&e4~>5p4mCc(Z3s-sRerJDqxs_3toY4!ur z;Ut>;EXpC94uF~Mi${-G3g*Ykh{R8@IT7c`QXeju)}_>3|7A-MbR6_4G=+iEeG#ew z?BYai4DZOK>DGcU5mf;=tQTLF-5kM;e@aS92nt4%4+pT~c5!jRYcxRe)zH#8DXFi< zZezPopu6g{0I6 zyeM<-99ap#^>KU7_WC!7*`hWo2cu zV5tw2m(*$Q)r>cF+lRu_H{?(Cw<#TU6f@MYy{q%)kTV@MgwxoxESNX0<9$FGniq7Z zit&WEvg?vlr$XUP(Y5IA-)vemH!KP>MD|;f4Pea0s$Z{6jm0sHdwko3SCj;Bu1w+J z)b2ee zN9qirYXrwZyS|6(1W+)T_4Xn9DAoz2Gv!(Eg$xic0>N>Lf^+8}l?a$r)&UPP?%c@_ z-0cL01y;;6LD1pFs>4@^ifs7qE@?RvxG7wMf@&~yY9T$PtX{WOdvfmXx_(p+HFPNS z=Q;p<^bI-e4-H5v96C>)`uY1e0N~cAn<&($>gkb22mv&^kT>cqxca2FZtuxv5YmOPKYzjvP@1W{C9k^sLLVGdytq#p{*`tWc=tH*VZ` zYz2eN98!>wb&IQtIXd6#rSpfYty^-GU}5GEkp*-f(q`LBt(A(8h-_K$R8-^5n>T2T z!Qt-x-0RsymdOUkfe<>ubE~oYQP<|k}IB$pk;C{w`$NdUp6#^S&->iR8uC)Q6 zk2>A%qj%`gA)-;Y7kWXik#4nn&vtY&56UE2=741!6gZ6ypev+jqs>pPEXVCP)Vjm?qP*@$h8tr#O_`_$V#6%swYN&~N zl&z6(9GoBXSzbLP^$(+Dvi^@?y9WwJzvHX z&=0i+7$%P)FF!O2Wd@DG0>Qwxh0QS%$W`S7doqc^oALAAf zs2wz9@g)Qe{wcA~V71Rek0@UVF^5VX3{cbs>uIO=k6pA(0FEP`KWx`Sm?GP3X`y|I z8#d1Y&5Y_7`o%<b4oWaV#;Mqy)T#G|h0*vNRA*)an=vdTZ^Tqj@P)VP{m^(`^$x-|}c`QjGLSjS0 zHtG5EmcUaJwxuUs63{##Tuy-eCK6+7bW{lv3b|-rkh0;{*F8F9NK6m&k+uTtt~x=# zubC~lc;_Muj_lE_8_pZx!|9%bm{kjn9NKqGZ?Ea(P%~{%z0qSZmSBcvPO>)zN|}N$jw32Lvf9Hf`InBNADnDo(FJOf1`Z-2lucltXfjOw*c~1(Jtfz-b6qdyy8j3I&_`psa@gg94=hD zv@&H6F_Cog9CQD4@;+!6b)#vl?)m!l{(zQLYfH^obw=xerx+eSLK^7kw(<`rf?B3+Iz?1+f1(2<#3KXtk{i!$5>cIY66z z+^CNBT~F1~0+P<}&*Tqj7iaD^;v@m3mOz;xt|$=j?&h9|qQ$I6%kGc^UDNNPl5*!? zg;d)0y+YeS4NwlZxT>S0lRBpvLYqf>O#pRwp3~9R9+U{-(-CPOCuZw`19ET+j34o1 zNs#aDS!D!x;M`%vA|2jS;3*~>#C1PO4^*YlNr(Dk=Wu%YNqt;98nHiQWMpapRL!yg zLE68&jl3F{A8Ies1KKRl?3%WiAgU;kiGZXHw24a}gOosY%GbU`g|UA+?%sZV;`OSH z@qiQr8?STp!8WNyMb5ZXwl#eSCBNaysgh(4}aBo-^+1)OM_){?s*97AXxzQhrLbH#<)1c^z+?%Q=xW{$pZ z10SgzkUNNqxkW)N%5A*6w7B>rHkld_e0_n33x&D;;As2Oq6UD+vXBVvmk{^T$?oU# z!?_2S16$UKP|y%JmELjVq)aOQ}ftrP$xrA^Nwn!k2 zuIK1!%4#iETMGC%(GDPuwK~ysh!hIvu{??T3pio{T#5SUa@%olWYNMhJr<3zxrsi7 zf5^>&5HV23U!Ouj+f4k_$(!@Wp|YVKFR~bCyp+TK6K-C9m=_Lcd<5~ z@#*Bn=gHryN>rvNDGVe_ZXg|E9)kyCTxmR22>S^_S) zIVu!5Vriy#$Jpsg_50!BeEj_Uv9YnE@=alpTt&zC@mo(nar&I8G3}oh)v+!As^K8L ze_CMGt5xlO?MSl)id!(i(Od+`>^lNZ_pLa2Zx?$GfCB4g7zai902M^?*8eKbl|QRig; z9m3z1bA-0*UO?bIxlud@up&{~j}`s3YVt%EF+}5u$VnVkE0}-LviP6Z2mXL@iZ(GcP_a^2@(sErAVGoq;dr_>!S-xI6Up^fllLZtn|jTv#@)g{mZ1L1ow3 z>KtA6n)J4}>-bGSztEqN=w*XSvtrenPIDLNiEtKd;(g0dWP1VYag|O)J*}m89&Sm{ z&~-aa1VU(*yFeubO{=8{M@GTgKP{L1kOUK6&q5Fs^jY*2wEX-%bk@V&-F#_r!P)8t zTLvsUZb`|a6XHE7yOExu4ajl!q4{gT-ylK11KK%?z#`T70yJ~yKJ05%NDXSh58Cgy z`9`4<3k$cpkAAY(OU9`u_mC7&b9U<1{pTZ5JauXh!TACRbPj|2nOpQ<#&mt(0#`xB zg^Nb1$#WWj1e*b|3W7ADD?nHun34eqWr=DC>5~Yfd*wo70K*>5?b)-3iG_s=ESVU7 zz12|~ud4omtj_*v@VB(KlFru;DB!#R8bx+zZeAV{(a6TC@Cq63zz$G{XVux?p9s*^ zmDd2T@`&vhDbmdKye5O+zJ042ExjHNges{KL~B5ZsL`(k`-YK~l?Pu>R{F;eAF81b zbaiwPTtr+fC>-5_Sj7&jzjc*`G%vjWkl8k#xf{uq%VE|q?fP4C)3Fg0<9mqtAQQru z0_0*!;#gvCFX63nP|&l8u7$J6L<1mE2k_{k=i`9zx`c_qD(LL&jCs%QQQngMCtxFp z8Y*rQ3JEvjfB@gY9A0Ck`_LO70!k1fXbyE0sl(%iG*RqaiNzm=UO>;9NUNY>9DzjT zuyl3xx+4g35j=-xTMM#9Xf@VK^{^OWtvFMNFA_v@&8q~wnFO)2fYYjx+!c}jCHhQ& zI`SJxB*vjGnB(WO(71@zP1HK{LRDASA5K2G_4UIu?wgQ^do7n~RQfCVrIHdYdr=4- zn6!*$T>HV>+Aw)gcJ{=c;Hx*&`^j;fUB{Of__b`Y*LV5Baxd7Pwo`1jL+h$t$fDjItL4Fzh2E1`x01P zU2Tz9;6bHkY+5fr8(F>&8c-BD}yGe#a9i+qDsD# zkkY$%8OY^hXJ;pSS0KoxA8?#gpUHBUxu&jf&hz))~Y6}E~Zjs9RdNuI>rXrsrY{d!i zXmcdy+=nu0a8qW*cGi3>i?z`8mRz@WzalbpgR=_`gV@4PN8GMmy9R-H4j4W==8ld3 z2b(ASl5zSh&XYQA-U%r%R*j2f5l|jW85nce+PNf9c0ia#$np^gXK-k!`Lv!H4CRO! zULq%2m;!B(Xc(%a!@BkBi4qcg@1AYRK`j=n>1cH21xSU)&0QP$nd%VLNk9}T2}!2h ztY10#q*lc>ZRYS}~Svhd=N5{tTaa?fKXQzIFY9WifWTJNN zOUO7hZQ43|`aEh=@!PiqKWgZCWlBx!!eT*|(gMuLSPPsD#pgK+woD+8dU8Cy-RWv=4N?*IvQ;}09s2Un`hR3uu z(Ohr)`Kdw6K%LtQmDKC|o3+H=!kMMI%A+Dr;^T;^g0!e0iY^dY*?heRj5B07c;FS1 zL;=hT6pt`y=g1iRZb2~>9qg{K+d$5 z{1Qg47O3NqRThmeFJ;0Dg0!U!#ifv3XlqEfY!b5h z0E9<1Xc!=qk+`!wLPAq{CZ@4>it5`?L(zdq=_TB2Y1(Hg4t}3JY(gd6jWO{>xNDzK zhEs{igbf)7Gb{$T`*Et_ID)B|BbWf=|H}lmFOVP7#OD5d*N4wOr$l_B`XouSLZa?M zVFP?ffL73ta06-){Naw?UsJUJ*5J-UDc_45btdFN+_U+up+0$^Y+}vCO=WheDIfd? zy8R2+^5$%36V+}-yN)MG12n5drD)&ivipv9Q%-1pZi||W&T5~hEn(|p^VUEMizZSy z4gv|KfDP&1v5Q1O_#}jXd^QYd^s+!6-;z8`7=GoCEHsqnWN6b3)k~9wWgZ-`VaLJHPaY>_3Cm(mXEcPv7 zc#=yq0nugn$?F4e5oQ2%t&5dqCJUbov|yPIPE|b-u08%Qxf&Fh=eX|)@IC{B2BHq) zt&IGzxrn4uw6tJz`qZgod5rie(oNaE4T#^M@H;w^Y){T*>7UoijjY{TWU3kJSZNGXuL zK&%mHnaA3vD~2KI{Jb1+iUv|gnbm>z8yJIzb1aL*Ra%sR^7Y*NIK`(v8@hM+9i0Hz z70%m1esyAhy00^oHe!wbd5zvd(?7^?CIr8}taT3(ON{5vH6$1_YII95BLo)MKw{Js ztfbSb#QCsZ{g6Hb&5F3Pe}2Lr%2%>rxkL1_`^P1?ao%|SfdLbo+CAp7pETR-$!EVh zZ(MpDt?JK{{BT$xBl{|n?TwZ~kOo^U1sF~ut478I!otFcmLl#kb&Prz?=kc zCsb20it`_2|F7{tOyJV}IfM4)f5rQchkW(95Lf^Z)j%o*j-D4`5CkNAE4jmV{t!9g zZ-u?T_Egk;OUq0i5PZ4?kCFB!-wCH902hf~5h1bdk zdU|;cHFvH#DJuculnA zp)TTvVJON0TFGa*0!#~BZr&!lVGM?i2Z@tWtzKVVLGqvo#zhki8Ga73r9?32fV`|S zKue`1r53uEjOQ(F=bJN0?*KJ8+6-t%1sLOo_yKH0gkMr| z;}mwD2?AqP9Nc7TQ{DS18k9tMJ-gU>B;N>Z9fl2Lg!`gDv{ZMks;p)Bt@J zl=UFY%C)q#z$6zPYD|BBoC%eJk^iTrr1J>V`Z8>L20YEn$0rXHLlJW@#EburGuK_O zKcYt5UWz&q8blBJyD^%Le|-;0?Cy z@}3o|dVtgtAUiR!X5|u5Qol^SXBcvF?S5>M0Y}UW!Ia!7l&$VGRjoXtmhd86D<)O!8jjuEoP~rP8XVKphd$}AoM*PcSQ@jtMfQL zT4+wiW{mY5WDp-O7np_oHh~TTzvhFr5A3h``FTcWW|J(81O79=ith4N{q;j?4BHN$ zBC&JKWbk2&IqYqK;SCY^WuqktfdDo?|MKM`#9|95@Wk2yG25XnPDG#pDGw%K#b6E` za3xiI?_Ozy76N04`UR_A7w=4oh$Wlmav+AnzH!BV@6n{E>z7fSHjk z1-vqnQE8NL>Q^PSX%=+Bo^8vvZ3&bIdzmghM&mn$V7QpLI6^MAviiPLYsl0x+~#t@ z?O}g!LNg4kcK1AavV+XUpsf{gE+vT~I6`c6=Rp?9Q>k123WlsUxsf)G9E{^HuMc1# z{2F3uZe4&}sgM9SKel ztsNe0|KG1VjNC8U?B`FHS{PCL++lgzA9(P({*d$P_n(<|kdt7$DEF!hpGx=e-LfM5 zucpH}$UKV*QJ%{Vq7Q?4Nc;2cQMjvyKn!_5AJk4<9nm}nl~bp#yHE6fMJTsyceUnn zI01wfag?P{@87a9nIjZ7bQ^AT{p}d*Gr!-yT?3}aiE@O>PCRXh6H82U%spuz6`;1k zBlq37)4N3CZtIeEj_q+m6|Y{s+S%RxocNDpou!B}m8SdHvF9f(h?T)Fgq2E0s0a!{ z;vSRR5fB9ec*E0C)MxxnAc|TK%dN2exy}CKp??!SNL-Md8x%kdl?f!I2KBHX5x06a zmzG@=o(nIHu2__Q{HP3$K<_zUk%iHf^(d$=txh5ENXak@{{jy~* z7c3GWBT}D%gP!9JU2c^~I$Sa_kqtzKB_5dxy}9X;qeUEV8XI$^GFksrw?}DvZFvoR z8w`+oi@^}q1t8{E&llU;+Q!DmAE4bp;ozbm*62wU>iee09w0vThzy6o`Gja6HV0E; zH*PAJ*?BUU4P}qmS(MwiZYjYk?t-w44<>`_SxNfkj}AdMeh7HC98-X&f`Fy7moBoB z7?%AAy9?>GI(+Q9BN8E`l_PQIh#?trawHCeB@J2CW*|*7+xjVhVj>YxEE`{%H@=L; z?2&tGhYQpR7~UF0naZ{A8XGG6yikQ3gbn3FG;OTTT9Uzk@!|#Vnit>1oHgd$y1Tk! z;dK#53tg)L{gMoGS`bN1M&{%ABg6wj4SNVK068hG-%IgXm<%BSb%d$NY$_Q~Z(aCo zDTKI@3_>v^AC2Lt---_&LFk*vhUlG0`+q{<*ML3b>C+St%us;|@@3m?Ug>KXLb;K? z%Myir2~jEtSzerZ8->KdDUi*3U@~B}sSp-=p)$?*?^8_P_F_Nf9bQh&^?}p5tMoI5 z&8S|WpMtLn3jDI$+{=!+evjPD#B?c$OX=-rOii_>;nW3)ao&LuB0=w^1s6k9328)1 z%d;Ti)P0|t5`tb|;h^yNaLEsN=zicW9e4N(4}y#MK?SRCDRS&nE=C~pJjP2#;qkG6 z2OY&)xO?y3y{jAK!XX`)o;?gM=~Z8-&X$A+Kolb?N8)yNFl7x9T9AgwVh2hyz)l_p zu?-67QHJ7!kew_TwhIl0`tuGOGUK3CQ#9*8Lwv+DI_}@Qck#!MA1uHl#)D&aDUwxC zBpJdgjALSBbuvdl@zztM&CSijX>d1hr@4+AbbNVp?HyDPKO`tw$b@2R8l<2j;0sne z@VJ5>2)N&6)^&XY+0H-BzDuS9c}i*U=C9wr86+e5hX(PXy!^;s`6s59t$Fo7Am8}G z8`*}u2@ z5b3F3IfUD9>WzGChJJeET_~yVhCdTGXVT8eNf1TF)P;(r%!`>rY~4p!eDTnxb0Mh@G8!#WWK_UObs{jRG+wo| zFyaG|`_TFw#}vtUP@^~Ge=@ZmAvx2z<@A{|B!w!1<3T08NHuv7gIsMNl%JRR@-V$J zp}m~Q&o&8nlScWjL8YYc^2Aj^ypk7gJD4X4vJkgJx4<3cS%&6m^B0Fk?uBsZaXVVS zGrK57GtV&rbu6aj4)cJ&=&&O4dFU^EK0ZE>QkU{7Cl#{iK6mYde2-48j)(@8bIWR{ z8CQfQ39Oy*?`bRWa6;f8XY+}wU~K#x`F%@o@1CbFB;L~xK1}gwp6oE>(q71`t^qv66`3 zq*>seN$fa;5(ikTV5#6yCi3l`<9=x7aVXA7WWwOwx&6H0^){2#57 zAX6A*JPPeL%xcL~F$Qr0GSrMMVUor4PVc&}{xZ2j5zVk}6wdc2AX)qv( z4k)aTBQWO&x8%2fsPbFg#KEbEf)5~DpP;hul97=q27wVUt;h2b$N&k1AG6Xx&b$F? z{seA|88D}F5AkM*afr=HOkEso6hgv8@o87IA`^j-y+}B`46Pd#FOYBX#<%Wn=aW5r zzdvJ1LIWYTEnvU{5Po8gp}l`zeLrdR`*%g6zBduy7XhsvbABH6ZK9O^rp)E+7|ckL zcO~OjWXu{CZ*uj!4)>OihAx>ACQt>cNe>6(HH9>a=@6kM@u{gPzVEy_^aMm8#$892 zAJ8~CYGiE*vp`HGnj}-<5V@mF;Ws?E>&uVi@brAu>Z7<33M`3~!{kuQw$`b5BCLYo z*^z0R#+Rop8j_WuL_o?QX{3eeq9rw))}0CO6|!~{yLGiAWH<86I}Ehr=K%#xtM)-y ze`$e9x3}<%I#~JXHooED; z-(hL^;Q>fVZ4Tb_<54e~y#`^e_+ffw8zM-)Kxj$`i5j99NJ~qs7*|5B7+OwGhDuUD^(nZqM%B zZ@=T|MTm@8h+!6ubebXW@Jp92ZG&qjfQ9FW&BltwdXQ{F2}a1hy5uv+Xa#A$5Q)nk z0ez~CFmqK}`i=&Kv_o&9+xm7nVD`_SJ@ucF0xoNVI8H(eNrcToHXl;udCo(Lu;Py; zlbJO{YP<5`PKhK-&|U8MUY|`jNCp70wN$YS5We6*utX7171SWOyDB18&wHk1mlFs; zKQ48553VdXs2&iiaTx9#l&u{~>~ycMAe45|1jZ?J6Y{_bcGoW}0K#NlTI_BTxQ7BA zwg3i6uqg=>!PCaZ3c-}Jf`iYWLv19;@Y`=vWL5*@)Ctqclo}G_Muos5q#B23$sjh# zK_>Cx?juF~7-%s}TU)!crzZ|sL-Ir>%(teA8e`ukYGx(^pP0A;!SIq{MA*Cl615n{ z9`bL*7QqMYfo%%a*c5>h5rn?{Ht^DY*^Ai5LBeZ!HK=v>cAdn7b^5gDFv7@7L0n7R zeWDun3h4`k!U9dX_eR|uoZTtnc$U=kLIhZdZ-VYb;^G`6Q9zO`WZpS_iRAmBUt@6Y zOI|-!JtY+F`QlM6UJ9<}?caY#>`0&)?qV!Js}5Ka$;9H}7eT?noD>qvds|#g91tv9 zSv0MBwET&3fhuhcaWa37$bL3<>&d`TG`y~68}uJ(lsG>)$LUtk?|nH85%$4zqTb2! z7Z?TYzfg0`dGJwV4>EO!kf_w(A?e)$H0X*nq8~_A=v)W}4v~L&cMRTvngs;SqEEPY zixuE#F*@j_&sKRe=N!N^GAFtFT|k_E?= z=z`rnXjQxz3#b4XuHfK$?{d48A$hexl=I#bfG-?ng9B#ZczrgJTQ@8s1t4}Hs&`nU#J;Y5(VM2*yN>>5YFM2CkU z8wGd#UkbhW)W!W#KS$7v%w@4i!J-ui`{45ZW6!$(n&ZT5@W(F ze=k7AEb{0RsC{jUI!IpKky`g!9=aY84LpW(&yeat9$E((gT#tLMO~;dcZ!~Y?B_xp zivu|zb}iYh0Ji2XRD5S5+%6K~WZJsbxH4RqicAOgsUj#Ws=7<@(`T}$TLqSAV>FukmP(FK!Qz;4C+pLH{#;-0W~U_ngA*>$buQlAmUH3&3~qQvGU;#I@?F6eq>sOJf;guo$JXScS!W;MZ6dv v%zAAjgU3K_ktI)8xM=qO?Sq#xme$I?{y9i=hvpR`u2D|QpQ4_)c=i7Q?#G#R literal 0 HcmV?d00001 diff --git a/benchmarks/benchmark-results/submit-bench/plot-perf-submitmethod.png b/benchmarks/benchmark-results/submit-bench/plot-perf-submitmethod.png new file mode 100644 index 0000000000000000000000000000000000000000..e4b65a468e65a9072ed25a075356dd45fcce31fa GIT binary patch literal 34465 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