From 50c3ba754612581a79526e9911b13f9ce5e499f2 Mon Sep 17 00:00:00 2001 From: Crzyrndm Date: Sun, 1 May 2016 20:57:26 +1200 Subject: [PATCH 01/15] fix removed subcats throwing loop indexing off --- .../ConfigNodes/customSubCategory.cs | 9 --------- FilterExtension/Utility/PartType.cs | 6 +++--- .../000_FilterExtensions/FilterExtensions.dll | Bin 61440 -> 60928 bytes 3 files changed, 3 insertions(+), 12 deletions(-) diff --git a/FilterExtension/ConfigNodes/customSubCategory.cs b/FilterExtension/ConfigNodes/customSubCategory.cs index 553c749e..85556c26 100644 --- a/FilterExtension/ConfigNodes/customSubCategory.cs +++ b/FilterExtension/ConfigNodes/customSubCategory.cs @@ -131,9 +131,6 @@ public bool checkFilters(AvailablePart part, int depth = 0) /// true if the subcategory contains any parts public bool checkSubCategoryHasParts(string category) { - //if (Editor.subcategoriesChecked) - // return true; - PartModuleFilter pmf; AvailablePart p; for (int i = 0; i < PartLoader.Instance.parts.Count; i++) @@ -151,12 +148,6 @@ public bool checkSubCategoryHasParts(string category) return true; } -#warning this is not working. Empty categories will show up if the one pass checking is enabled - // only need to do this the first time we hit the editor - customCategory C = Core.Instance.Categories.FirstOrDefault(c => c.categoryName == category); - if (C != null) - C.subCategories.RemoveAll(s => s.subcategoryName == subCategoryTitle); - if (Settings.debug) { if (!string.IsNullOrEmpty(category)) diff --git a/FilterExtension/Utility/PartType.cs b/FilterExtension/Utility/PartType.cs index 2fe54dbc..44601b74 100644 --- a/FilterExtension/Utility/PartType.cs +++ b/FilterExtension/Utility/PartType.cs @@ -593,10 +593,10 @@ public static bool checkBulkHeadProfiles(AvailablePart part, string[] value, boo { if (part.bulkheadProfiles == null) return value.Contains("srf"); - - foreach (string s in part.bulkheadProfiles.Split(',')) + + foreach (string s in part.bulkheadProfiles.Split(',').Select(s => s.Trim())) { - if (contains == value.Contains(s.Trim())) + if (contains == value.Contains(s, StringComparer.OrdinalIgnoreCase)) return true; } return false; diff --git a/GameData/000_FilterExtensions/FilterExtensions.dll b/GameData/000_FilterExtensions/FilterExtensions.dll index 9c14ec273fe712798e21ddfd9fdfac719830330f..d18d21e02cb6f120185249e221f7e4509bdd5f99 100644 GIT binary patch delta 7759 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 J3Ty9g`)|qQU&jCd delta 7847 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 Y_lx-~mi*bbsxopwO#k8v+uq0V-*}*BX8-^I From 5f847b016c0aba81e799d47e18ca115c39d5fb88 Mon Sep 17 00:00:00 2001 From: Crzyrndm Date: Sun, 1 May 2016 21:03:24 +1200 Subject: [PATCH 02/15] possible fix for data collection crash because of a module self destructing --- FilterExtension/Core.cs | 4 ++-- .../000_FilterExtensions/FilterExtensions.dll | Bin 60928 -> 60928 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/FilterExtension/Core.cs b/FilterExtension/Core.cs index 158ed4e5..da00bb32 100644 --- a/FilterExtension/Core.cs +++ b/FilterExtension/Core.cs @@ -152,8 +152,8 @@ private void getPartData() resources.AddUnique(r.resourceName); } } - if (p.partPrefab.Modules.Contains("PartModuleFilter")) - filterModules.Add(p.name, (PartModuleFilter)p.partPrefab.Modules["PartModuleFilter"]); + if (p.partPrefab.Modules.Contains()) + filterModules.Add(p.name, p.partPrefab.Modules.GetModule()); } generateEngineTypes(); diff --git a/GameData/000_FilterExtensions/FilterExtensions.dll b/GameData/000_FilterExtensions/FilterExtensions.dll index d18d21e02cb6f120185249e221f7e4509bdd5f99..7f334cc443fead3c153e301ac5ad78cf6df9a901 100644 GIT binary patch delta 9054 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 JBXw;w{|Bs~rcwX^ From cb24615308910b390f5e961a6d631da93ee90ca9 Mon Sep 17 00:00:00 2001 From: KaiserSoze Date: Sun, 1 May 2016 12:24:02 +0200 Subject: [PATCH 03/15] New icons for mods --- .../Autoloaded_Icons_Mods/0PinlineFairings.png | Bin 0 -> 4497 bytes .../0PinlineFairings_selected.png | Bin 0 -> 3605 bytes .../Autoloaded_Icons_Mods/B9_Aerospace_HX.png | Bin 0 -> 3099 bytes .../B9_Aerospace_HX_selected.png | Bin 0 -> 3660 bytes .../B9_Aerospace_ProceduralWings.png | Bin 0 -> 3781 bytes .../B9_Aerospace_ProceduralWings_selected.png | Bin 0 -> 3922 bytes .../Icons/Autoloaded_Icons_Mods/BZ-1.png | Bin 0 -> 3131 bytes .../Autoloaded_Icons_Mods/BZ-1_selected.png | Bin 0 -> 3150 bytes .../Better Science Labs Continued.png | Bin 0 -> 4198 bytes .../Better Science Labs Continued_selected.png | Bin 0 -> 3897 bytes .../Icons/Autoloaded_Icons_Mods/CryoTanks.png | Bin 0 -> 1431 bytes .../Autoloaded_Icons_Mods/CryoTanks_selected.png | Bin 0 -> 1764 bytes .../Autoloaded_Icons_Mods/EVAStruts - copia.png | Bin 0 -> 1265 bytes .../Icons/Autoloaded_Icons_Mods/EVAStruts.png | Bin 0 -> 1200 bytes .../Icons/Autoloaded_Icons_Mods/EVATransfer.png | Bin 0 -> 849 bytes .../EVATransfer_selected.png | Bin 0 -> 893 bytes .../Eskandare_Heavy_Industries.png | Bin 0 -> 942 bytes .../Eskandare_Heavy_Industries_selected.png | Bin 0 -> 788 bytes .../Icons/Autoloaded_Icons_Mods/Firespitter.png | Bin 0 -> 2451 bytes .../Firespitter_selected.png | Bin 0 -> 2022 bytes .../Icons/Autoloaded_Icons_Mods/HGR.png | Bin 0 -> 2267 bytes .../Icons/Autoloaded_Icons_Mods/HGR_Redux.png | Bin 0 -> 2540 bytes .../Autoloaded_Icons_Mods/HGR_Redux_selected.png | Bin 0 -> 2549 bytes .../Icons/Autoloaded_Icons_Mods/HGR_selected.png | Bin 0 -> 2259 bytes .../Icons/Autoloaded_Icons_Mods/HeatControl.png | Bin 0 -> 1971 bytes .../HeatControl_selected.png | Bin 0 -> 2296 bytes .../Autoloaded_Icons_Mods/HullCameraVDS.png | Bin 0 -> 973 bytes .../HullCameraVDS_selected.png | Bin 0 -> 997 bytes .../Autoloaded_Icons_Mods/IndicatorLights.png | Bin 0 -> 2093 bytes .../IndicatorLights_selected.png | Bin 0 -> 2158 bytes .../Icons/Autoloaded_Icons_Mods/KAX.png | Bin 0 -> 737 bytes .../Icons/Autoloaded_Icons_Mods/KAX_selected.png | Bin 0 -> 776 bytes .../Autoloaded_Icons_Mods/KerbalAtomics.png | Bin 0 -> 1538 bytes .../KerbalAtomics_selected.png | Bin 0 -> 1407 bytes .../Icons/Autoloaded_Icons_Mods/LETech.png | Bin 0 -> 2624 bytes .../Autoloaded_Icons_Mods/LETech_selected.png | Bin 0 -> 2973 bytes .../Icons/Autoloaded_Icons_Mods/MBI.png | Bin 0 -> 1145 bytes .../Icons/Autoloaded_Icons_Mods/MBI_selected.png | Bin 0 -> 1256 bytes .../Icons/Autoloaded_Icons_Mods/MainSailor.png | Bin 0 -> 759 bytes .../MainSailor_selected.png | Bin 0 -> 841 bytes .../Icons/Autoloaded_Icons_Mods/Mk2Expansion.png | Bin 0 -> 1629 bytes .../Mk2Expansion_selected.png | Bin 0 -> 1552 bytes .../Icons/Autoloaded_Icons_Mods/Multiports.png | Bin 0 -> 1986 bytes .../Multiports_selected.png | Bin 0 -> 2269 bytes .../Icons/Autoloaded_Icons_Mods/OrbitalTug.png | Bin 0 -> 2692 bytes .../OrbitalTug_selected.png | Bin 0 -> 2890 bytes .../Icons/Autoloaded_Icons_Mods/REPOSoftTech.png | Bin 0 -> 1057 bytes .../REPOSoftTech_selected.png | Bin 0 -> 1196 bytes .../Icons/Autoloaded_Icons_Mods/SDHI.png | Bin 0 -> 621 bytes .../Autoloaded_Icons_Mods/SDHI_selected.png | Bin 0 -> 690 bytes .../Autoloaded_Icons_Mods/SpaceY-Expanded.png | Bin 0 -> 1070 bytes .../SpaceY-Expanded_selected.png | Bin 0 -> 1475 bytes .../Icons/Autoloaded_Icons_Mods/TalisarParts.dds | Bin 0 -> 1152 bytes .../TalisarParts_selected.dds | Bin 0 -> 1152 bytes .../Autoloaded_Icons_Mods/TarsierSpaceTech.png | Bin 0 -> 2109 bytes .../TarsierSpaceTech_selected.png | Bin 0 -> 1965 bytes .../ThrottleControlledAvionics.png | Bin 0 -> 752 bytes .../ThrottleControlledAvionics_selected.png | Bin 0 -> 858 bytes .../Autoloaded_Icons_Mods/WildBlueIndustries.png | Bin 0 -> 3956 bytes .../WildBlueIndustries_selected.png | Bin 0 -> 4012 bytes .../Icons/Autoloaded_Icons_Mods/Workshop.png | Bin 0 -> 1019 bytes .../Autoloaded_Icons_Mods/Workshop_selected.png | Bin 0 -> 1064 bytes .../Icons/Autoloaded_Icons_Mods/kOS.png | Bin 0 -> 550 bytes .../Icons/Autoloaded_Icons_Mods/kOS_selected.png | Bin 0 -> 597 bytes 64 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/0PinlineFairings.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/0PinlineFairings_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/B9_Aerospace_HX.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/B9_Aerospace_HX_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/B9_Aerospace_ProceduralWings.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/B9_Aerospace_ProceduralWings_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/BZ-1.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/BZ-1_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/Better Science Labs Continued.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/Better Science Labs Continued_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/CryoTanks.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/CryoTanks_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/EVAStruts - copia.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/EVAStruts.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/EVATransfer.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/EVATransfer_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/Eskandare_Heavy_Industries.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/Eskandare_Heavy_Industries_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/Firespitter.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/Firespitter_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/HGR.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/HGR_Redux.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/HGR_Redux_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/HGR_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/HeatControl.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/HeatControl_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/HullCameraVDS.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/HullCameraVDS_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/IndicatorLights.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/IndicatorLights_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/KAX.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/KAX_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/KerbalAtomics.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/KerbalAtomics_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/LETech.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/LETech_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/MBI.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/MBI_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/MainSailor.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/MainSailor_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/Mk2Expansion.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/Mk2Expansion_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/Multiports.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/Multiports_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/OrbitalTug.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/OrbitalTug_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/REPOSoftTech.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/REPOSoftTech_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/SDHI.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/SDHI_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/SpaceY-Expanded.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/SpaceY-Expanded_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/TalisarParts.dds create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/TalisarParts_selected.dds create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/TarsierSpaceTech.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/TarsierSpaceTech_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/ThrottleControlledAvionics.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/ThrottleControlledAvionics_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/WildBlueIndustries.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/WildBlueIndustries_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/Workshop.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/Workshop_selected.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/kOS.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/kOS_selected.png diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/0PinlineFairings.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/0PinlineFairings.png new file mode 100644 index 0000000000000000000000000000000000000000..074cc43377ca2ab7e5982e9a474ab4ac9bbc7649 GIT binary patch literal 4497 zcmV;C5pM2@P)|D^_ww@lRz|vCuzLs)$;-`! zo*{AqUjza0dRV*yaMRE;fKCVhpQKsoe1Yhg01=zBIT!& zC1$=TK@rP|Ibo3vKKm@PqnO#LJhq6%Ij6Hz*<$V$@wQAMN5qJ)hzm2hoGcOF60t^# zFqJFfH{#e-4l@G)6iI9sa9D{VHW4w29}?su;^hF~NC{tY+*d5%WDCTXa!E_i;d2ub z1#}&jF5T4HnnCyEWTkKf0>c0%E1Ah>(_PY1)0w;+02c53Su*0<(nUqKG_|(0G&D0Z z{i;y^b@OjZ+}lNZ8Th$p5Uu}MTtq^NHl z*T1?CO*}7&0ztZsv2j*bmJyf3G7=Z`5B*PvzoDiKdLpOAxi2$L0#SX*@cY_n(^h55xYX z#km%V()bZjV~l{*bt*u9?FT3d5g^g~#a;iSZ@&02Abxq_DwB(I|L-^bXThc7C4-yr zInE_0gw7K3GZ**7&k~>k0Z0NWkO#^@9q0fwx1%qjZ=)yBuQ3=5 z4Wo^*!gyjLF-e%Um=erBOdIALW)L%unZshS@>qSW9o8Sq#0s#5*edK%>{;v(b^`kb zN5rY%%y90wC>#%$kE_5P!JWYk;U;klcqzOl-UjcFXXA75rT9jCH~u<)0>40zCTJ7v z2qAyk54cquI@7b&LHdZ`+zlTss6bJ7%PQ)z$cROu4wBhpu-r)01)S~6}jY?%U? zgEALn#wiFzo#H}aQ8rT=DHkadR18&{>P1bW7E`~Y4p3)hWn`DhhRJ5j*2tcg9i<^O zEt(fCg;q*CP8+7ZTcWhYX$fb^_9d-LhL+6BEtPYWVlfK zTBusSTASKKb%HuWJzl+By+?gkLq)?+BTu761jmyXF)a;mc z^>(B7bo*HQ1NNg1st!zt28YLv>W*y3CdWx9U8f|cqfXDAO`Q48?auQqHZJR2&bcD4 z9Ip>EY~kKEPV6Wm+eXFV)D)_R=tM0@&p?(!V*Qu1PXHG9o^TY0bZ?)4%0 z1p8F`JoeS|<@=<@RE7GY07EYX@lwd>4oW|Yi!o+Su@M`;WuSK8LKk71XR(_ zRKHM1xJ5XYX`fk>`6eqY>qNG6HZQwBM=xi4&Sb88?zd}EYguc1@>KIS<&CX#T35dw zS|7K*XM_5Nf(;WJJvJWRMA($P>8E^?{IdL4o5MGE7bq2MEEwP7v8AO@qL5!WvekBL z-8R%V?zVyL=G&{be=K4bT`e{#t|)$A!YaA?jp;X)-+bB;zhj`(vULAW%ue3U;av{9 z4wp%n<(7@__S@Z2PA@Mif3+uO&y|X06?J#o zSi8M;ejj_^(0<4Lt#wLu#dYrva1Y$6_o(k^&}yhSh&h;f@JVA>W8b%oZ=0JGnu?n~ z9O4}sJsfnnx7n(>`H13?(iXTy*fM=I`sj`CT)*pTHEgYKqqP+u1IL8No_-(u{qS+0 z<2@%BCt82d{Gqm;(q7a7b>wu+b|!X?c13m#p7cK1({0<`{-e>4hfb-UsyQuty7Ua; zOu?B?XLHZaol8GAb3Wnxcu!2v{R_`T4=x`(GvqLI{-*2AOSimkUAw*F_TX^n z@STz9kDQ$NC=!KfXWC z8h`dn#xL(D3Z9UkR7|Q&Hcy#Notk!^zVUSB(}`#4&lYA1f0h2V_PNgUAAWQEt$#LR zcH#y9#i!p(Udq2b^lI6wp1FXzN3T;~FU%Lck$-deE#qz9yYP3D3t8{6?<+s(e(3(_ z^YOu_)K8!O1p}D#{JO;G(*OVf24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV z0GgZ_00007bV*G`2jB$(3KJ!but_uk00!AfL_t(o!>w0;Y!lZV|Gam1i6J3MaDvpW z{8$O~NbVdv&SGSeQccWwsRpEsGQl)Wsz&zTw5mZW&8Dd(omOw1rfG_jR$A#)2vaB( ztwOqKqD6v0<3wN|Xd$qM4w8VHH1X^>XWzZIKYEv)9h-X7zS2qe-uL^y-_QGe-}ig( z2uuluLbR-`j0*tZ^Z7o@WHQ3^^z;P)fGo=#0Jd%0_T#Jx01yD6t*wo2-n^OIx^-(= z0k_+|1OOrccs!mvq9|^GT`WJung|AiHPh46Bb@X503-ljRaFVK45p^0rU@ap9S+B* zs;V{$f`H!M-fWjXpYNy{^X2W^x7RF(@caGk$z<{!I|fx%Nfri+59@tsXozJQn5aKC zhs~7IW6@~zXA}UsyZb>1fvT#00L_vl9T5cKS6TaZyWO8zdsh@CY0Xmr@Or&_7-LQg z80UO-mVvJ8uOLV6OicX8fOB3)$QO89T3U!82ooE(d_lcvt>BzPmSsLaKabMV(u3AK zK_2mXy+fHyW>-EP=N#+St#h3}fBxn&1iLghHy_PpGP^cx*if&kDp6IHIGxT03nC!| zhG8IUlXh8LT>Lp9Br!NRc*E!Oy(P;spPQQ-h{a-rQaT6#nM~#%c^!nqVFI9(b6zgX zGAD#wP*s)0VzI}A!Jxz#Ym+4DufxN``U(dJ550<0r%s(%R!}+^iA3J8#xpZB3IH(1 zUa$wvB2iJ4InH?%08~^|crRVLbk#=elwlZ;M5EEHHOmP6e!tsV3?N}&Z0`FJK@bLV zIm`0a*x1;cPN%<;FMXw@rDsP+M_+%a153KPx=17v$*Z&Kq@V-8-~ZKQGIK;Q-2ej>9*^$>fXd3sxv8nC&jIKyEiG%lzV*9THBGBE&%^s29UUtRa8`TP@&1rTsr{l-@kvZP>P`_ z3X^4-%d*VF;V{k7aYa$43uYl03_iv=CuY+~b#`_xNB8-BrJQpJg79HM2eY%YPuk{Z za?VDX`TDnl4s=~#b|8x4ZM%^m2p;o%+$iXPbFNtLhGG0MhumiYpsud&dckUJXlQs~ z7)DJYf(aqBu~@7+cit)%Y~8wbIF(A(0GI%9)BaFOZ?v|y`m1X~?AFAEFYgC-*%j)- z2SdjY2n4EDuU_raH0^QDxsKvQFbv~UO6kPKix;PUboh68z3(T*12}l-Rh)SH2)thJ z=}ac`H2z27oTH+m;@88&!<|KS14~Z4eFT9(V7C>V5b{8hq-QzjwE*hv4`Xc0nl)?M zMNzz&Cx0tWR?#W&cs!?dUAF*?#bPm^)jV9TM*#qVK;WrFBJn0;tlG4j7e#T7G4_~Y z7!XAYrO--*Uijt1UPbnGQVRlp1xm>Pu$z+la3=9}WGhi6T z_pO#o2q{Y>5`VgX|Ng|%($Y=KR;hpomjy&b`_edmi?}ejpu2{2Y&mOV7y!>07^Ytcx5m6K;AC~6400M!)69CrdQ9Td@ z;XMHOknJmS!Q=7V>F(|ptxNqw0d#lw!@T@_yAXf_2M(Mom`_n$ z1z@+i`vicCeSLjeb&XfIei|MM;KdiehrN6ERx`$$IOjBne!Zlmf jUHre~JG*~Tl-<7pm;TwZmNDGC00000NkvXXu0mjf0_u&p literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/0PinlineFairings_selected.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/0PinlineFairings_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..b326ba5fb20015d32c9f3eb9964f69e5f5690f68 GIT binary patch literal 3605 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 VZZnbMF`fVb002ovPDHLkV1iU|>AU~{ literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/BZ-1_selected.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/BZ-1_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..7ab83f7d32fe10a293765c5ee58d052f94968f48 GIT binary patch literal 3150 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 oZS_}(Rk49b|D^_ww@lRz|vCuzLs)$;-`! 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 literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/Better Science Labs Continued_selected.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/Better Science Labs Continued_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..041ec19d8d1e82c2b284bcb33fb1be8a5dff5610 GIT binary patch literal 3897 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 Hu0mjfS!8pA literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/CryoTanks.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/CryoTanks.png new file mode 100644 index 0000000000000000000000000000000000000000..0882ac92d3b53869848a22324e474d2402d6891f GIT binary patch literal 1431 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 b@mKHz^vPZ%4#^!n00000NkvXXu0mjfez=3- literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/EVATransfer_selected.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/EVATransfer_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..652cff2b8c976ef7897c78f657e71cd74bfeef68 GIT binary patch literal 893 zcmV-@1A_dCP)z3EGYm00}4q* zK~z}7%~wrq4N(;S&TU^Bl@LVQinNKPBAsd2AT7E?v=S`*gpk@=v9M;rMqe|K3M`srRq~C97RDP%RoV4|vq0eudmxOhv zQqETEIZujTkQgNNU51ZnjzR%hfXjlUQGQ}BogsNaWfw`FCfTmCJw;DpATFNoOS@PzS|!ecrP+uQ_IW+{5rgL+01+&X*xjPW%PJk-}&@=@4jBpvP!;8X0EqP z9Nd(>g#UglL@($|Wu1tfqxcKut4U5OHc7I2UJ1-0uP13qejsTSGbBGMUa#0Sb=9Y9 z*Mf9FbvhNgqWo3mJC$!!{VeR`GNH-^tI8xX1s}=x(>ZGnpQ4UKeYSNKI1cyCm5S$Qpo;Avg+36@Wfd zn>;ctM?ZvZ*5Y7g-QbN(%4s)(9zZ4l^qAV@$?$NJnxtgBrWPZn3jnfH*q>OPd>X_u zfl^@bX7uMVQ=8mu$$J2vKrkwT!-0HYXi0~u8C+apqz?eH*1iJd9fVa`i|(+$U^OCl z1ZWVTp(4Tivtp5aWPRsb05&$ho|-l?2SBud=nc25we>+Z%qJ?$DFCZLBt*C}?^l1; z>?Sx&asrl@qOrI4GH4@)y&tXkbce!J#JO=wfU16|Ac-4b0m>! Tghzay00000NkvXXu0mjf9m<(E literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/Eskandare_Heavy_Industries.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/Eskandare_Heavy_Industries.png new file mode 100644 index 0000000000000000000000000000000000000000..7960e9642a78dae04e4aa077d4ed78470fdb299a GIT binary patch literal 942 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 Ef*d!tB>(^b literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/HGR.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/HGR.png new file mode 100644 index 0000000000000000000000000000000000000000..eee77c565b0931b80c09cbfd05ac858a4ee3b385 GIT binary patch literal 2267 zcmV<12qgE3P)&htwIQ5@$?}m!yfP89Fj*JJK3x7=xE| zq|=%ovExkQhz`&QHeSYJLv%!lP$U5~Ve#U{p8$X?%QrvM^m@Glz6cCJ z{qxU1?=hRrO@)PpKV|?%065HM^MiZ$?rA@#PDE_x+Kgca0A{oKGZ}h%dL#hX0o(%c z005ernsU?9(y9P_$a;EuxZK>_aR21cf(9qC&l}eS?(b3_y*=%+WKnM~2 z5WwV?En5yoL_}CV_}~L$U0vP5+}vCTzjyE6q*JF(HO9ror6(jLJm5Gka(a5&1>j73 zd;3fO7Ep6@Gn+~A%=xAGN`K5&b$RCueqbb#?u+Wy>y@Os0(J=;)1kd3npKs;Vl{+S)1sxC)?!h-3ht0;mPh zci_N*mjIx+xcGOcPoLf`iei_+V6Z-X_)x_d>(}XY?PzOj69C)=&=nmWeH%a@fW}3O z7FnH6XN*76PXYW@mgRcJ*cGGE_z8e3L=*xd5&(=p`|PtVL?rqRv~J(Ny$rxGfKdRp zZQHhGs8lMe!C>eG07;VW#>dBh$TBiAker+x1;95pHl}j9Tn`-%htF=e`z9tPSX5LL zXSdraAt8bHcs%6sc*tV0s2@Fg#7|94d7heOS(foV#n)}5Zwx{BCo}Q+`T4s&9?!0b zh=>a>zx?vAd_LcATU%SNrlh3Iee~$jnV6WE7YhpuFIy~@C2qI-XjD{GMr>^C=A%cC z-aK*Q#3**`*pUO^yiTVJTEBk%E&z3kqND@3ZZ?}MbvoTAdcD4>zP|od0Dl9}0-y;% z6A`I6jYgvdAQu%CabaO$G5~!+LBTJ>!^63I_wKE#sj2zN?%lh42L}h;03!18@=7u@ zGp_=eQ(9X31HAd>oBRF5chgUPw^LJ7Z-s@0RRF-iz<|`-+naIm;>Ds(n>JObRH_O9 zl>p8Y5zkqzRvQ3qe0;nZ6coe&7!nf`DLFY=0f6%I@}E8P%rn~?8XBTco;*2AqtO@{ zV;YmmBrwJlZuaci0RVKHH*a2c?AWm@dcEEn8ynkJQ&Tgah$43G-1*1g;9#R#t-c5# zC_6j5++;F|ldbF4t-F5z{{8SdbLO;MZnqnek&&9Ap&_@?XngRM-PYaR%{|GmU-bR7_we6) z3pqJC9R7dM($exD@ywSM;K`hS?fef74e>-Yi-?Rf=MzRmB8nuU`9w4~CMJe|;;Oo+ zs3??(LWt-|IhvZ9bYo*GJLxDh4@f!RPaJ0Pu~EkJHAD z82!L7f`al33JT^XCMG&L zj&m(vzWnaMz<@I(Bt*A=|NayJ7XUy}6k}&+XG>UE*g^myNl8g<=gys*@9}sK9@na=0FfeeY(}lvq!q)-V{kxD8fU2vjOTA~$o<9I+1<(xO za(jFG+bWgH3g9l!^LMhcvT9GBJXx5NlT&0enQj5-O-oBVT~$?;DM?ZrfNq1q(2<>; zy`6{x=FOXTiZOPF=lMHZwrn{z698XYTDl`HF3y^mn0OVyt?KG(GZFDejvRRlz!-oL zgTc@>IXP+W=;(-Cy?XVjh=_(H=lN~`gL=Kbk%;11X=y1xGBWa0o6VLXNs^1_d2wW9ZUY_T9Q4~d4mbE<3lO#zFoldt8DJd!c%kAyk8909YIPY{iMIz#xo12C2bT#~@ pPTqOvozMM$tC`9eqwoDB{s)x7-H`}sw;TWf002ovPDHLkV1l(dMXvw= literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/HGR_Redux.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/HGR_Redux.png new file mode 100644 index 0000000000000000000000000000000000000000..dc29aa5859b35c27f1619afbdc78df090de138c9 GIT binary patch literal 2540 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 mnNa-uu|h+C*enk|fjm z_3O7lM5Y5cpsLLPC?dZRk)Hxs3ZP!PYQozjr+)#E0QeZd#l1W*oLyzJCX>muHZ@If zNs|0cM2E$3tRk{|;>2;jTrPL2s_&_`Cd@dba>41eXD56_M3FzHJhb z{v=yT4ik|*&beBWd!opjnQ3KZg{dmjAWrkw7h1kp&7crWcaPFgG?1psqMeoXRx zk{<)8O?l=6Xd$^zRj-YrXaxx`A{F_3!KtcK)ojX}CAl&+z^5MVmIp9OL{;I`co;Ixsxm-@pJMUZ+3I(oSz5eTV_xLX^#36&% S2QWbZ0000H)c9mqA@05v%MBYaY&<9tG$3g3kmQn&gF*xk0Tl@z1VM-) z=io_1gd`9m2zp2YB7%@ZLPQcCgn%eU$gY%G51Oo>PlLYQE)Vv|FqwHXJ8rOGcs<=y z)zwx1e^oyy69*t7J{d=;g>hANl-m%IAAn8CM3jD+9ZCE=0eApa{ZK^An+-i2kto}TxwjE}dgaG_9CwY)4EYye(#QPdBNbqnJ0R1pT~ z^=3OF=hguC&HI+Bj)=%<;6Z|+Zb!JGs!LMy27Clu0e-4-gntX#M7t`TB~W))Q2JF> zkCv6~?3UMn2~}+XABe~WU|v-uCUQzdDpT5OtW~v_Ya`-0OI%Wi%4(G>nXBc1tKn4b zNY+(MII<0B0AJ2lU#SYhQJ@v-?PXwd1<>W%kGq9_u-S~`IPNv?UznJfc$6u<{h?$0 z2CM~s1U3R=2Ai*@E&w7j=*^Zo=N`7(?day@q%Yi5L`Hyp;U3cj20|sdoN80cLi(nF z`9KfQ0TL&tfxp7s{BSpV6e4gPxC9(g)$@4{)M>6AK!cNWLW+i-rJq=Z2jF0*)0wNP zy`8D4QG@;7Y`6D*SXG@pxkrx`*es;s$y6xw9CM)`eW9wqh{$>o`T1#1odf3(kqZXz zgdVmL*bCfErF~A31MgM{`5y*{!uY#_Z(eh-6ZjOk3A~+$xw>^=$ieC`-rmK@Zx%Ef z4tT4mLe_Pl0emGQ2fW$2kne#&$Jf304OM;BIoDadXi*FJy!2Z2j4Zen>cKyOl0(3n vB+uPgkcWYlz}LY*Rq3DMfAN;V#{iE3Ocq8omezz|00000NkvXXu0mjfo8+$| literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/HullCameraVDS_selected.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/HullCameraVDS_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..585fef95b09f0034fbe5cf4a26eea2dfa44e2d60 GIT binary patch literal 997 zcmVdRb>>%f9LDIsdPph5*%k3J?Sirsi;V@g`na>+oUZN3R(yn8ZCk#sHj~; zD-j7&2m>P*wg?dfH=>C0Kol{|sPRZmSky%0l#KJBm#V;RoFKnkF$FPoVMktM17z9hc5 zE%Pw5L{-JiyxJD-?jj=YewT-cNSL!M+5xI(S$q+z_#Lo2R`UZOX^pT3IGqpC3i7nT z0^pVZthT0DlyZJO|2*U$W>)6VYDvDRMF`5A@02mKYhz>m62kieABxC>sryA>C$JoN z8+bCJz6`8a)eDj%NxPkndzx-@Xoe6r1Bc40+zM|4Fd!lP8A6x>4z+etX#j^eRrP7$ zd*CLp_PW_%VGYde3b1mPR2-k1zN~s|r9|pBXi}9hm6_PGa}ThvQh)+G155)={!h#E zpchyV4B~zSk#}MrJP#a=6y5_|0=`L`%`MAUteC3O3vEqRJIkWLT427XX+Q8oSrNbd zm;QIs>Iot{Q}@?*sPF$y}*QLU$i^_qw}JyZcpl-`a_E?c$f7 z*U#hQNu$x|kq{cg!^5|8vh!S&*O91UH-M*rb-abMG$+BEj9KdwY8)9$B;~ zZ41E6M&ftOV7vyRl3dM15?C6KuK~;h9sp*53}h4dF|N&v-$u8il>Gu+0X|XHOGN;> z8Ll(H^$4;Ci~>XVGEcn11+b@9t39NuJ+&km6?iv@yb(fpR8>V_ac%|``4>v**SS&_ z0h2h7K2_DTX12!6PR%qL8QH*{sM{~Z8MY313z*Cud#xRS7b}$fTYmK7@JzhlQ3CSd&B;jtHn!`yZUOWG2h8l_AaW+2_W-aOcs7L4r>c*+ z`^@hX6LsLDN`Eo#p$q;1&I7;2mK*|BW#?Sh1w|Zq0{AQjsA~PQ{4ZV?cpcy$J5%6r Tk>Lk~00000NkvXXu0mjfn~clK literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/IndicatorLights.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/IndicatorLights.png new file mode 100644 index 0000000000000000000000000000000000000000..001454a93b2c4c2813abf500fb1a4350dac259b5 GIT binary patch literal 2093 zcmV+|2-5e7P)WFU8GbZ8()Nlj2>E@cM*00)stL_t(o!h~2@4b!Zd|%>WsHd%{{uI=bYWbWXfSGs zCYZQKZ~=<)b4Y`TObb2J!}RNZRqx#&$Hkm#A45a*CO5D0s_LF|?)m<>B>+v++ygug zJS9!j+&!I6U-RCxx3{Mbctk`pCrpg5BNSAWhSZfG25 z{u20^G)?1yQ@~xoMIZvt1MdJ=3*c7Zdm{49qA1o?m6Xzss{Ro8c>#RQd;hJ|r%zXX zy};?6ot+=3>Kjf(o;-8rOtn}nNGXw0BInF-INSgpD}ae*yqY~lQ2?BBs`_S12>=o4 zx0D#809A z1FuQbG!7U6$ANR!mxqAcfn$INI^Y9UeHC~PcmcQqd?-!RoB=)ud_zPYbIzTus;Zn! zCgQyZAm_|%Hetk(ziwA(cy5oIhjm|F%m)`g#Wg=KQ==M3D~ocVm-rj%X;e(k5zX#m~=-ik362L}g} z7-KCW;=LCUA;!pJvC!FU*0pW>X3qIHz)ye|#i(5Y>%b;(2DsNca}ub4ec)ffCEyJs z(RE-hP16Wa+5#Ik&jY9JdJgOX?*iNQ;vUd$ZEeNEB1|mWMc^wU@&#L<29mw-wyM4W z{HZ5f(=-PKFg8X$A|j6i_ln4dbFS*Ul5dPgL@uc6ZNTqXBf5Gf^MjMR0Fb8byUZUb(0zzGokOIxnB7kP&;4-EEkJKe}kJzwfev5yBff*JK&$Hdadia?7jckBCCse?`hkX z7~?`!w}JN^a7k6Smdjbn%|3e5l=X}M0^p>Aarw&+C)pIGO&9W?gRaJ*H z_TJO)&uli+uIsKFr2o(_P#P$F&UqR_7{?erAl`dYO0;dud_Iqh#o|iN`2~aWpMl+8 zP=YaSo^#e1qb!%p+;v^-x~^L+7P~2>EmeIEcm{YDxC-nQCfU2jx~G9xRrSu4(r1il z!5)4Gc-aD7v+jjn4;;`_yS6z3hQ`!0_In)I6p^vrbJm~?bgDWty|@DG03QJFTd>yV z(vprqDol(9w&2L-8K41f7m?e|qo-EUz}|5{j}Zm3hy)8TvnnsE>OX+Dfh|+T15<(y zXp5Dg$1LzYrb!q2z#=kq&K1r%@0`OqCn7>wmh}8J;%m;Cob$)NfauVYmaV>~kWD(ReaR8_@r zI3$E1^ZC43E|=pN<3Lqw5m{5!+Rhv=_1bus`N(+@*(}Sl9*@UTRn?&==bS&)rB`LM zf8Kk~csyo*e_uqT3L$K$Y8H`&0d}u2GdpJ}U-#Y*hQpx@27|*R-OUw$l3Mn=&>KOo zUu$b?sH)_g%NXO@YRq1jN5DWtD(}72b^Vb=jxvZ(+lAFU(~0aKK`*&~RgX2)wJRF9Ux8 zUIMlY)9!3KJyX>k;Jy$-lTtbzLKqh}hSYT}RaJcqaD6f)@1UMIocgL=g)=^PB`Z#ZQCA7vfLP}h*vv8#+>s!=e%dQde6Mz zb@PMEw&QbPUKkqFN&@@lWPbzBsp>i4Y)a{tl+sC)?h#OlNMQ-|1svExxOcBibkuDCGYpWBY^Ss}|6`|YoT?YM4jZRvji Xm?l?lnhhHt00000NkvXXu0mjf^E>Tt literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/IndicatorLights_selected.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/IndicatorLights_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..87731fda2aacf1a7eee3ccf559dd62fb4a042077 GIT binary patch literal 2158 zcmV-!2$A=RP)WFU8GbZ8()Nlj2>E@cM*00+`ZL_t(o!-bbiY+P3v z$A8~BXI>sZ#&5@Vo=%%5v=B9=O{LHULapecRat-p>{!62AeLU16&qNwst`he+64*} z0isY9A<+ujl8^^^kT{7G=jkN&c&^7Y_nwc%{bp>3MqKG=W;}Dw_xeAM1)wpT>;ql~ z-lQ>`>}`D})pRE6>NnP+1CF{?hm?iF?+fC9-(@qI>ax=QQmZYE*`x}*3N(PX1Cb9( zKP?|5fwgZpj|G3#@0XgO13;TExNJxEE4`&Kr%>QWoimOQ`5{etOcHTA5L*O3KzJEP!&W#Rm;rr`L)-Ye{#Tmgf8H*72M|coXOw39t;z12=5rGO${Gy(bM8VZfq20X&QHDU@-b3}nDE!W_a!z~4G#Ys@B% z0Q4CnkD|Ox|oZLZB1t=(Srl)%UUq}KTqV-?uPFRZxuv(t(5_Yirf>z+d3GIF97ApE2 zj?2I;2ka;Ege*ya;mxARpykwK-6`8_#=yPj37369nFJ02TO65&>;R@6FhZo_PI{;qdC3)Ylgvn-mCOsWEDog?=yw)RxF@!mO`A78 z4pbsdh+r9*Kyd#FiUiU_I|ZQ!|ya0>W~xz{4F5`ZRf&scX1ID_yw z6}DZ32#=uiX>H9Xlc1I7KA-@COvUx?tm^xvv!@wX)pMB>x%&3V_w~FopcdUE2 zEZC~8mL;76Suimw*@0DC6Tl3x%M5B7WeBAYrDS_tSDtgJjzAlsg-}Ph4=f;D2Ihc^ z*6N0hw+XC<4MF=Y@IK%G%6^n-B10$@S(P9S@v2c!02gaNb66*2Yl>LNGP00gnMsq8vh*Au=jW>5&I6xT{Xw36C^vNTGWPTDPjy z>IZZt`nXMf9El~Z#a=Dz5ROTN?FiGrao`MaFIeS!fTvIn6WK+^kh|kb?myo7e*`FN zKA`@GnlBrCG#U(BAPWwE5!{HEcpwXLBI}DIv4p3LqX(gEC7cMrB(TSPWIHK??v^iy z_k+ldoJUkQ1YXy;O)q%OkL39=0SeUBUxA8x+Pa~ zXT8WZ$t&));Iba=lhsnzbt_oM$ovKHcS>;Xm*rt%wL9-<1A$S6u8;;y*7 zlH!J0Ti{1Z^}~rdOT3V?-X(%0;)q?=RXcvLX57qdp?$gzu1~7)|2_|8S?M07NEfne zK*O1e-9}g>(9o);x+6kM@}IN~V0Of#lIY%_JF<`&)0@DcqE$t!8u2ttBW`#6=o&DG zZ~?d(YjHVF#WX&XDRs$pZPj{X_M#gu?Ee!uYMyxA?oVS7XOuV^vsjBOR_sL+r@4+9 zoXU+H2&8c`+eXkK?bU+&(2LwLovd_lq3cxCO**(+W2}G;2j&KLh!8j3TVl9rlv8>N6x*!jn$ea^dFn~D&sCLjJx!rG5v{zMYkvJUN zu@+Y-bJryK-)6)oH@aEfK+&=!t^nuF(H@KCxGj#y5!M)xy)KvJrg&LH$fTjv!S4U__V=V?LiYQ#%NP51&70DfY}zH$wW1-QX1dX1-*xn{!_l@I^`0&Yn} zK~z}7?blt1S49{G@ZW!34Q#P7^W z%@i{V0tFH2D!c1K1%*T}LM^sf6;Y#7ciC)PZ=R9iuz~E2i~Jur%*^x7%z4i{^L`xe z2D{RJjI~CG;XJTtbX$Cp_AJ(Cy9tnR69$ zaIISVD*h-Az6x)qzc3SSVFLS>GhSECTa6P{s4g|@{%~9CI<_eAUz8{j^i+za z8cU+oFm|9DhciBnryBDoVNK3go6%M6 zy)LHyJSn3W=MvRBn+goz^>D9LN$O&LRoPTnf$j`_RrOOpLm{966LG}BXetkXst_ZGJSkbJ%n T;ZRH%00000NkvXXu0mjf342w* literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/KAX_selected.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/KAX_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..5bebc38c86d68e10acfa8621cc0a6a9b8acd1a35 GIT binary patch literal 776 zcmV+j1NZ!iP)j$s(b|M!}y5!+;1lSX1f4m2OlN0N_b^AXWdIAP^PEy;$?8ebzkrGUe9x1_x(tJ1khsH z0MzO)fMI>f-=#Qd`54&hjCnvI@It_a=(jqp9|ZC>Q~>lwjR2Sv*=G~-5fFgwk+VB) zj^Nu;<;OcwtifK|Xa>#LLT2UOTs zZhJ~<-EyEX+2HGdP1YAUpbr=TUfRAF4atd)ElCm_w>;&5X}0Svi_D(}nt?7LFCIC) zmQ&5`1^Oa?RaAO6a4S9jt6gG`x%SjXx@rD3Fd0|~d;`WN2{r=5t$(oG=0o6s?K7Dz z{4?1KAV0IyB1g_3T*$t!S!6N9=V`OIdKa+9+z6o2d_QnGnz^%q+x87uo&!pvoELrI zm;7dafA+kpNNxuBc2EUO0-l=d0P3Q}dB73-UIBN2Pqw#2aqEG*(WuThf63g@%sn2Vj<@GD!oH?u8KEIKY zK~z}7)mB|>6jc=d&dlvjx7|YjTUz=P10-Nz!H7$w*e04iQB)EmMiL*;q{@TF7=7@s zG(`!#7(;xkL?s#&H6i*So?VEQV2Tpt$3pmV10oA;)sTj^wsv=q56-N^vMnw8peLE! znLFp_p6{OX-3#QABoV#B%xa8TVgaaE)y)8qN~Mki0GL_*EOjValnB(v}5sBnR@h36f)zzf{l07{=8v!7lPJ0L- zl}gLTUlD-% zESb2>P*Yr7tgWrB>Nt*8RaL3uI9gFrp>1t#YK&P%L}x9_de~zV5Yg*I%eC=@CqqPJb+BmfvyeH8#~+rBrG$sC$9XU>LnI{o|5&`@@*qobo3 z8youoKyOh|QOn54$bD0mGBXo^jBn~)5qTn?uAOf(kw{?Pym|KnXa+DOA}`)-AFP}9 zHs&$j31HogI??3o1J_`y>mV~lzbrMAM4u3m0$;P$O|pQ?7J$KgE6e%*c@okbv;Zv3 z^Y4Wm#eBOp?p5Np#>U18$8pqg9Gx|5mKtN0yXS2;5p8qRc)Yl{SeaSt>gv?jL-Yv% zibkVr0GLD~5lAEwr&P7j7p>k8WGoijt*Q?J00MzPb083CcAKe(hz=WLZu8Z9(iiQN zJ8r&V9ZXRlw*puIU^##$0KWh@3*dVIXGG+;nes`N7c9$aSJi6oYT^d$0I+E)CqB;c z%S8aUh{!}fcFe|f13yJXU8>q%TU+~v53=rfJbpZr$?O{(9K^9>$Fczj1_rVRpVzGL)$-G)Pp_~n z>#C}jV-h(0H=Wyw=ri|HF_(xwCZZpS=*w_8{Is8By~lAJZE0!Iva&KIqK|^XV6}_v zdLlYWM29WQYWKxT{*xk{>+9^aiy{FS6_H~6--K?G=M8`%07dT9SrJ)qGrkNnuXOK% z=^N;#MdShZeXlP#0L*9R=S1X9W-bBn=`{Q~0NM?JY5>t`X8yd0ydffO%)A7^4ggmH ztPv6KF7gF{mT3Y|Ld;wN;MWUJzqU#2bm|r(9wyDJdC_L?SwS_UtTS1%ts%F7a9W z_wRpMRjbFx$9q+^Djtu&=2mzrlgVIYWaLC&U*9GG>aXlnD)p^5s_J!jo8jT%zR}Uq o_ubFk0L<9f*aae*_)ihhpGsIfVD(1MjQ{`u07*qoM6N<$g3~j?j{pDw literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/KerbalAtomics_selected.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/KerbalAtomics_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..261274f7d1d8f0d55d4562662bc441806b40f4f8 GIT binary patch literal 1407 zcmV-_1%UdAP)i1q?|< zK~z}7)mCkYR8<&$&fQs8)D6ShLPfX8MGck=WyP<8K&VKeOmEPKMO*y{qKtm@#cGND zkur(Eq?96$t7R%?`4OvRu8Aq-iaKVi?X0V5y6!OSch1({IX#7C(aK2#r>cSubn~;@J5j2R#2jM-ZK&BPI!NM@J8CPy5 zwD6t-08;l#WB|bhNGc)i?d^k_nwk^<(D%-YMt2qhHr&QQKr|KybqW0rMAs&#;K^Vu zsYIrz8;07sTDYNFtlUc^_h;QKRshks3}ASlc*-53F{jjdOf*~o>!LCkO1Bb?*#N%p zBUijTa74M7WX~%Aco8z|Vau{sG(=Jf;m&D7lR9kiw4LPkY{TwbAZ&dqlh_k0&j($& zH<(GT_dIVV$=0Z9`M&?S-?4R>mH!m~>L9ty#ydO@Ko%3CF+K`ESuz2DR4R1~yH5x= zkICdCu`M&7+a>&Fq!?o+k&OGkKQF6*HSq@N{Z13sm>A8{QCnA!_ z^8f%m&%2-Gn$FJ7!R*+ar+{1U5RxC0Jf2J@Zwf0=MbM`JFtqiVa`8;L5I!gxm7=j| zz?Bh=$NG~g)s0^Q83m;}F&5Pa_QHEs0Za7DU9lq8jdD>LYPOL@9609yxDe%8!TQf4 zqR#27QhzPGDLuCQS|%`3+;s64$!!hNuT z$ObhL0r@{lp+?nnjXaXT;V7Y8Nq zaVLN}08;>r1@ISuIDlUOoK!9@m7`CINJ1$!DtMffQZbF&lFESXG>u$fpE z!Lm8ZY95jS$i^Fl-nBM+f0OU~Pk5d;Bb`p)7T_U|3k!+S7&DpVW&r5z?Hx_BndB*w z-}yf-c(JGh+a?Il?-BZ*PNh;cHnR&!9wT|k_x;8w2L=Md(V@=vZ5b7SlyWf?|F@wA z$n!A(-2jHzt+;YgHxOMh(U=b4ZJW-LU(CwIL-zl!kZ}MQCmJs+7w?NkHGqxRp|1)+ zV+=qIfZ5j>`6A_FxpHx@Xw(B(3!n$UT;<}j75f&zjO$E5wGxdH04|o1H3ML*a&fM} zxv2p5msNik%CXe>LK*jl6&kn7S^VGd000McNliru-~<;F11bzC|M&m^3C&4F zK~z}7g_dh<99I>`f9KBKmv{Yc;?{|inl=rsw^ARZ4GF1AP}C32n7-DHpP))es1ia2 zS_G9q0)&Lhr+x#GfYz}Rk`gtZ2vLOUBvKGqZ3A&El+-4hHV;2od$ZZK_c1${51p~L z2E>s@Gjr~}=XKBdpM!1N0`SZ;&-})=ZN#>14Loz{(xu~Ef1NvbZUcb4@WKnc_10T-baa?-ILywSJ8@kXt+lGv zYDR@Zp@xBhf!_jDt5qf@CdlXW6pKag#EBCCyf!j20$@f)MwGAZLjVzZT>$)eghHXv z?<$qb+ow*QI_UFJwry{49LMBxxs~hJukT-4TKbj0Xno3yj*bpvjN!>ApJa7)bt`b) zah#e0NTpI5VE69bG&D3YH8nNkI8H5(9qfwMnhzO01jSLPBenu%JN-5QK;lc&kvuBSy_0&_5wzjs&&Ye4DY;5eGmStIi zjYezT?fag$EUQsO!oXYgap(d*avTTSwwH`Ct=Fzy!?G+Ai3F{!tslJo_S=sJ@$vVG z*tQK2aU7@YFD7PZXK(lP^k9rZDMd?53-7%1PW9^5t6_gn3|IwFK%QI^&YnFB z!1nFi35Ua6ym%3%)I@)Of7g*CN3L0xg|;k90LI3~{yaE1_|w+b)^BL76ULZNCA*05 zzylB5%H?vq4j(>z&A(^?cx`xiSPu^mw*h&}vby5&xc1K_fW|<`@bItzy!6sbT11`* z_^$y6fgb^7|GRaa_QSws%d$eim{O_@_yTaSJ`dU*$N884z0nx+ie*`!snu$8z^_l8 zI(5EYsBPPb2tkFl0$Kn2ft8h&xpKMu-OHCRr?l4J06ws7J6c~yj^hACm2KM!XmuRN z1Ok?qmk|-Vy1K|@GJN#WM*wYsM|Flo6%Ypg8E}+RKkVq}VB^M(w70kO&_fTgdGls~ z2Yt=%8e)N~0WZ*Q+cuMvlb`iG56|<^TC;cWUW&yc#bR*`xWhjf0ak!j?f+E#Xy4&^ zo@I<77K^cK*DlKCGF!H6pdC2BC^`s+bbgCDaUbc2j+*v;Wq(1&m$g> zbMxj+wALu4$Y!%dB9T;3-r;aqPM$nzR4SERI61!{`g~Z zxm;8!)p6j!f%&6HkMiP+FQSxEMIV;`W{g?O`#?}WpT~7w?!No(VD0Zmj~)$f3@sv& zfq{XDQYsO|qF5}h3AlCZ7SU*wd_Iq5StzC2>kCXPrJ8{SV@%`IPd`18NF*LnN(mtK z78zr_ZQHhux~}`xx||_sR00$Z9XhmQXlRH}utl_p1gTyF+|kid>MAojIyzbcI5a#w z9PjS#PBu0+c8f^Y$jFFTmbC>iz!v_KF4q4X^xvEP17>7oM2(D$i2o1pR}nb_xWF!8 z%6IKM0GE6roBj8}I^ltU50p~h7ZKz0rUERHy80Ht^7DN;fO&syt5WJ`#+W@or&5Ys zE=NmC3rkB&G&eV6S(fK{-nCk-_Oepy_jT31)<@RiiHL|&wr%70mayNPKBe5J=4>{* zKahX<+7!1ei)=Q_;^HC;3kxhPEHE=OL!nS$b#)c3HK9D; zIpR3ZEO28z>;g@hOy;rEr%!X^#tjx07MPlvB9qB*{``4zxg0xo?BM?U@26ZYbLrBh zXebmKtUHf?9U&kdjE6o|l!$~yBw7d4_02>nrGBxvxOi8<(^_MUp}V`A?(S~F;V_j- z1rgzqM;_tfhaYBUX6Du2-riTm#{@qIRz##MBC5By7sqiBk+L$zRE;rfkmxuL&pr3t zS`glQ@4YVv743N*uItj+*hpt*Ck+h^Y}>Yta=DB#hDanrQ&SV2ot-j2KmRRb%%=VO z_pdoNK0faHcdvSTdpUXXq*0FJ)Evh#0i*()IB|khDs|WV{QNIn*Ik>j+S}VHl}ae3 zD3{CBYBh{86bc2FmzOD(O1Q3zh;Z+{_uiREB+{{1tf@Y#v9hwlJ@?#0TU#3&Hf*3+ETXk09*+}^ zMu|isOioTRGc!Xblj+{Nb!#Y@O#W$ldU{PxGMPjvCCOwGE167+h-9ayr;R@_DXsMn z-hco7uUD(pHSNY2s?{p4>ypi8nVp^G%9SfzxpIYAEJik)C7aDMH#f(oO`DjTn**Rw zD15%7qa%?_CeL2Hc(DdBJw45X4?ZX&f)Wu|YwZE__xEedveK1G^9cTB7dVyO%rfypw!Bf2&+B z{~VZJ?+}0t4i0J&X*b3!j*X3ZLqkIxK75#=p&{kh?q*}m=Pb**HyVw0S(eqIlxhGh z5ot8WL;&$Tue7?lx>T#xrh&fz=R{;KolcuT=DH!%0$c&Usg&A2I5_xY9}#bkjg4*a zJa2j(YV`ou{qJ%x;@3^Fn*Tw5XCs|X|2ZCyfA9I{pFiiLBN~W!o)-ab2H+D8hjpn` zGWApL%P+s&TqqQp{N~)8PNz$LP0Q=AzaDzyjW>oXl}Z{Q9*=K*{PD-HPfSc)F~)SI z(`nD2h!ZO-D_=>c(-Z#4@wxi(x}G)z%lv;bbxCEEQu}~?BC=CNngTEDXi7xBP&Ws> zX8D^Mf!+RdA8;Nh)$w)%7lH}2jzYk@T5H1L@K0RV{gQ|%W6U3bvex>LG3IMZshTn7 ix-atsAn(ii$G-tOdo02=Nm0B20000VGd000McNliru-~<;F1Ooxv@lyZ*3o1!O zK~z}7g_nC!)K`|rKlk_hHQmr4h=5N-@PY4SccYUvMkIi!!FM$17?oLxyGdYnXE#nI zlSwv-J2P7~Tdr7{YznoFGbS+`BhkDZG3ZWo%!{beM2$1?fr^5nAawuw_xs(mf7ne} zwzl?Eb#>o+&OPUz*Z16}qOw{6EM58d){4q%sHm*6Dk`fU+P!C=0GK(sBm4ez?USEp z4$R`*`Q}Bcc;8}{uEtBT6%M4!($#c`a2q1qbP0*Q0;oj~uVUwpt$cp$8|m!o;MooD zkmbLP7j83rKA#v}U7blY%NFmzfM8+@8=tFS*q~(kXQb&J+c$%Vtesw5hKNW(QJDcC zBHsdNt$(HfV)5{GM%8t&zN8L%M!2X>8fZk=dJKOcUgL zFTOZ_N|XsNKKpah(g)-KmqN80JpdLiSz{G^mttdnVl(`9eN!6?AOhgT>AV8Vp) zSCy&w^;63jH})?2_09AF*bzsJS!IjK&C5yeXlut67f)QST)Ir@>_vI58&#@!=KSpX z59=-#&sulOVqYy^tihjJ$7RGlJdo?6c9*E*L8g&vfcB%bP<^< zBAa{mL%&dMO>0GEwGvd8X{dh)N4>m&&uli7gf_jh;me*%D=MoI5sW)a=?h$s@y7Pg zNNG;(6Zq+ZxkZbeXnU1XPGd!7b>RCxf>3P@A_R#y{(O({LAa4rl#@n;RAf|(XoE3R#*9AnG3I4U8O`s8==~oj<|x(&f7JD#%Ebv zYiTBb(!E3?Hc>Z9>X>QVx^;7L+*U_NyV|zpB{3E(UJ+clWF-JkJpNd@sZ3hiTKV&t zQ#4;`AsF;?yQ_nvyVkS(k!73bEqa8ln>ONkS_4>Gd%UxAJ7x2i4iBaTm5AWjQ3_`~ z$PCNJ&exkrOiJOtDbpA_Y-qsqy#8hL%dghG^;_mFScc(wx)UHVDe2fhs#}5U5g$|v;r8J}f0$HMI*&VjtSqgyAtC^th`0yp_t2v=1ND3BB8bSA!jd_` zef16Fo0=}?dY+d(y`)Upwmnqt(9l@!dvvFq=-v~N&9TLh*a0ahDl-a-%9O-TX{|re zS|1b`TtuLelzbv_|xqX&tINU{+Z0EPf|?9=n63BU`DM?Md_w#(>| zPn1%F|7OkK6RO<^z}8J0T|ksl#;VoTY}@jZm`58wkuSeE!onph`R3#?08SilWWnMU z11C?u=e-dlMx-bOCMIXjo?_sj!L+xv^2J4$)V}FlzjmFR41=VkAj&l8=T}5hayjwG z{mGH8j=yjmXVR?e(h zMHCcH%l*TDee4@Oc4GbMZ;p4TcGTzzXsuQLn2D%43zh|e@Sa_-X@I#4mm03CpR2BZ z;^&!J8Op#w5DdehqpO4Df&jJ~ zArJ`QxgMef(Hc*CIG)3RA%nPZ@f^Wm5}xbQdb0(k6b1%k#*R~_Y5k+?>HMAr?s^)} z)2Nwc4M3a~l#57IpNQ8ud zpVn(FyzuPPxUPrg^AYg-=@ab3u`iC&e`wCFls;*{27bBkgSWl-1xjWuRDh_GSqm(L zekfY@eXvUx&s;$Lhr1{)op0RfT{T20?s1&Rh}-Sgv+ao8ABQ9t*YvcPVi<L?HxCbv;DP{40(DdRt3ZP-%?!(twTAzA&*^dqZjsh&e zZo>U!ov- z@S&Gpq6oVXm0j!tLWQ7EnUrCvn3h?oQ>i)5IX(E_!|60rCf1W5Y}Q_Df9qS{`hVBW z0Q3wR%?rOmRb^6J7A9kQUE|Y!_YcN8?L%jl3y0!J^q|^?g&2dC=wC+Lu&!In_afsj z85c+7DHw)}D*14E7FOZ|+<-w?RBck^XnbqGQwdECpP&<)@Kec9D!Bl^V-i;3t=#as zlJQ6M=6wmK2Jk)!UD%1)8GDMN=qiD_0GCBVCpO0*-FOH_;Yw8f-!vTO_00wizp+22 zqUrrX%*R)OY7jOCzA>1Q=e<576vgS4CIMFjwTak`xAQE+Y58_y5FLVfy^Y4wqD7-k zVJw~Jc$|(Sa5GMg#s5NMu{>_yhz1R;kI*?7+TX^~G^67`ReX%+Gk%6$4$wZ+F*vB4 z)VhXt{gWr2pQP~;Mqmrx#BrE~4*c9Ip!CE}9EDeLLNdUHgr%7Hm6pAoBigICm6Mrx zISH_V7w`n0&8dxiJ1qQD<5+!H937_86CV!4csz}IymBzEZ%Jr<^kOh*;Ps~U!?QLY z({k-|TV1)#+q19+BNIr|quuYZ$}(Jq=UPD=hg+JiQ^gs{Yisd2o@&|iC%Q0dHn2T+ z-ku1(BYD6;eo(_bxoa1`%N5$OF6fU;rrL~)gV91wJ}?fui#^OwCJUdsH||<`;+&}6 z8|epfz`j#4;_zes4S!{SE6~`{-SuB6(1rW(e!_J*ZpUl5D@Ak<0+qH)4eJ=Y*NFAA zb~kRzLDLckJ9Eeyd=W4GA%Qn4o!}7sqP;d=&(25U%{%_?@b+rk@Yc17cq47X;vBd+ zA+jWjlo7upT38xuymllc}zsa6_|OWKO!q*|qNQ?(xjPEHlrmLy*fQp@pf4qlav z@e{5M|KuRiNcHGwN|r-$HCCtIPwZ_p-sx>LR`iF=V@=&fH-5|f8!W=yrr!71l&{&? z8ooMK;7*)VQ9RltdkW6n8{e1`7`Nd22(72Mw9=tT`}YT(9z33^)e)Y1!&3~@8a30| zI3$8=L1IImDh^J!H#a3?LK?P}`MxD4s-|_WCaEuL{SRu5f`d}fXQZU|g?9LUP1t@D zTdqxon2^%@Y3kPcD7&`rkfIn;6vc>oy}oH61qR`ql$~pG*se6jgX7^p#x&h=wvV#* zVMSC#>4Sw-rm%bgxeTyb@mqnX<{~ zX-abSrX*GRk*2Xvfm(j~UWoliqpd=vz6ah)AYGG6zwJQP+h6ntHmnctJms;^00000 LNkvXXu0mjf2(BaK literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/MBI_selected.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/MBI_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..d84053be8b9a019e7f286f5ba13ab22268aad98e GIT binary patch literal 1256 zcmVP)p-KXKBrncu@j);z_F#ATc|!$rZlMG`et>#eY-BMPIRcF)rwjUbs_K-a0u{N!!Y`H zcHLaA{Ld?paU2e5gYk$n%bg%tv;wu ztbJAu@@b$KI2Kr`zNvaanyyqB@H`(aljPdB;YXMM&N{q_@dGG z9;q%(*sJ#EeS^A1y<8pIC^Zr#t^l_m5VNj>uqNlf0p6j%$4RHp#vB+Pq(@e#2^y)q(Rs88Ziz)dyhq70k@YzNi> zUjt9oQSI--KhNLV?)>K6c|vbjr|u0ep|${Xfl*1nn=|`^fc3zR9Ir~oy#QDc5ieIA zv?U#{61oGP1r`IVBjWQvLu^$5F9(X`_5}wx;9s?3+xO%Dj(ur=2M|MA+xL3_sb%-5 z@8@w{s@|r~SMO8@@3AcgE_CPCBmZ*14PJH^aBFhoj64TDsnlzMZ-74FhvdjHz-V9y zu!Bm^1O~M{oM`Ue*US4V{ln^oc@pp>@KN%}1YlSm(2rB$s~p<{v?N_L<$Y8JwHcTX z%&iYX9Sckw(DfBPxxQqY1RMuU2DT;17n!N0z`HN52Xb>@J@BQ?IK ztEc`I&`nPP*{Xh@P78Hj1KSSu9Q9tcJ4NYE<-SRN58)Kc0J z5tZ~=iio0yq>8+Vh@w7#7GQQnyrhoEvY@GeQt8+9mNMmQf!z_Y?SSg-ul5T|3H;)= SVX+hd000068X!I|i4Fh&0)$CK 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 U*jNyj*Z=?k07*qoM6N<$f_T!ME&u=k literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/Multiports_selected.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/Multiports_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..48e0e7340634d660d5946e5a416cb5df8c5bb191 GIT binary patch literal 2269 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 literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/REPOSoftTech.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/REPOSoftTech.png new file mode 100644 index 0000000000000000000000000000000000000000..6fad2f0e2679ff4c7ed9e66402d15928bca104ab GIT binary patch literal 1057 zcmV++1m63JP)6>QT9j$DYMKba5VR3l7f}%fVK)}7H{M7=SEaOSK?FjS z(Q=j0MPy<|MpVW~Bo?I+bkV+IW4W|yj?UN3|Ba`YZx(f|126BhzRz>c|D69hFKwiS zwRs3(%AHJ&G;6>MM^fkCmgF>0g3DOmHyrRo=_W!Di9^7^`qK zX5x>7`ur!ujDOUT#t=S07xriDWc)DZBTm9?7>FHO?H0X_&oMRaf5}2zI@&SMoc5}$@5bwRw1T;X1L(j+yoh(viH8b>{)(9fFfC()4P2NFa6WcK zQTQFb*i^gq*#T#NJC&B;nl|IhvT;P|iCXASRA{_W7}my2vioA^UdK5$F1>8!-W@s$@ga2mdjpHI(ZC0pXk zKiBNmm$~tm*?6!Gr7nsijVdin3B@lj7`>Gb?-}g_7vLg%5s#EmZ^ag)%3Xo+j97nL z#&^Uo299VH&QI_x9A^Idv4%1{7KiD^`q195iHi|sUEbTV8c(D@8Nbw=j5c_0D*~zy zbFl%>;>&jY(a1BLPdLQ+R-1F$&R2Qm{ZL>dYA(ieafO$0F&;^-shDt0O!Z?5j1NV9lI(M4kQCMabhC9ySQx^t|&}65f2mzZhb)S#VlM|(DR<6 zaDuyo@AgWe79P*!4e75gHmnVP?WE$n<%z<+I7}t|Nv?Ij8HiW@qtQ@NKva1BmgKSz zGYVp@o=pXopQgX1cHn&6j@>z9DBoQfSpI+M7{i*Qf>mn_l|g6xV`w}s(3M<1GpT3; z-b&%)PAJy)W^8&ceP)=nC*@%G;ap^0ks@!+AKrrG)y=pzRC`W-ZdL{N1Gp-* zyMLquCX69WD;TEW`xL$3CJ9}h%4v6aztVP3YWl5-q(hb&dFr*_)Y{mbA__W_kSYad bjdZ}@0gv!sMNn^W00000NkvXXu0mjfEVT7n literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/REPOSoftTech_selected.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/REPOSoftTech_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..1be3b431448b53149b0c3b4d174a4a4c2e53cc3f GIT binary patch literal 1196 zcmV;d1XKHoP)O%mW~fIhXAb>m+ics^y4?O&wM!jH z&7|(jc6pg!SL%PGwgPvl6V;RFrG8Hz{I847V|mwxl5m{*V9i@xtv;%Dq#dj_X^Z-U zIzru2DV(p~cCKw!tDCC{cB@;}Ptq5!5P9GpU;r=(_z2hm z)JMe2r3;;ohz7MIB3e>eSE#ciVn;G&0f&JRx#$GY91-mmr@ju@6A|6juJo*WcNPBf zT-dLnn$n|N)tSj#r;aMe?&YQ2u}wx|!6KH>9sAM*QaO66?d$be~7H>tDLW9qhZDOjKF0dN;45Hgu00hIBh|*V#xUR=;56_MFbWtG5l0FWb^tq5 z@l`-K&{$jmXaMdgnQ%}c_n!6jEJU^0hXw1^6>RVn!TB(dLYMZ zO6F@*_x2Gq1>UX5ES#YZDap60Co0wq%xB24a#86`->lBpA?k5;FmMJK>wl>|tpo5~ zM6^f5u825M^7S0xarI~dcQ0@pSQQb&_&-q8kla_~ysn7oImg`kd?cL#tjvaLRM(HP zhRl!;fTw|ObzVt!WtOHP$(xcJzXr?%dW%>4#o*)8M4&(OO*lP^j_P=|K4WFMI;d1v z8%q7SPz%fgUIgX?lQW;+%OE-hOa-Q8Aby`1P*8p9m{5xwE_GFj{>C*0VFpuODa``t zjfk!q4^STwXKFccU;nYEfa`&|Io=HH&R5*9gxUkSVRIs2S0d^};9GTALhhl6=)6#K zt}m6yN7R$~VA+BR)pSaocbx8H~g-jw1Go~b#hg!_~F+v6|VP&@mNa%{5z0000< KMNUMnLSTY;`8j|9 literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/SDHI.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/SDHI.png new file mode 100644 index 0000000000000000000000000000000000000000..00b67377cd13011a314a7bb4b2663df45da4f70b GIT binary patch literal 621 zcmV-z0+RiSP)64Fc}WOnd+U0s2Wq zK~z}7?bf|(ltB;%@ZWnehy+3uL`7}17b`6c1RGIA1i>PTVkcrDHa04Ph5ta(sD+gf zh}ii71{*uS8cS`ou@EJZs1cJpn|Wc~?B#+7Cg2S$yUfnaK07=6>{h5`@`s`keGA)* z7F8+6A~}oxh|?-sEEyw(F`YQHFpp-9qM1dj*SgtpiRJC1YdL`PSrQf{WjYjdcpl?R z_2j04NBgw?m2{PdMz^c4NyfvNzz^(-K9vXf8Hk@^EZxGzQ$k{U?vYx%SH@!D7rp}=ZW+`68dr6!;vpv;_LM*c4i*x zs$B;9;!J1p4d0`GkHgC->f>=VU$gcpJ`KY?D((STbpUVhyu71A00000NkvXX Hu0mjfBa97_ literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/SDHI_selected.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/SDHI_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..15eda92a366d41e41e533602cdab7327dd9e4ff9 GIT binary patch literal 690 zcmV;j0!{siP)64H;yqg^&OM0zXMa zK~z}7?Up}iR6!8Nzj-l*L_!RRihl~V7HzaJ5YkA3h*(I7qS%R8h>eY@ENm<+E{&wH z3Ir4zFQI@B%kmzG4mQXxo6pz=e>6 z22y|}_k9DN`}}hLaC4l|oYvn3*%l93y8zY&NQNZMN~%cOYi5-Q>3vDxC7GnhW>!+r z9mn`(llig&YOjRM0gvh|dVz%m&1XDu5$KN!lvfo95;p+@&B)G2XYIn@_#XZr10Dh& zfvLo^Vc@Qh8DM=JPy>Ddr@Z0j!yW-9LNWCDuwsP(Ugts%jCoOl0s}#Ox!y>ws4pe$ zmh=|*B*W`yB9GaG((Czt^8kiD`Wc z%&cZ+WA57^X;9LBNedpbN76G%$0g1A&F-G0CzARkJAeO5CPW$fK}iUupO9= zR@E2eWsxVE;oRaI5Jy}h})xxBo*udlDLu&@vi5Sp5ry1KfChK2#@OiWA>5fNZuV0CqMo}Qkns;Vn1 zD}sW8jg5^41_q;}ql$`(G&D4|wY73`a;>ec3kwUIo12xDl?Mk0kB^V6tgLHmYe`8- zA|fI-Ha0IWFK=&eFfcH9cz8lWLPbSIIXO93S64$rLnS38hlhuYi;IPYg>i9ldU|@G zprC1KX?%QqqN1W69v-W!t0pEUPft${4i0E&Xu!b0T3T9{mzPUROP`;gkdTlwGc#~- za8pxLiHV7Md3iB0F{r4hUS3{gWMooOQW_c>0|NtNV`DNhGB-CjZEbBG9UVbIK{`4* zot>RdPEG&-07ytkJv}{HSy>ks7pJGEetv!d0RaF20GCY6B>(^b0d!JMQvg8b*k%9# z00Cl4M??UK1szBL000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2jB!36BH^5t9xz$ z00H7jL_t(I%bio-YZE~b9@8IIT3_T)ghB`=kP6wu^~XuBrNK1xNU`Ff-3Rd&k0OSI zaQGoDEr)3#P(qV^X#QY#)2q#;*CNit-Z1m+%zWS65={&MB{ojJ*i(OFY5NE;n&cGy zNMiSCG|GS;>cRrPBC@b=Q#YMmyXv|PN^YynG9*P#h-F(e^5VS|&xi)R!}-4CPa`6m z&l7Rg+9C>-e5YE0I!-tQ=KQ>MO#~t0nc9KLrn+*>1peJDA;!W!6d_~?Awip30eC>J zd=INw1bw&pYb7nNv|s18Y2GdY1$0+HMWYB)GEcOlIBdD5ZrcLAG6`%?ano$uDfEVu zPv6E3vfU@M>@{RGnqC72|1HN2!$qUf02-51`(2pO1u*y9M2H@8##niWu}ExsL&o?S zgsSm5Uq+EKvljY};{Y!@%`bIyI?Z#Is~J*zai!@UYY#{DU2)(=)$07py6U|do-RfP z@cgv*xaw)|z*+YnotG+R9^ms+tzUjq1HQU$@dVCG16bH_-PIG6-@5$= zICG1|cuG-xaF(X@M;WurLLvBxOXBfz_9mA?rhk#RjoU>FIAGx}SygzI&VE3IZ((ba oy|gUE(O`@_Dwt6}Rd5aX14;LpVA{uWY5)KL07*qoM6N<$g3yDuzW@LL literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/SpaceY-Expanded_selected.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/SpaceY-Expanded_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..5a00b6df037ade684ebfdd09b5dbb812f7d1907e GIT binary patch literal 1475 zcmV;!1w8tRP)ghWY%YjB-FM1f^!nLb2-PEv_rWR{SW zwNqA&Q&x;mQ;T?erEYVeUt^V3T8>6bghEDx{{H?*O@{vd|3*uO@bL9#YnuD}{Qdp@ zM@)yTuf~IegHctBM@)u6MS@UNi>$83_V)R_z0vga_vq^IK}CT>M}tL5g{7yz?(XyP z@$^PZg{iBSzw+|- z!ot+-?()pd;Dv*Nnwz=F%-wx`rGbR2#KqQ>m9+W!`(kF6e}bx!lD2+8|c-nqKYudlChcc7l2zB@sFyS&h|w91K$u=Mox=H}*{p1#-D z+SN3i;J3@xb^n=ud&JZ_xj1n+_AIB%*@-> z)zyWFuS7|OWN4Sf#Kfl>}n!J&c zvqwyXX>FWIPKL3w%SB6t!Nb-6|NllzhH`YEj*+vbtHh6!w)pt^`1$+Y-RJlB`Mti> zqNTs5r@oVwx8vjLVrG~@M1Yu>wxy@Sr>Vm0?ex;q-b6=)MoWj9nz%?!hjMkGa(AKc z@AdER_IrM&R9B2gOof)3yGcxiNlb>jyU@G5(X+G5Nlu5ew9Bfj#E6Wrh>NfF_4Qj| zlbW8rV`i3|p1qWnw$|6;qNTx3Qi!0UzGrKh!NS#-m$;aiw|;`DzrfT`R*a;j!9z!c z_x1Jf@AH6ztnKacoSnLxo4I9Zm(bA9(9qDx$=gj)h=qx+;ri1v00001bW%=J06^y0 zW&i*H0b)x>L;#2d9Y_EG010qNS#tmY3ljhU3ljkVnw%H_000McNliru-~<;F5*gqj zz5W0I0z64XK~y-)V_*OS1yel+DEJ1YzjAIfWxxuGWRz+ctUxS31~sVI2ZpU%u_%4! zp`ftQBxXGW!&99yE`}MXvP^C=5XQVO3{c%Gu^Pi*C|e>c8^$fW_`U38Y1wK9241t{ zX7XL9<*$e`Fc`^8GBBLc@IAo5psB)rMCFsFiZDc5=TQ)uwbUAJ&>qWjH8it%b$|ql ztz3W61c(QZW&KiQxev)|%5hs($r{Qqq}7?&E3DH~xV7cxcOFw+C58t^n?vM3SIW!l zUSwdF=duTCs`Z~aeUj3Q9y^BDN*)XhA5{!985p`X%${@4XVOsFhr_Dk?Aok0;S3D-xzyFwBO0`{9M5G43214p6kj8&@lUE{t)ZjO4Uk*^ zFIe5W$}VArvGaDZeq&>fSL)3nU#Wt)tD>uS62dnwv)|rDgv>+Rg>LC+{*`Ic+yKrhxdm!VY_SH( zZ3CZ6GQZW_ZE*%#o`I46+;$l}!Fuw#K`fMsJp(c9W;5^w%R&Ga6&;1V@yd8i0D?`s dcDf)G008#}tC=C#uhIYj002ovPDHLkV1kXeBEJ9t literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/TalisarParts.dds b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/TalisarParts.dds new file mode 100644 index 0000000000000000000000000000000000000000..307643d567d20c0ec3ef79639a08910166dec207 GIT binary patch literal 1152 zcmZ>930A0KU|?VuU|>)H(jd&h1R@w17$FqVqykVS3lO_RgqUL01hfMKu%e2{eBYLP zdt0u_VF?C?(9qCWt#cs0><&i`Fh8>Q6PSNT0jLcqAMXQHZ@jHm87g1;hrv@xJ(N{)$Tb+{oDhI5dEbLX!fD=KQl-Q+Z>#1sG`WgaJ95_>U)OJ3CBHyTCeW~+7})g zs{QZM*?VqtE`ZFB4~-1{&(P7Mu%k!vd^J%1W+;&FCc@(8a^!RrMEy^OZIcwXDOt7| z0{Ky)q3HIZ^S?3toS@=4N#zO9gRwvl8eeGyg~x4>`$7Da%x$^MY=|%e@_7#+xC|iq z+Z%Xqz=a6-7u|la{%yI^F#SM&B8&~9Q!CfJDB|-R zV90@+hwfi=KFI#tKqnyCkFXpl2y_pre4yn(C%^!K_yGHVTOv~U!!$x@BEla<15iEB hjSaj+`yVqr7!nvT;sap?)IA4aA|U>O4Y@?y2LMAKoPGcR literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/TalisarParts_selected.dds b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/TalisarParts_selected.dds new file mode 100644 index 0000000000000000000000000000000000000000..24dd24ea4b9063efe079d06921eaafebd3523535 GIT binary patch literal 1152 zcma)*U1-x#6vt0(Lie-SQ9tS=fVuVK0t~gFWd)eVc51vrNRQ;65n5o|`tEjlz1k$>o=O?*D&sauW!g z6t4h)O8^jYW*6*WHvmUzs`)NrCWlwxl-Bv*P3ZAY@YPTDtQpZoBYJq50uVwRZSNTG zohh?$=cmb^X=zr&g5`dIQoU@;-8cMdZ{SItE$ERzoAB(L1Ffz+8tW)~59s9#Sn?laJ zDW!c9vYg47dak_l9Al!XcKsT8rE|jU|2XE~MR|H#0T_Qgh5C$`f0v}6zBFQSm-MD7 zwwaqm{=wGwd&D}WEyL==!=-Q2Nb~;Yp6G*aVp4Tcx+yD0mB@0c| literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/TarsierSpaceTech.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/TarsierSpaceTech.png new file mode 100644 index 0000000000000000000000000000000000000000..8237894771b6652c81191f2816390ef16a39b2bd GIT binary patch literal 2109 zcmV-D2*US?P)E>KizGEhQEBLkl(Or3Yc0iS<7FFG*GBz= zN^Q1oEp!uiZQM1zt;SFrqitPNirF=#7OFxT(M3rSM+LzPw_yN>k#XjG`-ku6PG=F# zzR4t$ne(1=zH^@EIp+g)q?7;%fbHA2w`-baH4MYA0XQ6vXq(M;(cy3ip>CurYlF~Z z0S?TVF{8JjpkVFw>(^ZZn61nMfYgB`U=uI`Y!1%hpt4Q}z6R_J_C33zqT<2k&71c| zMn=v7(km(|oWN_EGAJ1x9qsPu=vY)%R(1h+*X#9;0xLz3mnq6^GB5;e0VJWd2>l-H z;TtM*fK1@8PYrhL*m27+49(;5d=?oQ=>U>lE?4)_qeqtj?8wT>$_3KP%gbAY5b1e& zd9MIzfJFo1%otTwRcp%2%RdeZJI4aV^!4>E1lH`{y?ei=X`;HidNPm#95XF*fgb?B z1pcfldC=?*K$oh267X0xW?$%IBBew;>3JTo7RH9UcGv!+wH!xc=6)Yl`B_% zG&D5yVQ+8mTfkXOMSk`E{rmUs-o5JrXl`!qKXT+qwGhIVnVI=sWo6~=YuB#1`uqFc zfNW`L>6cRe4w!AGssp9n-QBCClp3&Z$&w{AeLkOY;lhP26%`eq0$De2-pup+{Wjn` zzzSecs7J5@>wpW2DL(`BsHmv-Ef&k@@bK_9!!Tli(?B!u2v`dIUW62=7?=z+0B-|! zAOaW#{s>$Hb^+xkFhd;#cLZRja?-Cp&p*%N#j}nW=eKBJwIa8sZ2EwUz`sH={DOmR zzyNSXp-%+SHUfAJ*e|7gXgUc-T$L(bv+9Hh3L*e6a2)udrfE@UeNX)ACK5|ZN^;`k z<5vkGw6L%+S3^U?Pv_5{|63`guf4r}XG%)SI~I#2!eX&l4 z9bMPG9*^gPnwpxo7A;y-)6mdRYPZ{`c6D_P)YsRSS*_NoE|+Vc&1O3eq)I8#fJwlm z=H}*pDP`c%qel;0TU!TpT{luvQc|m`s^(w4dezm^($Wv$@py)MdwU-MB|->HN$C!4 zMPp;*tFva!I<$WM`ei~0IgW}?H;bsLivQoKtE=lgefsp$#Kgq6i;IhAkJE0$bnp-; z0ZP4IZ)|&e`x4-lty{OA=v@9yX*J+ z(|US(UMeaoT9}cMvB7G!+RmLj=kM$5OAG`8?Ov}ptgo-n0L}vKX0JB^|5l(`3@p`k z{f5KgI1b=;yZ0&b{6YwUlyZ}la#t{r{s3%H4(fo%e!u@^x7!`zcDwfiW56lJkLk(= zvkN9^_5d4!upqtu5#R@0KnpM*NCj$5D2osp3ssMNAW`W6K%0{EJwR75p~M7CjRmGE zS?>glP$oXl!RPzK=a;O?ag-98uppw1DM+|g(D4N7h4du!QXcRv1)2N6ZKZDBAOKrb zGLuxPrYhh60X~^15ivpFcNN48w$~kW!AFKY#wV-|sil)6?UoOqmj|X-_VWj*gC8x^(HT-EOyJW@aWvL_|cW z_Q|oavGCT`)|`=%k@E=&2{rfb-Fr%X5tLCRuq`_~J962wWx2YphbhR~gb*EuVLTK< zxSE=pK1xeV+ZhuRGhGOAUDGrj$hBB34+jPY4(hr-J0cgonSY}vA9b6i~9 zcE8_$;@GicznVOGazs&4(Ho~uo%-;`jT=Me7Mqusmo#tQyuXBnh4rcbm;t;DTpCXqgJIIv)>aGr(`vOYFD)(oQ&v`1#{T{LtAc{_oWZP_}N}x&`A^Q0a;3PbyY;&7};* z>ru6}8URkG(~_N?Jt;Xk*?Q&5l?}jhU~t8X6=NwWDI0;h!ootsZnrxEfq)P~$ex~_ zWHoDIo0^&|bLY+-(=;u*xw-krs=DTyaTd50sskCo>uP}+0dQqKr@={XQ^D**sQB%uqwv4E7oDshaeD;Hzq%{x49il7IFr2uj2XA~TP00000NkvXXu0mjf-*o)7 literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/TarsierSpaceTech_selected.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/TarsierSpaceTech_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..2a4c6b758c1d0dbcb3256374bf5f736315a94a87 GIT binary patch literal 1965 zcmV;e2U7TnP)lyL>@Zb<0uJuYR{p ze-c(L6jd#<<558Uz}>(Kpcz=%dTp2*k7RPX_?IU`CN@R)eC3l+>?5Ql4ui6ZF4yQREx;ZW92CZ^31tHU_G!(L`uDR zcoi4|M1cJw^2eSiyzz?&syYpr0%QT5R>{-A4iRbe-jQAxUj+UNINVwSz!VXA1HiGY zPpW9u>1(d?pQJ+^+*V80)OwZ-dY_k8wK6hoC!5OZ$Xr~{nB)WOcq>GOtGe0i`ma>A zsH{Va6Ax<0AQj9!sP7Csp_MV1ZBU(IC@Qc|k>e@(lMniN+$T7|l8q7aQj&1jj^*j3 zL%au!nFZ4le8d6Y0v-h##6k!FOMnloQ+^5fuS9sIOKHmqQ0j*?;2od>=m2Jl$RB!F zp#;bT4goI!2|yCi2D}BF1l9sS6OraGl+jxed(JZ@bs|#7oye{F;#Sg^2Lpg_13|-s z0M~${BJ#f1!@iJM3e*F~4SfQ{+(-iE0lx)WVoDs(<(Dma6;=uH7!jZyCAdOW{c&*Yrds;UlsJ!aT3 zS7t8|Ug`+bKDdt8-puDmzdp{+Uu5!RLoM0G+0?IhSk=}{c0m)HS|XIG>IhZEQPm9K zqvb=X^ZAIT2WVN8O+&Z~cVCndjSn*M35V<7%b`vLvJ<#5CYcbhSfm@a1A&^})mS~8 zM|Pj%jfXEY8>M$WeZbII5*^F$900&MVFbh?vQZuhzsSktTrmILv|ivT|~7QPOg044$>L}Ygi%F?Uz1Xu)o z1IRHR0QjGc*7YKC$=guUPg|!0*+%OZM8xggiTx_LX@B^fU;;ookZME|?`gEKL84Ja zI{PB1JK~c*SZx~cu%Y)VPzBVP(WnR6@j!;9D%*4)6OldrIU@ZS-fU?9mvPjWkrbfV zzJD(w^?edz*j3`49>dQxz}RgOjx;K5{ut*8;%g`T(^RSwz}*1@PevIOQAAwGQkqxB zbNL4N{;uTIM@doz7c@;sT;9yg|#zfou&2D7se1@Ng8rFNHDDPCDII z&Wl6y)*z>r<#Ns^@@nszJF2=^RZCTMl&S{HIqQa?^SsG*q^x-zyvel4WG8}Ok< z2OrY6kGXo^+p3eZ%Jt8?RUhyynuRZ_&KPo1ZzS#4vy1+#3vCk^uBy+g>Y^S(x9?or zt3K+B8NI$P2(Vk*+287C{+v_%tt`Z-E7N&-Zujabw`s2cuosxDs@Yx#5`Z{sqkd&w zCN)jdcy?VOCECELz3167F zsv$Yy^X8z*uv2O4=_L!K-)VTqawn_$mpT7`>voYcHy8MN00000NkvXXu0mjfE(o3O literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/ThrottleControlledAvionics.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/ThrottleControlledAvionics.png new file mode 100644 index 0000000000000000000000000000000000000000..4aa56679e07a0dfb33a69e1e28e33ba1419af9f2 GIT binary patch literal 752 zcmV^%Sg03B&m zSad^gZEa<4bN~PV002XBWnpw>WFU8GbZ8()Nlj2>E@cM*00LA=L_t(o!|j&6YgIuI z#eaJ>h8S|Lu}TyXED{1~w2F;(B1AD-*x6YKB9gyAP!a4bVw+abMzIJYLJ0UlKnua3 zAfl+m1cY#m#+Ue9n|*S9+^bOwgS^w+-PxVlnYm|X7k&$p#2-LX2C(1ZJAn9-# zZ!K$xl6FWMY_5~CTIjNUwM0GxyaMhN!!9%MT+*w;$sG;%vn)HFW!ZJ$R*W&k7{mIs zSO;n;iC-jLl(Yyu19~N$2evFMEPPBx&xH_Ti-Rq+@UI~$q_+3h{q&b5ZM$*U5O5jT znc4@yI^Yp7YI~}oljnI`jIq&sdu-2@*Pg#0baAp$N1RS(I1guCJTa5!%SWJcwt%4f|fW5#p zFeT|O@D@1P-QB&vaSb$I2j4kS5#1X}Bfu3&*MKv?Qd-^!90S^cv%pQ@lsX`(Dx?1Tx!?E3z{H iEZKh9>LV?z8GHlB_1{{NIl|EZ0000WFU8GbZ8()Nlj2>E@cM*00O>AL_t(o!|j$qh?P|o z$AAC(X5OH~%W5?lBD5GAoVlf&hJxBfV3D+F*UswQM8sXYK%;P%VBF`%tze6a77`J} zKsgBs-6<)Ea7ZBs1kq7@Z|1wF#e7fR8{TK83q{_4bH8)GbIv{I+;i_a@W0?KJi=YT zTQKek@)l-+)4=n<#~AM?7w5f&PExFQ_qkE7OWwjYZ{c!DzsUoDZWLg)l3eR2Z{Z`1 zMsjgqWyX9C#|LK6TR7t_>;mwecOK&*fxLzKdR|g&dkdqOy=ca-a=MfhtxUvNQf%M0 z@T!W?TQHxSyL=AQU7oA(>>r=Qc#mSkTlfpuFS$v?H)iI{Obju^pi)kXotdI3#8%K2 ziTR|sQWjJ_DRz409k3I412|BABd09bl&^G7V;t|1Z~GjYeIAsSr+}xE;^*GNlV-fI z;Nr=?dr&l=LTp4@NQ%1MU1+RVUX#>0q($J{>Gs?8N&|T%|KTkx_FSY5UH66d2z}w| zBVU`D%uFNY&jM%z{8B%*>T@{kEi41S15fze{E)&n|2z_}mqrgsvSAGlF~t3b&rQwb zaL;{FcQQ&QMfu`gnKUcuQ(#B=d;rvdv%rC*IM>zLel?8N8g$C(Y$CbVr9rkwdY?vb zVH@xpusbP!+2v1n_Bfnd7FTPiX#(M#7FECHv0$C3U7#s}%S3c8Q)Mn@-s4ON>1 zB-i@8Cy?)eM~hDJT2h<^R=kCycj7=5mdmE{`hN+|6wOzGmw+?1dTq{I_#U_j?0weu zzS3<2>)SzJhZ|4>7km!8aXR61_{`t~iJNQZ%SOaoz*ugt9+cBpnC(lhbt_^s(=)vH zNhY6qF7KcC(H&U=kkmijc?)B}HsE|xygKl#F9yeEdl|G9C@{_?7k?=ArvaA~Q^j~X k1$Hy3b$|D^_ww@lRz|vCuzLs)$;-`! zo*{AqUjza0dRV*yaMRE;fKCVhpQKsoe1Yhg01=zBIT!& zC1$=TK@rP|Ibo3vKKm@PqnO#LJhq6%Ij6Hz*<$V$@wQAMN5qJ)hzm2hoGcOF60t^# zFqJFfH{#e-4l@G)6iI9sa9D{VHW4w29}?su;^hF~NC{tY+*d5%WDCTXa!E_i;d2ub z1#}&jF5T4HnnCyEWTkKf0>c0%E1Ah>(_PY1)0w;+02c53Su*0<(nUqKG_|(0G&D0Z z{i;y^b@OjZ+}lNZ8Th$p5Uu}MTtq^NHl z*T1?CO*}7&0ztZsv2j*bmJyf3G7=Z`5B*PvzoDiKdLpOAxi2$L0#SX*@cY_n(^h55xYX z#km%V()bZjV~l{*bt*u9?FT3d5g^g~#a;iSZ@&02Abxq_DwB(I|L-^bXThc7C4-yr zInE_0gw7K3GZ**7&k~>k0Z0NWkO#^@9q0fwx1%qjZ=)yBuQ3=5 z4Wo^*!gyjLF-e%Um=erBOdIALW)L%unZshS@>qSW9o8Sq#0s#5*edK%>{;v(b^`kb zN5rY%%y90wC>#%$kE_5P!JWYk;U;klcqzOl-UjcFXXA75rT9jCH~u<)0>40zCTJ7v z2qAyk54cquI@7b&LHdZ`+zlTss6bJ7%PQ)z$cROu4wBhpu-r)01)S~6}jY?%U? zgEALn#wiFzo#H}aQ8rT=DHkadR18&{>P1bW7E`~Y4p3)hWn`DhhRJ5j*2tcg9i<^O zEt(fCg;q*CP8+7ZTcWhYX$fb^_9d-LhL+6BEtPYWVlfK zTBusSTASKKb%HuWJzl+By+?gkLq)?+BTu761jmyXF)a;mc z^>(B7bo*HQ1NNg1st!zt28YLv>W*y3CdWx9U8f|cqfXDAO`Q48?auQqHZJR2&bcD4 z9Ip>EY~kKEPV6Wm+eXFV)D)_R=tM0@&p?(!V*Qu1PXHG9o^TY0bZ?)4%0 z1p8F`JoeS|<@=<@RE7GY07EYX@lwd>4oW|Yi!o+Su@M`;WuSK8LKk71XR(_ zRKHM1xJ5XYX`fk>`6eqY>qNG6HZQwBM=xi4&Sb88?zd}EYguc1@>KIS<&CX#T35dw zS|7K*XM_5Nf(;WJJvJWRMA($P>8E^?{IdL4o5MGE7bq2MEEwP7v8AO@qL5!WvekBL z-8R%V?zVyL=G&{be=K4bT`e{#t|)$A!YaA?jp;X)-+bB;zhj`(vULAW%ue3U;av{9 z4wp%n<(7@__S@Z2PA@Mif3+uO&y|X06?J#o zSi8M;ejj_^(0<4Lt#wLu#dYrva1Y$6_o(k^&}yhSh&h;f@JVA>W8b%oZ=0JGnu?n~ z9O4}sJsfnnx7n(>`H13?(iXTy*fM=I`sj`CT)*pTHEgYKqqP+u1IL8No_-(u{qS+0 z<2@%BCt82d{Gqm;(q7a7b>wu+b|!X?c13m#p7cK1({0<`{-e>4hfb-UsyQuty7Ua; zOu?B?XLHZaol8GAb3Wnxcu!2v{R_`T4=x`(GvqLI{-*2AOSimkUAw*F_TX^n z@STz9kDQ$NC=!KfXWC z8h`dn#xL(D3Z9UkR7|Q&Hcy#Notk!^zVUSB(}`#4&lYA1f0h2V_PNgUAAWQEt$#LR zcH#y9#i!p(Udq2b^lI6wp1FXzN3T;~FU%Lck$-deE#qz9yYP3D3t8{6?<+s(e(3(_ z^YOu_)K8!O1p}D#{JO;G(*OVf24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV z0GgZ_00007bV*G`2jB!36CF8R*Ma!}00g{AL_t(o!|j%TOj}hH$G`7&w6jPVVS&;@ zOE-~?AMS-Euw@HGQ975#5H<_ANHdp^0i_1e!JwswsM-E9`^QWZ&9ePLMrPt4W@?y- z3|R(-q(fttxmlIg(1B?h(9zMp<3FzpW-MX9oPY31UUHLn?mg$8`#twuU?rFt0Jx*0 z;~liOw>yaF1*{qs01#1fI2^v+)YLSKii!$ zn)FB{vO!#CkPCnlpWE%;kdu?c0Jyie_qqQ5{$O8U-|HJUZY-Rhp5A3J7)}O*!4eQr zpl#~?L>2%!L+4(*ZneP>vX5YSjTwh=Rh2njYh+6Mk zulx7!A5-e-{*YxE4>WO&)hm&i(bv}}04NTJ!!K*K+UqkjGmWw=YqPSl+^Ur(2!ddg zBx!JBV&WqJ8;Izuv9YlxjYhM5^XAP%fk2?%=ksmN$jJCoTs{{73xdD^UR+#UEa~m- zEe0TqqA17Xark_`G{4{f@r@fdbjiudg27<;O#}e1*LzM;kb?^kPE;=2S zon6&A*3{I@17M5AGEPL>@4GG<8yk-+VLuS!+}vC>5!u!%a*apNV^B&+SkWD62!r7-pq|srSWhYm>>u&CSiP96562 zTtPtrOOg~PqG?eS<+irA(26M|BFFmm>+d`fnwy&$0Nd^Msf2AqLqk}3P<;Y`T`t$J zZnrxbK+NTGy^)uf_j_GkT_im{ol8neZXY~&kaap81K{rN?lAzImX^julrJbPgwu0B}vKwaB_Hf_*Jb|d%LWx>_Z~zBBIi3 z*RFlr-`}qVfZE#H=`CBfSYxr6F&>YPBqb%qR4SFA+_L``M_XH40{|{6D&nrLE-or6 zVj|k57@t};K4CN(`S9Vx41lw-Ba3KLi2+1OfqEym;~9yLv@M1urcv;nJl`u-R-Kkx0Zg zIy(A%cX#)NXf*0iNl9@M(UQ`zA89qM1AyGz+_PuSoT&o1}Z~OzZ&??jAWl;YB O0000|D^_ww@lRz|vCuzLs)$;-`! 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 literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/Workshop_selected.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/Workshop_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..8f9f68b2137e1aaae413841fa896c3098d22d00c GIT binary patch literal 1064 zcmV+@1lRkCP)4ibKK^H>5NQ^Kj3W8m?_9h|J!Y*QI zi-P`vf{H>}YOAGR5(a5&bWuS_U>A}`1cI)GEWW$@JTspzI*&a(`?{{=g^*u3%sDf2 zhBCU8m*IcQ)UzeoAKvR+w5rgi& zE(yjH9RThv6}|$9i031sw6GjlrHjFUoswRW^qraYMa11^c88?1l5W(30PIh`>}j=H z9l#(kPzp)(FMz43sRsXGv^>E_5wRrA5A!d2bXi~kW@bRs%nG10T`ZE!+`T8uvMrL9 zxclBlqw$`kFD2bCsdah$0FJtQf100g_camml)LxULdAs)oEH>D(E*$(*Ael=d7=AHlA80~i~%-}eDDeiM61qY*Kdcw<0M+jbHWk4MDqHQqp;=eL%5q5l~cdgd%C9|9tER3#cf zXNC8YyIW=5;qGP;F>Gc7l15W2UM8tq(mn3Jy3uHi0neG)PDzK-i?mGAO_I)KX0}Jt z3&37U8zmh`ifS|(qmoXU*$PPqB}GMNm85U~ON_SbDyk@oq6?T!b$J>%R_O@4E1#fd z<%$0l_^n*b&dzq!>bo5dw);EXmV{rlsqq_<>{wbqo1A(z&+}{NxnqEL7Mc))$>^4O zjGe7?>u%te`q9cyU}aAWI9VIp+C|{zwBhGAvh_(eks`1UINip{nfl8Byn9J`5D`DN zxwBSL6zfZ!nVFd^~r^(zyaWs)J6~ zO8T(bZ2ll=NYcY*HZEybmSvv-Ba)P5+53|AOZv&oCIDqw_BF64J&`R*o3kvtGo9=E z^f%jPX7>Rv*X;ZWjF{OQiilodC^elGz>vEyO3`@;*qY`WfDLKBBhhCP-3mNX)vM`O i?F<921N~P-4*m^xml0WbM-ycL00000@?kEP)&`}lxgLGOMMhJ`?xj@1bC}0t+{HCa#djN+#1EXsM=W9~RWGQ;E?0xU&p^WDHBJja8g{|ja_&Tyqb$DGZhga;Yg-7L^U4)S!v o-SAWs)8Vmn{qyd=x8qa$1Gu85x2jsqcmMzZ07*qoM6N<$g656#Y5)KL literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/kOS_selected.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/kOS_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..9788b92f53ef24ed9e0173ac2a6d9a5e693c9a08 GIT binary patch literal 597 zcmV-b0;>IqP)D6B+mi086PT@L;&`I4d7RVcmK%9Th+THb%Lsh%}PN-&pSA-gJcmX zL+TO8^QufBF3JV7C9v&m9=~KIS4Uf$Spno@w#T~gT;2A8SB(j4Tas*h7`Pd0uO)58 zJ>WVp3Y-EyN?Pc)6aEgZXRmEv0+xV_p-Z-hfE&PSG@}o|M6yn3yAOB<+y};iE5Myt z-Ug#4Y)8Xj*-+5*nU{O3@BA>b+S26$onJ#aY{fJ%709OJJI+} Date: Sun, 1 May 2016 13:23:13 +0200 Subject: [PATCH 04/15] Added SEP icon I forgot it in the last commit --- .../SurfaceExperimentPackage.png | Bin 0 -> 2006 bytes .../SurfaceExperimentPackage_selected.png | Bin 0 -> 2339 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/SurfaceExperimentPackage.png create mode 100644 GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/SurfaceExperimentPackage_selected.png diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/SurfaceExperimentPackage.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/SurfaceExperimentPackage.png new file mode 100644 index 0000000000000000000000000000000000000000..64a0ecfbaee0c5ca46adaf77c0315cb6fc40b1da GIT binary patch literal 2006 zcmV;{2Pyc8P)VGd000McNliru-~|B-6(!mzgoOYA2V+S@ zK~z}7wU^J2TUQmwKli@hw#W0sGm~+gjwdsn)Ih7MQAP<-S`;yfL{+5=)CzS6Vu28d zZVD6yDTpQ&LP&@%s6gTmV1WckEJ`F0vrA`_q*;(3of#(?do;F__}8=F^ShVD*v9jd zv=T?M-h1cXd+zt#bH3+X!wwMuuf6t~ZZ?}de*72{V0CpB-}lL8voipgrkP`3Nu^Tn zz4X#c`oe_^8h~@>&go~Kc}5>Oa%4*(g!o#2OCeqn-FNHdmtPJ>M@K1@N(4c`^766( zFuD_zZQGZU$t1B@jAF6Ki4!L-S(er5Z+`sv@eebZjLu{-YHn^$Z+A}!&C|%t%*?Ah zbtb^r*qAzf`m_jwfJ7p})YKGLuU-`Z5@2FtLNpo;3WWl*v$NYQNPzYAb(+m4v$L~Q zDi!MWI=z!J7Z(>V1KhcDheDx%X`0k(H9XJT4(9mruz*Kl=two;<13>GVH}#p2N@im)t;L?VHd zl2)sQ)*8?Aux*=0qd^b^Ul|`CSCvZTUt(clA=^XYx~^HNRPLryDem37*GB;mMG-;> z9z1v;cJXK+>)rwqTI=6+RhI^aF9AOTv=Ab%wf@6i38}jiUK#uz2%82j2_YUChLPFJ zz$Oq`mNj;O0rm{zPMMsXeBE{3w(t9o58{wH_;KjaA?-L0rfFiDTSMh?S)|ixok%3O zbLWoOvlw-gT^oi$yWPgNZM4<|K|mBm7>0pqnkc2Xe*L=Gg&>>Fij9p8UU=aJ9LJ&4 z=}@cHXt&$AuFKfi7_RFQMG@DpU*8+S`1rV*o0}717!m{lold9kie*_uQA7{~c%JwE z#~*+ElWmL#D3wa0Ua$Aknu&=CW@cuXnVDgHd>q@h>2x|+mi4Y-7-E}&bUOVDK=dG6 zmWA*8Y;0_>y1L5!`}e6Hn4Fv}-oAbN!9i@i7>mVz)o3();60!-kS`az zL<+Umm-k~L2N4HI?>i=?e5Xt0M|&_a+0}g@g!m<(7Z(?IxnJm3pwmx*V7CY%ek6p@ zLWqy{K+rSxg?-t$mn4(PBk_2AK8m96SeEr>6h(vQCA#7LQ?Xe5dN!LqCxqxIrObRj z|975J_63m1WPT5PI~I%eld(rmt#v=UqbMSgNYHFHbt;t-<#L(P(NP{fdPF{-_X>qV z>oWn!WHKMj&dz>MDTS00-}g~U(QG!6Qev7Wz0RqWVrXcHdc96EnWS7U`{4?>0gZ1T-2AeBY;3 zD&hM+VHgsR$BD&aq*5ug)=W%HaOTVz{nP-IQo~wn(JO&b6wz+C`*9UQP%f9L*XvZP zRa&hUuIn;1G{o@mFs|z|GBQFGMI@6+DwPUaYhHZu#XUh701FEX?;ksM>@QmD%MTwu zJazQw(RYOqUk$?$DYr28ihZ?OB?tlx!yq1yW11!-BO?I)BUefhh9R|DjW7(~YPDL= z-MDe%(3vx5-kY49Twh;bFKx?#lP6F9rqybFKbcJ8I1WJ&Af;qwWd)@ai9`a^H1RyI zAAj4nDHe-ZmPM=8>R;!2$=3tXTjO~ip69W&w6wdab~>FO+O~ahX=$l?{`~p4X_|jE z4C8Drmt$>hjdVKA=H@2VYLzEXo)Cs%zgJ2r34#FM_t9F@V~-G9`>d?2h_h$Uen~0y zw&OS(pQ#Yd&(BYdjEwv`l}Z)z`TX0BMuSeL)2n=hVTff}{Zr}nV<~0-xwf_@K35?+ zNOHN{jFj?=T5F_~)~#E&{yaGT?6c2`yLa#E&tn_MaXg?tSjUAB+P3Y{otMaceh1Ad z9zJ~dV5g;&C%TjWEv5W{VHml6dS~;0_@aU5dLLJ=ToGMoUOlLz3$3*t0CNgBuatTR zZ~%M2cn8?o+204+yZ#AnHLd$n%5N#9uI^iiwANY(@y+hyPqfyrYppXtLI@E&MFfAk oGhG0owHCni&dvXy^3=)wAIT;~L0)cz2mk;807*qoM6N<$g3Lv^=Kufz literal 0 HcmV?d00001 diff --git a/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/SurfaceExperimentPackage_selected.png b/GameData/000_FilterExtensions/Icons/Autoloaded_Icons_Mods/SurfaceExperimentPackage_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..090629851c8a6d20ad54b11a340bc237bd21eb97 GIT binary patch literal 2339 zcmV+;3EcLHP)VGd000McNliru-~|B-6cy#_g=hc(2(U>+ zK~z}7wU&8wl+_u=fA^a;lSwi&i6J2*B*b7?6c9oJiV7lSks<~aQBf$0janCuRW#MO zL_oz2tq4@a9^5MS;DW^s#G=S1C>9V|7b zJlL}JYnh#!qXrK>SKa?$nHoNF#K|JJZP_S#XZB&@rIT5?as@*E&%FjPZhSGBIa#b& zwv>V)!^u4>kMzu*3cy@Avao#S%h zY3zi6KZHPxx$f%X4JZ6WqtSs<%I!+2U~6QRVHo$GbQAS6LT&#~N`W>kSiC&3U;muu zy1FLn8(I*WAU`jiP$0neZ?-EX?QcEvc-iz$IRx6|M;^PG?N)a*KxT$I1`-M zZ8rS=0FCwagu)@>9FC`!KL7l@P6qz7@1XkW&|Y4Ddky{j_a_hx5{X1O)^H4q#fsbQ z!tHSri9|6BI5pKcgCZcL=p*xQ5wXF zI1F=)tENs7UB;j_>t+B>P1BaOM!W0;QHV07)I+V0a75Fzmpdh0>r<(=Qc>;DZe1p& zY>LHV8C@BuS4tVtXw=i40Ztd6eg4IiO`Er8{}RvKezET3jjF!Uhp#EXmK_IZ^(Wr{ z*LwBikB9hENr~vP83D{GnWuyd;7az;+|&%3z~lB1@30dJhw=OU#G7Ej<4=iB3Rb=O zws6JSD1D%m+PWGNoQdT1=}X#(RBCGL*tT^G)z#HF91glw@Xdyg{(--Xd{yY5s zN&dym$;lhYu&t8i&8-I5A?F zH48DKTs!Rwv2xYxV%GInt4_rP-~`Xpue|nRkJK}+wA<_iA_2S=)f9~=DA@Sf=9;_j zn(IAPHI@d0!NpFeGo+My6o|FGmJp&;DOIMF(lt#h@3IoR`t86;?|7!Q^Zw`7!t-@3 zZ>3aX>(+fz$|nE@7mgMktycrYVzH6Gq@YVkDesX|Dkd-nCJ zsI16~vpa6~HT$o0#M@ASk|?1GAq@kQ$@I>|OGX#3Uj6q=bVG}oHu)g5A5m zVbD2)88zjuxVgoH!oNzun)lZ&d3nXsTPX)=U8~TWv{Jt4SOOYEz*lHyKg z$Ik7XKk|Gk4_8u9P=wWLB|gD{#bTwZrkWO?k3b+mI2@v(z8+7?8T_zsKLv$F=wY3C z_uQ)%FIw0s5+;B-H_cs;0=+w9n_akvs)7*43E)WMh_@C)X;gWSQdQ~YgAdkr{eBYisFgH==i*n4h+O z|FLJbY}r;_JpHOWdgb*d(UySFGz@8w6rV)1--n?jx~~76L&}6Mb!>J!;c$c-W?U(L zQzJSR$`?JC9gal$n=K}ydc;!x!2GrC&!1khT-omsX2P|=&3Jl7{;(x@_xfGZjZ%c`Q3cQ22W+Dm2+0xdj9l4(og&gwQli2qCgMI{&{xDRtV({a=sIqQB4;Wl#VB002ov JPDHLkV1i;)edhoG literal 0 HcmV?d00001 From 0cefd54fdc2e0cc779047ddd2fdf4b04ec535ec6 Mon Sep 17 00:00:00 2001 From: Crzyrndm Date: Tue, 3 May 2016 19:40:31 +1200 Subject: [PATCH 05/15] new release, crash is more widespread than initialy realised... --- FilterExtension/Core.cs | 2 +- GameData/000_FilterExtensions/FilterExtensions.version | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/FilterExtension/Core.cs b/FilterExtension/Core.cs index da00bb32..fd456f87 100644 --- a/FilterExtension/Core.cs +++ b/FilterExtension/Core.cs @@ -14,7 +14,7 @@ namespace FilterExtensions [KSPAddon(KSPAddon.Startup.MainMenu, true)] public class Core : MonoBehaviour { - public static readonly Version version = new Version(2, 5, 0, 0); + public static readonly Version version = new Version(2, 5, 1, 0); private static Core instance; public static Core Instance diff --git a/GameData/000_FilterExtensions/FilterExtensions.version b/GameData/000_FilterExtensions/FilterExtensions.version index 2fbf7257..d62dbf6a 100644 --- a/GameData/000_FilterExtensions/FilterExtensions.version +++ b/GameData/000_FilterExtensions/FilterExtensions.version @@ -1 +1 @@ -{"NAME":"Filter Extensions","URL":"https://github.com/Crzyrndm/FilterExtension/blob/master/GameData/000_FilterExtensions/FilterExtensions.version","DOWNLOAD":"https://github.com/Crzyrndm/FilterExtension/releases","VERSION":{"MAJOR":2,"MINOR":5,"PATCH":0,"BUILD":0},"KSP_VERSION":{"MAJOR":1,"MINOR":1,"PATCH":0}} \ No newline at end of file +{"NAME":"Filter Extensions","URL":"https://github.com/Crzyrndm/FilterExtension/blob/master/GameData/000_FilterExtensions/FilterExtensions.version","DOWNLOAD":"https://github.com/Crzyrndm/FilterExtension/releases","VERSION":{"MAJOR":2,"MINOR":5,"PATCH":1,"BUILD":0},"KSP_VERSION":{"MAJOR":1,"MINOR":1,"PATCH":0}} \ No newline at end of file From 8870295d8eb77b79991b0ac6a861c6016275f084 Mon Sep 17 00:00:00 2001 From: Crzyrndm Date: Tue, 3 May 2016 20:07:13 +1200 Subject: [PATCH 06/15] type check that doesn't force initialise the module maybe? --- FilterExtension/Utility/Extensions.cs | 10 ++++++++++ FilterExtension/Utility/PartType.cs | 4 ++-- .../000_FilterExtensions/FilterExtensions.dll | Bin 60928 -> 61440 bytes 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/FilterExtension/Utility/Extensions.cs b/FilterExtension/Utility/Extensions.cs index 32dc92d9..6c76a494 100644 --- a/FilterExtension/Utility/Extensions.cs +++ b/FilterExtension/Utility/Extensions.cs @@ -46,5 +46,15 @@ public static bool TryGetValue(this IList list, Func match, out T value = null; return false; } + + public static bool PMListContains(this PartModuleList list, string moduleName) + { + for (int i = 0; i < list.Count; ++i) + { + if (list[i].GetType().ToString().EndsWith(moduleName)) + return true; + } + return false; + } } } diff --git a/FilterExtension/Utility/PartType.cs b/FilterExtension/Utility/PartType.cs index 44601b74..d39c5b91 100644 --- a/FilterExtension/Utility/PartType.cs +++ b/FilterExtension/Utility/PartType.cs @@ -131,9 +131,9 @@ public static bool checkModuleName(AvailablePart part, string[] value, bool cont return false; if (contains) - return value.Any(s => checkModuleNameType(part, s) || part.partPrefab.Modules.Contains(s)); + return value.Any(s => checkModuleNameType(part, s) || part.partPrefab.Modules.PMListContains(s)); else - return value.Any(s => !checkModuleNameType(part, s) && !part.partPrefab.Modules.Contains(s)); + return value.Any(s => !checkModuleNameType(part, s) && !part.partPrefab.Modules.PMListContains(s)); } /// diff --git a/GameData/000_FilterExtensions/FilterExtensions.dll b/GameData/000_FilterExtensions/FilterExtensions.dll index 7f334cc443fead3c153e301ac5ad78cf6df9a901..ebd6601532588b693c2dd7467a350762e18c9954 100644 GIT binary patch delta 15610 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 Date: Tue, 3 May 2016 20:18:01 +1200 Subject: [PATCH 07/15] skip the string search --- FilterExtension/Utility/Extensions.cs | 2 +- .../000_FilterExtensions/FilterExtensions.dll | Bin 61440 -> 61440 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/FilterExtension/Utility/Extensions.cs b/FilterExtension/Utility/Extensions.cs index 6c76a494..62ba490e 100644 --- a/FilterExtension/Utility/Extensions.cs +++ b/FilterExtension/Utility/Extensions.cs @@ -51,7 +51,7 @@ public static bool PMListContains(this PartModuleList list, string moduleName) { for (int i = 0; i < list.Count; ++i) { - if (list[i].GetType().ToString().EndsWith(moduleName)) + if (list[i].GetType().Name == moduleName) return true; } return false; diff --git a/GameData/000_FilterExtensions/FilterExtensions.dll b/GameData/000_FilterExtensions/FilterExtensions.dll index ebd6601532588b693c2dd7467a350762e18c9954..27fbf66927527b2b9c7ab3796427212204d8a2c3 100644 GIT binary patch delta 3992 zcmYk93s_WT8pr?NIWuPvm@_k63D(j_kFeP1A(aZ~)C6=|8;st$tgxuA2wX*g-?>ScUJo7u>?|a|#p6`6~ zeRF2YF3M#WB>s>pFbDAx=yFVj&i!7FC z&E5Vi72eU(y7vwgPQ7Fr62|%Gc0c9mGcpzEvJluu$LmSd9$h?p`U}(M=vg(-0+pSp zFMBkSO9B1VE>C7>4x(dUZ9#5Van@g(drb1~iBw$*Iz;sl3VKF$j0!~msPRI@m?%KS zLSk>c%I&_ z%w|quzQ}x)xsJJmd4ze9sdTyDS;ZsFM50&4<1C|?`OMkOWz6-=I%a+xpkRBPzE;q5s0_r_4SnJ$@Qq1OH^>cvz>U(L;3Bo zJ2BTYOm>9>!{jd$fq2-G+WZeDbQRe(wC=1Z!Aa<^%WQLT8ZzyK<6ZRFUrp;sBeP;2 zzTj9E+k7;!RnUm6cnM#zUDX!k_3m?(`(DNs?mHW=XZXW zzlyX9cg)}hvK2Tw$td$anTB8TbgRPNxb~Kn*v1#ELML~7%bWP)WIa|9u*^DGRAY!~ z)z%SYe====H3x4Y$FwZ#II;pVx_(8(TB!o7aL)*m9hFyO+7vEIHV$uNkzqJxEfH&A znX1QH#71ca)}Sw&5B2r}ihaOVjZf^SIeQA;L6d2%_EfTOO{)_rco$bqJ1A1g+DwzwIoOE1rm1Qv*)OI&O0gQ) z3iQEL1SC+b22M6_ML?RGgZB_&2D8+0WU;1Arr0L*H;m_L6Mp*DuE?9QW;z$8*bR9L znhZm&bW8p_f}iIY&)QaOV>4!LE3OzZFXpHPVk^$iFjC9ZR%tu-%+#$KtJS+SRoSz2 zYY~C6Y^lR+He(WZp@|1mPIGuv-i2$X*+Y-YAK_CTOgT1(J?-2LFP~SA*Mh3C2U)ZA zn&t5Bbl5F>P{~?>e>iT*dvKZ``_(w%XprhrT4JPLa8#onG4$)hSTnlSbI~dsj^FRB z#~XZJ6+#pDJ3q!|(;g$+i+a4MS>Nt8@rkeiu8856sxixbM}&IN&w4jPw&U z@GdmU9KmtJu+IIxdIT3tt0Vgq!MxOs%%cc14ENmg#Zh=n3yhyHj^VA}Wgf?RGZqv7 zoqQbkr|RDUybEc@A&e!9K6K&<)ETRU@3#^A%=MH{CpO}=X~kqGv64RtV=$-iH^bnM z--1(UWNQ{n!*cK$BKWgzZg)F=1zF5&{tjvu=?T@O9wR97*wW3^iUd8ipRq`2FvI1~ zQ1Gi&(}VLbhT(sn)z;IvQ~cX4eGUsRpbCshdfNFp{%G3Fq%HJ_{fROo9^U;Kj5C9^ zN#WuQv~@+D{X2>VS;TVfc1cl(mlEh#FMf3B+(f@Z1ytri|AM)ft=<9hp~w_`2obge z?c~PDy+Q5d^O1*$mm(X9HzOOQKKLQ>Y*4PSMD0MXa729*lqp{bzeqifsOv$w@>;2t zI5g_NLHY8Gs0MjDzEL8A=ZW6V=-}yC6_pWOEb_w=tfitbtgp35UP@2qQl8jF+J({% z_O>oNsqURFWooAMlV)Ae&8x)i#B>~_yj&3)_obRE2E<)bW0lLw1EfkTVH84vWGOG|cJfPF(|(8SY9)tn!6>gCke@mwTk6M(9(OOE=dlHS#5E#JBDp)c&`^f#P4(#^9Nv& z^a-lRGuo_$k9bFW4$|)tmmf8&U|5NAw3m~C;C@!dR)YH&v+ueXZnz|lp%wAW~8L`9NZ%%Bjbr) zDXD3_2lO1&d*I+6JqP&jZ9ZuC@80!FC+D5?T>%+CUm95XQP})`rI-HTA9?m#Q2Sa- zj8Fq?F&1H^mkq)d?JD1{4R7uwc4@PkA04u*oe~~W_O%EpueXJV#OlX@a97z$y`kD< zqV!NHF9+vgFjIutLSypdQoe-Z( z;(S+Un~mgQ-@{`_fq7k@ORKt)JRn+xf-dHZ7HY7~qDs-SA(9f<4w48dyYKS3Z5&Yp zxNxFHarsi{Vr8{7ESL84m4Av2Z|+_B>(^b delta 3914 zcmYk93tSY{9>;%YW_Nh)&hGLs5C{+!78C_VgsVLiNG&muln@ihCuMO_&@^(Py&$Ps zI7V6@%JK!58wsoTf|V&gqCzyE)zyG&5g%@t-OQfWJ@cQj+RumY%=i4y`Oi6j&dlsq z^okX|;`24av-4^<+|KT-ZOoCc85!;a|AaG46Kf;@ndfsKhG{*QS|uIm1?hT^MRT$-Zm#2;pKoj zG;->k>FNBKpj73KWar#1x$g^3zmTy^LVQSIh&TQc@(`0TGX#+F1m^^-r}N}cwI!XH zODrZ<61NZ=iARVRhy%o%#M^FHGei^bAZ8I4IqC2uaWk==*hD-*{5Nrs2)-s67NUcg zM$91=5zC3s66=Zkh)0QMiM_@$2N%(jo^ z`=-nec;lG;AvOYoK4Y0TwnnS_X`Un7A>*%{5)L}{a-MOh{aa$Q9aF8MEdZD*p62&K zG+5k#+b4e{oAV0acSe-qB-GDkvQ;<@k>3NyBGuRvx&`u?8L(4>TsuSb;g<8rs_7?n1dH_ zziu;(dE5%P@#|Ly)(h3xhHF}oTc@}k`HLwjw>-Rra?Q|fEMqU@7qWh~Q`mx+k+ekZ z=|a1C8ILuP)#13gTdap^sT%8N-r{HCtC&xA0yeQ3JMf@-Jttq&$G%4`J8+DG)t(=l z}!ayzfveio0{aap$`ERkEkZi2iLJ8@MvSuW@Hy>7#KY!`mhEr!Q-!E>29 zHD|SFlAMFxu##4L&XDuC1?jek$MzsaGpf@bT>srZ7xzLbQq!n4926VSr5PH9YvSKw zc!Xk9wI=K$)2h~lOIpl{mGUyygmaH-T`S}v;SKCtu38d=Pt6>82(I9n}dLmMhc ztMQKIn%IU;dg0gMLraIyj?yx%YmcQ4?Fi)GIkfev)x6q>7quk!cq!c}iGO_qRXGP{8IS->oGqi*Z35T&yxA(Xm!M*f=P^(>s4$RgJ z7bAy+4rI`cuEmZbQ!|W=8WN6T$Dd-y(4fbbM13tELz`3AwOo(mAl-#pniJ^I4BPBq z%O`MAw`Okd!9ZJG>)8pDX850dE$c+MZieW!?0r1tjfT&5Ym zacno9##g0(Ea@Zsq8Vn!&9;7oWZF*ESQ6L3U$NJDEb!Lq&mvn7?u-jyXQAvU8LjLq zk=)%SV-2iYVXI1l%3=V9pDil)@b91uGVv|<##L90&P22Y$D;+zzZqWQiQu<#JAcX9RycL=Gt9(>*>m;D;tj9lgw@~O{cu_vIHw|IpN_+*Lo!Vu?_knenQ#l;~V zVi7)-0!?e!1Z$|N2wOr@Or@;QKgL+jiv1@Ui^L65E6S<3e^Z9agUkbwtvv75$O?J7 za6|EXYD^fST2X`}yk9OeM_rI}*~F;-$U)K-=_V3|%}U`@q0X21+dV=m_Di!Q3fHAs zmRPCD5YI>b$j=jnU#X?oFPop6J)V^#^yp7K^V@tjOD)H=*&xo|id1Q_y~YwGb=h}V zvZV9&S(aT)tw=6k!;sL$>V*=+E_Tu0%-di0d&qE()hjojvaw-`W!)Hdw{q9I0B5dP z8QmeC!#6$=QZDQFe~$mKcqO{kT1vGw2YPO zHnMkPowjGBzQ7#5ko7^g8K04SY@vjLS0l8wTu#u#&y`Pvz@_b zq%K@=$2!X-kAavTzG2BIH zkws-pNt-f0BQY(0d`j}T_@t!7^!SvtqFHO-#LP>%PbhZ89$8h@Zh}FcI)W7Owa8yE4x1*H93g+fzQSj#AK6)K^8(qO$5o? z3j*`4_|fKy@Suq7Nr~+S$>xgX7prJgFQfQ=@h*#3&U`VQB`P8PK`cl~?zfxA8zf&> zsz#vYA%)BBt*L0gJ)7O=y+~`l{!{WcZXb#kW>#7fu(TZ&#SmeKc-4h4S ZG9^I>cgur6iNf8 Date: Wed, 4 May 2016 07:45:22 +1200 Subject: [PATCH 08/15] null check might help... --- FilterExtension/Utility/Extensions.cs | 2 +- .../000_FilterExtensions/FilterExtensions.dll | Bin 61440 -> 61440 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/FilterExtension/Utility/Extensions.cs b/FilterExtension/Utility/Extensions.cs index 62ba490e..afd6be2b 100644 --- a/FilterExtension/Utility/Extensions.cs +++ b/FilterExtension/Utility/Extensions.cs @@ -51,7 +51,7 @@ public static bool PMListContains(this PartModuleList list, string moduleName) { for (int i = 0; i < list.Count; ++i) { - if (list[i].GetType().Name == moduleName) + if (list[i] != null && list[i].GetType().Name == moduleName) return true; } return false; diff --git a/GameData/000_FilterExtensions/FilterExtensions.dll b/GameData/000_FilterExtensions/FilterExtensions.dll index 27fbf66927527b2b9c7ab3796427212204d8a2c3..2067db5554a27f8af0c81fb7fc741ff2f89a2424 100644 GIT binary patch delta 1938 zcmYk-4@^~690&04y@%%?eD4B6%!L^){wVVBfhZWXP-J6>R^~>Ae?Sq*aEw4r=XOEu z$<&PJ!xw5KDd00PT@MpdNC6Q6QPU=Eq_UA?Op?vbsI}Gao^#aR_TKi{_nhB3_xH}d zx8xx!dC1Dk)aHL3d#5Q;j#C+0ze&M6pii)ZROXoO@0_lzQDU8?itgt-PB9Xs(pQBE z@c60MW(K`Q91r*fde4ed#}zyUyaQ&Oquyov^_4rik98KJSfJ`y8g|rcuq!dO4^!6)ZL_qp14xqEMfw8Er1q1_v1Kic^N!Ki4DWgnAH15s+() z+=V7f9%W@*E?l+rvMN00dZc)>`|KDJHy9&3;K#m0HR6r+bh@U#$!$K>sNtb~LZ8Ko zZ%{8aVu>c5mugU~IF4qiD@rt}LrT?(a00zjnzn;MD9-rrc|I8NOAE8S{kuJg^RYxyT&tG6OX2*15CqP8NG-{>N1gH;I8AtP!V zO8%F%qfBP`Ay2e+RO*r?#H%>M??O?g1ILB%b?6hV0~e$kNY^m<;udkC6OZLBG8VdB z=>+(}x5GPZyK)@`LcD2R*ebK&u=}hFw{wkWfb3{DewE>Tn%Ir~;*{`-J*W^uHcjk- zTdJ6J1Nr=)5ZmrWu@F3AZuFvtYe3l>kb#>REi~2}nD{j8AZe_SKZ6F8x#2D%_(2#@ zvbZcl6Yb%~&{xDEq0KB|H<9#0F5E(@5dNHT*mMg$#V;@EHu{CIJYt#eZ3Ob;WJi94 z8$aVNWs{y?{T6oH1B1u7A zA!?kpT6GL%^8rrX+=>d*5d_3e5piP)e@uMDxy1}MlR3Azx!*nKOl`tVKYV}Zaeth9 zDZ9zaZn7PfYI>e`%j-&>_ozcN3{co< zG%nh(8{-T0%oDoRn63CRMaplSPI^abg3*CJa7g7Cog^2D*7ppqRz28@Cn6*T**+{? z%qJx|@i8_Fq0_ilse)mNp50Xrsyk7IOs-96G`lD}$>qldb0@1t)KXCy#(LQS6mqpA zf_;G+CX>7IH9wT9QAgNL5b9JucVOfOQ~8h4&t$t zrj?SONxe$hA%wW}&3Hl+C_4lTm)jGXra5pJgJqbbIY}{6g_IpZmJsjL5j=gaJFFH} z%lM>}-D7p=7Q#{WA^RMrdb-3BkfJ#mez72oK8qig&hkjfRZ&4djN^cpx^hUTJjj*oMrJosHjeJrs z+Txomjo87*c@a6R$?^?qrACm>qS5!y`vvaJxi3aHW1A4pyw;~Sqh9I?={#oeSAkfk z1@nY({f$1g1-bl@7FjE13n3-8Pi;lrOIaIE%4|jK1Fa3sZpkv@1+?(zO-$2{OG4Nm z_dsjM4XJw4MVR=Z7L`Fn3E@dxi4sJjR9Jk8@*VcPRCx&pWM+-;WtZ^R68&kHy}JxW z98SDN123aqoCn_54xE!Gr+@}_pi62E=?Zr7o{PjuXd$Hj~S)!u4E!bm0Rb{F%7V*oFQz zFK+1?4E(5gFe_<>CItw^fF_jpQ`1OLDKAK(luUKJCqGz2OtMq6X;857e})2F1_ zrevpP*wRw7N7^znCXTYDq>Y}CI(hV@?2)Mx0=H|Y*)09(r$RISy*;V&bX3W>(%WMK ynLpMH8k8*mkLsJ5u79_BW1`ip0lu#)A_Eb>UQq(ty}y~7KPnJ$|AFGQhx`XWF51xm From 57350966528751b60afe3ffa9c8759d958d8592c Mon Sep 17 00:00:00 2001 From: Crzyrndm Date: Sat, 7 May 2016 11:03:31 +1200 Subject: [PATCH 09/15] added warn/error log levels, standardised contains syntax, version 2.5.2 --- FilterExtension/ConfigNodes/customCategory.cs | 10 +- FilterExtension/Core.cs | 25 ++- FilterExtension/Utility/PartType.cs | 175 ++++++++---------- .../SubCategories_Control.cfg | 12 +- .../000_FilterExtensions/FilterExtensions.dll | Bin 61440 -> 62464 bytes .../FilterExtensions.version | 2 +- Testing/TestCategory.cfg | 1 - 7 files changed, 113 insertions(+), 112 deletions(-) diff --git a/FilterExtension/ConfigNodes/customCategory.cs b/FilterExtension/ConfigNodes/customCategory.cs index 7957b942..e0da4d6b 100644 --- a/FilterExtension/ConfigNodes/customCategory.cs +++ b/FilterExtension/ConfigNodes/customCategory.cs @@ -197,7 +197,7 @@ public void initSubcategory(int index, subCategoryItem toInit, PartCategorizer.C if (conflictsList.Contains(subCategories[j].subcategoryName)) { // if so, we skip this subcategory - Core.Log("Filters duplicated in category {0} between subCategories:\r\n{1} and {2}", categoryName, toInit.ToString(), subCategories[j].subcategoryName); + Core.Log("Filters duplicated in category {0} between subCategories:\r\n{1} and {2}", Core.LogLevel.Log, categoryName, toInit.ToString(), subCategories[j].subcategoryName); return; } } @@ -205,7 +205,7 @@ public void initSubcategory(int index, subCategoryItem toInit, PartCategorizer.C customSubCategory subcategory = null; if (!Core.Instance.subCategoriesDict.TryGetValue(toInit.ToString(), out subcategory)) { - Core.Log("subcategory {0} not found in subcategories Dictionary", toInit.ToString()); + Core.Log("subcategory {0} not found in subcategories Dictionary", Core.LogLevel.Log, toInit.ToString()); return; } @@ -221,9 +221,9 @@ public void initSubcategory(int index, subCategoryItem toInit, PartCategorizer.C catch (Exception ex) { // extended logging for errors - Core.Log(subCategories[index] + " failed to initialise"); - Core.Log("Category:" + categoryName + ", filter:" + sC.hasFilters + ", Count:" + sC.filters.Count + ", Icon:" + Core.getIcon(sC.iconName)); - Core.Log(ex.StackTrace); + Core.Log("{0} failed to initialise\r\nCategory: {1}, Subcategory: {2}, filter?: {3}, filter count: {4}, Icon: {5}\r\n{6}\r\n{7}", + Core.LogLevel.Error, + subCategories[index], categoryName, sC.hasFilters, sC.filters.Count, Core.getIcon(sC.iconName), ex.Message, ex.StackTrace); } } diff --git a/FilterExtension/Core.cs b/FilterExtension/Core.cs index fd456f87..e4efbcee 100644 --- a/FilterExtension/Core.cs +++ b/FilterExtension/Core.cs @@ -490,18 +490,35 @@ public void SetNameAndIcon(ref string name, ref string icon) icon = tmp; } + public enum LogLevel + { + Log, + Warn, + Error + } + /// /// Debug.Log with FE id/version inserted /// /// - internal static void Log(object o) + internal static void Log(object o, LogLevel level = LogLevel.Log) { - Debug.Log(string.Format("[Filter Extensions {0}]: {1}", version, o)); + if (level == LogLevel.Log) + Debug.LogFormat("[Filter Extensions {0}]: {1}", version, o); + else if (level == LogLevel.Warn) + Debug.LogWarningFormat("[Filter Extensions {0}]: {1}", version, o); + else + Debug.LogErrorFormat("[Filter Extensions {0}]: {1}", version, o); } - internal static void Log(string format, params object[] o) + internal static void Log(string format, LogLevel level = LogLevel.Log, params object[] o) { - Debug.Log(string.Format("[Filter Extensions {0}]: ", version) + string.Format(format, o)); + if (level == LogLevel.Log) + Debug.LogFormat("[Filter Extensions {0}]: {1}", version, string.Format(format, o)); + else if (level == LogLevel.Warn) + Debug.LogWarningFormat("[Filter Extensions {0}]: {1}", version, string.Format(format, o)); + else + Debug.LogErrorFormat("[Filter Extensions {0}]: {1}", version, string.Format(format, o)); } } } \ No newline at end of file diff --git a/FilterExtension/Utility/PartType.cs b/FilterExtension/Utility/PartType.cs index d39c5b91..b7d71716 100644 --- a/FilterExtension/Utility/PartType.cs +++ b/FilterExtension/Utility/PartType.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Collections; using System.Linq; using UnityEngine; @@ -15,11 +16,15 @@ public static class PartType public static bool checkSubcategory(AvailablePart part, string[] value, int depth) { if (depth > 10) + { + Core.Log("subcategory check depth limit (10) exceeded. Check terminated on suspicion of circular subcategory checking!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" + , Core.LogLevel.Error); return false; + } foreach (string s in value) { FilterExtensions.ConfigNodes.customSubCategory subcategory; - if (Core.Instance.subCategoriesDict.TryGetValue(s, out subcategory) && subcategory.checkFilters(part, depth + 1)) + if (Core.Instance.subCategoriesDict.TryGetValue(s, out subcategory) && subcategory.checkFilters(part, ++depth)) return true; } return false; @@ -59,47 +64,28 @@ public static bool checkCategory(AvailablePart part, string[] value) switch (part.category) { case PartCategories.Pods: - if (value.Contains("Pods", StringComparer.OrdinalIgnoreCase)) - return true; - break; + return value.Contains("Pods", StringComparer.OrdinalIgnoreCase); case PartCategories.Propulsion: - if (value.Contains("Engines", StringComparer.OrdinalIgnoreCase) && isEngine(part)) - return true; - if (value.Contains("Fuel Tanks", StringComparer.OrdinalIgnoreCase) && !isEngine(part)) - return true; - break; + if (isEngine(part)) + return value.Contains("Engines", StringComparer.OrdinalIgnoreCase); + else + return value.Contains("Fuel Tanks", StringComparer.OrdinalIgnoreCase); case PartCategories.Engine: - if (value.Contains("Engines", StringComparer.OrdinalIgnoreCase)) - return true; - break; + return value.Contains("Engines", StringComparer.OrdinalIgnoreCase); case PartCategories.FuelTank: - if (value.Contains("Fuel Tanks", StringComparer.OrdinalIgnoreCase)) - return true; - break; + return value.Contains("Fuel Tanks", StringComparer.OrdinalIgnoreCase); case PartCategories.Control: - if (value.Contains("Control", StringComparer.OrdinalIgnoreCase)) - return true; - break; + return value.Contains("Control", StringComparer.OrdinalIgnoreCase); case PartCategories.Structural: - if (value.Contains("Structural", StringComparer.OrdinalIgnoreCase)) - return true; - break; + return value.Contains("Structural", StringComparer.OrdinalIgnoreCase); case PartCategories.Aero: - if (value.Contains("Aerodynamics", StringComparer.OrdinalIgnoreCase)) - return true; - break; + return value.Contains("Aerodynamics", StringComparer.OrdinalIgnoreCase); case PartCategories.Utility: - if (value.Contains("Utility", StringComparer.OrdinalIgnoreCase)) - return true; - break; + return value.Contains("Utility", StringComparer.OrdinalIgnoreCase); case PartCategories.Science: - if (value.Contains("Science", StringComparer.OrdinalIgnoreCase)) - return true; - break; + return value.Contains("Science", StringComparer.OrdinalIgnoreCase); case PartCategories.none: - if (value.Contains("None", StringComparer.OrdinalIgnoreCase)) - return true; - break; + return value.Contains("None", StringComparer.OrdinalIgnoreCase); } return false; } @@ -127,13 +113,7 @@ public static bool checkModuleTitle(AvailablePart part, string[] values, bool co /// public static bool checkModuleName(AvailablePart part, string[] value, bool contains = true) { - if (part.partPrefab == null || part.partPrefab.Modules == null) - return false; - - if (contains) - return value.Any(s => checkModuleNameType(part, s) || part.partPrefab.Modules.PMListContains(s)); - else - return value.Any(s => !checkModuleNameType(part, s) && !part.partPrefab.Modules.PMListContains(s)); + return contains == value.Any(s => checkModuleNameType(part, s)); } /// @@ -316,7 +296,7 @@ public static bool checkModuleNameType(AvailablePart part, string value) case "ModuleWheelSuspension": return part.partPrefab.Modules.Contains(); default: - return false; + return part.partPrefab.Modules.PMListContains(value); } } @@ -340,31 +320,24 @@ public static bool checkTitle(AvailablePart part, string[] value) /// /// check the resources the part holds /// - public static bool checkResource(AvailablePart part, string[] value, bool contains = true) + public static bool checkResource(AvailablePart part, string[] values, bool contains = true) { - if (part.partPrefab == null || part.partPrefab.Resources == null) + if (part.partPrefab.Resources == null) return false; - - foreach (PartResource r in part.partPrefab.Resources) - { - if (r.maxAmount > 0 && contains == value.Contains(r.resourceName)) - return true; - } - return false; + return contains == Contains(values, part.partPrefab.Resources.list, r => r.resourceName); } /// /// check the propellants this engine uses /// - public static bool checkPropellant(AvailablePart part, string[] value, bool contains = true) + public static bool checkPropellant(AvailablePart part, string[] values, bool contains = true) { - foreach (ModuleEngines e in part.partPrefab.Modules.GetModules()) + ModuleEngines e; + for (int i = 0; i < part.partPrefab.Modules.Count; ++i ) { - foreach (Propellant p in e.propellants) - { - if (contains == value.Contains(p.name)) - return true; - } + e = part.partPrefab.Modules[i] as ModuleEngines; + if (e != null && contains == Contains(values, e.propellants, p => p.name)) + return true; } return false; } @@ -411,34 +384,20 @@ public static bool checkPath(AvailablePart part, string[] value) /// /// checks against the attach node sizes on the part /// - public static bool checkPartSize(AvailablePart part, string[] value, bool contains, ConfigNodes.Check.Equality equality) + public static bool checkPartSize(AvailablePart part, string[] values, bool contains, ConfigNodes.Check.Equality equality) { - if (part.partPrefab == null || part.partPrefab.attachNodes == null) + if (part.partPrefab.attachNodes == null) return false; if (equality == ConfigNodes.Check.Equality.Equals) - { - foreach (AttachNode node in part.partPrefab.attachNodes) - { - if (contains) - { - if (value.Contains(node.size.ToString(), StringComparer.OrdinalIgnoreCase)) - return true; - } - else - { - if (!value.Contains(node.size.ToString(), StringComparer.OrdinalIgnoreCase)) - return true; - } - } - } + return contains == Contains(values, part.partPrefab.attachNodes, n => n.size.ToString()); else // only compare against the first value here { - if (value.Length > 1) - Core.Log("Size comparisons against multiple values when not using Equals only use the first value. Value list is: {0}", string.Join(", ", value)); + if (values.Length > 1) + Core.Log("Size comparisons against multiple values when not using Equals only use the first value. Value list is: {0}", Core.LogLevel.Warn, string.Join(", ", values)); int i; - if (int.TryParse(value[0], out i)) + if (int.TryParse(values[0], out i)) { if (equality == ConfigNodes.Check.Equality.GreaterThan) { @@ -468,7 +427,7 @@ public static bool checkCrewCapacity(AvailablePart part, string[] value, ConfigN else // only compare against the first value here { if (value.Length > 1) - Core.Log("Crew comparisons against multiple values when not using Equals only use the first value. Value list is: {0}", string.Join(", ", value)); + Core.Log("Crew comparisons against multiple values when not using Equals only use the first value. Value list is: {0}", Core.LogLevel.Warn, string.Join(", ", value)); double d; if (double.TryParse(value[0], out d)) @@ -495,7 +454,7 @@ public static bool checkMass(AvailablePart part, string[] value, ConfigNodes.Che else { if (value.Length > 1) - Core.Log("Mass comparisons against multiple values when not using Equals only use the first value. Value list is: {0}", string.Join(", ", value)); + Core.Log("Mass comparisons against multiple values when not using Equals only use the first value. Value list is: {0}", Core.LogLevel.Warn, string.Join(", ", value)); double d; if (double.TryParse(value[0], out d)) @@ -519,7 +478,7 @@ public static bool checkCost(AvailablePart part, string[] value, ConfigNodes.Che else { if (value.Length > 1) - Core.Log("Cost comparisons against multiple values when not using Equals only use the first value. Value list is: {0}", string.Join(", ", value)); + Core.Log("Cost comparisons against multiple values when not using Equals only use the first value. Value list is: {0}", Core.LogLevel.Warn, string.Join(", ", value)); double d; if (double.TryParse(value[0], out d)) @@ -546,7 +505,7 @@ public static bool checkCrashTolerance(AvailablePart part, string[] value, Confi else { if (value.Length > 1) - Core.Log("Crash tolerance comparisons against multiple values when not using Equals only use the first value. Value list is: {0}", string.Join(", ", value)); + Core.Log("Crash tolerance comparisons against multiple values when not using Equals only use the first value. Value list is: {0}", Core.LogLevel.Warn, string.Join(", ", value)); float f; if (float.TryParse(value[0], out f)) @@ -573,7 +532,7 @@ public static bool checkTemperature(AvailablePart part, string[] value, ConfigNo else { if (value.Length > 1) - Core.Log("Temperature comparisons against multiple values when not using Equals only use the first value. Value list is: {0}", string.Join(", ", value)); + Core.Log("Temperature comparisons against multiple values when not using Equals only use the first value. Value list is: {0}", Core.LogLevel.Warn, string.Join(", ", value)); double d; if (double.TryParse(value[0], out d)) { @@ -589,30 +548,20 @@ public static bool checkTemperature(AvailablePart part, string[] value, ConfigNo /// /// bulkhead profiles used to id part shapes for stock editor. parts with no profiles get dumped in srf /// - public static bool checkBulkHeadProfiles(AvailablePart part, string[] value, bool contains) + public static bool checkBulkHeadProfiles(AvailablePart part, string[] values, bool contains) { if (part.bulkheadProfiles == null) - return value.Contains("srf"); - - foreach (string s in part.bulkheadProfiles.Split(',').Select(s => s.Trim())) - { - if (contains == value.Contains(s, StringComparer.OrdinalIgnoreCase)) - return true; - } - return false; + return values.Contains("srf"); + + return contains == Contains(values, part.bulkheadProfiles.Split(',')); } - public static bool checkTags(AvailablePart part, string[] value, bool contains) + public static bool checkTags(AvailablePart part, string[] values, bool contains) { if (string.IsNullOrEmpty(part.tags)) return false; - foreach (string s in part.tags.Split(new char[4] { ' ', ',', '|', ';' }, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim()).ToArray()) - { - if (contains == value.Contains(s)) - return true; - } - return false; + return contains == Contains(values, part.tags.Split(new char[4] { ' ', ',', '|', ';' }, StringSplitOptions.RemoveEmptyEntries)); } /// @@ -673,5 +622,35 @@ public static bool isAdapter(AvailablePart part) return false; return part.partPrefab.attachNodes[0].size != part.partPrefab.attachNodes[1].size; } + + public static bool Contains(string[] CheckParams, IEnumerable partParams) + { + foreach(string s in partParams) + { + if (CheckParams.Contains(s.Trim(), StringComparer.OrdinalIgnoreCase)) + return true; + } + return false; + } + + public static bool Contains(string[] CheckParams, IEnumerable partParams, Func ToStringFunc) + { + foreach (T t in partParams) + { + if (CheckParams.Contains(ToStringFunc(t).Trim(), StringComparer.OrdinalIgnoreCase)) + return true; + } + return false; + } + + public static bool Contains(string[] CheckParams, IEnumerable partParams, Func ToStringFunc, Func selectorFunc) + { + foreach (T t in partParams) + { + if (selectorFunc(t) && CheckParams.Contains(ToStringFunc(t).Trim(), StringComparer.OrdinalIgnoreCase)) + return true; + } + return false; + } } } diff --git a/GameData/000_FilterExtensions Configs/SubCategories_Control.cfg b/GameData/000_FilterExtensions Configs/SubCategories_Control.cfg index b93ce2e5..e198526f 100644 --- a/GameData/000_FilterExtensions Configs/SubCategories_Control.cfg +++ b/GameData/000_FilterExtensions Configs/SubCategories_Control.cfg @@ -88,13 +88,19 @@ SUBCATEGORY CHECK { type = moduleName - value = ModuleRCS, ModuleRCSFX + value = ModuleRCS } CHECK { type = moduleName value = ModuleCommand } + CHECK + { + type = moduleName + value = MomentumDischargeThruster + invert = true + } } } SUBCATEGORY @@ -106,12 +112,12 @@ SUBCATEGORY CHECK { type = moduleName - value = ModuleRCS, ModuleRCSFX + value = ModuleRCS } CHECK { type = moduleName - value = ModuleCommand + value = ModuleCommand, MomentumDischargeThruster invert = true } } diff --git a/GameData/000_FilterExtensions/FilterExtensions.dll b/GameData/000_FilterExtensions/FilterExtensions.dll index 2067db5554a27f8af0c81fb7fc741ff2f89a2424..c5c494e7bf3af57ceba26003d3e58488e5ac0133 100644 GIT binary patch literal 62464 zcmcG1d3;sH+5en#?mc(Sa&yDY3JF`hWI;mMK}gs^_OK}`T#^e!LQXt4K|&ygYF*Ka zBDJWkqPFf@>f5T-7Pr;~t!wK_ajCUdty;B#2q9buUwk;`#i%1s24pa0e&9d!CLME!S(mHwrk3MCT$R-@cT zilE%N)Df9~^_mD~(!LE|E`&FY&kKBR8a}ckzO4iJ-G2o@8n;!+4UGTFg;+PzPS{Pr zST@MW4gFB2JFp(ZHPVi^T3}>ZAv5>ECk}^vf^T|XiV&Alzv7Q%(}i2yvsH*|_X;7Y zob-PJgY<3^vT}%S?BoatG)zq32ngtBN#Fq4+e@v?sqGXgyl%hJw6w;&lNa`5?5YP=9q;@L;BntUV5TJRA0C9)_ zPDMBqgeXJ+HHs{zVGniE@wXtjDp!;b2_CLjV=m#3-{Y|(8z-5Fv{l*`63od zFhgd@AMzcjYM>G#-%vtS)_@WUzPSV+Djbe7Lmu>kC*%patO}shJYRqPwH`8~=#Hu= z2B(VqRF7t%R$mkyR3+m*ey929OEZD-_xBQs=@tgYUt!R+YR}WGYGBnKk5z+bz%x9Y zQ$015V{buX6dmiY83e2=i4_6cmBjL^^7O(e6wa*5)r)1sqZe?*urEkeF!6c}na92Y zloHij$Ow_lN{@YGinBmf%1T!%mXqL~KfrsCW?3{_GDH&%Wx)XZk zuUehT8FJNRBP$GtnZSgGO$xbS&LBWl%|LswCfZetzClVF+rqkl*^L#%Z$WMSkziG! z?v>-|<&iX_u%M>5V0BQD<#@ePNp{&3XQFGMK_ORlmdl!t64=gEYn5^qplvQm&lA>( zNUmQA2^O0p>2^lxxZ&yotNfUNmMf9@RmgR7C4eV2Go&rga~sczkZ_ z=ZGBX4!i8{pv=O7vP_sfNKI40;N~5GA#_^dDfC$fk+Qo63WbCspLH8h*5ci;5JW5X zS+{`3N&~b6_Hz*=N3;~t#WKpW9ubv-=DZMZi-IpiH|B;G9;FL(I=lf9f|)ebGUhjH zw92$8W(Ff!RYhLkeyAl+vBVEa4w_xQg4J0*TDsn-JXyA*Iw+rH5~?aAl~3mz(WT(5 z)+3czOJ%g6(y*3+s7DEoZd$-xnfS;;83*hCtZwAZ{`_#**5u>#!@ts`;e z(j?^Cw@|I?vvgDW5}5w%OSlTGm6Qhyriocyq(?DhP0V3_>}L<_fST4s!hpYK*k?dt zu&%B`&T60Ti9%1!DvuuF2)wB#*gNTO!CITq5deBL3TV{>l!fcY8}?a_(uLiTuvs-Q zULB0h6NwPloA;hX0ORb8WweDbp-1rMXWWDp##cW!b6chk{0zy^$BSt zET&lbh-`48X`O=H39Rz6&(yL>4A!Yg!O90&!_b?pc%q?6nWL%kaY@Yxct|fi>|#o- z@H<+89wkvtr4?L@B#~C=ZrR>!muzdco7B!Mu57Ebt34Ug-Jv9 zNMLyrXo|oxB``qZ41^01u0psS;nxVyBD{s5VK9mist{%%tU*X1oR4q~!qW&x5GH&G zU`SzgTIed{LGRt#kA5N3FYiaci0D;4eTQH-6I-yp_qQU@H=35!ZZm=nqbcWvAqGQOKlG8Ts7r^5 zI1PABE~EBe$V#mR!EaXXlVU`nyj3+=yiov_erE#avooejV|xM94d<|GK%OhwjA#I3GKqwZ1E~OU1D-W+9?8yg9gCpD)ZT(R zQ|>G75kp=Pysv<>O%|!rfUf~7#D7K&t@u3c4U43&n=6|utzaG2X&NGFKkKSxa}2hi zb%WAPUR|zigtVx2I`upb1b9V8O=M@tZUouZaW_$ttc$r~vL-*A;EhNDN>(9|r#UE1 z6xl_T6Y11FJ*ChQ-gLuHHWQnW(n}9w=o#n;v}=Xabe_c^>sm_yOez*z_nUNbid4DIsXn zBhn|~c1p;y>Cv~SUs6K0O^?1g9;JjFn;v}=en$zpHa+?#yh;fnn;v}={z?gXHa+_G z;1`q-w&~GVDvuip`8GZJCX`Xa0Gl3tis~f;M1CX|W$E&91cZqWfg>PbN=gonfH2u1 zaOAS2f7<{RgMT}N9`5KYdSHRZ(rQ)~_dthTl^^Q8^wgtmP(=15(~YJcJ(2Q67cg81 z7;WU}GC-Pfa9PL!mrtH|?_s%t0SHB**=E#2x_um)YPBN>6s59dFHJ_c6r=IB&O4bOC5J%H%LcY z!}M<0SQoa2`>h1B*Mw69>=O4|9Uz8W@Gap9`{2KPhZh?7x6{_)1WJlMCna{+obV%( z8$K$XR>=cI5en)uhz;LRE^EXJ}>$u6(fK|x`G^I5lP_@Ji1@?!7p`g8!=qx>YKD%l}C@YjL zy}EEtC`XoIr-MP~GoB0bqepfc677!{E`LfO_bbj&;qGy$)aPs*!m zLMlP>o)5Y+3rF89s~VW93MOK+2@^pFK8c^9AnHv%C#hbD$W5R~&7G!q*P}W`%k%J& zPW1pBrr!o0km+H;gY{SC_hCiSg`hfSft33aDPhk76v);Go{X8e2wc5HV!E{(XxJO_ zPW&gj80KKY5j>?n;FKHt8Gjfv+a8Oy*z*9Q7ZWL<>JH#A7lzeeT^uqQ68X zlP*Ug_ENBi0<5Vt-(&+%b8=djAYaYm5KuDVG`RFBYfb6C0 zP+n*NOHW5qRiQ8}Q8b>Ojwxn}?LO+53+UKb%}MZ`bhVGt5eq5QB%mTy{D zBZ;pc0=zZx@UA2n^6){^PO1Ql;W6`R>e_3-8$}0Hg*>UMy#?@nNE5kgZ&m`on3f61?v}zh2 z$Eux4bC0bW`RBjX&=1u9VldKr^+UAZkT-7V;CeJpVJuj6(7qA*y*w9#-Yh*24dG@; zUau5?wdv(iWFJ}Oce)=JfpRvwy*}AQY79?Hmpbf{O>?JBORus@^3Yn&x0Ps>GEA@> z(lDJyV?d_0mqlain0;rZpkt z=Ox1;+g}+82dW0cOlP4f2JXE`l0K$Kc^!t7Q;0 z8lEUdyNYHdNy(Zv+-FtsfK7JK+~Z z^hSRIOzDl6EC*fB&`N_X<;}pP$wE2iM2r&5WCNP-&2!27j$B;FXwh4Uk8D8IP?at( zkg?*Wr$T9N1(Re^2~I&UA5sCGB2>C82vbR>LaC?-hz$|_lTLs_VNdTp78#P-)2CO7 zM&C}1U&GY^qvu#;aFP)QrC|(OgjPinoo5YUi51TfnbXVYN+Pgo?xThYE?)wQm0AN2wv+`Gn zsY^C0n2xu84N^@}2Dg(?t(%n@NofTM1NEMPdg)KqJJ9%#{7WP0RU2G$HKtxh1{{Ht zOqB9p%W{^s?-{8= zjpj0!Vp{NixEW6r9WrXl?5|L9AzuLE(zfRWSohpe~&SNAZ#cH-iT} z(ccnFS_wg~O7qQ^XpH7}dg3re>pA)qMH@K!G)1SUqSUcEjiH||xe;ZCSscaK z@l`jdXt94M?ZEWJvlL}*PdrD_c|?sqk7(s0olZ63_N@TTuwGO&EJ&cOO3}#1z$l0k z9&ciC@)Mf47f1y^2{bzuTU0_{Scpt$lY^tTk|IAQhM1`X|ilW^zN1a zt!!fXk7dtKZyv97l^~^BCrOw`zo&*z>Ny#O;oQ2Ho|!1dEg;UMLBn5!S$fuhFF*PR zWUf9f`Vt;J>p@|w+fLKyWsrJ_#PpsfClMw?B@&70`S>f4vvIr!CuG(u$ZNey1yC(~ zcvM*&g(pF0%Le?ldX_{8mKyie(bvEneH}nApYTBwR@9S_5idEkQEf*+w=bZQFJ6b8 zcl3|IcM=2J&M#0_DaJN>l-Pa^Hv3@!>kUGGix}JZ=$k+%LWjiv!uJ;V{N}`)z-iib zUKE72#(&l+)Q|$iDondENj)`-`y>ZPV~)9j{<6lyPbk9|c(3iTPc+=*54p^sg3eq-9F z5=ukCX!I|rwesf$y;MkqtCxCE(94<612>PX%`qOrgL?Em-m93sSHGXSuW zdmj{5cxC!lVwwE_H2FG)%fit63(ytpL&JTedsp(I2kEBuH>3rydHIO=eJ;x2*JsY9zeZ=P_Obu%;>);O}8&VZ*fP-8GUgd6mJ%P zjeLIH`ZwU9(WQE%(1Jzqmm4~!`j?3L^+M|_Jaa|=w18fi$sW{;Gf7zzLm5$2 z=E#e|6=jguRpze^+m}PE!nD`MB9#Uo4UDFfaDVFEBy1t9g(##N8*?0456{)Dd!a$q zu7co^9Otx(4zYh5sr2%A^rD_}9uHY!E0svEKDw)yhuk*asZ755=(Z;$u_B}`OJeyr zQjcDaiu_e&dh{}mM0zafXEzMGs~T^K;ALBXl~w?+sh=ztOIZxQqaRFT)Q#JE*p~q( z&GJLMUm(CriuDKygmVzCK)|MoUjtZ*XFUQROBnVB66yN9dqA%F1NLG1vB>c#Rh}nDDm_$(yoZg5ni(P+X!6W= zoK7yX%ZTno&w-KV&rqZzgve(y{ieQ?I8gC16RVz?z?RJ)Ek%FR3)aN{^MDY;z;6uq zPrMrOW8t1|@11gdHsW|Amg6?!MJm1zal8}D z^m`C5QSo;WFIDkKF76{$ydLpED&CBEnNJ~?5aL(JLxcnra+HvuLb5|ZvJ^6okZgsV zLP(B6E+iyZA$JiHQpnSUWh|?_x332-6Z9<%m zDGmd1dS*HyPS>y;CLT(|XULmg#(x8wp37M{t$|4{$ z6takrnF?tmWR^lMBV@KhenrR}g&ZYhu0pUgZ7-XrkWqxpS4cAm9Aqxmus*pB9mMP>~LK+qF7$M6Q@(Cd;7|D?c4IQcB zqZa?fBKRDhSu0`0+z7Oq9EUIg0ee1iGQwtr9S9dA{1D+zghL3hcj8S1I3xmgR}4U? zKp2lO7lGcxIvs&Nb=i$@4ZaR_q|RwJ|^Y)7~V;cA52 z5q^d6JA|VMA0y}nj4;A5gs}*-5mq5=Lg+%c5aB9>+YlZ=cpBl42p=J6Ft~XLLlMRx z%tBa+fHyY8HiQch_9NVia6iIR2uBe9hQM$AqQizD)FI47Sb?ws;Y@_{5q^Mh3&Mn- z1L$ct8t@Xa`lb=!e)T25zv)XT&m;`aBn-(U49z4A%OniXBvfP)pbCBEh-MN-WD>9{ z_RUh2Nr21Smjhd*zJ!sP1T4^fIYwm?YBLF=GYNH>1UT${3muzD7?(*HpGm+x>08Fc zOv0p0!sJZCluQD40(}denn{?JNvO{xG-MK{XA)*)5@u!+W@Qp)XAHe?buW)e1K z5?V3|r)Ltd{Pb;pYbIe!CZR2pU}X~8GYMy866_3u5$zoxFR z5GEe~sYL^;F>iWY5C&_ye7~kU8};;HkmOg2-E2NzVGOy ziXN@+h>-NxQ9VXpNtQ2S{{yJOFC854@yAR? zWWRR@REs~^@mDW#7uMl5k)$AIO_ukV`4UxFgbMv;^h{J#QBdhF=)>n>zLy=ofXCs( zE}hzV3EGJEsy3=4Z#2?XQ>xTgl{QZDakgF!08wwd19hu`~ARV2mfDWqZ0ecCW+~?!B%m< zxoQdweaE2xEXJLKzO@+T=px*!Q(;L7lDMjz`sF;-4S($$#tgEsitH#$3dECFb;=2X1D|+`Z z5+6Q0A1+gVA{6tBo5P=h!FNT6Q-ShRGgZhXdh}8hSA$Q^_Rv#}o3#tY(5s?V_?lw2 z>}pAyOf-?eljZ2cUQNLR7Tx8;O{E zhIkY$hsPgEyaJJtfn<@^0bk}ywQ%fV8fryRdSPvz&a0}u0bOm40Ev#`aqr05MA@QU zXi!R?og_|LG7R~vs5VgvR;!8tm0M6dwlB|X{dv+DIM4CQobY`<)Q43B4z>$d8>IJptl_P#{HC|#F3*69+Q|7?=ut6M79vMDoBFPybFbB@Zr} z>I{DUO@6@0ji@P=^`cEG`EC^&Eox?^!V7DFO zPo5L&AS$jlNqRj>rDS|w#nnK3e-^%nGU&~L%^QuG>p@6JPc%={yG z5@Rqj(d}e1lk_8f=;YEn9wx2^&PGZ25*@k7yi=Vg;8{m?9#wS`i_RaRo6OG9k+?>i zjE-ST01Nd7Rf1DAKYd_Xm8@aD-VMEU@n{>?1geJWn29>ZP#tfoI*7?+R{5nEjf%v1 znE8Wor=4$6RjGEC;2shlKYcrjdraAC`n?>OmJsetoY7kj%E^8Z;Eeif-jSCm1Cp00 z_|}E$q)+HD+59o*9r|oBsM;CFZkS9t{Wya8xY;3a1O)8!BnL-8z&=kBI08bOL*Pi8 zPA}q_(H-bCyxtqV!$GhLqD|CS=i`ZW+nLwtziM+cxcmI7&8;99_I6rmB4|b057+#Z zSmlps+|EqNkN+K;fN%Xt6wfz(>#uU&iFA6ig!qiqFK!Tt1WzYP*)NCe;~_iw`)ZCF z@{N5dy8JBzk{a`wN@bl&Oe8&GF_{SO9bzK7J{}MNh2NoE6T%C6iU1eE_&yVm^`kXl(Pq?60YjwJX{#x z1rMkzVxl6!TKV~vEVd=w%$lM6rbTtBWa0bfnjD2RP@CXF$?fkvs!5hj1!1>69qHBO zn9wv7)_MSb=|JJI4AOl`&9!RyqNGZAEAUTvNHew*GqM`SmFL7U^PN5kv?-%|(dW?a zNoY5ILSb{hKlOc%mp^(6q)YgJ6mBcp!rxEHqNMs!JNQQ#QZ@0HK%>v*mszUk8uHEh zVY03Ee&~&1{~Rzn1D%rofnOEYTk0Q~Iu*60r^-F2F5scV)93d?w(D{((rWDwpuwv= zY}LK|?Ka+dj-oWH9>A!Z;Nu@RaPh{Xx>91;=+~9`_!kn~brBzb+?(yH3;OuS5whKM z`ofKq<;r#bD)p{N(l$)%#Cx!jN?UzVOifT0WhCUH4vNr^gz(Ul$*)|d_gYX9U5`El z-snv9Lq$@@ZRdNa^T3k&Z6NtN=~P|*^35#jI=TI!dwks`#1!<2-hBZw(QEdzg6JkU z0!^z24Iy5^Q^T~T_~q(J@twM)wIe>^egJ*IPAWw2z7R07^9;bM0zH4{`9v(>w1P^- z)KibZZ|a3^ z>Rc(Kzp5C&z(z9CSEnpxaUK2g8F#B+iupRk^rwrNIh28_NFFQ-mEx9_;d_9GX|UW#~uwG1%rcdziZLL*U- zk5%v2XkjqDh5V*owV&m(@ZBliAKUpo)R@-fK))sv1DZ?^y_;ZKlmD5~ zEy$;q>>?l6lupNKlE0#AxtytRI?^-YjW)~>e|1o1@a&|LJn&vtK$x2Rv|<#^;q+Ro zAPEE_MVQnizgxj?QKZa}!PXidn|_3%SR<{~;DzVq_&S5c4G+n2I$2M(qh}pNlolW7 zPSiZ>B;>PB2EcDzr7^~mjP%`e00UKze&qc80ey50vQ*DxZDbqV(}5iPn)G8N(;SrD zOC+X8&w`c38+5ACTxp~rzrZ>LrSLnlX@$0@6^j0qg+87vlt?`UoI>m6ueSBTjgY)g zBzcL%bcgpF1voM~U=JJGcX9Dpr$V$ybT!KI@NbQ!FFmQ>8x!KCm&9oJMVh0J&hs5Z zIe;Tmu93lCaOgXra4zY);b@N$?9})tTWC#BuGE)-Ej1=`+_uVJ>C)+*CoM6;zsE@9 zPkMhI#;bw!{$msy_M}`W`jYVz>YmfkI%_Qeew{Ma-w|saNIR+C)Z#;V{!V$YcKP{3 z-~dk~Y^El_&k%`EsS0Zhj6s-aFD=l;_+8P=EYJbWy=nBj3ZtCV*(Bn6WW!g~?3Y?iK&lySMyv{Sd}xHF z$&}vYZ}>1MU0{oRplQcp)^RI)ZODsF28i%5O5ho6ps2}9AuKxiy7B`EByB`e&15X*;xwxUt&-X(t%c<7uJ^I$2&)xce0q)l(7jRF7Z z(9>0A2daEzssBB^j@~Dt+FwK%j(|}T=y`Djf#gAZ_#FLa#2XO22xSP+cXk5NM$S)V z_z-X~#`Io1(LU8OQ%u(;Yo?gTa3#YSpkLV926V`!$nF<^K-?4y^jdtUbrl577Kil* z^eXWh;-)BZ*J4Sb*L6&>-8)%}hQiiuPJk0P<439A^$|IgJ3>W56-WWrR zDd#hMH1EbdQ~U`qB8)J_BMj{@)p8@lLkvF$jEJm!E#DN!5b-|>yi$msX#+IHuLe-wCESXyIi43G$`poIF+3EZUU~uJ?9pBa z^kXcjuLfeMvc)Whr!i~;Eav{n78fHvNUSUzUx>O2i4(8!p~ia)Cu?;|!VyKadRUuZ zL}eZ>+JMn~A23_g7FYU;)p(s=jMu%iGXVYK7sZtNA>w($D4{Y7OCHcSYvVcI27C!29}cMRF%^BPAsL7+FwfjaChmC zO8w$Nq-Kj3OR2`M0mqB%ffWAlpr=;cpqf#_(N+Uoi|1rjkc6oXBtyLtN*8-p=qGhF3BC8N(+T z9%cABL;n!sFK0N8VLiiD4BHr<%kcXQ?_hX{;WG^1WC#}(<@jLXvPBWYT81YwJY#6{ z&}{J?hI<+QnBn~l4>Nq7;pYtf!-&6(;R!Hzrg(HX>B(V+Uk#@@8?2ytcYFouUQY$- z)ekCa^&xCY{9@j5q)Ry?yd$#3a6nU7BTfN4Zv^G)s`QRH(V!W6qH!gb;tKJ2~xexWmaiayCohJ21`?VY!gp0wi33%ExN?-7#ogx=oZ`gHC7=OG1d(Usg$w9C~c?0{>4}iRxwID4kPOp zXW<&RuQMiPIa?fMOv-W&UYSkF`CajLTE6qpACz{^aa88{*j*5I z%?QFS6@O#wbBwneXGtG3HXG};8>8_l`lZ4+2so4BX~zE`zSX!FaJTUQ;7^PP0q-{+ z0esasj1ig^KGhWxJ>ktR)12!1O04Xi?Yb9mKEow|4t=@n0nk@7TnDI$2V7Lw5!ZuQ zy`%0DoX>1EdI8^dp9A=%o9fCp363<+2W76gTMLPJWUR+2^E~r5ZDsG}41dV*Ck%he z@IHo*GJJyJ9~d5C_!h(W8Gg+0bB13r)IC(Phhc=_AchqTs~JuJbR-EI=YxNWhu|zg zO+1BEP5jwIZ8W^piot+Od$)KGqP^eoF4RNfLhn+n2G@E|2E5g~9`FJ0X22)CX97OQ z@FVY8i0eM020^U&ckE`%(h_CGZH{$63z(OM=1_vI*SkDeDH6mge;t{c) z;Ux~J<$~rmmzM7pD^Y2oU^#q!$Z`%KL7?Q2`&Z1>Y6*=Yl>dfVv5Id zAM=~ybilBe z@QdFUDeOyaHn6=4bL$H*^RHG|SYHb4MuiR5SD|IMD{O?m1{kf&Bxj?(4mZiaQdnGX z0YvPF!sbMf;2Dy&4?82b%gA^KhqQs>fWo#QZJ@YSVcXr4v_ax$3Omm|4cPq(+v}dCm5E0b_9OQqV9!X5N4i`r z$I2qxzFHeBywwhNnl?o2mYBH5y-7PxlparM`@}$Riu@BK_AB3A`dIPWREfRfyH_74s;5cp18|NP&(ssPM;QKx^zq__ z2Ez7vo7tt@)UH(NZWusub8@y!u!T!S3jxgt1=IL{SV`#;m?igJbB4s4zn!`Loy$iGj_ z7ndsRcZ~g2aUS)rLfSEfz0X)^HkZk5m@g(sOdJSMDZf```~RCaVhAf;)nDTMO0zI62fj{PTATMg=fAj z^RI!EjT1$=!rZ~l#v-v!VdcSIW2v}VVaEs0GaAK93abxZVyqD7lYI7#eSAk$ibtr5EyN^E=ZM&ndbxJY6b0b3{LD(tG@9Yz!0?vQDBB41q0RoK12 zHi{hzdj$Df#7hc$4p^&Lyhi4G6P%VfRblS~J43W8>=>|wct&CVtZR%;vEUS$FF)&l zj5EckQzbSe>yXhc4l8U7upY7LG?_LP*e>z5!sY@yM{HXw(@p_)p2%G%u`O9Q8W)On z3OgIv#p3%4yEy9!<5KZUg?%5`9`TgIt_60P_*h}L0lQqxjS2ki6L$mKD@tio1MFd7 zSBSj|do}ABW1sjaiM?uEDV8@$&R4VkW?UsYxX<>8jl&LR|42Noup5TGmVK=#<(}9h z+J}$IxlSD7eCK+}ULO#TDU9s(0r9NDXnnX|ysR)`_A2pHakawE%w7ZRMumM3X$Qq4660PvD0(-s zoWLqvKNDpw4p!~DTdbBCe4Ej(pNmTsMt$}RG3s>UlzsLKv5B#B#SgPLA#L4eE=Am$ z{h5BRsBa}~pLisDg6lrvs{P7zZsJ~_@G$Lvg|?+`mx8_tgsEh9ug;V?d0hk z%zapRwosY7*q%KiUOGc!ujedwJtFdL!p;@%=8Oh*N`kO`;`5w`^hZUoldxU*d4_#> zBloVYgh>nbsA%9a_lU%CWuZq!Dd*cGUK~*t`i-bl*hj#AD`qLIuCgrjm2bseAxdaHs-0c!@?^uF=60m z`e9MQGe_3L(T3wdcic3cDBB z3!;SQiY)U*F;rsWcNOKX7sbxBwBL*GsmJ=oH zLB%;1KVtEUc$_h+VTJLE_%w;_6R(OdB_{42@x1$0aZX2S{9Y4#B_<+O2XkK&Pb+L> z)lE1t*`3CDMEq5yZLS)i9YGPAD9Qc5!NJU5!I1v5D_x8PG{jpbl_OKfa_U5eCxnSE zq0A*=dcBi#b8~f3&-@D*rlvzi0J_AhS-H7xv7Spioy)g49(IvD zogD8kNqSwf%xzpImF5x`a*y?L-tREHh~Z=fb;$62jz5;9JCr9`hNqbRd@^o`Cz;~K z`I;sql>H{*Mx4`Y;sC>H55*Nn@iw#KQmhQ z|AUgM(P?8QMbiH>EanlZ;IT->4N?1z6qlIF^zLEQI;n?$W6hEMBcYrZCo<0f1d^EWv*ua$*eO{&(|^~eSS$hKw7E`nroz)Gs`S)Fl_axlue2vWC?-m}g^_W|(;vz*(@U0dIm={Sl2RF^l4V@Z zWjP5V)3||JU6>l*7 z3&W2Y{)?feQL2w&h+z@n8ZnsTBN)~)oCvtWXaL-Y+gXB38OF5R!ZkQgB1%mAY4{-S z4t^2taJ6WUg}Yqy#IxaE*BDNn!f>8=C49U#MZ6u}>zX1y2>;L()4mAb;F^ilgRU;E zF#jIFviuiayHLVANUh2L05EKPf^wF-zCf-8`FDseZDqdZ?$XxgN8Ed~j{FMu0xn^U zI6Hrud!BFy=euLt#rZXm>WciO?&adP{FwU`abNyc_Y_f<-;LDYC-ct-omSE7 zwDCn zZjL{zJvIPm9@-0lUD{g%_L@HN=K((g{KtSBP3oD?bRVBr?PY1HKM$JJ1NWPIS>~6u zVUdT;!D3wGu=z2c@$Kan?d7)Iz_r`}%Gbz6`Y=ySk5pp>NuIsjZ?|#3%@Zd^3O%=R zU$tm-LUuQ|qD$KyneF+Pc1z?`&kdk70WNp7d3^eh^{zm|t%@N>y-7`X8Qt+1NFw5B@Ru&w@P1EFDf=vZ~_tffV z75vjPQNJz!nCC&rcA1!`?+4F=EL*MqlLD9br|3f;;Li%e-WRz1!`$B2l+14pSmu2j z^ePT`WjWX>t#yuy9BIitEhWy*5qbYTV^bbYKnR49DQnck&^i;nZ{;+`kH+UD)j zh7>jWc4HK5Ur@U*|2*Fm9+7;+x4L(uoUhGNZ9>uYzEW*^(N_04+=_hm3WE%H>Ax@f zx35S)QuH`)rWv=|^}K(uenaug{+V3bPxU)Nzn?Yj zUj2dMFa7uGzh(FmU`+dSaWHTO$`1$L2Hb~VBP4hZ!}}RN!f-jmDJXNFc!A?17(NJ1 z!)}acO)XQ3^eghe_B{(-8Xb5XsRvzy_3DxdfoJuGlKQ|Kdc5S+z{k2>(iHd?r}~T= zN=^@ij9W{#2T1;&K#}oW$p_HYmrKqG(2V$AU@%h#8=se40g73Qd1nMluSPj}r4Q+~ z#@9tZ4%8Z-0$uVNVgYgG#8emmwxCvMH^Q7wb`mk{rMpLYM{ZGSy}^KB8tyg zSo%i5XPjF47r>^{PXM=|kc!o!x*djNL5fZXU-L zandldY-@+zm_1SdBKP6!z07$v!xr%dQmK3+r$s!0(qh_&!*X+CTIul8oWbV%=2xOt zzioI!&JE0e8^c=t9^CPaFdqwV&#BeFGSADYHOa!X2;GCY?jeZO3lWcazMnHfr9MBL zX8qfM6V0-U11SI8ii0^z&F|r^=x*-G7$o^jzn^QlTia9d80gg7kD%3Wm)DC=Io_o`S+UI9%v$uNN+mnojL}?SxL8k`#Y2Vra)TUSDn6??l-n%l zqfYZNU#E2>W{f-T3F8IUcACW><&F@I$Av>3Jj$ia`JnJ&H`c*D5f{5Y(=vA~Irm=w@xyh?7ERn3G1FhB9Z3XvWI2V8lML%cNOw0mGZMr$+o5 zsk9p2tesbRG_=Q@Pz2euBSlNyd(2lV-w8ddy;b>XXbiXIFqhxKc4-PzX6hGJ4b2Pc zq_Ky^535$-u9>7-z)~$>sk~wooE9(EOgG>J;Rmc|%1oxr1x1HfvfSmx-Thri-NC87 zoO+Jaiso$OSl^UkD*swE1n0ujwv^Y zmk`I!6A))sfOm;M1Kus(2fRmo40ylz9Pp6%0`L(yieB-UaO=8woa;J_ccgW^TR`=` zz-7L~a=r#Rv&Bau3jTjFUDK!)Ga2Gr0>l?+#IsKOH%i!vIi!mV7~anCUO>pHQ?54v zb=;h-1kb;8qJITSIlY6S4Q4n}oGsqW8;N(jwg7gEmjUZIK3OCXPl&^SC1Mp|71L*k z3lYBvC5*(0HRW2vut^-qtLHKs7_MU&W7x}Z7sG2AUdQkd!v`52W%vd|p^=0d!*Yg$ z8P+pwU^qkDY@F{|$MIf<*D|~w^r3-69Di6NIgfH&=u~EmVUxbu@P&49{A`BTGklQY z!wlbG_!dJA=eI&L7!GDQlwkwI84TAkj4^Ct*voJi!?PJ)%kX-JhZsK0@F>H#7z!8H z#ju>=P=@skXE1DHcs9f9845S$DrZ>Fa2>;5hSxGY#PBFXVKP6%dWP#5Y968wX4t?m z#_$kB;pJQmhk3)`tmpVThP@20Wq63;QHBjZ$`xa{i{W()A7uE3r2DToh4vuBbphh< zWq2*aLky2H6hTUDU>IY#i{W()A7uCjLoJIq2QzG77-P7L;dKljWGJ$Uvz+0&Y|@z+ z$9p-xi{saF{5p<5$na<$lpSjyq4i1hDRBS z2=g;MR6y~g3`HTw8Hyt2VOTHWz+3Th>pF(lGCag^pZjU|B-1v}H(xa0G2b&kGEGmJ zXSHXm=YG!+??v7}d2@V|d@a74d>8s3_J8F6r{4&a1TGA`7#JF?42}t|3T_Kt61+D1 z_UtdSBRRuznsRpK?8(`m^HR>IIg#8+xifRu}}wH+CH+ZuNcGOZst#9^&0(p%_BHBP>408iw7pi(n9^k@$Mm^*Ugo z>rKERu0I1-xc&+_27av&UomHvo9JQJUQLK~<_`cjnnY=1c&7P7PiB^{ zc;`YidWmNp!} z!RR*)JvIRGDBdp6@OwZ7h*#omISp322=QvzYz;TpC5Vs2&Ax`)=z)lj;`jAx8P=gB zU5sW}j}<@@4Gd@CeQRAzXE+l->8OcWfV!BCdNlmMz#|Z!hkA6pQ%7&ETm`6$t5Jg{ zu3>mHzVg?xJ`%h|)Pa60!`pF3tz*R`cn5BwHQdLHNBk}^5%He_>bP5(4EUZn0q_HS zAu~ighm~N6ctN{ZA0mFQeGl*@Z8PYvXkVcRL!uC^sSxM6E^*!J8t-1^-t7LZ+hqpL z8gq$xx_PVlmiZ4e*E7{~r|0LM_dUhl`Q8?9yZ1@&>)wBPdwiGs_WQ#AiT)=4Fa2-$ z4+ef2cqs5h;HkjIpcOnXcvbMJ><_X}%sDyd7dgMqc|GTYoUe1t-0a-ZxsAE&axclf zC-=GBk)fHP1))G*IIkpcWZvp^^plsaUNQ~oe>VYvk|qB%fgf||_lFnw`~CHP1C8D{ zrgJBEl3Nq6cnP5dhx&jV2JJn+TYuA) z1Kh102)ebK5bi*@8{s~LLkPb?IE?Td!b=E85Z*?358)$(&k?>v(6iv5B4i`vBNQW) zBUB(%BaB9vfG`zdCc=D#B?ymt-P%e#PeE9ZunD0Jp#xz%LNCI(2)hw3L%0&*hX^+y z+=6fy!p{-zM|cR~F@&cPUO;#S;V8m82=60&g78m-V+gKnx8_I4MTj7jA`C%@B8)^B zgD?r99$_}Z0)%A!VZM*Ae@hI3Bq24{n?e;?-4%F9*%yl)RyPu zAh@;LauRrM)&ri+`dQxVFlIU0S>AU=v$sJTYvyPnsm@atTFsrU@u^~VOKV5mp0%wb z-j-;w+7ct1TU$j_XQIQ}G9%Uz-)Pxg{ds0sZ5vuPF0z{A3DKmumUp$slgRY=rr6dN ztJ4;V&h<_?^E%>N#Eebxrp*#^j#+1P##&oCx+G~y%#Lk|L!gA1VcGG1HH!t-#s%@M z@m2xO4%r6T0?`=n=-|&~Qf=v%edLOc7Oo7R&QLVL#jqTz6xs5|l+a>Ub4v&Q*VZkG zCd+PZSuYy964Z{x>ran2b%=Q+e@AS6YkVC}-e$B~ZE-@xthUZAVnrJoHmhx8OIutl zwA!pxuQVhQ@h$6HyJ}`MZi?CMX{`|(;~i_AK3#;)5Q$6zakMm9ZOPOmGQ(Ur)|(Sp8gfuXFTDHf*@2D+h!ALrtDYnEm$Cs=6#HLsxHOeF{D`G;-iFeG6B{t1~Zi^{S zR_f`go7b+L9&6eR9h=<}Z*3M+oNn)*BD=glow~h0H8}?TlhF13iGBLCe{!-*`z56} zM>x_8r5~&kNl^q3esUU62PMlDTVt)A@wIEkqWGDjvBScA#!M6q&COz29HZGp>Q73a zaFn7?#Y!#u&{*Bt+grPm0>bA}ev8Ikr8&iLS)!K|ld#qzqaw!rCSOo!Fai&_Y<(pz{VvZe$sj)dugGV!n?LG}_5^++L z@;Ye>rPR(uJb`gbDN7%M!!aveX^109nBvscZx}d5*3>^Oy_RoIb!zCB>QpEwqFRz( zoaiIp2H2AIu$=Rt2Vy1Gb}SzPGlrj-ARXNK)XsShGDF&MUPaQ45KT@DUE79ML=ucG zi?^v&lFLsnRPY|ikT=F@akArEtgZ3JWKmtv5xZjv^n}YuDb);X%X%vTeyMH=u?#B> z6`UB^7^kI=S9h+d1ys%rU4a@%XCxsS&crgq(~}o6wi`5eXTnV&&1!=BNM~bad;_m) zDBMYqc5_Km$0;{fS@ecXS&sfrGRsn?cP&hx0tx`P1c#KTH2beGerXylNMM2XzhYnXB&Fcp5EEf0Uci7 zk)()CEzR*2ZSAm8s4w0un&ay`H&U4m&09&oo1s&@HqKtZFln2h0kO_jRGm^xht$|X z_I`2O%s58W>Ou@YE8O2$vm?1^jHQ|(n(de)@I2B=NGq4H<#rc!;&S|7J@b^SHXE(L z;)WEA_exsK(;QIZ5la?I4N^vFCJJ8=TOV&-(%PArj_>WE`n2RN$9h8^Cuaw^X@!slrq2w03YBFCdbu&nm*Hw2sic#j+&Xr+2n)o*R!f zLqyB~Ok&9v+nB)Wjj4)tteMtvxm##SU{bfmo0q_^YDvtrv8}*!A#|l>hSk}Q1q*0H zbF3YP2YV1~Hc*+|gkXltm4qvhHUi_twm@Puv`N>@85r58(APAVy-O0wGRs*jJrgHR zbjK-VCnt$eN@v>=XEH2?uGp9#%=Ark;-_iKhE#P;9|XGP2s$^GAam+)S@sMXgN3mU z3^jR%4j;?jZ{?bzgzul=2;V>D8zk<>lv%Mdb1AP`d_yU;32~Z<0-BPG9yf_iMy$CD z)(wj%4I1=;Tb^9wlAE!l4$y`v&O6q5*!>7v8WYM~^We!vEZ*$&669=?r7pLmfn?WB zw9)>j3A?W5_%^teT$r`~bo@uOyxL-YCk>~492qacvs7A=dD0nHs}HZUFox~qk-_9h ze?hd9yGIk67c=G1VJ5(?I9ttSooyX0TjC?&=KF(AvVRg zt!-E~XL{N(1Vlq`b9o8jY(B_zLXF82zzRjk2C-p51HyE%VYD*jWZy+%#^_{I;v3Yi zSvVVi*3OiK4jI)k(**6x;#ovozw(L;NGBBeH+ITslru8*2IpM^?dS^N=+UUrASTsOlLz~sswZ-a8ER1(-vYKZ?J2oQsXpzcPE0)-pmNdiRjee`_ zb=X?d@4sM~ZrLJc@&0a(vs_QNuxY^-1WPy+6lWqxk;ick3mnnr=4G+AjqHoARcCK8 zTQtI(>2Nf2K}*{id{!lw4>)+FsL*zvL2&Lm>PCxsiA9~Qt&43bgOrLp)ow{(zLN3A zqJ$0EOiZnoHqKAxicf};-AwY}K@;t*nMd=X7%I6#SZE5WY1jN&YZU2Q%5pSH9R+1re=uH8tY=i*q1?Og&J(&2?7RM0I+SUYv3Lfr_h1gKU)G(v&rp=hU*vvMxb-}OQ5Jyin z#kpVkaEk?!W5}AYmHCZTmE?g1pe$nrQ&9<#AiXv4_ss?&O+IvJu^TZVJV{P6< zCuee=d@D7t6%FtXNdA#ceB76=Ur-7f@5Od=OIxgU-o`eZ3D1CgEstI4Bv!~KRO6HK$3vu?Y zPQ*&WBaUJrWjn9S1ZkT@33BnU;oz@l+;LP{MW|5@K^|Z_SaRpd-Y)Su`$`BRqhiX` zrnPHHuc2QvT4RaCcrm5@KWr?euDAVnhOytyB8_vb#&S%uk;~#6J6mJ8IcT?`fKbK+ z)NLcY1?&jvG%P7^f=&l<*WjE9ra9@278v_ACq_fkZ`VsLnJ5}~XM@qk_HGueZ$`uV zZiXpK)3<9|Gp4eg=vZt!`!6}i1jd=wdOI18!Ry;xu>R@ zYe(S)v2QmAuvGNTT8sY;=-Xwjb0io&lRX*QaKMnxYl}PQMM^@JeN&v4dybyj(hQ%h zS?RgMv=FV9IH~Pg4lGPEJ}{G>x<0NY;)Om=7~sYUv<0y)tFuEIV#+LW#mJ?k)w9g9_}t2wi}M!KEf-GQw_(Li@BsnVVVnKau2hWm z6WduVO{r8mK)_gU+=%?x;%`(39`a%Z^LVR;ldO5EJ0DEDg}Ang+guvW0Jc)o<2dY} zYuPQ^$vCz`VaTl}jgq}StF1XLm9jPQGDfil@wSan!^Y0_3F+-j@517#Jij^kK|8G2 z+u5-bi#n<5#*Qx9J@dH(d=pZ2>_b|xLx=fEV0CQTg#FG;+7ejpTgXcwYmBjqwSTdu#<5bgCZ=}J z8b5Y)UBl=xH8W<78ecPJ!u0Vq6KiLVt(o31d)&C%QR8Nh9W{2R7&Z(SpKu>XZ5uZV zf8&~K(A!*512%x<`X~%~vlTv6b4xlATcqYLOq-Ub1uYvo99B>pJ8c|~)BPja;08LW zY)j9Gb+s$el1Q#UiVw$JSZmRbP3pM8p|@b(#g)(E6xzl_oNgp5W(wAXIX1HQVYBQ7 za4#@p=a46(O2yXJwy;aa-pp{{enjTjKwnu@c1dT(Xzq0-c@;jFP#=r7E#5o71- zs~A+$gvI?^jcX4Yb=!AiRBNn$B2i1j5-hBlqvfRz)fbkQa0=I0PE1-#;_=0o+voR} z(HFK<+q!mftFiJ~EsHA8_bn%Lqc+O3%XhKS^y1undbD20l{PXY$v+ZY&to;~^#rS{ zZRPWrYDd>Q1sS@naBlhjTFQtt9`^I&aoGZ$r}_Eyg=HL5e)QAAt@Znjhi!JWRCNbM zPSUG{PFx7Nh87%rgL8MVnOj$|gmw0$(?X?Si%ic~E|M%jP*Q&Nd@7Wy4K}LKD1vNz zJT(p4Y@lsYDXr`I9#ZY)0u*&LC@r6@L$=JO3!fRAwjc71MY2Mp|kqZ@a7cnUtUTTg#eUi1<3&y(ul7;vDHoF$p75Gtca)Ov;HGDKU-4wL3VD z+jo+iED}7(-rC5HYck?(4VID+N$kc9U&jZx^XqFH8%qrq)RIz`SP0d(+Z5Y?d`9X1 z#g{$GjQ44xV^h16X*s+SsNi;PZG#&UFpKoc<+U{yOWM~{<+P^L5aatQ|RVUr1?d4w5vf=Yf$>mgM6)c}}+@SF&t0&B9tnJQhLDkPZTII83 zAGhvYB?TrES|pP(ax^2}k)kf7{jdd~9_oJjxbf05X~_=ksgpd+!h#Xrz)yNTjbs?w zG*ErrHKH6rSw~uy3L;y^w$`JFfk{NY-5qI9c0;1JwngZ0^9(It3v4jpxjGvR>{V}c zXBDTFRU}jW*~SW%xRIV(u9i&nwcM+lZNAj-ll?zvtmEY872tP@GG z|GSkw#U8L``X^P-+mLQCTV2#zP`a1Fb+Sz_O1~1K7MUlRa62U@ooYROYsdbE(4TTo z`-KmkFn3HBZ}1UXiPODp$tp{>Sz8)_^h{4y^b`wW9p_bF(P-)}HF9^|;AOLj&gs*g zRe1G2>ADJFE`zaX#6I&0=Bvrt*3LEl6G_%}A|s=x6EyEApE;qF`uyH4WNI>hXG&r@ zb9*%~vu<{xy>9l*)Xke4wxqQSN!bRoeLwxoshc-h(2`y}Gkx z`DIHh^oNf9*mRE^Ys1f52{*ILi;IoS%07#J^IP}su?o^y>@4c- zFtG+ZFiB@mYiiuy(UE2?iU3W|+5Kv4cJJ>910S;IrAJ(hp2F4d)jGQ#=O59Tu^ezo zsqR{`xGI%VN_4-G6lhXzE0mdAC%M-zdne_I3-_5}d0k}fOerJxuc}Nrw}gQulBucf zOUm{?K(JG1-Mza@>;^5bG97em4(2z*OnP{cUCYtw?uEFi1uuv*H*a!BLVaap3a#F? z@)>OvnHGso?}g5GOj@|5^PvV*-6k*!*Y!NXt3J*rt>31V zb=t3R&GS(KZ^O>FjP8nIRH!McM2q`)#oYnhW37R^LB9*omN}xyEzUuXJ5g ze`{>aiQ7Bv{?h&*ByBH&vjts?hNo8Ua%C0#dz7d0`6T78`SptwvsFl^+*C`^A}A7~ z2E~)5W+Z~$i1{*)ioD8|1?q1i&IbR4=^4ul%QN;#9$OjY5yB~}C$iN3mwCYCRp+=v zaHl}TblT4fdgN!)%MHxsN=3DzaMvYM1m zQ|d+fRQu>OM{ejMR&v>F<|=0r(|x#Dhby=5yqm>>&hu=hD|zeNG%2h~_eu@-1vv4X zo93SNwS9@CbRPZFKKkc5PVG#?E_-8l-MExI)p}ODv4VY)>ZZxtje2X8RyOz{uEZle zmMy*3!7j-@H%uzrn!~Xhy$3&Q)~kGl)Cumed{M!VnjP|*zXd&YN;ct2ZQxyoq(UoD zXlDcWj7n+@uvyP<`^5deW>|;W?ox#zH)8IDVk<@fpT-g`QG6<<>mquDTmVSKxD% z5#FIAjI?3}Z4P)JfNqW4q?ZQmOT(mR==ek@zNFH>X|0Kl1zNYrGcX6;SJ4Z1_K$c< zuH$wqSR(hL(3Y&vJ1NoZ{nINMALCw_#NkdtQMUeWwV!P3!3NLTWwFnjR?8+8!Q6EA z+Fq1+&C=*99-{d@{D@r-KfU|;XW>p!yvDb5_DQ4f(I}ilI&6zrtDXAYeVsshOR|NJ zD&omruS10*nS6kcr#1@vbZx;}lwHXdX24f`Uj@@}Mx`Y_M^MQ{@UPHvw~wlEP1+#8 z#F#U_3QOI-zYD9Jm1H*;ZvHnfDObJ#XLTr(HdcUZ$jQqSc}?Z%OCwviOq3l+%kc}< z*+jw>_}xv$S(|bX=1qg-AF`I_tvu^pQ|sHy7mG4+QNgw~K8iidb|fqCb}bC~qT|jT z>E^3@T-@<)3?G-PXhA*}6?h=`V>}2siT%0lzu4UwD-fp+TaHc&r1VPyUq*NeW+HtG z)j!TrgT|y>QaJscpzM661sOVzT~SYi=Us@>x-@T65S26ajv!6=bS{PW3EVnu{(5S? zxgO!6%HRF_odkXxCEyO!u^=8VFgqb!k3$X3)MV^uB^bR(iRq6p)r@*J=u*dPpWq0 z7v-e8#;}WXO<5H*u%2Ikw41of>th+4+u*Zdd=2Y>RQOk*>jDSG|BKfDlfALw#$vJ z^hlFR&qq2%N0X0aIlF)kEm2qFbB%9lZhm~bJn2XCwXUe~eIMn-0iQR4;EIJLt|y__Oe$abhEtqhuPE)A!vl+GDXtTXVE|-`dOjz107E z&FHe7$Ffoprnu|&oX^AI0@sv+^Q0V_k?{*T`|8G2Y*E~L2wmt|7p`B7Qf963%W66v zB{$Nt4oO+jV+&j~J14I>%6$yFg-m_CP@J%l&&8lQ+L5Iw{)jqZTm(uZy@Xs&Q?4?~ zXi82C+61^+i$98jGUwC(IL>jar%rvh^GL{@=-G15E@G?sL(+A?uLX($v z8f)@0>Tds%(IZcSG;<@{S4ST5{-VL1?8f)wDqWWq zOFNY7D-TWW(oJ>O5rsS}h0d_Q&5@!{r#^l!H+EU7B@Owp{Agq`M1^dLSwK$O9UNsJ z%4XG4-a4{4oxGy0QG3Wz+}Oh69#m(dOD=cm^wzZ%ngIeEW(qm454*lAx&JTF3x-$(QdLmo#I z`~4qnl(|0b0KuMLgnhutEjs(qu-E*F!mnJ#hmJA%3qPbEt`U1zs_1vF{0gy*RV9AO z;=?wMZ!7xA-aM1(hTw;c%_2YaL9})wotb(iovVLTo0My~!#%c99#5C+mFFuebZ&KU zFLmF*;9a0rJo1|WQXiG2w)|T*QLd8P#3IU` z+pCV^tIrkHhekHbhrcJlo!+aqX4>L<)f{+_`X5(zy#%Mq6ttn` zakCpJUM^%KPipk?BcOVn+6qSsfihXLvZJ58`ftU5{@(02-uj3CtoOg)=fdxO>2oh0 zI`yw#>mQ8=3UTPa4*IV#|5fu}vpp3T^;QZ6fGd^zI4YHOxZe)<>u}f(hrtYl8H5!# z8Xqad2M0LwM`=;5T~t%0c*0;v)p7m`VWp=K#s}jn?F8do3u0XhgZ`+ezf|ULKYznP ze^7)xb&-76dX7QnF(?$+FEC6|5FSfNNe^m4f7n~#J|lk98qf>qs|1B8u+9!j6jMPI zABC^@s1c{ba-_qu$)KXcQYGbRtj*Dwp>xjfHby~Es`OWaAf68SA=mh*sv5UJJl4}6 zAMNQci=|3J{}>e0=`nf|?Uj^Va7*JN()IQT^a=378rNGC&`);u4hRei=$9{h_X`XO zL;?o{h6VVwS;zZo0V4tj1$d*ogR+ujT_}x*m0lpki-_@~8*MAQWckP{8_d$I?DjRx zoaOHrM8?MwZo*WIv-`X}HCB->BHO5+?{kG{kgp@A9##TET5Bdfm^6t_htOs%a1hu5 zvM5NbGZDX!8$`qLOp!t4hgBoqJX07iJrVMf@~HGgc^nbN#}MKZ(x~X_Z+^3twlBc{ zCE729yhEr53aO;!nYW* zgQOrZ?CEF_ja4~%HIQ5?Rj5nhAXUoIX#7ec8c~1#IPEd|z2QP{cUeM=$+yOD2Af#p znuHt6G6RE!c-D-=v_G!ycl|*;Yx+UgLYjs1%hK$6fi2TshvI9LuQSR!x&5Zd90lZD$5@)Zq;k%SpHT5A4?o(ApP3K5f-b7iVI(96*fJ&0m;ao9~3OF@KO zgd88VDq%T37?vY|ol>VK>NM!(SL-bXVF+IVUb8=LzSXD3BXlILM)8cCW_&#S%D;d0 zC;#|&5C2@2)%eIwO<5_-Z^Z-1%zb3=T)5Kn`6ou&iHs5)Bgi>vXBXP;Al zY0&K2Q;a}H-0(<21dT{!@}{$+MbAMP&+@PNPI+Aa_7!{KH=Y25gA9ouTn7WeI1b6h z&38R{_*4|Q+*4}4=OrG57=QEKQuBT6W}Kra7%CQ{Af&M#H3xc6u@Lql8w6173BuBN zLd;QAYXok4i@0TRHC8m4#$#L%IR{{JA|6B6G=}jQnjFSs5(t7A3%x+b!V;r5lxmSo zJ7gq+01q8Ee}#^q3N0yH5#1eeBZYw?B^Fy$QfdtZ1NzBtJeflwh=r{o)oqm!U6}zi zmeJYw=vZzOJHcyKim~{E&j`)Pf1^?aDz!11j`Oq^;53@iIwX;{2;smZXk&b%cM=LD zg312L0!k>}MB(JYB1iJb@pRlmq;WlN{uo74EF&aa>sWOni!hKZlF^ftaC2%^Xy~%A zWH@2J>p?RkU8*sTg>b~3C_d)diRa+Ov?B~7G=_g;aV?BZZ**`_WrGlG3Vhi0(Mn5d zOb@N<09{G1TT@BN)JV}B3)e#aJU1YbjUpMRG=W2vMs#Bh5kYH3?rsUt(kq;b&9i(>;if&@jvLpXU8)~ii2g) zQ)GzaO!ea#m1Dc2_=@Oky`Tz=t`u}e#yf*TPGhrlc!Mw%_4E`KSXwvKySTYQFQ~+g zVo@jY%XkDIbj#ymvB&!$?~2EZkQVYOQjTHuV44_`J|duDMzxIHLSYn)SHc)38eRWO zt-Ek$s9WBkw+^_z(uJ@DSFhsQTP^YyVyXNyhC~Py8>GPGpX1bsTi=x5CYB_)p~%|L z2Znr3fgltu5Q7a1BImI6EsEsofVi+jr-`v!k$@K=I=Trk*YaKPY@!IHsIgNF>34IVK#Veq)Ys=+CP(+1BP zJZEsm;01%13|=w#g2C$sZy0>VVBKKD;IhHH2ESl%%iu$UuNrI_{HnpP8T`7zZy5Zh z!M`&2ErWk!@NW&iZt&X%|K8wt4ZdOUO@rSz_ydDKH25QfKQ{Q5!JiuZnZchMeB0nV z2H!RKp27DG{?g#D1h)$Y`wR{k93qZNBZE*Go77{`JFI!IhXB{wYgnN+T1R+d*3ek-YGK5 z+o!w`tk>w;E)f>+MSRCAWsF?;;t*X8mB#~KGGXWYIp42yI4_iYg8o5VH2KXhOWQ}R z-3e@N`?$9!>r>%$yL6yp>1HQ!Lsa*Oddvd`GzH(Tl6YWId`E-Do(NKONQr_I&2iTD zCDHz34{ z#g_l4kKX6Q`-~tz-+|b5+-AJ9TzIqmy<91{Uud?Ge0~uiX7;A$S<-otU9PJfU1Edz zInFNuFLJEUo4x<>Up7Ut9#o>9co&jE(j&ez&01*Xp`B5DfH0>rdt{t^n z+8)+&@CM6CTF&%0O;`i&JH2x>T7V{P!}`V0oh?0KIR428!BcE4A_F#@_2#1#UpM7! zuzck=qqF^F@5|rqSqafHiAHtWdXcuY%h#cGircs++kfg?Z&wnxTA*F$Tgzq70kv)G z5~}>Q-TFMig00=s2ktEIy(!S5mfF>dwwms-`zTJ58*+9jtGL%u!U_-0O>*nGM){i2 zq?>S5PtsItseE+yzo)HcwE5d+(%berT;}=Q{pk_j!ez3}x6v)(Zuy?EIx~!cwg_|^ fm*0>5b@dR#Z|O(x_Hyn!pZYB&|952npCs@Cp0`$q% zLP#nn{hvTTy_{hJvn0DB$!2T)WH)P|Q960awYApex|=Tpb_vcIEq!{3>*X9yCHh_xQhJNCM7) z+w6;+C07kYvx0enyiot@n*(`fKM*&2(Hk{^qT>cQ8j1cO^$>~aVMq|6#zumk1mrh@ z-hd~xtI!ud3HhpL22g3~D1QLdl3ivcG6cLPSQues_SKwE>1CtJ0-n-c)^s$oBs_@9 zc>>;$2@XcU2>1ft+ah(uA#?%`VOaw>l$@A@7ZnZ$&wv}f;10M0PICy*N$#(|{#p+h zVRT0%jKPU;pX%XU)anhRgCa7%*=IK&eQ6{x{=Oa}G2O(#_=Y%WTD2EyW;L*Cx7)12 zuirg5m|s0HkZ-L;Vi+CktLX=+mghJB87Ts7z$@Z3iNUraqA@HmnzIH%rRk04cQfe+>!)_hqX2`1Wd*tYt6nR#f1gOL(udJ^Ar#cLui&p zgRRuXetn_gfVv71#JqVEzt9#nZ*+$V{V~*JF)labQRLI@KWNhlbtYX`p8_?Kam`sh^(1;sQ*ev zFV#ucjc^lyUlwrdr07O?5{eAjJQ=XN4!~QJs~ z(M`}QUu1ErWWZUIhoUeWMgr3r7AfF_F@pe+nm*P5O|+}_^cIo^wsf@L=*IHlGoiD- zP)?*&_sGHY@Gu%-m`}q~vLr{5hlp`aRV$`ig zIkI+iu3fus&Orq={jHD=gC{G1p$pk;4avcixF3y0QwHFtI>#$j(7YQM;%KX3{)|%G zUYEHKkvAToIR=FxwRdoHtcy`YcrI#7Q;2@DMwr5obsy4igJrba<}S4kNm7~DybpY~ z!K7)(QEvTS(kr~?UeH<5x50=|Vjt^$nb_BB{s@VzVxWiN4W-u%(>p(tazs>t1tysg zZ;A3R#RHg6T5yCeFj(Y41RU1qV9iUPL=(x#=66UvR0dAz%z%sed1p!qa{@ivk^o+OmG+{b--HbVXV1E z)omv(Bl}KTG82=_S2aov&muzLPQZJR?gU3bfX^Ta9641w5ipyy;#HlgP)E2DsP2^1 zZ>*daQwQ6(WaUIMRpntqNC>zXvQCbG0Lvi>9039Tg(PqU1hiTbI08bsP2dO!@CalM zj$q7a9SR^>U8#1*YnT@;_iS*#B^r(Bk6@M^FaF zpiB=#TMSHn{@KM|*=@=i5D5c**kKtCUW=EYWVKg!hii}$aqA(DzyoWBk(53fEW8mO z3ZRF>faYX?{=w1X999u{u+jxxp`a1z8*l}TUAa1~jfOWdhBCwc`T|%tg5;yPQ1zb_ z7uZOny3}D+X2~%ebjVQ>rijW5`)O38zEPA{^+#C$9h6iLpM?sHlJMF1xq}HC;oAkoXZmHA?pRE<>Q4-ZqTEVqQ5^06*lI_iN%C_dY zxSeTYqcHg=J(%uTi2@}s0@P)!6FHu#m^5UM1QtbsrU)!<0<9725Wb6WBf`B1ze0Es z;cWyBgHeV+>v=uG*$4@Q%Morycmd%E!uXE?98y@F`~xH04d5I9elPk)rvENQ4{v75 zV`-F&m~u~wqImW&eMc|)7N&1Z(Zd%r<@_|tB}`e8M!A$J)6yuHF=b2|B|N_BR#B0ECla~L&F==mAE$jelz%dbYpDK5_N24-+_CfBQ&SZFn1!l$jt zA*dV8%4(Mp!XDG8qB%SOg8HC~WI>%e%)>I^H3f`Xo5?~g2f=4l?UW*fp}3J6_$kn3 zI1IM-6T=cLdAx7^06hKR$rdgVR}jGpDN2!hYeww!G=(dd~TtmS1vYzsD@0S9M^3y0y;ZziW}RC7H|(bBgKWza12pD z-0)LL*p)zrfVc|3HE$isD|8+Yp~KW(#6VxjeaJ)Nq}N3rnlIp-lQpVxz|Vkf;y*_X zt@b?S9VSUXdWLMSw1A_rM$`C6+c~;gHpju%b9BFSb2qv`HbPp{(K_`!4iFYWI*7tH zhHOR-+d1wgN|JSPuBfcZ2e)}OQh<_0@E2+}N|Qu(5tT$bbYd~#9BFceD601tC55)A7a3`-fqO!`frmskul z^6vvZWDzXMpg#jjxkWIOei)Pri(n@G@1XRt2xiv%B`AF@f|>M?Q?&Q92xig;fzsb= z(NAUqO`!fho=2Gp!>EMcqMwqI^sX3B2{{)1gfbGQP(rRnKbfrNQ$n6aKba-YqJ(^l zelinUD51cjpUi}IN(fl=lbO&%356E@WcJ`Sln}J&CsV4MD51!rpUi~)lu&HZPX?== zVsi7~?qNZe?jA=#m|zn)0s^L_%)t>5PO}Ldxi;zB)wtA|Y}B72c(22&58K}Eu|8O{MDpB;pSfHdLYt&s06f91UU080%FKp+g2 zH^S}6U_FASnwXD1IH==)fO%=Scjb8GF`fl-ZU`pl0&l>%tK_N(xmE>%f{^ull)5cY zP+}&KW%Dcu$usY46qm6ScjB+-MOP|zFM5WrEIEqovl zu!RpO;n9myc(`~8*8-BZNk6s<#;BH z2ienoArN_R;MP51>{*O7+NnpWuO*>W9+vWEW%$h)vi|1)vTqvN74~D`hv?l@rj_`4JB~O!$B;6zN%?DBi4n~JxrlFZHN*FKZ6O#d9j<+M@{F*g2Zo7 zS1!$HuO|^ed=oMCO4g9vsIJnxClTqm@f6U+cTf|Z0!L~BDnaJ`uH8V^Dp}ROR8=q$ zYYdnOIweZ{1dOOV`ShfE4kCL%k(xV6@1Bh66s^$B=RnoPIDFrWJRsALc?D{V6lG*Z z(v_gvW`V@GT1vPX22f65crr#}8*=p!iRtE5K!cuuXTs;`Vwi*RNAN2Z0;l4ADHSu@ zdIoK=j!@5DO(egn+mFLvSXN(kWgw>ktxfRw}oC=<-(rJtE3#u6bfl(>n0F|Ey=h~QzvQj`hg%D%|wa~zu;sN8;4O>w}( zXST5 z(xhB8y$W;0Az&5+)IZ>mrh?~n0VISej4Xp2y#v{E*f{cX*U#(ezK)nWX<&TaSQdTe z^-Mr5Fn2Q9yaA+9FMG{h_|?7P1(3QXN9P9(Uh_r}<-%oRn0=$J$673B`1yJ_mQ5$S zd=BUos{@Zc%mUBpxA0p?_PPuuhlG6N9|s}vH24SIlD}czj3jXn=6YCv@oG$!MIySg`6G>r|BY@LbICm3JHUU<>ou8s90*ngpC8hiUA1@gu+5W0f&>tB9Gfif}f#+l-NrvfB zUWY@<@+!?cUDTs(MHok%6bw(-TffZa=FFoD9PThiJ3_M~QiJ_swyKPJTMC@He+0~Lm_H_>XFRO6DD;G}s^GaX>y3wu3q8=Gl?GeNyMRfP zwHt&9ShcY{)M11?g--d5qyP_awD8@Ok8D6>ph}kyoU!7ir$RsOK_;0+CD@E$Pox6c zEL6H=gsCJ`p;W{IV&99OQ%{FNVNdTl9y%$tr%$gEjlPdEehps(8QsT21CkkGQ0m~` z=x9|K0meZ59RVvm{}CNMFFfei3Iv<}nBI+5+*cI7AF#T=#LNeP^smJBo)gV|jN)j8 zw)fpX1%@*lr{IMaW5iBE_kNH!&$TDQGMWevg49DKrqlDR2tECe;IY~~JL7W7h{5yq z5Q*vZoG;=p%7F!LuH2eSCS)SYpuZo+Pc{0RCC!N-3$-Ul=2UJg z9Q06sxUF7xTfOo~wG@?*7b6RJLWy6ZTu?nho&i|`M)xBi;juYvb7Tk}x-TLBBH)I1 z-%1vZ)|)jD4&ve*cOVH;zIif!x*sL*7=X2cX63ICQxE2dF&%Fm0I8-dE4Q6cts7NY zNokCP1NE*$z4WK*?d$l){0lF+LFDhhtp70c z5F&ba2b#v-f68Zduw6h;2NKU>oblv%6XlX#<>k~hSnhmSyPhL0cmnY-)&b~8HP#x+ zX_)X^e48!=kn8(Uv>C$zpLGh79rMwZPa?6};V>5H-LOLGG^eqk>MZM8)U)|?r08Kd z$-eMY#B8heoJ|ft4FaBvVaoVet7MLer4?APA-1oF3S)lJ8CnnOr$0Rbk$s!U%hD6i zQ*<&%U!Z6mM}JFEl2T7_l!Vh0zauK`=@fM;M_(lBG>+0jxM?~^U!o{$OyXsV&LnF1 z6-2A%>fsjjnclqsG>7?nMT;@5F-4luOn-INw;eX>zS-z3?tn}vbYEcDJs&$eCUHk(z z{M5~7f*Hr6Yb=N#ah3Dn3VFeVt*`ecT4DFXpJ1I48teysYzx(T`M zvwmv8W|Ezs?3;f^1El<$N%V9giNBeIO(&AryqQlYlDI4+ds0$5mWlBbcJD7xL=MBd zkf3JJ|B~rF?&lL`N)D*`K4oHka)@ncJNO#(|0D8Dh#)}&fqlvhIk3Og8k4j`0a!F z06(;!ZkV4S&5sShrR3AN5YJQ1mr9;P5{|YgmUTPl4 zZ-MBY=GRNJv*+mL*`!>z$7>`|k1vc{ptihNl|(+J6viKj^p-c1ju!((6S4iLO< zd0bH7)^W;fJ_v28c9!HE$+u5;=+O6>P?d-Kz6U(}bKgsLt;CM57P_jN0xs(uw4Hk# zR|{QMYZ5C1wl#?r;RrhXeN^O&^w-1JawN3*eCT3#D?l}FRNz^)FQS#e%jhM`RZafZ)X(6IjWzx_HY~lF%D;6nwu8TgzgKr-{bmW+c zyW_r`NF^Sl;uf{f=X4m|ZbVW&HQHI?KT?5oY*&0Wf52WxKOPzmuJX_}ROLn$>RdG> zYU)KE(B!%5EqZq+hT0L{gkG&Fkyz?H$Pq@Wf%e>$k+1y3`RIu<8brSSxu^psDM0?7 z;WPA2RExoNF?Z=u)D)(X%!@Jj)N*Ha&|w@mUO>r&m)Z&~ic}Hlx0xi=LH6KBejx^; zF2`WsgqsjQ9^4FD>pZpDi8*p+!UqK zA=eO+uaL(GDNx8egaj0#=K(2HNIyb?3TYywNFkdEDOSi$gxJ0E6d`uEyi17PFQxfF z?2egBh}|>m39-9o7a?}v93aH*oVN(Ed*?VI{cS-DfK)1^fsg?TIiHY|6mkV20~NA| zkU*bwIZVh9g*XF1PFBcCgoG8+K*&&qv=LIJkZTBuDC8G}R4e2qLTVK9B_YEU zfuPsn(M z93o_bLOv$sRE30!fSjg~DTLH2q>Yf%6>>2l6BTklA(IqxgpkP!$twm@r;rhZOi{>r zgw!kKVnP}eavLF274jq@(-iV|LZ&OECQz0#c%u>kpgq)#}X9$_CkPiu& zqmY6UAafNmhLCv*Sx(4&h4c`zKq0pgvQQzf5YniSF9~T<$dFPXix@c`>>)d&%ncoz z7I;RS>@5k5iCU~mf&1|p0> zn2K;F!YYIf2;W86g>W|lp0JDO5so1I4S_l%q9%VCJfFd49O-y6*A=rXA_2I6R><| z7KvmN;F4$NsL3V_%O=1<$Sg7#B%^lSn)51Bb&L^27p zvI%Eo6J}=<=42D*W)tRR6Xs_V7Gx6^W)m8-2~F9AMcD*c&CJH(SSXXQB%6Redu9&o zDKZJzN@o(z$tJ*C&CGFLHep#dVR<$onoU@dO=!+0v}6-v*@TtZgjLyu)!Br2HsSni z0+yf5)?%}lNm!drXv-#;*@X6N0=9RVOf4dWs@fbnpM3Wp)_)nFhNreN$!EbUb-ID$ z?9Rn{>ZmaD@KbzTqwNLlEnvC@OmBeBhk0*7d1-rq^)r3PP=UM`Aup^l_ElJLaXj%F z?J;oog)qJ;Bez;fl<&&qL`Ha0H)VWAcRmDw^_PERgR}|j0fTS?P2&AmUyr;x^VE@m zhi}g0daDg@+73+KYZ)eL&!Ek(|eF-U^X;Hx<-ue-uPt6d;ig(%@3Bsh+TV9Jx*Lr;~~ z2dk;55#dF0Z>Ym*S<)usV=-DKD9M#n5muVSf+O7gJ`UEjfIP^6eZx_9H>9s6V!vx@G7jn;&~3VcF+>F$Hlq%W?T zZmB^`G5dmy>s4nIy2AYs^*O669mYngil0-b^t(D-5_G-+EfptDukld&14sv}{#4mL zZ`{h*@er0$HDpD2+?RL-jm&ji9WNO<&{_zWH0^aUD^e!f9enZOHaw7neKZ`QUEYn< zYIvCSvp!((oGCojj=dgah7Be$EYJ0oEv;A*#?qqg9yNA%9ANuHedPw7ukqm zFWDq9LpB&(?l)&mi9_Ew_?yLe`&)}qi7vw9e&UssAc@o$OktZeTLf@zM33|b!}gq33Bg9TJHyko0nro@(tk~G^P4O z!+MCsbX0_uAOdE&k#etDjR+n7rP{{pPRJ|Qog+tlnG24bi%nw4h4iWjo%h){p6RT% z8r#p)`0NZzCoDh7U4t6rfjXwAM9cXm>)_vAK$c?|(&c-1o1?beSeKOCL}EJ2O)qXo z=rzm`Uc+RusUuk8oa8&0@6gfY)q40EFsZ>ieB0?)DVuQ4SeD_oEu=dVa1!}XW>T#QrxmHLNJC^>M&tRw z)u@Nxl}$+)GEae6YN<`iU6P_oPY$Nu4_;lQzTimNV~mWK7@zhOdW6OgC}dLf>wn_eJ@U zE)I4|FvLUf&gc!cJPAwZ<|Ad0Z;Sm3PwlP; zCaYVi-i=7rfeRQc2xK5X61^uzpl|qTD`!-ju5YX67=udtnuIfZInn&1Uijg#rUIzz! zW?>VQ#c4P& z2tSuN9l!8?1Bo|Oos>oAx7H2L&e36bObA0GADd#v9id82qsn0~BgqD}00@O4-W zZ7o$p?P@?Bqp6NJRUMSc;HP||Znx)XMtk6s>f#LW8v}myGGKD_av}jd z^RY*75rjR<2LkqozM6OCL!h*glif+L*_-z9O(Mf=HORdyq9OMVH?^AgMtouB=mu(@Bq5OePxqQH@_9 zIWZ9_KEs@ZAC#a<(@Kzdk_dMl7hZm8m+-so68C^a*CUOp`)r#r9#U~-X^n*WU;&+B zlC5fp?g)h+q!^Ehi+n%6r{|#WD$vzY`QZj1-dLs98L0db{3a$-L+SuOzGiz#OT$|o2eZ15wCXY z;RX=-)lNL|oRndvlzz_>C#|#fo4=ZooVsL_dZ4U&H>7r&KLlI0Q`t1q(Z8Zy=*K|f z7;@3QJj&#DZlaQ#*8)_Z>}F>C{JVH`850$$8?y41GhQXRnKc9XCP{T4nT4OR*W@c? zDzynNf!yZKq?#meVuW4wG^AHo;)OOE3hF_A7H;EMmgI7rnrqc?tw@z{bMP(vNHd1L zV5AzxmFL89%_9IxDGu^h}>W z+K~0S(5OrJvQG6h2fL>=17+K-7oax|>jS{>baYDEOMsCIm4y>0qO!C^d3OcQrZ|<_ z=8IgY%X!FO@A0Fti`~3_d-%O>+=&jOcg)EEj?v@2{NV#9JNDI862mThbbq+$$l)3d zj~u?Ck>?zpE7$lN)jgP`U6|B~d$OS_OTBSS!>guQ)k3}Je5i-6haW@U@C@|9kfeTF_WM#7BTMRAL-M-mL|uJMhq?_bCi;T*Fkd+Y zb_KK-xD9y8N0pAoH=tm&4HTb?;x#`x zGMMg@qYib@VvAdrCGI@ru6|1oZQ4q$8f<4P&&;L|?xysTC7exXq;A&Gkwi@f)EXi7@l(5CNX2-K&SK$H%F=tu7+ zm?qHvOo7;j)!>yc8bG?ftZsW#*Gdt6k#c;_jYOoEe^|)!(exQLmeMDsd;?PY(xuEE zNPi?$=;!eZx@2W|S>RVREPgpG$H2j#F)X1?mqQ4=MXA)OzqeOIDFYfxKYBO8@=-6^ zJ^x{5L-mwIo7<3+H{_2)0RF~R50RK|;_Xo1rtdOGf>IB2BI65lr1+rQu z)$T=zmzZY)rhP>VZ!#<<3d*tG{R$1tNpB$EK&vFg{obF8q-?r@6}?;fELq_ z-c2yA#nt^Y=2G|oS||IuWNfM?QwiU%4nX8a^`se`1Vy=#&gjYnUT)FJ(>`h;sGwtFV}~cp-6QDYa<)r z&3N`BXUP*J({%9eArjNW8)0H`TTnHcD-D$tm6*%Hh422RF>Oy{+HN!bb&@HOHWRR! zPL>~m+q}-si(Xd(5Q*t_-V+LNWVqj2k~taNW)zZzmw=P|1YaSeeG>h>_L>+De?hZ1 zm-g?w4(0R>OSwZ1egdLz+y)Y z5Y)#n2>W>wVFNY(5GqW3N|oRppn!YR)hJ1kZWf*9msheRX(da@g)CX(%hwXe$oJ&} zuH(kvslpib|0Y_Q%kh2E>>_gBO``8DjIdLuk%%i%3~yJnFKVs=QqAaU#3G=}S5ggr z;e6DSd;pX#usIX?CY_8K$F1yH3waGQ4kBEO3b+KgXM;DKcol>-C;!%DQINC-N&JWn z-U38X-h#cSp09;BNLvXVc?IRFrZmpNMh1h0zZ``1qlS$bcFKrxqp(>b_o@|e{zzP# z*$gKNzwcv!2R3$C@wQbsHWgyeIk^7PAGAe{q8jsyRC3_-MKfW#L@n^$g}|q@(q@4F zbm-~g{X%9EM8(eIl-%iw+@e_2JuA=ORzN9>)7y*Fw-d z@wmQUkBFBMH|Vh!mXlju6kq2VrG>;B9-@r(4)FTKe|*HJ)W2Uh#MAyT;9Gzp@qvF7 z=wJD%)Q|GNpKpj83N9=##J&QOrxKrlFvK{9O$-wZw=ukf;Q@w!V)$8r%6bY3h6<_d zaE7ggvkMKe4KO6`;`pNs%YszPY=)~CUKu3W?nXQ$4h4S}G{j-1e*#!2D&QUs6lao? zB)(rnl0RLvUoYoA$%Eg#Uw=~sim7J?0vaMwO#BCPTlRANmkj^RupvaL@euXWCJc;Q z+Y0EzSWsU*iFls)n4!Cb;w6CP+)LD%Fh*AcaC$3;km|ZcY!Vu>&Tm|S8HzCy!cU4f|K2$;DQr3ssKDtl8 zK0YzI50!1|Lp9R3jmC+qI9}VAD6<$YW7x^?I}ER9_!EY|VR)F~#|$0)sBB+`)eP$y zE@pT>!z~PVFua}N0}P*Ic#PpE3=K@FJWqV>p8042H`Y zb~3z@;SU);$naT)uQL3Qq2natQ^ByBA-$uLCl)b`F}#4`RSa)ocpt+j86IV54E*9G z=qJOW3{PXYfMJxO#qdgoKV-O{VHD=h5cduuJ=xDNFqrgb=3tu3O9s>I>mE#c`^?~T zwUgMA_{6Ruq)W@gOYzN*^?-&r5WW}iwJ_!X`Ou}|GaNKS&v5*HDBa+2SAC3MX(I{J ze+96h!(crru4~AP^Z>rF)}JwW8^H2`QO@%@XHa1mGFFTm4^*y)bM_UJ8M}h9F@&KU zojqzgg6|NJc~oL`AEdro&g3|Pl-I-pHI!}%!a^B67$)Wm)#)%B|LAkLlpyDBuQs|WB;u1f*` z;i9_y2EoC`<)BP5wrK&87xK7mo|}z(v@?6IV0azFTNv(T_yEI47#?K!0>f7szRvJ% zhVL`{h~Z}pzhHQrVXm8MDQ4K0;XsDN0c}Zqj?0l}w3}cppeCL`swR%Osg3`3Q!7e6 z2gQP(7SBGkx63m}4~Q+E1(?4-@SFvBn`Z^!e$N`fL!Ju&pJw=;=OVj4|Qw}Ov73N#iEmlS&f;=0m*02Y=#7VKdh+O|cjOi%hFU(=vc=`m=7V3#QD1FcRt#gz*Chc*q^4uyTG&Bjc>Nnt*H0kAt1R;n*X%kEWJ zrG7TBpDApXz8p`4X;meu&(Y(+extB9Jpr%!w+h>+Zv^(f#7b}0x5BHggmptXVB4@7 z`C-q5cvrh!zZPpo17lmoo%&8-8)2o8QykWJ0hW61T=K+qjBOQPK+b$|4`WZ_ z3gzv6?TL3Y+&OhhSu)HlcwoOEMF@T z=Q2ie7Hef}fVe4F{YW>7}3ft_O1nd)qUFn*t z^%tKjY^Q53FkFozE&k);ifJnXj0ArWWAZ&|x%ssn#6o^;lXou&UKE(;;_P&09z_5=g72`IX64b7N02W0$}Hf zbLPsl@8tZ*5fyo7N$f_HYZkK=b_cMS*r2fcQErteI$P#^4A}YN5rw^goNL813VRKh zDPB|92f)^e+H+*Ne*sH~y$Tb#_c}Vo=jY0_yxfNzU1G<15~~EZQH)q7u_|B}iF*__ z2H3@7@^YCr1K4HasKS=!-t4$sTpyKbCa^0-pA{18%01+`T1-~hCBVKX7AkBTuxrG6 zgSzR&kHQKFS>l>_LT*r*oTlRAJ=l+$Nq>n4Xsqw~H4PmY25?*dG*Dj z+#@mgD4#g)67MLC`s{9T>G_mX_SxOy5yrNPMBZwo?O(%OL{HvF`n}?sR>F3Q8}j}I zzoZ6-vQ!S=f^hB^vlx>-_@KClW!Zurd|*k;)h&2c`OSHel8Ysxh;b1 z(nDg9MLf5Nefhc0hs1Kmwu(pdKXE)H_9iH8r+7C1kp8e}>XbR(%*P5WK3`9mv_ub! z?aXt#cw)$71rLkWTyDDv4t=cP7vds?4FmQ|v0Y*7fIT8=*_KN#kBSC~iLR2p*hTl_ zwMwQvCWc5%%qSfx9ur?oN!9)HC$~F(;LFK-?rT@$)_(=?BCU3VR;d zK~cr_Mb>agjFOmmW8g>nAu*WkgiL!})JRN>9Q2X?xS%hP*lmA8T&~hu2mLMY330u` zdVu{}?BZE0xjZRulbE<=@Za*D6hBwkeqg^5?qwSk-hT|a7TD(!(@r^gCosXfbWB^$ zSgyppTTiB(#Zu28%N)mV#pEQm6DJ)rBqshRe1q$E;<=7gYhM(HB_^7x78blHLadQn zMQhbwoQb@Wmh)vXTBY4tRjj=X7Ml1Z|NjR6#rglk@GC%FIPjpsAzn9#k4(j ziX!{rn_>ElNY^*1&wuAJI#0DFrMI8)xO~p3Uo!mf+ABFro?ml*(o$O+jezXW6n{B? zNz-&ebA)t>=Fxc=eHU6+fKwOQpFS=tdPwx#G zmpOYw$vK_BjLZ2VYm}7klZn5K%b6%=*1;+rCo#In#aWFHu{?xaoN^Q*zrNM^T7)MUkUDXZUKkANPR2#6F{G1KltF(7^SqL z`$U)KFM1p~i;7-%Zr6qu{na^}IgAnGi(Iam;!}TtYpFJ+s0LEaDk^a`iD=Quu5*N0 zRO_l0uLSFm+Fdl=wO#8enhQFufwyWuETSDbNi~LRX;Bb!eq~fPRH%E#S+ciO`KL!GxRS>~cRM-olGQk8u7c0IQ6l$oYVKsQyLh z=kDiN&batGv=2{t3JM73l>Ej$68{q9bM6UxwCE-G!;tM-F;lNE*$0o7MsuV-zvMOd z1L(;&0M99T&;1JX$7wV4=dhA_Tk#OjJD@-6Y+;?;#(6&E)OUF77U=Vwb3EHv!gpAb zF~U{46s3sI10tvNd!EmjzEqDF?Dc%f@u*I6)-vZWIcKdHQMwb)si>~cn9{^KotQ`K zoS$lIN?-LfF}+KBr1VSA7Vdc(_c@*}?b*_y-fb9#GrT#PS+v|+%Og^Rc&%$2_`GEF z(TwVd+- zy`h}u-8|?0z5)82@}Kz{nA-#T63`z}TD`pdkG_X>IzL*fEiXUnBlxaw9r%Cbdk1hQ zo=6eAl;I-`pJ3R;uogUb;)xl-p$rc~({_p{cZ=r!+)(4`#z(@0(C9H8G_ zUg&>OKTuxoKc>G^KFlj$k;14*eDw_Nx{}O+hV?o7FpsPzN&hyiZ zi2DaHWq_lz!UW~A3d}pl6&35jXM4pVeWYV=S&x6D<7U9`LWWEIvo+G~*&5A-CiK#| z&U3WeD_$~MHK{+h1t0X+IUcX5fi4ln>v*o>mwvC~aK+<*Z&f@8_#rq?5dW@t6;e6- z+=sr+@AEpI%e+~96qNiv@B5cJ&~Jb<`ux)$b*$-g$PtHkTbk3QjVtJz6BpO_8K2Xk zkqz9)I z;Zplql9BpuJfRtCn8Et|k@{!G{QQvyS)sW2g5r2ZgD7UO5%FC2Re3{Isu;XaJOZAp z@}FRyaWMjvI%Cb?%ku{qFAd(Ezts2>p8D+Jo?nW#e560eHSW>g7;$d*(~oOWeAs<2yqR zIbKOx_3sr76?=y4E9l^H$D3N1%MXjQu*d4)vN=r2(aD-E5RKu3c$P~eSj6-qrgsRE ze1TXM{zt)`+LrL=1?!9}!(V~t&Ty5nK-`SCsidB{JR_cC{vB+o1~H{tf4b^W;4{|Y=fvTvIoNZO zRAX4GF)WowjDR!a!CLA994~x;lbO=Mlo_DtB8uy(9y}4hAE_HTwTDwL6%T@PIhWcd zeu4Nk_zaYev*04+-yxnr{5mdsy?7d_H!z2raR169c8iw*Z)M6J@fzZL#T$V4h_?Xm z7w-Y?7asyXBt8XvMEnczfcOvK6L2Fv*s;5GT|CWoJ%{_rI-cfJy{|CO*I3TOkTXww zg8RaGV!rlwqSU?S||GRpj6T=2Y77+hvB4c zOW`oQpOgdGEj9p-=J;u%5b=aq16U#c6&QvaR+Oh+3u#RE9mT;WoUe56zhL?cym2Wr4 zZ`Vk|0~|lfQ0T<7UQamo7DPGT%y0|COBmkH@F2s-86IQ!HbV{Prb2Tt9KdiO!#alb z43{&EGHhnp!*C13OBn8Ecss)b3?FBBl;PV9g_G-ISjli8!^sTm88$P#grRUz{z`_E z87^no!*Dml0}PKc6b9#KIGN#chMJq`0~ppZj50jH@Evy$slvl$8BS)noM8{c-3$*f zJj$@nOZlS=w=lew;X#JS7;3(|4WZRBT<)j*Jq&j+|BR+!=nsEkm!{R zmlsjIhv9C92N)h@D2h2J!^sSnGwflwThdD?&vJ%6GG59&8SZ9yfZ@?T&(f9Az62*T zT+Z+u*AAC38jQ1yy~e}FqsHULAC14`U!R)gzQ+A8_j1oKJnwi4yi>eeysLb>eb4(| z_5IV=;{S>NE59=*FK1LvV@^D$JMZ$mTk;;sJDm4HUSHwNEnF7wE;L-JFSjLWCGCNZ3mPo>Ub z`0>eaV)tGheiP?M8g~7-hXzQ2ZlyUH8o~{Vi=i8>#&iMH5&Veb9s=Ti?3^{+6DF94 zdjz!0CYX<&p_^s_#QTdN;+23p`l=Z5lK}Cq2%he1@H|Tpuflya4Ys=s@oHFU4Ns0M z5Fdso>l&U0_eFdJ-+>#+a5OmSVid#4u;&^c$`Y){_ndSwg<%6et*D8qfV!B5dNlm| zyF(G5iF$OLS`nUEGH^!{?&q24nd;f? z+2?t|v)J3}O?W@_7WpRmuJ=9W+vdN{f0KWY|Hu9*IkR$B~%*@I~c9ZCJ|MHK3l{KI%< zX5bXOJksm$f)mi__AZ?LjiSkOvbM`JN!#PB2R;+OwJ%sBJZbY~h;l~K~BK#ELVT4~H{2Jj|gclM1fba&w+X#O__#47M5&naq z<+?RDLM}oOp$wrv!eE35!Y+?n8;Rd>2&W^|Bg{mYhp-6YY=kJnDulHN34|_$ix4hD zxDsJI!VeH`Mz|f}PK2KzJc#g1go6mbL3keFWrRN>yovB6yaC+5<@so5ey3KRpU{sO z3BAd4JH{!XHF@3_6Fl|We_R3WRh*WJ+Bs%RXKQStm=cakDKktfjS8 zGgt`R-fUYLUp3cki6um{%GK1>9!nxqVymO;<7THN5}hk-J~KOF zYeoI)So0bQxy00Uozd2KN0%hck6O{SF$k0p^`;f;RkJ{b4k@}6Tr|cyI{1x}R1IoBqdO{+D&LNsRZjW7$IV6TjyG_s15Cz+O{g*787&KHZ#>3b%{i5?TXf}n)=4oQL8Ur?N6i)D9XNqH%;MD^lZ=fl*o% z3P73ZSGIZ>DriNsSwE)7+G185mptN$4m6%hq{cW7g`l#T6qX^jw!IaqBGb{83Ol25 zJ`D+m+g2$tteJYAJ5|KdmvJaaA|{Y?*rJ)k8k?;cbd~!~X;%Eg81mcNN<}b|c4vyU z(KWFqRi9WLO{7Mdq-Fg}i0QG88PUY*dZ@IhwTn_uPh7KX*_3GW8tB-xc&xQW)Y{$N zJ4JSRZ#s2*Z)$Q3dMBaldlNJIw0Cl{OM4}yH%Hjg3#A{d5=l`64}NkQPzNRXiuKXf z&e*bLVs7jL(b!>P8e=Akx|SBPFow}=CiN$!PuNP4QL$2s3>vFjdwXkFa(r0vGAK=^ zd}mD5q65-P_iATtG`(Q2>3Cx5 z+IE=E4l`}`)Jh3^HNRHM*qd(4*gM6Rv3Cl0P@)%Ib&l!{o3XI@$aW;eT3&ma;vKM< zGR`)w9ZgL}WU3WQz@9;~+AXs^*4i3v>wrQwug0Wq>s%Ra?&!2I^;ep$E%<4VcC1dW zK)A?rA=V=cx+;x3iX^aFnF(~Kg{j_Tw#KYz8+fmcZXo@mI#$LZ5;u+(E?e6~M|72# z9ZMvdR!7^!bSnl^V{x1Yk7f|teHzvzVy7tOwbK+zshx>f0^^oamJEWOV`{q6P>v*_ z)~>79FmQ^jsdrj>EhkR3Yv`3~S12f=T9VFAWXQJ?wqyk?=S=8Xr}-vCaoH8BIYWF&$Wq>)Kl8M6EUTcHfCsGupxpBU!mY9ah(L6@?v-#;pw7v&e!M z5aW3XUR+?dxk@C5O!fjT0;vgu@oO@PBopxtFV>2zWJzROHqEr~e{+mVWDsPYXiJOK zHLL`&4zYr`r4z8ECyU#0S#n_v9!DGspnOCcc&t^>rG%nLWVLz0;&@w&d4Z_I3KGY( zhpNtwcDA7lttp)y9Z=jA9Z8B<9dC&(YHNpKLVd9o(GpwHxr%t!wX7$lZh<24f;er( zoTNd*utz&vQFTfiZBkXVcIMtY}EVAfHJqc$(KqdBprVQf-taY5?=u(G{`Q`K_IaDdq;6 zceKtmVUZy>lhq1SDrp>;GUN&*}DES%I_7D}b26x&(<#?4)3w%c-uM&jSW2vZ*wnv+3Gotv=g28FLYRFs}O9!XY z;z5%YYmv-8rL%R-j99bTZDK5Gr29+G9S)VJkelb zFM;1V(3N<-+1ZX&3TRzRv>nz)a*`GR1H&_2Vl;+H$IBi8*?CaRG>5!P63On$=_&mV zJ5F@lv~!tOJ$3e+ zXa~lW{60G$%ie2Us#U`GPOydVopJ(+du7V5SlP3bPb^Nrg|--WGr^!axukKE*fvC4 zx?skzG}549;JM|=6)d^c!Y&irNzyD#yBP0BXJT(7XyHpJW6Xmmm#A2a-Aj%8A zr6pv?OtjJNrWt#xme>Y3jm*qkaX!u-c`e22O{z@0G_q2Hr=v6(Go`DGWkk9wYLVgP z6y~p;94{Cd=@y7~^6F>`^O~jnHt0SqiM^v-*xA+*UmF`Xvkh8pwl~JC^>HkbVqRxQ zT?f{(6`c?w+Ad5uch=e{tQ4IL)LB-vE0rF{gVvUoCR415b%|E8WylGQf#V!&g`c>g zL#&Q%SXQ@i`V?HgT{*iB0kKia29s$PiTY7VnPMx|E?3wab=J33g*F+6y4i}ili}^1 zNNa6;RVRk+81|o-GWy?kg93eFhs+~At*|Pd53~)cktwQNhB2{Rlm~UaC(VT_%_^pbM##WdZ&kj2m)m!cK0~WTGttqQY~bMx(+8p$ZcML1<7n*X73klnaEtBeQCyvYwNVE80wp4#@kYC zafGlwHkW29Jefqhncx=5C{AM7QRd?x8q+b^gj2Flfox|@`fQkqG{w;d>7GcljN?Hp zzw&&KOfR<@E*K0>3q)v*cCq2h%pi+GDOU1wrVhd8njNcY>|-06;Vfags~R%wK2EY? z7{aL=nqeoAhx;D&HLt z6^z?nCaVQC$|lGoM;lA-71>p#eD+Qdg2_!tAdo?FYL(*%XN-dcn>Udj%(Z=3vD(r7o!!oz8RHXUawXFry*GhEEv+T{2oL2(l z%xXR#8(8djXh5XeQ;d{=`U30W%(j)Ls7>yIspgR*aO>*Z%>gVHnMFqmJk0nu%go5p zwgjUZ*fpWu0*vR(wwQgwqa~i?KD0!3wALe`0nN=9_lt zG=-q+31u1H8PW=a>9LFLg+$G6w8_Fl*io0!{4RX28Y(T0|f0^ntk0%OMz$EF!ZC4qIW zc{O$>4YBpHRvYOg{^ebVZ1qt>zkqG+PGxxwV)jkL^9ZI`Na zBI-y{JKu`0M}L!iF_MIv(GbI`(3+Uo-7vboZe0DiF*Tza#*VESGiB6-n(#o-iY zX5|shBxSW|O59usI|(R0ykC`gxkQUB{tSZTO_oBk4K<*sd7+$%WTc; zS$c+?)&t}#z~^d9tc`cjVTxpGcV`l9Z#BEf4b2+P2At{1ghmtV>HKILrkP^FYkYI8 z>4I34pNe5r8*ogC9%YwH<-#0CEWR=&_0*LsVJez%?x#4ZwRhT*B)&cleZd3Iq^?ct zjJ3|9^GovMC1Dv;Y@ZiWeZc07V@QO0@dSEM&`U zy6~BiX>%akNS5)7OY%>*Z6c2$wT`$|+i5+kWxr>yYrC_~ zG6W}_R@!((xq+CWjvJ?f`!D=#dNJZ!*b`P#8sgK_%#rUh-K z0a|QVb>ALUH&&3wDytN6tL1sHdd8t9#%cC`np}~_Pmy8HZ)HgCU?I|p$3wa zs#9{2SI>sIs_i&P!QGrK4i z(QRL3V4dG6) zS)l*MGVT00Lp!_5wyTykR~tgX%Is2d@7iW}aeW!b0Qfu%m z$jz+Xxx;EjW4^QCwz?Fz{J7?;?X453(Y$)ooSAK=#%lLQiZJjhTVDE#Ys3>6-d3%% z8FBI}x-I7DXO)vK#jBjs59Ka*8*zc=)V6Gxx&x70=F&GL9z1oIsgPGZ7POSxardXn zlpISKm>nsV+CHnayd%X8?quS)yK_tNWZ^cmIma$scGt4e#>OCc*H{vA#akTB^L?8u_qcW!{6%^MZ#%nraSPXUKG1-w8w5?^ zx;!t-J8?2@{RXWp(|(m}o{uVcD|WtSbXN_dN=;EETHGU5cN1)nwFK@8{mwy`r`Wf- zK#dh1*La5d)vjymkBv7V8))tRlK$_-ZC?jx4Z7wHPp#bI%5CuPP@c%=>y*3Zk4{s} zmK>dOcPd5mph$=s6i=3#kq9;;=DR#X@fug=sK1Ih8~hWdXDll$&)C;_oTHD2=_ah6 z$Wr^?<-v>Bcr*NF0uj?mKeu5`gPms4)3#Yn-(%HH8#k*!soAUzoCf1M$Ksy-1=^H~ zcup5MUf`Ofu)He33KJ zewQAW>CtUF$&2hxQU7UL@-=wq6dG4WJ~z1lg(uE=OsjA!nG;Mfh{ zfuAMoRR*jvhC9qrRPg4kon9T+O#aunCUchz+E>u z*Z)p=A~m%jEAGDkr~5E*4NWSFJVC!K8*(2?wPM(0viTaL2#NBV8S9u40MYi$PnmKJPh1v-dK!hw!{lAraa6G~d$mLq^|MqwoR}W!u48?bPq?>mU-pF8g^{p-VP?87dT#Nqsk&vNFfYr%m(9@X;8V9VA-jp|n@ht3;iJ}%cyTiVvYKYPu4eZ`fF^rbk^#(X4;DLHggbq@UN zP~*O~8Lq~FTl;CzqW$hHPLfNC$JjH~vKYFu2&eL@EX+V-Ch{EW#+Gl8hm+k)AG*e{ zi*u#9(oc>3Q~XJC?6^{^o0~M|8L(8xZP}WS08g2;q(Sa*H=RkpqV*iDDYNx{R&+?~ z-B`AcB9xcE{GscTQ}$||_R?~5fAD2(O&iZPecJnFcxP!<7XIaZZy2LYn@_@}axm5d zkh1vpGS6}=+vZ*rFrVZIJbg(!9iLwXEShXVNrHX=FKO&6%;w zT4k5cX2wC7(yq1+WGp0!XP3YcZ#*PJe?08s`^>b|t(|Tn&4;dv+9kM8eEkON%y7P0 z4f$&2)XV(Xis+F)%IbnNn3&$%Ty%3fd|uA zUboCcmZExD``AEtM#A5K7mXA9Bpk(lHKXsFVYJ6$i?%M%=3Q$q>-Q4>?=_>#b{-8E>P}c&^2W0hLLs_?9_BFhWV*m7|_-CNWOFM}*Ss8V= zf7a-cCqbH-k?F?l8u2b!NP{JDFTIZDX4{+r$1mu4Sty!$AG1+2x^X2pzj9)cAu~QR z%qAG0jNG$1S0edT3%?S3YpG}3)*MgkG147*0#TavrdfPt5_21XS}jT0YsOl#Hf}yRT86CI;Et<7xlr%ThD$I(-1)H&D ze2}84V)wbYj*U`=qK<_qU(hU2zwyA`7u1j)s+T&_OR}zxJmmd#)gA7}_v0#EmlaF< zl}aGhM1^dLSwKeG9UNsJ%4XG4 z);iKSoxGy0QCrAT+}OHDW;8l&rJ_qFci9X>dL=z!$4}0Pz%*cC;enLNdz_T4q+L@I7|gKggBmp~mk$XwolAMU}q&@{$(U zU5}QKVb8Dk+~efFVz2qW!mnJ#eaD#mg&)%UYs5a0D*AEWUl_O_E45^hg+=JK9sBscCX9fxL)Yq^z<%JD<0YP zMyZd=l5Nby<;vaq2rXwR=V(a6)PF?T^>sK^rl7TRkDFerO@fCz zq;(e2(%GO^y-w}yuBTgl^m7n714Oa;ARA;-N5yb%^q0Q6LYTsg4Lc1RQxK{?t3U(p^TPKRS< z9gdj{syeJx6OKmO9E}({=e(n~90ZkWZ#4*_$&gngMtfA%xDBF_d~dWT-#aFjsxkc| zP)w)$=t;C!6LP_=jEYEC$P4rc@N*BYP!!Nh@Cqe?K7nll{Q?65`lSP2M8t$K2Bz$7{uLYuX~L0|{SA}6ud%e-qcC=W*UB7-;j6LrvA&5cES%Qkw^jvgD2J{zIt8@VAz%R?>{QW<*{^R&j`jE?La6rmvP zVl?#?i)L4@&IVk_$!yhkTF%lja8cO&|9BRIId?U4Ol6}lnp|{ff&=5b$MUx<2rs+UZstp%= zqFPk<>~rcb^_g{giV?_=8yw1spdm+P`NV0_G&+iEU|YjQ&rKLj^RM~w*r@((D;D5A z+6xG`F&6Q7JBgN>s9N(APb+RRkcL#6pL+2JA@!s1BL1RRZULG)~gmRWskBN#Nw37kJLxy# ziEpg|)ooP}*(z9G4)`KUk79%kTqh<6Y`;CGTeALEpGU}6Ff|KY;Yo}z| zA}j-Uqnpu{!Z;L21_ye_a~Oh{)94-8QRGNoHkyoD$TWH>YQBqFDLxTqt#u3|7DgCI z7|HlaPWUi2D?C(NXtE=I06LGNmUU^0k<5id?qKmj&rfs?W=uiCu#5unZzP%uBU2q6 z>`+-B6q`Qpay_)tl2+40t5%{bsd;N6E}0lAn!n*%$e(8iq}C+vNtSN@gR@<(Tnv#V zA9|RIF2q9}21Bv6rp7oJDfauOz=l3*K(_vmfZSGxxQ2a&D4|u^CLhr{j*$%EPIN?v zzVL(<_L|0(b?t<%F-AkVLq+p4cmZEXxwV!8aZ|oFsuV=6y5xbrw(7)&Tsd7(mM)y) zEz4XT;D1|kGIC#KGhS>^P3CR9^6#0Ko(L4j+Pn*KSFX2Dox_VMRIA>Pg}0Hmkvc%r zS^ft-`17c~yVy4deu52woT-7Ru5zqcRG$~Et>;vMQI@9GWyW&fU6xXLRZMASj@}3@)#)Qq>p-Um}xCw zy^vQ9Myp{22aT@(mDVlTGSoG1)@$2cPvultfu+}Q_pKHgiNYKThdB`*#RJJLc?g6+ z=TGFzi7zp3D6;zbz>Uuukb_O}BsbQ(u8;An#F>k!xds=1 zClYXOZ?v`Q&Db8_M6KmdTW^+&d0^~bTW^}8mIDdl#W?Mg1v0v!joMoVe{S$?gTFBN zj=^^gzGv_QgTFNRp}~&~er)g)gP$7w%;4t+zYzRh&R~zhlEDFk6@$YDcN!csxZB`f zgZmBE3{DuFG?D%6YJ`MD*J`l}PGBIIH^xF%K@UOF!@PNs^-7|>>lLrP>y@}s z9mu7uSIniXSAM@(@h4MuvWlN2`OHP%87LOWiDLYKmI9y0flWk> zrsDKx5`G4Y43`zgU&<4cBy%#TFwLx4-U_P|TnOTHY-#{Ev6qR8d5x)FT=#+K)gm)h zeelqnPU62HgydiZSFNcoAAEnbJ{i3Pu{C48mZU36eUU9=Fd9!jYs~ve46O@N3HuK5 z_3Ot4PDnNQ3jVNIRvv;>NOhV`LVhTsW1Wb#Dn82=)`AC6kWK31C8Oq_Aq&D+ML9OH zENcFFOiG-B)L3b7(fZi|O|{q0SJt14)-PLG^JB%b8p$+l9)Q^9594u-)At?7F={HE z?=#h!Aj3#RJ6ZKP1<4(hkyM6Z)cgz1nm_dYPY(0L3jSe@Q|z^*xZp>=lXN5IB{@X|C|f;QxN*>%8?*n3LbcYN1~ruy4`-tMbDPrTgerAjVO<* z`Bj@ zL-jV43-1hnFIM?gW6jv&&wmH#H+yz7+_wEZyMGrsI?KlUGn}6Vp5|Dew+jFDKQ_&? z9#o>9_{|i9B$s@rnzhntV2)O`pzRl}dBX?`y>@dR*Y;Q~ZJTSEe1%17E%W-DNvr|) zcZCZynu8{7Py0pUjV&E89Dnn<;1RZ5kpUa=`gN5AUpFhQun6uq>C^qB7t}YqU0t+{ zW6GVjo~JGCes*Y`;5S&t+kfg?zu+QnwQ#-6w-(`_0ctzj#Z>ugoAr5+Z3Da25!^HU zqDGDuwE(VGv;}vEU0HDw->9@nS=GIc6R7eK(m1#DYm_e;O}aTr^(0NTmdHnEzdmi# zMw`E#D7l@n!)2Dw&2Qj$&?ebt+vt{Xw|tLTojPNntrOke=J%<8RXxP;Tl&%O2cd_L O{g#sdJF@>@68Jw=maifJ diff --git a/GameData/000_FilterExtensions/FilterExtensions.version b/GameData/000_FilterExtensions/FilterExtensions.version index d62dbf6a..6d1b700c 100644 --- a/GameData/000_FilterExtensions/FilterExtensions.version +++ b/GameData/000_FilterExtensions/FilterExtensions.version @@ -1 +1 @@ -{"NAME":"Filter Extensions","URL":"https://github.com/Crzyrndm/FilterExtension/blob/master/GameData/000_FilterExtensions/FilterExtensions.version","DOWNLOAD":"https://github.com/Crzyrndm/FilterExtension/releases","VERSION":{"MAJOR":2,"MINOR":5,"PATCH":1,"BUILD":0},"KSP_VERSION":{"MAJOR":1,"MINOR":1,"PATCH":0}} \ No newline at end of file +{"NAME":"Filter Extensions","URL":"https://github.com/Crzyrndm/FilterExtension/blob/master/GameData/000_FilterExtensions/FilterExtensions.version","DOWNLOAD":"https://github.com/Crzyrndm/FilterExtension/releases","VERSION":{"MAJOR":2,"MINOR":5,"PATCH":2,"BUILD":0},"KSP_VERSION":{"MAJOR":1,"MINOR":1,"PATCH":2}} \ No newline at end of file diff --git a/Testing/TestCategory.cfg b/Testing/TestCategory.cfg index 802f1094..faf7caa4 100644 --- a/Testing/TestCategory.cfg +++ b/Testing/TestCategory.cfg @@ -4,6 +4,5 @@ CATEGORY SUBCATEGORIES { - list = dummy } } \ No newline at end of file From 9ebced328be7e2be5ea159413b83a8a82bbeb663 Mon Sep 17 00:00:00 2001 From: Crzyrndm Date: Sat, 7 May 2016 11:10:44 +1200 Subject: [PATCH 10/15] missed one... --- FilterExtension/Utility/PartType.cs | 7 +------ .../000_FilterExtensions/FilterExtensions.dll | Bin 62464 -> 62464 bytes 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/FilterExtension/Utility/PartType.cs b/FilterExtension/Utility/PartType.cs index b7d71716..20e28385 100644 --- a/FilterExtension/Utility/PartType.cs +++ b/FilterExtension/Utility/PartType.cs @@ -100,12 +100,7 @@ public static bool checkModuleTitle(AvailablePart part, string[] values, bool co if (part.moduleInfos == null) return false; - foreach (AvailablePart.ModuleInfo mi in part.moduleInfos) - { - if (contains == values.Contains(mi.moduleName, StringComparer.OrdinalIgnoreCase)) - return true; - } - return false; + return contains == Contains(values, part.moduleInfos, m => m.moduleName); } /// diff --git a/GameData/000_FilterExtensions/FilterExtensions.dll b/GameData/000_FilterExtensions/FilterExtensions.dll index c5c494e7bf3af57ceba26003d3e58488e5ac0133..cdb8f747b0784d223b20966f624aee719aca683b 100644 GIT binary patch delta 11340 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 delta 11289 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 Date: Sat, 7 May 2016 11:25:48 +1200 Subject: [PATCH 11/15] defaults makes searching these so much easier... --- FilterExtension/Utility/PartType.cs | 16 ++++++++-------- .../000_FilterExtensions/FilterExtensions.dll | Bin 62464 -> 62464 bytes 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/FilterExtension/Utility/PartType.cs b/FilterExtension/Utility/PartType.cs index 20e28385..03b40249 100644 --- a/FilterExtension/Utility/PartType.cs +++ b/FilterExtension/Utility/PartType.cs @@ -379,7 +379,7 @@ public static bool checkPath(AvailablePart part, string[] value) /// /// checks against the attach node sizes on the part /// - public static bool checkPartSize(AvailablePart part, string[] values, bool contains, ConfigNodes.Check.Equality equality) + public static bool checkPartSize(AvailablePart part, string[] values, bool contains = true, ConfigNodes.Check.Equality equality = ConfigNodes.Check.Equality.Equals) { if (part.partPrefab.attachNodes == null) return false; @@ -412,7 +412,7 @@ public static bool checkPartSize(AvailablePart part, string[] values, bool conta /// /// check against the number of crew this part can hold /// - public static bool checkCrewCapacity(AvailablePart part, string[] value, ConfigNodes.Check.Equality equality) + public static bool checkCrewCapacity(AvailablePart part, string[] value, ConfigNodes.Check.Equality equality = ConfigNodes.Check.Equality.Equals) { if (part.partPrefab == null) return false; @@ -439,7 +439,7 @@ public static bool checkCrewCapacity(AvailablePart part, string[] value, ConfigN /// /// check the part mass against a list of values /// - public static bool checkMass(AvailablePart part, string[] value, ConfigNodes.Check.Equality equality) + public static bool checkMass(AvailablePart part, string[] value, ConfigNodes.Check.Equality equality = ConfigNodes.Check.Equality.Equals) { if (part.partPrefab == null) return false; @@ -466,7 +466,7 @@ public static bool checkMass(AvailablePart part, string[] value, ConfigNodes.Che /// /// check the part cost against a string list /// - public static bool checkCost(AvailablePart part, string[] value, ConfigNodes.Check.Equality equality) + public static bool checkCost(AvailablePart part, string[] value, ConfigNodes.Check.Equality equality = ConfigNodes.Check.Equality.Equals) { if (equality == ConfigNodes.Check.Equality.Equals) return value.Contains(part.cost.ToString(), StringComparer.OrdinalIgnoreCase); @@ -490,7 +490,7 @@ public static bool checkCost(AvailablePart part, string[] value, ConfigNodes.Che /// /// check the impact speed at which the part will explode /// - public static bool checkCrashTolerance(AvailablePart part, string[] value, ConfigNodes.Check.Equality equality) + public static bool checkCrashTolerance(AvailablePart part, string[] value, ConfigNodes.Check.Equality equality = ConfigNodes.Check.Equality.Equals) { if (part.partPrefab == null) return false; @@ -517,7 +517,7 @@ public static bool checkCrashTolerance(AvailablePart part, string[] value, Confi /// /// compares against the part max temp /// - public static bool checkTemperature(AvailablePart part, string[] value, ConfigNodes.Check.Equality equality) + public static bool checkTemperature(AvailablePart part, string[] value, ConfigNodes.Check.Equality equality = ConfigNodes.Check.Equality.Equals) { if (part.partPrefab == null) return false; @@ -543,7 +543,7 @@ public static bool checkTemperature(AvailablePart part, string[] value, ConfigNo /// /// bulkhead profiles used to id part shapes for stock editor. parts with no profiles get dumped in srf /// - public static bool checkBulkHeadProfiles(AvailablePart part, string[] values, bool contains) + public static bool checkBulkHeadProfiles(AvailablePart part, string[] values, bool contains = true) { if (part.bulkheadProfiles == null) return values.Contains("srf"); @@ -551,7 +551,7 @@ public static bool checkBulkHeadProfiles(AvailablePart part, string[] values, bo return contains == Contains(values, part.bulkheadProfiles.Split(',')); } - public static bool checkTags(AvailablePart part, string[] values, bool contains) + public static bool checkTags(AvailablePart part, string[] values, bool contains = true) { if (string.IsNullOrEmpty(part.tags)) return false; diff --git a/GameData/000_FilterExtensions/FilterExtensions.dll b/GameData/000_FilterExtensions/FilterExtensions.dll index cdb8f747b0784d223b20966f624aee719aca683b..9d3f26ef797c11a325b6003a061e83bbd33a5526 100644 GIT binary patch delta 430 zcmZp8!QAkIc|r%%bM=W`a*XpPt_OMg|Y&iHgFL6&d3hmrQPCtY>VP z%*Z6na$yPs!(_z{;mH%;s%{Qo3JJ3;F=Aj)u47<$0Hiy#f$ZRtqRhPXVvsQzaSRM0 z%0RKuV1_-73=9H5F=h8qPZuD4X7b$#cSifos*&u{lP46j#R~|qFqE?~FfcM?0o5@v zNDBxEFjG%t^4((D$uEipCLbx0+I*v=h}(pT;VEMX3kSnX#tn=d3}3+{BNK?t3nnGO zq$-ePVlZS1VPRshW!mh~@Q`b>dUw05ilvd0o2!eHfv&58iJ7j6i-nV}rHQkluDOM) zxv7zvp^KZN)8v`qN4C*MaFo>lF5yX^^5_N z8JUDxXG~#WV4S@1t@-8vrjRg88zTk=U|?Y=2a=2oSwNLc4AMZ7 znI<9$KwBU-g6-l4S_TuEyr)EI^No@s?#&Gi_qjGFcDKr^m>F1_8<`rp=o&kjxapdh zS-R+2SeU!$Iy)Jd8Cf`+IUBn=Z{}KQWGJAkIz7SPdaheX?P)fRV~5{t_PNC(% Date: Sat, 7 May 2016 19:48:51 +1200 Subject: [PATCH 12/15] simplify part blocking search --- FilterExtension/Editor.cs | 74 +++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 41 deletions(-) diff --git a/FilterExtension/Editor.cs b/FilterExtension/Editor.cs index b1ff46a9..e396e000 100644 --- a/FilterExtension/Editor.cs +++ b/FilterExtension/Editor.cs @@ -1,4 +1,5 @@ -using System; +using KSP.UI.Screens; +using System; using System.Collections; using System.Collections.Generic; using System.Linq; @@ -8,15 +9,15 @@ namespace FilterExtensions { using ConfigNodes; using Utility; - using KSP.UI.Screens; [KSPAddon(KSPAddon.Startup.EditorAny, false)] - class Editor : MonoBehaviour + public class Editor : MonoBehaviour { public static Editor instance; public static bool subcategoriesChecked; public bool ready = false; - void Start() + + public void Start() { instance = this; StartCoroutine(editorInit()); @@ -27,14 +28,16 @@ void Start() /// public static HashSet blackListedParts; - IEnumerator editorInit() + private IEnumerator editorInit() { ready = false; while (PartCategorizer.Instance == null) yield return null; + if (Settings.debug) Core.Log("Starting on Stock Filters"); + // stock filters // If I edit them later everything breaks // custom categories can't be created at this point @@ -56,7 +59,7 @@ IEnumerator editorInit() yield return null; if (Settings.debug) Core.Log("Starting on general categories"); - + // all FE categories foreach (customCategory c in Core.Instance.Categories) { @@ -73,7 +76,7 @@ IEnumerator editorInit() // generate the set of parts to block if (blackListedParts == null) { - #warning not known until now which parts are never visible so some completely empty subcategories may be present on the first VAB entry +#warning not known until now which parts are never visible so some completely empty subcategories may be present on the first VAB entry findPartsToBlock(); } @@ -84,7 +87,7 @@ IEnumerator editorInit() c.initialise(); } - // + // foreach (PartCategorizer.Category c in PartCategorizer.Instance.filters) namesAndIcons(c); @@ -172,43 +175,32 @@ public static void setSelectedCategory() } } - /// - /// checks all subcats not created by FE for visibility of parts set to "category = none" - /// - void findPartsToBlock() + private void findPartsToBlock() { - PartModuleFilter pmf; - // all parts that may not be visible - List partsToCheck = PartLoader.Instance.parts.FindAll(ap => ap.category == PartCategories.none - && !(Core.Instance.filterModules.TryGetValue(ap.name, out pmf) && pmf.hasForceAdd())); + blackListedParts = new HashSet(); + + List subcategoriesToCheck = new List(); + // Only checking the category which should be Filter by Function (should I find FbF explcitly?) PartCategorizer.Category mainCat = PartCategorizer.Instance.filters[0]; - // has a reference to all the subcats that FE added to the category - customCategory customMainCat = Core.Instance.Categories.Find(C => C.categoryName == mainCat.button.categoryName); - // loop through the subcategories. Mark FE ones as seen incase of duplication and check the shortlisted parts against other mods categories for visibility - HashSet subCatsSeen = new HashSet(); - for (int i = 0; i < mainCat.subcategories.Count; i++) + + AvailablePart part; + for (int i = 0; i < PartLoader.Instance.parts.Count; ++i) { - PartCategorizer.Category subCat = mainCat.subcategories[i]; - // if the name is an FE subcat and the category should have that FE subcat and it's not the duplicate of one already seen created by another mod, mark it seen and move on - if (Core.Instance.subCategoriesDict.ContainsKey(subCat.button.categoryName) && customMainCat.subCategories.Any(subItem => string.Equals(subItem.subcategoryName, subCat.button.categoryName, StringComparison.CurrentCulture))) - subCatsSeen.Add(subCat.button.categoryName); - else // subcat created by another mod - { - int j = 0; - while (j < partsToCheck.Count) - { - if (subCat.exclusionFilter.FilterCriteria.Invoke(partsToCheck[j])) // if visible - partsToCheck.RemoveAt(j); - else - j++; - } - } + part = PartLoader.Instance.parts[i]; + if (part.category == PartCategories.none && !checkPartVisible(part, mainCat)) + blackListedParts.Add(part.name); } - // add the blocked parts to a hashset for later lookup - blackListedParts = new HashSet(); - foreach (AvailablePart ap in partsToCheck) - blackListedParts.Add(ap.name); + } + + private bool checkPartVisible(AvailablePart part, PartCategorizer.Category category) + { + for (int i = 0; i < category.subcategories.Count; ++i) + { + if (category.subcategories[i].exclusionFilter.FilterCriteria.Invoke(part)) + return true; + } + return false; } } -} +} \ No newline at end of file From 07b4c63a83079c2ce6b7fc354d70f61491fdbae7 Mon Sep 17 00:00:00 2001 From: Crzyrndm Date: Sat, 7 May 2016 20:07:55 +1200 Subject: [PATCH 13/15] random extra variable... --- FilterExtension/Editor.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/FilterExtension/Editor.cs b/FilterExtension/Editor.cs index e396e000..888f638e 100644 --- a/FilterExtension/Editor.cs +++ b/FilterExtension/Editor.cs @@ -179,8 +179,6 @@ private void findPartsToBlock() { blackListedParts = new HashSet(); - List subcategoriesToCheck = new List(); - // Only checking the category which should be Filter by Function (should I find FbF explcitly?) PartCategorizer.Category mainCat = PartCategorizer.Instance.filters[0]; From a82a5ac58e5f85714f34a0ab0de1c5ba3fe09af7 Mon Sep 17 00:00:00 2001 From: Crzyrndm Date: Sat, 7 May 2016 20:32:27 +1200 Subject: [PATCH 14/15] contains bool not fed in far enough, use less Linq extensions so exceptions are less wall of words --- FilterExtension/ConfigNodes/Check.cs | 90 ++++++------------ FilterExtension/ConfigNodes/Filter.cs | 9 +- .../ConfigNodes/customSubCategory.cs | 58 ++++++++++- FilterExtension/Utility/PartType.cs | 27 +++--- .../000_FilterExtensions/FilterExtensions.dll | Bin 62464 -> 61952 bytes 5 files changed, 104 insertions(+), 80 deletions(-) diff --git a/FilterExtension/ConfigNodes/Check.cs b/FilterExtension/ConfigNodes/Check.cs index 5f54aeca..15ddcff5 100644 --- a/FilterExtension/ConfigNodes/Check.cs +++ b/FilterExtension/ConfigNodes/Check.cs @@ -167,93 +167,63 @@ public Check(string Type, string Value, bool Invert = false, bool Contains = tru checks = new List(); } - public bool checkPart(AvailablePart part, int depth = 0) + public bool checkResult(AvailablePart part, int depth = 0) { - bool result = true; switch (type.typeEnum) { case CheckType.moduleTitle: // check by module title - result = PartType.checkModuleTitle(part, values, contains); - break; + return invert ^ PartType.checkModuleTitle(part, values, contains); case CheckType.moduleName: - result = PartType.checkModuleName(part, values, contains); - break; + return invert ^ PartType.checkModuleName(part, values, contains); case CheckType.partName: // check by part name (cfg name) - result = PartType.checkName(part, values); - break; + return invert ^ PartType.checkName(part, values); case CheckType.partTitle: // check by part title (in game name) - result = PartType.checkTitle(part, values); - break; + return invert ^ PartType.checkTitle(part, values); case CheckType.resource: // check for a resource - result = PartType.checkResource(part, values, contains); - break; + return invert ^ PartType.checkResource(part, values, contains); case CheckType.propellant: // check for engine propellant - result = PartType.checkPropellant(part, values, contains); - break; + return invert ^ PartType.checkPropellant(part, values, contains); case CheckType.tech: // check by tech - result = PartType.checkTech(part, values); - break; + return invert ^ PartType.checkTech(part, values); case CheckType.manufacturer: // check by manufacturer - result = PartType.checkManufacturer(part, values); - break; + return invert ^ PartType.checkManufacturer(part, values); case CheckType.folder: // check by mod root folder - result = PartType.checkFolder(part, values); - break; + return invert ^ PartType.checkFolder(part, values); case CheckType.path: // check by part folder location - result = PartType.checkPath(part, values); - break; + return invert ^ PartType.checkPath(part, values); case CheckType.category: - result = PartType.checkCategory(part, values); - break; + return invert ^ PartType.checkCategory(part, values); case CheckType.size: // check by largest stack node size - result = PartType.checkPartSize(part, values, contains, equality); - break; + return invert ^ PartType.checkPartSize(part, values, contains, equality); case CheckType.crew: - result = PartType.checkCrewCapacity(part, values, equality); - break; + return invert ^ PartType.checkCrewCapacity(part, values, equality); case CheckType.custom: // for when things get tricky - result = PartType.checkCustom(part, values); - break; + return invert ^ PartType.checkCustom(part, values); case CheckType.mass: - result = PartType.checkMass(part, values, equality); - break; + return invert ^ PartType.checkMass(part, values, equality); case CheckType.cost: - result = PartType.checkCost(part, values, equality); - break; + return invert ^ PartType.checkCost(part, values, equality); case CheckType.crashTolerance: - result = PartType.checkCrashTolerance(part, values, equality); - break; + return invert ^ PartType.checkCrashTolerance(part, values, equality); case CheckType.maxTemp: - result = PartType.checkTemperature(part, values, equality); - break; + return invert ^ PartType.checkTemperature(part, values, equality); case CheckType.profile: - result = PartType.checkBulkHeadProfiles(part, values, contains); - break; + return invert ^ PartType.checkBulkHeadProfiles(part, values, contains); + case CheckType.subcategory: + return invert ^ PartType.checkSubcategory(part, values, depth); + case CheckType.tag: + return invert ^ PartType.checkTags(part, values, contains); case CheckType.check: - for (int i = 0; i < checks.Count; i++ ) + for (int i = 0; i < checks.Count; i++) { - if (!checks[i].checkPart(part)) - { - result = false; - break; - } + if (invert == checks[i].checkResult(part)) + return false; } - break; - case CheckType.subcategory: - result = PartType.checkSubcategory(part, values, depth); - break; - case CheckType.tag: - result = PartType.checkTags(part, values, contains); - break; + return true; default: - Core.Log("invalid Check type specified"); - result = false; - break; + Core.Log("invalid Check type specified", Core.LogLevel.Warn); + return invert ^ false; } - - if (invert) - return !result; - return result; } /// diff --git a/FilterExtension/ConfigNodes/Filter.cs b/FilterExtension/ConfigNodes/Filter.cs index fd4b12a6..65892891 100644 --- a/FilterExtension/ConfigNodes/Filter.cs +++ b/FilterExtension/ConfigNodes/Filter.cs @@ -57,9 +57,14 @@ public object Clone() return new Filter(this); } - internal bool checkFilter(AvailablePart part, int depth = 0) + public bool filterResult(AvailablePart part, int depth = 0) { - return invert ? !checks.All(c => c.checkPart(part, depth)) : checks.All(c => c.checkPart(part, depth)); + for(int i = 0; i < checks.Count; ++i ) + { + if(!checks[i].checkResult(part, depth)) + return invert; + } + return !invert; } /// diff --git a/FilterExtension/ConfigNodes/customSubCategory.cs b/FilterExtension/ConfigNodes/customSubCategory.cs index 85556c26..f0b18ea6 100644 --- a/FilterExtension/ConfigNodes/customSubCategory.cs +++ b/FilterExtension/ConfigNodes/customSubCategory.cs @@ -69,7 +69,7 @@ public void initialise(PartCategorizer.Category cat) if (cat == null) return; RUI.Icons.Selectable.Icon icon = Core.getIcon(iconName); - PartCategorizer.AddCustomSubcategoryFilter(cat, this.subCategoryTitle, icon, p => checkFilters(p)); + PartCategorizer.AddCustomSubcategoryFilter(cat, this.subCategoryTitle, icon, p => checkPartFilters(p)); } /// @@ -101,7 +101,7 @@ public object Clone() /// /// /// - public bool checkFilters(AvailablePart part, int depth = 0) + public bool checkPartFilters(AvailablePart part, int depth = 0) { if (Editor.blackListedParts != null) { @@ -120,7 +120,57 @@ public bool checkFilters(AvailablePart part, int depth = 0) return false; } - return ((!template.Any() || template.Any(t => t.checkFilter(part, depth))) && filters.Any(f => f.checkFilter(part, depth))); // part passed a template if present, and a subcategory filter + return checkTemplate(part, depth); + } + + /// + /// Go through the category template filters. If the template list is empty or the part matches one of the template filters, go on to check against the filters of this subcategory + /// + /// + /// + /// + private bool checkTemplate(AvailablePart ap, int depth = 0) + { + if (template.Count == 0) + return checkFilters(ap, depth); + else + { + Filter t; + for (int i = 0; i < template.Count; ++i) + { + t = template[i]; + if (t.filterResult(ap, depth)) + { + return checkFilters(ap, depth); + } + } + return false; + } + } + + /// + /// Go through the filters of this subcategory. If the filter list is empty or the part matches one of the filters we can accept that part into this subcategory + /// Templates have already been checked at this point + /// if there is no template or filter, hasFilters property will be false and this subcategory will be removed prior to this point + /// + /// + /// + /// + private bool checkFilters(AvailablePart ap, int depth = 0) + { + if (filters.Count == 0) + return true; + else + { + Filter f; + for (int i = 0; i < filters.Count; ++i) + { + f = filters[i]; + if (f.filterResult(ap, depth)) + return true; + } + return false; + } } /// @@ -144,7 +194,7 @@ public bool checkSubCategoryHasParts(string category) if (pmf.CheckForForceBlock(subCategoryTitle)) return false; } - if (checkFilters(PartLoader.Instance.parts[i])) + if (checkPartFilters(PartLoader.Instance.parts[i])) return true; } diff --git a/FilterExtension/Utility/PartType.cs b/FilterExtension/Utility/PartType.cs index 03b40249..8220937b 100644 --- a/FilterExtension/Utility/PartType.cs +++ b/FilterExtension/Utility/PartType.cs @@ -24,7 +24,7 @@ public static bool checkSubcategory(AvailablePart part, string[] value, int dept foreach (string s in value) { FilterExtensions.ConfigNodes.customSubCategory subcategory; - if (Core.Instance.subCategoriesDict.TryGetValue(s, out subcategory) && subcategory.checkFilters(part, ++depth)) + if (Core.Instance.subCategoriesDict.TryGetValue(s, out subcategory) && subcategory.checkPartFilters(part, ++depth)) return true; } return false; @@ -100,7 +100,7 @@ public static bool checkModuleTitle(AvailablePart part, string[] values, bool co if (part.moduleInfos == null) return false; - return contains == Contains(values, part.moduleInfos, m => m.moduleName); + return Contains(values, contains, part.moduleInfos, m => m.moduleName); } /// @@ -308,7 +308,6 @@ public static bool checkName(AvailablePart part, string[] value) /// public static bool checkTitle(AvailablePart part, string[] value) { - return value.Any(s => part.title.IndexOf(s, StringComparison.OrdinalIgnoreCase) != -1); } @@ -319,7 +318,7 @@ public static bool checkResource(AvailablePart part, string[] values, bool conta { if (part.partPrefab.Resources == null) return false; - return contains == Contains(values, part.partPrefab.Resources.list, r => r.resourceName); + return Contains(values, contains, part.partPrefab.Resources.list, r => r.resourceName, r => r.amount > 0); } /// @@ -331,7 +330,7 @@ public static bool checkPropellant(AvailablePart part, string[] values, bool con for (int i = 0; i < part.partPrefab.Modules.Count; ++i ) { e = part.partPrefab.Modules[i] as ModuleEngines; - if (e != null && contains == Contains(values, e.propellants, p => p.name)) + if (e != null && Contains(values, contains, e.propellants, p => p.name)) return true; } return false; @@ -385,7 +384,7 @@ public static bool checkPartSize(AvailablePart part, string[] values, bool conta return false; if (equality == ConfigNodes.Check.Equality.Equals) - return contains == Contains(values, part.partPrefab.attachNodes, n => n.size.ToString()); + return Contains(values, contains, part.partPrefab.attachNodes, n => n.size.ToString()); else // only compare against the first value here { if (values.Length > 1) @@ -548,7 +547,7 @@ public static bool checkBulkHeadProfiles(AvailablePart part, string[] values, bo if (part.bulkheadProfiles == null) return values.Contains("srf"); - return contains == Contains(values, part.bulkheadProfiles.Split(',')); + return Contains(values, contains, part.bulkheadProfiles.Split(',')); } public static bool checkTags(AvailablePart part, string[] values, bool contains = true) @@ -556,7 +555,7 @@ public static bool checkTags(AvailablePart part, string[] values, bool contains if (string.IsNullOrEmpty(part.tags)) return false; - return contains == Contains(values, part.tags.Split(new char[4] { ' ', ',', '|', ';' }, StringSplitOptions.RemoveEmptyEntries)); + return Contains(values, contains, part.tags.Split(new char[4] { ' ', ',', '|', ';' }, StringSplitOptions.RemoveEmptyEntries)); } /// @@ -618,31 +617,31 @@ public static bool isAdapter(AvailablePart part) return part.partPrefab.attachNodes[0].size != part.partPrefab.attachNodes[1].size; } - public static bool Contains(string[] CheckParams, IEnumerable partParams) + public static bool Contains(string[] CheckParams, bool contains, IEnumerable partParams) { foreach(string s in partParams) { - if (CheckParams.Contains(s.Trim(), StringComparer.OrdinalIgnoreCase)) + if (contains == CheckParams.Contains(s.Trim(), StringComparer.OrdinalIgnoreCase)) return true; } return false; } - public static bool Contains(string[] CheckParams, IEnumerable partParams, Func ToStringFunc) + public static bool Contains(string[] CheckParams, bool contains, IEnumerable partParams, Func ToStringFunc) { foreach (T t in partParams) { - if (CheckParams.Contains(ToStringFunc(t).Trim(), StringComparer.OrdinalIgnoreCase)) + if (contains == CheckParams.Contains(ToStringFunc(t).Trim(), StringComparer.OrdinalIgnoreCase)) return true; } return false; } - public static bool Contains(string[] CheckParams, IEnumerable partParams, Func ToStringFunc, Func selectorFunc) + public static bool Contains(string[] CheckParams, bool contains, IEnumerable partParams, Func ToStringFunc, Func selectorFunc) { foreach (T t in partParams) { - if (selectorFunc(t) && CheckParams.Contains(ToStringFunc(t).Trim(), StringComparer.OrdinalIgnoreCase)) + if (selectorFunc(t) && contains == CheckParams.Contains(ToStringFunc(t).Trim(), StringComparer.OrdinalIgnoreCase)) return true; } return false; diff --git a/GameData/000_FilterExtensions/FilterExtensions.dll b/GameData/000_FilterExtensions/FilterExtensions.dll index 9d3f26ef797c11a325b6003a061e83bbd33a5526..51022291c5bbfadc9f17235cb30b86946980cd02 100644 GIT binary patch delta 16793 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 H_Llz(Xij(2 delta 17526 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 Date: Sat, 7 May 2016 23:49:37 +1200 Subject: [PATCH 15/15] update logging levels where appropriate --- FilterExtension/ConfigNodes/customCategory.cs | 10 +++++----- .../ConfigNodes/customSubCategory.cs | 4 ++-- FilterExtension/Core.cs | 4 ++-- FilterExtension/Editor.cs | 14 ++++++-------- .../000_FilterExtensions/FilterExtensions.dll | Bin 61952 -> 61952 bytes 5 files changed, 15 insertions(+), 17 deletions(-) diff --git a/FilterExtension/ConfigNodes/customCategory.cs b/FilterExtension/ConfigNodes/customCategory.cs index e0da4d6b..789bcca5 100644 --- a/FilterExtension/ConfigNodes/customCategory.cs +++ b/FilterExtension/ConfigNodes/customCategory.cs @@ -151,12 +151,12 @@ public void initialise() { if (string.IsNullOrEmpty(categoryName)) { - Core.Log("Category name is null or empty"); + Core.Log("Category name is null or empty", Core.LogLevel.Warn); return; } if (!hasSubCategories()) { - Core.Log(categoryName + " has no subcategories"); + Core.Log(categoryName + " has no subcategories", Core.LogLevel.Warn); return; } PartCategorizer.Category category; @@ -173,7 +173,7 @@ public void initialise() { if (!PartCategorizer.Instance.filters.TryGetValue(c => c.button.categoryName == categoryName, out category)) { - Core.Log("No category of this name was found to manipulate: " + categoryName); + Core.Log("No category of this name was found to manipulate: " + categoryName, Core.LogLevel.Warn); return; } else if (behaviour == categoryBehaviour.Replace) @@ -197,7 +197,7 @@ public void initSubcategory(int index, subCategoryItem toInit, PartCategorizer.C if (conflictsList.Contains(subCategories[j].subcategoryName)) { // if so, we skip this subcategory - Core.Log("Filters duplicated in category {0} between subCategories:\r\n{1} and {2}", Core.LogLevel.Log, categoryName, toInit.ToString(), subCategories[j].subcategoryName); + Core.Log("Filters duplicated in category {0} between subCategories:\r\n{1} and {2}", Core.LogLevel.Warn, categoryName, toInit.ToString(), subCategories[j].subcategoryName); return; } } @@ -205,7 +205,7 @@ public void initSubcategory(int index, subCategoryItem toInit, PartCategorizer.C customSubCategory subcategory = null; if (!Core.Instance.subCategoriesDict.TryGetValue(toInit.ToString(), out subcategory)) { - Core.Log("subcategory {0} not found in subcategories Dictionary", Core.LogLevel.Log, toInit.ToString()); + Core.Log("subcategory {0} not found in subcategories Dictionary", Core.LogLevel.Warn, toInit.ToString()); return; } diff --git a/FilterExtension/ConfigNodes/customSubCategory.cs b/FilterExtension/ConfigNodes/customSubCategory.cs index f0b18ea6..9af4801b 100644 --- a/FilterExtension/ConfigNodes/customSubCategory.cs +++ b/FilterExtension/ConfigNodes/customSubCategory.cs @@ -201,9 +201,9 @@ public bool checkSubCategoryHasParts(string category) if (Settings.debug) { if (!string.IsNullOrEmpty(category)) - Core.Log(subCategoryTitle + " in category " + category + " has no valid parts and was not initialised"); + Core.Log(subCategoryTitle + " in category " + category + " has no valid parts and was not initialised", Core.LogLevel.Warn); else - Core.Log(subCategoryTitle + " has no valid parts and was not initialised"); + Core.Log(subCategoryTitle + " has no valid parts and was not initialised", Core.LogLevel.Warn); } return false; } diff --git a/FilterExtension/Core.cs b/FilterExtension/Core.cs index e4efbcee..73c7a90e 100644 --- a/FilterExtension/Core.cs +++ b/FilterExtension/Core.cs @@ -58,7 +58,7 @@ void Awake() { instance = this; DontDestroyOnLoad(this); - Log(string.Empty); + Log(string.Empty, LogLevel.Warn); getConfigs(); getPartData(); @@ -141,7 +141,7 @@ private void getPartData() if (!partPathDict.ContainsKey(p.name)) partPathDict.Add(p.name, p.partUrl); else - Log(p.name + " duplicated part key in part path dictionary"); + Log(p.name + " duplicated part key in part path dictionary", LogLevel.Warn); if (PartType.isEngine(p)) processEnginePropellants(p); diff --git a/FilterExtension/Editor.cs b/FilterExtension/Editor.cs index 888f638e..3aa90a99 100644 --- a/FilterExtension/Editor.cs +++ b/FilterExtension/Editor.cs @@ -36,7 +36,7 @@ private IEnumerator editorInit() yield return null; if (Settings.debug) - Core.Log("Starting on Stock Filters"); + Core.Log("Starting on Stock Filters", Core.LogLevel.Log); // stock filters // If I edit them later everything breaks @@ -58,7 +58,7 @@ private IEnumerator editorInit() for (int i = 0; i < 4; i++) yield return null; if (Settings.debug) - Core.Log("Starting on general categories"); + Core.Log("Starting on general categories", Core.LogLevel.Log); // all FE categories foreach (customCategory c in Core.Instance.Categories) @@ -71,7 +71,7 @@ private IEnumerator editorInit() for (int i = 0; i < 4; i++) yield return null; if (Settings.debug) - Core.Log("Starting on late categories"); + Core.Log("Starting on late categories", Core.LogLevel.Log); // generate the set of parts to block if (blackListedParts == null) @@ -95,7 +95,7 @@ private IEnumerator editorInit() for (int i = 0; i < 4; i++) yield return null; if (Settings.debug) - Core.Log("Starting on removing categories"); + Core.Log("Starting on removing categories", Core.LogLevel.Log); List catsToDelete = PartCategorizer.Instance.filters.FindAll(c => c.subcategories.Count == 0); foreach (PartCategorizer.Category cat in catsToDelete) { @@ -110,7 +110,7 @@ private IEnumerator editorInit() for (int i = 0; i < 4; i++) yield return null; if (Settings.debug) - Core.Log("Refreshing parts list"); + Core.Log("Refreshing parts list", Core.LogLevel.Log); setSelectedCategory(); subcategoriesChecked = ready = true; @@ -169,9 +169,7 @@ public static void setSelectedCategory() } catch (Exception e) { - Core.Log("Category refresh failed"); - Core.Log(e.InnerException); - Core.Log(e.StackTrace); + Core.Log("Category refresh failed\r\n{0}\r\n{1}", Core.LogLevel.Error, e.InnerException, e.StackTrace); } } diff --git a/GameData/000_FilterExtensions/FilterExtensions.dll b/GameData/000_FilterExtensions/FilterExtensions.dll index 51022291c5bbfadc9f17235cb30b86946980cd02..c1c0885c30f5151a97c9bec786ec60c18e5be240 100644 GIT binary patch delta 540 zcmZp8!rbtLc|r%1%(aPKa*XdLt_)|KGntXGp7G1%M#g%{3ml9LAm9PSObo0H2Bi!P zIg=R}7$<*xWxhFpNt~5Yd~yc63Xtq&UkW6RIY8u1jzmWB&DNYsyg({W>d@TsD*IVC_oLnDKZz%+()3{RjuTY+$vb3jwPb9eGH znrvpRoy+KXN=T1EnIRNNRx=y~lEz@RHA6IzUCgirNJ=x<14(VLxHCf$klhV*l^%mP zSR@)uCNp$xeqATc!l<&Dz4<;9qt52%t^X8MERCJb-7HKkbuA2yTy;$hOigqx9bJue zEuD=FObwjOjExPAHghhIHehs~oO)ePm6w4F=nMmfS_TNq5XfSP{BeA;USo*EtjBW{ z0=5|oZC-L+N{EY-omog%sNtoo%;aM)kBKla9D&9s$m91wY=w!6VvH9yZ++#-xS8+G SFJ`6>7Mle>yl0$fzzzUe1%yNZ delta 528 zcmZp8!rbtLc|r%%(&ZDoac}s3L zkrxx|1scex5y`;7rY*yyu?k2RZBt|@(6D1*;1b)c=%>%l$UQkQ^q!*;cae%RLjkf5 z_WW2zpel_Bpf2`&e~=C&^X@TdF)#{%oy&0J27}S&j4&QX*$`z02IbIThL{Eh29Tt( zd#I-ikj??}Uu>QjK2=n#>jxHvS z=B{RzuA3Q`M;kEePmaB=C&=);px9I6&{41cbJbi|mOq=fdBb%nAr5wSCLvv+hL@AC xygVkf1sZ=K51s?D6(%Z*F&@}_^pz*$WCuop&3tcuF*7}|*ev+rJ>x_Jb^v5Cg#7>j