From 5c5b645c30f8b6df7a2747808960cb8f716af2c4 Mon Sep 17 00:00:00 2001
From: danielwilczak101 <44122838+danielwilczak101@users.noreply.github.com>
Date: Fri, 6 Nov 2020 02:11:06 -0500
Subject: [PATCH] Added graphing capablities. It only graphs total fitness of
generation.
---
setup.py | 2 ++
src/EasyGA.py | 34 ++++++++++++++++++++++++++
src/attributes.py | 3 ++-
src/database.db | Bin 0 -> 253952 bytes
src/database/database.py | 50 ++++++++++++++++++++++++---------------
src/database/graph.py | 0
src/run_testing.py | 12 +++++-----
7 files changed, 75 insertions(+), 26 deletions(-)
create mode 100644 src/database.db
delete mode 100644 src/database/graph.py
diff --git a/setup.py b/setup.py
index eeca904..4b4a251 100644
--- a/setup.py
+++ b/setup.py
@@ -26,6 +26,8 @@ setup(
"License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)",
"Operating System :: OS Independent",
],
+ install_requires = ["matplotlib ~= 3.3.2",
+ ],
extra_require = {
"dev": [
"pytest>=3.7",
diff --git a/src/EasyGA.py b/src/EasyGA.py
index de96100..5b73dd2 100644
--- a/src/EasyGA.py
+++ b/src/EasyGA.py
@@ -23,6 +23,9 @@ from attributes import Attributes
from database import database
from sqlite3 import Error
+# Graphing package
+import matplotlib.pyplot as plt
+
class GA(Attributes):
"""GA is the main class in EasyGA. Everything is run through the ga
@@ -154,3 +157,34 @@ class GA(Attributes):
"""Prints the best chromosome and its fitness"""
print(f"Best Chromosome \t: {self.population.get_chromosome(0)}")
print(f"Best Fitness \t: {self.population.get_chromosome(0).get_fitness()}")
+
+ def graph_scatter(self):
+ """Show a scatter plot of the database information."""
+
+ # Query the X data
+ generations = self.database.query_one_item("SELECT COUNT(DISTINCT generation) FROM data;")
+
+ # Create the generations array
+ X = list(range(0, generations))
+
+ #Query the Y data
+ Y_data = self.database.query_all("SELECT SUM(fitness) FROM data GROUP BY generation;")
+
+ # Format the Y data so we can use it to plot
+ Y = [i[0] for i in Y_data]
+
+ # Set the plot size
+ plt.figure(figsize=[5, 5])
+
+ plt.scatter(X,Y)
+ # x and y labels
+ plt.xlabel('Generation')
+ plt.ylabel('Generation Total Fitness')
+ plt.title('Relationship Between Generations and Generation Total Fitness')
+
+ # Show the plot
+ plt.show()
+
+
+ def graph_line(self):
+ pass
diff --git a/src/attributes.py b/src/attributes.py
index 6d84dba..ec5441a 100644
--- a/src/attributes.py
+++ b/src/attributes.py
@@ -24,6 +24,7 @@ from crossover import Crossover_Methods
from database import database
from sqlite3 import Error
+
class Attributes:
"""Default GA attributes can be found here. If any attributes have not
been set then they will fall back onto the default attribute. All
@@ -60,7 +61,7 @@ class Attributes:
termination_impl = Termination_Methods.fitness_and_generation_based,
database = None,
database_name = 'database.db',
- sql_create_data_structure = """CREATE TABLE IF NOT EXISTS data (
+ sql_create_data_structure = """CREATE TABLE IF NOT EXISTS data (
id integer PRIMARY KEY,
generation integer NOT NULL,
fitness DOUBLE,
diff --git a/src/database.db b/src/database.db
new file mode 100644
index 0000000000000000000000000000000000000000..d8f80b16c2a02d96828ed984e41b5f0ab7256a5b
GIT binary patch
literal 253952
zcmeF)dAOGKVXu4E{J!s+ge5A93dj;r0Yw492?U$~MFd3=l^Ik-0q1EuCDAw!iF4Gb
zQKQBrZJO?+NxPfuCf!Nfv}t#ny_@c)Lpryo!|vR@pJ(0eIeG5qd#-c($Kj82Ew1KG
z^SN-bcv
#7rfauu*|=|G`JeVBtCuZa
zvux6u#b>TqHmQ_J(_54No!@qDnY8n|eOtG0-7{&`>T_2vUVZ7L<;yNT?%(}(wr{;|
z>z+ROZTKBcCZ*6Fu*P7p&+8W#Zm*yWgf4%wj
z=I5H9Xg=J$wYjZ%QFBpqX7kWyPvfr}zuowS#+MpzHJ)kQ+t}4u*I3e+)tJ!e?D_Ma
z@AZ7W=YyUXdOqBSbgcK=HESGzym{qgSmx_5W4?>?*hgzkym
zJzam<^_yMa==yxu%Uut4?d!U->%6YHU6ZwKj1md;I`D>~uR{B_6oJHFBJxsDe*KGbnT$K@Socg*QHyra?nSMA?#|7QD-wSS`hq4pcwuWDc3
zKCgXpdtck%w*8>(+ihQL`()dr|N7xx`LA*JEa)23)*S9w|9}0WZWwpZ$qDBtoR@HJ
z!jlr7m~c+Q6A~VuaCX9331=oeF5$5Wk4ad3fY+bT=?SMLJUZcU!l?<5N;svCL-$NB
zux+@b{YQV{hwhma^~k74L_Iv}#HfcwJv8cssE0&7IOw>04l1-UT=@x)yJvjD0}~D<
z9G7rx!UGZxCLBoEpRg}sZ^Bl>X2M3oo`l^6HvN2dCG1Stk+3~sTf#8`?+$iXuseg@
z5$yJ0w*|X3*e$_s4t7(p8-wi&wl~e)amRxomHo0
zby`}dC3QNpPK)cbs7`0p>GV3CR-Q&EJbq6bYy4VsD;G!-Ri
zDmu_qRG_J7KvPkGrlS8$Mg5tI^fMLRXDXu4R1{xBTTtYlsc1b@5qhSg@=QhInTozM
z6>(=O(#}+bovFyWAEDxKblSIP6_2NWtG9SO<>z-4j|;!Ktax1TjVZdQJWhS@
znBwuMcZ-KHQ{K6_c%1z9amC}Lx7v%xBi~$CJRb2z`JNyCdU3y$>HyJhmR%Ry;NzJhgaid}Lhl*z=+CdFy`Q
z^y0DW{-NTr^WO4#=(uM=c{l%)#bI>tPX>RzIPHHh_+oLs-#2*G;L74OKW*^9!M1@v
z8~AU)k$j{x5zB{`K4F`M>tLk7DcV2l!&`>sai49gD@UW3l;lELOjc#qQU!SpGT|+h50G
z{p(olzj5^ZUw-y6=bu50PsN?AQznYWxbd7wh2|E*ZBy3MOdj2my
zQul>tW^b_3^Z$>0CVOaW@eKJh8l&g`f4#lgFn09(&pp)wi>6P2U-P$MlWw8`Jy8y}#D`GrjNje!TbI-d(-x
zdY2S;{u6pTTYujAUhC_v4_Ys@9%$`uUD{gGn%O$I)mGg1|7!EA&9|FRHScV0Z(i6u
zr8(RjZ2W!WcN*Vr{6yom#v_ee8k-yEHx@LeHU@kCq38E{eyQh6J#Y3r(Q`-7_MX)}
zr}a$l8S4I*?mz7QZgJE9PWLn2|DpSu?zP=#bkFD>>iXxdA9j7G>q}j4bUoH}YuDzk
zm0k0@CKvbof7AI}o!{*IeCJD@AMU)NbA9Ks&e@$4Iy*c5yyJTvU+?&!c_WibRw0*Aa#kLO>PwtO=8@hM!@2035
zqZXGZMVT0<9gEA9Iu_R{
zbu2Da>R2RI9g9nqI<850QNq;;i_4Yz+bphE>R4Q`)Umi?sbg`;QpXhumnST)TI&CJ
zaoJMGBDah~_nuu~+i*rOXMz^@GeJ*^dScW$QHzV3@OF#4nxMsXO{toP;>IRu
zacNW2arc&=%WDjGRY#-zTwV>!&*jyy{9IlQ%g^Q2u>4$J4f$N2e)Qqudp7+pO-*=I
z!YK(SCoJxB>OW9%qf^JC>FQYA>eR8g*QsN1vs1_7Zl{jL?M@ww`<*%#H#~JL?s)20
zegd!de3qZUt6}*Gyc!m*SI46Ej6?Spy;ppMb!nZ7EmdRSfvRG?a25SuoR(*gGtU`iS
zNU#bC)(Q^YQwD3>aA$R`?kS74u4S^;wQSb9meE?*vRdm}W@}x`Zmnw>u5~TTwXS8l
z*0pTcx|Z=;*Ro#gTIOqA%YLf${aV8^Uu#&_YYoeItzp@&H7wJ$
zhGn_dungB4mfc#zGFxj{R%;E*Xsz9)mdz?G&;ReXT{~v*j|RV6e69amgHIM;+rMpa
zRdM@2b#S2g+Wj94e5?3c{Z|Ga8rU~*#lSfObBde)M*m;+f4~2m{Xf?KiT;QBZ|uLS
ze|i7B{>lA)eSh2cgT8O~eX;M8#jXD>eVh7L^v&y=)Yt0$>*CJ;8@-?FeX;jLz1R0%
z*1NPg{U6fX-ujc)ueE-<^-k;Q)?KX~t<|klTSvDJX#PXHimdezND2J&*L<+_SOx
zI{nNA@(k|El{pyMM0xv)wOrKTv#?|E1kax@UGD+}+mo$6deL_0_JoyPoR0vuk_T
zgXE9xK^nC3~!7kCp7Pl08Ns@Y2?e$dH#9THN1YvY
zR@9kMkBfS2)MKK~h&ny$w5Uf%9gaFR>QParM4cRUQq&`(9uf8Ms1u_e7WL4m6QUjx
z^DxwSB!=#zZ>u`)zOrwd!#&mMDD$?4W!=`WjN2NPZCk@K
zZEIMTZ4Jw?tzp@#qz_fv}{r}kid;P!I|C9Zn?0=;H=KhVv`G0Qzk^RlSzv}zV;;a5Y
z+xJ4>1AV*uF6~>=H?!~HzP94_|5tmz+WU6zQ@wW|MeZqI%aoF=;&zw)As+`{xj{L
zZhxlz?)IJS7qy?(KCOLh+dsDbUfVCW{bcdy`yXk$xp-QOKg01rSuSnE1J(I^piGy#
zmhI9u++Y1reV~k&x|a1)*D_z~TJ}p_%YdnCSuk}i6Q-_Z!_>8mn7Wn~Q&%#^KVve+
zO2$~p7%LfLC1b2)jFpVBk}*~?#!ALm$rvjcV)Jv63-XGN!-!8}$QZjFpVB
zk}*~?#!ALm$rvjcV)Jv63-XGR8{ASjiYG8DlLorubOb^ILXIUCWTEYgsaN
zEmNkhWy=&=S(tGT5Ho$1lzM=eso>B9Wz4h<_i1&?nyG7HY)HP(-|E$Y^&TcU1`x+&_$s8>b3
zGU^pkH$=TW>iVdcMZFZQF3J7t3T+PeR+i-cOA=n3aBadh2`{SS(EY0mY#Z*auG9S&
zMqL&4f~e<5T^V&n)a6mni+XOUMt;e
zrF*S(ua)k#(!Ex?w^z$R_gd**E8T0Qd#!Y@mF~6Dy;i!{O7~jnUMt;erF*S(ua)k#
z(!Ex?w^u7tc5idIRb7!Xduv!$Zw<@ntzp@`H7t|2hGp^AungWBmc3iUGIwiO)~;~q
zeqz_Rjl`~%*tHV7R$|vm>{^LkE3sSE^8Ei!+t&K||Ns8}f8s!Q|6lZfum5ZP?-zgW
z|K9#<`!DWa)PGF>fqnnd_XovS|9`pf&A!L`ZtL69cYfc=eN+1SdjDtdZ}z>v%t+lN)S~FTh&3|tGu=$AeC%Yf%zPWp2_ww$!-A8seyZ);98~%Q->$6=i
zbUo0uyX(@fC0#SS4(@8}{Nv7F?fhzS_y1Jqot@h|FYG*}bGUP`R5Azu&K?{r_nHZ|z@i|4jRH?f13sYQLm?ar?3D^56pEEX
zu~H~j3T13%FNQuup;##tYgs78&rNTkOq9BojZ)V#QtDb(N?prLDYWvX#6usVQx2$h
z%7^F_E1hDcQ>=7~l}@qJDONhgN~c)q6f2!#rBkeQij_{W(kWIt#d_w*vu>qRtaOT%
zPO;J{2k5m)rF}E1hDcQ>=7~l}@qJDONhgN~c)q6f2!#rBkeQij_{W(kWIt#Y(4G
z=@cuSVx?28bc&TuvC=8lvQyfI573sBp;FhfRO(u$N?oT!En}tlzS@$qR@#OKwIyY)
z)V1uDx|YFG*RojZO0xJzBU!8@icSXH3>K##Uk9u3wTch3*_2#HI
zMZGcVzNmYn?m?@&^S}*JuaCMr=(q>2E3`R0@T2Fhp$B%2eAj{Mz&vnm)N7(%9d&0^
z^4C8a`D-PAt>mwj{I!z5R`Smwj{I!z5R`SAk%7tlr~$4=w)e|DUyfz4f13
z?-qaC|9@y*-CEN+y*0fxuK7>R-*5g>^FKCUFTVQ!mgc7BisroLq-Lx5d;Y)Q_(tP%
zjTajqYFyvAtg*ECTmBDewD$=YDI)ns{8O^+Qdqm
zSZNb0ZDOTOth9-hHnGwsR@%f$n^O{}zul{T@`CRW*2w275AvC<}1+Qdqm3~8fIAK3@%X;Dv&dP>xVQ5Qr#
zIqG~=TQYA%$7xIEMm;I&iBac7Jt6AxQD;Y;6?JCRAof36&)Jai~jCw@W!=p}&dRWv$qfUr=NYsO)79m{xemqXUZsVgK7NSho|U8DzT6Dw_ErA@4~iIq07(k52g#7di3X%j1L
zVx>(EsczbXw8_EMO?!|wvC<}1+T`Hs?@$lYCRW*2w275AvC<}1+QdqmSZNb0ZDOTOth9-hHnGwsR@%f$n^
zO%B$pn>Ml1CRW)_AE8YSu5QUk
zXp@7gTk;Xw#7di3X_JGhTk;Xw#7di3X%j1LVx>*2w275AvC<}1+QdqmSZNb0ZDOTO
zth9-hHnGwsR@%f$n^<>@oF=T>qi&13HR_hAo1<=ux-sfiQLl`8Mbr&ZFORw&t?tf8
zE{l3;)OArWiF$F=wNckZy(sGHs24_E74?Fs=c8JUl~GrW=y+|(@~G!UJvZt(QO`!T
zJ7+~*7IkUVB~j0ex;W~hsAohyJ?d#u>EH4C8PmU3`qxVTTIpXa{cELvt@N*z{0jUV(!W;v*Gm6d>0c}TYo&j!^lw#1&;R@3{QnSba#(f$
z9->XGw275AvC<}oRbQVE(I!^f#7di3X%j1LVx>*2w275AvC<}1+QdqmSZNb0ZDOTO
zth9-hHnGwsR@%f$n^O{}!ZVbw)?h&Hj(CRW*2w275AvC<}1+QdqmSZNb0ZDOTOth9-hHnGwsR@%f$
zn^*2w275AvC<}1+QdqmSZNb0ZDOTOth9-h
zHnGwsR@%f$n^
zZ;Eh3&9
z|61waL#kWyApLttbu}KOf35VdmHxHTzgGI!O8;8vUn~70c}TYo&j!^sklvwbH*<`qxVTTIpXa{cELvt@N*z{sBYTBw8;_GO?#L&vC<}1
z+QdqmSZNb0ZDOTOth9-hHnGwsR@%f$n^*2w275AvC<}1+QdqmSZNb0ZDOTOth9-hHnGwsR@%f$n^O{}!Z5!JHz
zC~ab;O{}zul{T@`CRWG&4`6z92cy&uYN}E_|6Dw_ErA@4~
ziIq07(k52g#7di3X%j1LVx>*2w275AvC<}oYhh>;D{W$>O{}zul{T@`CRWYS)2L_I$0
z?5MM%&Ww6o)MKL_GollM@5|yb#l~6QICvzMAXBhPKOG@>t@N*z{0c}TYo&j!^sklvJ*>JV57EC?
z`qxVT`aYEYwbH*<`qxVTTIpXa{cELvt@N*z{*2w275AvC<}1
z+QdqmOsRe@<`LS&N}E_|lPT5D+dM*>Os>|=BeaQ?HnGwsR@%f$n^O(yGO
zk~Xo@CRW*2w275AvC<}1+Qdqm
zSZNb0ZDOTOth9-hHnGwsleHzZiIp~yK1`cfX%j1LVx>*2w275AvC<}1+QdqmSZNb0
zZ8EvKFb~rvR@!88bxR(mO(s>hSa+cjk+%CB~dSqx;E;Xs24?D
z9rePftD;_jRu|^s^P{eex+3cGsOLpJH|jZ2&yIRl)MZhZMqPqxOU{hC7}b_68qp)Q
zC1*rEJ?d#uPmOv?RQlKN1O02If35VdmHxHTzgGJ9NUah5Yo&j!^sklvwbH*<`qxVT
zTIpXa{cELvt@N*z{*2w275A8LqzWAEiyKw275AvC<}1
z+QdqmSZNb0ZDOTOth9-hHnGwsR@%f$n+#Xm*2w8_+JA3aK&SZNb0ZDOTOrs_3Mn^O{}zul{T@`CRW*2w275AvC<}1+QdqmSZNb0Z8B9GMVnY@6Dw_E
zrA@4~iIq07(k52g#7di3X%p)KBc}=LAgbLNh}s{u53Qb*9_@|VirS3Y7}2Au_gatk
zpjw#js9jMzQEf>_)b^-tQO6{G!a?DdR^3AQLl}9P1LKS?u@zvtuD+X+oNuax-}~Odz9WT{cELvt@N*z{0c}TYo&j!^sklvwbH*<`qxVTTIpXa{cELvt@N*z{O{}zul{T@`CRWO{}zul{T@`CRW5a<2
z!Rj&EWLkAg9-~dBRk!3Z+QdqmSZNb0ZDOTOth9-hHnGwsR@%f$n^O{}zu
zl{T@`CRWS#>a3_U
zqaGLa*r>-uoq=k1rbnF?_2{U>sJ3Kk)T5$Ki8?vzq^L(mJz_+U)|MQOYD*?YJuK>>
zQ71$_BVZ**qK=C?HtGRU2cy!zN9&oSf35VdmHxHTzgGI!O8;8vUn~7<
zrGKsTua*9_(!WP*&*)z({VRQx{;4Ja#7di3X%j1LVx>*2w275AvC<}1+T^(E>+=cP#7di3X%j1L
zVx>*2w275AvC<}1+QdqmSZNb0ZDOTOth9-hHaV`kJx|akR@%f$n^O{}zu
zl{PuH`uq12w275AvC<}1+QdqmSZNb0ZDOTOth9-hHnGwsR@%f$n;ffGH*I32O{}zu
zl{T@`CRWB9;Z#Lw275AvC<}1+Qdqm
zSZNb0ZDOTOth9-hHnGwsR@%f$n;cu+lE-NiD{W$>O{}zul{T@`CRWcwbvjUHbcbxqWZqOOj5
zVboPoFNk`6)Rj?JL|q>Byr}0!JtykfsMhGLsLP@*jk+Z2nNb%|0c}TYo&i@RL@$E)4wycF!ZmL{Z{;M+QdqmSZNb0ZDOTOth9-hHnGwsR@%f$n^O{}zul{T@`CRW;HcJ=rA
zCutKaZDOTOth9-hHnGwsR@%f$n^O{}zul{T@`CRW*2w275AvC<}1+QdqmSZNb0ZDOTOthC8&Z3%5Mt6D-&(k52g#7djY
z(i+hwR@%f$n^O{}zul{T@`CRWO{}zul{T@`Cf0$G(}cA@Y9FeF>5bZo+Kk$W+7q=qYFE_G
zs2x$;qqapIlk|zZquv$uPPDouPuwx0GplEYk`KM7=)h?x@#A-4*rPsMkcjI_l1-JECrnx-II~s9U0LMyq@F1pPZxO8;8v
zUn~70c}TYo&j!^zY2-ay>!+TIpXa{cELvt@N*z{ME_dpUn~7*2w275AvC<}1
z+QdqmSZNb0Z6bY&HnGwsR@%f$n^O{}zul{PuCx@k|*CUdG4@)T`irA@4~
ziIq07(k52g#7di3X%j1LVx>*2w275AnN$5(e~LD-(k52g#7di3X%j1LVx>*2w275A
zvC<}1+QdqmSZNb0ZDOTOth9-hHnGwsR@!7vbzz>OO{}zul{T@`CRW*2w8*2w275AvC<}1+QfSD$Z5hlKkB@wbEBSwYNJk!Iw$H0QIC&0JL;^cGov0C_1LJ#
zM4b_JdemuAkB&MVbt0c}TYo&j!^sklvwbH*<`qxVT
zTIpXa{cELvkJrM`ztSh^Un~70c}TYo&j!^sklv^(`s=
zYo&j!^sklvwbH*<`qxVTTIpXa{cELvt@N*z{O{}zul{T@`CRW*2n?_C(){RlGih5<#E23^d
ztGn~`cTv|I_iZ{S4F)b>iJPuMqLqg
zdDQcwo*VU?sAoq#E9$bSOQSA{dS=wcQ5Qu$BkJj>7Us05r$#*`>cXfCqMjUeepLGR
zB)z}%ua*9_(!W;v*Gm6d>0c}TYo&j!^sklvJxQxU|61u^EB$Mwe^1nw(7#st*Gm6d
z>0c}TYo&j!^sklvwbH*<`qxVT`aYEYwbH*<`qxVTTIpXa{cELvt@N*z{O{}zul{T@`CJU?U^)cGS
zN}E_|6Dw_ErA-!8H|=AziIq07(k52gWI?rVK1Q2ZX%j1LVx>*2w275AvC<}1+Qdqm
zSZNb0ZDOTOth9-hHnGwsR@%f$n^O{}!Z0=-&j6Dw_ErA@4~iIq07(k52g
z#7di3X%j1LVx>*2w275AvC<}1+QdqmSZNb0ZDOTO7HBnS6Dw_ErA@4~iIq07(k3Ts
zOK1}-ZDOTOth9-hHnGwsR@&rbtr2ZvrA@4~iIq07(k52g#7di3X%j1LVx>*2w275A
zvC<}1+Qiy7a+g`c)
zi+XF+TcX|^^(M5sCC}U#bzjuIQTIf>A?o!bI={Ll&+LwRUDRDsuZ?<5)T^WJjJhN0
zcC@-X&uojjHR_hAo1<=ux-lyKJ74b^{cELvt@N*z{0c}TYo&j!^sklvwbH*<`qxVTTIpXa
z{X1W~L;qUoUn~7O{5>EO{}zul{T@`CRW*2w275AIkmcJAE!;Mw275A
zIkox<_&9B1rA@4~iIq07(k52g#7di3X%j1LVx>*2w275AvC<}1+QdqmSZR|}t6TDM
z+QdqmSZNb0ZDOTOth9-hHnGwsR@%f$n^O{}zul{T@`CRWIqSgk2*W*tf(`i9vAi4sK-Q|5p{ahX;F`kIvjOs)T2=C&XlN=qfUx?WYi;~9v*dK
z)Wf148g)X{L!urW^`NNZqaGM_DC)SVW1}7rbuj8c)c&Y_QF~Es3H^JDl>W8SzgGI!
zO8+j@me9Xe`qxVTTIt_~S|j?`O8-hfM*mvrUn~70c}T
zYo&j!^sklvwbH*<`q%fC^sklvwbH*<`qxVTTIpXa{cELvt@N*z{O{}zul{Q&a?TzPX6Dw_ErA@4~iIq07(k52g#7di3X%j1LVx>*2
zw275AvC<}1+QdqmSZNb0ZDOTOth9-hHnGwsR@%f$n^O&003Nt;+{6Dw_E
zrA@4~iIq07(k52g#7dhi(w5LBXH>W3S=!``>Xtl9n^O{}zul{T@`CRW*2w275AvC<}1+QdqmSZNb0
zZDOTOth9-hHnCnca+&8=_twb$!&!qFx$xUDQjWUW`_E=h?MU*F?Q2>guQ$
zMqL&40<^j%&z?V`r)x`AMqLqgIjY?`FY38b&xv|=)U%>4i@G%GlBj1!T^w~0s@*vw
z>giEWi+XC*Q=%@6x*+PwQRhdU7jUVx>*2w275AvC<}1
z+QdqmSZNb0ZDOTOmR8s6dD_HEn=GlW*YmWAl{T@`CRW;HNwu1ur%kN1iIq07(k52g
z#7di3X%j1LVx>*2w275AvC<|>^ctc~th9-hHnGwsR@%f$n^O{}zul{T@`
zCRWO{}zul{T@`
zCRW;HiME6`vC<}IYD;L7GqnV?iIq07(k52g#7di3X%j1LVx>*2w275Av9?A|6V_(b
zM%13D-Ke&tD{5!dj;QTX+oFz1`rO@7?}~b7)H|Zy9`&}Uw?@4s>djGaih5(zeNp#D
z-4peOsMkl`9rZf2x<=3Kih6C-YocBqb!XHaQMX6k7IiCHU6|*#jOgO(YCN|&>ZYh0
zqh1yD%Bb|O-v|2FO8;8vUn~7*2w2AZu+QdqmSZNb0ZDOTOth9-hHnGwsR@%f$n^O{}zul{T@`CRW*2w275AvC<}IS4-#x+Qdqm
zoK<~ozCfE;X%j1LVx>*2w275AvC<}1+QdqmSZR~9s$22`ZDOTOth9-hHnGwsR@%f$
zn^O{}zul{T@`CRW*a
z(rVBqR@%f$n^s3$}{KI&{#t1&C;%&5nW=(6hPZC*Gw>M^Kx
zXGYZNQKv;cI_hxLsZo!LIwk64R0}gH>XA{8h
0c}TYo&j!^sklvwbH*<`qxVT
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