From 2c259c5c6f07f58c40e6d998378cc847d8442d5b Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Thu, 29 Feb 2024 09:17:09 -0500 Subject: [PATCH 1/3] [frio] Remove legacy schemes - [frio] Replace default scheme file by default scheme value - [frio] Simplify frio theme settings - [frio] Remove query string scheme setting --- view/theme/frio/config.php | 38 +++---------- view/theme/frio/php/default.php | 5 +- view/theme/frio/php/scheme.php | 59 ++++++++++++++++++-- view/theme/frio/style.php | 35 ++---------- view/theme/frio/templates/theme_settings.tpl | 10 +--- view/theme/frio/theme.php | 3 + 6 files changed, 74 insertions(+), 76 deletions(-) diff --git a/view/theme/frio/config.php b/view/theme/frio/config.php index 3703912d3f..62969badeb 100644 --- a/view/theme/frio/config.php +++ b/view/theme/frio/config.php @@ -24,6 +24,7 @@ use Friendica\Core\Renderer; use Friendica\DI; require_once 'view/theme/frio/php/Image.php'; +require_once 'view/theme/frio/php/scheme.php'; function theme_post(App $a) { @@ -93,14 +94,7 @@ function theme_content(): string } $arr = [ - 'scheme' => DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'frio', 'scheme', - DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'frio', 'schema', - DI::config()->get('frio', 'scheme', - DI::config()->get('frio', 'schema') - ) - ) - ), - + 'scheme' => frio_scheme_get_current_for_user(DI::userSession()->getLocalUserId()), 'share_string' => '', 'scheme_accent' => DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'frio', 'scheme_accent' , DI::config()->get('frio', 'scheme_accent')), 'nav_bg' => DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'frio', 'nav_bg' , DI::config()->get('frio', 'nav_bg')), @@ -123,8 +117,8 @@ function theme_admin(): string } $arr = [ - 'scheme' => DI::config()->get('frio', 'scheme', DI::config()->get('frio', 'schema')), - 'scheme_accent' => DI::config()->get('frio', 'scheme_accent'), + 'scheme' => frio_scheme_get_current(), + 'scheme_accent' => DI::config()->get('frio', 'scheme_accent') ?: FRIO_SCHEME_ACCENT_BLUE, 'share_string' => '', 'nav_bg' => DI::config()->get('frio', 'nav_bg'), 'nav_icon_color' => DI::config()->get('frio', 'nav_icon_color'), @@ -149,33 +143,15 @@ function frio_form($arr) $scheme_info = get_scheme_info($arr['scheme']); $disable = $scheme_info['overwrites']; - $schemes = [ - 'light' => DI::l10n()->t('Light (Accented)'), - 'dark' => DI::l10n()->t('Dark (Accented)'), - 'black' => DI::l10n()->t('Black (Accented)'), - ]; - - $legacy_schemes = []; - foreach (glob('view/theme/frio/scheme/*.php') ?: [] as $file) { - $scheme = basename($file, '.php'); - if (!in_array($scheme, ['default', 'light', 'dark', 'black'])) { - $scheme_name = ucfirst($scheme); - $legacy_schemes[$scheme] = $scheme_name; - } - } - $background_image_help = '' . DI::l10n()->t('Note') . ': ' . DI::l10n()->t('Check image permissions if all users are allowed to see the image'); $t = Renderer::getMarkupTemplate('theme_settings.tpl'); $ctx = [ '$submit' => DI::l10n()->t('Submit'), '$title' => DI::l10n()->t('Theme settings'), - '$custom' => DI::l10n()->t('Custom'), - '$legacy' => DI::l10n()->t('Legacy'), - '$accented' => DI::l10n()->t('Accented'), - '$scheme' => ['frio_scheme', DI::l10n()->t('Select color scheme'), $arr['scheme'], $schemes, $legacy_schemes], - '$scheme_accent' => !$scheme_info['accented'] ? '' : ['frio_scheme_accent', DI::l10n()->t('Select scheme accent'), $arr['scheme_accent'], ['blue' => DI::l10n()->t('Blue'), 'red' => DI::l10n()->t('Red'), 'purple' => DI::l10n()->t('Purple'), 'green' => DI::l10n()->t('Green'), 'pink' => DI::l10n()->t('Pink')]], - '$share_string' => $arr['scheme'] != '---' ? '' : ['frio_share_string', DI::l10n()->t('Copy or paste schemestring'), $arr['share_string'], DI::l10n()->t('You can copy this string to share your theme with others. Pasting here applies the schemestring'), false, false], + '$scheme' => ['frio_scheme', DI::l10n()->t('Appearance'), $arr['scheme'], frio_scheme_get_list()], + '$scheme_accent' => !$scheme_info['accented'] ? '' : ['frio_scheme_accent', DI::l10n()->t('Accent color'), $arr['scheme_accent'], ['blue' => DI::l10n()->t('Blue'), 'red' => DI::l10n()->t('Red'), 'purple' => DI::l10n()->t('Purple'), 'green' => DI::l10n()->t('Green'), 'pink' => DI::l10n()->t('Pink')]], + '$share_string' => $arr['scheme'] != FRIO_CUSTOM_SCHEME ? '' : ['frio_share_string', DI::l10n()->t('Copy or paste schemestring'), $arr['share_string'], DI::l10n()->t('You can copy this string to share your theme with others. Pasting here applies the schemestring'), false, false], '$nav_bg' => array_key_exists('nav_bg', $disable) ? '' : ['frio_nav_bg', DI::l10n()->t('Navigation bar background color'), $arr['nav_bg'], '', false], '$nav_icon_color' => array_key_exists('nav_icon_color', $disable) ? '' : ['frio_nav_icon_color', DI::l10n()->t('Navigation bar icon color '), $arr['nav_icon_color'], '', false], '$link_color' => array_key_exists('link_color', $disable) ? '' : ['frio_link_color', DI::l10n()->t('Link color'), $arr['link_color'], '', false], diff --git a/view/theme/frio/php/default.php b/view/theme/frio/php/default.php index 14914288aa..02e073a364 100644 --- a/view/theme/frio/php/default.php +++ b/view/theme/frio/php/default.php @@ -29,6 +29,7 @@ use Friendica\Model\Profile; require_once 'view/theme/frio/theme.php'; require_once 'view/theme/frio/php/frio_boot.php'; +require_once 'view/theme/frio/php/scheme.php'; // $minimal = is_modal(); if (!isset($minimal)) { @@ -59,8 +60,8 @@ $is_singleuser_class = $is_singleuser ? "is-singleuser" : "is-not-singleuser"; // Add the theme color meta // It makes mobile Chrome UI match Frio's top bar color. $uid = Profile::getThemeUid($a); - $scheme = DI::pConfig()->get($uid, 'frio', 'scheme', DI::pConfig()->get($uid, 'frio', 'schema')); - if ($scheme && is_string($scheme) && $scheme != '---') { + $scheme = frio_scheme_get_current_for_user($uid); + if ($scheme != FRIO_CUSTOM_SCHEME) { if (file_exists('view/theme/frio/scheme/' . $scheme . '.php')) { $schemefile = 'view/theme/frio/scheme/' . $scheme . '.php'; $scheme_accent = diff --git a/view/theme/frio/php/scheme.php b/view/theme/frio/php/scheme.php index aa6571a4d1..7304d83cd0 100644 --- a/view/theme/frio/php/scheme.php +++ b/view/theme/frio/php/scheme.php @@ -37,15 +37,13 @@ use Friendica\DI; use Friendica\Util\Strings; +require_once 'view/theme/frio/theme.php'; + function get_scheme_info($scheme) { $theme = DI::app()->getCurrentTheme(); $themepath = 'view/theme/' . $theme . '/'; - if (empty($scheme)) { - $scheme = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'frio', 'scheme', DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'frio', 'schema', '---')); - } - - $scheme = Strings::sanitizeFilePathItem($scheme); + $scheme = Strings::sanitizeFilePathItem($scheme) ?: FRIO_DEFAULT_SCHEME; $info = [ 'name' => $scheme, @@ -100,3 +98,54 @@ function get_scheme_info($scheme) return $info; } + +function frio_scheme_get_list(): array +{ + $schemes = [ + 'light' => DI::l10n()->t('Light'), + 'dark' => DI::l10n()->t('Dark'), + 'black' => DI::l10n()->t('Black'), + ]; + + foreach (glob('view/theme/frio/scheme/*.php') ?: [] as $file) { + $scheme = basename($file, '.php'); + if (!in_array($scheme, ['default', 'light', 'dark', 'black'])) { + $scheme_info = get_scheme_info($scheme); + $schemes[$scheme] = $scheme_info['name'] ?? ucfirst($scheme); + } + } + + $schemes[FRIO_CUSTOM_SCHEME] = DI::l10n()->t('Custom'); + + return $schemes; +} + +function frio_scheme_get_current() +{ + $available = array_keys(frio_scheme_get_list()); + + $scheme = DI::config()->get('frio', 'scheme') ?: DI::config()->get('frio', 'schema'); + + if (!in_array($scheme, $available)) { + return FRIO_DEFAULT_SCHEME; + } + + return $scheme; +} + +function frio_scheme_get_current_for_user(int $uid) +{ + $available = array_keys(frio_scheme_get_list()); + + $scheme = + DI::pConfig()->get($uid, 'frio', 'scheme') ?: + DI::pConfig()->get($uid, 'frio', 'schema') ?: + DI::config()->get('frio', 'scheme') ?: + DI::config()->get('frio', 'schema'); + + if (!in_array($scheme, $available)) { + return FRIO_DEFAULT_SCHEME; + } + + return $scheme; +} diff --git a/view/theme/frio/style.php b/view/theme/frio/style.php index a0cf77932a..d0de2d8262 100644 --- a/view/theme/frio/style.php +++ b/view/theme/frio/style.php @@ -24,10 +24,9 @@ use Friendica\Network\HTTPException\NotModifiedException; use Friendica\Util\Strings; require_once 'view/theme/frio/theme.php'; +require_once 'view/theme/frio/php/scheme.php'; require_once 'view/theme/frio/php/PHPColors/Color.php'; -$scheme = ''; -$schemecss = ''; $schemecssfile = false; $scheme_modified = 0; @@ -35,7 +34,7 @@ $scheme_modified = 0; * This script can be included when the maintenance mode is on, which requires us to avoid any config call and * use the following hardcoded defaults */ -$scheme = null; +$scheme = FRIO_DEFAULT_SCHEME; $scheme_accent = FRIO_SCHEME_ACCENT_BLUE; $nav_bg = '#708fa0'; $nav_icon_color = '#ffffff'; @@ -52,7 +51,7 @@ if (DI::mode()->has(\Friendica\App\Mode::MAINTENANCEDISABLED)) { DI::config()->reload(); // Default to hard-coded values for empty settings - $scheme = DI::config()->get('frio', 'scheme', DI::config()->get('frio', 'schema')); + $scheme = frio_scheme_get_current(); $scheme_accent = DI::config()->get('frio', 'scheme_accent') ?: $scheme_accent; $nav_bg = DI::config()->get('frio', 'nav_bg') ?: $nav_bg; $nav_icon_color = DI::config()->get('frio', 'nav_icon_color') ?: $nav_icon_color; @@ -71,7 +70,7 @@ if (DI::mode()->has(\Friendica\App\Mode::MAINTENANCEDISABLED)) { DI::pConfig()->load($uid, 'frio'); // Only override display settings that have actually been set - $scheme = DI::pConfig()->get($uid, 'frio', 'scheme', DI::pConfig()->get($uid, 'frio', 'schema')) ?: $scheme; + $scheme = frio_scheme_get_current_for_user($uid); $scheme_accent = DI::pConfig()->get($uid, 'frio', 'scheme_accent') ?: $scheme_accent; $nav_bg = DI::pConfig()->get($uid, 'frio', 'nav_bg') ?: $nav_bg; $nav_icon_color = DI::pConfig()->get($uid, 'frio', 'nav_icon_color') ?: $nav_icon_color; @@ -89,18 +88,9 @@ if (!$login_bg_image && !$login_bg_color) { } $login_bg_color = $login_bg_color ?: '#ededed'; -// Now load the scheme. If a value is changed above, we'll keep the settings -// If not, we'll keep those defined by the scheme -// Setting $scheme to '' wasn't working for some reason, so we'll check it's -// not --- like the mobile theme does instead. -// Allow layouts to over-ride the scheme. -if (!empty($_REQUEST['scheme'])) { - $scheme = $_REQUEST['scheme']; -} +$scheme = Strings::sanitizeFilePathItem($scheme); -$scheme = Strings::sanitizeFilePathItem($scheme ?? ''); - -if ($scheme && ($scheme != '---')) { +if ($scheme != FRIO_CUSTOM_SCHEME) { if (file_exists('view/theme/frio/scheme/' . $scheme . '.php')) { $schemefile = 'view/theme/frio/scheme/' . $scheme . '.php'; require_once $schemefile; @@ -110,19 +100,6 @@ if ($scheme && ($scheme != '---')) { } } -// If we haven't got a scheme, load the default. We shouldn't touch this - we -// should leave it for admins to define for themselves. -// default.php and default.css MUST be symlinks to existing scheme files. -if (!$scheme) { - if (file_exists('view/theme/frio/scheme/default.php')) { - $schemefile = 'view/theme/frio/scheme/default.php'; - require_once $schemefile; - } - if (file_exists('view/theme/frio/scheme/default.css')) { - $schemecssfile = 'view/theme/frio/scheme/default.css'; - } -} - $contentbg_transp = $contentbg_transp != '' ? $contentbg_transp : 100; // Calculate some colors in dependance of existing colors. diff --git a/view/theme/frio/templates/theme_settings.tpl b/view/theme/frio/templates/theme_settings.tpl index 7e53429e3b..0e10070684 100644 --- a/view/theme/frio/templates/theme_settings.tpl +++ b/view/theme/frio/templates/theme_settings.tpl @@ -4,17 +4,9 @@
diff --git a/view/theme/frio/theme.php b/view/theme/frio/theme.php index 58eb8268c3..c316f8dbf5 100644 --- a/view/theme/frio/theme.php +++ b/view/theme/frio/theme.php @@ -41,6 +41,9 @@ const FRIO_SCHEME_ACCENT_PURPLE = '#a54bad'; const FRIO_SCHEME_ACCENT_GREEN = '#218f39'; const FRIO_SCHEME_ACCENT_PINK = '#d900a9'; +const FRIO_DEFAULT_SCHEME = 'light'; +const FRIO_CUSTOM_SCHEME = '---'; + /* * This script can be included even when the app is in maintenance mode which requires us to avoid any config call */ From 4fcc92e532fb1de930b3eab66d8632fe33a7211f Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Thu, 29 Feb 2024 09:57:07 -0500 Subject: [PATCH 2/3] [frio] Delete legacy scheme files --- view/theme/frio/scheme/blue.php | 16 --- view/theme/frio/scheme/koyu-dark.css | 52 -------- view/theme/frio/scheme/koyu-dark.php | 10 -- view/theme/frio/scheme/love-music.css | 74 ------------ view/theme/frio/scheme/love-music.php | 15 --- view/theme/frio/scheme/plusminus.css | 168 -------------------------- view/theme/frio/scheme/plusminus.jpg | Bin 22856 -> 0 bytes view/theme/frio/scheme/plusminus.php | 17 --- view/theme/frio/scheme/red.php | 15 --- 9 files changed, 367 deletions(-) delete mode 100644 view/theme/frio/scheme/blue.php delete mode 100644 view/theme/frio/scheme/koyu-dark.css delete mode 100644 view/theme/frio/scheme/koyu-dark.php delete mode 100644 view/theme/frio/scheme/love-music.css delete mode 100644 view/theme/frio/scheme/love-music.php delete mode 100644 view/theme/frio/scheme/plusminus.css delete mode 100644 view/theme/frio/scheme/plusminus.jpg delete mode 100644 view/theme/frio/scheme/plusminus.php delete mode 100644 view/theme/frio/scheme/red.php diff --git a/view/theme/frio/scheme/blue.php b/view/theme/frio/scheme/blue.php deleted file mode 100644 index bd98ad6a5a..0000000000 --- a/view/theme/frio/scheme/blue.php +++ /dev/null @@ -1,16 +0,0 @@ - a, -#topbar-first .dropdown.account.open > a, -#topbar-first .dropdown.account > button, -#topbar-first .dropdown.account.open > button, -#topbar-first .dropdown.account > :hover, -#topbar-first .dropdown.account.open > :hover { - background: #111; - border: 0; -} - -.nav-pills .dropdown-menu, -.nav-tabs .dropdown-menu, -.account .dropdown-menu, -.contact-photo-wrapper .dropdown-menu { - background: #111; - -webkit-box-shadow: 0px 0px 69px 4px rgba(0, 0, 0, 0.25); - -moz-box-shadow: 0px 0px 69px 4px rgba(0, 0, 0, 0.25); - box-shadow: 0px 0px 69px 4px rgba(0, 0, 0, 0.25); - border: 0; -} - -.account .dropdown-menu li, -.account .dropdown-menu li:hover { - border: 0; - background: #111; -} - -#topbar-first .topbar-nav .nav-segment > a:hover { - background: #333; -} - -.account .dropdown-menu li:hover { - background: #333 !important; -} - -.account .dropdown-menu li.divider { - background: #111; -} diff --git a/view/theme/frio/scheme/koyu-dark.php b/view/theme/frio/scheme/koyu-dark.php deleted file mode 100644 index a924cff9cb..0000000000 --- a/view/theme/frio/scheme/koyu-dark.php +++ /dev/null @@ -1,10 +0,0 @@ - li > a:hover, -nav.navbar .nav > li > a:hover { - background-color: #000; - color: #15e3ff; -} -#topbar-first .nav > li > a.selected { - background: #e355e0; - color: #000; - padding: 9px; - border-radius: 8px; -} -#topbar-first #nav-notifications-menu li.notif-entry:hover, -#topbar-second .nav > li > ul > li > a:hover, -#topbar-second .nav > li > ul > li > a.active, -#topbar-second .nav > li > a:hover, -#topbar-second .nav .open > a, -#topbar-second .nav > li.active, -.nav-pills .dropdown-menu li:hover, -.nav-tabs .dropdown-menu li:hover, -.account .dropdown-menu li:hover, -.contact-photo-wrapper .dropdown-menu li:hover, -.nav-pills .dropdown-menu li.selected, -.nav-tabs .dropdown-menu li.selected, -.account .dropdown-menu li.selected, -.contact-photo-wrapper .dropdown-menu li.selected, -aside .widget li:hover, -aside .widget li.selected, -.nav-container .widget li:hover { - border-left: 3px solid #15e3ff !important; -} - -.panel, -aside .widget, -.nav-container .widget, -#profile-page, -.photos-content-wrapper, -.settings-content-wrapper { - border-style: solid solid solid solid; - border-width: 1px; - border-color: #dddddd; - box-shadow: none; - border-radius: 15px; - color: #000; -} - -aside .widget li a, -aside .widget li a:hover, -.panel .panel-body .wall-item-content, -.toplevel_item .wall-item-container .btn-link { - color: #000; -} - -.wall-item-content a:hover, -nav.navbar .navbar-brand { - color: #15e3ff !important; -} diff --git a/view/theme/frio/scheme/love-music.php b/view/theme/frio/scheme/love-music.php deleted file mode 100644 index 19228240d7..0000000000 --- a/view/theme/frio/scheme/love-music.php +++ /dev/null @@ -1,15 +0,0 @@ -Ox@Ylbe@BjCn{NhumXI*!D0nqlVRbIVcmZK zFkzk(h~fJm>;HqWuyJsK5Ag5_K!lhEZKMEfEF2tcTpS<}7sEPM80L2XE*X%VMM&uZ zg@G*|t1qQ+L~02>n{x9YmEr6OyNI11oB%}q=rIi~2PYRdm`7AhTtZSx`l*Vln))*h zO(SE7iK!XX+}^>_$=Su#%|9S8=tc0$kjSX$H!-ns@oDK9h|H|)oZQl~@`}o;YGh3d zs3P`kg;q3n#WAOi9oc&M6{uf_s03sYLjPP*C01AK;TClH1{C*QW zUPzS}U>DC_VM88o4mQIr%}hhUxJ%X_A4zetnivR2K$&hN8Qx0iXo9bCUtf|TgHhaM~%%Rbq?x_>wn_(1N zxm8iJ4hFlF&wRkJRyjavfZ^BBaMs8+PL-b$tKIIh@(-lqTd3hqg-=k!Knm9Z7Mk^Lu_e8B6|N%-!lQ<~D)26dp>%Gt?xrZ--3Q?+ZItE{7vL)KNz zrK^IeF6YRMC`E_bh^cePC=o1_b6~UD#L_HE1V1Haeh}gqLGYOUoA!r_;#G6mp2-yf z4<@b+!=0NC1bI=}J5uu=dTyCA67>_9uWTfd2Y>snAD- z1j??IBebV0={n$#p4V1QUoW>ZBGB=0t~I-Rmxi;ZyLn3SrusXfh}_oO^ybI6x^7&F zdT8UXA+-IFjBh?+HLMK;%(<5Dn>A7u2lPg2C8hSwN$TA2-sb8gvL@gdAZin-RA%S+ zT})VWRdo%sP0GtZ`aVxaZZ@xaU>JsvrFyIv+zmPp@^ybZFLdbQ@ik?nuS7Ue^3{Kepn_+|RA$=r%Z3 zx6cptc8fT^t$qEBx@HVCe;Hv<_Vu!wmUcCbs%H9eS^ld^EmZ?iNabmK#Eij|ypdE{ zH5#&PU?3eY1s_&!9pZV9Wgu9(-AqO~uO~XMxx>i|~<}Mr@APDaP-hZ0> zU!DE~?^wdvFdQrlvi&!_Gh%$uKODrI{!e(vJOv&GCgn*17;wj+I}r26#drctdknnb zvH;12lnf|reIp*Q3a6G(D&tYHHH#Py&TdjawL9@+ho_aE4q@)6`w#2?PXFEgKNNj{ z3;fqPJK6sj`M;4E<2}f*F@6JwLdn3E)fZPd;{N|Yv|F4;#qXS$X~=Zp0fhnOfDQw3 z2dLmRHg6B`vOI2KKHtxNd|z3#IV-znHj5G)R|cu^yOOGL?O0CO9(iCXC&bN@TxDW3;_2itHpkt-Tb0A0Ya93^es0V8H`A^e?+ zCzgF+h zD5WHfolVFLUvv#t!M^M^XE^J&QyHykx2b`}bBCWmaEIrxjMyy5T7wLSNo2rBr28!L zv2a~ud?kEx7_7KWjW&>wUL_LGJ%Y)nzA(NnRHZq&`cyYhD}S5VgI4Tbc&gonIjj3Jr%NS>rF#>_{b%P zr4>3ntKIB4t8Ktn83!xo#D+5SedW!dL;+wgp(q=;P;@@(YiugJqw~*FW<)-|9JUR0 zW+9|y;BW{omqP7_(KjqhAm4vjqHNJO0}4_B`DUP~f8wSyE_3=s3)%nt$TUnnzEzeL zC=T0b*pOn+vJ-0cmwb{vtTWsMVOBvpHQEXbl(`(`V9kgSirW>ZSRepz{xZj?tB}GX zX0a5tVW{9ezA+oH(~QX^P#XRb!^r=ngHJe!0~C`KiqXxH6!)=kG4%k@LhzaQOCz8@ zsqXx$pt8+>+VZU|v_f5;ssIH^sl)ExuuaMi=u;jR{crt5lM)*o^U}5NcNde}hvZAQ(mTz$lyci0CCI}?(@WQH!VHL274C*Iz*g~MdPBxcVUa7C}3Gh;c>xdDc!xbR{ zRL0CE#&iuaFMW*i|FZ))EE}Vj&^v5LjF~31YQLE^rmO|(NSZYx19269loq$Y41$o+ zz>7WPAZX@oj6xT}^$jOs*&x3Y%Hn1x?Eis3Fj!=BDBcv`*d9OjWFh<+2&0Mk_++xh zi6z?jWCRhdLE3P7k-1i8}NAbsQ3q!u`H6b65=F#2i-hgD*?*nn;L;Qz4@lH1~Q z>uJt@oe~=(WE+XcNoGh(Uhpp?Vzv2?hNrdFMwEI**dPs9@(0q zEE^?;^em4%gC+{iR)cx0LU@i6H~T*h&6>!ylrTJLf^5JUlmkYz zUw}|*|D|_P{0=&$_#(p1uRAVCVl%L3RB-lkzSjH`LoqlQKAC|*+>eBSf1e}gh{q7e zb+0UlQ!fIwMfv_@j1xfoL$ulJHDN;vejR*b9A)picQY0q47J#LMOQkI7`GgtJs1#& zLgKZp=qZy{e&MXdd7Y}3932>WPDN)ly8-5jFsef}=(%vi-~VX3`^DIHD|g{RId&ya zML|Zdil#n7ouTIn_(1umrf5tl<9ikSr&cMu5v!OJl%mGrbj6|wJv2W8J0=Lk^PlL&3B;CSW4uJBqGcm3=%R^5 zx0Tv2iiAa*)Etxv;)^&_G{O=YFcKu6KA}W|uyZh>&g4Ibl7nSK*2qrAF{tfkML87j z+)uY#&PjeiXlzXV+Yg_Z<3Da4hRTo7hqmm29dY}yCovI$(otqobm-`=W~^Ll5SQz> zs1GaA!eH_o0B)}h7~b;~h4J9I?5&LP8iGnTT&0~o5KqZeUYgofI>y-#zkg})S!M9C z6S!r)MOMd6@TLav|GhLEBQ|dJ2U$yr)mO#LyNx_`BMe7VD7=TPDW+A1n=kBA6tSxs zyF{*P!&(UTI70}OFm^*Zt>Q7w6NtTzw5bb%rmU$$_@F-8Ctp-EcV@A$w9l!43SYtL zSWc4|c`KBFpnHjBEjhTXItq{>SL^JPP6A;@Fc}SbDHZMbiPpQT@PDsw&IRJDUULGu9US?)wrwt$9Z$lZ3(qrujGST<7B-Ma zB^?~Qz)=w(GhFa&`+$5L zXB%>bjnl*rG$P!n)eKo9v8mWhXyrG14>=r4g%$PALwO(5PVmrMM%I8XGCe3DU0>^uhX1j^ML?$4K z8I(C{GI#NpNc<2&#~J2X_VC|2tw^cuE^?>6$>An)#Euf zo@ahlp^b1ab2wAXb~^5DF@D*5I)_I7b>*AGf)K>|JFNG$x)s zX3&*e{Fu3Vnu?nr9sebQA#D&#dyz5)V{VxEQc+KF7X-?5dbKdEG!YT~go(fxlAq9O zIBjC!EaW&#Oop+`Yml`td^h+rb5+MobSgmII7PD*pA5I|Yw1T!EL;K0!T26_ARnw^ z3lxa48AJGceeKHFWjOY9T!7((F`4A#_9@ z1&S785gLlXRh)}BO55wQE9Qzx-zYbAE^?^ZvSz{`)5XC z2JMpCI!Ycy+}+hKB5%vgXd|_fl)pQ;AZVN#c`W_iz);IMs@M< zRc%r;R%(yz9)0MyN)It$`Y%a7M=Rr|bJJrhAQxFGW38lzlI>#_p+GDcJk(Ke{ynGt zhSsB&en$JF0@Ehf6n4HZow^2w%tNBgd^^B=TwE%DjgQbKwPocTMYuHBku)1ud2(x^ zbV^{*X{}UOVMecG2HNWd|Bi9#Z28=DO6Y8!O`K@HK~g(oT%a&^5i>UkJ2Ut{UZ+yg z?45ar5v8^)b$AU&HVAY)rN_-O^pKlQPldDs7pR1{6zuR7_)~;2T$v4&n^@u`P~843 zIRI*8o=#)1u-_?HGV1=`-seZ*{*!pA0?0^(+Mq1h;ksw*m3UzSc&)gJjJy%DsD($$ zA~Kw{NGw4#T3R@~0$UE6cBJHIOUV?tf=dr&yFTC$!p0iZwlei@$rQU0SBf>9(7{oH z1c-im45CP@EHX0)<@ufzyHFkZfz$0s$;*#&cus`Jnz>3p&hYd^Tq9~SuEZsY^02l) zPr`<8vlBMbQEJ;wjV+#uOvzegQcYzkW1tRcld^Jhjr^7=AqBD07}OF9RiWS3rjqLWY-$rWL@qXnJP9 zB31230ACc=nEul)!&p5f?Q`-yKKLkj54^|BjZY{_Z4MV0q%_*YL@p7VKy%x7t6Zf7 zzmzaSk)L-UdDP!y?G6cJ4&E!eb%R)`oRHUj3sx;FYDp)CEUbUd{?VYiXseA-mQFsZ z*e+pU(MG!wswj8%C{LkZi2-9uRgV%Q)6%yNO0(&KPpEqsDYOwqajQ?YVSv2`lS`I` zxR3fP!2n5v9sNfFv?y>QZV+zw8>T9hJ}+~QT zm&6b>G!jl1f9x%o-??p}jK|FP1uiZw2|XlB)YM(qoD9sb1mm@cHS@0tYfdio=x<@n zf@jQNFVn%0K%f30@L|mx#tJ7*U>_WM2dcB-R9)ly%*)-3@zZ-bQhdiQ=U-!V{v23-PqF{@Nqk?K}zTVtMMdRM@tU8 zTuBjISD)zgqY|!C6jOlfHsLi6`jVJ}oN}b?Ibk^`L&`x|6er&|_#i!J_?xo#Nt73% zEDPqkv{@#8kOeGB)%=tLxp!cZ>y~QQ9zp5a9V>BZ3FRq)GW*yR!2;K2I(7XVQv*`w z7f{r#)xrS%!$N?m!71``1isjt_G~YEIv|*jQ&9`NHsV$Oy{H!SJaL>y zXh8#!H%bK%CrCz5ZvVhvBebKgLw6?@`$<>3DFI0FR<*+4Ur&Ce$2zEVe`UO4;!*Ei zYtq))?&CQ8$cUrf=OJlOD)Tj|(r=9sGgQXTso}a`v*Wssaa6BYYi)IF!TW4zulcb* zO?SjK%t#11`5ZX8Q!5TRt`61mC*$F3a><{*seVqXrdMNE3@0MZE^)|5PleimE z^Y8%jLB~u*B(%U*tMxBBLv5L7oh{WqOXb_p+teU4H6AhRx-aAJXj@ic-*^j! zUd}Gn?@^AOa!HRZ&1Y+$&iOkUM&;L;?MpQwl^>F3njK2HOSIxCG6m+Hmb6IG*O`&H zNXf52zu;owMSB-tCMm;v>>T^!?*XRjDcXUiSE|(BkJrSbo$0T8bV^28oU@pSKU~>t zyM6P7ENns$d3jPvk7OjaHKnsi;EKCPk?N8id3`p(I%H8};?O`zz1i!bA z-cb-Ud7&NUR8WFB+9h;(qdaEe(C*AxUYbO=auOv2eT>{3mnx_|+5!x@o5zzv2=bM* zj%Wq6>o(gi85+t^_l=w*lYjM%q-I2on^BgTii2htH- zZ)+2Eeff*AeuCp(UcG}=Y#Vhqw)=eLb%ahbRR!2q9W^gC2KUJc)IXzphM2!Fd9u6B zz;_k&b&PW21@H69uIHFpPNXY-mrNovMP0Rdk#`R`XcOZ@&i=9S$?w$V(;FK{_{&Fz zNI#Mpwc3@Qm|bxwQhh@2-k%2(qQKPt?g7TDov-RZV@=0N=0`-Y$QJ!~guW!MjFg$H zfu>KF+zZZgdXfW0Mxp4IKuok!P(S_^yukYMx6wU7VY8Xe&8O%OBv0pq?|kVr_*To| zX=JwlP+(@TR^7*=OtCHTWRAR_i)-*D7=eOAZp#AAWAo=oS0OCFn{+wS?ZUen-|f3M ztCI9p0+MdBk`sJe2gFjslF(@rh}J8_Fv3(^xa(}I=ED}XiU&?2kW@=Q@FbNXEupVWpz-4 z3qm+YW!49k8z@)|MvE~ElZPS*SlJAL>3sLXvGbe1oaRBb?F-Z7ZIT=I-S>bBS5lw) zn?SB7#$m;Wvreb=LCpr9cea-V!7Gb9b`#A=(;a&*$)SbKy1Owt{TXk@69yGPXvX%{ zaeu{4fAEnsxOgnMs#9S8Z4v#G?|B!Rx+g_vv2s4G=8Mar79@V|Qr@Hd!>4%HPZ=ET zv*a7{!-e9z9_uG82?)z*R(6+h~i zW4xA9*4m7}W3<#){l1*8X(WX-_-~|C1a1q9u;CF>Aur;_GEfW4B)b%6T7{``OcIDJzTPzqXBEh~0WO9S-)7K~K$|CVvH^|GY_ZWs9DsHgQlEjqy$0OOUVmJ}!cu zylS~FahgFTx>abw={LrOcib#hbQPoCnT8p|h{!8>2x--na~`=B(&K{*#ky-@->Kbd zior_G2jgEWwptQoQMBaG1*wJ6gyMVL_&leGgmV-8Ztu$_6Tn+E&~#Gz=RW8p5ZVb$UnA=+M3Jg<4w z5xGrY#l5%|rX~^!mD>!+DU|wTOdUv1K)k8<+HO2yey&!QqUkShT0yVgSwa_?#}>gi zBF?96firUg)p1_42f>i()_3ytVy-goZ&RYPGSFEPuPvp_3p@R{m%4s<@W|>&JN!Wi zk6P33KA{gp(%QSDlTh}VwfF%^kK|u@NuT!fa8nH2@ac_)*RIy{8gBkFx)Df^dTVWT zmDyzUDy?oCAz?4`X0GPX%A+S^OB>#aJM@9o03Q~=9gZ-1silX-%bSxI(dbdvY09wv zrR*K&#`-Dq?_qfK4^FZVrE0htSxp>jSACVGi&SZT)_r;QBjOfuCm}^#x}Df(Q#V$z zLvih_UHT#sNNUlV+%gq1>d_tP#&j0(gKAR2G2u1htp_Ow$>kE&W2dJ+mFgM}PUg%5 zX3c#L-<{|%g;6VxQ>>(~6{(@T22Cp*P!@jYjuOjz0DC|t&m|UN(FkH%RYg+EP96=d z*Q*-`jhG}x3qH;3sDU@&r36C}NW19UyMqfa728Rp&9jPK5)}Vq zkSBCxn88g=D~xJEsqMpu%0YE~k<2>^^kj#=XZWceP1Sxb9_UYP+Y{&WXwFZqq#B<& zwMR(oggznl9&UlxI%C&5&Loz(l5(X3pI%7JgT~qvxbm$lqT@QMx+XW+kXE}4$(g^# zQ^j13T-gm=if)uMZAY`5WNv8FK6hzsD`fdrcZ$(meC4gvmF*IEZfEh!IFbR;ZeK;h zV2P++otUeBSZ!u)RcX(5&BG+;_7}D{Q`b3sWAep4vi?OyH_er(= z-yO?hye2iri#$ud{`sM4FHIY`T-osE3{TJVb486r$BMGaV)xQCV}Z>SdubXE&6a@W z$BYR@{B85e@67rd{C!pmjmIo9HPK}_zQQP{ZmpVl3sgsR&giZ6N=%cel3P~d9bb=G zilvj3!IFdQBd<+wafV9n?~+a?-uUY^Qtz&YcEcH8xj|lud{7?R1B2hxxDI|Cab*D9G9cYU><+~+{Awt1T8KvZi97w!PGlN zDZcXkfaesW7ARAw4qm-hl1}L4$K$=mLu@;<%g>B#;RZ!zXC4rj+k4-zZ@W!8UMr=k zZ(5#o#Rir|*E^A>ZG`;8eO_9sdx>)w3MW-^G$^xngs8al_%tKwzaRp{WwAEBZ2Q< zsu%`PpKkc?hCRQNiu=4L*mdN-)y6GV7OH}@w|wbV+^&GsH40DoaaGnUGOM|;BnEC? zC!x0DXjamh#MH`!`sd&d_c+ncysVlf1V2OXcBGh_J)7yn|wwJ zoyH)?VH)j%`Ygq-FU)$aLRDW$ z1R46CuXOAkUrw5irkgY?c*}jH_(%~Z_E;?HNVIAY@;L~y*JhKSu!GYz7yj{{jf`*w&BLbL5QfR_+&G8$Srx4 z6541ZU%{zGX3T+k0aSmn9H?E`)3IDgsh`Z~zt+6VAWJPg{JcHl2yLHu8)sg~cXlm3 znH2CQLq6O%?5$5Y$exZeEG}+MFvsp5K$D;rDWgCjCi845I`(Dcl@-U*)!CO?(-u!Y zG4xJz;WFam;NY*!zkFWopJg-n@xHGjYSB+*oB7>evYk{h8cMD5dGQasImEz116iZWIr|1MWaqe9{+%R9Ns~PUpTKGrnJ4_;;!e9PJ6<;wJhy);N?l^O?nU5;@}(d zd$%Nh&2M4ffA+aTik|vI6uKkhZKFJGE%Y-7?DPDb-y?ZT{@T$q-#e-B{d)jD)1s08 zt3gAb&i2DMhuSA^TgsCKyUtd_++O(=aMn)YGak705pyo}7kEAJq;BaVebBvqOdh$C{wg+R5a9o<$ZiLbSDmw|)jrHNiUktF>ej_mcD%;MR~mmslrA*9C;$tVr>H}AI4(>D)fEEj zz3Uif7+7X!hIZ`z)^T3MB~cI$TWM3I$*?1k9&gH*aJL=_@_v zdB$^KJ4E$~HoqmhQrNg%0FCrkMBmmZ?%eLzztU3yfvgxxfz+Z4|Ao*uQ2Vwv*! zHMN(+2p@HPvrl>%Idm-0wH(MG@xkM&#~JqnCam#m*Lm9d*Ie&Y*H53HSOJIf!gB=) zNe2k`;DBv*gv_(R+3N&;7h3731?H%jMZ;|75PU84qsXZfvD$=WItaj7CiZU7-n2p8 zJ+McPzt~{58fU2%Z~7>NU)N9Svuu|sC$i=qAm%Y+6ZG?!Al^em^0TGRlU{4BJ*zdy zhG8D;4ElxkkbyX?;Oj{PZ|fr>sX2Td>D62RaPAhW0?m32y!}w3Iw=3BPTj!`>t7_& z9U5J~|4tq`pG3RcdF9oX_q51bU9fyR?&5uzyHZB8nV#cxMp_%^XpVVG5Y7Wrg?et$ zrr+K#aUL5uv|puG377oAECeo!*KKg-*-qEZ<3&3-E#z^wdX;IpoH0P0!#~goA1!do zM17&2WYT*kdLuXeP`1-ihl?gjYdqA6xc$?5Xs5Da@OMh0n=NW{-udzY=F;)NaRb;% zQp+bZYN_diXO@SpEh?TqA9#r~!XzT(C^CvP&?40LYxdt8t`sgI$c3;9qc4AqROB%<()g~%4;}gCe@hDD|>c&x?~pNV(B1yy9^#_ zJW2^8j&ybFNZi(#hMeThgw%jYPzE<%8I3SG$J^ebC8PCQCm9FY6+yc^v0=fA%{w;y-@wUFU%j2Tphywl$ z+8#NLy=5+xRGHTIc>fmgOfN3Je~KYRxn*5MA1uKH)@fpJpr5-f{xjsd&1KQnJAcD_ z7E!*@1dR?dyhhh2@O;BJ^5xB0GYFj!ozCrQ8aJ&f>m*5EeU9w)4G9T!>Lf0*soVBG zEu7sq-^&Wzk1=wPs6(u2Ck4=Y?>j8kGShc;VG)YU+yjbM=pN3@&wFa+B{NLKAdpix z_Vq~?RycpQ?*TPdMksDL{yjitTeP=%_C?w3oa>bd)~B-X6d5~01;=8)t_xoD<~oq8 zzc!Jwyjap>)Olg@MCQ|I?oNAf!|_9d_Ex%}#BVpBvhkS$`(^I|3(b2b)YrA)TDtY( zUF%x5-hu4RTW-1h?x0GQb0zDry@%eW0lYVQ9cAvcKtRX)*7+rwZ`!o;n2vcBtK{B<%uo1zvX$-hImrpuIdXtqG1AR3!R7MKCw}GTey=-?t`3| z*b5Ezs@D?-^Pl}fs$@Le6GvrM=)QG@Gwjp|cyeEMq$Q5mjWMSv7j_`hyA0Rn8c4n& zlAwvflcP1`hCC{pimHnYqw|0C=+sLm3uBoj!KaQR-Yy%YVHs|(jGN!Hb5|Qvw$SpO zO^j5{`ng~#xNv-+^PVVxg=^3hCTX_A94&|0e1ln+%f!yv;|4vP{JsAzaxru{@wf5q zgITP1Q37AwipEF(D5^k~?0?5yJl%RTn4-I)BVT*dhdMjSOIWHt#CHA;I?{9JGLyA| zDL)b=^nn(D}^7Qj0z5Rz$rv%uGDr87bJ~yVJRC|5<#^I?u&* zp<#Y@X3LV`%*q)|f7IR?p3;9%#yyL?l^y}Ai{Qy+xPJ@dNIrQpgih&O%HC~lH#>B> ziHx4}O~TYB`M)p*m8s^+6g*Wg|4DRCJiRIKapbce$yQ<63;jjUN0RAj>V$Oed)tzy zg`!^Rm6n1G(DN4&=VK&)qe(35uD1GS}74@uF=5&p5xXBIz(M&&q2yxnT}nPiHBGH|gbbc&`OPHOqY_kTJW|C=FJZ1~YJ6h;GuNi+ZKX*Sm}>qGwA5x1 z>0RZz$kR*U<8rN@i%P6|Ewu6_;)$o*@q+m5hm@1eyM*Tr&Ef0~w`@xDHKw<`F70K> z@+@S@j{UNZ_Lgg3-b*a%nCQ=c26F!JvHeUdvt3n0SR^m!Zt2~aDK55ZIma(dr2M|U zTVWsLlyEE!Sb7}19)P->k)IMWlkz3fwsHNVX;4f`8i;})jhE@+N=>h=-9ZUWq7GViNHCk zKSA8V1qxJ%Abd<(TsyeqoEcwDh*>IyW5bFu+YF(RzxFTLZHVpxjz8pH62^z~lcj>& zoJ4~1^;DhNd+oVaUcRPio=rc(7a}isi>__`^)@Wsblu@EIRmb9>GIo9Dsh!;pQl1k zZT2#wiw<8EOEwtsOFE_fLRNPj3`aX*#xBV1#d(v~delfLu)K760f0x*CwqY0jVouW2vnSHI zgs|@0pLbj&9iuhV(dYG=NXJP|S;@_Fl4Q#yqJvmFNO+D zdd&XR8(q;L4<2$x%czHM9h8$+YNF1bH{xJc9&fa&V6HRkbW_V;L$jfWMGT#H*5V;& zZZ}M!DxUov%pI3)lkB60@JYP!pCD3jp&AJOp{O(S5{Tn@grgn9fEY%(MsIxi7 z3*$rmt5yWO@eJ7vvs4!%^YJ7;vCqs-va`J7*Up|O?VcwcP@4ob2x&hm`mEr+8Q|Z%=vlGSwH3|dmB#T+ zGQ)4>sH%9?ylLUj*q*gX)!XNm7e9XR*XWc@Ny<1{Or>cViXFQoCUp)fd?OewSlD@= zm>j-YlxSrSsaxRNr*7RGQu-Y|f9alh6Zm^UA@<$-Q#+<`>$A0LCcTKRs+n)EjekOm z;=eRfm|cDP>YkbP>42ZyA^6fk_Ag9*$L;mAqMBZwwT1}D6jBS)?F}s*!rQzD>~(y$ z^SuciG%}tg_E9*H{_*&IeFqbIVwbM>rFh`<(D&2=L2Er3BsIk!^Hq&ciNWT13NgzM zS*wN=sshg3yQ+?!W-6TR%WTtzJUrRj{U&xW#}%ntYZFQ>X0?4PrCgk-@|L7dW_ z@(kVn1Jzp4&s4fECf;7SYnn`)JYIhE@N;-eX1=67TGY}irTL|m+u;j^fr{3C8InW4 zBa=YF4Q&~pU!Y1Uo~FeB(XlgV`*WiB4y`W!C!sb0X^p4WK_%{{L7(6AW4!LyPJF|oym2Lxw?k_$al zfx<5tJ5Ab}mEQ{ya@Ks$9-6W^t=AW1RPSyHOmtCP0SHAysUzo0OUEuZU%~r*)5%` z;Jm99>^%dzl)DEkCpjJSe_%rBqRU$QE6QW{$~(0Yk*$O2o9AEatpqo0>KNixqf{YlYen(~@ia zNmyJ6p!K77@s#P{n_+gK?m}V`xAq*8_&kKdDL1%piaNg3`0z#vX`rIe`OVkRU8V-Jn*#5qwJ3gAU zj8kK&Yr*gV{L)nGYEJBMoSYb^`(Y`nKBoAE;V=^v@v+xWfXYr;)NzrcP#l**6|qmG%6kOyO*mfKf?q` z&U{X%h`z`8jv+un_(7P9{9uOzBlr55w} zl5SqI{?0i>*Osiyoq%bMd~#@W439zepwQ1Vvui5l(~(vbdMy=Z(pzO}{#^q=j%``z ztn|^I1{YeY+v4t~C7qu4ej|wkx0yemH~4*?PVJp5(iw^Tsj5gqkH?$XFt_@OKR`xW zK&;{ObDW5%?Yx5@w}CTP;hTq;y%SPjW%GlRm=*WBuXfRAU+AT$a!O`HtMw~sEt2>1 zL;3tswA)^?PHW8w!U!34+_NqTF|Co9{>Q&Pzq44cWm@@~mVRXOpvrsYoqX$SX`%1S z-mYy2n(o|B9X8M2lfE!zb@X4TkWB8LPIL+xK7VmWg_2Vf;}3Fn{cYC1tV<5XY{(G5 z4F?79zO=G8jJT~**pRpl+(xAD%la8{c&RyM3Wq5>LOtp>RHM{ZlE(R`UO>AOVrY!$ z@+Aus%hFe2jx3C~sm&8s4s)|Kj*udx4w(~A(#&B!XaI!N ztt_Yrgh6m|(381r`$N;yK+Q=Q3iH1X@vqFxw=D|K*syY}8?Dtm9d5bUJ=hjF8~hw@ zIk~XJFh>1&ac&xj+RL4c59d+%mcG}pnB91mE>$U~s3SZ7hwe~!4euV%%9+K3kY{Yv zdt%Z)Bl(o;>!PX4&Ae{cQ6yN1d-tX{Kh%?f52Ek8fk7^ms=w2lT9 zGM|F6rDK2%7lmzm2FRvi>9?f{6SNA8Tr$XD(>CR`zC}UaFNW0whtG(@=I%77&33y= z4A+pQhvvH82Af}#PTHhC92&U0p1iNUE7PByXxBX;#{HXAWBroorTIPJ{X4t^oxt0~ z!|c-{;4xnjx3K)!U)l4C#pwhU`-tP8tnXIuQ58kzvzF(s`VP$6K z#-i1hv^is|G`fqS7L1<9iSEuZ23%-RP^Bq@(d$*#X73X8bV%RhmcCJS9Q3)D3OOkpX1;aSX3$p2{*8qE*FuXOX7#*q(`uJM3Kcy3 zqs=Wy=Tk2kJr;WT$hoqYSkJuPy7EAKO}5EY2ED8+EA(;0WHTn<;|2JOY*K+cVV~ha zt$0kz!`y;e#v9+f_~Snx(!ZnD4*g@Uht4)HM%EGme>m5cHR$V0+LeMH=1wgfQU&rP z+ImXoDSZPvvz{ht)p&ng*EmGH7}=$PVp&ao+R8rW3DR30j>BcD{!8`Z!#)}Dw~1+p z=ph@=P%=FwqKp28fT!Ry24Ap171TYcwR3dCX=(S7oVmb83UhS9>D-+R{i0`Nlj1Z` zhCfGy{(^5@C9?<;)c9N|+QN|N%^$S8NX+%*LP?I%->n~hV~_ijB#kJFNG6I@KWx^} zd-IReKuT?5hft$xBpnA?nOq~@rJEl$Lc^l;n{<`^ineZ?4HKTdw_o-9Y=A@$%TizN z|2F)EXgHvC2pB5J%`cM>7Q#amu7Ao;6{GoO#7-6mbh=t-LHR3r1NCZ3YzvhW-3ak{ zLV76uMMhf?NQl2Z*N>Kk?y^!J)GCA@XceIL@u1=o)Rlw>)M$qA3s=;;RgF2fVD@5* zLlAT}d;&G!yQO}c4X@UXAtsHoV=@0NQB{Cd029IopzoBlnL0=J4bCw82n?h=Uh3V7 zNE_h{BDFKMJ0)XnTrJ-B(8F~ zpuQ4BTgO0gYsa5R=gCyIY4B>^_-(+$&7OmY`-|@PfGg4TE2Ea9J1O@YVqcGNq}S;h zt)rVi;)xTNYQ5q>8e2>&ykW$d$~utOpgVEieC675H{3--WAxSsvUm_YlKyy&tM>QA z9o1TTa-EmkV$FR2abZ$9J>}B3)SZpj(F@^qYmT?(XbX$m#Z~hnMvk5SwdjdTfE+y6 z!Eb>I-0s@$8)q8m&z5#pe-U)$<@;%cO3azzV&E@Vnx*+`^rf4x-CwRwUvPKVTZYo5 z1|I<6!stV9Gt*d}t{He2X*#MbkO_H>xyV>w%Qb9vy5d~YpWfd!h_FG=)BO*BE z;?>}#9%eV$YhIoV9?@5mLK|9`^7O~=NH3K z72owQ8yLRX;207Xev(d1on}bL=eoYPIC#RopSUZf;T*59i7v{Oxh#w-*^>r3sh+N} zeVLC=;a{US+Yy*k!G(KcQ#eoJUtHB~Ncx2ODQWSAYi_ZHFDt~XA4)jkW54>7k|@|# zyspb@dL{KLIvB=@B=%Rl#g|<77H^|j^lCO7#}MH?K~B)t51=M{DS1ocY-3h{1en6T zth!c4j2|UAbJ}Y%!4cQVVy?wqPstUVnFE5OQu@u*+&KKK<#e2)j$tPyPmM~Wspo|o zl}9jyRb0?kb*QOf8Chvk#*q-1x}lYqF4Mgx2(oO3mbURn49jZ@#R$p>IOf zoK;IRgln>-bXc{eUL-_Hm(`v!3?*YLX=_a9rwUOIiCLl)pr9;S=qYIZ-cG}=44;~$l0xEN8<}Wv%>M_;;rz@>A1^gJeIqr)(+6l=oG*m;a}NV^)&t& ztml|+JIG7kHM zU3wX480^?qQt_Y0f6i_gNDL$%a;D8^_0|^}!LDKLfVDYti#R#zKTW75;m5d??@7bg z4c3vS+sK3AA(8)5j&M4r;o5WH3*V zPS&n?!li*Aou6Qdm4oaykDwz{jbQs0k%0-aeQU4su&HN=BPw1=XYtQc%r;;I?Go|E zFSo?PUQ_*ampra|wxFKSq~(95p6zqiwuucB>X)50g-dqC7JA`7Wd8sc_~xxcXoj&b zL*{Ln|)OLBU% z->jx@C;tL{37M#;0a)rMLYQ^0zfdH;_Wj#jR=dN11W63*u z6zra}tz!6%lB}rYt)%WUY4WdXyIk(ki{@GQSG6{>siIQl%KplZYWiI;A&lwOU)jla zIO}OHI00YSc;%_2Oos%&ll(_DT_BK7&vftq09x_QS4qTePT%zL%~MCHCm2?9)t>xe zQ%P{f+3ua{Tys>?zGy5VHl8_a=>@qBR&vFcT+Y&-0g;bId)-^V*EL-!z>n$Yv?p?M zljEAMlTu(dRPS{+T-9{P40vhX(~e`Fu9@;}@bla(_x}K?W!E)bD3KzVf~RKkxh^!) z)BYc#vcb<=P24iVr(w@qOqRyjQ@5-9a@Esb56s+o6uh-O{<+_$mY=2!soJIEE1I^N z;^^6rAg^V{57Rcuc6^h)UzN{Vz)Wo_cBRVatzj%bDVW45-`2e9=5>ezBia?W)RBwr z36bIc7HzHdtSVW7Ac8w4nK6Z1DZy{yHJLW}=c#7UOgHeZ)tqYw+Xz1|x|?eCyl%PQ zZg@tnRy8eJ=_Q`HLy!Jr7ugs)OqA`5a=Gf;xP46ZR#t3bQrMG-@=fr{!SozSmT`zt zbCqQKPN2Y3vdOHSZb12z*0Gc5c}i_EGw=xgsccqnqMy$a&1F)6A21&4Hmfs9pi0f< z;GD5|FW zhiNvEfay;3>cDBmj-L-6t6kX6OMacZVeN3nB~JAjn>LvaZt>WXuX8Jc_er;WmebmM z1!v^2vF6v(Dhc^P9Tw;1sgcV46`)9@Jk|ZS9Vht7+B;9xO<&pmvv^GQFsq|756Smh z{k&P}Bbv6A11#gZPst9GT(z`zWcX_S$d`{7C0!Aum&_~Wgkyt+UJ7P~R}>z(>5!ID1;cevLc7FRWW9q#Eq$vMyCT)5lgmad5ds&}mZ zw>51Yp}1~Bz3N}bm2p0u`X;W+C`jy*DYN#iPl#wYh3ItNy~qu3YMZHs(1eYtz~o9vWDTf2{~$G zo%W7z9hJ3b{b5quJS^T=+ZWqMASv0L))g&5GYQ$JHEUzf;X4??^b1J<4`7#_89Lr( z8=p0q&2rXHwmiq8cQUYj0y+GrboGr|5^_D(yMKcx(%K~DX7ayQV>3$vPpiN6Zvoe~OVJLRiwL92K96tEO^trN74Fjte&`s;9aO zJ4f_h?KXG?aQ%6ZTccZqrQ0)cuKKudsVZ(fC)n)r<7m<+)GTWnld)KSX;g`x7fSX=jbFuk8N- zsn?hIqx7dn;=-@(GXDUIJ59z06ZV~d;|iKz%{x_}l(ZfdH3~|IO`xB=ZHEkY#R<}QOx%n8pGvk^1Gr{jZO8&^5Yo4x(Tx7Hv z@>jZLa@NtE!KQtJc1&ScMsYvk!q;`{f5$a#5}==wQ@*EK=dGeTa?+jY)y-Q+%n!=F z>PY0RqmlbM^hwU9M>Sm)*@2a3I|(MaYUsomJjZ2!XC-pg(duNzJrnkFG0R&?01<#v zb1&C5T`Lj+$8~>aBQeQeOd}g7$gBH#AJ-jiF#iCP@TL5kvmDj5vzTukllEA?S1o-l z#AUx_J3=_B=^{HT*?;ontEC9wdZ%>qc;v69473G%H8Ou(mGsfZ-*r0{$0c1ZFmeiZ zGC8X0C9w1Xp$B|9cfaz9RN86WVcW!!UA)5s(qJHox1 z*ELHJCK^B8I~yFg77U3k`zEBC?fOYxC=xt(1ZQ^a^ZEn&zu!LwJ}f>rQ%> zk|wz=zC7?8sriuYXQ^~+Mzpb07K3bs;YkGhtwRxhz8aHnRc8p5rt@+a9l9bDBd z3rU8n*z3uQ?VTA4Y-(&`>O>u-p7NU)efBY}Y~9jAc8k+}VOrWmr)1?d%~FBmYIcr& zd4G)ELBY8Ru9Jj>% zSv*1EPSvcoVuTI|Dr(~wHZlej?Hbf8s-;0Vk9C`7HN~5o3oR<KRLHOCDb`27;eJ1Q`MUoA#a&`gLH1YnCF4KE4xZ^GG%NcV z=@fRH0G)w9Vswf-Po5Y8e#)I}Wcv>#KV?hBN9p68s{Y!Y8C28EeJcLjPKtjmBPO5O zS@~*osyj^)mgPTj*0X+_0s~ThQ>A8f@fm8rwK~>M)3Jt_^je>lGP8D?4srHZ_L#=5 zoPWv__L%0Yrnf)SSN532`aGE;J(c~;bhqmYx;Z%73bXRYZwnmtbaRoi7N_MpIqK-& z_$&Ki(#B8G4E-nUto+dHYZ}@p=-l;J_Lqi7HGLij(0x_?sW>@m=)IUgR(@Dm=BuFx z88pT`m7kf8oBVTC(DVKf`z!lu^p1MEDCDy~iThdUE0(s298=|A+i^PGan{jVbFleI zSN2>^u3FkKIV=awKW;_IeXbjg4S@duhZ$CWRI$ZdLK~(Djsz?FQ!AFXioj#TD*nt~ zvB_IS+Sm>A!hYRqagsQy=|&8e#muk*3!($VDg1$Hm417*V90evm>g#;$A+vE;RY&nNIM$Tvc@8 z#@|T__F2N$CB=aP2#;i((($p!TE+%P*9+_={Py-Si#_b%6DpTk!^MtzgCtn`tETSpPVQgUnm0IqtrrK9G;c3k(zJzF;sfg9J!@Rxda1Rk7}d0R>B4ravCmT7(sF0AZ8k7{xj#@%rp7fW z4a7%8+Ix;S}} zWn}7RWRFxjv#7?549X;xi^LKR70(+~k2MxcRUq=3ZHhUd0%OrjWNk--$SXajti=x; z@Koi0#?)~W{;N9Fnx_0S(N!27R1-8031Ksto)PO3V?uIL~9RQ;AD z;}mt1reqQ5uk2o&RW<|(+!XH5MsKh@i2Emcbd2g)5IzqZPBiaNv*hNtbR`thIW zh~=Z~pR%uBJM2{0G;#vJvZdj{Q((tQBd28jsXreUPt(B3Vt(3_@qet}Wf_HkYG21# zKFCf7;a}R%PE4I(Gc5cm`%aaUtXeV~_*eF``q@6grxBkue`uD|{>Gn_Dm+{M7 zm9(MQ`C(c4+5K4NtE3kh+x80n>b*bLEo~bR7#02JNnDlmV-vF;VPD+O>Tz6X&FIYe z1!w2~015c-`s29Kw-fU8&KAFVU&mZE^kCj8%AdOG{=1Gk`Y<^Z{{RZl&Y!Q7ioT2_ z{HgnwrE*o#+Bl{@+$;OzeH=F$O*lW(D*o+ftly3+oh_nTDdAt-y(5C-Nd|sX3ct2$$l|Bm&wuAx;6ZTW9maUt} z%GVwnT<@}Y$j_R++x>OTUYmr73ioF4L*KZRX&tTiedKEjJ zD;KblI~4A{af_PFz=eAmSUswCS;Bv;DmA0_epb6x=~%tE<)@W97D~v-IZIC&yvgH^6qg%{5CoV@%Og|Y6eBAgt7^DG zg*#CRYUF=SuL5{pUu$UcO{O65rrKfv6USsCAQt3xO&Pon$@Ik>(YJtuHvv3!K}V03 z1t4}!v}Qn)gxj&7>odt$Ybw31iP}ENv~#=wFcWB_h7)SWWukZr?ZwHgD*@R#Tdd?_ z{{W>;tY4}*t=quiHlr7TJS#2Ax8s_q0$?rh_%L`IxLZ%G%UWhyKFG39SX2XV9a4Nh zu4;`Kz)GCI{#ZN+;Ysn%{b5s)=&eZ{)j%YII;8knHOp14>^M!V+3N~`XB|puWR6OW zZo`4XBZlRm7eEVg_|GqnN`P%R>aNp|$0cA4k`rojaa3z$;B`$|95(<-$L&{qWx;cY z}R(=ncaQTvzzuss{c#Ej5wLZ~$z8wYL){xT}G+#xsR4)RH+aS|VU_ zthZPA;JE|Cc0cx3na3SqB;)@8aE(bZ$5;tC=$myvu17QyWCP0SEynnI*A;L#3@a-fez`6h-O&U80A*{7rEymP0|8x6;hCa|mk0s=c@5(FG{O|029&08FKt;Tstj2*#G>!0z9 z`BY&35xMc5K#X6mdZ14TGIt+zzZU#e{{Tu)g!;;-MK8xm^_#{OV~^DvnV#s Date: Thu, 29 Feb 2024 10:06:09 -0500 Subject: [PATCH 3/3] Updated main translation file after changing some strings --- view/lang/C/messages.po | 150 +++++++++++++++++++--------------------- 1 file changed, 71 insertions(+), 79 deletions(-) diff --git a/view/lang/C/messages.po b/view/lang/C/messages.po index aeaa39fc86..2857c9cd44 100644 --- a/view/lang/C/messages.po +++ b/view/lang/C/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 2024.03-rc\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-24 15:29+0000\n" +"POT-Creation-Date: 2024-03-01 08:51-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -244,7 +244,7 @@ msgstr "" msgid "Discard" msgstr "" -#: mod/message.php:135 src/Content/Nav.php:318 view/theme/frio/theme.php:241 +#: mod/message.php:135 src/Content/Nav.php:318 view/theme/frio/theme.php:244 msgid "Messages" msgstr "" @@ -315,7 +315,7 @@ msgstr "" #: src/Module/Profile/Profile.php:274 src/Module/Settings/Profile/Index.php:257 #: src/Module/Settings/Server/Action.php:79 src/Module/User/Delegation.php:189 #: src/Object/Post.php:1154 view/theme/duepuntozero/config.php:85 -#: view/theme/frio/config.php:171 view/theme/quattro/config.php:87 +#: view/theme/frio/config.php:150 view/theme/quattro/config.php:87 #: view/theme/vier/config.php:135 msgid "Submit" msgstr "" @@ -1807,7 +1807,7 @@ msgstr "" msgid "%1$s tagged %2$s's %3$s with %4$s" msgstr "" -#: src/Content/Item.php:429 view/theme/frio/theme.php:262 +#: src/Content/Item.php:429 view/theme/frio/theme.php:265 msgid "Follow Thread" msgstr "" @@ -1925,42 +1925,42 @@ msgstr "" #: src/Content/Nav.php:230 src/Module/BaseProfile.php:49 #: src/Module/BaseSettings.php:98 src/Module/Contact.php:503 #: src/Module/Contact/Profile.php:419 src/Module/Profile/Profile.php:268 -#: src/Module/Welcome.php:57 view/theme/frio/theme.php:230 +#: src/Module/Welcome.php:57 view/theme/frio/theme.php:233 msgid "Profile" msgstr "" -#: src/Content/Nav.php:230 view/theme/frio/theme.php:230 +#: src/Content/Nav.php:230 view/theme/frio/theme.php:233 msgid "Your profile page" msgstr "" #: src/Content/Nav.php:231 src/Module/BaseProfile.php:65 -#: src/Module/Media/Photo/Browser.php:74 view/theme/frio/theme.php:234 +#: src/Module/Media/Photo/Browser.php:74 view/theme/frio/theme.php:237 msgid "Photos" msgstr "" -#: src/Content/Nav.php:231 view/theme/frio/theme.php:234 +#: src/Content/Nav.php:231 view/theme/frio/theme.php:237 msgid "Your photos" msgstr "" #: src/Content/Nav.php:232 src/Module/BaseProfile.php:73 #: src/Module/BaseProfile.php:76 src/Module/Contact.php:527 -#: view/theme/frio/theme.php:235 +#: view/theme/frio/theme.php:238 msgid "Media" msgstr "" -#: src/Content/Nav.php:232 view/theme/frio/theme.php:235 +#: src/Content/Nav.php:232 view/theme/frio/theme.php:238 msgid "Your postings with media" msgstr "" #: src/Content/Nav.php:233 src/Content/Nav.php:293 #: src/Module/BaseProfile.php:85 src/Module/BaseProfile.php:88 #: src/Module/BaseProfile.php:96 src/Module/BaseProfile.php:99 -#: src/Module/Settings/Display.php:319 view/theme/frio/theme.php:236 -#: view/theme/frio/theme.php:240 +#: src/Module/Settings/Display.php:319 view/theme/frio/theme.php:239 +#: view/theme/frio/theme.php:243 msgid "Calendar" msgstr "" -#: src/Content/Nav.php:233 view/theme/frio/theme.php:236 +#: src/Content/Nav.php:233 view/theme/frio/theme.php:239 msgid "Your calendar" msgstr "" @@ -2030,7 +2030,7 @@ msgstr "" #: src/Content/Nav.php:274 src/Content/Nav.php:329 #: src/Content/Text/HTML.php:877 src/Module/BaseProfile.php:127 #: src/Module/BaseProfile.php:130 src/Module/Contact.php:426 -#: src/Module/Contact.php:535 view/theme/frio/theme.php:243 +#: src/Module/Contact.php:535 view/theme/frio/theme.php:246 msgid "Contacts" msgstr "" @@ -2069,15 +2069,15 @@ msgstr "" msgid "Terms of Service of this Friendica instance" msgstr "" -#: src/Content/Nav.php:306 view/theme/frio/theme.php:239 +#: src/Content/Nav.php:306 view/theme/frio/theme.php:242 msgid "Network" msgstr "" -#: src/Content/Nav.php:306 view/theme/frio/theme.php:239 +#: src/Content/Nav.php:306 view/theme/frio/theme.php:242 msgid "Conversations from your friends" msgstr "" -#: src/Content/Nav.php:308 view/theme/frio/theme.php:229 +#: src/Content/Nav.php:308 view/theme/frio/theme.php:232 msgid "Your posts and conversations" msgstr "" @@ -2106,7 +2106,7 @@ msgstr "" msgid "Mark all system notifications as seen" msgstr "" -#: src/Content/Nav.php:318 view/theme/frio/theme.php:241 +#: src/Content/Nav.php:318 view/theme/frio/theme.php:244 msgid "Private mail" msgstr "" @@ -2128,15 +2128,15 @@ msgstr "" #: src/Content/Nav.php:327 src/Module/Admin/Addons/Details.php:114 #: src/Module/Admin/Themes/Details.php:93 src/Module/BaseSettings.php:182 -#: src/Module/Welcome.php:52 view/theme/frio/theme.php:242 +#: src/Module/Welcome.php:52 view/theme/frio/theme.php:245 msgid "Settings" msgstr "" -#: src/Content/Nav.php:327 view/theme/frio/theme.php:242 +#: src/Content/Nav.php:327 view/theme/frio/theme.php:245 msgid "Account settings" msgstr "" -#: src/Content/Nav.php:329 view/theme/frio/theme.php:243 +#: src/Content/Nav.php:329 view/theme/frio/theme.php:246 msgid "Manage/edit friends and contacts" msgstr "" @@ -6892,7 +6892,7 @@ msgid "Actions" msgstr "" #: src/Module/Contact/Profile.php:417 -#: src/Module/Settings/TwoFactor/Index.php:140 view/theme/frio/theme.php:229 +#: src/Module/Settings/TwoFactor/Index.php:140 view/theme/frio/theme.php:232 msgid "Status" msgstr "" @@ -8875,7 +8875,7 @@ msgstr "" msgid "Unsupported or missing response type" msgstr "" -#: src/Module/OAuth/Authorize.php:59 src/Module/OAuth/Token.php:78 +#: src/Module/OAuth/Authorize.php:59 src/Module/OAuth/Token.php:75 msgid "Incomplete request data" msgstr "" @@ -8886,11 +8886,11 @@ msgid "" "close this window: %s" msgstr "" -#: src/Module/OAuth/Token.php:83 +#: src/Module/OAuth/Token.php:80 msgid "Invalid data or unknown client" msgstr "" -#: src/Module/OAuth/Token.php:108 +#: src/Module/OAuth/Token.php:105 msgid "Unsupported or missing grant type" msgstr "" @@ -10630,7 +10630,7 @@ msgid "Content Settings" msgstr "" #: src/Module/Settings/Display.php:316 view/theme/duepuntozero/config.php:86 -#: view/theme/frio/config.php:172 view/theme/quattro/config.php:88 +#: view/theme/frio/config.php:151 view/theme/quattro/config.php:88 #: view/theme/vier/config.php:136 msgid "Theme settings" msgstr "" @@ -12696,124 +12696,100 @@ msgstr "" msgid "Variations" msgstr "" -#: view/theme/frio/config.php:153 -msgid "Light (Accented)" -msgstr "" - -#: view/theme/frio/config.php:154 -msgid "Dark (Accented)" -msgstr "" - -#: view/theme/frio/config.php:155 -msgid "Black (Accented)" -msgstr "" - -#: view/theme/frio/config.php:167 +#: view/theme/frio/config.php:146 msgid "Note" msgstr "" -#: view/theme/frio/config.php:167 +#: view/theme/frio/config.php:146 msgid "Check image permissions if all users are allowed to see the image" msgstr "" -#: view/theme/frio/config.php:173 -msgid "Custom" +#: view/theme/frio/config.php:152 +msgid "Appearance" msgstr "" -#: view/theme/frio/config.php:174 -msgid "Legacy" +#: view/theme/frio/config.php:153 +msgid "Accent color" msgstr "" -#: view/theme/frio/config.php:175 -msgid "Accented" -msgstr "" - -#: view/theme/frio/config.php:176 -msgid "Select color scheme" -msgstr "" - -#: view/theme/frio/config.php:177 -msgid "Select scheme accent" -msgstr "" - -#: view/theme/frio/config.php:177 +#: view/theme/frio/config.php:153 msgid "Blue" msgstr "" -#: view/theme/frio/config.php:177 +#: view/theme/frio/config.php:153 msgid "Red" msgstr "" -#: view/theme/frio/config.php:177 +#: view/theme/frio/config.php:153 msgid "Purple" msgstr "" -#: view/theme/frio/config.php:177 +#: view/theme/frio/config.php:153 msgid "Green" msgstr "" -#: view/theme/frio/config.php:177 +#: view/theme/frio/config.php:153 msgid "Pink" msgstr "" -#: view/theme/frio/config.php:178 +#: view/theme/frio/config.php:154 msgid "Copy or paste schemestring" msgstr "" -#: view/theme/frio/config.php:178 +#: view/theme/frio/config.php:154 msgid "" "You can copy this string to share your theme with others. Pasting here " "applies the schemestring" msgstr "" -#: view/theme/frio/config.php:179 +#: view/theme/frio/config.php:155 msgid "Navigation bar background color" msgstr "" -#: view/theme/frio/config.php:180 +#: view/theme/frio/config.php:156 msgid "Navigation bar icon color " msgstr "" -#: view/theme/frio/config.php:181 +#: view/theme/frio/config.php:157 msgid "Link color" msgstr "" -#: view/theme/frio/config.php:182 +#: view/theme/frio/config.php:158 msgid "Set the background color" msgstr "" -#: view/theme/frio/config.php:183 +#: view/theme/frio/config.php:159 msgid "Content background opacity" msgstr "" -#: view/theme/frio/config.php:184 +#: view/theme/frio/config.php:160 msgid "Set the background image" msgstr "" -#: view/theme/frio/config.php:185 +#: view/theme/frio/config.php:161 msgid "Background image style" msgstr "" -#: view/theme/frio/config.php:188 +#: view/theme/frio/config.php:164 msgid "Always open Compose page" msgstr "" -#: view/theme/frio/config.php:188 +#: view/theme/frio/config.php:164 msgid "" "The New Post button always open the Compose page " "instead of the modal form. When this is disabled, the Compose page can be " "accessed with a middle click on the link or from the modal." msgstr "" -#: view/theme/frio/config.php:192 +#: view/theme/frio/config.php:168 msgid "Login page background image" msgstr "" -#: view/theme/frio/config.php:196 +#: view/theme/frio/config.php:172 msgid "Login page background color" msgstr "" -#: view/theme/frio/config.php:196 +#: view/theme/frio/config.php:172 msgid "Leave background image and color empty for theme defaults" msgstr "" @@ -12853,19 +12829,35 @@ msgstr "" msgid "Repeat image to fill the screen." msgstr "" -#: view/theme/frio/php/default.php:81 view/theme/frio/php/standard.php:40 +#: view/theme/frio/php/default.php:82 view/theme/frio/php/standard.php:40 msgid "Skip to main content" msgstr "" -#: view/theme/frio/php/default.php:152 view/theme/frio/php/standard.php:75 +#: view/theme/frio/php/default.php:153 view/theme/frio/php/standard.php:75 msgid "Back to top" msgstr "" -#: view/theme/frio/theme.php:211 -msgid "Guest" +#: view/theme/frio/php/scheme.php:105 +msgid "Light" +msgstr "" + +#: view/theme/frio/php/scheme.php:106 +msgid "Dark" +msgstr "" + +#: view/theme/frio/php/scheme.php:107 +msgid "Black" +msgstr "" + +#: view/theme/frio/php/scheme.php:118 +msgid "Custom" msgstr "" #: view/theme/frio/theme.php:214 +msgid "Guest" +msgstr "" + +#: view/theme/frio/theme.php:217 msgid "Visitor" msgstr ""