From 09e607db9948a3563fe7ed0f85e0cdd9497be379 Mon Sep 17 00:00:00 2001 From: Shadowghost Date: Fri, 15 May 2026 11:55:49 +0200 Subject: [PATCH] Fix integrated provider images --- .gitignore | 1 + .../Plugins/PluginManager.cs | 3 +- Jellyfin.Api/Controllers/PluginsController.cs | 28 ++++++++--- MediaBrowser.Common/Plugins/LocalPlugin.cs | 2 +- MediaBrowser.Common/Plugins/PluginManifest.cs | 9 ++++ .../Plugins/IHasEmbeddedImage.cs | 17 +++++++ .../MediaBrowser.Providers.csproj | 47 +++++++++++++++++- .../Plugins/AudioDb/Plugin.cs | 5 +- .../Plugins/AudioDb/jellyfin-plugin-tadb.svg | 1 + .../Configuration/PluginConfiguration.cs | 10 ++++ .../Plugins/ComicVine/Plugin.cs | 45 +++++++++++++++++ .../ComicVine/jellyfin-plugin-comicvine.svg | 16 ++++++ .../Configuration/PluginConfiguration.cs | 10 ++++ .../Plugins/GoogleBooks/Plugin.cs | 45 +++++++++++++++++ .../jellyfin-plugin-googlebooks.svg | 18 +++++++ .../ListenBrainz/ListenBrainzPlugin.cs | 11 ++-- .../Plugins/MusicBrainz/Plugin.cs | 6 ++- .../jellyfin-plugin-musicbrainz.svg | 36 ++++++++++++++ MediaBrowser.Providers/Plugins/Omdb/Plugin.cs | 5 +- .../Plugins/Omdb/jellyfin-plugin-omdb.png | Bin 0 -> 67173 bytes .../Plugins/StudioImages/Plugin.cs | 6 ++- .../jellyfin-plugin-studioimages.svg | 1 + MediaBrowser.Providers/Plugins/Tmdb/Plugin.cs | 6 ++- .../Plugins/Tmdb/jellyfin-plugin-tmdb.svg | 16 ++++++ 24 files changed, 323 insertions(+), 21 deletions(-) create mode 100644 MediaBrowser.Controller/Plugins/IHasEmbeddedImage.cs create mode 100644 MediaBrowser.Providers/Plugins/AudioDb/jellyfin-plugin-tadb.svg create mode 100644 MediaBrowser.Providers/Plugins/ComicVine/Configuration/PluginConfiguration.cs create mode 100644 MediaBrowser.Providers/Plugins/ComicVine/Plugin.cs create mode 100644 MediaBrowser.Providers/Plugins/ComicVine/jellyfin-plugin-comicvine.svg create mode 100644 MediaBrowser.Providers/Plugins/GoogleBooks/Configuration/PluginConfiguration.cs create mode 100644 MediaBrowser.Providers/Plugins/GoogleBooks/Plugin.cs create mode 100644 MediaBrowser.Providers/Plugins/GoogleBooks/jellyfin-plugin-googlebooks.svg create mode 100644 MediaBrowser.Providers/Plugins/MusicBrainz/jellyfin-plugin-musicbrainz.svg create mode 100644 MediaBrowser.Providers/Plugins/Omdb/jellyfin-plugin-omdb.png create mode 100644 MediaBrowser.Providers/Plugins/StudioImages/jellyfin-plugin-studioimages.svg create mode 100644 MediaBrowser.Providers/Plugins/Tmdb/jellyfin-plugin-tmdb.svg diff --git a/.gitignore b/.gitignore index d5a0367bff..e399f1fc47 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,7 @@ local.properties .classpath .settings/ .loadpath +*.lscache # External tool builders .externalToolBuilders/ diff --git a/Emby.Server.Implementations/Plugins/PluginManager.cs b/Emby.Server.Implementations/Plugins/PluginManager.cs index 91ccb16ef9..f699c99d85 100644 --- a/Emby.Server.Implementations/Plugins/PluginManager.cs +++ b/Emby.Server.Implementations/Plugins/PluginManager.cs @@ -564,7 +564,8 @@ namespace Emby.Server.Implementations.Plugins Id = instance.Id, Status = PluginStatus.Active, Name = instance.Name, - Version = instance.Version.ToString() + Version = instance.Version.ToString(), + ImageResourceName = (instance as IHasEmbeddedImage)?.ImageResourceName }) { Instance = instance diff --git a/Jellyfin.Api/Controllers/PluginsController.cs b/Jellyfin.Api/Controllers/PluginsController.cs index 79e6536fb6..0105ecf7a7 100644 --- a/Jellyfin.Api/Controllers/PluginsController.cs +++ b/Jellyfin.Api/Controllers/PluginsController.cs @@ -226,16 +226,32 @@ public class PluginsController : BaseJellyfinApiController return NotFound(); } - var imagePath = Path.Combine(plugin.Path, plugin.Manifest.ImagePath ?? string.Empty); - if (plugin.Manifest.ImagePath is null || !System.IO.File.Exists(imagePath)) + if (!string.IsNullOrEmpty(plugin.Manifest.ImagePath)) { - return NotFound(); + var imagePath = Path.Combine(plugin.Path, plugin.Manifest.ImagePath); + if (!System.IO.File.Exists(imagePath)) + { + return NotFound(); + } + + Response.Headers.ContentDisposition = "attachment"; + return PhysicalFile(imagePath, MimeTypes.GetMimeType(imagePath)); } - Response.Headers.ContentDisposition = "attachment"; + var resourceName = plugin.Manifest.ImageResourceName; + if (!string.IsNullOrEmpty(resourceName) && plugin.Instance is not null) + { + var stream = plugin.Instance.GetType().Assembly.GetManifestResourceStream(resourceName); + if (stream is null) + { + return NotFound(); + } - imagePath = Path.Combine(plugin.Path, plugin.Manifest.ImagePath); - return PhysicalFile(imagePath, MimeTypes.GetMimeType(imagePath)); + Response.Headers.ContentDisposition = "attachment"; + return File(stream, MimeTypes.GetMimeType(resourceName)); + } + + return NotFound(); } /// diff --git a/MediaBrowser.Common/Plugins/LocalPlugin.cs b/MediaBrowser.Common/Plugins/LocalPlugin.cs index 96af423cc3..4723be1001 100644 --- a/MediaBrowser.Common/Plugins/LocalPlugin.cs +++ b/MediaBrowser.Common/Plugins/LocalPlugin.cs @@ -109,7 +109,7 @@ namespace MediaBrowser.Common.Plugins { var inst = Instance?.GetPluginInfo() ?? new PluginInfo(Manifest.Name, Version, Manifest.Description, Manifest.Id, true); inst.Status = Manifest.Status; - inst.HasImage = !string.IsNullOrEmpty(Manifest.ImagePath); + inst.HasImage = !string.IsNullOrEmpty(Manifest.ImagePath) || !string.IsNullOrEmpty(Manifest.ImageResourceName); return inst; } diff --git a/MediaBrowser.Common/Plugins/PluginManifest.cs b/MediaBrowser.Common/Plugins/PluginManifest.cs index e0847ccea4..e749e85899 100644 --- a/MediaBrowser.Common/Plugins/PluginManifest.cs +++ b/MediaBrowser.Common/Plugins/PluginManifest.cs @@ -107,6 +107,15 @@ namespace MediaBrowser.Common.Plugins [JsonPropertyName("imagePath")] public string? ImagePath { get; set; } + /// + /// Gets or sets the name of an embedded resource in the plugin's assembly + /// that should be served as the plugin image. + /// Used by bundled/integrated plugins whose images are shipped inside the assembly + /// rather than on disk. Ignored when is set. + /// + [JsonIgnore] + public string? ImageResourceName { get; set; } + /// /// Gets or sets the collection of assemblies that should be loaded. /// Paths are considered relative to the plugin folder. diff --git a/MediaBrowser.Controller/Plugins/IHasEmbeddedImage.cs b/MediaBrowser.Controller/Plugins/IHasEmbeddedImage.cs new file mode 100644 index 0000000000..4196cd9f24 --- /dev/null +++ b/MediaBrowser.Controller/Plugins/IHasEmbeddedImage.cs @@ -0,0 +1,17 @@ +namespace MediaBrowser.Controller.Plugins; + +/// +/// Marker interface for integrated/bundled plugins that ship their plugin image as an embedded +/// resource inside the plugin assembly rather than as a file on disk. +/// +/// +/// This interface is intended for plugins compiled into the server. External plugins should +/// continue to declare their image via the imagePath field in meta.json. +/// +public interface IHasEmbeddedImage +{ + /// + /// Gets the name of the embedded resource in this plugin's assembly to serve as the plugin image. + /// + string ImageResourceName { get; } +} diff --git a/MediaBrowser.Providers/MediaBrowser.Providers.csproj b/MediaBrowser.Providers/MediaBrowser.Providers.csproj index 8b727a8cac..181cda3288 100644 --- a/MediaBrowser.Providers/MediaBrowser.Providers.csproj +++ b/MediaBrowser.Providers/MediaBrowser.Providers.csproj @@ -47,22 +47,65 @@ + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MediaBrowser.Providers/Plugins/AudioDb/Plugin.cs b/MediaBrowser.Providers/Plugins/AudioDb/Plugin.cs index 6c2ad0573e..bb6b67286d 100644 --- a/MediaBrowser.Providers/Plugins/AudioDb/Plugin.cs +++ b/MediaBrowser.Providers/Plugins/AudioDb/Plugin.cs @@ -5,12 +5,13 @@ using System; using System.Collections.Generic; using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Plugins; +using MediaBrowser.Controller.Plugins; using MediaBrowser.Model.Plugins; using MediaBrowser.Model.Serialization; namespace MediaBrowser.Providers.Plugins.AudioDb { - public class Plugin : BasePlugin, IHasWebPages + public class Plugin : BasePlugin, IHasWebPages, IHasEmbeddedImage { public Plugin(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer) : base(applicationPaths, xmlSerializer) @@ -29,6 +30,8 @@ namespace MediaBrowser.Providers.Plugins.AudioDb // TODO remove when plugin removed from server. public override string ConfigurationFileName => "Jellyfin.Plugin.AudioDb.xml"; + public string ImageResourceName => GetType().Namespace + ".jellyfin-plugin-tadb.svg"; + public IEnumerable GetPages() { yield return new PluginPageInfo diff --git a/MediaBrowser.Providers/Plugins/AudioDb/jellyfin-plugin-tadb.svg b/MediaBrowser.Providers/Plugins/AudioDb/jellyfin-plugin-tadb.svg new file mode 100644 index 0000000000..94fa55cc9c --- /dev/null +++ b/MediaBrowser.Providers/Plugins/AudioDb/jellyfin-plugin-tadb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/MediaBrowser.Providers/Plugins/ComicVine/Configuration/PluginConfiguration.cs b/MediaBrowser.Providers/Plugins/ComicVine/Configuration/PluginConfiguration.cs new file mode 100644 index 0000000000..d35639d7e8 --- /dev/null +++ b/MediaBrowser.Providers/Plugins/ComicVine/Configuration/PluginConfiguration.cs @@ -0,0 +1,10 @@ +using MediaBrowser.Model.Plugins; + +namespace MediaBrowser.Providers.Plugins.ComicVine; + +/// +/// Plugin configuration for the Comic Vine provider. +/// +public class PluginConfiguration : BasePluginConfiguration +{ +} diff --git a/MediaBrowser.Providers/Plugins/ComicVine/Plugin.cs b/MediaBrowser.Providers/Plugins/ComicVine/Plugin.cs new file mode 100644 index 0000000000..101fa103b0 --- /dev/null +++ b/MediaBrowser.Providers/Plugins/ComicVine/Plugin.cs @@ -0,0 +1,45 @@ +using System; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.Plugins; +using MediaBrowser.Controller.Plugins; +using MediaBrowser.Model.Serialization; + +namespace MediaBrowser.Providers.Plugins.ComicVine; + +/// +/// ComicVine plugin instance. +/// +public class Plugin : BasePlugin, IHasEmbeddedImage +{ + /// + /// Initializes a new instance of the class. + /// + /// Instance of the interface. + /// Instance of the interface. + public Plugin(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer) + : base(applicationPaths, xmlSerializer) + { + Instance = this; + } + + /// + /// Gets the current plugin instance. + /// + public static Plugin? Instance { get; private set; } + + /// + public override Guid Id => new("3ade6fd1-c76c-4560-b2df-f6bca4c2332f"); + + /// + public override string Name => "Comic Vine"; + + /// + public override string Description => "Get external links for comic books from Comic Vine."; + + /// + // TODO remove when plugin removed from server. + public override string ConfigurationFileName => "Jellyfin.Plugin.ComicVine.xml"; + + /// + public string ImageResourceName => GetType().Namespace + ".jellyfin-plugin-comicvine.svg"; +} diff --git a/MediaBrowser.Providers/Plugins/ComicVine/jellyfin-plugin-comicvine.svg b/MediaBrowser.Providers/Plugins/ComicVine/jellyfin-plugin-comicvine.svg new file mode 100644 index 0000000000..81bde53a51 --- /dev/null +++ b/MediaBrowser.Providers/Plugins/ComicVine/jellyfin-plugin-comicvine.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/MediaBrowser.Providers/Plugins/GoogleBooks/Configuration/PluginConfiguration.cs b/MediaBrowser.Providers/Plugins/GoogleBooks/Configuration/PluginConfiguration.cs new file mode 100644 index 0000000000..c32f764810 --- /dev/null +++ b/MediaBrowser.Providers/Plugins/GoogleBooks/Configuration/PluginConfiguration.cs @@ -0,0 +1,10 @@ +using MediaBrowser.Model.Plugins; + +namespace MediaBrowser.Providers.Plugins.GoogleBooks; + +/// +/// Plugin configuration for the Google Books provider. +/// +public class PluginConfiguration : BasePluginConfiguration +{ +} diff --git a/MediaBrowser.Providers/Plugins/GoogleBooks/Plugin.cs b/MediaBrowser.Providers/Plugins/GoogleBooks/Plugin.cs new file mode 100644 index 0000000000..645e27f5f9 --- /dev/null +++ b/MediaBrowser.Providers/Plugins/GoogleBooks/Plugin.cs @@ -0,0 +1,45 @@ +using System; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.Plugins; +using MediaBrowser.Controller.Plugins; +using MediaBrowser.Model.Serialization; + +namespace MediaBrowser.Providers.Plugins.GoogleBooks; + +/// +/// Google Books plugin instance. +/// +public class Plugin : BasePlugin, IHasEmbeddedImage +{ + /// + /// Initializes a new instance of the class. + /// + /// Instance of the interface. + /// Instance of the interface. + public Plugin(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer) + : base(applicationPaths, xmlSerializer) + { + Instance = this; + } + + /// + /// Gets the current plugin instance. + /// + public static Plugin? Instance { get; private set; } + + /// + public override Guid Id => new("9f97232d-e7f4-432d-92d3-c709ce47e30b"); + + /// + public override string Name => "Google Books"; + + /// + public override string Description => "Get external links for books from Google Books."; + + /// + // TODO remove when plugin removed from server. + public override string ConfigurationFileName => "Jellyfin.Plugin.GoogleBooks.xml"; + + /// + public string ImageResourceName => GetType().Namespace + ".jellyfin-plugin-googlebooks.svg"; +} diff --git a/MediaBrowser.Providers/Plugins/GoogleBooks/jellyfin-plugin-googlebooks.svg b/MediaBrowser.Providers/Plugins/GoogleBooks/jellyfin-plugin-googlebooks.svg new file mode 100644 index 0000000000..f93ca4a18e --- /dev/null +++ b/MediaBrowser.Providers/Plugins/GoogleBooks/jellyfin-plugin-googlebooks.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/MediaBrowser.Providers/Plugins/ListenBrainz/ListenBrainzPlugin.cs b/MediaBrowser.Providers/Plugins/ListenBrainz/ListenBrainzPlugin.cs index efac93f94e..1681f0334d 100644 --- a/MediaBrowser.Providers/Plugins/ListenBrainz/ListenBrainzPlugin.cs +++ b/MediaBrowser.Providers/Plugins/ListenBrainz/ListenBrainzPlugin.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Plugins; +using MediaBrowser.Controller.Plugins; using MediaBrowser.Model.Plugins; using MediaBrowser.Model.Serialization; using MediaBrowser.Providers.Plugins.ListenBrainz.Configuration; @@ -11,7 +12,7 @@ namespace MediaBrowser.Providers.Plugins.ListenBrainz; /// /// ListenBrainz plugin instance. /// -public class ListenBrainzPlugin : BasePlugin, IHasWebPages +public class ListenBrainzPlugin : BasePlugin, IHasWebPages, IHasEmbeddedImage { /// /// Initializes a new instance of the class. @@ -41,6 +42,9 @@ public class ListenBrainzPlugin : BasePlugin, IHasWebPages /// public override string ConfigurationFileName => "Jellyfin.Plugin.ListenBrainz.xml"; + /// + public string ImageResourceName => GetType().Namespace + ".Configuration.ListenBrainz_logo.svg"; + /// public IEnumerable GetPages() { @@ -51,11 +55,6 @@ public class ListenBrainzPlugin : BasePlugin, IHasWebPages EmbeddedResourcePath = resourcePrefix + "config.html" }; yield return new PluginPageInfo - { - Name = Name + "Logo", - EmbeddedResourcePath = resourcePrefix + "ListenBrainz_logo.svg" - }; - yield return new PluginPageInfo { Name = Name + "Notice", EmbeddedResourcePath = resourcePrefix + "NOTICE.md" diff --git a/MediaBrowser.Providers/Plugins/MusicBrainz/Plugin.cs b/MediaBrowser.Providers/Plugins/MusicBrainz/Plugin.cs index 69225d0b95..f448e6b20c 100644 --- a/MediaBrowser.Providers/Plugins/MusicBrainz/Plugin.cs +++ b/MediaBrowser.Providers/Plugins/MusicBrainz/Plugin.cs @@ -6,6 +6,7 @@ using System.Threading; using MediaBrowser.Common; using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Plugins; +using MediaBrowser.Controller.Plugins; using MediaBrowser.Model.Plugins; using MediaBrowser.Model.Serialization; using MediaBrowser.Providers.Plugins.MusicBrainz.Configuration; @@ -17,7 +18,7 @@ namespace MediaBrowser.Providers.Plugins.MusicBrainz; /// /// Plugin instance. /// -public class Plugin : BasePlugin, IHasWebPages, IDisposable +public class Plugin : BasePlugin, IHasWebPages, IHasEmbeddedImage, IDisposable { private readonly ILogger _logger; private readonly Lock _queryLock = new(); @@ -66,6 +67,9 @@ public class Plugin : BasePlugin, IHasWebPages, IDisposable // TODO remove when plugin removed from server. public override string ConfigurationFileName => "Jellyfin.Plugin.MusicBrainz.xml"; + /// + public string ImageResourceName => GetType().Namespace + ".jellyfin-plugin-musicbrainz.svg"; + /// /// Gets the current MusicBrainz query client. /// diff --git a/MediaBrowser.Providers/Plugins/MusicBrainz/jellyfin-plugin-musicbrainz.svg b/MediaBrowser.Providers/Plugins/MusicBrainz/jellyfin-plugin-musicbrainz.svg new file mode 100644 index 0000000000..8074d59d7b --- /dev/null +++ b/MediaBrowser.Providers/Plugins/MusicBrainz/jellyfin-plugin-musicbrainz.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MediaBrowser.Providers/Plugins/Omdb/Plugin.cs b/MediaBrowser.Providers/Plugins/Omdb/Plugin.cs index a0fba48f05..9066ff8523 100644 --- a/MediaBrowser.Providers/Plugins/Omdb/Plugin.cs +++ b/MediaBrowser.Providers/Plugins/Omdb/Plugin.cs @@ -5,12 +5,13 @@ using System; using System.Collections.Generic; using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Plugins; +using MediaBrowser.Controller.Plugins; using MediaBrowser.Model.Plugins; using MediaBrowser.Model.Serialization; namespace MediaBrowser.Providers.Plugins.Omdb { - public class Plugin : BasePlugin, IHasWebPages + public class Plugin : BasePlugin, IHasWebPages, IHasEmbeddedImage { public Plugin(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer) : base(applicationPaths, xmlSerializer) @@ -29,6 +30,8 @@ namespace MediaBrowser.Providers.Plugins.Omdb // TODO remove when plugin removed from server. public override string ConfigurationFileName => "Jellyfin.Plugin.Omdb.xml"; + public string ImageResourceName => GetType().Namespace + ".jellyfin-plugin-omdb.png"; + public IEnumerable GetPages() { yield return new PluginPageInfo diff --git a/MediaBrowser.Providers/Plugins/Omdb/jellyfin-plugin-omdb.png b/MediaBrowser.Providers/Plugins/Omdb/jellyfin-plugin-omdb.png new file mode 100644 index 0000000000000000000000000000000000000000..a4bb7f7d5f071117a2e6c41213f7c0f0540e1ddb GIT binary patch literal 67173 zcmZ6z2|SeT_dkA(vBg;0>{%-GWE*75T2grsr3F!AOIac!WEm+c%2t-FEp}NWyO9#v zQj@i^O=K(kPXBZ3^Zk5(-~YT`51IR#>%On+I_G`f=Y7sR_l!;)V`JfCK?t$w9zSvl zAto|H^vcYP@XpWAwc7A&i_39SH-y;hu>WxHoil9UP2TG|CfALfFI~T3>1vB^+_)iq z<*I|5wWW)#w6m*S{4X^=goKgqkwd3F6DGbjh1qtVVd{6wZc-!sQj?^z`-w>4^S6gL z?-4tBd&jL*P=Ym(mehuDt;?JiO7uK2BMq+Q3(>=RaF0De3JDHFd z)ghXeZ}yUUc8IFwH1qP%L$5|@Zm%CA*-JJ@LKfJ`&oA7LiZ7>o*gnW7H=o=s!lO)m z=ibQoCUz|xXP=_Tov+X!E7SdBw+v61-+cp(q27b&>a=U(Xr@Ge!n|;_^^A)$p5PFB zixp9|EDB+MB1ctpU;_EFB0JgQgS?^wgVV=xr-OTMaA+IFA0k>C8<*<8)GL8m#mj0B z%$@a-!)7hFMiYZcvYFx;+M4pw)y1@Yrn2SvkD)C(TD`Q3F^;g*6RxmSEs2~PLtg%9 z!Zo=dL$pDsZQIG@^6Nae1uAPBO{k}^v3k{fwAiSxt`X5Fv%+y+Vi{>ioBEjc`jPn$JE)@97iTlVpNhBtN2BA$=LfQ$!74 zhB8kFo;3G@_j5b7OG~dteRYU*@RPfJWwbzmwj(*zDyr=of!y6lW~qM~lagz&KIy{p ze)_1mc4netW0e@U-*O{SDDKDZJOLWL&oJ+q**7iEj6C}%giP`@3AY9C>p_owV_*4GOSm4b1@Vw$nhf`LP$&%0>yp*WWzLUI4q6*`kAPl*$k zIGdkR^>3PQ`?BZrS6WP1Gs)bWCAPQmlMvZ9=d6Ub^issE-$!mOn~wdZ@qYbAW2sUz zxyRDV8f9P^BH6I$cpq5wKqc-gkHO*bIb?L__3Z&g=Nqof&KFXB(0p1aEiF0E^UWv_#ntwH=10xwDaS;B&!(#RW=54XRB(9>i&ps9LEwPauc5j_ODdl+a4irB8hBCxklQ zmNbSG8xVjK31&KYrA z5s&J8KZ}nIQ;7LMRq)M-@MtJ!HyswMF{eEa&iT(&(~K^-`-%Tj<+TL9bEfTfrY{QP zyArIVIuMGQ|)(~bKSm&4<5F1w}E8$N`i z6peAU?#zoNC;6Siuk9*q*7GQ9U?rz^hj_@N6O=o6US4|is)=JGJno4tfAPuW(D88F zP4wAxig#i{g>s0!b?~s5^eV3F?S_`(*kdQEj;~y-k5D zy!6b6Lno#inR%jcE}YVj?>7HXLvHzfoQXX&Ifaw)K9;85oaEyZde<5+$>aOc4)LvJ zx0y(~3nI@>#h9lF+DAFFx!xWfE!uP_asdyLY51|Vz0{FOc=zh|t(m&gr#OlmOBhv# z_r8Xc2}~dg+YP!#rk3qxN|9R?*qU*uH8Zf> z=6s-lrI|P3VR{(Znim;1i*o9@^0I4%O!!M0Ot!lxF-Sx?u(>uLyF`>$X8{6;@511>Ho~akMDn8_SRC`o(-i9G3CTY9dw8Ki;LHdw&0D0Kv|$VZMY>x!?1Jkl^4XQ;bg=|qpNb*INY>9LQQ7>~Geb*2e+NN^os zV=$6!D=%84y$Q?AkU|abzPFsFo~@u=2-A0qx~L)7bm#JVzJM{fHVn!irWi^;$L|mC8F=o zzT6`5NxPyHwgsR1w4|QBi)OSfv+d6RaS%8&?Y)eYn9^6)lHVEW$Q~+qqS!oDEUt5R z+h3PNL@9hftAH9$AnQShOG3=n`ePaDa(OyQn=!jqdG3_s%so9t+2Ys`oQoaly)tzx z$`2``gFrPIaYJfm(`hA`RB)8*PlS-_Wf#d97eoqgSqAL+t)H($x;kv28t|f;xO4bZ{Y_cp=Fl9{Y5u!k{0c zb^qfX_~0vmAZV*9sU>b8TGUQ>uZgjYY8JY~-$weB*)wC;IYVU1Fq2f95&- z4Iw=jMoWk>?0>N+=6{@nZ198!okuEix0Ib zG;ICrHWb)Dy?ydXabF6DJ6+S~;4*>8m_SL%_rkFnR9${^=~}tD3*bJeJa;25RQuw9Cc0-=|5?e`f0Dbnk((qxZVg_I%^I@gFb6sYZMbJBL;^%BMCnU0;kieML3*U zKC?K}yG6ibM>+wx=v*MOSJ6`*WlhQtd`F6efrQsa84dh*j6#yqwgfg~fSJ{6TNGS|LYkO6qP?-d`v<|5A8jdFnXz&>7bj zELMZtL-53$L|0mW^m^l;(!sQGDy}T!97#W>^U=I_)kpDwjn?tARV7ZvW|=tVBZhRG zcht8ujcNV*2uW>Sw`Qo1eZ^DHD==8 zn|%6=4=YCx*cVt70xA;KeHjs_@q$|q4Nr=Rn2c24%5xt9uibj*pkvI}O)Lw%Hk#Q* zgAi^Nsi*I1=@`XM-su=`zEE(Wj)S~t!f{V)y;%1bEMe2T5vo`0MqLBN2CjDh1PP!D zQ*qPC9tR-e5w?Jf+GjUe6UB0lFc(#JPK+1XZ5-yQ|G}WN2O8*X%4CF!o7^kJ6XX84Ec3Nuqd@fYKbzhJYeX)+8F*5><9YM%vfOoB z$X+JSaS%Ggn*XLe+Gn+NI!a<`bn7;gkJ}k3rZp%iLdjVEHZqBJk5$PiSZJug*oqQQ z@CBGn%cDcKUhV@jIaE?7y31J35#4RgxS{_`H(BK7FH_&$tD1Ru3&I|X5 zIHXzSqwqi>s^!1-*;0kMhaN6B5H1H4vp2LJAbXr$CuBAOo z>k%0T>J!%N8gA?(cdKqR9v)DE4d&a?({B}1kogbUJ7+S~z@S(gL&LPEuYpG4wZ<9Q z$WAFv;qung(L7rGIg6nNQh=94O<$&=k9tV|o#1xE5`A_-WVecURpx#jsw0Ja)g(wU zp`PTYB_tDoYyi2FkeliSP}O&3LNVpbSJps&L_*C_ggm zxQQI=at!MQ>fTAB)h-E$aG8enko;iTnRp7{IN#j!bAyeKbn|d7X_}nDZoEyhR1Oqe zc*BJ-Z=CD{S>GnxENB#$?uNr;u@+`W-& z_-W@RDZ?m5BLj)=HwRhjl|tiVU-Jxn_&whc2vQapxL}-<@@PVSy5Y8V;`PKgng8Za z3|j3VH&0m4Jw0k4=>U0v_E{GJb$T?f)A!r(nZH(0ghX#Cktt={D&J~G7*NGcr~a?4 z5UZos|1igu(nBhN)3RMq@i@t^(72P_FkuW9T;OT*Mub3SZC`U7JS;$t?po|R>O|f9 zd6P*)ssw!E?Otx-=M4@qIG3#vA)&UVH2M_Vg+nDLxq(Y=dNKx>NKY0?Q!FE!sPw23 z0;B6E*@i=2$77 z1oHMG5!cpKMKovKM%!I%6rzT44Q&}5lH4<<(u|ZvxMLEGSrIW*{gK;P3Z#d7|AYUr zv~5x5gAuxFa!)z%{Wb>_Ek-`^p?WLL)bWIuSrMZ8$NT}Y5o+Z{;)BA5otb!`SOY>M z)I*Sd0gq*`+JV6qE3&>@n#_a5w-$KD#xz|)vC&o0xo*F5k3?@qIvi2qrh%GVfDb%s zerZXI?E%!>^gU#4JY4kSZU-TOqiu-Sw4w`)K-u7{bW9t{mt1w}rExTUys6T#C8%8$ z8J&COy8*0;;?aKp&T@lbTKi$=m!0FOnskp`tFQiisrd4&L^rqad!X@w3BVr16Wt{R z#2G{+JtJpP@sQgOXpRsn*wee)2z-$Ds(c^h3v9is(zeCDAb)kxl zyMCp~q;-y{dfdIO>Q!nFz#6^>C=9j_WDiIWt-9L9%0A1@3-wipn(u4h?TmljDC!NF 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

pZ0QoWFq>jvkOQrJpWMWt9f zLq!eXm_<%baf-BS4(e;h37SP({2{(Nk3&=fQGXtpr8j2uITFa%i-^~Bp9(+ETjS%z4^V~SN>NN10CH=zt`|WQU7kVhK&V?9T`z_ z7rT=rx?MnNH(b-d3tEO<9jBqu$13JmN#VT)A@y%J1WRz^kBQ)dD`uh53f9t;{4VKF~ z5DHJkL6@c91lKof&#&XO6YmxEvYoB^BaOqf;EGlSBUzWw*FsUjUZ=!?U3#m*Q5JPw zHr_*5)L{EVG&C7VS(J$S9(wJeIUTj%pLx%gc-S#vEQk zU&Sg!D#FflbH~!-$;rsntMG#3;9{cIAeeh#SYFQpSZ5*G0(n-ynt+vo6vV)7j=$twr zXVhG`GkZpd4&TY@%B!SqJuoyR0v2fE3b^yU1+~S^MaNb%1d$uDO?Hsy|MiJlzI1ct z2U}pL-s9hc5%r*_ltWhej(9(n^>iH2D&&aWRY5e%kgxa5NyZI}z(6^K=F?2P+0E*n zVvA-nkicacyr&pXLYBx(e#edw~3f`{(Sd+Abarj?nNmVy*F zQ4*bny;#Tvep#1&Gv}|mosr5RKMbBv*`lE$n}QFP{|t8UU5Z^g^WRw=q6O=gjt-@n zsH)w6<^$n`H1Ax5HT?|&;xM1I^NVo*fGp|*Oi$nKQx1TPX3~Q#x{%!J>cod5#eo|H zlHf`g{5T5!E%F{vY%WM>>^q9U0o!$M-JuG2h#FKGn-&eeS39o7>d@mXs2v+Ae!pFAP?U|`KbgAm|=NN17@fUsftt-`)lff$2oR(<}OHj;ieMRnPc z>(j|49UbbQ#)tIZM``mJ+yAID;lFS}c%M30xFwlJ=YY?o`uSs4EGTV261&elqp4p9 z^G8Ge*j)0#?ofT)EAPJskR^;=urUC~htU(w;-S)A`G{@fp_JSe)TjpE29_>&F2bDQ z`c?cHmt#bWQUu6FCMKp#;t7aAT?n;Eq}0bE01>n=6a=HF9}1{gqU=`@MvY zSC0p+E3H|>!}>1Gba$>n@uaO2vYKi31Lwc9C_g_RR0F3Qd1Is<6pmlbl$D9U)w-8l z-_e=^u+7y~MY>ue>Pz16^y$-mkRxK0-S0mHw5A?y;Mp+7UeITwcgwZ${ zH3TSPVq*BfUxjj8+}3uD6%@Lw->sz~rgaG1dxX_z+uRjYy~28`1f)d~|rC;&Y# z55hZMuyV&H&s7==q#h-qficL;w;exz9AlDq83?b(L<2_8*f{TBvhmS$h@q)z7x)HQ zgI~Yye9hugLsj}(sDo&@surwo8ClsB6PJ;DG8Zmfm=6;+seb$u`b+*2IG%qXDy%;& z7cP7f>7c+dhfok>EqI8oq@^=bAmeQy2Y)}Pf!bfsa0@BjKHOV*Vcnk3pxSPaS=8gQ4?T0$N;wFqrD;aT^Qu)-wX$tDSbZEL!m_HC6C&O#Qie(%C1K zB!l3g=gPrUPv%w~IIYTC@g{XHvcn54XYK5vem6p4S0l??Ny+ z2hJz=5wo(kKHy^XOPAaK$QLjwUwrF}k`#~4g>#grMMJ3BBF$g2I~)e4<2ztO^KzmV#9#;W2g?cA7cEMB}i_;&A#P zl;=>Tlelm+T7srT0f>yT5UKh2)IEY$VKd%&4uW4D9namJe$@*>JwAW6^asVx3XH1>^EISE&Mcmna-f}`)y)K=rod`9S*nBKL!zJsV! z?wtZXz4wN1yx@O-P^cNe1AaGZCBdIHGvfFlqy_Bvs~3PZGz>&o&2x%@q1Dv)zEK|z8^d`KR(k@EVUiERLtouA|g`7_0%yepb9DpB-bwFUxDKh#M_fboxosm zMh4&<|F5VYK&S00zFkNXrL-^T2I{yEisD(pLvc7DP-u7{&Ry>ben37Xsy!jR6JWak z;W?*jWH#zPz4);|E3phhMs@x6BssKbZft65LPFaQx2Xs`+lTKb!=E9e98rh@xv-w9 zI#rnbzfgt(grwZ8tauDOq2Sp93unB|ZdG@5=-GFchOD8{8C=5h2VXD7CbR&jI>D(z zB=#!7)g*jUwj2HT5CjOih-9##-@zEBZ_cxjLwx}K`OGXqyq1~Sj|cZrV2H* zhY$I!lhBa@lC-bvuN{6T2kE&&#U=12@Xu5fbC`uOPJu(C?sMUc_Sg>({SE zJL_}25@QYldw{JslOYMd)x9`c#_PLWHD~)eIfMW?6q&3fMJyU^*&DRH2({7d6pO6K z2D?emD16$SdYap44gf+h2A;sNW^b?1k{rPzEA#X7pL_Y70>Uk!QBlTWAj8wnvOU4wy{CrdhQD5 z^0h)Cei3;H1Be*my_#5FSG8; z#5bKii<5AB%`E1a3XyC3h4LH$_GO*AWkt4`>zW_(;dM9ol&3h%; z*Nuq57qBF+xBOhcu<+n7WE4D>Yu9hOIyx5R`wjqYWxr=>N#gZ=h_C39^gkC3(Ne%% zZWBrfu!2;HP(0w!!SpMn#l-JH)h+kjvZJ7(5$ZIFhk~RyO6|CT`@?Tqs}H6N*F*T9 zu6wX~hg9AA?XfZ6C|I+2sk7?d^Y8Uo(>B*t+wt0$qCAimmVum6v6_z6^09enQ*sYS zMKu^k(Q$|Esi>M%nDwELQW3`;($Ueq6S3@Y@C8ez+Vlsj_l7nTwIl&!6jQ6Lh$1>` zU<@4slQvB9S_#&38+}X3w>5L}fW&gPV(ua1#=hCEgpfI+3&Sbu85n$q6R$?E1fZ&$ zl=5`u4Rv9OHB%63XZJdx0G2~Dq{VYsMXy+lmfVjrymLo&)Dl8dg(@z7K|w)bC)oip z!MLGsY?+KznftosW<~wMdmG4R@^dG=T<@NFRD?!u&^#9Pru6%yC(zj;3Go>keRZiX zhe&I?I?Z_m`Q0$B$F8qV5CdHet3IIo9w;W31~J+8NZElht+r?J;K4<*27+m7)#SvHFVN9|2(*~4{$ink*#0DMVv!>ZCI=CAfevQA@1SL zuT*-_pA|9dA~d(!4TEo)fBrahE=|wP;kE>ch}TTL2HyH*zI{7oUPx}dO*H|57UR=! z_RLOk!-0di#*{l4?lPf$yFGSqn8)gU>v#8l9F3PiO3dVN{`e{GYq*y1#;Xi`FYZ7b zo}jR>u!l$`-5JA%Y$$)oJ+X2`%+FK608=C&_Qh_tq7mEY&z}VTU@`+vE5aP+BQyOLU@B!6!*JP^)B&=f=y>h^>2FX; zk|dq7=5h<_))vxPd1tZE?LA~Ct9BPAjBt%!{5>=03XG^GgNp;+yc^p77%ML(SjQg#u?eIR=I(rnj~fuH`Hu)*@(yo^qB7uL!Tz> zLw5m&aa%rLf)hgc=ZLP!A%J1(YN)qPAL;YMK#WCI%pRys(I zW@ct$_-Q>$$Qjp9Nr4p_!6L1NT0whOW zIQ#26^}etuGJrxicM~IJWO8BN2(?mQff@3wyj}8sl+0R)dRafq>Ln=JNJF(2{8pE7 zZR32QG^2tq5cEuPefU(*JN^8gUJBCLQd>mmTNA}>o`WP8TMp{WIc4B|YpKLF)JeT! zL&p7!D@){Gf)T_pz_FncE%2vn!BEx`zwZVkz%ZmVUa(ay2-S0^RsPU#vLKa;RVEt- z^qlN+hAc#(QvTG*Qtz#04R^!zD9SyhTm^-&Uy2q_NkOiM7sOQ#9C45<6Qce4iasw=-UeX77$)m{Ta zMpf7|s!7eZrln*FQ2?-g0g7eSP`4P9Ghm$MAw{X6S7=eR?d5PjknY1mQYikRW6 zSIshs|1gk!L=M%|)wv#06Jwo37W6&0|Csmvg*l|6KfECTq@97}bEOo)H>`!=-`F+p zZz21VXE&7K=-O^cC^&_?ybqYAV_2YcR<bsF3V$T@Y@M+Ps1a9{e+<-ISUd6(j6{HHFgjXW66cSDG4grbQn$}f0Us}{rX5Z z^YQfj%16hZ4xG8WyQH-zFwe{-KXFP*N)$YE5jTc}9CPUu8=5#&Jx|*z&nEfk>i1G> zody!VlBg&Lxu#L$u88{v229r9V5lr}$v_!wQ<#97)_u*vhDN56U~>mQYV}lCr$~}< zFTOKm-_!vQ3+{XMC#E59Bp}s)@q&y4(Z~+d2kg!MklMAB6MLML4z{*@vjlQE1qJtg_rCq89o-G{+V}yv zp=|KXpKoM_U(m_A7CW%EaZFf*s_Dyrd=O?Sy#nC2G-e~Ui4RfAG4as~meAH-v0@>e>-3IDTu#hY4P z_4g6JCx|GaGK0{ig+Sg~!plNJ%iH;Nb+1w&W|8*+I$Lo$z6%Y60BDOX2MgwW;FBlO zrNrSTztO>_k*z20S_9db!&kva1Sz5131&XOCXLtv%Na?o}2kmY!|R! zx{7ZagX3s|;YNyoKmrq~#XX9UQ~0B3`9nnvqmO@}C4MmdGNFp1Nz+FvtOuj!{Ovn; zo*lRWs?*<~(*mMnRQ2ebnx7CPFCaKVwxxKL$K`hFWk)3w@Tdd=*jw({D0OtceUtD? z$~jbY;xfUgCqNann0@^%@+cNy>C0-A;*!3FNe#G$LfW1xJOP9MiX9^q`S_94m?(@3 zsZ%^bdKI;E44ZOta+F#Jk*Ozj!2gv8r?{9kiOcpXH zm{lPOWQIuHKiYEibCRm_W2XrINNdp#8x|UR_F(~trKPeZ)wh>9k2Y1m%fDME-FGrS zv_)k|$aJV>A0F(j1B$TlGvf^XUJrUakVh#ki^VeTrm^JOr@vubK`np{zRyVVI~W;D zYd*`hc1s=x(zLvxe;xz;20abaGt5?&67_airJVR5=OAwWT2va3PA3Nx55p43N>-LpkkZnTEyek=A zG@MA|>a-@F4^eBbB|;v=^DShCzSnt6#|nnP{<-Fgi2`Wx(G7k;{%oVO+8I6%{7_*f zWg0bYkRtVS;yf76%E_WQE_t!;A9`Q_Q-74ztu<-vA`g!is2HE;G+?CqqvMamn%#xm zbD`hYKriMB8)8g)Pwpsj-fS|5hb*_C;QZcVVWE)BvDrXq)NkHg=8)K|fKB=aq91u5 za`UUnyniS}<67{SL6apAxq@Nz3TmdqH(2G*KiLl$ycT=4ns6Ippjj)A+az$gxw)JV zqb~WTIoC~(!YYr9mf5J01)<42IC4z~(WyM+8O9)@0vZx)J%uZC=J-21t!aE=j$jxw zCIx8>z;;QLw2wrDV6t}vKvkOy1|5Th%?2}Z2#lzlZaW8h)u?$R;eJq{BYr}$h|KUL zR+O{Wz|K?~4^1b31+B?x&T=)b`@4=jUV9gCc0 zq{grh|FI+Op&*|}EEHqNVO&?ueiW2eo}_-d-Fh+Y6{Mw$?LcdK3Qb)=fFd@N6$aPs zA(}-m<^34uoYazS_C{!xdrPe%9KTmPm`DinJIX@K9@&~m#tHO%dBBUT*HGET=T;Pj9s9 zwxWbvAWdiOd3u^8>HlW|6r@#e(*^?QkNqwX%T@F*IN(k5U+|*9-O&x?#m;3`o8v8> zHdhuqZ`jygfB;wu%kPOk8P@J|Q7kGxB*8FE1ksnfHF(sMfI-`LiG&ty@QVe1nl&Ys zD`QBm&ubzr1BQ;2?hh#j$n~I4W-f`59#HRtx>&jK#ROc+2a;0T#t=@6br^WNr4q%; z4|1Z7U2AGats_gJc+-zs9*Y~Y4AJ+Ps7b|ufL#0V=L!4teFuntNAe-y?}MZ6Gk=7f z#;Vh@SwQO!?o#Gu*>?0hNxz8cXiYlHvL;t~*MR$B)Z{_AP~c5L2&`G<$KBD>D;BdEbYqb>K98(Q2<8mmlBFFWa`KyfI93_6 zky4U|@=e+=%#1Q_La)M4(c}lhp}^p;3Aih^Qi^MRB9O;#Zr|Gew5<@fdkh@JgZ`t) z1pkn(r3~6a!eM#8u7lcInPTcMP$8AxGTgd#%k4*}D-|k{BxVqE{8oe`HDE_G!lY9~0WySX0bbydT*++?q~aU*XYDCK z(j*UQBeZR68J$v-kNsbdWpQ z<_5K{u7RnkX>Luc!*@(eA#&Gpps1N@q9GfM2e^W2O0)4wWN1cVVYKai7nt6>%o;-U zho$8z1m3V>rn0{xn-E#7HYt*A&Ci}RM#Pr^*M2IapjB>W1R4lXsnWvRSH-@o7&pXOPp20zgig7 zxbPb&z-Imp14*nQv_y|6kvxJa7TE&(iGU9cgtLL)J>fTIvKjKSU2h{=HijXY{>ne% zo{HMHcX!{(uDby-_}TC8EyX=HtS)eKt2jyXFCEgov&Z1&HoiF0;t6rk_AcV|)98BP z#(@Dyibt0XLHAM*CBhp6B)SgCZvB{UO$SbG1x@`84AOJ6+Z7=U3EAZ!=G#5p3iRhI zzfpO#IxF0=&;V2TA{5$Jc{%jbVk!mgY0(T+ zdxs`xV|vWA`0mrb;bFJ&BkCbWcn|5JcRxnLNZAGTfJOo1!z&tL=ju`oc$qOQUJ0Bi zkMq;DHk?q1q1p(7>2SnL^#fM)$!K`LUy=)>r!CUZP1I z<|yyw)$W8TLVZ>CM=a+j=IsIcUEI9ls$c_h;N8!IML1Q~)2FY0W!^sK#5JXmhm>An z{S`cY+!Y8OChRJL02N})BO%7xI8_<{gU-BtpecZDL{)?DhB1Z_fJI_Q+@Ox#Npgua zze$Z{@%!SsKp+%}uN#J2&V<~^BOj3#!mN#~EK3bO09i-hCLH4kryxVHxS5i6j$Nye zmk~+3H_*(>98CT?V>ts*U#V=5nVp?Lq~GA@Z0(FpFxmcTL%a!}2=#BUud_(wH$gAi zhARkO-%1Jn$cO_=2tF!8LAk|>b)F78bM4|WF21uExFyP?m4K{)UCJO%jp1$K?^ZWh z-!!=VBSxJJqC;+}a^8g#J7%=Rt6;R1gWa5bh75b6u~IXh>*?b$y`mn66JNf+NrTfi z0+9Lh_O?fl9&vS**&n9!brIq#{oUUmr=~vtupmD_vQ#!h8hp1L9>y;b6OiY)`!pdr zIh>^de#?TKH%~i+on5n>Gl7Oe&+rcsa+$$-l?+5ZmQ4X?5oXN8W=Sn{unQpU=Y>+h zl0(K$5pP^Epy!A?PG0S-Z-kha?w2VZjDmV&-K-Wp-b5h&9VwUQ%R-ibjY^-8{l{SNB?K;X6_aOaLkOF(Na0BU*`utRkz~jNXdjtN+H+cI*t!5* z+65E$nHRTgZS!Vb9yvJ`-J@ujzFN8bBrq_h%z3thskpr3H8_sLW|-Q?FdA804pDx6 zpoK1&-|A0ao zZP&i_p9-y;19R!t*2)jfHQZx})Vcm1>@1!#Lq%ZEW~e-ckl;*5C?LLV?8`Hk3zIPx z``QGJR9Kvr?h9}lo^MnxgMt%XM$B;P9tHd`uM^p*&XRt%KlYRV1tbBz>c!e~pjixg z00U^5%GCf3b;RG2cbF&6J(emW*Uy010SrVdbh?*$?K~o0=_L{pjLE<9{QRKS2hDMH zDmFR3n}t7P6W4k{PF`DkRP1I>D%4Pf$AX(JND?Sek>wFOUCn>a{7JQi>wb!(hNhdxH1_ z(!uB=gx4>uBttBhEHg@1n7PrsaARlhbfRT01U=I|5yAK-;&PHbR$TYPB^M;n% z$T4j}V#ls1svkm(WTcNZ^0Z$nnLLq=Wge&*2yi44ojqNO+Iue+yaUmA515Q`BL|?z zX6&#Q0ZWCzbQ)rdVJyj09&ke=q~&*Xb(KLbf?4%2CO0eb^DvyJL0dT4dW-g4nyLcsW;)cam%wd!6)f-H zC-?qw^$mOiFYs{_TlWg;4-FenKa^7`ET|g6qi0$XI0;I>8zK_K(QF#m2`SH$&|FlhkQg=$$YMTwnk~X`mlQc+_IA zdTeBvw#wsP(YOJ3hkHw+GijJ0_L^V4aPiZa^v;!kz8F`hFAjXHYPc@p@#AM787=u$ zp1MM&@7mluU0vOl?N5Y6()i{{4O0u!LbvcsuRa=tFd!_`Iu1;BCkV;!V~O;qiSbyt zX{vz=TlfS-#7ChlVHz;Cpf)P$DuCZn_yZ=!v!$z@U%p%#`|zv+t{nk?yo#2A;ceA> zK$DAyVi&^i4O(Qn!R3F?%2mY}gu=jlCE4R`@O4j$e@={rgcEo-ZKH%pnnh++s4ncU z`@_l12dn`^5^E^OeICg~)EL zg~Suwl}yB(jdtwFG1?q|)l-WIiMIBlzRVCrcD;AE98DPDnt~3PdLvSe zkV%f19M#J%HId_~*3>An^c%1gfmk7KzSD$wQ!jptGHw9@DoyWz={FY9xW!zhVdL9pPT|vrhzJUkD7;t#tokJ;$U7tNs60I&MTp~DlI*n_a4UyuZ(k%b`?pBo=`r8 zq%+LO-xC$V(dMGpDVUxlq3=M*dyt6&pdZDGoFIm1(;h>zofn58Ying}-+3Q0j@RKT zBsC)#OL_*EIXq#b{;<^g&+s`89+Oe6n{cGBxKOy~;N74~kOQ8T-wy&#H+9|M8qtb% z1m{fG!{ARG`?acEmW)R4iB>OBHIX&AW(gn?ia#kjhyVioq2KhxLzeE^C@T_(HcIt!T z7bNvcRHX%}!-RHI%q6>GzGr3kTr8Q4Fvz~2u$D|554>|PMF&Yu0Ne=%j!h;Z;pWX7 z$a^S#29F<$8hD~U$!qMX3=Wmg7nUJL zz@3r`jw0jV)?VKHVGOhWZO2SL^MjT&^y=Ws9FaW?MB+HwII37yvnI0q)5sF| z44|AUF(oj8$A>rz^TK_Au-`j*qI@mGi@@CbGOO?p#Y*d57*EL!9F+X0d!l!%NIs8` ze~X=~b(|P)sP16ggAsLz(R?0-S#9xYHFl3yI%zy%@TIuR1X6_^;&lYbHUTcJlFtOO zvuHWPfhR}3Y}oMwivEiRMaOsjJ) z|HEIy&Mp7{MuMgz6er~1eNXSfKtW6w;op@X_LXcGX^NWRT?3@zo;#jeDr0yp{F~9n zGUVkyus%WNLq*%#a1o5ThSN~6nRL?wib`tuKm9AVJxaQ|5HX97DSyhD)>!~u8TeuN zUC($(|DNJjKQ??oJ5$RK<$xLjAx=LtLAkylD5yGqjLON!M#O2+b7Nl75CNQqPxr}F zXdVoyc^#n=rGIOAbcVSbBhlJ{%QN6WA36#@#bNjZBhiKx<2go{z%b*9j!vR(*76|- zkAU<0*Nahb%Ozra0@b^X;J%WsxD8XCN*bB^0kpRd zg9;NtJB=NzM!dbeae$cbJ_H62yN$@*N(S||D9IZ56@)4B$cW96^)vx1K&*a!qh;Ap z%lJ^(CJz@+7{AZW&3HgXRPMTB>I__w3kL=qi#rU4I5RP9CI+j;Ho+*5sP7!A$w0eF z;2|Shce5!`+6Pg|0Gxzh+b~3AdS&0rGV1+{d8Qj*ws0Bn>vVoWHYq@1Cc&yD*Q<0V zusROLT8r|*&3@pBuMvvsKbwYE4un2729Sco-3VhK&z6j#fu5~-OV;FNv;F61^5oB_ zfY|6-{X>thJKL08--q>Xybx6>3v+dbrlvOsUzz%!FiYyB|I=Mc@Bs(+E!E{+8caNH zVfi0@n$*#ygB$45wuv3+(Kj!GPzp3O4(ktbD5ftJTpleWXAmVf0B(NE%uKUy5G9_F zD%E&M^ysEDB-J0(k^U#d-S#C8sFKvba0uA}?i5l~!ro>R)L&J`B$%>WsJRoBqHbzC zMV{zjBC!Ptq6aD(n*)y0L5}tbrU~+;0xvEJ>gec5&h$@XDH%-9^X%S*K-e_~AK(2| zRpSP}%<}R$Z@3MDi?{=V3F1Ec+ei0TZcgRqEFVM_eCR&@L^4`PP2qO5q7a__(q)3P z0ai;~x<+rxM@?;vX1>%L=HB|v=VtW6@a+SZoY#74(X@hOBwEpGmRDcK2tBzFtKa|tWj4CY;VT9$@Zk!+q?|++Gp;>#az2OYPbV(K(W9Znf_Trmgtv;Z8s>V zX?X*qZ6UVJ%s{!{mc_6WPO^ZO7cElB=8JOTnH2T!-HaW80X2JeOW)>G(`l>W!t~2i;Uby&gpeqt8#TD$q~ zy+UBhQs1gIIMtsu48P2X!+VM1&j~yB6LSRw3DGc*M3r~8w`X9&Pi@P#f+#jB^(*sP z=2vrogGRS*o&Ehts|kW>V{q=TT^QEUl>Led${)m-rls1-9|}WMsC3Ks+_`fWQ0qnU zge{4ul@dHNL*CX@L96xPOxd1ezZ%_rHxA5ah@My_A~c%IAHSZ`C(3!RGHp zfcWKt7H=Ju0@vM0?bBlm{qxT~3Ha>XQ(z|l&ZZY))m31iUJ|^Ztbb{isF2xb*4iL$ zU<`0drV06<8~U?aTtT%13O5&ilH{v?ba+OprO`u4tZ=8;w?FSrfoa^sk|#onjENt_ zetoa07$Err6Pce@1xbFOmm~g;>%TT$)(smt@{O;pyUfE{rqtWd{X5{X&H= zL?hYSoWgL|q;xor2kgpZr!GnBl>-=2m|TW*k<5_=$#ET7j?3mrM*h)BNj527YoB3- z(|0q1_~DVHykcLo?R_0MAPnQEF%EQZqCSeVV%T{)f`8u8Q4z&^pKLj!h!3?QBm4{( zzc8TJ3)T~cpURd>wY+!l_)7^N&;T;!xmg~3?(UBNOZgIVj87i2gQ1Wj3Y8?8 zOC-rq3MnLh_rp2o`}zHGuIpS^kG-G0-)FCNuY0X^uNsbooA-wenbdW&J88@nTOUNR zCfvTh<>Ka!LNpt;9IQ_dtKFi{$lLn}zsklxoqxm2gsT^V8#%Xw6)uFUX_*IlOLm~n zvSFDT97jWlynydp-{}qR^vIc-y1Jz(+&xpmZC$Y6eC2exV_h-Mj$Rq_=Xt3&YkA9~ zxkcCyc?B--n@SM$W-5KsYO#xc&@|~J*ZM9|-b<3YCOdMhKfWmSx&r-6=oav0TOO2J zJGMpc!oE!tB5$)Remx9j+kg~)LFZ;s5a}Iv9Svk!&N!kt!Yy8)#rOJpSs@jreR3Q3 z(xVRvVF6;gLr!aU7b(>1U@R5PR0_tht?a4 zd*RuGU5t)<-6fe_WLB*@JH75E6dCr4d}QjqIn#&Qtn+9H{T7JFScF7|!tVtq4?)*U#=H;d~3_!*j`v6w^cyGtLMhj z5ertEe(}X>QfBK8vQZx`cb$#8ck(V&pt2ezJW=rXQ^>2tY1;U8g1CY6%(Q%{e~=Rt zq3b~6Uu!h9vrF?uUkR(Gj_rjND2+P*E94FmtU-`=gdukt+UVP8*x`I-dWrrCl*`N; zVcogLH94NQd3&qkH&i1?)6Oow&zZ>Y&E$}0*sCj8ezJ>YZ90qKI<|cD>^ua1x40wo zQ2ZuGFXM#mgM*%_N88;j20alQM;t%&bnn`=P-=BkS?f}pr2E^JiG}m7^Lr`{m1sU+ zTh|I4nm-f$n#pRTN#h!{I>ZTUSPZ0)S|~px;2zI>++JIP-%_tE(u~9D2AGY8=2{dY z<;g9vb*$y7U+82a;(UF9U^#oYlw$fa)4$@Jd+#M#gK%rK+>HQA$$O1?OOng(W1k?l zR(6|e1HwFC;PS?4AKpzV}0eLmtfTVuo} zdM64J4kX7H;N?I+p<&9z3>q|zDoLglNp9riP9Gdi(>_-5TVBSTU&(N9jp^)3u`tNg z5D0j?gYUgA^;1`Jeh8@oZOnvR(Ag&Fys!DrwpOl^wC`H9+e}U^sw{q?VrUc_o#32 zrM<9Gb8j>zb>V+i^`&!?k0JsX_;3If>>sE2&Wq&;WQI7imODSM4O6D6lykZ19#TFb z{ubTgDdHO|(3ilfmiJix=1B*j0ME@Y-K)PX-ANkO4l!L-#Ocq7d?YZ&l zn}R!){hdFD1CC!Z9!YX=@_cj`r_)m~_m zE7L5Wx^lT2>{bDfsfcBhUX_J8PQBFcn&nmR0NW7e)D%f8{Sn-TiXn zQsU*nnyolfQO-W>EgiPTm0Sm@?JF8MogOP}M7K%fWxKYvw(gw#x{=Q}cnS~PfFkDe z^?$cmzNE71Skdjym+$)ef`#OL&scb}@scl^gE{%D1=K=O9rO)>-An&18$SB56=tZO zX+g?kaBB4RMa^jFKgAGr`%z!o!2qJj*!O^kUDmlBWt?s;4P(QvWqa8AX!ls=#k1UH zIP%V)`eB;+N~L#kApnZTu>bA>mA4uhn>sS&h`Dd5%|2PJGq|NWNPP57HOh7GO$BYP zfIGWhY8?`?-u@i5+>z_-B?#)6PFlM3LWM>cby@=|x8AP(jyE9`%4m&Kpz(RJn@xW! zwPVG`AfYyf4~{`u;^$NLQ$i6!eU$U&8*bI_dF7Db<3WSgIl&r;vmA1Db+zP67($uZ z=i%4%i(e;tKms2@J@2Z|$H8ATqd_aE*bDM8TfERia6{V#%E{lM1smqYXk2b9tpf0R zUk>`8{l9ZQ1pnT%t?YfK#|Mn}-2S`}9zGN8PYrqPcOAoXwnQG6)#!d#W2#L~k%d9F z#v4j?v04YiJn{3rVq6A?YC?YQ*{~ssU+tjqAiFV0%N67}W%;fceDjzst>p@b;?vOT6QsO7zu4q=E&7r@3L*2{_u%8YChu=3ek&;40C=<# z(r$wb%s867pN1x+;!wjZMIG_ZWQaRd&&fjT$qGDEoRhP)Hg(<30h7CE_T8+LJKv}6 z{+hp56HvQILBr+C(&a&mp1!w1+ZMXAm}EwsmoHif>5N|m4DSJwSE;F~eQQZV&EA)? z`1yUZoE}y2tGhE@ zQ)F6%D(9$;cj=N^;!fg~z#7g3`3|pVCbo?-oN6DCogIh3(|ZI5n^L=A zTHLw#70Qz?8~ix^Rh}17X~&-X2Lw0-nIqi36$2^yLEX*b!&WTJ3Hdu2pr`|28-p2K z^552uKI5}5LR04aYEe-$W9#14O)C5Ab*E7Lc`oEiHau`C6ihA3-tXPpdm{zgdx!6D z7wk*J?FVT6Q<>qZKc4-m-r1SB|L{0`eUgsK;S9R+w+BzcDQ?o~S8=R}IPuk^Vl~=M z?oIysw(9Rsd5@$Y?4z2Nz0bXDZXUTMq~d-q6$Ns?eAQPhST3D2dLbK~e7>>>KK#9L$&oAy78M)#sGkaOBQhb4@(ZES;6JjD^_q08NoO`Hno@~NDQ+(QlIG#MZ{Mck9V=eu zJ%!AD!-p2sEyh+<=vU28NWc4fPj)|m9BJe2|4l~@Sq#&zRNQ1F}?#sHSd}V>QtQdrV&ZkxhmK(>)str+;%DabtcgDf#X=^Ya zu=z<#gbu@`4PH;8trkr4QSe#vqi2l6-94&FzzjURDOnoc|LKa0yCr-VG@~Z!7K-}a z;*;U*H9=P@epr;Q($uT4#PF*5Fx;)&qL`Y{6SZhU5Y$1-ej7=hyRgY6KQSzv{OL{e9rlcfC_0}g_=A~RCuds$uPf}yQ(iJbPFt42(H+XPj~b~5rx|Fs ziB4v*&b-wTeXaMdjzJ?ep^#X9ldV{@^a`PF=dj_5_)YcXp!=X=TC~udzD?y{dULsJtn$ zfuh=iNl)VpOVWONzB#G0!0oJe*~~4=3sMp~Dv3g3SNJ}iyqx#r{B1R623=pcz9Tx& zis?T)iUtE-x6a3pc1SaKokB~`zEc$4wW|rCRw_c(8^RJ3E#F`;cTB!aE%|)xjS=4_ zk&V#5c@ZSD^}%WrgAjKKHGBY?r7unj<*_mI9+F_xZ3T%SJ%pI@`nIQF`|d|`3S|B~ zCE-5^#pdfBMP5!>ExQr1C6>7X+O&9}^DN=0 z9|C^84*8|DE#&tDI5aJ&)5^T^=()mwUZ}j}vj;#SOkjZ)Osn*cJ9fEGMK?WI%|QKN zN8WLZZheRU^1kNK<{z~G@% z-=Wshukc*Q3t#60FkTtEd9ADCkiznKK2@9w-5%-GjW_=oRpWg{{rkRZPqHZJpK?*4 z#ywD7KLnh9?fWEg_Z{9Z*QBNVq?MrEMQXZp=1*wDU^mos{UDqEvYVkn_aRO|AV#kUf>K3;4Vw-%&)CNCsrHtpF0 z^Mh`XJ+vQhgSRp|KC!lpwzp|JFTcS{mzCg+(@d<~Cqkz_iKZzx)Tw{s93*4f`Y54n z1V7!-jz6h<@V)h9;T4R^8V5^u-F~NUPHYc)q0@XINFdXq30is4`Zw?3l)Nx{@kVgv zqoShLJ&4l1BcEuB_NRwTwdB|+twqLaKUycWJf`uZZhH?klY55w*I9Zr(5Y`RDZq3m zIbj&_=U0d#yS2PSB=8U$sGt70wZ_V|=cZhqB}YJpl=OQo2ZMR3R-P=DEmT4&8hhFdhkgM-N9>i3RtywpO4$e8yLh6m> zql>$}V?b+F7TC+{=-9V^=l>ICyP zrP}FUl5|TM^!_AVQ+;>PL)US7qg_&55d>|&8ara_X9f$j7pqMurTLzoabB-K(H$#) zUr2es*>@ek{_7WSXompxCZSDoQKY_!PgH!pijp zG`po_sO7y-v-PvbVcd3*4amp~69YDqoHB1K1r^D=cZz!jx0%LhVbsnrK0*H98FhhD z*1PT>@YtR*2#kbMJ+2y=*o zegoTmtmN^oqQe=Z@BvK^H(ci~ZGz(NAReB3YVlne4KoCzIB>+E4)% zvir1ulrz0CTz2Sk4p`tAup#yN?VL=_D?SpfmM=g)7Pp&#WD%h~s9M)&a!Gk1pPj#B zJ69KU07~G^IQOhI|CA7^$-Y5Za0!x*aqj~Ma}&`7y3O7Lc5E+Z2M#whG}z7v^ezrf z^?o7K3|^73pSpa`2W)GO=->y9@1^~=|Y!RC-vY@$`qPr5YpwqV7Gr$j3h|;o~Sd~2%6oM#; z1s`Jn;{ATOZzY$lr~c%FKxzkyaVsN?v(OFst!7^mB5m1CAx)|R8M;0k-k}L68iuVr zg)Z}6kc5R%CL;5kDkA2mY4u;1yRk1Aoy{8rRS&EjyJYvbaa;D*msT5{=`b4$lEoLg z$=A2-f3p020<%LN$sRq1EZ}RYa+0kIM62voWNk(VR&-rO0BMbG<--Lq9%;MF==7QZ zsLdMqzLnjcBj30K?k$&lBbWqyR)_w62cPKH{ztXi>)PX%BWB;phMSSU`Uc%Lxpw3e zUat#1{pkekrZkaNzf>kpWLmlU6Cr}Ll1@;xMx7smkag0L&F-qu~ zR&J)8RLJRqgB`ZykS$DZIkIQx6a*?`UzWOP&i)2$lnO^+$hqlnTD*KtG@kdh%nni5 zYZ1z~P6te|y&=#XTaE>vDU;B-$RH4N1GSC;B&4PGtPhzgDgu|)ofqQQv><2UPw7$T zZy>wAl}sPY2IIW2wcp-dRMC9flajv7*smxV({MuO?QzO4Y(wi;tJCn*)Rf>Cg#mFb zfIuhGn(lrzPu9{W4dTW>uRMo#oHt;j$VnY~Rxx}dzZFi4K-!vCn~2II@B5h3Zvg|B z$YWg4%}##wwWN+=_O#(^tPI7h5$~K!fZ+;527j%eHVi6M>TbzO-9c$>(Ss#I1N+PPB?d|gO zCjLO1sHuI*sAxCpc8`)&!ktc&SAozc{YA!xO>2u(FT_X@tNkI17zZRb&V8P19BW>V z9y*ZM&swyQQ&)!!V9G}~!Zzswj0KBDB0@P30Dj`vvAxEpJl}OgRl&1|uWa1t>HSBs z9-vQ6twSmcG}nK5wZqm{7Tn>g>#Cmbmcj@XM(}jQ8ebSue?^qtW1j7GvzJ~N$Lt?= ziQN=G-ZN;7@CP8|x(Z_H_gHKInlAl`#@e-sTM5R?C5B1{ZySTLzrN>fV-CT^vtvL* zG6MnC>hP-xjEgok?)Eh}{m;R#ICJrknpN>aYKoQ1k;?Xg14g&+J)()N8ADi>_W@s0 z6EW@S!`mtei;GACEeq&LoV5~ex`P;outoln@;9%~ zCAaC{-ef7RUE0MwAgc}+9t4c^z#iIHaX^Xf7uxD?#eY)oh8BMenXuA%=^;Jl$2v^V z$R(1Nn?E%)=AatT)g(vj)7_Gsas!|vQPd9_`w2WE$#f6M#|G_;BkC7iVohFQEfGCHc{thK?1L=b2L)LLa*H81_* zeq~wo8hMhT>~EkB*s`##OxyMfD4SS}YEYWS#NJy~z4B9qDCWS;_Jt4v&|?AAxe9;`!P zH4Y=L6-uf#2T4!_x+g*EaCzn%dJ)D?NiJAF?ohD(){eBtJCJZC>yt!Pb}YH_%=p4! ziN!XCm)%YM_EjwD7vZOdQ@;mQPZJ+X28l@mBmW3~v>j(s$~1-lR)6ATt=f|!%)=ms zT$}sV<{d2le4$3;OUhXbk>pE$1R(ciL}!9cy0CuwF%*XUCV%#a-L~9HejB#&*tIt= z-2J@dq^pegC`A_nHx|)`sGx()vAFm)8J&#X(3Cmx0b)cJp}RO^)*&=f4iqD=p)e!>aR>TEFW-{!4-V?bj zf%BjR6We8wFh%6`zmL~=j*<*K#UD_YagabrdRxBU4W%JPh?6AIDSMy*Ojp`W2SK8k zPVlf5aoTmh?PIUa*KZNuf((y!(P78^rVKCLjg@v#e}4{jyqg4V!xMl2L|srkvEu65{N8~&Q+etD<*0zM8LsdVG9AL3 zjR-jl4qhh^(y>NF;asxS0IB3W5_9!|yKw^X?>`-gOlCKU5)L5IX0g70JTBr2aUmxO z&*Y{voxGN*4|0VYiNXEViMi^1P(9Biv9kP?L0|CDQ9h_Hs?J{jExcG-7_;GT9nxSE_rJaVT^q$Iu$QF5enBa6 zQ78o7Q^3{ z(?Vo@roq91lVNiI`=WbAUB@}TLM*El0m+5WEt5Ix?^$o1!WhrfWn;~|q?MN>hgLX& z?UJ7Q4Piw^Xjzy+8ScU+`&*ENo3)VZf7Tleqsr#Y#Eb?)^;}HmF3;b1hcI6{Qy&)$ z!+ivJO#~+Y^Gn`Dz_BH1ls%ZKXwfMLF>MtS!#HWm&L46iDFp7W8!D1qbZRocv8J|m zF-ize1bsi&8C#0Y)CnCbT`0e1&DiHc-$sPvq;V^6HdiUJu+#20SckpPXWx`M#Wkug zx;`Ey6brxuWtRkg83{Tcvk4%*TiM*%Y7K zG)&iU%@>|qfsEE{;&9E&m!ZCF9IF4x4PSO4?F4(gP69ytKCzN_=yV0mQAEY>2+VeN zaS8k-hjLd8XyS%jhR0mR} zsnB1m0-%08(U}xokrl{fed12&t`NW{f-o#^--8%(8zC8d5&eJE=SDg1c!`NFQp zzPt)wIo#4!kq0`;x5l<74Qzba>T52@zc&6Z+E~Sxew+Atr0i{x?Kp~PCl?)PyF#>m zS8OK^n1K5rB#*VGcP?xaW!M9esY%PPu!gm$r!k#qha%VmyP)A`eF%U>LlJVP_-oz0 zLLX}a-f-QPqP`aGC!hKUzhd0eBcN+1y*T-*g7q~Po;~DT$Fc`R9*a&86MRDRLrs)% zH3Z!|h}PXbupMfb>P#}NRNNX2ccWtV7ZfsG?%0=oShI5FVQl}^_jw%R1f!x8tqNk> zIp@!w%;I=9HT|MT*nQ%342z?22 zvjc4A>|=wD-05zh3jX*DjIHm{?;l?AJzD&+7y+R>1u8$zBw2CAr8+)V zFb!hFir3(U93cI$!;u_(?z?zM?shiuR|gmIx_Sr){+Z{4j-@(KwrP3Kgj!+}`;Mjf!Q+7!@p^qUGyU496 z`~00d56N3XI{Mmk#+A!44yWKy=LdK2^?jrs18MeK;PIM4KpdD$rC!V57~V0es=tqph~bJH4; zcOi)d|9EZg^b%ehFw)~c=1UXhZ<+lLu7Ietdy~zud&$k?454opvzT3+b^0AgEWeW9 zvj>2dt6;E|l;@!v3=%mXp&Bhgw0r$9O4StA2)q6|pX5eypF5X;;!{DSR4~P6=PFL0 zd_dDfp?`J}3Do&Le$Oc#RN1VrF>2zToPHMzeSQo!N*x zi~ZpSo*D7&S^nAQAnMYZX$(x6kXAoTcp@@w{PZV!u@yuFZ;k!^9@@D~!}}UilONv= zt|xIAQgIWL8=bZeMry(R(R8c?J=#@it6(J9xJ?|X?IdkDi%#EOnYP-ER<@)3z2Sg@ zZ;+rMn(B!J$nHhxFa*w_gA^ta`bN#Oy(jy~rz~XLGeO}tlXw>1{pA31nBRW)S5A`R z2i@2cGXK^B%pP|LVd$nVQA)@}`JwtwyMXJ5Mmvb(gq0CFuX?RMoKL0Y)=qgc=9DAk zo>@4$;ZNefkkQVoZ|M6Q>4|Vn1;ns|TxSgOdt!V4K=L01hEFjtyZS8K;$P5IY!XUB z_6qr`Q>gg(fRfngf_s-PUUY@1meH@F4iAj$eMk;9QuF%uy66pF%D4M)nD)W<>VH5@ z{|p`q1b>!_`Ll1Qj9%1O!oGmYh;!faYjx7>QD&OFb~43$aAEU!WLBY|NeBH zcF5nC_ZrSvCVs91ix%I5fUF-Z8s-*c9$FINuJ%IgDM$(4$uGE(6o!y2KGq#0okpPRZZ1K%^$lmSmc2rIRfTpnylgB^3+$Be)x~U3;8~xtl%;kAhED?~#fJn^#_$IQ>sl`>yIBP2k4OCW zM`&{o4@Od-L+}|-f!#X@9gehF@t@z{`7n>=2wGULH0)iE@-@_6*`UmMF>?6iJ3_7S zBGjbjp<&n%7s$md>@C;d8iDe`nR*rg?gZ$3b>9P~aakRmPN>?)jt|=+*~L~Z;>8~( zw1Y=~_C6#%n2IDwOHB2)uR7+E1Dksm)}JQ{Eog)Fj$?3u0LeW{4^CQ|YCO~Ye9lq= z)`%9{rpGn(C2h<#jK;8I4Lvi5Q%aARIfQ{fUzLApG0hCBLJv!$1@;=jFU!h^B zQfeYNSAS)HEl#UxBS}Y%(UX!B0j{-{39_k~axewHgDB&%munt8g^t-FdwA_cg)6&r zA-qjKGmC6V1Aec9`G9 z%LZY$1G(oI<`c=>FGyFOR`zJFecRGTsD7x$R0(L^>^`-iX6NqRU&&mTIt<82IeGHr zp}(D3yoD=9*!r^Jz`pHJ4TFpO)*tlEs8?l69Y!3%{S@ZU%kaj zH5eJZ8%<@qBnUj&3LhH+?k~NQohOL^T?pf@!&rvMn;Rq4|8m^P3Vh4t?TPx6V1hbO z0HRT--4t$XZl4)XyZvkC6A4F$3Ckq$$E)7=p69LtkCr-jP*UoDzUB`GbwGZ_3$t;& za0}j(1^D|N;9HCk29*ZqpHV+8ISt+2YI_I5M7K>Q9a^;T#hTY(|2ypQa zm$rKRk%3GU=*5A(Tu17Q+CxIm+rA0^q`pa;(e}iQ^9)R4G4y5)4iK6ckSzM3QFhnI+%)_CQRXg5(_dFIeoXa<2B`S~|`?c$)LnvLMXLrlrULC4&yYK3q zGYe=x$YCSdjwxxKiA`};8JEzT^o+P@%vpU;cjjdT#z zZXUmqyJiNl-bu_~tU6daTvdaqE&K8xn07*=Jq0mu=kF^!9OH;n-8f4c_az8$buGuP z%7vAq!yL$9*P)2{yn9JAEu8AkjkXy4{d1Q-7b$G}4M-Fxj|%6%=ht>+kn>2AUXl>k zIuqD|d2tPUu=vvgi@w8WnX=l7eQuHsE?v4*6Ur6a=sa{jZK4Fec^Vdv#DWkA8t|xIEF+GWa(5wx$kwq z{WX(|Lc+#G4E;SY6jXSNXU(GFAT99CJNyWPe_hXHg%R@27sG=4KER12LU1_MH)s** zg!q7QlEa3VM-q;z|5Od^ac)Vs=JSn^S0^;I<5~{cUU~p~*qM1Xn!`-?5 zT5?O}cK6NNDZr;OoB2%Z>66K2$byjF+|H4|i%P*3!a>Dtd7_}%(Wu)&{Jfk^-cx9V zWIcpz8pc8`zdmTD)Jy+X;8vny29u9Lmoej{z_@ez*Mmf8?A@i^xsjQvzxB%cjsU=y zPw-J;rL0vYb~Tm@2q|hAe=zwC^@}I|1WN+5bLcs1>6eZ)}y?ESnW=jrI zz$}r5pgDao(6ql6Ej4Y3U+WLCnr+x~QErGIB{4L-n8qd{F%&mTwEzNUczKh zjUOqaCJA4{dLc|SU3X-lYPAZ?kPFx9UH5B=TsM)y$wwRiq%lC`wLQDGqsq26P5WH{ za1E&`n5Wpq|7B9#Qaj;lNe#E7E>kOO3Oh^JdFQ3PwL0}p@XZ|vj5Vi`*E)$&?e7GE zb+rjI0vxJWrm})qGDMp7$;i~^1JNH{t-EN^#O~Ru_)0D{Lq$c!hQM6ZXq3d6FAu+L z7U;ESCtBS}`o))+EHsTZ!-3`QLT%=lio*r#)l%6ZZsoTG;cTV`?Pt7+Lm?;Sarenp z67Xqhr8|@CaKPoututO%H!*P(s&RSMuzQ_5dl!(t&hObH}nmB&uYc#*l;tGj3 z?SIRv7e7S4Fb>TcS|PwI?W9@Qh(rZVe%Q(1R*h<-P~= zR!X+LZo%4-1>$Anze4Cj`NYiXv&{^qV-nl!mw?1%3hw?6 z(Lx?Zyu080QxK;>2)=QsaFhPDlF=`(QO@dLe<)`7wzy&wlScNbsm7~5F3L260VI+hITfe8mOV}I|p^KL+i9w`F=8-wtA9-U0 zp!aCalFLs(+3rPd1OD3w3X)$mF}!5{%|L+htbe7;bC7wt?^ zXa>9clB~?5VunS7>0rS~K=TV{D2IIO;1z<$RS$FzcK$>u+tr7tocs-p?u7wk%d+JI ztk`{;jk%Hs!dH`2NrSc;`f1pllo%;$52-4FoR!T#p&212-at$07QXZhjo>b@GQi!a zHdUPsNf5IPK_`RsRi^y-<4K*l`A3Q;FvBj9dw^A+zLOP^$D*0v&rBZT@pd3TXo$X* zJ8E^Zva(Ns#K@l&T?w5oen@OQo{r3vyK+dUaqdS7M8A>R)*PjXSr z3Ea*Wu?^tZ(j732hU7o=z~m5WDSJCw-4Fn{xST{jPf*3(dH(QNR%FRCd0QAMfd3QE z_GXrrzDKPLX+Fg8;vbi*4VP*8*JGYl*-9CiiC#a(%8>B+W-;?G>-0rlGSZ}rS~Xl> zO5*5$qNiJc#S+re)g-XO{tM7GZHTE-`_U)YbZrx_#v+=8hV`kP{vh9O$38 z!*>~OilI!h{J@O^lj(c|OZzjU#OC>$`R-wSvqc|HE%9?Yyh#&gD zWxTNF2dKGaVKG9QebJg^S$5{KTKx}!|8CUeM(+luRs|G!L7|G*Qq8-5K_RCNeT9{g zc2Z>Ne><}>U}|-kTO^_Sp??0@ziXmv=hlevOT}vomh{Kbf2K{8B;bH#_P$DXQja6{qIa z$KpaNk?2S275BlVfGdz1YI;L$crp8C#cU2_Ix-Fj+oj(&;~l8ba=wk7aRd-+YIJl) zkBQ&n$3yaJ>0CkzNylxY`RJ<}BT5u_iw9#50QtE~>i8yh#O$Xkc~iLYqzXbp@<|ba z(L3pD$g%~=gQtS9Ojm*bSmy>N{8mNz7OpgfkOV~!=UTh9nx95)7&%GyHG9JWNtEC0 z`Gy7oD|Hc0isF$waKk~fiYnc3irlie#_r#1AzB*1Ei<0=lUFu#FO2bVl{Kw}zV@HX z#m8a)bC>(OpE3|oj=<6Aae6y1<-}TsJLXRG1uA=`yjw&C{*5ReKCP#s^89xz<98ov zUCE&0bfA1eqriZEa8m5ov5i%MBpwpqs>{T0+eO}n?zh(WjAW5~qu_wSDY9t8V<0Ip z>$oRR-%wE(_OszR&)ySf9H`&D?GQI_JlR&$$=Ne^EgZE5115fB zJrmvqpf#xkHdO_hR-E*_$aVt>Ir?iDwf6XLxh z)6I?J~kFV~H5+O}rR|1(z3>uZxqP7c*&~NaxE>EEA})+13M0 zWF<85d^C5X?#^j1H!Fq_ug%!(qq}PvN~_fk66iY1!vh&q99X=Yd5anAO>)Z^YO@^5 zkEJYPp>##w^H5Wj{s#4Qz2&i&{#`}f*oF}AruI3)BNRyuibqRTgnR;Qf+{DR&6RkL zYbr2n494sp)4PBVXkroIQ@51@59cxwE{f*Y>P$V^%PFy%ZZvmU?mXOl?y?_@=jidU zuEW?Tt?_OaRS`aX;%@rV#MSOB`ev+B;{RF3FRAB*%FlzTh+rbG)%2+pBb#W|ii(Ip z!#uixRp!!Kz2<-I-s@d%YP4Hq4|0Vj>2c;1?O>}i^|6ZID9J3|nAw*}oX+$%;Xzu> zc2Van)sfM(MwY`XOqrQJR=GJ+v=^<*DR+k)i39Xa*N&Iyt#E%L>^x`S7{^Ah&GGpv zhi&;O9@PVV)R@A-g&P`Iptd<31|JW{*G3+0W7PDIQm~MSaxbZ`;iP^r#fIv7#yLhT z^o>D*G2L(tF~COm;Tk|Ega&y~JB^h1&4g}7GEiB2GZyrP569ijR3*OtJe@f|;lbmY z9oX!8#h*LHxVp0a4VBXu2v$ZT+iVc3l z&q8V6^JlGn;=eJ;{E9K3O2p>IVsQg+7q-4ILxZ#Y$m-h+%TG=) z$^!AgPr`e^^uQ7O!*%e*?B;aa%HyzC4YaVFo00s8#W zgkroh#0l#aIaxmom2XE8b^^EHQ>ubyq)4?T?M#;#Sc>XS`sqvm*mZ*&1Co_L>Tx8u z?@N4hmqBccgs5Gu1~pJ2!B4YKI+QN!&PV=WzOUolrlYswXa1P!IromoW2DwP$Sp0V zj#p{TJ8xcwVnE`|=Ip$v;&xGisQ6!V@0cyzP=_=5Cavq9KXW=`uPi-oGIDj}B6R#F z#k`+0mt%>J>Hz_=zuaZPFm@eIwh=gj^*2{wCfF zsj*tn!ylqd<26*`r%D$--K$p}kYdC~(N6^kYi6WTci(Z}3XD zZq6Inf(x;FH10-R3+3Vz&IvH_gS{}a#7wkT;u!XaPaXWjGQsj?-NZ>z4$D-l>P1wz z@0jhPbBsBvju4Lr3kEX}!3W-1Tm>ms9s|Ed^-{y&jP;Et=KO`UHwn&SSq@Y9R&b#K zCrM6TvoAjcRiY-%BylsPg#5XisS1`eeDWj6i&D8e5xI%(=YLAjAeg@Jf33ABS69Nv z*&XpLI}qq7=)TPEYE=T;z|#Xghi0ubc>`ZcaRs1Wtt%eS1KKrEPzAMh+zSkmV z?`!ew2CuR3CuY6O>4Z5~c4HR$0CpF6!5Gj0?;WAuu6kfkHU zgG6e*LOWsFEN*d-Q@yC`&cBYhTPriQ|6B*|seSE?B$vbZadJ-_S2Mt)5z9^B^svZ*3L}&l;XhXNBecP_vUT zl>!wva~sri!EN6R(uQ& zf~vu^8Gb)DA@@b-L@^UlA=Y~q-;Q+|;c||P$?kOd4vf&c6sCFL%SrGCM>=OQIRY}} zutikoez6OW^jr^KE{p6shqwT451lJ)>}>q}ppVNo#SBJfPNzO{zo;}d^F zYxB#*)goMhnZ%>QOp4mMYyv!_2#CRHI;cCYAV<8nbNXqrxBqPKN8bworHfHFKvB>4 zUS)~k`^4+G@svKx0GmpN9Bw;jNY_u*;I?85$>q#qP6?#5RLNGH7W^M~vat#_GI;#_ z3ND9oCuP8kdQqXZx@+QW=rqlLm(3#i*=5OCCPtBEX1tf>boa#B(~sNEE`!C5c|T`y zgU3_JvgPhVQ_4{c6dTLs)w&Df_K}ra8+nNv``0!H&r2jLdk6%gJ!my!m~`B2u%dC5 zb7q>EkUQ)=v2qKN2PEmM-6$sZ?gAX-EJr5hzSv=|CbN7J5PH(NV8EtptYN_7#q#mP z?vJR#GJB`|c}ZdSxR;neNH}$gEb~cxGzWv@)AQp>Zg25ns~0{6KzIAN-BuAYMQx98{KzS0UCU&)q>!VHE<<7{ zp^3|3DI_Xp+j5~ZaGo+esjrDyEeA#2iP#s$DW;Xgm##R#_m3m{*Nj(i_)fDZU~Q9^ zJ3o~mr>Y8AAXT3i&mr&lBEOF1@OHSo#z;#byzGjCE@qyPT7h~7 zUru?mog_j-Si)*U{MDlSTD%8mp`)(ier_gONX30RbNaI0g?-0uqvnE0N`;_OKyH+U z-e{ad6h|7>)+*kibPrb)0fDIYF6oO1oLwF*I0yV;Hdf>W+#qRA7X_+qKMxblucAbk zIi0UpkgUB(mq*-&wR3=XMQy-l&)IFzM6p))TSX}wbGlluXkXMNvUd4#&Hr2bH6XBg zZX4;#73V9-GnkpT@+DKXm8J7U%v*>jH8hikpV4cEpLs-2xGDb+Y7)8x^tK_=XgS69 zB#1fK{N4Yp)&DTN_RP)ib8F3vGS6!I2+&ICdAjpxB?=eyTpQI8EhAWCr!&mKX?fYt z0{fYYWZ~?O=w9Vlh~LbiLm4me5jnE)RHa8F|01JYUABSp<<7)9qVOW>A9Px>Ovz!5+~_RPI$83$%x2xaky=2$ncad!%XZbFh8AtypI zniE#KGb6r%Qy>P=>Xp*Zxqa()H~e+jn`UH9FR5XqmMBzLEN@&#{PX`gFG>4H^pu+x zSf4%f#?6YN?FKYUy87zsNH-gGq*|Ekt=Z@gj>0IoClZ-0OeSvZYT%6*s8+G zTc%R`3N)B4p77H;=^6+Ni5HqP^2iSf0`{Js1t^r&)ps`*8!vUD^wNijAN|i~gdC}D z?8D_|SsIFGgXTfQFe`X$>x>lsBrRvJ^^Rg`(izfc|WFQF;z)xH~hKpI2&t0s)Avk~j zwc}o4V&wKqIDgbYS@AjVNaey}`pfnfhg6@u+w5KYWZ+o4ma*#j*9k8?wRPkirn|xegQDzR%NN6qAFlnlpj}~$;qr@GD-22{g?w%P2`Rj4FF2Ls9 z@5SZ9nu3DYv5iL>rBBp*Pu29C-QgVL=X_Ol&_24b?qz$(4XRi94xV)Xt1zxAMIS@y zs|6BUf+R!>ZDurceC?Wltz%YrKwd>r1p`;F!m%7(Q@2fN2?*WARDW+aY$dVEMNHy@VjM!kz#yPG;fZ{7)U0+C=6woY5LS6^D%u-fhN4 z2N#!fem<{2>2h=1^F#+YuNc|vq4-RCB#g7sF&B^ednGN|RECq{xm>yQsk5q0OliZV zt+;>~)7%z<*&XyPKor$}Jj{GA*?fm&eu0!_kfdad?waOx@*aQU7?bvm&)^~2y_1fs zByHcZ{J~GLo&U2S1q;Xy52sb~=2XAWlPJE2S$$d+v*xJJeO=Xxs5>(mC{r7`l`t&C)#trQLs6ZLsD z;GC4!6RXq{;dwUvWKO`r<_8Oy6@or)GiIW+HTrZzdQ+O7D`-FGbA8VKPKve3`ukLl zmkzr_(R19SOO{oLURioJO!)2DAg>EKKMa<--}^9O^Xc*8^7@393ab3R##7zxE>~7N zCx38`%Xg0a_a=Uv%nF?8{4BH-VO#1Cm0Y9r=s7=bq2rvf%p>jcn8-#3PF|TP1_v(g zmF26BF=Byajlj+tj{g>HVc=vS3%H{fc8UC9YO7KH-vw7xmThC;D^0j8w)rHR{4siUqjSe-ewB|5Ekoh60=4R}0~L7pK|*qn(wS1P z^R>8wd)^SPFtND2TpSA|HTWsXR*xFfDuGQOiVP0=uUIf$v-lj+Y(@Tq^A{O;>@PPUxAZkpcumI^w-RNVTOZakE%H&nFcXzSUSOF755 znls@KyInxw$Xl7o4B0s(B#e(yX zc=(^NDx0MSC%ovnV&fby-4l(Q&YHlM!viza2l*R|=FyF9INyJ+4}_HAZ-RZjVQ&Et!9$wLGD&?D;ERaIwNR=qsa^t30z$`RL#uB{{)d%>gFy99=u7t(42Hw}l3Mdz(|o zx>EPRFSqf1%aTl30`x=FCHP>O1an49E-fuTX2;6(w0VT}{rcB7>xCJ-^IuoWkLu3z zuCY{nI%mrrb6c7VsgTdU3c3fc>ab0nF8JicO_QEFU0znpys$=m+jAbcg;`^0*Lj!G z|Mj2)mG)yHBQ-iM66NF)&eoG~)A_`I_R`UoVd@2zP_&}mRQa*q@RiPqFzf&QyQCpQ z=@(y^+w$Gq(?600#My2BvFb3|uw?UXsIn1~fJ)b44H>UX;fc{|I4(RK6EtTDH6rC{ zze`CT$iGfpv`$IhP$C}I7;dFTSEO0<&S&Up2Xe63jg!3 zf);$`$EIiSXkxsqe*RUQ3(p^z`{TQw-exg{x363M^XLvn+~0o02}meTTw7uT6RF1n z!!mYm4edAahq{K`1NBihj3jp=hfccCZdkTWrC?m2#Y z*t^co{_O(p9^wk|w<^iqoEmy8_|gkyXooDw-}K&W;%}Groc#B1)!yBp4sIaH z7GbaPsE}H|RSA}X39IT7c<-BVXW#oUWk&gB5=VbYxF|!%r;5FY{Pn*kRpZX$^6-^# z3u4mI2ly*@rMdW?vRA&gnH|7}H^&8z+H!vL+=NPm0IlYn= zt}bYH9Sdqdi*flRY44D@Lu~$vRmA2yznU;)5Kh{Om!fciNx9Z(+WJ&&L+pV$V~i&Y zx=Pud(8pnD_i~7us1;vzW>?@D`MNVpLTdE2n^Tk)mvf8~x7wu@?R=tAi})nz32bi8 zz-eq@NQomC?=s_Dn7oC!o8|Vq#pS0GA_H?YcFNGsj*=7yyKt1aRQ~f9Js06hR`o=} z>cp#j;buOpN1WM?-X9#qUrJZb{c-7;=u0{4{A6ft_g`H(O^`+O9_#3UefvgUvUyi6 z8L3zm0Gl)#!I)%VH=l`82xpSZc~+aJDc~|s;}d(p$Maf^`@RKiW~g-|SGV;}k5ozC zqnO~dAwlV1o0+;}ak*9|NQN%XXlv`s0#Y0{O9k)rrEEim(ZfM|@>UwhLCWPBa z@do^3)n_m5X2MX*gG<9VS%~u~nW!qhTA5e1U9mE4D{kDc$55+G{c$A+HC#apPA12{ri3Ue7@fqkH_i_Svo+J_fAFM%8X))08XjqD{; zxTvP3#d6|$K#-N{7CRfmb%_exWcmVzPz-X75@nV~=Ni+acQyEw>RuF0%0dKS(L(A` zF%$1yOXrOg`4@rw7(lOQRuqRN86N&6?Rz^WX=nG0T&r`9b$qFry$#H)ox)5?hI1(4 z?rbjV?zJ=?OUXYvQqatay4}LAX@9pYPIY^;H)it^RRP;lN#jn7fd+xjwJf|W2LUp$HmV=I>1`H= zif;QS&za$czLnjf9a9Cy9I@fk{QBY6)8B}g@w;f;`H>BHS{Otp^4>=0SXH#Y2{89xNzFg=0nS-mRDY$vO{Tn zOh3J%m?|aXVCrydGTLJ|k&-h^c$^<<0ZDNh4fj;FxsJA6>Lfm0gXqbJ{|<`d&@T=} z(__6JJN;#_v7G)h;!jLB7^0WSY$w^nl{8%YddLdzOU%oo8V8 zjTDKqxg&brv#htKhd)zkASSSf6mux_;1zGnF0VTkbfze9Jbpq`hHeXTd@nLvDr-y%jPw238qVJmI1#dMLcRStu)mD1r zS#VbHLA%hc>^HRAO2=cBF&Og|R!N=oDt{01^LDVpC%GNodRV+@{Uy2Sn?$dcW~NzgQ|_Mq2)$lRT9>kafZ9f&d*e0 zcIydAr6+%oY0);p>Ut2R4Cw)|;NMEY5~9a**P!P(ZlQBI3ABwh^Kn#h*(i4Q(RCUf zzOebjO(&|&rg6J8=Rp$|+8E%eJ?INo4C~2hb-PJf`m^{do%hbeV0gj%$=3h&;fbVu zvyBG5@*5&|*aY2bibw-PC5uwha-VPdB^nYGQZ!GJSd1z+0JNW#+m1_VweBAy-V1!N zFK;_xj04;ewh!!F@(>uK^<#_}vw-#zPPLt7sZ#o-w+5IDc&d#QEn#WRCVSvFQ*Tvm zYq_u4iSC!?l-Fn8+$$H0K4xi4eu57IpetEQB1;*iDo+ioSO~Y=t7eQHMW1UtVOPqT z*_OV#Gxz|u<}3dJPkUz{Ef=a!5bb%@GaAibM!1Y>fZ}={65HKL*Ae`r-2=yH-6?6E zA+5I&9N4;i=&OD#)jHTn37YC7AAdntowM7NYH-fhy;k8jTqp2D+D zH=T)lsqfANcmMxP09pP`J`5LiwId0yep(*j{5bRuwl)R#Ih60v51_p31q8Wn+{i<* z1z@iCmlpA$P!3q#)EzCnMJbu}paTnR4F0d+O9&! zn!aRY|MsFkH7G_s`#bftbhT+i6cL%R2h?QBc8|@SYSSv53asTntOeRXp(lWzTL!=+yUXNY2U%_DxC98luDe^SGPqD}C zA#%vWTrg5suEjj{t+!*Mal3B{Omv|mT}!cjJ{Sq`672vDjr3z9KR+Qorl(GunYI(! zo^I)$3sOc#G-?fbykoOf8xmF*dNtCvS=ss6LR*9}>+Bf~&qIT7DB567QD=1+GZb_A3hao+T=K$8!AF+g9Qz>e*+G!fQbwtnWd z1lpuOR$KuLkzjX4Th|5d;anH_nr}fb?jPz6c-aa()}xWR2ug*zC6O(f?s>6RZ^`lv?;XdyD%JgPMBP z0wPMveD9T+-r)Y|OOGOEc>OEmqru8>yIeHfp2@zLdJ+R2_AYsd=DLx@M8~kjs$DO) z+J&Kb#p8LKZi|7vsbE~qn~B62L>C^}_c5xsery8)CM8aV?K13q@gxGi@uyU$LxYzR zn%xCtgv(>_UH~u?1UKvF`CLCMt&Wj`ku)Cu<7(Zi>+i3cK#clAa05#N_;$mL+xtEV zJzqErg9cq_<`-sZY%!x1^MN#y{r}9TC1SmyHVN7#b9_3WI?|g{WA1;(-V+U2r|Rcd zCktzv9SsN;^bl!&>pw_M(+y{?CV5;f+G_wJsr($$Aci_hY98AOa$uwOf?6X=ZDAR7 z0c%C&8mtxl11hr=VX4%itIQ<_ETf16dg_Ri0qXDFY4$|8PdfYdhmr5H|Ay1W;>|&G z(kdeRmEeI-NloM#8UK~imQ-Bt0hpDcc-}$w1G>3JA*nSRznBP6Fep@O!ZG8mIh={N+@}fqCSR;` z*nwENXDI*1L+$Jk}BJs@u~NZnAV0>e@1Yq<@@1YRE9XDP#s%YO#Y4>AgONm)J8As{WB^_43pQ!Az)%M73IjK?`V`*nxtK-- z>WpJu-s5({WevIt68L8N&-fkv*%*t%VjpanEwULS3mGzpBr`fH-(_a6wS8*@q=wD{ zoEy23rG0`0g}=CZF_kcG29S2F1O%Zvchc`00KdeydJ#2i+#Ci@)sU*uV|TJS1Z0L< zBiKy3>Kr~WxO6jd_!K&6ieJn&!6qDG@B}Cd6ERFYVItZgkdpSgxg!gGFhb|47_vHA zjXUHb^fZg0k4g6xU=Lpz1^$j4;!s7Se{`$|q~EFQnjvx8W{#QdQU@6seFiD87*qoN zrzxIDJO7^Yx)20#j2dO!IY6r!$b-gGrg3Ij7F;$7@NvXgg+<$;9bN_7Nr$c($<>dH z>XcKVB-c+M7_Nj#!?ghuEDm3#uZ}M`4BR2cPN8D@4QPvftNB!h?ql%p$yTa}OmC)e zFO4hsYy9XjJ`?S2(jo80>Xy90U2$p;C~Cp1NH%GnCZp4xCz$1m%TvyI`QYAS)pax& zgIYyN7If-g;v^Jz|G9Q?4(99BezqilAvDS!>Na4`km4)8WsvnV_>G6irL7-@>8`hAk_4uql-Y>xA#de5r$WV?;_LZy6k{z{s)FmO2RXv1nc39INZ-SHCuT zTl)9K*s%j4EB#0i%YuR5-*Dq*(v^$$)B7cXCAcaw3}3;pV*hnftod)~hx@OO@?N$B zJ?~1*`OvmgE208+R&_*|F7rXpC%z`HXt)LxiUL>?l1Th2+*5Hhup|j3zI>o}>#nU3 z-BBK>(Tux&$Hiwff7-1jEwyBGRfGzwvovtYDvLyx$m z&!gQG z`Yp*NSKgTp|7}r*BMaFr{`}fZjfa)m4_a9iC4Lu3UdAZanpz)hw9i?|$X;!fZ6Y$O zHv1qjBYR6D<12ek(EMCk2}boNTp;}D)nI<}Penf{lYyMzG||@Kj}R|LFIG>kO#?i~ zIy?n#p)ubE6!0W!IlMs)t)b5S$+eiMA@&3}8PsT~3SOs(EpWvpQ)qUS)2Im*eiXC~ z6PUar4#)Kp_}op>X{60HYlAkR*G)x5;Ns&t1MaGwkk8zN4|krt+3t8x(tRfK-R>|K zLe5`Bd=&zRStzzwH5Ga$Oj4(66jJdo6o88{FmyYoW_Z7iO=m);C*-HaAAUY$;G?OS z)zE}^^ceBI86&p%c_hBpyQxb(W|9XQBCFE{c}AlRdJRd;$}^d4y{~HFWTd$nzt#MGyUZeLF2D+UyCq4*45-u0a<4SPc5L!Iq1< zb`beK(}8J7T93>r98Tn2&U{(bcKW+C7y0Ti0%{4n{l9`v3J;V9Y6WkNF*xzhpFl}v z5Oh#&)?H&btSNwM-Ae6_dZ4C^WoSga$y>sbdDw}sWu!J5_yCrC(rE7bl@>E8@M zX+!W@;&d1x-jDOrznhxqVU531U~2(;D9)XHQ;M(mi0=`OJvmyt3)dq0t;jz))Zx)T zj;{c~QgMO-QmG4))#fETkFrp{8=0s17GA-lEK}o<N3AmPTm(8NxMgB?RhzvU5s&!DZGtpN0DCa6HzA5dTmw~v*A_%6JK}!5gu(a z%NjZCmy$YahHgWR_Hrv1$=gp@M}NKDqSj|Qq<5lzEGxVg^gXr94xRx_y@wwPieFQ&*&-z>ZFFSrQX` zUEX?vL-~(K4YzJSzu1OJzTi-eCeB`HY2Opm`nhjC#x`C7lSoJ)V>)Gzw9u}k{$JBP7G8q>jhT{Y-}ByndA>{WWoMt_K}X}ZAx literal 0 HcmV?d00001 diff --git a/MediaBrowser.Providers/Plugins/StudioImages/Plugin.cs b/MediaBrowser.Providers/Plugins/StudioImages/Plugin.cs index 28f8c0c617..167959967d 100644 --- a/MediaBrowser.Providers/Plugins/StudioImages/Plugin.cs +++ b/MediaBrowser.Providers/Plugins/StudioImages/Plugin.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Plugins; +using MediaBrowser.Controller.Plugins; using MediaBrowser.Model.Plugins; using MediaBrowser.Model.Serialization; using MediaBrowser.Providers.Plugins.StudioImages.Configuration; @@ -13,7 +14,7 @@ namespace MediaBrowser.Providers.Plugins.StudioImages ///

/// Artwork Plugin class. /// - public class Plugin : BasePlugin, IHasWebPages + public class Plugin : BasePlugin, IHasWebPages, IHasEmbeddedImage { /// /// Artwork repository URL. @@ -50,6 +51,9 @@ namespace MediaBrowser.Providers.Plugins.StudioImages /// public override string ConfigurationFileName => "Jellyfin.Plugin.StudioImages.xml"; + /// + public string ImageResourceName => GetType().Namespace + ".jellyfin-plugin-studioimages.svg"; + /// public IEnumerable GetPages() { diff --git a/MediaBrowser.Providers/Plugins/StudioImages/jellyfin-plugin-studioimages.svg b/MediaBrowser.Providers/Plugins/StudioImages/jellyfin-plugin-studioimages.svg new file mode 100644 index 0000000000..e9da69c571 --- /dev/null +++ b/MediaBrowser.Providers/Plugins/StudioImages/jellyfin-plugin-studioimages.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/MediaBrowser.Providers/Plugins/Tmdb/Plugin.cs b/MediaBrowser.Providers/Plugins/Tmdb/Plugin.cs index 4adde8366a..04f1fd04a3 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/Plugin.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/Plugin.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Plugins; +using MediaBrowser.Controller.Plugins; using MediaBrowser.Model.Plugins; using MediaBrowser.Model.Serialization; @@ -12,7 +13,7 @@ namespace MediaBrowser.Providers.Plugins.Tmdb /// /// Plugin class for the TMDb library. /// - public class Plugin : BasePlugin, IHasWebPages + public class Plugin : BasePlugin, IHasWebPages, IHasEmbeddedImage { /// /// Initializes a new instance of the class. @@ -44,6 +45,9 @@ namespace MediaBrowser.Providers.Plugins.Tmdb /// public override string ConfigurationFileName => "Jellyfin.Plugin.Tmdb.xml"; + /// + public string ImageResourceName => GetType().Namespace + ".jellyfin-plugin-tmdb.svg"; + /// /// Return the plugin configuration page. /// diff --git a/MediaBrowser.Providers/Plugins/Tmdb/jellyfin-plugin-tmdb.svg b/MediaBrowser.Providers/Plugins/Tmdb/jellyfin-plugin-tmdb.svg new file mode 100644 index 0000000000..fbebb32b60 --- /dev/null +++ b/MediaBrowser.Providers/Plugins/Tmdb/jellyfin-plugin-tmdb.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + +