From cb6a3394d5bac58cb01af81f4b3b06f032f548c4 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 25 Feb 2016 16:19:59 -0800 Subject: [PATCH] Add encounter tables --- Legality/Analysis.cs | 15 ++++++---- Legality/Core.cs | 27 +++++++++++++---- Legality/Data.cs | 20 ++++++++----- Legality/Tables.cs | 1 + PKHeX.csproj | 6 ++++ PKX/f1-Main.cs | 2 ++ Properties/Resources.Designer.cs | 50 ++++++++++++++++++++++++------- Properties/Resources.resx | 13 ++++++-- Resources/byte/dexnav_ao.pkl | Bin 1128 -> 0 bytes Resources/byte/encounter_a.pkl | Bin 0 -> 37808 bytes Resources/byte/encounter_o.pkl | Bin 0 -> 37808 bytes Resources/byte/encounter_x.pkl | Bin 0 -> 20360 bytes Resources/byte/encounter_y.pkl | Bin 0 -> 20360 bytes 13 files changed, 104 insertions(+), 30 deletions(-) delete mode 100644 Resources/byte/dexnav_ao.pkl create mode 100644 Resources/byte/encounter_a.pkl create mode 100644 Resources/byte/encounter_o.pkl create mode 100644 Resources/byte/encounter_x.pkl create mode 100644 Resources/byte/encounter_y.pkl diff --git a/Legality/Analysis.cs b/Legality/Analysis.cs index 2f0337990..d2af0c807 100644 --- a/Legality/Analysis.cs +++ b/Legality/Analysis.cs @@ -29,7 +29,7 @@ public class LegalityAnalysis public LegalityCheck EC, Nickname, PID, IDs, IVs, EVs; public int[] ValidMoves => Legal.getValidMoves(pk6.Species, pk6.CurrentLevel); public int[] ValidRelearnMoves => Legal.getValidRelearn(pk6.Species); - public bool DexNav => Legal.getDexNavValid(pk6.Species, pk6.Met_Location, pk6.CurrentLevel); + public bool DexNav => Legal.getDexNavValid(pk6.Species, pk6.Met_Location, pk6.Met_Level, pk6.Version); public string Report => getLegalityReport(); private readonly PK6 pk6; @@ -71,16 +71,21 @@ public bool[] getRelearnValidity(int[] Moves) if (!pk6.Gen6) goto noRelearn; - bool egg = pk6.Egg_Location > 1000 || pk6.Egg_Location == 318; - bool evnt = pk6.Met_Location > 40000 || pk6.Egg_Location > 40000; + bool egg = Legal.EggLocations.Contains(pk6.Egg_Location) && pk6.Met_Level == 1; + bool evnt = pk6.FatefulEncounter && pk6.Met_Location > 40000; + bool eventEgg = pk6.FatefulEncounter && (pk6.Egg_Location > 40000 || pk6.Egg_Location == 30002) && pk6.Met_Level == 1; int[] relearnMoves = ValidRelearnMoves; - if (evnt) + if (evnt || eventEgg) { // Check Event Info // Not Implemented } else if (egg) { + if (new[] {25, 26, 172}.Contains(pk6.Species)) // + { + relearnMoves = relearnMoves.Concat(new[] {344}).ToArray(); + } for (int i = 0; i < 4; i++) res[i] &= relearnMoves.Contains(Moves[i]); return res; @@ -88,7 +93,7 @@ public bool[] getRelearnValidity(int[] Moves) else if (Moves[0] != 0) // DexNav only? { // Check DexNav - for (int i = 1; i < 4; i++) + for (int i = 0; i < 4; i++) res[i] &= Moves[i] == 0; if (DexNav) res[0] = relearnMoves.Contains(Moves[0]); diff --git a/Legality/Core.cs b/Legality/Core.cs index e628304ab..8541b3730 100644 --- a/Legality/Core.cs +++ b/Legality/Core.cs @@ -14,11 +14,29 @@ public static partial class Legal private static readonly EggMoves[] EggMoveAO = EggMoves.getArray(Util.unpackMini(Properties.Resources.eggmove_ao, "ao")); private static readonly Learnset[] LevelUpAO = Learnset.getArray(Util.unpackMini(Properties.Resources.lvlmove_ao, "ao")); private static readonly Evolutions[] Evolves = Evolutions.getArray(Util.unpackMini(Properties.Resources.evos_ao, "ao")); - private static readonly DexNavLocations[] DexNavAO = DexNavLocations.getArray(Util.unpackMini(Properties.Resources.dexnav_ao, "ao")); - - internal static bool getDexNavValid(int species, int location, int level) + private static readonly EncounterArea[] SlotsA = EncounterArea.getArray(Util.unpackMini(Properties.Resources.encounter_a, "ao")); + private static readonly EncounterArea[] SlotsO = EncounterArea.getArray(Util.unpackMini(Properties.Resources.encounter_o, "ao")); + private static readonly EncounterArea[] SlotsX = EncounterArea.getArray(Util.unpackMini(Properties.Resources.encounter_x, "xy")); + private static readonly EncounterArea[] SlotsY = EncounterArea.getArray(Util.unpackMini(Properties.Resources.encounter_y, "xy")); + private static readonly EncounterArea[] DexNavA = getDexNavSlots(SlotsA); + private static readonly EncounterArea[] DexNavO = getDexNavSlots(SlotsO); + private static EncounterArea[] getDexNavSlots(EncounterArea[] GameSlots) { - DexNavLocations[] locs = DexNavAO.Where(l => l.Location == location).ToArray(); + EncounterArea[] eA = new EncounterArea[GameSlots.Length]; + for (int i = 0; i < eA.Length; i++) + { + eA[i] = GameSlots[i]; + eA[i].Slots = eA[i].Slots.Take(20).Concat(eA[i].Slots.Skip(25)).ToArray(); // Skip 5 Rock Smash slots. + } + return eA; + } + + internal static bool getDexNavValid(int species, int location, int level, int Version) + { + bool alpha = Version == 26; + if (!alpha && Version != 27) + return false; + EncounterArea[] locs = (alpha ? DexNavA : DexNavO).Where(l => l.Location == location).ToArray(); return locs.Any(loc => loc.Slots.Any(slot => slot.Species == species && slot.LevelMin <= level)); } @@ -55,7 +73,6 @@ internal static int[] getValidRelearn(int species) moves = moves.Concat(getEggMoves(species)).ToArray(); moves = moves.Concat(getLVLMoves(species, 100)).ToArray(); return moves.Concat(new int[1]).Distinct().ToArray(); - // Not implemented: DexNav exclusive moves, Wonder Cards } private static int[] getEggMoves(int species) diff --git a/Legality/Data.cs b/Legality/Data.cs index 25d799f10..4a0d0b103 100644 --- a/Legality/Data.cs +++ b/Legality/Data.cs @@ -91,27 +91,31 @@ public static Evolutions[] getArray(byte[][] entries) } } - public class DexNavLocations + public class EncounterArea { public readonly int Location; - public readonly EncounterSlot[] Slots = new EncounterSlot[3]; - public DexNavLocations(byte[] data) + public EncounterSlot[] Slots; + public EncounterArea(byte[] data) { Location = BitConverter.ToUInt16(data, 0); + Slots = new EncounterSlot[(data.Length-2)/4]; for (int i = 0; i < Slots.Length; i++) { + ushort SpecForm = BitConverter.ToUInt16(data, 2 + i*4); Slots[i] = new EncounterSlot { - Species = BitConverter.ToUInt16(data, 2 + i*4), - LevelMin = BitConverter.ToUInt16(data, 4 + i*4) + Species = SpecForm & 0x7FF, + Form = SpecForm >> 11, + LevelMin = data[4 + i*4], + LevelMax = data[5 + i*4], }; } } - public static DexNavLocations[] getArray(byte[][] entries) + public static EncounterArea[] getArray(byte[][] entries) { - DexNavLocations[] data = new DexNavLocations[entries.Length]; + EncounterArea[] data = new EncounterArea[entries.Length]; for (int i = 0; i < data.Length; i++) - data[i] = new DexNavLocations(entries[i]); + data[i] = new EncounterArea(entries[i]); return data; } } diff --git a/Legality/Tables.cs b/Legality/Tables.cs index 80b952f1c..97b1b925d 100644 --- a/Legality/Tables.cs +++ b/Legality/Tables.cs @@ -209,5 +209,6 @@ public static partial class Legal internal static readonly int Struggle = 165; internal static readonly int Chatter = 448; internal static readonly int[] InvalidSketch = {Struggle, Chatter}; + internal static readonly int[] EggLocations = {318, 60002, 30002}; } } diff --git a/PKHeX.csproj b/PKHeX.csproj index 548746b86..d23e061f4 100644 --- a/PKHeX.csproj +++ b/PKHeX.csproj @@ -363,6 +363,12 @@ + + + + + + diff --git a/PKX/f1-Main.cs b/PKX/f1-Main.cs index 0845f7865..51f973353 100644 --- a/PKX/f1-Main.cs +++ b/PKX/f1-Main.cs @@ -1854,6 +1854,8 @@ private void updateOriginGame(object sender, EventArgs e) CB_EncounterType.SelectedValue = 0; setMarkings(); // Set/Remove KB marking + pk6.Met_Location = Util.getIndex(CB_MetLocation); + pk6.Egg_Location = Util.getIndex(CB_EggLocation); updateValidMoves(); } private void updateExtraByteValue(object sender, EventArgs e) diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs index ba5648511..3988cad2b 100644 --- a/Properties/Resources.Designer.cs +++ b/Properties/Resources.Designer.cs @@ -9786,16 +9786,6 @@ internal class Resources { } } - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] dexnav_ao { - get { - object obj = ResourceManager.GetObject("dexnav_ao", resourceCulture); - return ((byte[])(obj)); - } - } - /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -9866,6 +9856,46 @@ internal class Resources { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] encounter_a { + get { + object obj = ResourceManager.GetObject("encounter_a", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] encounter_o { + get { + object obj = ResourceManager.GetObject("encounter_o", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] encounter_x { + get { + object obj = ResourceManager.GetObject("encounter_x", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] encounter_y { + get { + object obj = ResourceManager.GetObject("encounter_y", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// diff --git a/Properties/Resources.resx b/Properties/Resources.resx index ea6718095..fb1d958fd 100644 --- a/Properties/Resources.resx +++ b/Properties/Resources.resx @@ -5761,7 +5761,16 @@ ..\Resources\img\warn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\byte\dexnav_ao.pkl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\byte\encounter_a.pkl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\encounter_o.pkl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\encounter_x.pkl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\byte\encounter_y.pkl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/Resources/byte/dexnav_ao.pkl b/Resources/byte/dexnav_ao.pkl deleted file mode 100644 index b89834619d387860f0fbb00a003690c67c6387a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1128 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 S=%V`u&i#_*oS&}@@BarGh1~K0 literal 0 HcmV?d00001 diff --git a/Resources/byte/encounter_x.pkl b/Resources/byte/encounter_x.pkl new file mode 100644 index 0000000000000000000000000000000000000000..514be6e1d4273ab0b355cf0dcd59ae925ba6bf9f GIT binary patch literal 20360 zcmeI4YiwM_701sV$B(QZ>qpl1t~ZYHW4%edw%1N=9D7NiiE-J~rb$|%iYO>5NfaQY zg*Jg8k+z}g2VRm%g#=a}>xj~#C{PNd6q0D;1OcK&ZA3w(1&I%pDpd`i%BS`>yS~bH za&f%bbsXdU@Ygx>xHD(|b7ppC?%dt;z}MujB66D&`E#Dgt@$GF7KjWLiJVy|vbtF0 z_a!3Nmx;XW7U`@Id7)AyxJYE&BhpYK@@%b0txx2sI+60lB9GRK6g7zKzm9^NL>_7u z`A>_;{jDPZ4vO5pOynQSMZOmj`J`Rs_D+$%ghe)Xi~Mng$hsbpw|Yg^^og8WDKao1 z@>)b>#VV2Gt3}#w68YuVMVi-&92yky4~abe4Ut7rktf%Qlnjgfd;}?@N~uwmmse=z zAG%Yp@^K*X|g$OZ>xa*<=DG|varf(8GDYYUkN zT%weh_%e9+=D5$I-<9L{d3mF7`~-gg1e|NXKcMpSwVyw0<>xO0?@4~X=G}{&>pt(d zyxv#E>-Aec->Xtr=eO#Zi!Sx!AB)><<45HGHqUAK6KQJN4ZdSFF<)K!-1Os^7Snuw z%vDe@<|-^4a}^aGv*l8b=>TKZ1S;Y!sJkz;d}(A$zTb3wzPi zwdD|H9->TL-VyX8=;P?RzHF4Au07ezKfs(|qJufZL@z#S zv0RFamrF^>Vf4f3jaEs?QB_=gRF#xGhkOoshgDpB2l3gcGdpFlyh?LUm@oP5xn9ee znePKKfiFy0rKJ;ASy>-)C3r!VmHku7%GMzJiPvdkm8GR)jYwBX$(Re>HO>4!^83i| zn_m98)VHtmTV$e#I1~N+PMKg2GVlC;h_%XU)+|Hf^9`}iS= z^376F@dL~4w(+v^dhh2sEx*tD=C`V;>4&U!GV_yV@;rY2JbwK=b*)8Ti@pv0F6=pm z-;WSJhJGLNzC?U!>0QL@^ljwdM*Ldh_47{oGqW$fHPUqIa^}9W^0=z345_NB<7&~O z5U_dIQggm%lKVfwx#s=>WHoC%6C?Qetw2i~i^yk!{cq0i6Mlbr?z8Xr99PWo-`ZBj zU#luFPokpYG=6&8Dlbo>qT&_OUm-n-3eJ17KbEen%r4o+o?RBFnSpM4dffh z_r>G+3_Jp=TvRaNhcomN%#8TunqRrLrmS%$~+24&g#ugtD%g`cVISk8XO#A(*K zCO%``YeJ+)mRi--ORbukI#pd=r)p{*Bm5ZQmn@IxMQ|Ow*Mm3V^G))6mAOo}Z4Gdm zip7LqVjp4RQPz?sID3@`rMmh-sj0aUUT=i^5;!hFKZ&lnf1C6d>5ujVYB-af+85?i z`m6A4qJ+KNR5&@Ap5s08Mjj^ZFljn&AGYtqZk^`>`UUh8v|$9fmGHyJ!<2ED_Y+R-n$0+q`=4TK zh;_wr5K^_Z$JxV%fXV$%+M~Ju8=PzI@8xWvnti>A-$-exiG7@nT>x6z5aG4%9QXTf z`nntblJNV7=V9Jqf?xsl8Fk_y|NP=Ogj^qrfR&cH`Da+^VmSTT7M< zibg|2T{M%(2(8wGoP!qy>aY|WBVz!WXUPj(69r!18KJ* z)qb6S2kp{%?R-vc8sKcr#s+*og0FAD*R|X@Dc5rDW+Kj>+C&X!b0$Q%!Z64Eex~fV zdDk-F(%gH!N!ipCV9wWlkXhZgNP*SZSU^7(Sk29G^f>x1)!h6A;bGO-I7~fpWIQ38 zdD)V=uTE9Q7ufIxHt70yQSUBYFS@ob8}_&uZJk z^=WgTZeLw%`6Cht#H>IdBCV}4D;SJOkQYdoj^zQ)25kgf_4N^cCz3K445%-E&Z#Wt zxb^ZewtS2oZz+vna4T{v@*(0L!mdrEZ$jTj+@>$F)4A+R+w)b+H^{lJi93li@h{FI zO^D1t?z8FlCht0I@~*=s?>ammxzFa<%W*$@b6aNIZ=CbLweRq|`Ht1vs__B8OP})l z^l3tBJsA9e@COMQ48F^6Yc~Bpv$Adzk7{f4s8GnG+S}JyZEb6;P{=Rs?P06EeGh3- z35BABcavu~c`~c-@;(~IhA=kh`u)<@=BNHO=-R%SvL{MCc013bpQpXkY3D7Rg_+pH zxzJSDJ((`@-8t{~)8QyJkDI=Y0XO{{qfgx+HQm++*vHxkuy4@&*rW`F0{CGBpRn^@ znY=x1?&J7GTsk`9(%E?$Up%ckItJ0tSe>2g(6@t4q@SZr=ZHIlJY#iq==4FJ9VG3v z>g?3dJLONe9sh4nvg{q$u!B0B%GddKOxmsUXj`1>w0YOkKF3MQP-r9l_B-k78sv=E z#2<(=QA-&nMDCDrI2f03c$~6Y(Oc0cR9Dw3FoInpDjXg`??>-PI@y`cxK-4%iaK@u z6X+A@t=OjRn+`w#iV{HUn$$e~6c69}4mwwjdU58W0i>TxoNkZu?`jEoOCh$E+1AhS7%;dRN!Y=r@fi zzCMpyxzeNh`|m;CgWM!5S4O3;FN(Z7f&TsniPy-izRRyMXS)0d?TT4_eG%Ffv-ic-M#pJ5**TZuuJnG6)7>cZZjKI*a6iYyR_^7P5ZTWS9k=@??mFDWJ%)RM{?=$a zaodSoZ&g%$3*1Ls2j3KQaQ|U0@qBIDx_`#^R@Zj>lfSi2-@47b-9M8S#z_m`tF_?Q z-RRxu-RMghJ4+cWOBn-ORB7oJzHi&Y_cJqZQ)X+At7%^gdrcEd`TqeETlk*d1pg%? z7thL*=l1%HJc&?f59fWUXWRN5|7y1FYSoq6#&pi_ozCga^L!od(rHOUvd20)ab;zmxbl@p0nfO6!5Z MmHJ5TInzh}2dU#p$p8QV literal 0 HcmV?d00001 diff --git a/Resources/byte/encounter_y.pkl b/Resources/byte/encounter_y.pkl new file mode 100644 index 0000000000000000000000000000000000000000..856d80fb95c625da55901c68726ba11bb4e3a790 GIT binary patch literal 20360 zcmeI4TWnOv8OOgf#uwIWuW#$ivKYsg^#WdB!N%AdND7Xdr8WgxMQKnX)Bqxc(vlVm zJkXX@eMkzDLlr5p0$HOpX@y8qC80C{v>2i!N*lE#P1Ll>Tct`>$wO0KXn*7N5$^cJ z@p{)7!#@1=eRDZ8-~8vBIWx0!cFzx&%3nm}9wqXp43V{&BJX60^yY}1pDVI5SLAnY zk!ATJzwwAP7mED4NF-PyGUOGhDie9ST%_D5^29umg83qkRf^t3{6Xi1>R&p8TpvNkruE8WDG&$j|zbGN6Zyr$FY+aRCv_N+T5<nW_E!X)7~x5qMWJGd1rO$l31meygJ5 zRjH`(TRz{bGH;&Wn#Wu;-j9DI9*>P5kpCMzr{#~Ore-(zrd7jyHU7ED$1yD?`23(N zD{Ih|ojvHv$$7@g%6i7i&VI(q$@v91E;%_3$Z{}PM4sv#=H8NS@dVohtPF>sVF~Dds3Odn>oQm6LW@%W%#I#j!|8tI$^(0rR}LGYcYPY zSaNe0i`#t+{TO<+<#r!exw*%c+x;B!IphOYZterbr=rf(l)>^U!8zep$#2i~T29Y= zACO^uVc5#c8@BTEJCV!53o1YVACjNH3fV=xP8%%B%Nwjly4>zT7rJYb`F-T~k>5AD z{IjWVPxCG^(ayWcL>KQw6YN25Ilu2^t+J9eORxBRy{vOqvd#&qyu6bjgs+`c9#05- z&$@<}R7J%jJg4P%S>L>@YHGgES|>R_StQTn=g;HU&r{cG^wsEF&>y1y6WFqr@Co!? z$Xz4xd3g^JuhX}Xe+%)eiPz6N93F;M~~C@W1VYaDeGGkBJHx!DlJ`Tm6iEaX{k?@l|4@Q zal$Xb`HSE-c&`L+z~>v}xtY04v~5-FCFTPyZM+1}CLUugX@av?*(;@`d!?-G4tTu- z?%iv}2^{xC7XJ0K0Xb%jlQU zPtk^c05u@1?(cwNH=0?>|lWGi5VYrs};k@StET_n#%tEwus z^(Q}9YkOnZ7sK|mYQciDs;X)mavRca!&v)u{%y2N=e6@WwW*u4V;k%7`7pk|9$(jT z!>C*>1qCKz?5RzZNnxQ05w0-Ia=)K0`)%H}3@`_UnQ!8gucX z<5jD+HijNU->GVAuMqB2)zy8xTVlxAh^*zumgIePqB5>v!xe1M_3xzKow{ChZC@(v z@lbvgc&H;vnI7O|&t$m2AVozc`czSoi5TZGCPcWVlOUHpjJY1U)=$yVHk^l}I5(tS z$G*BiU2)XZT)-bMxN2)J6xG%`*>l0CxxP`jUzafViT2fvmOm_kK-3BZ!ct!!wSvL0 z1o;7J{8;YhY|uu4_d}TXL|g`g0oNBl=Tw$++&cLfTRz5)H00e{vRSLS*vXYu;}L?o;XaCht0I@~*=s?>d|a z_i4W$KaSJfkLToi&27nXzhTzDYv1O*`L-}*Y8L7qpz|W8?}AYWlw~9>~>y4zeL@WY3JRXg_+pHxzKo&m+#@MNMrY?6uEcS z`~74%8k@(1e?@@@AB)nb9xyiD*1Orq+6b_B(Ps&9843klp->o~u=7q$-j^` zO-(UrZa#-Eo>NUtJ?Q7H=H@l%Tfs)sFVd!q#GOZ;x0;%CdJoU`kakWrH|yt}@+aDk z|F-^hB?bdm;ElzdXylZKnxm_r#efrwkJ! z56BQ43`tAN5M|Y)*P{=s*47oEAG`WhOG`g`7kU@c$<9>9t)QM2)T!$qMjuA6$2M)> zOxQC~+xj@?F)>WsL^wr1=yZ`y3H$w6ZVu8{2kEP8+>Gs~mKNPtPJMe29^-vGKL12* zO+}iA@fXH!kJZu=#tx6=>`&e7V{HW3SL*$5T(-6bT&=D8S(A4i9y?xa-NQMk3BKn_ znEOQAAEj+ktF0|+Em_is-Z!GRw%&z)7jYlTk|q0S$3AIm+lT%k`iJN`-p;S%?EJc% zvH26VM{})h@{HQ#p**KDY~HoBxgUUk&3OQydSb*TpYJYy9~g_T5jL@p-vvyFZ06gC z%*+A4^>_;T6tbOfJq~d{f6)lCv)6Oi_FZs>@EPtE9;WQW{1(y9*lFkYhNtN3C)B)o zuMvKY@OtnrI745bA+J-rW-`vUyB$8_Haq`jXx;(8o%ZOv;Py8^D>y?;t{q!hV|I3W z)$-+D)z$Sd@?qpgS-w0Xot+Wn_7QY-?Im6#x%!e@f2N}DFzt$3ot5%(iS$dzZq_w60<5p~x+X3=Is&eaj<9re+|BP>CZg8-`6jkAc1(!edfYqppA+{^ z`OG+zcO8z%{P`wK-gP+5eRAV4S?hda5)@EveJ*h<`1 z;?`M(g1Tf+p@i%qE_1Y+Dab``+rtZh!n;tG{i#AAbue?Ry0U+W)5C?w?8> zvR0;*|zId*Vr~Da(+MloPPXyzCPdoH)oqB z(%i?#SepBpn`_eC&m8wto!ioL&dl{$a@_x%+fj9O>-a5S-+$ey>gw(vK_KuT@edLo UBR)o4Oldt3n5vJYpEG^re|C*#K>z>% literal 0 HcmV?d00001