author | Csoregi Natalia <ncsoregi@mozilla.com> |
Fri, 27 Jul 2018 01:02:37 +0300 | |
changeset 428672 | 98884f98717df879f6d1eb6a46e6720870c193ed |
parent 428671 | c8ea1d673cace55358f49f121307efc4315daa17 (current diff) |
parent 428620 | 8f2f847b2f9dc5643eeb9935d603a3b30686f972 (diff) |
child 428673 | 540ce309a136fca21662645cc4f14cc7a3f2183d |
push id | 34339 |
push user | dluca@mozilla.com |
push date | Fri, 27 Jul 2018 10:20:10 +0000 |
treeherder | mozilla-central@87bcafe428a4 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | merge |
milestone | 63.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/accessible/jsat/ContentControl.jsm +++ b/accessible/jsat/ContentControl.jsm @@ -1,13 +1,12 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.defineModuleGetter(this, "Utils", "resource://gre/modules/accessibility/Utils.jsm"); ChromeUtils.defineModuleGetter(this, "Logger", "resource://gre/modules/accessibility/Utils.jsm"); ChromeUtils.defineModuleGetter(this, "Roles", "resource://gre/modules/accessibility/Constants.jsm"); ChromeUtils.defineModuleGetter(this, "States", "resource://gre/modules/accessibility/Constants.jsm");
--- a/accessible/jsat/EventManager.jsm +++ b/accessible/jsat/EventManager.jsm @@ -1,15 +1,14 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.defineModuleGetter(this, "Services", "resource://gre/modules/Services.jsm"); ChromeUtils.defineModuleGetter(this, "Utils", "resource://gre/modules/accessibility/Utils.jsm"); ChromeUtils.defineModuleGetter(this, "Logger", "resource://gre/modules/accessibility/Utils.jsm"); ChromeUtils.defineModuleGetter(this, "Presentation", "resource://gre/modules/accessibility/Presentation.jsm");
--- a/accessible/jsat/Traversal.jsm +++ b/accessible/jsat/Traversal.jsm @@ -1,20 +1,17 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ -/* exported TraversalRules, TraversalHelper */ - "use strict"; var EXPORTED_SYMBOLS = ["TraversalRules", "TraversalHelper"]; // jshint ignore:line ChromeUtils.import("resource://gre/modules/accessibility/Utils.jsm"); -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.defineModuleGetter(this, "Roles", // jshint ignore:line "resource://gre/modules/accessibility/Constants.jsm"); ChromeUtils.defineModuleGetter(this, "Filters", // jshint ignore:line "resource://gre/modules/accessibility/Constants.jsm"); ChromeUtils.defineModuleGetter(this, "States", // jshint ignore:line "resource://gre/modules/accessibility/Constants.jsm"); ChromeUtils.defineModuleGetter(this, "Prefilters", // jshint ignore:line "resource://gre/modules/accessibility/Constants.jsm");
--- a/accessible/jsat/Utils.jsm +++ b/accessible/jsat/Utils.jsm @@ -1,17 +1,14 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ -/* exported Utils, Logger, PivotContext, PrefCache */ - "use strict"; -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.defineModuleGetter(this, "Services", // jshint ignore:line "resource://gre/modules/Services.jsm"); ChromeUtils.defineModuleGetter(this, "Rect", // jshint ignore:line "resource://gre/modules/Geometry.jsm"); ChromeUtils.defineModuleGetter(this, "Roles", // jshint ignore:line "resource://gre/modules/accessibility/Constants.jsm"); ChromeUtils.defineModuleGetter(this, "Events", // jshint ignore:line "resource://gre/modules/accessibility/Constants.jsm");
--- a/browser/app/profile/firefox.js +++ b/browser/app/profile/firefox.js @@ -466,17 +466,17 @@ pref("browser.tabs.extraDragSpace", fals // true return to the tab that opened this tab (its owner) // false return to the adjacent tab (old default) pref("browser.tabs.selectOwnerOnClose", true); pref("browser.tabs.showAudioPlayingIcon", true); // This should match Chromium's audio indicator delay. pref("browser.tabs.delayHidingAudioPlayingIconMS", 3000); -pref("browser.ctrlTab.previews", false); +pref("browser.ctrlTab.recentlyUsedOrder", true); // By default, do not export HTML at shutdown. // If true, at shutdown the bookmarks in your menu and toolbar will // be exported as HTML to the bookmarks.html file. pref("browser.bookmarks.autoExportHTML", false); // The maximum number of daily bookmark backups to // keep in {PROFILEDIR}/bookmarkbackups. Special values: @@ -1142,17 +1142,17 @@ pref("services.sync.prefs.sync.accessibi pref("services.sync.prefs.sync.accessibility.typeaheadfind", true); pref("services.sync.prefs.sync.accessibility.typeaheadfind.linksonly", true); pref("services.sync.prefs.sync.addons.ignoreUserEnabledChanges", true); // The addons prefs related to repository verification are intentionally // not synced for security reasons. If a system is compromised, a user // could weaken the pref locally, install an add-on from an untrusted // source, and this would propagate automatically to other, // uncompromised Sync-connected devices. -pref("services.sync.prefs.sync.browser.ctrlTab.previews", true); +pref("services.sync.prefs.sync.browser.ctrlTab.recentlyUsedOrder", true); pref("services.sync.prefs.sync.browser.download.useDownloadDir", true); pref("services.sync.prefs.sync.browser.formfill.enable", true); pref("services.sync.prefs.sync.browser.link.open_newwindow", true); pref("services.sync.prefs.sync.browser.newtabpage.enabled", true); pref("services.sync.prefs.sync.browser.newtabpage.pinned", true); pref("services.sync.prefs.sync.browser.offline-apps.notify", true); pref("services.sync.prefs.sync.browser.safebrowsing.phishing.enabled", true); pref("services.sync.prefs.sync.browser.safebrowsing.malware.enabled", true);
--- a/browser/base/content/browser-ctrlTab.js +++ b/browser/base/content/browser-ctrlTab.js @@ -215,17 +215,17 @@ var ctrlTab = { uninit: function ctrlTab_uninit() { if (this._recentlyUsedTabs) { this._recentlyUsedTabs = null; this._init(false); } }, - prefName: "browser.ctrlTab.previews", + prefName: "browser.ctrlTab.recentlyUsedOrder", readPref: function ctrlTab_readPref() { var enable = Services.prefs.getBoolPref(this.prefName) && !Services.prefs.getBoolPref("browser.ctrlTab.disallowForScreenReaders", false); if (enable) this.init(); else @@ -460,58 +460,62 @@ var ctrlTab = { suspendGUI: function ctrlTab_suspendGUI() { document.removeEventListener("keyup", this, true); for (let preview of this.previews) { this.updatePreview(preview, null); } }, - onKeyPress: function ctrlTab_onKeyPress(event) { - var isOpen = this.isOpen; - - if (isOpen) { - event.preventDefault(); - event.stopPropagation(); + onKeyDown(event) { + if (event.keyCode != event.DOM_VK_TAB || + !event.ctrlKey || + event.altKey || + event.metaKey) { + return; } - switch (event.keyCode) { - case event.DOM_VK_TAB: - if (event.ctrlKey && !event.altKey && !event.metaKey) { - if (isOpen) { - this.advanceFocus(!event.shiftKey); - } else if (!event.shiftKey) { - event.preventDefault(); - event.stopPropagation(); - let tabs = gBrowser.visibleTabs; - if (tabs.length > 2) { - this.open(); - } else if (tabs.length == 2) { - let index = tabs[0].selected ? 1 : 0; - gBrowser.selectedTab = tabs[index]; - } - } - } + event.preventDefault(); + event.stopPropagation(); + + if (this.isOpen) { + this.advanceFocus(!event.shiftKey); + } else if (!event.shiftKey) { + let tabs = gBrowser.visibleTabs; + if (tabs.length > 2) { + this.open(); + } else if (tabs.length == 2) { + let index = tabs[0].selected ? 1 : 0; + gBrowser.selectedTab = tabs[index]; + } + } + }, + + onKeyPress(event) { + if (!this.isOpen || + !event.ctrlKey) { + return; + } + + event.preventDefault(); + event.stopPropagation(); + + if (event.keyCode == event.DOM_VK_DELETE) { + this.remove(this.selected); + return; + } + + switch (event.charCode) { + case this.keys.close: + this.remove(this.selected); break; - default: - if (isOpen && event.ctrlKey) { - if (event.keyCode == event.DOM_VK_DELETE) { - this.remove(this.selected); - break; - } - switch (event.charCode) { - case this.keys.close: - this.remove(this.selected); - break; - case this.keys.find: - case this.keys.selectAll: - this.showAllTabs(); - break; - } - } + case this.keys.find: + case this.keys.selectAll: + this.showAllTabs(); + break; } }, removeClosingTabFromUI: function ctrlTab_removeClosingTabFromUI(aTab) { if (this.tabCount == 2) { this.close(); return; } @@ -556,16 +560,19 @@ var ctrlTab = { case "TabOpen": this.attachTab(event.target, 1); break; case "TabClose": this.detachTab(event.target); if (this.isOpen) this.removeClosingTabFromUI(event.target); break; + case "keydown": + this.onKeyDown(event); + break; case "keypress": this.onKeyPress(event); break; case "keyup": if (event.keyCode == event.DOM_VK_CONTROL) this.pick(); break; case "popupshowing": @@ -601,16 +608,21 @@ var ctrlTab = { window[toggleEventListener]("SSWindowRestored", this); var tabContainer = gBrowser.tabContainer; tabContainer[toggleEventListener]("TabOpen", this); tabContainer[toggleEventListener]("TabAttrModified", this); tabContainer[toggleEventListener]("TabSelect", this); tabContainer[toggleEventListener]("TabClose", this); + if (enable) { + Services.els.addSystemEventListener(document, "keydown", this, false); + } else { + Services.els.removeSystemEventListener(document, "keydown", this, false); + } document[toggleEventListener]("keypress", this); gBrowser.tabbox.handleCtrlTab = !enable; if (enable) PageThumbs.addExpirationFilter(this); else PageThumbs.removeExpirationFilter(this);
--- a/browser/base/content/browser.xul +++ b/browser/base/content/browser.xul @@ -794,17 +794,16 @@ placeholder="&urlbar.placeholder2;" defaultPlaceholder="&urlbar.placeholder2;" focused="true" type="autocomplete" autocompletesearch="unifiedcomplete" autocompletesearchparam="enable-actions" autocompletepopup="PopupAutoCompleteRichResult" completeselectedindex="true" - shrinkdelay="250" tabscrolling="true" newlines="stripsurroundingwhitespace" ontextentered="this.handleCommand(param);" ontextreverted="return this.handleRevert();" pageproxystate="invalid"> <!-- Use onclick instead of normal popup= syntax since the popup code fires onmousedown, and hence eats our favicon drag events. --> <box id="identity-box" role="button"
--- a/browser/base/content/tabbrowser.js +++ b/browser/base/content/tabbrowser.js @@ -1272,47 +1272,49 @@ window._gBrowser = { // No suitable URI? Fall back to our untitled string. title = this.tabContainer.emptyTabTitle; } } return this._setTabLabel(aTab, title, { isContentTitle }); }, - _setTabLabel(aTab, aLabel, aOptions) { + _setTabLabel(aTab, aLabel, { + beforeTabOpen, + isContentTitle, + } = {}) { if (!aLabel) { return false; } aTab._fullLabel = aLabel; - aOptions = aOptions || {}; - if (!aOptions.isContentTitle) { + if (!isContentTitle) { // Remove protocol and "www." if (!("_regex_shortenURLForTabLabel" in this)) { this._regex_shortenURLForTabLabel = /^[^:]+:\/\/(?:www\.)?/; } aLabel = aLabel.replace(this._regex_shortenURLForTabLabel, ""); } - aTab._labelIsContentTitle = aOptions.isContentTitle; + aTab._labelIsContentTitle = isContentTitle; if (aTab.getAttribute("label") == aLabel) { return false; } let dwu = window.windowUtils; let isRTL = dwu.getDirectionFromText(aLabel) == Ci.nsIDOMWindowUtils.DIRECTION_RTL; aTab.setAttribute("label", aLabel); aTab.setAttribute("labeldirection", isRTL ? "rtl" : "ltr"); // Dispatch TabAttrModified event unless we're setting the label // before the TabOpen event was dispatched. - if (!aOptions.beforeTabOpen) { + if (!beforeTabOpen) { this._tabAttrModified(aTab, ["label"]); } if (aTab.selected) { this.updateTitlebar(); } return true; @@ -1507,46 +1509,50 @@ window._gBrowser = { this.addTab(aURIs[i], params); } if (firstTabAdded && !aLoadInBackground) { this.selectedTab = firstTabAdded; } }, - updateBrowserRemoteness(aBrowser, aShouldBeRemote, aOptions) { - aOptions = aOptions || {}; + updateBrowserRemoteness(aBrowser, aShouldBeRemote, { + newFrameloader, + opener, + remoteType, + sameProcessAsFrameLoader, + } = {}) { let isRemote = aBrowser.getAttribute("remote") == "true"; if (!gMultiProcessBrowser && aShouldBeRemote) { throw new Error("Cannot switch to remote browser in a window " + "without the remote tabs load context."); } // Default values for remoteType - if (!aOptions.remoteType) { - aOptions.remoteType = aShouldBeRemote ? E10SUtils.DEFAULT_REMOTE_TYPE : E10SUtils.NOT_REMOTE; + if (!remoteType) { + remoteType = aShouldBeRemote ? E10SUtils.DEFAULT_REMOTE_TYPE : E10SUtils.NOT_REMOTE; } // If we are passed an opener, we must be making the browser non-remote, and // if the browser is _currently_ non-remote, we need the openers to match, // because it is already too late to change it. - if (aOptions.opener) { + if (opener) { if (aShouldBeRemote) { throw new Error("Cannot set an opener on a browser which should be remote!"); } - if (!isRemote && aBrowser.contentWindow.opener != aOptions.opener) { + if (!isRemote && aBrowser.contentWindow.opener != opener) { throw new Error("Cannot change opener on an already non-remote browser!"); } } // Abort if we're not going to change anything - let currentRemoteType = aBrowser.getAttribute("remoteType"); - if (isRemote == aShouldBeRemote && !aOptions.newFrameloader && - (!isRemote || currentRemoteType == aOptions.remoteType)) { + let oldRemoteType = aBrowser.getAttribute("remoteType"); + if (isRemote == aShouldBeRemote && !newFrameloader && + (!isRemote || oldRemoteType == remoteType)) { return false; } let tab = this.getTabForBrowser(aBrowser); // aBrowser needs to be inserted now if it hasn't been already. this._insertBrowser(tab); let evt = document.createEvent("Events"); @@ -1562,63 +1568,60 @@ window._gBrowser = { let filter = this._tabFilters.get(tab); let listener = this._tabListeners.get(tab); aBrowser.webProgress.removeProgressListener(filter); filter.removeProgressListener(listener); // We'll be creating a new listener, so destroy the old one. listener.destroy(); + let oldDroppedLinkHandler = aBrowser.droppedLinkHandler; + let oldSameProcessAsFrameLoader = aBrowser.sameProcessAsFrameLoader; let oldUserTypedValue = aBrowser.userTypedValue; let hadStartedLoad = aBrowser.didStartLoadSinceLastUserTyping(); // Make sure the browser is destroyed so it unregisters from observer notifications aBrowser.destroy(); - // Make sure to restore the original droppedLinkHandler and - // sameProcessAsFrameLoader. - let droppedLinkHandler = aBrowser.droppedLinkHandler; - let sameProcessAsFrameLoader = aBrowser.sameProcessAsFrameLoader; - // Change the "remote" attribute. let parent = aBrowser.parentNode; aBrowser.remove(); if (aShouldBeRemote) { aBrowser.setAttribute("remote", "true"); - aBrowser.setAttribute("remoteType", aOptions.remoteType); + aBrowser.setAttribute("remoteType", remoteType); } else { aBrowser.setAttribute("remote", "false"); aBrowser.removeAttribute("remoteType"); } // NB: This works with the hack in the browser constructor that // turns this normal property into a field. - if (aOptions.sameProcessAsFrameLoader) { - // Always set sameProcessAsFrameLoader when passed in aOptions. - aBrowser.sameProcessAsFrameLoader = aOptions.sameProcessAsFrameLoader; - } else if (!aShouldBeRemote || currentRemoteType == aOptions.remoteType) { + if (sameProcessAsFrameLoader) { + // Always set sameProcessAsFrameLoader when passed in explicitly. + aBrowser.sameProcessAsFrameLoader = sameProcessAsFrameLoader; + } else if (!aShouldBeRemote || oldRemoteType == remoteType) { // Only copy existing sameProcessAsFrameLoader when not switching // remote type otherwise it would stop the switch. - aBrowser.sameProcessAsFrameLoader = sameProcessAsFrameLoader; - } - - if (aOptions.opener) { + aBrowser.sameProcessAsFrameLoader = oldSameProcessAsFrameLoader; + } + + if (opener) { // Set the opener window on the browser, such that when the frame // loader is created the opener is set correctly. - aBrowser.presetOpenerWindow(aOptions.opener); + aBrowser.presetOpenerWindow(opener); } parent.appendChild(aBrowser); aBrowser.userTypedValue = oldUserTypedValue; if (hadStartedLoad) { aBrowser.urlbarChangeTracker.startedLoad(); } - aBrowser.droppedLinkHandler = droppedLinkHandler; + aBrowser.droppedLinkHandler = oldDroppedLinkHandler; // Switching a browser's remoteness will create a new frameLoader. // As frameLoaders start out with an active docShell we have to // deactivate it if this is not the selected tab's browser or the // browser window is minimized. aBrowser.docShellIsActive = this.shouldActivateDocShell(aBrowser); // Create a new tab progress listener for the new browser we just injected, @@ -1673,28 +1676,28 @@ window._gBrowser = { }, updateBrowserRemotenessByURL(aBrowser, aURL, aOptions) { aOptions = aOptions || {}; if (!gMultiProcessBrowser) return this.updateBrowserRemoteness(aBrowser, false); - let currentRemoteType = aBrowser.getAttribute("remoteType") || null; + let oldRemoteType = aBrowser.getAttribute("remoteType") || null; aOptions.remoteType = E10SUtils.getRemoteTypeForURI(aURL, gMultiProcessBrowser, - currentRemoteType, + oldRemoteType, aBrowser.currentURI); // If this URL can't load in the current browser then flip it to the // correct type. - if (currentRemoteType != aOptions.remoteType || - aOptions.newFrameloader) { + if (oldRemoteType != aOptions.remoteType || + aOptions.newFrameloader) { let remote = aOptions.remoteType != E10SUtils.NOT_REMOTE; return this.updateBrowserRemoteness(aBrowser, remote, aOptions); } return false; }, removePreloadedBrowser() { @@ -1770,61 +1773,66 @@ window._gBrowser = { browser.docShellIsActive = false; browser._urlbarFocused = true; // Make sure the preloaded browser is loaded with desired zoom level let tabURI = Services.io.newURI(BROWSER_NEW_TAB_URL); FullZoom.onLocationChange(tabURI, false, browser); }, - _createBrowser(aParams) { - // Supported parameters: - // userContextId, remote, remoteType, isPreloadBrowser, - // uriIsAboutBlank, sameProcessAsFrameLoader, - // recordExecution, replayExecution - + _createBrowser({ + isPreloadBrowser, + name, + nextTabParentId, + openerWindow, + recordExecution, + remote, + remoteType, + replayExecution, + sameProcessAsFrameLoader, + uriIsAboutBlank, + userContextId, + } = {}) { let b = document.createElementNS(this._XUL_NS, "browser"); b.permanentKey = {}; for (let attribute in this._defaultBrowserAttributes) { b.setAttribute(attribute, this._defaultBrowserAttributes[attribute]); } - if (aParams.userContextId) { - b.setAttribute("usercontextid", aParams.userContextId); + if (userContextId) { + b.setAttribute("usercontextid", userContextId); } // remote parameter used by some addons, use default in this case. - if (aParams.remote && !aParams.remoteType) { - aParams.remoteType = E10SUtils.DEFAULT_REMOTE_TYPE; - } - - if (aParams.remoteType) { - b.setAttribute("remoteType", aParams.remoteType); + if (remote && !remoteType) { + remoteType = E10SUtils.DEFAULT_REMOTE_TYPE; + } + + if (remoteType) { + b.setAttribute("remoteType", remoteType); b.setAttribute("remote", "true"); } - let recordExecution = aParams && aParams.recordExecution; if (recordExecution) { b.setAttribute("recordExecution", recordExecution); } - let replayExecution = aParams && aParams.replayExecution; if (replayExecution) { b.setAttribute("replayExecution", replayExecution); } - if (aParams.openerWindow) { - if (aParams.remoteType) { + if (openerWindow) { + if (remoteType) { throw new Error("Cannot set opener window on a remote browser!"); } - b.presetOpenerWindow(aParams.openerWindow); - } - - if (!aParams.isPreloadBrowser) { + b.presetOpenerWindow(openerWindow); + } + + if (!isPreloadBrowser) { b.setAttribute("autocompletepopup", "PopupAutoComplete"); } /* * This attribute is meant to describe if the browser is the * preloaded browser. There are 2 defined states: "preloaded" or * "consumed". The order of events goes as follows: * 1. The preloaded browser is created and the 'preloadedState' @@ -1833,38 +1841,38 @@ window._gBrowser = { * preloaded browser, the 'preloadedState' attribute for that * browser is set to "consumed" * 3. When we then navigate away from about:newtab, the "consumed" * browsers will attempt to switch to a new content process, * therefore the 'preloadedState' attribute is removed from * that browser altogether * See more details on Bug 1420285. */ - if (aParams.isPreloadBrowser) { + if (isPreloadBrowser) { b.setAttribute("preloadedState", "preloaded"); } - if (aParams.nextTabParentId) { - if (!aParams.remoteType) { + if (nextTabParentId) { + if (!remoteType) { throw new Error("Cannot have nextTabParentId without a remoteType"); } // Gecko is going to read this attribute and use it. - b.setAttribute("nextTabParentId", aParams.nextTabParentId.toString()); - } - - if (aParams.sameProcessAsFrameLoader) { - b.sameProcessAsFrameLoader = aParams.sameProcessAsFrameLoader; + b.setAttribute("nextTabParentId", nextTabParentId.toString()); + } + + if (sameProcessAsFrameLoader) { + b.sameProcessAsFrameLoader = sameProcessAsFrameLoader; } // This will be used by gecko to control the name of the opened // window. - if (aParams.name) { + if (name) { // XXX: The `name` property is special in HTML and XUL. Should // we use a different attribute name for this? - b.setAttribute("name", aParams.name); + b.setAttribute("name", name); } // Create the browserStack container let stack = document.createElementNS(this._XUL_NS, "stack"); stack.className = "browserStack"; stack.appendChild(b); stack.setAttribute("flex", "1"); @@ -1883,17 +1891,17 @@ window._gBrowser = { // Add the Message and the Browser to the box let notificationbox = document.createElementNS(this._XUL_NS, "notificationbox"); notificationbox.setAttribute("flex", "1"); notificationbox.setAttribute("notificationside", "top"); notificationbox.appendChild(browserSidebarContainer); // Prevent the superfluous initial load of a blank document // if we're going to load something other than about:blank. - if (!aParams.uriIsAboutBlank) { + if (!uriIsAboutBlank) { b.setAttribute("nodefaultsrc", "true"); } return b; }, _createLazyBrowser(aTab) { let browser = aTab.linkedBrowser; @@ -2608,23 +2616,21 @@ window._gBrowser = { this.removeTab(lastToClose, aParams); } }, removeCurrentTab(aParams) { this.removeTab(this.selectedTab, aParams); }, - removeTab(aTab, aParams) { - if (aParams) { - var animate = aParams.animate; - var byMouse = aParams.byMouse; - var skipPermitUnload = aParams.skipPermitUnload; - } - + removeTab(aTab, { + animate, + byMouse, + skipPermitUnload, + } = {}) { // Telemetry stopwatches may already be running if removeTab gets // called again for an already closing tab. if (!TelemetryStopwatch.running("FX_TAB_CLOSE_TIME_ANIM_MS", aTab) && !TelemetryStopwatch.running("FX_TAB_CLOSE_TIME_NO_ANIM_MS", aTab)) { // Speculatevely start both stopwatches now. We'll cancel one of // the two later depending on whether we're animating. TelemetryStopwatch.start("FX_TAB_CLOSE_TIME_ANIM_MS", aTab); TelemetryStopwatch.start("FX_TAB_CLOSE_TIME_NO_ANIM_MS", aTab);
--- a/browser/base/content/test/general/browser_ctrlTab.js +++ b/browser/base/content/test/general/browser_ctrlTab.js @@ -1,10 +1,10 @@ add_task(async function() { - Services.prefs.setBoolPref("browser.ctrlTab.previews", true); + await SpecialPowers.pushPrefEnv({"set": [["browser.ctrlTab.recentlyUsedOrder", true]]}); BrowserTestUtils.addTab(gBrowser); BrowserTestUtils.addTab(gBrowser); BrowserTestUtils.addTab(gBrowser); // While doing this test, we should make sure the selected tab in the tab // preview is not changed by mouse events. That may happen after closing // the selected tab with ctrl+W. Disable all mouse events to prevent it. @@ -108,20 +108,16 @@ add_task(async function() { document.addEventListener("keypress", detectKeyEvent); await pressCtrlTab(); document.removeEventListener("keypress", detectKeyEvent); ok(eventConsumed, "Ctrl+Tab consumed by the tabbed browser if one tab is open"); is(focusedWindow, document.commandDispatcher.focusedWindow, "Ctrl+Tab doesn't change focus if one tab is open"); } - // cleanup - if (Services.prefs.prefHasUserValue("browser.ctrlTab.previews")) - Services.prefs.clearUserPref("browser.ctrlTab.previews"); - /* private utility functions */ function pressCtrlTab(aShiftKey) { let promise; if (!isOpen() && canOpen()) { promise = BrowserTestUtils.waitForEvent(ctrlTab.panel, "popupshown"); } else { promise = BrowserTestUtils.waitForEvent(document, "keyup"); @@ -147,17 +143,18 @@ add_task(async function() { return promise; } function isOpen() { return ctrlTab.isOpen; } function canOpen() { - return Services.prefs.getBoolPref("browser.ctrlTab.previews") && gBrowser.tabs.length > 2; + return Services.prefs.getBoolPref("browser.ctrlTab.recentlyUsedOrder") && + gBrowser.tabs.length > 2; } function checkTabs(aTabs) { is(gBrowser.tabs.length, aTabs, "number of open tabs should be " + aTabs); } function selectTabs(tabs) { tabs.forEach(function(index) {
--- a/browser/base/content/test/general/browser_tabkeynavigation.js +++ b/browser/base/content/test/general/browser_tabkeynavigation.js @@ -7,18 +7,20 @@ add_task(async function test() { let testPage2 = "data:text/html,<html id='tab2'><body><button id='button2'>Tab 2</button><script>function preventDefault(event) { event.preventDefault(); event.stopImmediatePropagation(); } window.addEventListener('keydown', preventDefault, true); window.addEventListener('keypress', preventDefault, true);</script></body></html>"; let testPage3 = "data:text/html,<html id='tab3'><body><button id='button3'>Tab 3</button></body></html>"; let tab1 = await BrowserTestUtils.openNewForegroundTab(gBrowser, testPage1); let browser1 = gBrowser.getBrowserForTab(tab1); let tab2 = await BrowserTestUtils.openNewForegroundTab(gBrowser, testPage2); let tab3 = await BrowserTestUtils.openNewForegroundTab(gBrowser, testPage3); - // Kill the animation for simpler test. - Services.prefs.setBoolPref("toolkit.cosmeticAnimations.enabled", false); + await SpecialPowers.pushPrefEnv({"set": [ + ["toolkit.cosmeticAnimations.enabled", false], + ["browser.ctrlTab.recentlyUsedOrder", false], + ]}); gBrowser.selectedTab = tab1; browser1.focus(); is(gBrowser.selectedTab, tab1, "Tab1 should be activated"); EventUtils.synthesizeKey("VK_TAB", { ctrlKey: true }); is(gBrowser.selectedTab, tab2, @@ -146,11 +148,9 @@ add_task(async function test() { is(gBrowser.tabs.length, 3, "The count of tabs should be 3 since renaming key events shouldn't close other tabs"); } gBrowser.selectedTab = tab3; while (gBrowser.tabs.length > 1) { gBrowser.removeCurrentTab(); } - - Services.prefs.clearUserPref("toolkit.cosmeticAnimations.enabled"); });
--- a/browser/base/content/test/general/browser_visibleTabs_tabPreview.js +++ b/browser/base/content/test/general/browser_visibleTabs_tabPreview.js @@ -1,14 +1,14 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ add_task(async function test() { - Services.prefs.setBoolPref("browser.ctrlTab.previews", true); + await SpecialPowers.pushPrefEnv({"set": [["browser.ctrlTab.recentlyUsedOrder", true]]}); let [origTab] = gBrowser.visibleTabs; let tabOne = BrowserTestUtils.addTab(gBrowser); let tabTwo = BrowserTestUtils.addTab(gBrowser); // test the ctrlTab.tabList pressCtrlTab(); ok(ctrlTab.tabList.length, 3, "Show 3 tabs in tab preview"); @@ -22,19 +22,16 @@ add_task(async function test() { gBrowser.showOnlyTheseTabs([origTab, tabOne, tabTwo]); pressCtrlTab(); ok(ctrlTab.isOpen, "With 3 tabs open, Ctrl+Tab does open the preview panel"); releaseCtrl(); // cleanup gBrowser.removeTab(tabOne); gBrowser.removeTab(tabTwo); - - if (Services.prefs.prefHasUserValue("browser.ctrlTab.previews")) - Services.prefs.clearUserPref("browser.ctrlTab.previews"); }); function pressCtrlTab(aShiftKey) { EventUtils.synthesizeKey("VK_TAB", { ctrlKey: true, shiftKey: !!aShiftKey }); } function releaseCtrl() { EventUtils.synthesizeKey("VK_CONTROL", { type: "keyup" });
--- a/browser/base/content/test/performance/browser_urlbar_keyed_search.js +++ b/browser/base/content/test/performance/browser_urlbar_keyed_search.js @@ -27,32 +27,16 @@ const EXPECTED_REFLOWS_FIRST_OPEN = [ "openAutocompletePopup@chrome://browser/content/urlbarBindings.xml", "openPopup@chrome://global/content/bindings/autocomplete.xml", "set_popupOpen@chrome://global/content/bindings/autocomplete.xml" ], }, { stack: [ - "adjustHeight@chrome://global/content/bindings/autocomplete.xml", - "onxblpopupshown@chrome://global/content/bindings/autocomplete.xml" - ], - maxCount: 5, // This number should only ever go down - never up. - }, - - { - stack: [ - "adjustHeight@chrome://global/content/bindings/autocomplete.xml", - "_invalidate/this._adjustHeightTimeout<@chrome://global/content/bindings/autocomplete.xml", - ], - maxCount: 51, // This number should only ever go down - never up. - }, - - { - stack: [ "_handleOverflow@chrome://global/content/bindings/autocomplete.xml", "handleOverUnderflow@chrome://global/content/bindings/autocomplete.xml", "_reuseAcItem@chrome://global/content/bindings/autocomplete.xml", "_appendCurrentResult@chrome://global/content/bindings/autocomplete.xml", "_invalidate@chrome://global/content/bindings/autocomplete.xml", "invalidate@chrome://global/content/bindings/autocomplete.xml" ], maxCount: 60, // This number should only ever go down - never up.
--- a/browser/base/content/test/performance/browser_urlbar_search.js +++ b/browser/base/content/test/performance/browser_urlbar_search.js @@ -27,32 +27,16 @@ const EXPECTED_REFLOWS_FIRST_OPEN = [ "openAutocompletePopup@chrome://browser/content/urlbarBindings.xml", "openPopup@chrome://global/content/bindings/autocomplete.xml", "set_popupOpen@chrome://global/content/bindings/autocomplete.xml" ], }, { stack: [ - "adjustHeight@chrome://global/content/bindings/autocomplete.xml", - "onxblpopupshown@chrome://global/content/bindings/autocomplete.xml" - ], - maxCount: 5, // This number should only ever go down - never up. - }, - - { - stack: [ - "adjustHeight@chrome://global/content/bindings/autocomplete.xml", - "_invalidate/this._adjustHeightTimeout<@chrome://global/content/bindings/autocomplete.xml", - ], - maxCount: 6, // This number should only ever go down - never up. - }, - - { - stack: [ "_handleOverflow@chrome://global/content/bindings/autocomplete.xml", "handleOverUnderflow@chrome://global/content/bindings/autocomplete.xml", "_reuseAcItem@chrome://global/content/bindings/autocomplete.xml", "_appendCurrentResult@chrome://global/content/bindings/autocomplete.xml", "_invalidate@chrome://global/content/bindings/autocomplete.xml", "invalidate@chrome://global/content/bindings/autocomplete.xml" ], maxCount: 36, // This number should only ever go down - never up. @@ -80,32 +64,16 @@ const EXPECTED_REFLOWS_FIRST_OPEN = [ ], }, ]; /* These reflows happen everytime the awesomebar panel opens. */ const EXPECTED_REFLOWS_SECOND_OPEN = [ { stack: [ - "adjustHeight@chrome://global/content/bindings/autocomplete.xml", - "onxblpopupshown@chrome://global/content/bindings/autocomplete.xml" - ], - maxCount: 3, // This number should only ever go down - never up. - }, - - { - stack: [ - "adjustHeight@chrome://global/content/bindings/autocomplete.xml", - "_invalidate/this._adjustHeightTimeout<@chrome://global/content/bindings/autocomplete.xml", - ], - maxCount: 6, // This number should only ever go down - never up. - }, - - { - stack: [ "_handleOverflow@chrome://global/content/bindings/autocomplete.xml", "handleOverUnderflow@chrome://global/content/bindings/autocomplete.xml", "_reuseAcItem@chrome://global/content/bindings/autocomplete.xml", "_appendCurrentResult@chrome://global/content/bindings/autocomplete.xml", "_invalidate@chrome://global/content/bindings/autocomplete.xml", "invalidate@chrome://global/content/bindings/autocomplete.xml" ], maxCount: 24, // This number should only ever go down - never up.
--- a/browser/base/content/urlbarBindings.xml +++ b/browser/base/content/urlbarBindings.xml @@ -1906,16 +1906,20 @@ file, You can obtain one at http://mozil this, "anonid", "search-suggestions-notification" ); </field> <field name="footer" readonly="true"> document.getAnonymousElementByAttribute(this, "anonid", "footer"); </field> + <field name="shrinkDelay" readonly="true"> + 250 + </field> + <field name="oneOffSearchButtons" readonly="true"> document.getAnonymousElementByAttribute(this, "anonid", "one-off-search-buttons"); </field> <field name="_oneOffSearchesEnabled">false</field> <field name="_overrideValue">null</field> @@ -2190,16 +2194,93 @@ file, You can obtain one at http://mozil if (needsHandleOverUnderflow) { for (let item of this.richlistbox.childNodes) { item.handleOverUnderflow(); } } ]]></body> </method> + <method name="adjustHeight"> + <body> + <![CDATA[ + // If we were going to shrink later, cancel that for now: + if (this._shrinkTimeout) { + clearTimeout(this._shrinkTimeout); + this._shrinkTimeout = null; + } + let lastRowCount = this._lastRowCount; + // Figure out how many rows to show + let rows = this.richlistbox.childNodes; + this._lastRowCount = rows.length; + let numRows = Math.min(this.matchCount, this.maxRows, rows.length); + + // If we're going from 0 to non-0 rows, we might need to remove + // the height attribute to allow the popup to size. The attribute + // is set from XUL popup management code. + if (!lastRowCount && rows.length) { + this.removeAttribute("height"); + } + + // Default the height to 0 if we have no rows to show + let height = 0; + if (numRows) { + if (!this._rowHeight) { + window.promiseDocumentFlushed(() => { + if (window.closed) { + return; + } + this._rowHeight = rows[0].getBoundingClientRect().height; + let style = window.getComputedStyle(this.richlistbox); + + let paddingTop = parseInt(style.paddingTop) || 0; + let paddingBottom = parseInt(style.paddingBottom) || 0; + this._rlbPadding = paddingTop + paddingBottom; + // Then re-run - but don't dirty layout from inside this callback. + window.requestAnimationFrame(() => this.adjustHeight()); + }); + return; + } + + // Calculate the height to have the first row to last row shown + height = (this._rowHeight * numRows) + this._rlbPadding; + } + + let animate = this.getAttribute("dontanimate") != "true"; + let currentHeight = + parseFloat(this.richlistbox.getAttribute("height"), 10) || + parseFloat(this.richlistbox.style.height, 10) || + 0; // It's possible we get here when we haven't set height on the richlistbox + // yet, which means parseFloat will return NaN. It should return 0 instead. + if (height > currentHeight) { + // Grow immediately. + if (animate) { + this.richlistbox.removeAttribute("height"); + this.richlistbox.style.height = height + "px"; + } else { + this.richlistbox.style.removeProperty("height"); + this.richlistbox.height = height; + } + } else if (height < currentHeight) { // Don't shrink if height matches exactly + // Delay shrinking to avoid flicker. + this._shrinkTimeout = setTimeout(() => { + this._collapseUnusedItems(); + if (animate) { + this.richlistbox.removeAttribute("height"); + this.richlistbox.style.height = height + "px"; + } else { + this.richlistbox.style.removeProperty("height"); + this.richlistbox.height = height; + } + }, this.shrinkDelay); + } + ]]> + </body> + </method> + <method name="_showSearchSuggestionsNotification"> <parameter name="whichNotification"/> <parameter name="popupDirection"/> <body> <![CDATA[ if (whichNotification == "opt-out") { if (this.margins) { this.searchSuggestionsNotification.style.paddingInlineStart =
--- a/browser/components/about/AboutPrivateBrowsingHandler.jsm +++ b/browser/components/about/AboutPrivateBrowsingHandler.jsm @@ -2,17 +2,16 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["AboutPrivateBrowsingHandler"]; ChromeUtils.import("resource://gre/modules/RemotePageManager.jsm"); -ChromeUtils.import("resource://gre/modules/Services.jsm"); var AboutPrivateBrowsingHandler = { _topics: [ "DontShowIntroPanelAgain", "OpenPrivateWindow", ], init() {
--- a/browser/components/customizableui/DragPositionManager.jsm +++ b/browser/components/customizableui/DragPositionManager.jsm @@ -1,17 +1,14 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; -ChromeUtils.import("resource:///modules/CustomizableUI.jsm"); -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); - var gManagers = new WeakMap(); const kPaletteId = "customization-palette"; var EXPORTED_SYMBOLS = ["DragPositionManager"]; function AreaPositionManager(aContainer) { // Caching the direction and bounds of the container for quick access later:
--- a/browser/components/customizableui/ScrollbarSampler.jsm +++ b/browser/components/customizableui/ScrollbarSampler.jsm @@ -2,17 +2,16 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["ScrollbarSampler"]; ChromeUtils.import("resource://gre/modules/Services.jsm"); -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); var gSystemScrollbarWidth = null; var ScrollbarSampler = { getSystemScrollbarWidth() { if (gSystemScrollbarWidth !== null) { return Promise.resolve(gSystemScrollbarWidth); }
--- a/browser/components/customizableui/SearchWidgetTracker.jsm +++ b/browser/components/customizableui/SearchWidgetTracker.jsm @@ -6,17 +6,16 @@ * Keeps the "browser.search.widget.inNavBar" preference synchronized. */ "use strict"; var EXPORTED_SYMBOLS = ["SearchWidgetTracker"]; ChromeUtils.import("resource://gre/modules/Services.jsm"); -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.defineModuleGetter(this, "CustomizableUI", "resource:///modules/CustomizableUI.jsm"); const WIDGET_ID = "search-container"; const PREF_NAME = "browser.search.widget.inNavBar"; const SearchWidgetTracker = {
--- a/browser/components/extensions/ExtensionControlledPopup.jsm +++ b/browser/components/extensions/ExtensionControlledPopup.jsm @@ -15,17 +15,16 @@ * changed the New Tab or homepage. Users would see this popup the first time they * view those pages after a change to the setting in each session until they confirm * the change by triggering the primary action. */ var EXPORTED_SYMBOLS = ["ExtensionControlledPopup"]; ChromeUtils.import("resource://gre/modules/Services.jsm"); -ChromeUtils.import("resource://gre/modules/ExtensionUtils.jsm"); ChromeUtils.import("resource://gre/modules/ExtensionCommon.jsm"); ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.defineModuleGetter(this, "AddonManager", "resource://gre/modules/AddonManager.jsm"); ChromeUtils.defineModuleGetter(this, "BrowserUtils", "resource://gre/modules/BrowserUtils.jsm"); ChromeUtils.defineModuleGetter(this, "CustomizableUI",
--- a/browser/components/migration/360seProfileMigrator.js +++ b/browser/components/migration/360seProfileMigrator.js @@ -1,16 +1,15 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); -ChromeUtils.import("resource://gre/modules/Services.jsm"); ChromeUtils.import("resource://gre/modules/NetUtil.jsm"); ChromeUtils.import("resource://gre/modules/FileUtils.jsm"); ChromeUtils.import("resource://gre/modules/osfile.jsm"); ChromeUtils.import("resource:///modules/MigrationUtils.jsm"); ChromeUtils.defineModuleGetter(this, "PlacesUtils", "resource://gre/modules/PlacesUtils.jsm"); ChromeUtils.defineModuleGetter(this, "Sqlite",
--- a/browser/components/migration/ChromeMigrationUtils.jsm +++ b/browser/components/migration/ChromeMigrationUtils.jsm @@ -1,20 +1,18 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["ChromeMigrationUtils"]; ChromeUtils.import("resource://gre/modules/AppConstants.jsm"); -ChromeUtils.import("resource://gre/modules/NetUtil.jsm"); ChromeUtils.import("resource://gre/modules/osfile.jsm"); ChromeUtils.import("resource://gre/modules/Services.jsm"); -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); var ChromeMigrationUtils = { _extensionVersionDirectoryNames: {}, // The cache for the locale strings. // For example, the data could be: // { // "profile-id-1": {
--- a/browser/components/migration/EdgeProfileMigrator.js +++ b/browser/components/migration/EdgeProfileMigrator.js @@ -1,17 +1,16 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; ChromeUtils.import("resource://gre/modules/AppConstants.jsm"); ChromeUtils.import("resource://gre/modules/osfile.jsm"); -ChromeUtils.import("resource://gre/modules/Services.jsm"); ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.import("resource:///modules/MigrationUtils.jsm"); ChromeUtils.import("resource:///modules/MSMigrationUtils.jsm"); ChromeUtils.defineModuleGetter(this, "PlacesUtils", "resource://gre/modules/PlacesUtils.jsm"); ChromeUtils.defineModuleGetter(this, "ESEDBReader", "resource:///modules/ESEDBReader.jsm");
--- a/browser/components/migration/SafariProfileMigrator.js +++ b/browser/components/migration/SafariProfileMigrator.js @@ -1,18 +1,16 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; -ChromeUtils.import("resource://gre/modules/AppConstants.jsm"); ChromeUtils.import("resource://gre/modules/FileUtils.jsm"); ChromeUtils.import("resource://gre/modules/osfile.jsm"); -ChromeUtils.import("resource://gre/modules/Services.jsm"); ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.import("resource:///modules/MigrationUtils.jsm"); ChromeUtils.defineModuleGetter(this, "PropertyListUtils", "resource://gre/modules/PropertyListUtils.jsm"); ChromeUtils.defineModuleGetter(this, "PlacesUtils", "resource://gre/modules/PlacesUtils.jsm"); ChromeUtils.defineModuleGetter(this, "FormHistory",
--- a/browser/components/migration/tests/unit/test_IE7_passwords.js +++ b/browser/components/migration/tests/unit/test_IE7_passwords.js @@ -1,12 +1,11 @@ "use strict"; ChromeUtils.import("resource://gre/modules/AppConstants.jsm"); -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.defineModuleGetter(this, "OSCrypto", "resource://gre/modules/OSCrypto.jsm"); const IE7_FORM_PASSWORDS_MIGRATOR_NAME = "IE7FormPasswords"; const LOGINS_KEY = "Software\\Microsoft\\Internet Explorer\\IntelliForms\\Storage2"; const EXTENSION = "-backup"; const TESTED_WEBSITES = {
--- a/browser/components/nsBrowserGlue.js +++ b/browser/components/nsBrowserGlue.js @@ -1808,17 +1808,17 @@ BrowserGlue.prototype = { } } }, // eslint-disable-next-line complexity _migrateUI: function BG__migrateUI() { // Use an increasing number to keep track of the current migration state. // Completely unrelated to the current Firefox release number. - const UI_VERSION = 69; + const UI_VERSION = 70; const BROWSER_DOCURL = AppConstants.BROWSER_CHROME_URL; let currentUIVersion; if (Services.prefs.prefHasUserValue("browser.migration.version")) { currentUIVersion = Services.prefs.getIntPref("browser.migration.version"); } else { // This is a new profile, nothing to migrate. Services.prefs.setIntPref("browser.migration.version", UI_VERSION); @@ -2120,16 +2120,27 @@ BrowserGlue.prototype = { if (socialPrefs) { let socialPrefsArray = socialPrefs.getChildList(""); for (let item of socialPrefsArray) { Services.prefs.clearUserPref("social." + item); } } } + if (currentUIVersion < 70) { + // Migrate old ctrl-tab pref to new one in existing profiles. (This code + // doesn't run at all in new profiles.) + Services.prefs.setBoolPref("browser.ctrlTab.recentlyUsedOrder", + Services.prefs.getBoolPref("browser.ctrlTab.previews", false)); + Services.prefs.clearUserPref("browser.ctrlTab.previews"); + // Remember that we migrated the pref in case we decide to flip it for + // these users. + Services.prefs.setBoolPref("browser.ctrlTab.migrated", true); + } + // Update the migration version. Services.prefs.setIntPref("browser.migration.version", UI_VERSION); }, _checkForDefaultBrowser() { // Perform default browser checking. if (!ShellService) { return;
--- a/browser/components/preferences/in-content/main.js +++ b/browser/components/preferences/in-content/main.js @@ -138,17 +138,17 @@ Preferences.addAll([ - true if tabs are to be shown in the Windows 7 taskbar */ { id: "browser.link.open_newwindow", type: "int" }, { id: "browser.tabs.loadInBackground", type: "bool", inverted: true }, { id: "browser.tabs.warnOnClose", type: "bool" }, { id: "browser.tabs.warnOnOpen", type: "bool" }, { id: "browser.sessionstore.restore_on_demand", type: "bool" }, - { id: "browser.ctrlTab.previews", type: "bool" }, + { id: "browser.ctrlTab.recentlyUsedOrder", type: "bool" }, // Fonts { id: "font.language.group", type: "wstring" }, // Languages { id: "browser.translation.detectLanguage", type: "bool" }, // General tab
--- a/browser/components/preferences/in-content/main.xul +++ b/browser/components/preferences/in-content/main.xul @@ -72,17 +72,18 @@ </groupbox> <!-- Tab preferences --> <groupbox data-category="paneGeneral" hidden="true"> <caption><label data-l10n-id="tabs-group-header"/></caption> <checkbox id="ctrlTabRecentlyUsedOrder" data-l10n-id="ctrl-tab-recently-used-order" - preference="browser.ctrlTab.previews"/> + preference="browser.ctrlTab.recentlyUsedOrder" + oncommand="Services.prefs.clearUserPref('browser.ctrlTab.migrated');"/> <checkbox id="linkTargeting" data-l10n-id="open-new-link-as-tabs" preference="browser.link.open_newwindow" onsyncfrompreference="return gMainPane.readLinkTarget();" onsynctopreference="return gMainPane.writeLinkTarget();"/> <checkbox id="warnCloseMultiple" data-l10n-id="warn-on-close-multiple-tabs" preference="browser.tabs.warnOnClose"/>
--- a/browser/components/preferences/in-content/privacy.xul +++ b/browser/components/preferences/in-content/privacy.xul @@ -348,18 +348,18 @@ </hbox> </vbox> </hbox> <vbox id="doNotTrackLearnMoreBox"> <label><label class="tail-with-learn-more" data-l10n-id="do-not-track-description"></label><label class="learnMore text-link" href="https://www.mozilla.org/dnt" data-l10n-id="do-not-track-learn-more"></label></label> <radiogroup id="doNotTrackRadioGroup" aria-labelledby="doNotTrackDesc" preference="privacy.donottrackheader.enabled"> + <radio value="true" data-l10n-id="do-not-track-option-always"/> <radio value="false" data-l10n-id="do-not-track-option-default"/> - <radio value="true" data-l10n-id="do-not-track-option-always"/> </radiogroup> </vbox> </vbox> </groupbox> <hbox id="permissionsCategory" class="subcategory" hidden="true"
--- a/browser/components/sessionstore/ContentRestore.jsm +++ b/browser/components/sessionstore/ContentRestore.jsm @@ -1,17 +1,16 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["ContentRestore"]; -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this); ChromeUtils.import("resource://gre/modules/Services.jsm", this); ChromeUtils.defineModuleGetter(this, "DocShellCapabilities", "resource:///modules/sessionstore/DocShellCapabilities.jsm"); ChromeUtils.defineModuleGetter(this, "FormData", "resource://gre/modules/FormData.jsm"); ChromeUtils.defineModuleGetter(this, "ScrollPosition", "resource://gre/modules/ScrollPosition.jsm");
--- a/browser/components/sessionstore/RecentlyClosedTabsAndWindowsMenuUtils.jsm +++ b/browser/components/sessionstore/RecentlyClosedTabsAndWindowsMenuUtils.jsm @@ -1,19 +1,17 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ var EXPORTED_SYMBOLS = ["RecentlyClosedTabsAndWindowsMenuUtils"]; const kNSXUL = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.import("resource://gre/modules/Services.jsm"); -ChromeUtils.import("resource://gre/modules/PlacesUtils.jsm"); ChromeUtils.defineModuleGetter(this, "PluralForm", "resource://gre/modules/PluralForm.jsm"); ChromeUtils.defineModuleGetter(this, "SessionStore", "resource:///modules/sessionstore/SessionStore.jsm"); var navigatorBundle = Services.strings.createBundle("chrome://browser/locale/browser.properties");
--- a/browser/components/sessionstore/SessionCookies.jsm +++ b/browser/components/sessionstore/SessionCookies.jsm @@ -2,17 +2,16 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["SessionCookies"]; ChromeUtils.import("resource://gre/modules/Services.jsm", this); -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this); ChromeUtils.defineModuleGetter(this, "PrivacyLevel", "resource://gre/modules/sessionstore/PrivacyLevel.jsm"); const MAX_EXPIRY = Number.MAX_SAFE_INTEGER; /** * The external API implemented by the SessionCookies module.
--- a/browser/components/sessionstore/SessionStorage.jsm +++ b/browser/components/sessionstore/SessionStorage.jsm @@ -2,17 +2,16 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["SessionStorage"]; ChromeUtils.import("resource://gre/modules/Services.jsm"); -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); const ssu = Cc["@mozilla.org/browser/sessionstore/utils;1"] .createInstance(Ci.nsISessionStoreUtils); // A bound to the size of data to store for DOM Storage. const DOM_STORAGE_LIMIT_PREF = "browser.sessionstore.dom_storage_limit"; // Returns the principal for a given |frame| contained in a given |docShell|.
--- a/browser/components/sessionstore/StartupPerformance.jsm +++ b/browser/components/sessionstore/StartupPerformance.jsm @@ -1,18 +1,16 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["StartupPerformance"]; -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this); - ChromeUtils.defineModuleGetter(this, "Services", "resource://gre/modules/Services.jsm"); ChromeUtils.defineModuleGetter(this, "setTimeout", "resource://gre/modules/Timer.jsm"); ChromeUtils.defineModuleGetter(this, "clearTimeout", "resource://gre/modules/Timer.jsm"); const COLLECT_RESULTS_AFTER_MS = 10000;
--- a/browser/components/sessionstore/TabState.jsm +++ b/browser/components/sessionstore/TabState.jsm @@ -1,18 +1,16 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["TabState"]; -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this); - ChromeUtils.defineModuleGetter(this, "PrivacyFilter", "resource://gre/modules/sessionstore/PrivacyFilter.jsm"); ChromeUtils.defineModuleGetter(this, "TabStateCache", "resource:///modules/sessionstore/TabStateCache.jsm"); ChromeUtils.defineModuleGetter(this, "TabAttributes", "resource:///modules/sessionstore/TabAttributes.jsm"); ChromeUtils.defineModuleGetter(this, "Utils", "resource://gre/modules/sessionstore/Utils.jsm");
--- a/browser/components/shell/HeadlessShell.jsm +++ b/browser/components/shell/HeadlessShell.jsm @@ -2,17 +2,16 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["HeadlessShell"]; ChromeUtils.import("resource://gre/modules/Services.jsm"); -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.import("resource://gre/modules/osfile.jsm"); // Refrences to the progress listeners to keep them from being gc'ed // before they are called. const progressListeners = new Map(); function loadContentWindow(webNavigation, uri) { return new Promise((resolve, reject) => {
--- a/browser/components/translation/BingTranslator.jsm +++ b/browser/components/translation/BingTranslator.jsm @@ -2,17 +2,16 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = [ "BingTranslator" ]; ChromeUtils.import("resource://gre/modules/Services.jsm"); -ChromeUtils.import("resource://gre/modules/Log.jsm"); ChromeUtils.import("resource://gre/modules/PromiseUtils.jsm"); ChromeUtils.import("resource://services-common/async.js"); ChromeUtils.import("resource://gre/modules/Http.jsm"); ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); XPCOMUtils.defineLazyGlobalGetters(this, ["XMLHttpRequest"]); // The maximum amount of net data allowed per request on Bing's API.
--- a/browser/components/translation/LanguageDetector.jsm +++ b/browser/components/translation/LanguageDetector.jsm @@ -2,17 +2,16 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["LanguageDetector"]; ChromeUtils.import("resource://gre/modules/Timer.jsm"); -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); // Since Emscripten can handle heap growth, but not heap shrinkage, we // need to refresh the worker after we've processed a particularly large // string in order to prevent unnecessary resident memory growth. // // These values define the cut-off string length and the idle timeout // (in milliseconds) before destroying a worker. Once a string of the // maximum size has been processed, the worker is marked for
--- a/browser/components/translation/TranslationContentHandler.jsm +++ b/browser/components/translation/TranslationContentHandler.jsm @@ -2,17 +2,16 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = [ "TranslationContentHandler" ]; ChromeUtils.import("resource://gre/modules/Services.jsm"); -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.defineModuleGetter(this, "LanguageDetector", "resource:///modules/translation/LanguageDetector.jsm"); const STATE_OFFER = 0; const STATE_TRANSLATED = 2; const STATE_ERROR = 3; var TranslationContentHandler = function(global, docShell) {
--- a/browser/components/translation/YandexTranslator.jsm +++ b/browser/components/translation/YandexTranslator.jsm @@ -2,17 +2,16 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = [ "YandexTranslator" ]; ChromeUtils.import("resource://gre/modules/Services.jsm"); -ChromeUtils.import("resource://gre/modules/Log.jsm"); ChromeUtils.import("resource://gre/modules/PromiseUtils.jsm"); ChromeUtils.import("resource://services-common/async.js"); ChromeUtils.import("resource://gre/modules/Http.jsm"); ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); XPCOMUtils.defineLazyGlobalGetters(this, ["XMLHttpRequest"]); // The maximum amount of net data allowed per request on Bing's API.
--- a/browser/extensions/formautofill/FormAutofillDoorhanger.jsm +++ b/browser/extensions/formautofill/FormAutofillDoorhanger.jsm @@ -2,25 +2,22 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* * Implements doorhanger singleton that wraps up the PopupNotifications and handles * the doorhager UI for formautofill related features. */ -/* exported FormAutofillDoorhanger */ - "use strict"; var EXPORTED_SYMBOLS = ["FormAutofillDoorhanger"]; ChromeUtils.import("resource://gre/modules/AppConstants.jsm"); ChromeUtils.import("resource://gre/modules/Services.jsm"); -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.import("resource://formautofill/FormAutofill.jsm"); ChromeUtils.import("resource://formautofill/FormAutofillUtils.jsm"); this.log = null; FormAutofill.defineLazyLogGetter(this, EXPORTED_SYMBOLS[0]); const GetStringFromName = FormAutofillUtils.stringBundle.GetStringFromName; const formatStringFromName = FormAutofillUtils.stringBundle.formatStringFromName;
--- a/browser/extensions/formautofill/FormAutofillHandler.jsm +++ b/browser/extensions/formautofill/FormAutofillHandler.jsm @@ -1,24 +1,21 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* * Defines a handler object to represent forms that autofill can handle. */ -/* exported FormAutofillHandler */ - "use strict"; var EXPORTED_SYMBOLS = ["FormAutofillHandler"]; ChromeUtils.import("resource://gre/modules/Services.jsm"); -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.import("resource://formautofill/FormAutofill.jsm"); ChromeUtils.defineModuleGetter(this, "FormAutofillUtils", "resource://formautofill/FormAutofillUtils.jsm"); ChromeUtils.defineModuleGetter(this, "FormAutofillHeuristics", "resource://formautofill/FormAutofillHeuristics.jsm"); ChromeUtils.defineModuleGetter(this, "FormLikeFactory",
--- a/browser/extensions/formautofill/FormAutofillPreferences.jsm +++ b/browser/extensions/formautofill/FormAutofillPreferences.jsm @@ -13,17 +13,16 @@ var EXPORTED_SYMBOLS = ["FormAutofillPre // Add addresses enabled flag in telemetry environment for recording the number of // users who disable/enable the address autofill feature. const BUNDLE_URI = "chrome://formautofill/locale/formautofill.properties"; const MANAGE_ADDRESSES_URL = "chrome://formautofill/content/manageAddresses.xhtml"; const MANAGE_CREDITCARDS_URL = "chrome://formautofill/content/manageCreditCards.xhtml"; const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; ChromeUtils.import("resource://gre/modules/Services.jsm"); -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.import("resource://formautofill/FormAutofill.jsm"); ChromeUtils.import("resource://formautofill/FormAutofillUtils.jsm"); const { ENABLED_AUTOFILL_ADDRESSES_PREF, ENABLED_AUTOFILL_CREDITCARDS_PREF, MANAGE_ADDRESSES_KEYWORDS, EDIT_ADDRESS_KEYWORDS,
--- a/browser/extensions/formautofill/FormAutofillSync.jsm +++ b/browser/extensions/formautofill/FormAutofillSync.jsm @@ -2,17 +2,16 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["AddressesEngine", "CreditCardsEngine"]; ChromeUtils.import("resource://gre/modules/Services.jsm"); -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.import("resource://services-sync/engines.js"); ChromeUtils.import("resource://services-sync/record.js"); ChromeUtils.import("resource://services-sync/util.js"); ChromeUtils.import("resource://services-sync/constants.js"); ChromeUtils.import("resource://formautofill/FormAutofillUtils.jsm"); ChromeUtils.defineModuleGetter(this, "Log", "resource://gre/modules/Log.jsm");
--- a/browser/extensions/formautofill/ProfileAutoCompleteResult.jsm +++ b/browser/extensions/formautofill/ProfileAutoCompleteResult.jsm @@ -1,19 +1,16 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -/* exported AddressResult, CreditCardResult */ - "use strict"; var EXPORTED_SYMBOLS = ["AddressResult", "CreditCardResult"]; -ChromeUtils.import("resource://gre/modules/Services.jsm"); ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.import("resource://formautofill/FormAutofill.jsm"); ChromeUtils.defineModuleGetter(this, "FormAutofillUtils", "resource://formautofill/FormAutofillUtils.jsm"); ChromeUtils.defineModuleGetter(this, "CreditCard", "resource://gre/modules/CreditCard.jsm"); XPCOMUtils.defineLazyPreferenceGetter(this, "insecureWarningEnabled", "security.insecure_field_warning.contextual.enabled");
--- a/browser/extensions/formautofill/bootstrap.js +++ b/browser/extensions/formautofill/bootstrap.js @@ -121,16 +121,17 @@ function startup(data) { } else { Services.prefs.clearUserPref("services.sync.engine.creditcards.available"); } // Listen for the autocomplete popup message to lazily append our stylesheet related to the popup. Services.mm.addMessageListener("FormAutoComplete:MaybeOpenPopup", onMaybeOpenPopup); formAutofillParent.init().catch(Cu.reportError); + /* exported FormAutofillContent */ Services.ppmm.loadProcessScript("data:,new " + function() { ChromeUtils.import("resource://formautofill/FormAutofillContent.jsm"); }, true); Services.mm.loadFrameScript("chrome://formautofill/content/FormAutofillFrameScript.js", true); } function shutdown() { resProto.setSubstitution(RESOURCE_HOST, null);
--- a/browser/extensions/formautofill/phonenumberutils/PhoneNumber.jsm +++ b/browser/extensions/formautofill/phonenumberutils/PhoneNumber.jsm @@ -4,17 +4,16 @@ // This library came from https://github.com/andreasgal/PhoneNumber.js but will // be further maintained by our own in Form Autofill codebase. "use strict"; var EXPORTED_SYMBOLS = ["PhoneNumber"]; -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.defineModuleGetter(this, "PHONE_NUMBER_META_DATA", "resource://formautofill/phonenumberutils/PhoneNumberMetaData.jsm"); ChromeUtils.defineModuleGetter(this, "PhoneNumberNormalizer", "resource://formautofill/phonenumberutils/PhoneNumberNormalizer.jsm"); var PhoneNumber = (function(dataBase) { const MAX_PHONE_NUMBER_LENGTH = 50; const NON_ALPHA_CHARS = /[^a-zA-Z]/g; const NON_DIALABLE_CHARS = /[^,#+\*\d]/g;
--- a/browser/extensions/formautofill/test/unit/test_activeStatus.js +++ b/browser/extensions/formautofill/test/unit/test_activeStatus.js @@ -1,16 +1,15 @@ /* * Test for status handling in Form Autofill Parent. */ "use strict"; let {FormAutofillParent} = ChromeUtils.import("resource://formautofill/FormAutofillParent.jsm", {}); -ChromeUtils.import("resource://formautofill/FormAutofillStorage.jsm"); add_task(async function test_activeStatus_init() { let formAutofillParent = new FormAutofillParent(); sinon.spy(formAutofillParent, "_updateStatus"); // Default status is null before initialization Assert.equal(formAutofillParent._active, null); Assert.equal(Services.ppmm.initialProcessData.autofillEnabled, undefined);
--- a/browser/extensions/formautofill/test/unit/test_getRecords.js +++ b/browser/extensions/formautofill/test/unit/test_getRecords.js @@ -1,17 +1,16 @@ /* * Test for make sure getRecords can retrieve right collection from storage. */ "use strict"; let {FormAutofillParent} = ChromeUtils.import("resource://formautofill/FormAutofillParent.jsm", {}); ChromeUtils.import("resource://formautofill/MasterPassword.jsm"); -ChromeUtils.import("resource://formautofill/FormAutofillStorage.jsm"); ChromeUtils.import("resource://gre/modules/CreditCard.jsm"); const TEST_ADDRESS_1 = { "given-name": "Timothy", "additional-name": "John", "family-name": "Berners-Lee", organization: "World Wide Web Consortium", "street-address": "32 Vassar Street\nMIT Room 32-G524",
--- a/browser/extensions/formautofill/test/unit/test_savedFieldNames.js +++ b/browser/extensions/formautofill/test/unit/test_savedFieldNames.js @@ -1,16 +1,15 @@ /* * Test for keeping the valid fields information in initialProcessData. */ "use strict"; let {FormAutofillParent} = ChromeUtils.import("resource://formautofill/FormAutofillParent.jsm", {}); -ChromeUtils.import("resource://formautofill/FormAutofillStorage.jsm"); add_task(async function test_profileSavedFieldNames_init() { let formAutofillParent = new FormAutofillParent(); sinon.stub(formAutofillParent, "_updateSavedFieldNames"); await formAutofillParent.init(); await formAutofillParent.formAutofillStorage.initialize(); Assert.equal(formAutofillParent._updateSavedFieldNames.called, true);
--- a/browser/extensions/onboarding/OnboardingTourType.jsm +++ b/browser/extensions/onboarding/OnboardingTourType.jsm @@ -1,18 +1,16 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["OnboardingTourType"]; -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); - ChromeUtils.defineModuleGetter(this, "Services", "resource://gre/modules/Services.jsm"); var OnboardingTourType = { /** * Determine the current tour type (new user tour or update user tour). * The function checks 2 criterias * - TOURSET_VERSION: current onboarding tourset version
--- a/browser/extensions/pocket/content/Pocket.jsm +++ b/browser/extensions/pocket/content/Pocket.jsm @@ -1,17 +1,16 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["Pocket"]; -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.import("resource://gre/modules/Services.jsm"); ChromeUtils.defineModuleGetter(this, "BrowserUtils", "resource://gre/modules/BrowserUtils.jsm"); var Pocket = { get site() { return Services.prefs.getCharPref("extensions.pocket.site"); }, get listURL() { return "https://" + Pocket.site + "/?src=ff_ext"; },
--- a/browser/modules/BlockedSiteContent.jsm +++ b/browser/modules/BlockedSiteContent.jsm @@ -1,14 +1,13 @@ /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.import("resource://gre/modules/Services.jsm"); var EXPORTED_SYMBOLS = ["BlockedSiteContent"]; ChromeUtils.defineModuleGetter(this, "SafeBrowsing", "resource://gre/modules/SafeBrowsing.jsm"); function getSiteBlockedErrorDetails(docShell) {
--- a/browser/modules/BrowserUsageTelemetry.jsm +++ b/browser/modules/BrowserUsageTelemetry.jsm @@ -8,17 +8,16 @@ var EXPORTED_SYMBOLS = [ "BrowserUsageTelemetry", "URLBAR_SELECTED_RESULT_TYPES", "URLBAR_SELECTED_RESULT_METHODS", "MINIMUM_TAB_COUNT_INTERVAL_MS", ]; ChromeUtils.import("resource://gre/modules/Services.jsm"); -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.defineModuleGetter(this, "PrivateBrowsingUtils", "resource://gre/modules/PrivateBrowsingUtils.jsm"); // The upper bound for the count of the visited unique domain names. const MAX_UNIQUE_VISITED_DOMAINS = 100; // Observed topic names.
--- a/browser/modules/ClickEventHandler.jsm +++ b/browser/modules/ClickEventHandler.jsm @@ -1,18 +1,15 @@ /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ var EXPORTED_SYMBOLS = ["ClickEventHandler"]; -/* eslint no-unused-vars: ["error", {args: "none"}] */ - -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.import("resource://gre/modules/Services.jsm"); ChromeUtils.defineModuleGetter(this, "BlockedSiteContent", "resource:///modules/BlockedSiteContent.jsm"); ChromeUtils.defineModuleGetter(this, "BrowserUtils", "resource://gre/modules/BrowserUtils.jsm"); ChromeUtils.defineModuleGetter(this, "NetErrorContent", "resource:///modules/NetErrorContent.jsm");
--- a/browser/modules/ContentClick.jsm +++ b/browser/modules/ContentClick.jsm @@ -3,17 +3,16 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = [ "ContentClick" ]; ChromeUtils.import("resource://gre/modules/Services.jsm"); -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.defineModuleGetter(this, "PlacesUIUtils", "resource:///modules/PlacesUIUtils.jsm"); ChromeUtils.defineModuleGetter(this, "PrivateBrowsingUtils", "resource://gre/modules/PrivateBrowsingUtils.jsm"); var ContentClick = { // Listeners are added in nsBrowserGlue.js
--- a/browser/modules/Feeds.jsm +++ b/browser/modules/Feeds.jsm @@ -1,17 +1,16 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = [ "Feeds" ]; -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.import("resource://gre/modules/Services.jsm"); ChromeUtils.defineModuleGetter(this, "BrowserUtils", "resource://gre/modules/BrowserUtils.jsm"); ChromeUtils.defineModuleGetter(this, "BrowserWindowTracker", "resource:///modules/BrowserWindowTracker.jsm"); var Feeds = {
--- a/browser/modules/FormSubmitObserver.jsm +++ b/browser/modules/FormSubmitObserver.jsm @@ -10,17 +10,16 @@ * to get notifications about invalid forms. See HTMLFormElement * for details. */ "use strict"; var EXPORTED_SYMBOLS = [ "FormSubmitObserver" ]; -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.import("resource://gre/modules/Services.jsm"); ChromeUtils.import("resource://gre/modules/BrowserUtils.jsm"); function FormSubmitObserver(aWindow, aTabChildGlobal) { this.init(aWindow, aTabChildGlobal); } FormSubmitObserver.prototype =
--- a/browser/modules/FormValidationHandler.jsm +++ b/browser/modules/FormValidationHandler.jsm @@ -5,18 +5,16 @@ /* * Chrome side handling of form validation popup. */ "use strict"; var EXPORTED_SYMBOLS = [ "FormValidationHandler" ]; -ChromeUtils.import("resource://gre/modules/Services.jsm"); - var FormValidationHandler = { _panel: null, _anchor: null, /* * Public apis */
--- a/browser/modules/PageActions.jsm +++ b/browser/modules/PageActions.jsm @@ -9,17 +9,16 @@ var EXPORTED_SYMBOLS = [ // PageActions.Action // PageActions.ACTION_ID_BOOKMARK // PageActions.ACTION_ID_BOOKMARK_SEPARATOR // PageActions.ACTION_ID_BUILT_IN_SEPARATOR // PageActions.ACTION_ID_TRANSIENT_SEPARATOR ]; ChromeUtils.import("resource://gre/modules/Services.jsm"); -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.defineModuleGetter(this, "AppConstants", "resource://gre/modules/AppConstants.jsm"); ChromeUtils.defineModuleGetter(this, "AsyncShutdown", "resource://gre/modules/AsyncShutdown.jsm"); ChromeUtils.defineModuleGetter(this, "BinarySearch", "resource://gre/modules/BinarySearch.jsm");
--- a/browser/modules/PageStyleHandler.jsm +++ b/browser/modules/PageStyleHandler.jsm @@ -1,13 +1,12 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.import("resource://gre/modules/Services.jsm"); var EXPORTED_SYMBOLS = ["PageStyleHandler"]; var PageStyleHandler = { getViewer(content) { return content.document.docShell.contentViewer; },
--- a/browser/modules/ReaderParent.jsm +++ b/browser/modules/ReaderParent.jsm @@ -2,17 +2,16 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = [ "ReaderParent" ]; -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.import("resource://gre/modules/Services.jsm"); ChromeUtils.defineModuleGetter(this, "PlacesUtils", "resource://gre/modules/PlacesUtils.jsm"); ChromeUtils.defineModuleGetter(this, "ReaderMode", "resource://gre/modules/ReaderMode.jsm"); const gStringBundle = Services.strings.createBundle("chrome://global/locale/aboutReader.properties"); var ReaderParent = {
--- a/browser/modules/RemotePrompt.jsm +++ b/browser/modules/RemotePrompt.jsm @@ -2,18 +2,16 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = [ "RemotePrompt" ]; -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); - ChromeUtils.defineModuleGetter(this, "PromptUtils", "resource://gre/modules/SharedPromptUtils.jsm"); ChromeUtils.defineModuleGetter(this, "Services", "resource://gre/modules/Services.jsm"); var RemotePrompt = { // Listeners are added in nsBrowserGlue.js receiveMessage(message) {
--- a/browser/modules/Windows8WindowFrameColor.jsm +++ b/browser/modules/Windows8WindowFrameColor.jsm @@ -1,18 +1,16 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["Windows8WindowFrameColor"]; -ChromeUtils.import("resource://gre/modules/Services.jsm"); -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); var Registry = ChromeUtils.import("resource://gre/modules/WindowsRegistry.jsm").WindowsRegistry; var Windows8WindowFrameColor = { _windowFrameColor: null, get() { if (this._windowFrameColor) return this._windowFrameColor;
--- a/browser/themes/shared/tabs.inc.css +++ b/browser/themes/shared/tabs.inc.css @@ -795,21 +795,16 @@ display: block; margin-inline-end: 0; } .all-tabs-item[selected] { box-shadow: inset 4px 0 var(--blue-40); } -.all-tabs-button, -.all-tabs-secondary-button { - background-color: transparent !important; -} - .all-tabs-secondary-button > label { display: none; margin: 0 5.5px; } .all-tabs-secondary-button[soundplaying] { list-style-image: url(chrome://browser/skin/tabbrowser/tab-audio-playing.svg); }
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/TestRunner.jsm +++ b/browser/tools/mozscreenshots/mozscreenshots/extension/TestRunner.jsm @@ -9,17 +9,16 @@ var EXPORTED_SYMBOLS = ["TestRunner"]; const env = Cc["@mozilla.org/process/environment;1"].getService(Ci.nsIEnvironment); const APPLY_CONFIG_TIMEOUT_MS = 60 * 1000; const HOME_PAGE = "chrome://mozscreenshots/content/lib/mozscreenshots.html"; ChromeUtils.import("resource://gre/modules/AppConstants.jsm"); ChromeUtils.import("resource://gre/modules/FileUtils.jsm"); ChromeUtils.import("resource://gre/modules/Services.jsm"); ChromeUtils.import("resource://gre/modules/Timer.jsm"); -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.import("resource://gre/modules/osfile.jsm"); ChromeUtils.import("resource://gre/modules/Geometry.jsm"); ChromeUtils.defineModuleGetter(this, "BrowserTestUtils", "resource://testing-common/BrowserTestUtils.jsm"); // Screenshot.jsm must be imported this way for xpcshell tests to work ChromeUtils.defineModuleGetter(this, "Screenshot", "chrome://mozscreenshots/content/Screenshot.jsm");
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/bootstrap.js +++ b/browser/tools/mozscreenshots/mozscreenshots/extension/bootstrap.js @@ -1,19 +1,17 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* exported install, uninstall, startup, shutdown */ "use strict"; -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.import("resource://gre/modules/AddonManager.jsm"); -ChromeUtils.import("resource://gre/modules/Services.jsm"); ChromeUtils.import("resource://gre/modules/Timer.jsm"); ChromeUtils.defineModuleGetter(this, "TestRunner", "chrome://mozscreenshots/content/TestRunner.jsm"); async function install(data, reason) { if (!isAppSupported()) { uninstallExtension(data);
--- a/devtools/.eslintrc.js +++ b/devtools/.eslintrc.js @@ -195,16 +195,17 @@ module.exports = { "react/no-did-mount-set-state": "error", "react/no-did-update-set-state": "error", "react/no-direct-mutation-state": "error", "react/no-unknown-property": "error", "react/prefer-es6-class": ["off", "always"], "react/prop-types": "error", "react/sort-comp": ["error", { order: [ + "static-methods", "lifecycle", "everything-else", "render" ], groups: { lifecycle: [ "displayName", "propTypes",
new file mode 100644 --- /dev/null +++ b/devtools/client/aboutdebugging-new/aboutdebugging.css @@ -0,0 +1,24 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +@import "resource://devtools/client/themes/variables.css"; +@import "resource://devtools/client/aboutdebugging-new/src/components/App.css"; +@import "resource://devtools/client/aboutdebugging-new/src/components/RuntimesPane.css"; +@import "resource://devtools/client/aboutdebugging-new/src/components/runtime/RuntimeItem.css"; + +:root { + --runtime-item-icon-color: var(--grey-30); + --runtime-item-selected-color: var(--blue-55); +} + +html, body { + margin: 0; + padding: 0; +} + +ul { + list-style: none; + margin: 0; + padding: 0; +}
new file mode 100644 --- /dev/null +++ b/devtools/client/aboutdebugging-new/aboutdebugging.js @@ -0,0 +1,65 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +const { BrowserLoader } = + ChromeUtils.import("resource://devtools/client/shared/browser-loader.js", {}); +const { require } = BrowserLoader({ + baseURI: "resource://devtools/client/aboutdebugging-new/", + window, +}); +const Services = require("Services"); + +const { bindActionCreators } = require("devtools/client/shared/vendor/redux"); +const { createFactory } = + require("devtools/client/shared/vendor/react"); +const { render, unmountComponentAtNode } = + require("devtools/client/shared/vendor/react-dom"); +const Provider = + createFactory(require("devtools/client/shared/vendor/react-redux").Provider); + +const actions = require("./src/actions/index"); +const { configureStore } = require("./src/create-store"); +const ThisFirefox = require("./src/runtimes/this-firefox"); + +const App = createFactory(require("./src/components/App")); + +const AboutDebugging = { + init() { + if (!Services.prefs.getBoolPref("devtools.enabled", true)) { + // If DevTools are disabled, navigate to about:devtools. + window.location = "about:devtools?reason=AboutDebugging"; + return; + } + + this.store = configureStore(); + this.actions = bindActionCreators(actions, this.store.dispatch); + + const thisFirefox = new ThisFirefox(); + this.updateSelectedRuntime(thisFirefox); + + render(Provider({ store: this.store }, App({ thisFirefox })), this.mount); + }, + + destroy() { + unmountComponentAtNode(this.mount); + }, + + get mount() { + return document.getElementById("mount"); + }, + + updateSelectedRuntime(runtime) { + this.actions.updateSelectedRuntime(runtime); + }, +}; + +window.addEventListener("DOMContentLoaded", () => { + AboutDebugging.init(); +}, { once: true }); + +window.addEventListener("unload", () => { + AboutDebugging.destroy(); +}, {once: true});
new file mode 100644 --- /dev/null +++ b/devtools/client/aboutdebugging-new/index.html @@ -0,0 +1,14 @@ +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8" /> + <link rel="stylesheet" href="chrome://devtools/content/aboutdebugging-new/aboutdebugging.css"/> + <script src="chrome://devtools/content/aboutdebugging-new/aboutdebugging.js"></script> + </head> + <body> + <div id="mount"></div> + </body> +</html>
new file mode 100644 --- /dev/null +++ b/devtools/client/aboutdebugging-new/moz.build @@ -0,0 +1,10 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +DIRS += [ + 'src', +] + +with Files('**'): + BUG_COMPONENT = ('DevTools', 'about:debugging') \ No newline at end of file
new file mode 100644 --- /dev/null +++ b/devtools/client/aboutdebugging-new/src/actions/index.js @@ -0,0 +1,9 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +const runtimes = require("./runtimes"); + +Object.assign(exports, runtimes);
new file mode 100644 --- /dev/null +++ b/devtools/client/aboutdebugging-new/src/actions/moz.build @@ -0,0 +1,8 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +DevToolsModules( + 'index.js', + 'runtimes.js', +)
new file mode 100644 --- /dev/null +++ b/devtools/client/aboutdebugging-new/src/actions/runtimes.js @@ -0,0 +1,20 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +const { + UPDATE_SELECTED_RUNTIME, +} = require("../constants"); + +function updateSelectedRuntime(runtime) { + return { + type: UPDATE_SELECTED_RUNTIME, + runtime, + }; +} + +module.exports = { + updateSelectedRuntime, +};
new file mode 100644 --- /dev/null +++ b/devtools/client/aboutdebugging-new/src/components/App.css @@ -0,0 +1,10 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +.app { + font-size: 15px; + height: 100vh; + overflow: hidden; + width: 100vw; +}
new file mode 100644 --- /dev/null +++ b/devtools/client/aboutdebugging-new/src/components/App.js @@ -0,0 +1,43 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +const { connect } = require("devtools/client/shared/vendor/react-redux"); +const { createFactory, PureComponent } = require("devtools/client/shared/vendor/react"); +const dom = require("devtools/client/shared/vendor/react-dom-factories"); +const PropTypes = require("devtools/client/shared/vendor/react-prop-types"); + +const Runtime = require("../runtimes/runtime"); +const ThisFirefox = require("../runtimes/this-firefox"); + +const RuntimesPane = createFactory(require("./RuntimesPane")); + +class App extends PureComponent { + static get propTypes() { + return { + selectedRuntime: PropTypes.instanceOf(Runtime), + thisFirefox: PropTypes.instanceOf(ThisFirefox).isRequired, + }; + } + + render() { + const { selectedRuntime, thisFirefox } = this.props; + + return dom.div( + { + className: "app", + }, + RuntimesPane({ selectedRuntime, thisFirefox }) + ); + } +} + +const mapStateToProps = state => { + return { + selectedRuntime: state.runtimes.selectedRuntime, + }; +}; + +module.exports = connect(mapStateToProps)(App);
new file mode 100644 --- /dev/null +++ b/devtools/client/aboutdebugging-new/src/components/RuntimesPane.css @@ -0,0 +1,8 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +.runtimes-pane { + margin-block-start: 70px; + width: 240px; +}
new file mode 100644 --- /dev/null +++ b/devtools/client/aboutdebugging-new/src/components/RuntimesPane.js @@ -0,0 +1,43 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +const { createFactory, PureComponent } = require("devtools/client/shared/vendor/react"); +const dom = require("devtools/client/shared/vendor/react-dom-factories"); +const PropTypes = require("devtools/client/shared/vendor/react-prop-types"); + +const ThisFirefox = require("../runtimes/this-firefox"); + +const Runtime = require("../runtimes/runtime"); +const RuntimeItem = createFactory(require("./runtime/RuntimeItem")); + +class RuntimesPane extends PureComponent { + static get propTypes() { + return { + selectedRuntime: PropTypes.instanceOf(Runtime), + thisFirefox: PropTypes.instanceOf(ThisFirefox).isRequired, + }; + } + + render() { + const { selectedRuntime, thisFirefox } = this.props; + + return dom.section( + { + className: "runtimes-pane", + }, + dom.ul( + {}, + RuntimeItem({ + icon: thisFirefox.getIcon(), + isSelected: thisFirefox === selectedRuntime, + name: thisFirefox.getName(), + }) + ) + ); + } +} + +module.exports = RuntimesPane;
new file mode 100644 --- /dev/null +++ b/devtools/client/aboutdebugging-new/src/components/moz.build @@ -0,0 +1,14 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +DIRS += [ + 'runtime', +] + +DevToolsModules( + 'App.css', + 'App.js', + 'RuntimesPane.css', + 'RuntimesPane.js' +)
new file mode 100644 --- /dev/null +++ b/devtools/client/aboutdebugging-new/src/components/runtime/RuntimeItem.css @@ -0,0 +1,26 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +.runtime-item { + align-items: center; + display: flex; + font-size: 20px; + margin-inline-start: 24px; +} + +.runtime-item__icon { + fill: var(--runtime-item-icon-color); + height: 24px; + margin-inline-end: 9px; + width: 24px; + -moz-context-properties: fill; +} + +.runtime-item--selected { + color: var(--runtime-item-selected-color); +} + +.runtime-item__icon--selected { + fill: var(--runtime-item-selected-color); +}
new file mode 100644 --- /dev/null +++ b/devtools/client/aboutdebugging-new/src/components/runtime/RuntimeItem.js @@ -0,0 +1,40 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +const { PureComponent } = require("devtools/client/shared/vendor/react"); +const dom = require("devtools/client/shared/vendor/react-dom-factories"); +const PropTypes = require("devtools/client/shared/vendor/react-prop-types"); + +/** + * This component shows the runtime as item in RuntimesPane. + */ +class RuntimeItem extends PureComponent { + static get propTypes() { + return { + icon: PropTypes.string.isRequired, + isSelected: PropTypes.bool.isRequired, + name: PropTypes.string.isRequired, + }; + } + + render() { + const { icon, isSelected, name } = this.props; + + return dom.li( + { + className: "runtime-item" + (isSelected ? " runtime-item--selected" : ""), + }, + dom.img({ + className: "runtime-item__icon" + + (isSelected ? " runtime-item__icon--selected" : ""), + src: icon, + }), + name + ); + } +} + +module.exports = RuntimeItem;
new file mode 100644 --- /dev/null +++ b/devtools/client/aboutdebugging-new/src/components/runtime/moz.build @@ -0,0 +1,8 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +DevToolsModules( + 'RuntimeItem.css', + 'RuntimeItem.js', +)
new file mode 100644 --- /dev/null +++ b/devtools/client/aboutdebugging-new/src/constants.js @@ -0,0 +1,11 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +const actionTypes = { + UPDATE_SELECTED_RUNTIME: "UPDATE_SELECTED_RUNTIME", +}; + +module.exports = Object.assign({}, actionTypes);
new file mode 100644 --- /dev/null +++ b/devtools/client/aboutdebugging-new/src/create-store.js @@ -0,0 +1,18 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +const { createStore } = require("devtools/client/shared/vendor/redux"); + +const rootReducer = require("./reducers/index"); +const { RuntimesState } = require("./reducers/runtimes-state"); + +exports.configureStore = function() { + const initialState = { + runtimes: new RuntimesState(), + }; + + return createStore(rootReducer, initialState); +};
new file mode 100644 --- /dev/null +++ b/devtools/client/aboutdebugging-new/src/moz.build @@ -0,0 +1,15 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +DIRS += [ + 'actions', + 'components', + 'runtimes', + 'reducers', +] + +DevToolsModules( + 'constants.js', + 'create-store.js' +)
new file mode 100644 --- /dev/null +++ b/devtools/client/aboutdebugging-new/src/reducers/index.js @@ -0,0 +1,12 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +const { combineReducers } = require("devtools/client/shared/vendor/redux"); +const { runtimesReducer } = require("./runtimes-state"); + +module.exports = combineReducers({ + runtimes: runtimesReducer, +});
new file mode 100644 --- /dev/null +++ b/devtools/client/aboutdebugging-new/src/reducers/moz.build @@ -0,0 +1,8 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +DevToolsModules( + 'index.js', + 'runtimes-state.js', +)
new file mode 100644 --- /dev/null +++ b/devtools/client/aboutdebugging-new/src/reducers/runtimes-state.js @@ -0,0 +1,33 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +const { + UPDATE_SELECTED_RUNTIME, +} = require("../constants"); + +function RuntimesState() { + return { + selectedRuntime: null, + }; +} + +function runtimesReducer(state = RuntimesState(), action) { + switch (action.type) { + case UPDATE_SELECTED_RUNTIME: { + return Object.assign({}, state, { + selectedRuntime: action.runtime, + }); + } + + default: + return state; + } +} + +module.exports = { + RuntimesState, + runtimesReducer, +};
new file mode 100644 --- /dev/null +++ b/devtools/client/aboutdebugging-new/src/runtimes/moz.build @@ -0,0 +1,8 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +DevToolsModules( + 'runtime.js', + 'this-firefox.js', +)
new file mode 100644 --- /dev/null +++ b/devtools/client/aboutdebugging-new/src/runtimes/runtime.js @@ -0,0 +1,30 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +/** + * This class represents a runtime, such as a remote Firefox. + */ +class Runtime { + /** + * Return icon of this runtime on sidebar. + * Subclass should override this method. + * @return {String} + */ + getIcon() { + throw new Error("Subclass of Runtime should override getIcon()"); + } + + /** + * Return name of this runtime on sidebar. + * Subclass should override this method. + * @return {String} + */ + getName() { + throw new Error("Subclass of Runtime should override getName()"); + } +} + +module.exports = Runtime;
new file mode 100644 --- /dev/null +++ b/devtools/client/aboutdebugging-new/src/runtimes/this-firefox.js @@ -0,0 +1,23 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +const Runtime = require("./runtime"); + +/** + * This class represents the Firefox instance which runs in the same environment that + * opened about:debugging. + */ +class ThisFirefox extends Runtime { + getIcon() { + return "chrome://devtools/skin/images/firefox-logo-glyph.svg"; + } + + getName() { + return "This Firefox"; + } +} + +module.exports = ThisFirefox;
--- a/devtools/client/debugger/test/mochitest/browser2.ini +++ b/devtools/client/debugger/test/mochitest/browser2.ini @@ -395,17 +395,16 @@ skip-if = e10s && debug [browser_dbg_stack-contextmenu-02.js] uses-unsafe-cpows = true subsuite = clipboard skip-if = (e10s && debug) || (os == 'linux' && bits == 32 && debug) # bug 1328915, disable linux32 debug devtools for timeouts [browser_dbg_step-out.js] uses-unsafe-cpows = true skip-if = e10s && debug [browser_dbg_target-scoped-actor-01.js] -skip-if = e10s # TODO [browser_dbg_target-scoped-actor-02.js] skip-if = e10s # TODO [browser_dbg_terminate-on-tab-close.js] uses-unsafe-cpows = true skip-if = e10s && debug [browser_dbg_variables-view-01.js] uses-unsafe-cpows = true skip-if = e10s && debug
--- a/devtools/client/debugger/test/mochitest/browser_dbg_target-scoped-actor-01.js +++ b/devtools/client/debugger/test/mochitest/browser_dbg_target-scoped-actor-01.js @@ -5,63 +5,40 @@ /** * Check target-scoped actor lifetimes. */ const ACTORS_URL = CHROME_URL + "testactors.js"; const TAB_URL = EXAMPLE_URL + "doc_empty-tab-01.html"; -var gClient; +add_task(async function test() { + await addTab(TAB_URL); -function test() { DebuggerServer.init(); DebuggerServer.registerAllActors(); - DebuggerServer.registerModule(ACTORS_URL, { + await registerActorInContentProcess(ACTORS_URL, { prefix: "testOne", constructor: "TestActor1", type: { target: true }, }); - let transport = DebuggerServer.connectPipe(); - gClient = new DebuggerClient(transport); - gClient.connect().then(([aType, aTraits]) => { - is(aType, "browser", - "Root actor should identify itself as a browser."); + const transport = DebuggerServer.connectPipe(); + const client = new DebuggerClient(transport); + const [ type ] = await client.connect(); + is(type, "browser", "Root actor should identify itself as a browser."); - addTab(TAB_URL) - .then(() => attachTargetActorForUrl(gClient, TAB_URL)) - .then(testTargetScopedActor) - .then(closeTab) - .then(() => gClient.close()) - .then(finish) - .catch(aError => { - ok(false, "Got an error: " + aError.message + "\n" + aError.stack); - }); - }); -} + const [ grip ] = await attachTargetActorForUrl(client, TAB_URL); + await testTargetScopedActor(client, grip); + await removeTab(gBrowser.selectedTab); + await client.close(); +}); -function testTargetScopedActor([aGrip, aResponse]) { - let deferred = promise.defer(); - - ok(aGrip.testOneActor, +async function testTargetScopedActor(client, grip) { + ok(grip.testOneActor, "Found the test target-scoped actor."); - ok(aGrip.testOneActor.includes("testOne"), + ok(grip.testOneActor.includes("testOne"), "testOneActor's actorPrefix should be used."); - gClient.request({ to: aGrip.testOneActor, type: "ping" }, aResponse => { - is(aResponse.pong, "pong", - "Actor should respond to requests."); - - deferred.resolve(); - }); - - return deferred.promise; + const response = await client.request({ to: grip.testOneActor, type: "ping" }); + is(response.pong, "pong", "Actor should respond to requests."); } - -function closeTab() { - return removeTab(gBrowser.selectedTab); -} - -registerCleanupFunction(function () { - gClient = null; -});
--- a/devtools/client/inspector/markup/test/browser.ini +++ b/devtools/client/inspector/markup/test/browser.ini @@ -174,16 +174,17 @@ subsuite = clipboard [browser_markup_shadowdom_hover.js] [browser_markup_shadowdom_maxchildren.js] [browser_markup_shadowdom_mutations_shadow.js] [browser_markup_shadowdom_navigation.js] [browser_markup_shadowdom_nested_pick_inspect.js] [browser_markup_shadowdom_noslot.js] [browser_markup_shadowdom_open_debugger.js] [browser_markup_shadowdom_shadowroot_mode.js] +[browser_markup_shadowdom_show_nodes_button.js] [browser_markup_shadowdom_slotupdate.js] [browser_markup_tag_delete_whitespace_node.js] [browser_markup_tag_edit_01.js] [browser_markup_tag_edit_02.js] [browser_markup_tag_edit_03.js] [browser_markup_tag_edit_04-backspace.js] [browser_markup_tag_edit_04-delete.js] [browser_markup_tag_edit_05.js]
new file mode 100644 --- /dev/null +++ b/devtools/client/inspector/markup/test/browser_markup_shadowdom_show_nodes_button.js @@ -0,0 +1,52 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +// Test that the "Show all 'N' nodes" button displays the proper value + +const NODE_COUNT = 101; +const TEST_URL = `data:text/html;charset=utf-8, + <test-component> + </test-component> + + <script> + 'use strict'; + for (let i = 0; i < ${NODE_COUNT}; i++) { + const div = document.createElement("div"); + div.innerHTML = i; + document.querySelector('test-component').appendChild(div); + } + customElements.define('test-component', class extends HTMLElement { + constructor() { + super(); + let shadowRoot = this.attachShadow({mode: 'open'}); + shadowRoot.innerHTML = '<slot></slot>'; + } + }); + </script>`; + +add_task(async function() { + await enableWebComponents(); + + const { inspector } = await openInspectorForURL(TEST_URL); + const { markup } = inspector; + + info("Find and expand the component shadow DOM host."); + const hostFront = await getNodeFront("test-component", inspector); + const hostContainer = markup.getContainer(hostFront); + await expandContainer(inspector, hostContainer); + const shadowRootContainer = hostContainer.getChildContainers()[0]; + await expandContainer(inspector, shadowRootContainer); + + info("Expand the slot"); + const slotContainer = shadowRootContainer.getChildContainers()[0]; + await expandContainer(inspector, slotContainer); + + info("Find the 'Show all nodes' button"); + const button = slotContainer.elt.querySelector("button"); + console.log(button); + ok(button.innerText.includes(NODE_COUNT), + "'Show all nodes' button contains correct node count"); +}); +
--- a/devtools/client/jar.mn +++ b/devtools/client/jar.mn @@ -83,16 +83,19 @@ devtools.jar: content/framework/connect/connect.css (framework/connect/connect.css) content/framework/connect/connect.js (framework/connect/connect.js) content/shared/widgets/graphs-frame.xhtml (shared/widgets/graphs-frame.xhtml) content/shared/widgets/cubic-bezier.css (shared/widgets/cubic-bezier.css) content/shared/widgets/filter-widget.css (shared/widgets/filter-widget.css) content/shared/widgets/spectrum.css (shared/widgets/spectrum.css) content/aboutdebugging/aboutdebugging.xhtml (aboutdebugging/aboutdebugging.xhtml) content/aboutdebugging/aboutdebugging.css (aboutdebugging/aboutdebugging.css) + content/aboutdebugging-new/index.html (aboutdebugging-new/index.html) + content/aboutdebugging-new/aboutdebugging.css (aboutdebugging-new/aboutdebugging.css) + content/aboutdebugging-new/aboutdebugging.js (aboutdebugging-new/aboutdebugging.js) content/responsive.html/index.xhtml (responsive.html/index.xhtml) content/dom/index.html (dom/index.html) content/dom/main.js (dom/main.js) content/accessibility/index.html (accessibility/index.html) content/accessibility/main.js (accessibility/main.js) % skin devtools classic/1.0 %skin/ skin/devtools-browser.css (themes/devtools-browser.css) skin/dark-theme.css (themes/dark-theme.css) @@ -100,16 +103,17 @@ devtools.jar: skin/toolbars.css (themes/toolbars.css) skin/toolbox.css (themes/toolbox.css) skin/tooltips.css (themes/tooltips.css) skin/images/accessibility.svg (themes/images/accessibility.svg) skin/images/add.svg (themes/images/add.svg) skin/images/breadcrumbs-divider.svg (themes/images/breadcrumbs-divider.svg) skin/images/filters.svg (themes/images/filters.svg) skin/images/filter-swatch.svg (themes/images/filter-swatch.svg) + skin/images/firefox-logo-glyph.svg (themes/images/firefox-logo-glyph.svg) skin/images/fox-smiling.svg (themes/images/fox-smiling.svg) skin/images/grid.svg (themes/images/grid.svg) skin/images/angle-swatch.svg (themes/images/angle-swatch.svg) skin/images/pseudo-class.svg (themes/images/pseudo-class.svg) skin/images/controls.png (themes/images/controls.png) skin/images/controls@2x.png (themes/images/controls@2x.png) skin/images/copy.svg (themes/images/copy.svg) skin/images/animation-fast-track.svg (themes/images/animation-fast-track.svg)
--- a/devtools/client/memory/app.js +++ b/devtools/client/memory/app.js @@ -50,17 +50,31 @@ const { resizeShortestPaths } = require( const Toolbar = createFactory(require("./components/Toolbar")); const List = createFactory(require("./components/List")); const SnapshotListItem = createFactory(require("./components/SnapshotListItem")); const Heap = createFactory(require("./components/Heap")); const { app: appModel } = require("./models"); class MemoryApp extends Component { static get propTypes() { - return appModel; + return { + allocations: appModel.allocations, + censusDisplay: appModel.censusDisplay, + diffing: appModel.diffing, + dispatch: appModel.dispatch, + filter: appModel.filter, + front: appModel.front, + heapWorker: appModel.heapWorker, + individuals: appModel.individuals, + labelDisplay: appModel.labelDisplay, + sizes: appModel.sizes, + snapshots: appModel.snapshots, + toolbox: appModel.toolbox, + view: appModel.view, + }; } static get childContextTypes() { return { front: PropTypes.any, heapWorker: PropTypes.any, toolbox: PropTypes.any, };
--- a/devtools/client/moz.build +++ b/devtools/client/moz.build @@ -3,16 +3,17 @@ # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. include('../templates.mozbuild') DIRS += [ 'aboutdebugging', + 'aboutdebugging-new', 'accessibility', 'application', 'canvasdebugger', 'commandline', 'debugger', 'dom', 'framework', 'inspector',
--- a/devtools/client/preferences/devtools-client.js +++ b/devtools/client/preferences/devtools-client.js @@ -308,14 +308,17 @@ pref("devtools.editor.autocomplete", tru // Whether to reload when touch simulation is toggled pref("devtools.responsive.reloadConditions.touchSimulation", false); // Whether to reload when user agent is changed pref("devtools.responsive.reloadConditions.userAgent", false); // Whether to show the notification about reloading to apply emulation pref("devtools.responsive.reloadNotification.enabled", true); +// Enable new about:debugging. +pref("devtools.aboutdebugging.new-enabled", false); + // about:debugging: only show system add-ons in local builds by default. #ifdef MOZILLA_OFFICIAL pref("devtools.aboutdebugging.showSystemAddons", false); #else pref("devtools.aboutdebugging.showSystemAddons", true); #endif
--- a/devtools/client/shared/components/tree/TreeView.js +++ b/devtools/client/shared/components/tree/TreeView.js @@ -129,61 +129,16 @@ define(function(require, exports, module })) }; } static get defaultProps() { return defaultProps; } - constructor(props) { - super(props); - - this.state = { - expandedNodes: props.expandedNodes, - columns: ensureDefaultColumn(props.columns), - selected: props.selected, - lastSelectedIndex: 0 - }; - - this.toggle = this.toggle.bind(this); - this.isExpanded = this.isExpanded.bind(this); - this.onKeyDown = this.onKeyDown.bind(this); - this.onClickRow = this.onClickRow.bind(this); - this.getSelectedRow = this.getSelectedRow.bind(this); - this.selectRow = this.selectRow.bind(this); - this.isSelected = this.isSelected.bind(this); - this.onFilter = this.onFilter.bind(this); - this.onSort = this.onSort.bind(this); - this.getMembers = this.getMembers.bind(this); - this.renderRows = this.renderRows.bind(this); - } - - componentWillReceiveProps(nextProps) { - const { expandedNodes, selected } = nextProps; - const state = { - expandedNodes, - lastSelectedIndex: this.getSelectedRowIndex() - }; - - if (selected) { - state.selected = selected; - } - - this.setState(Object.assign({}, this.state, state)); - } - - componentDidUpdate() { - const selected = this.getSelectedRow(); - if (!selected && this.rows.length > 0) { - this.selectRow(this.rows[ - Math.min(this.state.lastSelectedIndex, this.rows.length - 1)]); - } - } - static subPath(path, subKey) { return path + "/" + String(subKey).replace(/[\\/]/g, "\\$&"); } /** * Creates a set with the paths of the nodes that should be expanded by default * according to the passed options. * @param {Object} The root node of the tree. @@ -221,16 +176,61 @@ define(function(require, exports, module path: nodePath }); } } } return expandedNodes; } + constructor(props) { + super(props); + + this.state = { + expandedNodes: props.expandedNodes, + columns: ensureDefaultColumn(props.columns), + selected: props.selected, + lastSelectedIndex: 0 + }; + + this.toggle = this.toggle.bind(this); + this.isExpanded = this.isExpanded.bind(this); + this.onKeyDown = this.onKeyDown.bind(this); + this.onClickRow = this.onClickRow.bind(this); + this.getSelectedRow = this.getSelectedRow.bind(this); + this.selectRow = this.selectRow.bind(this); + this.isSelected = this.isSelected.bind(this); + this.onFilter = this.onFilter.bind(this); + this.onSort = this.onSort.bind(this); + this.getMembers = this.getMembers.bind(this); + this.renderRows = this.renderRows.bind(this); + } + + componentWillReceiveProps(nextProps) { + const { expandedNodes, selected } = nextProps; + const state = { + expandedNodes, + lastSelectedIndex: this.getSelectedRowIndex() + }; + + if (selected) { + state.selected = selected; + } + + this.setState(Object.assign({}, this.state, state)); + } + + componentDidUpdate() { + const selected = this.getSelectedRow(); + if (!selected && this.rows.length > 0) { + this.selectRow(this.rows[ + Math.min(this.state.lastSelectedIndex, this.rows.length - 1)]); + } + } + // Node expand/collapse toggle(nodePath) { const nodes = this.state.expandedNodes; if (this.isExpanded(nodePath)) { nodes.delete(nodePath); } else { nodes.add(nodePath);
--- a/devtools/client/shared/test/shared-head.js +++ b/devtools/client/shared/test/shared-head.js @@ -725,8 +725,37 @@ async function injectEventUtilsInContent /** * Temporarily flip all the preferences needed to enable web components. */ async function enableWebComponents() { await pushPref("dom.webcomponents.shadowdom.enabled", true); await pushPref("dom.webcomponents.customelements.enabled", true); } + +/* + * Register an actor in the content process of the current tab. + * + * Calling DebuggerServer.registerModule only registers the actor in the current process. + * As all test scripts are ran in the parent process, it is only registered here. + * This function helps register them in the content process used for the current tab. + * + * @param {string} url + * Actor module URL or absolute require path + * @param {json} options + * Arguments to be passed to DebuggerServer.registerModule + */ +async function registerActorInContentProcess(url, options) { + function convertChromeToFile(uri) { + return Cc["@mozilla.org/chrome/chrome-registry;1"] + .getService(Ci.nsIChromeRegistry) + .convertChromeURL(Services.io.newURI(uri)).spec; + } + // chrome://mochitests URI is registered only in the parent process, so convert these + // URLs to file:// one in order to work in the content processes + url = url.startsWith("chrome://mochitests") ? convertChromeToFile(url) : url; + return ContentTask.spawn(gBrowser.selectedBrowser, { url, options }, args => { + // eslint-disable-next-line no-shadow + const { require } = ChromeUtils.import("resource://devtools/shared/Loader.jsm", {}); + const { DebuggerServer } = require("devtools/server/main"); + DebuggerServer.registerModule(args.url, args.options); + }); +}
new file mode 100644 --- /dev/null +++ b/devtools/client/themes/images/firefox-logo-glyph.svg @@ -0,0 +1,7 @@ +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> +<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> + <path fill="context-fill" + d="M31.359,14.615h0c-.044-.289-.088-.459-.088-.459s-.113.131-.3.378A10.77,10.77,0,0,0,30.6,12.5a13.846,13.846,0,0,0-.937-2.411,10.048,10.048,0,0,0-.856-1.468q-.176-.263-.359-.51c-.57-.931-1.224-1.5-1.981-2.576a7.806,7.806,0,0,1-.991-2.685A10.844,10.844,0,0,0,25,4.607c-.777-.784-1.453-1.341-1.861-1.721C21.126,1.006,21.36.031,21.36.031h0S17.6,4.228,19.229,8.6a8.4,8.4,0,0,0,2.8,3.733c1.576,1.3,3.273,2.323,4.168,4.937a8.377,8.377,0,0,0-3.144-3.317,7.573,7.573,0,0,1,.6,3,7.124,7.124,0,0,1-8.711,6.94,6.561,6.561,0,0,1-1.765-.6,7.183,7.183,0,0,1-2.115-1.955l-.01-.017.126.046a6.5,6.5,0,0,0,.9.241,5.628,5.628,0,0,0,3.583-.423c1.126-.625,1.808-1.088,2.361-.905l.01,0c.54.172.966-.352.58-.9a2.94,2.94,0,0,0-2.848-1.112c-1.127.164-2.16.965-3.637.189a3.129,3.129,0,0,1-.277-.163c-.1-.057.317.087.22.022a7.33,7.33,0,0,1-.928-.554c-.022-.018.223.07.2.052a3.581,3.581,0,0,1-.968-.979,1.741,1.741,0,0,1-.066-1.554,1.371,1.371,0,0,1,.6-.564c.191.094.309.165.309.165s-.087-.16-.134-.244c.017-.006.032,0,.049-.011.167.072.537.26.732.375a1.016,1.016,0,0,1,.335.3s.067-.033.017-.173a.9.9,0,0,0-.346-.424l.016,0a2.94,2.94,0,0,1,.426.265,2.079,2.079,0,0,0,.17-.9,1.178,1.178,0,0,0-.069-.5c-.053-.1.03-.14.123-.035a.976.976,0,0,0-.079-.238v-.008h0s.053-.069.077-.094a1.43,1.43,0,0,1,.216-.176,9.973,9.973,0,0,1,1.465-.747c.414-.181.757-.319.827-.359a2.3,2.3,0,0,0,.293-.225,1.968,1.968,0,0,0,.66-1.14,1.6,1.6,0,0,0,.017-.178v-.05l0-.03v0l0-.012v0l0-.013h0c-.06-.225-.448-.394-2.476-.584a1.773,1.773,0,0,1-1.45-1.36l0,.009c-.029.074-.055.149-.081.225.026-.075.052-.15.081-.225l0-.016a5.138,5.138,0,0,1,1.986-2.466c.052-.042-.208.011-.156-.032a5.156,5.156,0,0,1,.53-.224c.091-.038-.39-.222-.815-.177a2.2,2.2,0,0,0-.756.178c.1-.086.4-.2.329-.2a4.865,4.865,0,0,0-1.542.583.314.314,0,0,1,.03-.14,2.4,2.4,0,0,0-.964.744,1.275,1.275,0,0,0,.01-.174,2.876,2.876,0,0,0-.473.444l-.009.007a6.285,6.285,0,0,0-3.517-.3l-.01-.009.012,0a2.943,2.943,0,0,1-.625-.7L6.1,5.852,6.081,5.83c-.077-.114-.156-.243-.237-.387-.058-.1-.117-.217-.176-.338,0-.008-.009-.011-.013-.012-.024,0-.041.111-.061.082l0-.006a4.308,4.308,0,0,1-.283-1.687l-.016.008a1.884,1.884,0,0,0-.714.934c-.061.137-.1.212-.14.287,0,.006,0-.01,0-.035.009-.069.039-.211.032-.2s-.012.019-.019.029a1.733,1.733,0,0,0-.251.372,2.355,2.355,0,0,0-.15.382c-.006.021,0-.018,0-.064s.009-.128,0-.111l-.022.043a9.5,9.5,0,0,0-.8,3.035A3.022,3.022,0,0,0,3.2,8.7v.016a6.628,6.628,0,0,0-.817,1.1,15.606,15.606,0,0,0-1.727,4.23,10.351,10.351,0,0,1,.925-1.621,15,15,0,0,0-1.045,5.5,14.233,14.233,0,0,1,.45-1.629A13.807,13.807,0,0,0,2.234,22.76a15.037,15.037,0,0,0,5.951,6.748h0a13.016,13.016,0,0,0,3.468,1.662c.162.059.326.117.494.173-.053-.021-.1-.044-.153-.067a15.7,15.7,0,0,0,4.5.662c5.394,0,7.175-2.054,7.339-2.259h0a2.73,2.73,0,0,0,.637-.856h0q.156-.064.315-.137l.067-.03.121-.057a11.312,11.312,0,0,0,2.277-1.426,5.5,5.5,0,0,0,2.123-3.1h0a1.938,1.938,0,0,0,.029-1.428q.083-.131.171-.28a12.706,12.706,0,0,0,1.907-6.181v-.006c0-.059,0-.118,0-.177A7.731,7.731,0,0,0,31.359,14.615Z"/> +</svg>
new file mode 100644 --- /dev/null +++ b/devtools/client/webconsole/middleware/event-telemetry.js @@ -0,0 +1,80 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +const { + FILTER_TEXT_SET, + FILTER_TOGGLE, + DEFAULT_FILTERS_RESET, +} = require("devtools/client/webconsole/constants"); + +/** + * Event telemetry middleware is responsible for logging specific events to telemetry. + */ +function eventTelemetryMiddleware(telemetry, sessionId, store) { + return next => action => { + const oldState = store.getState(); + const res = next(action); + if (!sessionId) { + return res; + } + + const state = store.getState(); + + const filterChangeActions = [ + FILTER_TEXT_SET, + FILTER_TOGGLE, + DEFAULT_FILTERS_RESET, + ]; + + if (filterChangeActions.includes(action.type)) { + filterChange({ + action, + state, + oldState, + telemetry, + sessionId + }); + } + + return res; + }; +} + +function filterChange({action, state, oldState, telemetry, sessionId}) { + const oldFilterState = oldState.filters; + const filterState = state.filters; + const activeFilters = []; + const inactiveFilters = []; + for (const [key, value] of Object.entries(filterState)) { + if (value) { + activeFilters.push(key); + } else { + inactiveFilters.push(key); + } + } + + let trigger; + if (action.type === FILTER_TOGGLE) { + trigger = action.filter; + } else if (action.type === DEFAULT_FILTERS_RESET) { + trigger = "reset"; + } else if (action.type === FILTER_TEXT_SET) { + if (oldFilterState.text !== "" && filterState.text !== "") { + return; + } + + trigger = "text"; + } + + telemetry.recordEvent("devtools.main", "filters_changed", "webconsole", null, { + "trigger": trigger, + "active": activeFilters.join(","), + "inactive": inactiveFilters.join(","), + "session_id": sessionId + }); +} + +module.exports = eventTelemetryMiddleware;
--- a/devtools/client/webconsole/middleware/moz.build +++ b/devtools/client/webconsole/middleware/moz.build @@ -1,9 +1,10 @@ # vim: set filetype=python: # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. DevToolsModules( + 'event-telemetry.js', 'history-persistence.js', 'thunk.js', )
--- a/devtools/client/webconsole/store.js +++ b/devtools/client/webconsole/store.js @@ -18,16 +18,17 @@ const { // Prefs const { PREFS } = require("devtools/client/webconsole/constants"); const { getPrefsService } = require("devtools/client/webconsole/utils/prefs"); // Reducers const { reducers } = require("./reducers/index"); // Middleware +const eventTelemetry = require("./middleware/event-telemetry"); const historyPersistence = require("./middleware/history-persistence"); const thunk = require("./middleware/thunk"); // Enhancers const enableBatching = require("./enhancers/batching"); const enableActorReleaser = require("./enhancers/actor-releaser"); const ensureCSSErrorReportingEnabled = require("./enhancers/css-error-reporting"); const enableNetProvider = require("./enhancers/net-provider"); @@ -73,16 +74,17 @@ function configureStore(hud, options = { persistLogs: getBoolPref(PREFS.UI.PERSIST), }) }; // Prepare middleware. const middleware = applyMiddleware( thunk.bind(null, {prefsService}), historyPersistence, + eventTelemetry.bind(null, options.telemetry, options.sessionId), ); return createStore( createRootReducer(), initialState, compose( middleware, enableActorReleaser(hud),
--- a/devtools/client/webconsole/test/helpers.js +++ b/devtools/client/webconsole/test/helpers.js @@ -6,16 +6,17 @@ const reduxActions = require("devtools/client/webconsole/actions/index"); const { configureStore } = require("devtools/client/webconsole/store"); const { IdGenerator } = require("devtools/client/webconsole/utils/id-generator"); const { stubPackets } = require("devtools/client/webconsole/test/fixtures/stubs/index"); const { getAllMessagesById } = require("devtools/client/webconsole/selectors/messages"); const { getPrefsService } = require("devtools/client/webconsole/utils/prefs"); const prefsService = getPrefsService({}); const { PREFS } = require("devtools/client/webconsole/constants"); +const Telemetry = require("devtools/client/shared/telemetry"); /** * Prepare actions for use in testing. */ function setupActions() { // Some actions use dependency injection. This helps them avoid using state in // a hard-to-test way. We need to inject stubbed versions of these dependencies. const wrappedActions = Object.assign({}, reduxActions); @@ -30,33 +31,37 @@ function setupActions() { messagesAdd: packets => reduxActions.messagesAdd(packets, idGenerator) }; } /** * Prepare the store for use in testing. */ function setupStore(input = [], { - storeOptions, + storeOptions = {}, actions, hud, } = {}) { if (!hud) { hud = { proxy: { releaseActor: () => {}, target: { activeTab: { ensureCSSErrorReportingEnabled: () => {} } }, }, }; } - const store = configureStore(hud, storeOptions); + const store = configureStore(hud, { + ...storeOptions, + sessionId: -1, + telemetry: new Telemetry(), + }); // Add the messages from the input commands to the store. const messagesAdd = actions ? actions.messagesAdd : reduxActions.messagesAdd; store.dispatch(messagesAdd(input.map(cmd => stubPackets.get(cmd)))); return store;
--- a/devtools/client/webconsole/test/mocha-test-setup.js +++ b/devtools/client/webconsole/test/mocha-test-setup.js @@ -70,17 +70,19 @@ requireHacker.global_hook("default", (pa return `module.exports = require("devtools-modules/src/Services")`; case "devtools/shared/client/object-client": case "devtools/shared/client/long-string-client": return `() => {}`; case "devtools/client/netmonitor/src/components/TabboxPanel": case "devtools/client/webconsole/utils/context-menu": return "{}"; case "devtools/client/shared/telemetry": - return `module.exports = function() {}`; + return `module.exports = function() { + this.recordEvent = () => {}; + }`; case "devtools/shared/event-emitter": return `module.exports = require("devtools-modules/src/utils/event-emitter")`; case "devtools/client/shared/unicode-url": return `module.exports = require("devtools-modules/src/unicode-url")`; } // We need to rewrite all the modules assuming the root is mozilla-central and give them // an absolute path.
--- a/devtools/client/webconsole/test/mochitest/browser.ini +++ b/devtools/client/webconsole/test/mochitest/browser.ini @@ -357,16 +357,17 @@ skip-if = verify [browser_webconsole_split_close_button.js] [browser_webconsole_split_escape_key.js] [browser_webconsole_split_focus.js] [browser_webconsole_split_persist.js] [browser_webconsole_stacktrace_location_debugger_link.js] [browser_webconsole_stacktrace_location_scratchpad_link.js] [browser_webconsole_strict_mode_errors.js] [browser_webconsole_string.js] +[browser_webconsole_telemetry_filters_changed.js] [browser_webconsole_time_methods.js] [browser_webconsole_timestamps.js] [browser_webconsole_trackingprotection_errors.js] tags = trackingprotection [browser_webconsole_view_source.js] [browser_webconsole_visibility_messages.js] [browser_webconsole_warn_about_replaced_api.js] [browser_webconsole_websocket.js]
new file mode 100644 --- /dev/null +++ b/devtools/client/webconsole/test/mochitest/browser_webconsole_telemetry_filters_changed.js @@ -0,0 +1,99 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* vim: set ft=javascript ts=2 et sw=2 tw=80: */ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +// Tests the filters_changed telemetry event. + +"use strict"; + +const TEST_URI = `data:text/html,<meta charset=utf8><script> + console.log("test message"); +</script>`; + +const OPTOUT = Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTOUT; + +add_task(async function() { + // Let's reset the counts. + Services.telemetry.clearEvents(); + + // Ensure no events have been logged + const snapshot = Services.telemetry.snapshotEvents(OPTOUT, true); + ok(!snapshot.parent, "No events have been logged for the main process"); + + const hud = await openNewTabAndConsole(TEST_URI); + + info("Click on the 'log' filter"); + await setFilterState(hud, { + log: false + }); + + checkTelemetryEvent({ + trigger: "log", + active: "error,warn,info,debug", + inactive: "text,log,css,net,netxhr", + }); + + info("Click on the 'netxhr' filter"); + await setFilterState(hud, { + netxhr: true + }); + + checkTelemetryEvent({ + trigger: "netxhr", + active: "error,warn,info,debug,netxhr", + inactive: "text,log,css,net", + }); + + info("Filter the output using the text filter input"); + hud.ui.filterBox.focus(); + hud.ui.filterBox.select(); + EventUtils.sendString("no match"); + + checkTelemetryEvent({ + trigger: "text", + active: "text,error,warn,info,debug,netxhr", + inactive: "log,css,net", + }); + + info("Clear the filters using the 'Reset filters' button"); + const resetButton = await waitFor(() => + hud.ui.window.document.querySelector(".reset-filters-button")); + const onResetButtonHidden = waitFor(() => + !hud.ui.window.document.querySelector(".reset-filters-button")); + resetButton.click(); + await onResetButtonHidden; + + checkTelemetryEvent({ + trigger: "reset", + active: "error,warn,log,info,debug,netxhr", + inactive: "text,css,net", + }); +}); + +function checkTelemetryEvent(expectedEvent) { + const events = getFiltersChangedEventsExtra(); + is(events.length, 1, "There was only 1 event logged"); + const [event] = events; + ok(event.session_id > 0, "There is a valid session_id in the logged event"); + const f = e => JSON.stringify(e, null, 2); + is(f(event), f({ + ...expectedEvent, + "session_id": event.session_id + }), "The event has the expected data"); +} + +function getFiltersChangedEventsExtra() { + // Retrieve and clear telemetry events. + const snapshot = Services.telemetry.snapshotEvents(OPTOUT, true); + + const filtersChangedEvents = snapshot.parent.filter(event => + event[1] === "devtools.main" && + event[2] === "filters_changed" && + event[3] === "webconsole" + ); + + // Since we already know we have the correct event, we only return the `extra` field + // that was passed to it (which is event[5] here). + return filtersChangedEvents.map(event => event[5]); +}
--- a/devtools/client/webconsole/webconsole-output-wrapper.js +++ b/devtools/client/webconsole/webconsole-output-wrapper.js @@ -32,17 +32,21 @@ function WebConsoleOutputWrapper(parentN this.queuedMessageAdds = []; this.queuedMessageUpdates = []; this.queuedRequestUpdates = []; this.throttledDispatchPromise = null; this.telemetry = new Telemetry(); - store = configureStore(this.hud); + store = configureStore(this.hud, { + // We may not have access to the toolbox (e.g. in the browser console). + sessionId: this.toolbox && this.toolbox.sessionId || -1, + telemetry: this.telemetry, + }); } WebConsoleOutputWrapper.prototype = { init: function() { return new Promise((resolve) => { const attachRefToHud = (id, node) => { this.hud[id] = node; };
--- a/devtools/server/actors/inspector/node.js +++ b/devtools/server/actors/inspector/node.js @@ -199,17 +199,18 @@ const NodeActor = protocol.ActorClassWit const hasSVGDocument = rawNode.getSVGDocument && rawNode.getSVGDocument(); if (numChildren === 0 && (hasContentDocument || hasSVGDocument)) { // This might be an iframe with virtual children. numChildren = 1; } // Normal counting misses ::before/::after. Also, some anonymous children // may ultimately be skipped, so we have to consult with the walker. - if (numChildren === 0 || hasAnonChildren || isShadowHost(this.rawNode)) { + if (numChildren === 0 || hasAnonChildren || isShadowHost(this.rawNode) || + isShadowAnonymous(this.rawNode)) { numChildren = this.walker.countChildren(this); } return numChildren; }, get computedStyle() { if (!this._computedStyle) {
--- a/devtools/server/main.js +++ b/devtools/server/main.js @@ -873,25 +873,27 @@ var DebuggerServer = { // Get messageManager from XUL browser (which might be a specialized tunnel for RDM) // or else fallback to asking the frameLoader itself. let mm = frame.messageManager || frame.frameLoader.messageManager; mm.loadFrameScript("resource://devtools/server/startup/frame.js", false); const trackMessageManager = () => { frame.addEventListener("DevTools:BrowserSwap", onBrowserSwap); mm.addMessageListener("debug:setup-in-parent", onSetupInParent); + mm.addMessageListener("debug:spawn-actor-in-parent", onSpawnActorInParent); if (!actor) { mm.addMessageListener("debug:actor", onActorCreated); } DebuggerServer._childMessageManagers.add(mm); }; const untrackMessageManager = () => { frame.removeEventListener("DevTools:BrowserSwap", onBrowserSwap); mm.removeMessageListener("debug:setup-in-parent", onSetupInParent); + mm.removeMessageListener("debug:spawn-actor-in-parent", onSpawnActorInParent); if (!actor) { mm.removeMessageListener("debug:actor", onActorCreated); } DebuggerServer._childMessageManagers.delete(mm); }; let actor, childTransport; const prefix = connection.allocID("child"); @@ -927,25 +929,74 @@ var DebuggerServer = { "Exception during actor module setup running in the parent process: "; DevToolsUtils.reportException(errorMessage + e); dumpn(`ERROR: ${errorMessage}\n\t module: '${module}'\n\t ` + `setupParent: '${setupParent}'\n${DevToolsUtils.safeErrorString(e)}`); return false; } }; + const onSpawnActorInParent = function(msg) { + // We may have multiple connectToFrame instance running for the same tab + // and need to filter the messages. + if (msg.json.prefix != connPrefix) { + return; + } + + const { module, constructor, args, spawnedByActorID } = msg.json; + let m; + + try { + m = require(module); + + if (!(constructor in m)) { + dump(`ERROR: module '${module}' does not export '${constructor}'`); + return; + } + + const Constructor = m[constructor]; + // Bind the actor to parent process connection so that these actors + // directly communicates with the client as regular actors instanciated from + // parent process + const instance = new Constructor(connection, ...args, mm); + instance.conn = connection; + instance.parentID = spawnedByActorID; + + // Manually set the actor ID in order to insert parent actorID as prefix + // in order to help identifying actor hiearchy via actor IDs. + // Remove `/` as it may confuse message forwarding between processes. + const contentPrefix = spawnedByActorID.replace(connection.prefix, "") + .replace("/", "-"); + instance.actorID = connection.allocID(contentPrefix + "/" + instance.typeName); + connection.addActor(instance); + + mm.sendAsyncMessage("debug:spawn-actor-in-parent:actor", { + prefix: connPrefix, + actorID: instance.actorID + }); + } catch (e) { + const errorMessage = + "Exception during actor module setup running in the parent process: "; + DevToolsUtils.reportException(errorMessage + e + "\n" + e.stack); + dumpn(`ERROR: ${errorMessage}\n\t module: '${module}'\n\t ` + + `constructor: '${constructor}'\n${DevToolsUtils.safeErrorString(e)}`); + } + }; + const onActorCreated = DevToolsUtils.makeInfallible(function(msg) { if (msg.json.prefix != prefix) { return; } mm.removeMessageListener("debug:actor", onActorCreated); // Pipe Debugger message from/to parent/child via the message manager childTransport = new ChildDebuggerTransport(mm, prefix); childTransport.hooks = { + // Pipe all the messages from content process actors back to the client + // through the parent process connection. onPacket: connection.send.bind(connection), onClosed() {} }; childTransport.ready(); connection.setForwarding(prefix, childTransport); dumpn(`Start forwarding for frame with prefix ${prefix}`); @@ -1335,16 +1386,17 @@ function DebuggerServerConnection(prefix /* * We can forward packets to other servers, if the actors on that server * all use a distinct prefix on their names. This is a map from prefixes * to transports: it maps a prefix P to a transport T if T conveys * packets to the server whose actors' names all begin with P + "/". */ this._forwardingPrefixes = new Map(); } +exports.DebuggerServerConnection = DebuggerServerConnection; DebuggerServerConnection.prototype = { _prefix: null, get prefix() { return this._prefix; }, _transport: null, @@ -1804,9 +1856,54 @@ DebuggerServerConnection.prototype = { const { sendSyncMessage } = this.parentMessageManager; return sendSyncMessage("debug:setup-in-parent", { prefix: this.prefix, module: module, setupParent: setupParent }); }, + + /** + * Instanciates a protocol.js actor in the parent process, from the content process + * module is the absolute path to protocol.js actor module + * + * @param spawnByActorID string + * The actor ID of the actor that is requesting an actor to be created. + * This is used as a prefix to compute the actor id of the actor created + * in the parent process. + * @param module string + * Absolute path for the actor module to load. + * @param constructor string + * The symbol exported by this module that implements Actor. + * @param args array + * Arguments to pass to its constructor + */ + spawnActorInParentProcess(spawnedByActorID, { module, constructor, args }) { + if (!this.parentMessageManager) { + return null; + } + + const { addMessageListener, removeMessageListener, sendAsyncMessage } = + this.parentMessageManager; + + const onResponse = new Promise(done => { + const listener = msg => { + if (msg.json.prefix != this.prefix) { + return; + } + removeMessageListener("debug:spawn-actor-in-parent:actor", listener); + done(msg.json.actorID); + }; + addMessageListener("debug:spawn-actor-in-parent:actor", listener); + }); + + sendAsyncMessage("debug:spawn-actor-in-parent", { + prefix: this.prefix, + module, + constructor, + args, + spawnedByActorID, + }); + + return onResponse; + } };
--- a/devtools/server/tests/browser/browser.ini +++ b/devtools/server/tests/browser/browser.ini @@ -17,16 +17,17 @@ support-files = navigate-second.html storage-cookies-same-name.html storage-dynamic-windows.html storage-listings.html storage-unsecured-iframe.html storage-updates.html storage-secured-iframe.html stylesheets-nested-iframes.html + test-spawn-actor-in-parent.js timeline-iframe-child.html timeline-iframe-parent.html storage-helpers.js !/devtools/client/shared/test/shared-head.js !/devtools/client/shared/test/telemetry-test-helpers.js !/devtools/server/tests/mochitest/hello-actor.js [browser_accessibility_node.js] @@ -74,29 +75,29 @@ skip-if = e10s # Bug 1183605 - devtools/ [browser_markers-styles.js] [browser_markers-timestamp.js] [browser_navigateEvents.js] [browser_perf-01.js] [browser_perf-02.js] [browser_perf-03.js] [browser_perf-04.js] [browser_perf-allocation-data.js] -skip-if = e10s # Bug 1183605 - devtools/server/tests/browser/ tests are still disabled in E10S [browser_perf-profiler-01.js] [browser_perf-profiler-02.js] skip-if = true # Needs to be updated for async actor destruction [browser_perf-profiler-03.js] skip-if = true # Needs to be updated for async actor destruction [browser_perf-realtime-markers.js] [browser_perf-recording-actor-01.js] skip-if = e10s # Bug 1183605 - devtools/server/tests/browser/ tests are still disabled in E10S [browser_perf-recording-actor-02.js] skip-if = e10s # Bug 1183605 - devtools/server/tests/browser/ tests are still disabled in E10S [browser_perf-samples-01.js] [browser_perf-samples-02.js] +[browser_spawn_actor_in_parent.js] [browser_storage_browser_toolbox_indexeddb.js] [browser_storage_cookies-duplicate-names.js] [browser_storage_dynamic_windows.js] [browser_storage_listings.js] [browser_storage_updates.js] skip-if = (verify && debug && (os == 'mac' || os == 'linux')) [browser_stylesheets_getTextEmpty.js] [browser_stylesheets_nested-iframes.js]
new file mode 100644 --- /dev/null +++ b/devtools/server/tests/browser/browser_spawn_actor_in_parent.js @@ -0,0 +1,48 @@ +/* vim: set ft=javascript ts=2 et sw=2 tw=80: */ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +// Test DebuggerServerConnection.spawnActorInParentProcess. +// This test instanciates a first test actor "InContentActor" that uses +// spawnActorInParentProcess to instanciate the second test actor "InParentActor" + +const ACTOR_URL = "chrome://mochitests/content/browser/devtools/server/tests/browser/test-spawn-actor-in-parent.js"; + +const { InContentFront, InParentFront } = require(ACTOR_URL); + +add_task(async function() { + await addTab("data:text/html;charset=utf-8,foo"); + + info("Register target-scoped actor in the content process"); + await registerActorInContentProcess(ACTOR_URL, { + prefix: "inContent", + constructor: "InContentActor", + type: { target: true }, + }); + + initDebuggerServer(); + const client = new DebuggerClient(DebuggerServer.connectPipe()); + const form = await connectDebuggerClient(client); + const inContentFront = InContentFront(client, form); + const isInContent = await inContentFront.isInContent(); + ok(isInContent, "ContentActor really runs in the content process"); + const formSpawn = await inContentFront.spawnInParent(ACTOR_URL); + const inParentFront = InParentFront(client, formSpawn); + const { + args, + isInParent, + conn, + mm + } = await inParentFront.test(); + is(args[0], 1, "first actor constructor arg is correct"); + is(args[1], 2, "first actor constructor arg is correct"); + is(args[2], 3, "first actor constructor arg is correct"); + ok(isInParent, "The ParentActor really runs in the parent process"); + ok(conn, "`conn`, first contructor argument is a DebuggerServerConnection instance"); + is(mm, "ChromeMessageSender", "`mm`, last constructor argument is a message manager"); + + await client.close(); + gBrowser.removeCurrentTab(); +});
new file mode 100644 --- /dev/null +++ b/devtools/server/tests/browser/test-spawn-actor-in-parent.js @@ -0,0 +1,100 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* vim: set ft=javascript ts=2 et sw=2 tw=80: */ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +const protocol = require("devtools/shared/protocol"); +const { DebuggerServerConnection } = require("devtools/server/main"); +const Services = require("Services"); + +const inContentSpec = protocol.generateActorSpec({ + typeName: "inContent", + + methods: { + isInContent: { + request: {}, + response: { + isInContent: protocol.RetVal("boolean") + } + }, + spawnInParent: { + request: { + url: protocol.Arg(0) + }, + response: protocol.RetVal("json") + } + } +}); + +exports.InContentActor = protocol.ActorClassWithSpec(inContentSpec, { + initialize: function(conn) { + protocol.Actor.prototype.initialize.call(this, conn); + }, + + isInContent: function() { + return Services.appinfo.processType == Services.appinfo.PROCESS_TYPE_CONTENT; + }, + + spawnInParent: async function(url) { + const actorID = await this.conn.spawnActorInParentProcess(this.actorID, { + module: url, + constructor: "InParentActor", + // In the browser mochitest script, we are asserting these arguments passed to + // InParentActor constructor + args: [1, 2, 3] + }); + return { + inParentActor: actorID + }; + } +}); + +exports.InContentFront = protocol.FrontClassWithSpec(inContentSpec, { + initialize: function(client, tabForm) { + protocol.Front.prototype.initialize.call(this, client); + this.actorID = tabForm.inContentActor; + this.manage(this); + } +}); + +const inParentSpec = protocol.generateActorSpec({ + typeName: "inParent", + + methods: { + test: { + request: {}, + response: protocol.RetVal("json") + } + } +}); + +exports.InParentActor = protocol.ActorClassWithSpec(inParentSpec, { + initialize: function(conn, a1, a2, a3, mm) { + protocol.Actor.prototype.initialize.call(this, conn); + // We save all arguments to later assert them in `test` request + this.conn = conn; + this.args = [a1, a2, a3]; + this.mm = mm; + }, + + test: function() { + return { + args: this.args, + isInParent: Services.appinfo.processType == Services.appinfo.PROCESS_TYPE_DEFAULT, + conn: this.conn instanceof DebuggerServerConnection, + // We don't have access to MessageListenerManager in Sandboxes, + // so fallback to constructor name checks... + mm: Object.getPrototypeOf(this.mm).constructor.name + }; + } +}); + +exports.InParentFront = protocol.FrontClassWithSpec(inParentSpec, { + initialize: function(client, tabForm) { + protocol.Front.prototype.initialize.call(this, client); + this.actorID = tabForm.inParentActor; + this.manage(this); + } +});
--- a/devtools/startup/aboutdebugging-registration.js +++ b/devtools/startup/aboutdebugging-registration.js @@ -11,26 +11,29 @@ const { XPCOMUtils } = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", {}); const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm", {}); const { nsIAboutModule } = Ci; function AboutDebugging() {} AboutDebugging.prototype = { - uri: Services.io.newURI("chrome://devtools/content/aboutdebugging/aboutdebugging.xhtml"), classDescription: "about:debugging", classID: Components.ID("1060afaf-dc9e-43da-8646-23a2faf48493"), contractID: "@mozilla.org/network/protocol/about;1?what=debugging", QueryInterface: ChromeUtils.generateQI([nsIAboutModule]), - newChannel: function(uri, loadInfo) { + newChannel: function(_, loadInfo) { + const uri = Services.prefs.getBoolPref("devtools.aboutdebugging.new-enabled") + ? "chrome://devtools/content/aboutdebugging-new/index.html" + : "chrome://devtools/content/aboutdebugging/aboutdebugging.xhtml"; + const chan = Services.io.newChannelFromURIWithLoadInfo( - this.uri, + Services.io.newURI(uri), loadInfo ); chan.owner = Services.scriptSecurityManager.getSystemPrincipal(); return chan; }, getURIFlags: function(uri) { return nsIAboutModule.ALLOW_SCRIPT;
--- a/dom/base/DOMPrefs.cpp +++ b/dom/base/DOMPrefs.cpp @@ -2,16 +2,17 @@ /* vim: set ts=8 sts=2 et sw=2 tw=80: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "DOMPrefs.h" #include "mozilla/Atomics.h" #include "mozilla/Preferences.h" +#include "mozilla/StaticPrefs.h" namespace mozilla { namespace dom { void DOMPrefs::Initialize() { MOZ_ASSERT(NS_IsMainThread()); @@ -70,16 +71,22 @@ DOM_PREF(DumpEnabled, "browser.dom.windo #else /* static */ bool DOMPrefs::DumpEnabled() { return true; } #endif +/* static */ bool +DOMPrefs::SchedulerTimingEnabled() +{ + return mozilla::StaticPrefs::dom_performance_enable_scheduler_timing(); +} + #include "DOMPrefsInternal.h" #undef DOM_PREF #undef DOM_WEBIDL_PREF #undef DOM_UINT32_PREF } // dom namespace } // mozilla namespace
--- a/dom/base/DOMPrefs.h +++ b/dom/base/DOMPrefs.h @@ -14,16 +14,19 @@ class DOMPrefs final { public: // This must be called on the main-thread. static void Initialize(); // Returns true if the browser.dom.window.dump.enabled pref is set. static bool DumpEnabled(); + // Returns true if the dom.performance.enable_scheduler_timing is set + static bool SchedulerTimingEnabled(); + #define DOM_PREF(name, pref) static bool name(); #define DOM_WEBIDL_PREF(name) static bool name(JSContext* aCx, JSObject* aObj); #define DOM_UINT32_PREF(name, pref, defaultValue) static uint32_t name(); #include "DOMPrefsInternal.h" #undef DOM_PREF #undef DOM_WEBIDL_PREF
--- a/dom/base/DOMPrefsInternal.h +++ b/dom/base/DOMPrefsInternal.h @@ -54,12 +54,13 @@ DOM_WEBIDL_PREF(StorageManagerEnabled) DOM_WEBIDL_PREF(PromiseRejectionEventsEnabled) DOM_WEBIDL_PREF(PushEnabled) DOM_WEBIDL_PREF(StreamsEnabled) DOM_WEBIDL_PREF(OffscreenCanvasEnabled) DOM_WEBIDL_PREF(WebkitBlinkDirectoryPickerEnabled) DOM_WEBIDL_PREF(NetworkInformationEnabled) DOM_WEBIDL_PREF(FetchObserverEnabled) DOM_WEBIDL_PREF(PerformanceObserverEnabled) +DOM_WEBIDL_PREF(SchedulerTimingEnabled) DOM_UINT32_PREF(WorkerCancelingTimeoutMillis, "dom.worker.canceling.timeoutMilliseconds", 30000 /* 30 seconds */)
--- a/dom/base/test/reftest/reftest.list +++ b/dom/base/test/reftest/reftest.list @@ -1,1 +1,2 @@ == test_bug920877.html test_bug920877-ref.html +HTTP == test_xmlPrettyPrint_csp.xml test_xmlPrettyPrint_csp-ref.xml
new file mode 100644 --- /dev/null +++ b/dom/base/test/reftest/test_xmlPrettyPrint_csp-ref.xml @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<xml> + This is an XML document +</xml>
new file mode 100644 --- /dev/null +++ b/dom/base/test/reftest/test_xmlPrettyPrint_csp.xml @@ -0,0 +1,4 @@ +<?xml version="1.0"?> +<xml> + This is an XML document +</xml>
new file mode 100644 --- /dev/null +++ b/dom/base/test/reftest/test_xmlPrettyPrint_csp.xml^headers^ @@ -0,0 +1,1 @@ +Content-Security-Policy: default-src 'none';
--- a/dom/chrome-webidl/ChromeUtils.webidl +++ b/dom/chrome-webidl/ChromeUtils.webidl @@ -342,17 +342,17 @@ partial namespace ChromeUtils { * that it belongs to. */ [Throws] object createError(DOMString message, optional object? stack = null); /** * Request performance metrics to the current process & all content processes. */ - [Throws] + [Throws, Func="DOMPrefs::SchedulerTimingEnabled"] Promise<sequence<PerformanceInfoDictionary>> requestPerformanceMetrics(); /** * Returns a Promise containing a sequence of I/O activities */ [Throws] Promise<sequence<IOActivityDataDictionary>> requestIOActivity(); };
--- a/dom/media/webaudio/AudioParamTimeline.h +++ b/dom/media/webaudio/AudioParamTimeline.h @@ -140,18 +140,20 @@ AudioParamTimeline::GetValuesAtTime(int6 { MOZ_ASSERT(aBuffer); MOZ_ASSERT(aSize <= WEBAUDIO_BLOCK_SIZE); MOZ_ASSERT(aSize == 1 || !HasSimpleValue()); // Mix the value of the AudioParam itself with that of the AudioNode inputs. BaseClass::GetValuesAtTime(aTime, aBuffer, aSize); if (mStream) { + uint32_t blockOffset = aTime % WEBAUDIO_BLOCK_SIZE; + MOZ_ASSERT(blockOffset + aSize <= WEBAUDIO_BLOCK_SIZE); for (size_t i = 0; i < aSize; ++i) { - aBuffer[i] += AudioNodeInputValue(i); + aBuffer[i] += AudioNodeInputValue(blockOffset + i); } } } } // namespace dom } // namespace mozilla #endif
--- a/dom/media/webaudio/ConstantSourceNode.cpp +++ b/dom/media/webaudio/ConstantSourceNode.cpp @@ -87,29 +87,47 @@ public: MOZ_ASSERT(mSource == aStream, "Invalid source stream"); StreamTime ticks = mDestination->GraphTimeToStreamTime(aFrom); if (mStart == -1) { aOutput->SetNull(WEBAUDIO_BLOCK_SIZE); return; } - if (ticks + WEBAUDIO_BLOCK_SIZE <= mStart || ticks >= mStop) { + if (ticks + WEBAUDIO_BLOCK_SIZE <= mStart || + ticks >= mStop || + mStop <= mStart) { aOutput->SetNull(WEBAUDIO_BLOCK_SIZE); } else { aOutput->AllocateChannels(1); float* output = aOutput->ChannelFloatsForWrite(0); + uint32_t writeOffset = 0; + + if (ticks < mStart) { + MOZ_ASSERT(mStart - ticks <= WEBAUDIO_BLOCK_SIZE); + uint32_t count = mStart - ticks; + std::fill_n(output, count, 0.0f); + writeOffset += count; + } + + MOZ_ASSERT(ticks + writeOffset >= mStart); + MOZ_ASSERT(mStop - ticks >= writeOffset); + uint32_t count = + std::min<StreamTime>(WEBAUDIO_BLOCK_SIZE, mStop - ticks) - writeOffset; if (mOffset.HasSimpleValue()) { - for (uint32_t i = 0; i < WEBAUDIO_BLOCK_SIZE; ++i) { - output[i] = mOffset.GetValueAtTime(aFrom, 0); - } + float value = mOffset.GetValueAtTime(ticks); + std::fill_n(output + writeOffset, count, value); } else { - mOffset.GetValuesAtTime(ticks, output, WEBAUDIO_BLOCK_SIZE); + mOffset.GetValuesAtTime(ticks + writeOffset, output + writeOffset, count); } + + writeOffset += count; + + std::fill_n(output + writeOffset, WEBAUDIO_BLOCK_SIZE - writeOffset, 0.0f); } if (ticks + WEBAUDIO_BLOCK_SIZE >= mStop) { // We've finished playing. *aFinished = true; } }
--- a/dom/tests/browser/browser.ini +++ b/dom/tests/browser/browser.ini @@ -1,22 +1,20 @@ [DEFAULT] -prefs = dom.performance.enable_scheduler_timing=true +prefs = dom.performance.enable_scheduler_timing=false support-files = browser_frame_elements.html page_privatestorageevent.html page_localstorage_e10s.html position.html test-console-api.html test_bug1004814.html worker_bug1004814.js geo_leak_test.html dummy.html - ping_worker.html - ping_worker2.html test_largeAllocation.html test_largeAllocation.html^headers^ test_largeAllocation2.html test_largeAllocation2.html^headers^ test_largeAllocationFormSubmit.sjs helper_largeAllocation.js !/dom/tests/mochitest/geolocation/network_geolocation.sjs @@ -76,10 +74,10 @@ support-files = test_new_window_from_content_child.html [browser_xhr_sandbox.js] [browser_noopener.js] skip-if = (verify && debug && (os == 'linux')) support-files = test_noopener_source.html test_noopener_target.html [browser_noopener_null_uri.js] -[browser_test_performance_metrics.js] +[browser_test_performance_metrics_off.js] skip-if = verify
new file mode 100644 --- /dev/null +++ b/dom/tests/browser/browser_test_performance_metrics_off.js @@ -0,0 +1,19 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* vim: set ts=2 et sw=2 tw=80: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +add_task(async function testNotActivated() { + // dom.performance.enable_scheduler_timing is set to false in browser.ini + waitForExplicitFinish(); + // make sure we throw a JS exception in case the pref is off and + // we call requestPerformanceMetrics() + let failed = false; + try { + let promise = await ChromeUtils.requestPerformanceMetrics(); + } catch (e) { + failed = true; + } + Assert.ok(failed, "We should get an exception if preffed off"); +});
new file mode 100644 --- /dev/null +++ b/dom/tests/browser/perfmetrics/browser.ini @@ -0,0 +1,10 @@ +[DEFAULT] +prefs = dom.performance.enable_scheduler_timing=true +support-files = + dummy.html + ping_worker.html + ping_worker2.html + ping_worker.js + +[browser_test_performance_metrics.js] +skip-if = verify
rename from dom/tests/browser/browser_test_performance_metrics.js rename to dom/tests/browser/perfmetrics/browser_test_performance_metrics.js --- a/dom/tests/browser/browser_test_performance_metrics.js +++ b/dom/tests/browser/perfmetrics/browser_test_performance_metrics.js @@ -1,15 +1,15 @@ /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ /* vim: set ts=2 et sw=2 tw=80: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -const ROOT_URL = "http://example.com/browser/dom/tests/browser"; +const ROOT_URL = "http://example.com/browser/dom/tests/browser/perfmetrics"; const DUMMY_URL = ROOT_URL + "/dummy.html"; const WORKER_URL = ROOT_URL + "/ping_worker.html"; const WORKER_URL2 = ROOT_URL + "/ping_worker2.html"; let nextId = 0; function jsonrpc(tab, method, params) { @@ -36,17 +36,17 @@ function jsonrpc(tab, method, params) { }); } function postMessageToWorker(tab, message) { return jsonrpc(tab, "postMessageToWorker", [WORKER_URL, message]); } add_task(async function test() { - SpecialPowers.setBoolPref("dom.performance.enable_scheduler_timing", true); + // dom.performance.enable_scheduler_timing is set to true in browser.ini waitForExplicitFinish(); // Load 3 pages and wait. The 3rd one has a worker let page1 = await BrowserTestUtils.openNewForegroundTab({ gBrowser, opening: "about:about", forceNewProcess: false }); let page2 = await BrowserTestUtils.openNewForegroundTab({ @@ -142,10 +142,9 @@ add_task(async function test() { Assert.ok(workerTotal > previousWorkerTotal, "Worker count should be positive"); Assert.ok(duration > previousDuration, "Duration should be positive"); Assert.ok(total > previousTotal, "Should get a positive count"); }); BrowserTestUtils.removeTab(page1); BrowserTestUtils.removeTab(page2); BrowserTestUtils.removeTab(page3); - SpecialPowers.clearUserPref("dom.performance.enable_scheduler_timing"); });
new file mode 100644 --- /dev/null +++ b/dom/tests/browser/perfmetrics/dummy.html @@ -0,0 +1,13 @@ +<!doctype html> +<html> +<head> +<title>Dummy test page</title> +<meta http-equiv="Content-Type" content="text/html;charset=utf-8"></meta> +</head> +<body> +<p>Dummy test page</p> +<script> + localStorage.setItem("foo", "bar"); +</script> +</body> +</html>
rename from dom/tests/browser/ping_worker.html rename to dom/tests/browser/perfmetrics/ping_worker.html
rename from dom/tests/browser/ping_worker2.html rename to dom/tests/browser/perfmetrics/ping_worker2.html
--- a/dom/tests/moz.build +++ b/dom/tests/moz.build @@ -180,17 +180,18 @@ MOCHITEST_CHROME_MANIFESTS += [ 'mochitest/localstorage/chrome.ini', 'mochitest/sessionstorage/chrome.ini', 'mochitest/webcomponents/chrome.ini', 'mochitest/webcomponents/chrome_disabled.ini', 'mochitest/whatwg/chrome.ini', ] XPCSHELL_TESTS_MANIFESTS += ['unit/xpcshell.ini'] -BROWSER_CHROME_MANIFESTS += ['browser/browser.ini', 'mochitest/ajax/offline/browser.ini'] +BROWSER_CHROME_MANIFESTS += ['browser/browser.ini', 'browser/perfmetrics/browser.ini', + 'mochitest/ajax/offline/browser.ini'] TEST_HARNESS_FILES.testing.mochitest.tests.dom.tests.mochitest.ajax.lib += [ 'mochitest/ajax/lib/AJAX_setup.js', 'mochitest/ajax/lib/test.css', ] TEST_HARNESS_FILES.testing.mochitest.tests.dom.tests.mochitest.ajax.mochikit.tests += [ 'mochitest/ajax/mochikit/tests/cli.js',
--- a/dom/xml/resources/XMLPrettyPrint.xsl +++ b/dom/xml/resources/XMLPrettyPrint.xsl @@ -13,19 +13,17 @@ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml"> <xsl:output method="xml"/> <xsl:template match="/"> <div id="top"> - <style> - @import url("chrome://global/content/xml/XMLPrettyPrint.css"); - </style> + <link rel="stylesheet" href="chrome://global/content/xml/XMLPrettyPrint.css"/> <div id="header" dir="&locale.dir;"> <p> &xml.nostylesheet; </p> </div> <main id="tree" class="highlight"> <xsl:apply-templates/> </main>
--- a/editor/libeditor/HTMLEditRules.cpp +++ b/editor/libeditor/HTMLEditRules.cpp @@ -2177,16 +2177,17 @@ HTMLEditRules::SplitMailCites(bool* aHan // that the serializer will insert a break where the user saw one. // FYI: splitCiteNodeResult grabs the previous node with nsCOMPtr. So, it's // safe to access previousNodeOfSplitPoint even after changing the DOM // tree and/or selection even though it's raw pointer. nsIContent* previousNodeOfSplitPoint = splitCiteNodeResult.GetPreviousNode(); if (previousNodeOfSplitPoint && previousNodeOfSplitPoint->IsHTMLElement(nsGkAtoms::span) && + previousNodeOfSplitPoint->GetPrimaryFrame() && previousNodeOfSplitPoint->GetPrimaryFrame()-> IsFrameOfType(nsIFrame::eBlockFrame)) { nsCOMPtr<nsINode> lastChild = previousNodeOfSplitPoint->GetLastChild(); if (lastChild && !lastChild->IsHTMLElement(nsGkAtoms::br)) { // We ignore the result here. EditorRawDOMPoint endOfPreviousNodeOfSplitPoint; endOfPreviousNodeOfSplitPoint.SetToEndOf(previousNodeOfSplitPoint);
--- a/editor/libeditor/TextEditor.cpp +++ b/editor/libeditor/TextEditor.cpp @@ -1927,17 +1927,17 @@ TextEditor::InsertWithQuotationsAsSubAct bool cancel, handled; rv = rules->WillDoAction(selection, subActionInfo, &cancel, &handled); if (NS_WARN_IF(NS_FAILED(rv))) { return rv; } if (cancel) { return NS_OK; // Rules canceled the operation. } - MOZ_ASSERT(handled, "WillDoAction() shouldn't handle in this case"); + MOZ_ASSERT(!handled, "WillDoAction() shouldn't handle in this case"); if (!handled) { // TODO: Use InsertTextAsSubAction() when bug 1467796 is fixed. rv = InsertTextAsAction(quotedStuff); if (NS_WARN_IF(NS_FAILED(rv))) { return rv; } } // XXX Why don't we call TextEditRules::DidDoAction()?
--- a/editor/libeditor/tests/mochitest.ini +++ b/editor/libeditor/tests/mochitest.ini @@ -270,16 +270,18 @@ subsuite = clipboard skip-if = toolkit == 'android' # bug 1054087 [test_dom_input_event_on_texteditor.html] [test_dragdrop.html] skip-if = os == 'android' [test_inline_style_cache.html] [test_inlineTableEditing.html] [test_insertParagraph_in_inline_editing_host.html] [test_keypress_untrusted_event.html] +[test_middle_click_paste.html] +subsuite = clipboard [test_objectResizing.html] [test_root_element_replacement.html] [test_select_all_without_body.html] [test_spellcheck_pref.html] skip-if = toolkit == 'android' [test_undo_redo_stack_after_setting_value.html] [test_backspace_vs.html] [test_css_chrome_load_access.html]
new file mode 100644 --- /dev/null +++ b/editor/libeditor/tests/test_middle_click_paste.html @@ -0,0 +1,144 @@ +<!DOCTYPE html> +<html> +<head> + <title>Test for paste as quotation with middle button click</title> + <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> + <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> +</head> +<body> +<p id="display"></p> +<div id="content" style="display: none;"> + +</div> + +<div id="container"></div> + +<textarea id="toCopyPlaintext" style="display: none;"></textarea> +<iframe id="toCopyHTMLContent" srcdoc="<body></body>" style="display: none;"></iframe> + +<pre id="test"> + +<script class="testbody" type="application/javascript"> +SimpleTest.waitForExplicitFinish(); + +// TODO: This file should test complicated cases too. +// E.g., pasting into existing content, e.g., pasting invalid child +// element for the parent elements at insertion point. + +async function copyPlaintext(aText) { + return new Promise(resolve => { + SimpleTest.waitForClipboard(aText, + () => { + let element = document.getElementById("toCopyPlaintext"); + element.style.display = "block"; + element.focus(); + element.value = aText; + synthesizeKey("a", {accelKey: true}); + synthesizeKey("c", {accelKey: true}); + }, + () => { + ok(true, `Succeeded to copy "${aText}" to clipboard`); + let element = document.getElementById("toCopyPlaintext"); + element.style.display = "none"; + resolve(); + }, + () => { + SimpleTest.finish(); + }); + }); +} + +async function copyHTMLContent(aInnerHTML) { + return new Promise(resolve => { + SimpleTest.waitForClipboard( + () => { return true; }, + () => { + let element = document.getElementById("toCopyHTMLContent"); + element.style.display = "block"; + element.contentDocument.body.innerHTML = aInnerHTML; + element.contentWindow.focus(); + element.contentDocument.getSelection().selectAllChildren(element.contentDocument.body); + synthesizeKey("c", {accelKey: true}, element.contentWindow); + }, + () => { + ok(true, `Succeeded to copy "${aInnerHTML}" to clipboard as HTML`); + let element = document.getElementById("toCopyHTMLContent"); + element.style.display = "none"; + resolve(); + }, + () => { + SimpleTest.finish(); + }, + "text/html"); + }); +} + +async function doTextareaTests(aTextarea) { + await copyPlaintext("abc\ndef\nghi"); + aTextarea.focus(); + synthesizeMouseAtCenter(aTextarea, {button: 1, ctrlKey: true}); + is(aTextarea.value, + "> abc\n> def\n> ghi\n\n", + "Pasted each line should start with \"> \""); + aTextarea.value = ""; + + await copyPlaintext("> abc\n> def\n> ghi"); + aTextarea.focus(); + synthesizeMouseAtCenter(aTextarea, {button: 1, ctrlKey: true}); + is(aTextarea.value, + ">> abc\n>> def\n>> ghi\n\n", + "Pasted each line should be start with \">> \" when already quoted one level"); + aTextarea.value = ""; + + await copyPlaintext("> abc\n> def\n\nghi"); + aTextarea.focus(); + synthesizeMouseAtCenter(aTextarea, {button: 1, ctrlKey: true}); + is(aTextarea.value, + ">> abc\n>> def\n> \n> ghi\n\n", + "Pasted each line should be start with \">> \" when already quoted one level"); + aTextarea.value = ""; + + await copyPlaintext("abc\ndef\n\n"); + aTextarea.focus(); + synthesizeMouseAtCenter(aTextarea, {button: 1, ctrlKey: true}); + is(aTextarea.value, + "> abc\n> def\n> \n", + "If pasted text ends with \"\\n\", only the last line should not started with \">\""); + aTextarea.value = ""; +} + +async function doContenteditableTests(aEditableDiv) { + await copyPlaintext("abc\ndef\nghi"); + aEditableDiv.focus(); + synthesizeMouseAtCenter(aEditableDiv, {button: 1, ctrlKey: true}); + is(aEditableDiv.innerHTML, + "<blockquote type=\"cite\">abc<br>def<br>ghi</blockquote>", + "Pasted plaintext should be in <blockquote> element and each linebreaker should be <br> element"); + aEditableDiv.innerHTML = ""; + + await copyHTMLContent("<p>abc</p><p>def</p><p>ghi</p>"); + aEditableDiv.focus(); + synthesizeMouseAtCenter(aEditableDiv, {button: 1, ctrlKey: true}); + is(aEditableDiv.innerHTML, + "<blockquote type=\"cite\"><p>abc</p><p>def</p><p>ghi</p></blockquote>", + "Pasted HTML content should be set to the <blockquote>"); + aEditableDiv.innerHTML = ""; +} + +async function doTests() { + await SpecialPowers.pushPrefEnv({"set": [["middlemouse.paste", true], + ["middlemouse.contentLoadURL", false]]}); + let container = document.getElementById("container"); + container.innerHTML = "<textarea id=\"editor\"></textarea>"; + await doTextareaTests(document.getElementById("editor")); + container.innerHTML = "<div id=\"editor\" contenteditable style=\"min-height: 1em;\"></div>"; + await doContenteditableTests(document.getElementById("editor")); + SimpleTest.finish(); +} + +SimpleTest.waitForFocus(doTests); +</script> +</pre> +</body> +</html>
--- a/extensions/spellcheck/hunspell/glue/mozHunspell.cpp +++ b/extensions/spellcheck/hunspell/glue/mozHunspell.cpp @@ -123,54 +123,53 @@ mozHunspell::Init() mozHunspell::~mozHunspell() { mozilla::UnregisterWeakMemoryReporter(this); mPersonalDictionary = nullptr; delete mHunspell; } -NS_IMETHODIMP mozHunspell::GetDictionary(char16_t **aDictionary) +NS_IMETHODIMP +mozHunspell::GetDictionary(nsAString& aDictionary) { - NS_ENSURE_ARG_POINTER(aDictionary); - - *aDictionary = ToNewUnicode(mDictionary); - return *aDictionary ? NS_OK : NS_ERROR_OUT_OF_MEMORY; + aDictionary = mDictionary; + return NS_OK; } /* set the Dictionary. * This also Loads the dictionary and initializes the converter using the dictionaries converter */ -NS_IMETHODIMP mozHunspell::SetDictionary(const char16_t *aDictionary) +NS_IMETHODIMP +mozHunspell::SetDictionary(const nsAString& aDictionary) { - NS_ENSURE_ARG_POINTER(aDictionary); - - if (nsDependentString(aDictionary).IsEmpty()) { + if (aDictionary.IsEmpty()) { delete mHunspell; mHunspell = nullptr; mDictionary.Truncate(); mAffixFileName.Truncate(); - mLanguage.Truncate(); mDecoder = nullptr; mEncoder = nullptr; return NS_OK; } - nsIURI* affFile = mDictionaries.GetWeak(nsDependentString(aDictionary)); - if (!affFile) + nsIURI* affFile = mDictionaries.GetWeak(aDictionary); + if (!affFile) { return NS_ERROR_FILE_NOT_FOUND; + } nsAutoCString dictFileName, affFileName; nsresult rv = affFile->GetSpec(affFileName); NS_ENSURE_SUCCESS(rv, rv); - if (mAffixFileName.Equals(affFileName.get())) + if (mAffixFileName.Equals(affFileName)) { return NS_OK; + } dictFileName = affFileName; int32_t dotPos = dictFileName.RFindChar('.'); if (dotPos == -1) return NS_ERROR_FAILURE; dictFileName.SetLength(dotPos); dictFileName.AppendLiteral(".dic"); @@ -190,65 +189,19 @@ NS_IMETHODIMP mozHunspell::SetDictionary auto encoding = Encoding::ForLabelNoReplacement(mHunspell->get_dict_encoding()); if (!encoding) { return NS_ERROR_UCONV_NOCONV; } mEncoder = encoding->NewEncoder(); mDecoder = encoding->NewDecoderWithoutBOMHandling(); - int32_t pos = mDictionary.FindChar('-'); - if (pos == -1) - pos = mDictionary.FindChar('_'); - - if (pos == -1) - mLanguage.Assign(mDictionary); - else - mLanguage = Substring(mDictionary, 0, pos); - return NS_OK; } -NS_IMETHODIMP mozHunspell::GetLanguage(char16_t **aLanguage) -{ - NS_ENSURE_ARG_POINTER(aLanguage); - - if (mDictionary.IsEmpty()) - return NS_ERROR_NOT_INITIALIZED; - - *aLanguage = ToNewUnicode(mLanguage); - return *aLanguage ? NS_OK : NS_ERROR_OUT_OF_MEMORY; -} - -NS_IMETHODIMP mozHunspell::GetProvidesPersonalDictionary(bool *aProvidesPersonalDictionary) -{ - NS_ENSURE_ARG_POINTER(aProvidesPersonalDictionary); - - *aProvidesPersonalDictionary = false; - return NS_OK; -} - -NS_IMETHODIMP mozHunspell::GetProvidesWordUtils(bool *aProvidesWordUtils) -{ - NS_ENSURE_ARG_POINTER(aProvidesWordUtils); - - *aProvidesWordUtils = false; - return NS_OK; -} - -NS_IMETHODIMP mozHunspell::GetName(char16_t * *aName) -{ - return NS_ERROR_NOT_IMPLEMENTED; -} - -NS_IMETHODIMP mozHunspell::GetCopyright(char16_t * *aCopyright) -{ - return NS_ERROR_NOT_IMPLEMENTED; -} - NS_IMETHODIMP mozHunspell::GetPersonalDictionary(mozIPersonalDictionary * *aPersonalDictionary) { *aPersonalDictionary = mPersonalDictionary; NS_IF_ADDREF(*aPersonalDictionary); return NS_OK; } NS_IMETHODIMP mozHunspell::SetPersonalDictionary(mozIPersonalDictionary * aPersonalDictionary) @@ -356,25 +309,25 @@ mozHunspell::DictionariesChanged(bool aN if (aNotifyChildProcesses) { ContentParent::NotifyUpdatedDictionaries(); } // Check if the current dictionary is still available. // If not, try to replace it with another dictionary of the same language. if (!mDictionary.IsEmpty()) { - nsresult rv = SetDictionary(mDictionary.get()); + nsresult rv = SetDictionary(mDictionary); if (NS_SUCCEEDED(rv)) return; } // If the current dictionary has gone, and we don't have a good replacement, // set no current dictionary. if (!mDictionary.IsEmpty()) { - SetDictionary(EmptyString().get()); + SetDictionary(EmptyString()); } } NS_IMETHODIMP mozHunspell::LoadDictionariesFromDir(nsIFile* aDir) { nsresult rv; @@ -423,89 +376,98 @@ mozHunspell::LoadDictionariesFromDir(nsI mDictionaries.Put(dict, uri); } return NS_OK; } nsresult -mozHunspell::ConvertCharset(const char16_t* aStr, std::string* aDst) +mozHunspell::ConvertCharset(const nsAString& aStr, std::string& aDst) { - NS_ENSURE_ARG_POINTER(aDst); - NS_ENSURE_TRUE(mEncoder, NS_ERROR_NULL_POINTER); + if (NS_WARN_IF(!mEncoder)) { + return NS_ERROR_NOT_INITIALIZED; + } - auto src = MakeStringSpan(aStr); + auto src = MakeSpan(aStr.BeginReading(), aStr.Length()); CheckedInt<size_t> needed = mEncoder->MaxBufferLengthFromUTF16WithoutReplacement(src.Length()); if (!needed.isValid()) { return NS_ERROR_OUT_OF_MEMORY; } - aDst->resize(needed.value()); + aDst.resize(needed.value()); - char* dstPtr = &aDst->operator[](0); + char* dstPtr = &aDst[0]; auto dst = MakeSpan(reinterpret_cast<uint8_t*>(dstPtr), needed.value()); uint32_t result; size_t read; size_t written; Tie(result, read, written) = mEncoder->EncodeFromUTF16WithoutReplacement(src, dst, true); Unused << read; MOZ_ASSERT(result != kOutputFull); if (result != kInputEmpty) { return NS_ERROR_UENC_NOMAPPING; } - aDst->resize(written); + aDst.resize(written); mEncoder->Encoding()->NewEncoderInto(*mEncoder); return NS_OK; } NS_IMETHODIMP mozHunspell::CollectReports(nsIHandleReportCallback* aHandleReport, nsISupports* aData, bool aAnonymize) { MOZ_COLLECT_REPORT( "explicit/spell-check", KIND_HEAP, UNITS_BYTES, HunspellAllocator::MemoryAllocated(), "Memory used by the spell-checking engine."); return NS_OK; } -NS_IMETHODIMP mozHunspell::Check(const char16_t *aWord, bool *aResult) +NS_IMETHODIMP +mozHunspell::Check(const nsAString& aWord, bool* aResult) { - NS_ENSURE_ARG_POINTER(aWord); - NS_ENSURE_ARG_POINTER(aResult); + if (NS_WARN_IF(!aResult)) { + return NS_ERROR_INVALID_ARG; + } NS_ENSURE_TRUE(mHunspell, NS_ERROR_FAILURE); std::string charsetWord; - nsresult rv = ConvertCharset(aWord, &charsetWord); + nsresult rv = ConvertCharset(aWord, charsetWord); NS_ENSURE_SUCCESS(rv, rv); *aResult = mHunspell->spell(charsetWord); if (!*aResult && mPersonalDictionary) - rv = mPersonalDictionary->Check(aWord, mLanguage.get(), aResult); + rv = mPersonalDictionary->Check(aWord, aResult); return rv; } -NS_IMETHODIMP mozHunspell::Suggest(const char16_t *aWord, char16_t ***aSuggestions, uint32_t *aSuggestionCount) +NS_IMETHODIMP +mozHunspell::Suggest(const nsAString& aWord, char16_t*** aSuggestions, + uint32_t* aSuggestionCount) { - NS_ENSURE_ARG_POINTER(aSuggestions); - NS_ENSURE_ARG_POINTER(aSuggestionCount); + if (NS_WARN_IF(!aSuggestions)) { + return NS_ERROR_INVALID_ARG; + } + if (NS_WARN_IF(!aSuggestionCount)) { + return NS_ERROR_INVALID_ARG; + } NS_ENSURE_TRUE(mHunspell, NS_ERROR_FAILURE); nsresult rv; *aSuggestionCount = 0; std::string charsetWord; - rv = ConvertCharset(aWord, &charsetWord); + rv = ConvertCharset(aWord, charsetWord); NS_ENSURE_SUCCESS(rv, rv); std::vector<std::string> suggestions = mHunspell->suggest(charsetWord); *aSuggestionCount = static_cast<uint32_t>(suggestions.size()); if (*aSuggestionCount) { *aSuggestions = (char16_t **)moz_xmalloc(*aSuggestionCount * sizeof(char16_t *)); if (*aSuggestions) {
--- a/extensions/spellcheck/hunspell/glue/mozHunspell.h +++ b/extensions/spellcheck/hunspell/glue/mozHunspell.h @@ -94,33 +94,32 @@ public: mozHunspell(); nsresult Init(); void LoadDictionaryList(bool aNotifyChildProcesses); // helper method for converting a word to the charset of the dictionary - nsresult ConvertCharset(const char16_t* aStr, std::string* aDst); + nsresult ConvertCharset(const nsAString& aStr, std::string& aDst); NS_DECL_NSIMEMORYREPORTER protected: virtual ~mozHunspell(); void DictionariesChanged(bool aNotifyChildProcesses); nsCOMPtr<mozIPersonalDictionary> mPersonalDictionary; mozilla::UniquePtr<mozilla::Encoder> mEncoder; mozilla::UniquePtr<mozilla::Decoder> mDecoder; // Hashtable matches dictionary name to .aff file nsInterfaceHashtable<nsStringHashKey, nsIURI> mDictionaries; nsString mDictionary; - nsString mLanguage; nsCString mAffixFileName; // dynamic dirs used to search for dictionaries nsCOMArray<nsIFile> mDynamicDirectories; nsInterfaceHashtable<nsStringHashKey, nsIURI> mDynamicDictionaries; Hunspell *mHunspell; };
--- a/extensions/spellcheck/idl/mozIPersonalDictionary.idl +++ b/extensions/spellcheck/idl/mozIPersonalDictionary.idl @@ -28,50 +28,30 @@ interface mozIPersonalDictionary : nsISu /** * Get the (lexicographically sorted) list of words */ readonly attribute nsIStringEnumerator wordList; /** * Check a unicode string */ - boolean check(in wstring word, in wstring lang); + boolean check(in AString word); /** * Add a word to the personal dictionary */ - void addWord(in wstring word, in wstring lang); + void addWord(in AString word); /** * Remove a word from the personal dictionary */ - void removeWord(in wstring word, in wstring lang); + void removeWord(in AString word); /** * Add a word to the ignore all list */ - void ignoreWord(in wstring word); + void ignoreWord(in AString word); /** * Clear the ignore list */ void endSession(); - - /** - * These three functions are here in case we want to store previous - * misspellings and return them at the head of the misspell list. - */ - - /** - * Add a misspelling to the list of corrections - */ - void addCorrection(in wstring word,in wstring correction, in wstring lang); - - /** - * Remove a misspelling from the list of corrections - */ - void removeCorrection(in wstring word,in wstring correction, in wstring lang); - - /** - * Get a list of previous corrections for the word - */ - void getCorrection(in wstring word, [array, size_is(count)] out wstring words, out uint32_t count); };
--- a/extensions/spellcheck/idl/mozISpellCheckingEngine.idl +++ b/extensions/spellcheck/idl/mozISpellCheckingEngine.idl @@ -20,62 +20,38 @@ interface mozISpellCheckingEngine : nsIS * The name of the current dictionary. Is either a value from * getDictionaryList or the empty string if no dictionary is selected. * Setting this attribute to a value not in getDictionaryList will throw * NS_ERROR_FILE_NOT_FOUND. * * If the dictionary is changed to no dictionary (the empty string), an * observer is allowed to set another dictionary before it returns. */ - attribute wstring dictionary; - - /** - * The language this spellchecker is using when checking - */ - readonly attribute wstring language; - - /** - * Does the engine provide its own personal dictionary? - */ - readonly attribute boolean providesPersonalDictionary; - - /** - * Does the engine provide its own word utils? - */ - readonly attribute boolean providesWordUtils; - - /** - * The name of the engine - */ - readonly attribute wstring name; - - /** - * a string indicating the copyright of the engine - */ - readonly attribute wstring copyright; + attribute AString dictionary; /** * the personal dictionary */ attribute mozIPersonalDictionary personalDictionary; /** * Get the list of dictionaries */ void getDictionaryList([array, size_is(count)] out wstring dictionaries, out uint32_t count); /** * check a word */ - boolean check(in wstring word); + boolean check(in AString word); /** * get a list of suggestions for a misspelled word */ - void suggest(in wstring word,[array, size_is(count)] out wstring suggestions, out uint32_t count); + void suggest(in AString word, [array, size_is(count)] out wstring suggestions, + out uint32_t count); /** * Load dictionaries from the specified dir */ void loadDictionariesFromDir(in nsIFile dir); /** * Add dictionaries from a directory to the spell checker
--- a/extensions/spellcheck/src/mozPersonalDictionary.cpp +++ b/extensions/spellcheck/src/mozPersonalDictionary.cpp @@ -308,17 +308,17 @@ void mozPersonalDictionary::SyncLoadInte if( (NS_OK != convStream->Read(&c, 1, &nRead)) || (nRead != 1)) done = true; } if (!done){ nsAutoString word; while((c != '\n') && (c != '\r') && !done){ word.Append(c); if( (NS_OK != convStream->Read(&c, 1, &nRead)) || (nRead != 1)) done = true; } - mDictionaryTable.PutEntry(word.get()); + mDictionaryTable.PutEntry(word); } } while(!done); } void mozPersonalDictionary::WaitForSave() { // If no save is pending, we return straight away. if (!mSavePending) { @@ -391,79 +391,67 @@ NS_IMETHODIMP mozPersonalDictionary::Get elems++; } array->Sort(); return NS_NewAdoptingStringEnumerator(aWords, array); } -NS_IMETHODIMP mozPersonalDictionary::Check(const char16_t *aWord, const char16_t *aLanguage, bool *aResult) +NS_IMETHODIMP +mozPersonalDictionary::Check(const nsAString& aWord, bool* aResult) { - NS_ENSURE_ARG_POINTER(aWord); NS_ENSURE_ARG_POINTER(aResult); WaitForLoad(); *aResult = (mDictionaryTable.GetEntry(aWord) || mIgnoreTable.GetEntry(aWord)); return NS_OK; } -NS_IMETHODIMP mozPersonalDictionary::AddWord(const char16_t *aWord, const char16_t *aLang) +NS_IMETHODIMP +mozPersonalDictionary::AddWord(const nsAString& aWord) { nsresult res; WaitForLoad(); mDictionaryTable.PutEntry(aWord); res = Save(); return res; } -NS_IMETHODIMP mozPersonalDictionary::RemoveWord(const char16_t *aWord, const char16_t *aLang) +NS_IMETHODIMP +mozPersonalDictionary::RemoveWord(const nsAString& aWord) { nsresult res; WaitForLoad(); mDictionaryTable.RemoveEntry(aWord); res = Save(); return res; } -NS_IMETHODIMP mozPersonalDictionary::IgnoreWord(const char16_t *aWord) +NS_IMETHODIMP +mozPersonalDictionary::IgnoreWord(const nsAString& aWord) { // avoid adding duplicate words to the ignore list - if (aWord && !mIgnoreTable.GetEntry(aWord)) + if (!mIgnoreTable.GetEntry(aWord)) mIgnoreTable.PutEntry(aWord); return NS_OK; } NS_IMETHODIMP mozPersonalDictionary::EndSession() { WaitForLoad(); WaitForSave(); mIgnoreTable.Clear(); return NS_OK; } -NS_IMETHODIMP mozPersonalDictionary::AddCorrection(const char16_t *word, const char16_t *correction, const char16_t *lang) -{ - return NS_ERROR_NOT_IMPLEMENTED; -} - -NS_IMETHODIMP mozPersonalDictionary::RemoveCorrection(const char16_t *word, const char16_t *correction, const char16_t *lang) -{ - return NS_ERROR_NOT_IMPLEMENTED; -} - -NS_IMETHODIMP mozPersonalDictionary::GetCorrection(const char16_t *word, char16_t ***words, uint32_t *count) -{ - return NS_ERROR_NOT_IMPLEMENTED; -} - NS_IMETHODIMP mozPersonalDictionary::Observe(nsISupports *aSubject, const char *aTopic, const char16_t *aData) { if (!nsCRT::strcmp(aTopic, "profile-do-change")) { // The observer is registered in Init() which calls Load and in turn // LoadInternal(); i.e. Observe() can't be called before Load(). WaitForLoad(); mIsLoaded = false; Load(); // load automatically clears out the existing dictionary table
--- a/extensions/spellcheck/src/mozPersonalDictionary.h +++ b/extensions/spellcheck/src/mozPersonalDictionary.h @@ -46,18 +46,18 @@ protected: bool mIsLoaded; /* true if a dictionary save is pending */ bool mSavePending; nsCOMPtr<nsIFile> mFile; mozilla::Monitor mMonitor; mozilla::Monitor mMonitorSave; - nsTHashtable<nsUnicharPtrHashKey> mDictionaryTable; - nsTHashtable<nsUnicharPtrHashKey> mIgnoreTable; + nsTHashtable<nsStringHashKey> mDictionaryTable; + nsTHashtable<nsStringHashKey> mIgnoreTable; private: /* wait for the asynchronous load of the dictionary to be completed */ void WaitForLoad(); /* enter the monitor before starting a synchronous load off the main-thread */ void SyncLoad();
--- a/extensions/spellcheck/src/mozSpellChecker.cpp +++ b/extensions/spellcheck/src/mozSpellChecker.cpp @@ -151,24 +151,24 @@ mozSpellChecker::CheckWord(const nsAStri } return rv ? NS_OK : NS_ERROR_NOT_AVAILABLE; } if(!mSpellCheckingEngine) { return NS_ERROR_NULL_POINTER; } *aIsMisspelled = false; - result = mSpellCheckingEngine->Check(PromiseFlatString(aWord).get(), &correct); + result = mSpellCheckingEngine->Check(aWord, &correct); NS_ENSURE_SUCCESS(result, result); if(!correct){ if(aSuggestions){ uint32_t count,i; char16_t **words; - result = mSpellCheckingEngine->Suggest(PromiseFlatString(aWord).get(), &words, &count); + result = mSpellCheckingEngine->Suggest(aWord, &words, &count); NS_ENSURE_SUCCESS(result, result); nsString* suggestions = aSuggestions->AppendElements(count); for(i=0;i<count;i++){ suggestions[i].Assign(words[i]); } if (count) NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY(count, words); @@ -267,41 +267,41 @@ mozSpellChecker::Replace(const nsAString mTextServicesDocument->InsertText(&newWord); } return NS_OK; } NS_IMETHODIMP mozSpellChecker::IgnoreAll(const nsAString &aWord) { - if(mPersonalDictionary){ - mPersonalDictionary->IgnoreWord(PromiseFlatString(aWord).get()); + if (mPersonalDictionary) { + mPersonalDictionary->IgnoreWord(aWord); } return NS_OK; } NS_IMETHODIMP mozSpellChecker::AddWordToPersonalDictionary(const nsAString &aWord) { nsresult res; - char16_t empty=0; - if (!mPersonalDictionary) - return NS_ERROR_NULL_POINTER; - res = mPersonalDictionary->AddWord(PromiseFlatString(aWord).get(),&empty); + if (NS_WARN_IF(!mPersonalDictionary)) { + return NS_ERROR_NOT_INITIALIZED; + } + res = mPersonalDictionary->AddWord(aWord); return res; } NS_IMETHODIMP mozSpellChecker::RemoveWordFromPersonalDictionary(const nsAString &aWord) { nsresult res; - char16_t empty=0; - if (!mPersonalDictionary) - return NS_ERROR_NULL_POINTER; - res = mPersonalDictionary->RemoveWord(PromiseFlatString(aWord).get(),&empty); + if (NS_WARN_IF(!mPersonalDictionary)) { + return NS_ERROR_NOT_INITIALIZED; + } + res = mPersonalDictionary->RemoveWord(aWord); return res; } NS_IMETHODIMP mozSpellChecker::GetPersonalDictionary(nsTArray<nsString> *aWordList) { if(!aWordList || !mPersonalDictionary) return NS_ERROR_NULL_POINTER; @@ -374,20 +374,17 @@ mozSpellChecker::GetCurrentDictionary(ns return NS_OK; } if (!mSpellCheckingEngine) { aDictionary.Truncate(); return NS_OK; } - nsAutoString dictname; - mSpellCheckingEngine->GetDictionary(getter_Copies(dictname)); - aDictionary = dictname; - return NS_OK; + return mSpellCheckingEngine->GetDictionary(aDictionary); } NS_IMETHODIMP mozSpellChecker::SetCurrentDictionary(const nsAString &aDictionary) { if (XRE_IsContentProcess()) { nsString wrappedDict = nsString(aDictionary); bool isSuccess; @@ -416,17 +413,17 @@ mozSpellChecker::SetCurrentDictionary(co NS_ENSURE_SUCCESS(rv, rv); for (int32_t i = 0; i < spellCheckingEngines.Count(); i++) { // We must set mSpellCheckingEngine before we call SetDictionary, since // SetDictionary calls back to this spell checker to check if the // dictionary was set mSpellCheckingEngine = spellCheckingEngines[i]; - rv = mSpellCheckingEngine->SetDictionary(PromiseFlatString(aDictionary).get()); + rv = mSpellCheckingEngine->SetDictionary(aDictionary); if (NS_SUCCEEDED(rv)) { nsCOMPtr<mozIPersonalDictionary> personalDictionary = do_GetService("@mozilla.org/spellchecker/personaldictionary;1"); mSpellCheckingEngine->SetPersonalDictionary(personalDictionary.get()); mConverter = new mozEnglishWordUtils; return NS_OK; }
--- a/intl/l10n/docs/fluent_migrations.rst +++ b/intl/l10n/docs/fluent_migrations.rst @@ -243,20 +243,20 @@ Transform is defined: .. code-block:: python FTL.Message( id=FTL.Identifier("site-usage-pattern"), value=REPLACE( "browser/chrome/browser/preferences/preferences.properties", "siteUsage", { - "%1$S": EXTERNAL_ARGUMENT( + "%1$S": VARIABLE_REFERENCE( "value" ), - "%2$S": EXTERNAL_ARGUMENT( + "%2$S": VARIABLE_REFERENCE( "unit" ) } ) ) This creates an :python:`FTL.Message`, taking the value from the legacy string @@ -275,28 +275,31 @@ needs to be defined as a :python:`TextEl { "%S": FTL.TextElement('<span data-l10n-name="query"></span>') } ) .. note:: - :python:`EXTERNAL_ARGUMENT` and :python:`MESSAGE_REFERENCE` are helper - Transforms which can be used to save keystrokes in common cases where using - the raw AST is too verbose. + :python:`VARIABLE_REFERENCE`, :python:`MESSAGE_REFERENCE`, and + :python:`TERM_REFERENCE` are helper Transforms which can be used to save + keystrokes in common cases where using the raw AST is too verbose. - :python:`EXTERNAL_ARGUMENT` is used to create a reference to a variable, e.g. + :python:`VARIABLE_REFERENCE` is used to create a reference to a variable, e.g. :js:`{ $variable }`. :python:`MESSAGE_REFERENCE` is used to create a reference to another message, - e.g. :js:`{ another-string }`, or a `term`__, e.g. :js:`{ -brand-short-name }`. + e.g. :js:`{ another-string }`, e.g. :js:`{ another-string }`. + + :python:`TERM_REFERENCE` is used to create a reference to a `term`__, + e.g. :js:`{ -brand-short-name }`. Both Transforms need to be imported at the beginning of the recipe, e.g. - :python:`from fluent.migrate.helpers import EXTERNAL_ARGUMENT` + :python:`from fluent.migrate.helpers import VARIABLE_REFERENCE` __ https://projectfluent.org/fluent/guide/terms.html Concatenating Strings --------------------- It’s quite common to concatenate multiple strings coming from `DTD` and @@ -343,17 +346,17 @@ concatenate their values with HTML markup. Here’s how the Transform is defined: "searchResults.needHelp", { "%S": CONCAT( FTL.TextElement('<a data-l10n-name="url">'), REPLACE( "browser/chrome/browser/preferences/preferences.properties", "searchResults.needHelpSupportLink", { - "%S": MESSAGE_REFERENCE("-brand-short-name"), + "%S": TERM_REFERENCE("-brand-short-name"), } ), FTL.TextElement("</a>") ) } ) ), @@ -410,31 +413,31 @@ This is how the Transform for this strin .. code-block:: python FTL.Message( id=FTL.Identifier("containers-disable-alert-ok-button"), value=PLURALS( "browser/chrome/browser/preferences/preferences.properties", "disableContainersOkButton", - EXTERNAL_ARGUMENT("tabCount"), + VARIABLE_REFERENCE("tabCount"), lambda text: REPLACE_IN_TEXT( text, { - "#1": EXTERNAL_ARGUMENT("tabCount") + "#1": VARIABLE_REFERENCE("tabCount") } ) ) ) The `PLURALS` Transform will take care of creating the correct number of plural categories for each language. Notice how `#1` is replaced for each of these variants with :js:`{ $tabCount }`, using :python:`REPLACE_IN_TEXT` and -:python:`EXTERNAL_ARGUMENT("tabCount")`. +:python:`VARIABLE_REFERENCE("tabCount")`. In this case it’s not possible to use :python:`REPLACE` because it takes a file path and a message ID as arguments, whereas here the recipe needs to operate on regular text. The replacement is performed on each plural form of the original string, where plural forms are separated by a semicolon. Complex Cases ------------- @@ -468,17 +471,17 @@ category used in plural forms. For these reasons, it’s not possible to use id=FTL.Identifier("use-current-pages"), attributes=[ FTL.Attribute( id=FTL.Identifier("label"), value=FTL.Pattern( elements=[ FTL.Placeable( expression=FTL.SelectExpression( - expression=EXTERNAL_ARGUMENT("tabCount"), + expression=VARIABLE_REFERENCE("tabCount"), variants=[ FTL.Variant( key=FTL.NumberExpression("1"), default=False, value=COPY( "browser/chrome/browser/preferences/main.dtd", "useCurrentPage.label", )
--- a/layout/tools/reftest/selftest/conftest.py +++ b/layout/tools/reftest/selftest/conftest.py @@ -44,18 +44,18 @@ def runtests(setup_test_harness, binary, package_root = os.path.dirname(harness_root) options.update({ 'extraProfileFiles': [os.path.join(package_root, 'bin', 'plugins')], 'reftestExtensionPath': os.path.join(harness_root, 'reftest'), 'sandboxReadWhitelist': [here, os.environ['PYTHON_TEST_TMP']], 'utilityPath': os.path.join(package_root, 'bin'), }) - if 'USE_ARTIFACT_PATH' in os.environ: - options['sandboxReadWhitelist'].append(os.environ['USE_ARTIFACT_PATH']) + if 'MOZ_FETCHES_DIR' in os.environ: + options['sandboxReadWhitelist'].append(os.environ['MOZ_FETCHES_DIR']) else: options.update({ 'extraProfileFiles': [os.path.join(build.topobjdir, 'dist', 'plugins')], 'sandboxReadWhitelist': [build.topobjdir, build.topsrcdir], }) def normalize(test): if os.path.isabs(test):
new file mode 100644 --- /dev/null +++ b/mobile/android/app/src/main/res/color/calendar_view_text_selector.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item + android:state_activated="true" + android:color="@color/dtp_selection" /> + + <item + android:state_activated="false" + android:color="?android:attr/textColorPrimary" /> +</selector> \ No newline at end of file
new file mode 100644 --- /dev/null +++ b/mobile/android/app/src/main/res/color/time_picker_header_text_selector.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item + android:state_activated="true" + android:color="@color/dtp_header_text_active" + /> + + <item android:state_activated="false" + android:color="@color/dtp_header_text_inactive" + /> +</selector> \ No newline at end of file
new file mode 100644 --- /dev/null +++ b/mobile/android/app/src/main/res/color/time_picker_inner_radial_selector.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item + android:state_activated="true" + android:color="@color/dtp_selection" + /> + <item + android:state_activated="false" + android:color="?android:attr/textColorSecondary" + /> +</selector> \ No newline at end of file
new file mode 100644 --- /dev/null +++ b/mobile/android/app/src/main/res/color/time_picker_radial_selector.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item + android:state_activated="true" + android:color="@color/dtp_selection" + /> + <item + android:state_activated="false" + android:color="?android:attr/textColorPrimary" + /> +</selector> \ No newline at end of file
--- a/mobile/android/app/src/main/res/values/themes.xml +++ b/mobile/android/app/src/main/res/values/themes.xml @@ -87,16 +87,19 @@ <item name="bookmarksListViewStyle">@style/Widget.BookmarksListView</item> <item name="geckoMenuListViewStyle">@style/Widget.GeckoMenuListView</item> <item name="homeListViewStyle">@style/Widget.HomeListView</item> <item name="menuItemActionBarStyle">@style/Widget.MenuItemActionBar</item> <item name="menuItemActionModeStyle">@style/GeckoActionBar.Button</item> <item name="topSitesGridItemViewStyle">@style/Widget.TopSitesGridItemView</item> <item name="topSitesGridViewStyle">@style/Widget.TopSitesGridView</item> <item name="topSitesThumbnailViewStyle">@style/Widget.TopSitesThumbnailView</item> + <item name="android:timePickerStyle" tools:ignore="NewApi">@style/PhotonTimePicker</item> + <item name="android:datePickerStyle">@style/PhotonDatePicker</item> + <item name="android:calendarViewStyle">@style/PhotonCalendarView</item> </style> <!-- Make an activity appear like an overlay. --> <style name="OverlayActivity.Base" parent="Gecko"> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:backgroundDimEnabled">true</item>
--- a/mobile/android/app/src/photon/res/values/colors.xml +++ b/mobile/android/app/src/photon/res/values/colors.xml @@ -265,11 +265,15 @@ <color name="bookmark_folder_bg_color">#FCFCFC</color> <!-- PWA --> <color name="pwa_cancel_btn_press">#ededf0</color> <color name="pwa_cancel_btn">@android:color/transparent</color> <color name="pwa_confirm_btn_pressed">#1B73CC</color> <color name="pwa_confirm_btn_normal">#E60A84FF</color> - + <!-- Date/Time Pickers --> + <color name="dtp_header_background">#2B2B2B</color> + <color name="dtp_header_text_active">#0A84FF</color> + <color name="dtp_header_text_inactive">#B2B2B2</color> + <color name="dtp_selection">#FFFFFF</color> </resources>
--- a/mobile/android/app/src/photon/res/values/styles.xml +++ b/mobile/android/app/src/photon/res/values/styles.xml @@ -972,9 +972,33 @@ <style name="PwaConfirm.Cancel"> <item name="android:layout_alignParentRight">true</item> </style> <style name="PwaConfirm.Url"> <item name="android:layout_alignLeft">@+id/pwa_confirm_title</item> </style> + <style name="PhotonTimePicker" parent="@android:style/Widget.Material.Light.TimePicker"> + <item name="android:headerBackground">@color/dtp_header_background</item> + <item name="android:headerTimeTextAppearance">@style/PhotonPickerHeaderText</item> + <item name="android:numbersInnerTextColor">@color/time_picker_inner_radial_selector</item> + <item name="android:numbersTextColor">@color/time_picker_radial_selector</item> + </style> + + <style name="PhotonPickerHeaderText"> + <item name="android:textColor">@color/time_picker_header_text_selector</item> + </style> + + <style name="PhotonDatePicker" parent="@android:style/Widget.Material.DatePicker"> + <item name="android:headerBackground">@color/dtp_header_background</item> + <item name="android:headerMonthTextAppearance">@style/PhotonPickerHeaderText</item> + </style> + + <style name="PhotonCalendarView" parent="android:Widget.Material.Light.CalendarView"> + <item name="android:dateTextAppearance">@style/PhotonDayPicker</item> + </style> + + <style name="PhotonDayPicker" parent="android:Widget.CalendarView"> + <item name="android:textColor">@color/calendar_view_text_selector</item> + </style> + </resources>
--- a/mobile/android/locales/l10n.toml +++ b/mobile/android/locales/l10n.toml @@ -110,17 +110,16 @@ locales = [ "zh-TW", ] [build] exclude-multi-locale = [ "ach", "ia", "km", - "lij", "ltg", "meh", "mix", "tl", ] [env] l = "{l10n_base}/{locale}/"
--- a/mobile/android/locales/maemo-locales +++ b/mobile/android/locales/maemo-locales @@ -47,16 +47,17 @@ id is it ja ka kab kk kn ko +lij lo lt lv mai ml mr ms my
--- a/mozglue/linker/ElfLoader.cpp +++ b/mozglue/linker/ElfLoader.cpp @@ -70,37 +70,39 @@ void * if (handle) handle->AddDirectRef(); return handle; } const char * __wrap_dlerror(void) { - const char *error = ElfLoader::Singleton.lastError; - ElfLoader::Singleton.lastError = nullptr; - return error; + const char* error = ElfLoader::Singleton.lastError.exchange(nullptr); + if (error) { + // Return a custom error if available. + return error; + } + // Or fallback to the system error. + return dlerror(); } void * __wrap_dlsym(void *handle, const char *symbol) { if (!handle) { ElfLoader::Singleton.lastError = "dlsym(NULL, sym) unsupported"; return nullptr; } if (handle != RTLD_DEFAULT && handle != RTLD_NEXT) { LibHandle *h = reinterpret_cast<LibHandle *>(handle); return h->GetSymbolPtr(symbol); } - void* sym = dlsym(handle, symbol); - ElfLoader::Singleton.lastError = dlerror(); - - return sym; + ElfLoader::Singleton.lastError = nullptr; // Use system dlerror. + return dlsym(handle, symbol); } int __wrap_dlclose(void *handle) { if (!handle) { ElfLoader::Singleton.lastError = "No handle given to dlclose()"; return -1; @@ -415,44 +417,44 @@ SystemElf::Load(const char *path, int fl /* The Android linker returns a handle when the file name matches an * already loaded library, even when the full path doesn't exist */ if (path && path[0] == '/' && (access(path, F_OK) == -1)){ DEBUG_LOG("dlopen(\"%s\", 0x%x) = %p", path, flags, (void *)nullptr); ElfLoader::Singleton.lastError = "Specified file does not exist"; return nullptr; } + ElfLoader::Singleton.lastError = nullptr; // Use system dlerror. void *handle = dlopen(path, flags); DEBUG_LOG("dlopen(\"%s\", 0x%x) = %p", path, flags, handle); - ElfLoader::Singleton.lastError = dlerror(); if (handle) { SystemElf *elf = new SystemElf(path, handle); ElfLoader::Singleton.Register(elf); RefPtr<LibHandle> lib(elf); return lib.forget(); } return nullptr; } SystemElf::~SystemElf() { if (!dlhandle) return; DEBUG_LOG("dlclose(%p [\"%s\"])", dlhandle, GetPath()); + ElfLoader::Singleton.lastError = nullptr; // Use system dlerror. dlclose(dlhandle); - ElfLoader::Singleton.lastError = dlerror(); ElfLoader::Singleton.Forget(this); } void * SystemElf::GetSymbolPtr(const char *symbol) const { + ElfLoader::Singleton.lastError = nullptr; // Use system dlerror. void *sym = dlsym(dlhandle, symbol); DEBUG_LOG("dlsym(%p [\"%s\"], \"%s\") = %p", dlhandle, GetPath(), symbol, sym); - ElfLoader::Singleton.lastError = dlerror(); return sym; } Mappable * SystemElf::GetMappable() const { const char *path = GetPath(); if (!path)
--- a/mozglue/linker/ElfLoader.h +++ b/mozglue/linker/ElfLoader.h @@ -3,16 +3,17 @@ * You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef ElfLoader_h #define ElfLoader_h #include <vector> #include <dlfcn.h> #include <signal.h> +#include "mozilla/Atomics.h" #include "mozilla/RefCounted.h" #include "mozilla/RefPtr.h" #include "mozilla/UniquePtr.h" #include "Zip.h" #include "Elfxx.h" #include "Mappable.h" /** @@ -441,22 +442,23 @@ protected: /** * Forget about the given handle. This method is meant to be called by * LibHandle subclass destructors. */ void Forget(LibHandle *handle); void Forget(CustomElf *handle); - /* Last error. Used for dlerror() */ friend class SystemElf; friend const char *__wrap_dlerror(void); friend void *__wrap_dlsym(void *handle, const char *symbol); friend int __wrap_dlclose(void *handle); - const char *lastError; + /* __wrap_dlerror() returns this custom last error if non-null or the system + * dlerror() value if this is null. Must refer to a string constant. */ + mozilla::Atomic<const char*, mozilla::Relaxed> lastError; private: ElfLoader() : expect_shutdown(true), lastError(nullptr) { pthread_mutex_init(&handlesMutex, nullptr); } ~ElfLoader();
--- a/package-lock.json +++ b/package-lock.json @@ -1,17 +1,17 @@ { "name": "mozillaeslintsetup", "requires": true, "lockfileVersion": 1, "dependencies": { "acorn": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.2.tgz", - "integrity": "sha512-zUzo1E5dI2Ey8+82egfnttyMlMZ2y0D8xOCO3PNPPlYXpl8NZvF6Qk9L9BEtJs+43FqEmfBViDqc5d1ckRDguw==" + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz", + "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==" }, "acorn-jsx": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", "requires": { "acorn": "3.3.0" }, @@ -57,16 +57,25 @@ "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { "sprintf-js": "1.0.3" } }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.12.0" + } + }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "requires": { "array-uniq": "1.0.3" } }, @@ -252,16 +261,25 @@ "ms": "2.0.0" } }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.12" + } + }, "del": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", "requires": { "globby": "5.0.0", "is-path-cwd": "1.0.0", "is-path-in-cwd": "1.0.1", @@ -317,16 +335,38 @@ "domelementtype": "1.3.0" } }, "entities": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" }, + "es-abstract": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", + "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", + "requires": { + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.3", + "is-callable": "1.1.4", + "is-regex": "1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "requires": { + "is-callable": "1.1.4", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "eslint": { "version": "4.19.1", "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", @@ -334,26 +374,26 @@ "requires": { "ajv": "5.5.2", "babel-code-frame": "6.26.0", "chalk": "2.4.1", "concat-stream": "1.6.2", "cross-spawn": "5.1.0", "debug": "3.1.0", "doctrine": "2.1.0", - "eslint-scope": "3.7.1", + "eslint-scope": "3.7.3", "eslint-visitor-keys": "1.0.0", "espree": "3.5.4", "esquery": "1.0.1", "esutils": "2.0.2", "file-entry-cache": "2.0.0", "functional-red-black-tree": "1.0.1", "glob": "7.1.2", - "globals": "11.5.0", - "ignore": "3.3.8", + "globals": "11.7.0", + "ignore": "3.3.10", "imurmurhash": "0.1.4", "inquirer": "3.3.0", "is-resolvable": "1.1.0", "js-yaml": "3.12.0", "json-stable-stringify-without-jsonify": "1.0.1", "levn": "0.3.0", "lodash": "4.17.10", "minimatch": "3.0.4", @@ -389,55 +429,56 @@ } }, "eslint-plugin-no-unsanitized": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-3.0.2.tgz", "integrity": "sha512-JnwpoH8Sv4QOjrTDutENBHzSnyYtspdjtglYtqUtAHe6f6LLKqykJle+UwFPg23GGwt5hI3amS9CRDezW8GAww==" }, "eslint-plugin-react": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.1.0.tgz", - "integrity": "sha1-J3cKzzn1/UnNCvQIPOWBBOs5DUw=", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.10.0.tgz", + "integrity": "sha512-18rzWn4AtbSUxFKKM7aCVcj5LXOhOKdwBino3KKWy4psxfPW0YtIbE8WNRDUdyHFL50BeLb6qFd4vpvNYyp7hw==", "requires": { "doctrine": "2.1.0", "has": "1.0.3", - "jsx-ast-utils": "1.4.1" + "jsx-ast-utils": "2.0.1", + "prop-types": "15.6.2" } }, "eslint-plugin-spidermonkey-js": { "version": "file:tools/lint/eslint/eslint-plugin-spidermonkey-js" }, "eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", "requires": { "esrecurse": "4.2.1", "estraverse": "4.2.0" } }, "eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==" }, "espree": { "version": "3.5.4", "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", "requires": { - "acorn": "5.6.2", + "acorn": "5.7.1", "acorn-jsx": "3.0.1" } }, "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esquery": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", "requires": { "estraverse": "4.2.0" } @@ -508,16 +549,21 @@ "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", "requires": { "circular-json": "0.3.3", "del": "2.2.2", "graceful-fs": "4.1.11", "write": "0.2.1" } }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -537,19 +583,19 @@ "inflight": "1.0.6", "inherits": "2.0.3", "minimatch": "3.0.4", "once": "1.4.0", "path-is-absolute": "1.0.1" } }, "globals": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.5.0.tgz", - "integrity": "sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ==" + "version": "11.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", + "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==" }, "globby": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", "requires": { "array-union": "1.0.2", "arrify": "1.0.1", @@ -602,19 +648,19 @@ "version": "0.4.23", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "requires": { "safer-buffer": "2.1.2" } }, "ignore": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz", - "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==" + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, "inflight": { "version": "1.0.6", @@ -651,16 +697,26 @@ "run-async": "2.3.0", "rx-lite": "4.0.8", "rx-lite-aggregates": "4.0.8", "string-width": "2.1.1", "strip-ansi": "4.0.0", "through": "2.3.8" } }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "is-path-cwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", @@ -682,21 +738,34 @@ "path-is-inside": "1.0.2" } }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "requires": { + "has": "1.0.3" + } + }, "is-resolvable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=" + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -708,48 +777,59 @@ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" }, "js-yaml": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", "requires": { "argparse": "1.0.10", - "esprima": "4.0.0" + "esprima": "4.0.1" } }, "json-schema-traverse": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" }, "jsx-ast-utils": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", - "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", + "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", + "requires": { + "array-includes": "3.0.3" + } }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "requires": { "prelude-ls": "1.1.2", "type-check": "0.3.2" } }, "lodash": { "version": "4.17.10", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "3.0.2" + } + }, "lru-cache": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", "requires": { "pseudomap": "1.0.2", "yallist": "2.1.2" } @@ -795,16 +875,21 @@ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, + "object-keys": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==" + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { "wrappy": "1.0.2" } }, @@ -877,16 +962,25 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "progress": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=" }, + "prop-types": { + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", + "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==", + "requires": { + "loose-envify": "1.4.0", + "object-assign": "4.1.1" + } + }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
--- a/package.json +++ b/package.json @@ -3,13 +3,13 @@ "description": "This package file is for setup of ESLint only for editor integration.", "repository": {}, "license": "MPL-2.0", "dependencies": { "eslint": "4.19.1", "eslint-plugin-html": "4.0.3", "eslint-plugin-mozilla": "file:tools/lint/eslint/eslint-plugin-mozilla", "eslint-plugin-no-unsanitized": "3.0.2", - "eslint-plugin-react": "7.1.0", + "eslint-plugin-react": "7.10.0", "eslint-plugin-spidermonkey-js": "file:tools/lint/eslint/eslint-plugin-spidermonkey-js" }, "devDependencies": {} }
--- a/python/l10n/fluent_migrations/bug_1457021_js_subdialogs.py +++ b/python/l10n/fluent_migrations/bug_1457021_js_subdialogs.py @@ -1,16 +1,16 @@ # coding=utf8 # Any copyright is dedicated to the Public Domain. # http://creativecommons.org/publicdomain/zero/1.0/ from __future__ import absolute_import import fluent.syntax.ast as FTL -from fluent.migrate.helpers import MESSAGE_REFERENCE, EXTERNAL_ARGUMENT, transforms_from +from fluent.migrate.helpers import MESSAGE_REFERENCE, TERM_REFERENCE, VARIABLE_REFERENCE, transforms_from from fluent.migrate import REPLACE def migrate(ctx): """Bug 1457021 - Migrate the JS of Preferences subdialogs to Fluent, part {index}.""" ctx.add_transforms( 'browser/browser/preferences/permissions.ftl', @@ -37,20 +37,20 @@ blocklist-item-moz-full-name = { COPY("b blocklist-item-moz-full-desc = { COPY("browser/chrome/browser/preferences/preferences.properties", "mozfullDesc2") } """) + [ FTL.Message( id=FTL.Identifier('blocklist-item-list-template'), value=REPLACE( 'browser/chrome/browser/preferences/preferences.properties', 'mozNameTemplate', { - '%1$S': EXTERNAL_ARGUMENT( + '%1$S': VARIABLE_REFERENCE( 'listName' ), - '%2$S': EXTERNAL_ARGUMENT( + '%2$S': VARIABLE_REFERENCE( 'description' ) } ) ) ] ) @@ -69,17 +69,17 @@ fonts-label-default-unnamed = id=FTL.Identifier('fonts-label-default'), attributes=[ FTL.Attribute( FTL.Identifier('label'), REPLACE( 'browser/chrome/browser/preferences/preferences.properties', 'labelDefaultFont', { - '%S': EXTERNAL_ARGUMENT( + '%S': VARIABLE_REFERENCE( 'name' ) } ) ), ] ) ] @@ -93,20 +93,20 @@ fonts-label-default-unnamed = sitedata-total-size-calculating = { COPY("browser/chrome/browser/preferences/preferences.properties", "loadingSiteDataSize1") } """) + [ FTL.Message( id=FTL.Identifier('sitedata-total-size'), value=REPLACE( 'browser/chrome/browser/preferences/preferences.properties', 'totalSiteDataSize2', { - '%1$S': EXTERNAL_ARGUMENT( + '%1$S': VARIABLE_REFERENCE( 'value' ), - '%2$S': EXTERNAL_ARGUMENT( + '%2$S': VARIABLE_REFERENCE( 'unit' ) } ) ) ] ) @@ -141,32 +141,32 @@ site-data-removing-dialog = ) ), FTL.Message( id=FTL.Identifier('site-data-settings-description'), value=REPLACE( 'browser/chrome/browser/preferences/preferences.properties', 'siteDataSettings3.description', { - '%S': MESSAGE_REFERENCE( + '%S': TERM_REFERENCE( '-brand-short-name' ) } ) ), FTL.Message( id=FTL.Identifier('site-usage-pattern'), value=REPLACE( 'browser/chrome/browser/preferences/preferences.properties', 'siteUsage', { - '%1$S': EXTERNAL_ARGUMENT( + '%1$S': VARIABLE_REFERENCE( 'value' ), - '%2$S': EXTERNAL_ARGUMENT( + '%2$S': VARIABLE_REFERENCE( 'unit' ) } ) ) ] ) @@ -178,20 +178,20 @@ site-data-removing-dialog = id=FTL.Identifier('languages-code-format'), attributes=[ FTL.Attribute( FTL.Identifier('label'), REPLACE( 'browser/chrome/browser/preferences/preferences.properties', 'languageCodeFormat', { - '%1$S': EXTERNAL_ARGUMENT( + '%1$S': VARIABLE_REFERENCE( 'locale' ), - '%2$S': EXTERNAL_ARGUMENT( + '%2$S': VARIABLE_REFERENCE( 'code' ) } ) ) ] ) ]
--- a/security/manager/ssl/tests/unit/test_signed_apps.js +++ b/security/manager/ssl/tests/unit/test_signed_apps.js @@ -455,13 +455,60 @@ add_signature_test(PKCS7WithSHA256, certdb.openSignedAppFileAsync( Ci.nsIX509CertDB.AppXPCShellRoot, original_app_path("app_mf-1-256_sf-1-256_p7-1-256"), check_open_result("Multiple signatures should work if SHA-1 is " + "disabled by policy (if SHA-256 signature verifies)", Cr.NS_OK)); }); +var cosePolicies = [ + COSEAndPKCS7WithSHA1OrSHA256, + COSERequiredAndPKCS7WithSHA1OrSHA256 +]; + +// PS256 is not yet supported. +var coseTestcasesStage = [ + { name: "autograph-714ba248-stage-tomato-clock-PKCS7-SHA1-ES256-ES384", + expectedResult: Cr.NS_OK, + root: Ci.nsIX509CertDB.AddonsStageRoot }, + { name: "autograph-714ba248-stage-tomato-clock-PKCS7-SHA1-ES256-PS256", + expectedResult: Cr.NS_ERROR_SIGNED_JAR_MANIFEST_INVALID, + root: Ci.nsIX509CertDB.AddonsStageRoot }, + { name: "autograph-714ba248-stage-tomato-clock-PKCS7-SHA1-ES256", + expectedResult: Cr.NS_OK, + root: Ci.nsIX509CertDB.AddonsStageRoot }, + { name: "autograph-714ba248-stage-tomato-clock-PKCS7-SHA1-PS256", + expectedResult: Cr.NS_ERROR_SIGNED_JAR_MANIFEST_INVALID, + root: Ci.nsIX509CertDB.AddonsStageRoot }, +]; + +var coseTestcasesProd = [ + { name: "autograph-714ba248-prod-tomato-clock-PKCS7-SHA1-ES256-ES384", + expectedResult: Cr.NS_OK, + root: Ci.nsIX509CertDB.AddonsPublicRoot }, + { name: "autograph-714ba248-prod-tomato-clock-PKCS7-SHA1-ES256-PS256", + expectedResult: Cr.NS_ERROR_SIGNED_JAR_MANIFEST_INVALID, + root: Ci.nsIX509CertDB.AddonsPublicRoot }, + { name: "autograph-714ba248-prod-tomato-clock-PKCS7-SHA1-ES256", + expectedResult: Cr.NS_OK, + root: Ci.nsIX509CertDB.AddonsPublicRoot }, + { name: "autograph-714ba248-prod-tomato-clock-PKCS7-SHA1-PS256", + expectedResult: Cr.NS_ERROR_SIGNED_JAR_MANIFEST_INVALID, + root: Ci.nsIX509CertDB.AddonsPublicRoot }, +]; + +for (let policy of cosePolicies) { + for (let testcase of coseTestcasesStage) { + add_signature_test(policy, function () { + certdb.openSignedAppFileAsync( + testcase.root, + original_app_path(testcase.name), + check_open_result(testcase.name, testcase.expectedResult)); + }); + } +} + // TODO: tampered MF, tampered SF // TODO: too-large MF, too-large RSA, too-large SF // TODO: MF and SF that end immediately after the last main header // (no CR nor LF) // TODO: broken headers to exercise the parser
new file mode 100644 index 0000000000000000000000000000000000000000..40b4fc78575d014751f9d0312105fd749e677219 GIT binary patch literal 459148 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�oHXW{NPG<uk2W}8Eh(<vj* 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%0Dy|F^Kclq;eX2uXtI?N_KU3#Q}Z@;cE2x^LiM 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�Yd$T#0Xn+l;R~#qSGhdD%(ucwejic^gxT0fEtI4fQ&hdRFD$l>Rk)v(;g5 z+&=j+H$PBXD_>RERXtzc)|=yFsgz|mg@wI<zYs~Db)Vhm={@k_M6)xwcIb%@|4Y@c zJKuTe{NLen3Hkp~pp%*Xe*`+yJlK<Ow#M!nl#>%mh_{Sqq)iRW87w8iW8#hXCYeTg zO%08+1cgy3v{J7HTTv*8jrTGH8>5HQ5g0-Ry2JLKzH(pLcVD?<pW;5f{OaaBeCvK| z$&rnGfPap@fPf(PX^munf!KT2AOOHX`V%7&pg=&!MwNb0<X0)ie}MYMdaZ9j{Ncjx zSk41$Z)JdhG`cc06sn_P7Tl2#Z_kB4qJUn>5(9cT&*A`Ni4mZYM8kRK7biggKDtjl zh|MX89x@_hg5L&t?%63#j0}Ef@m<hxaBUo4O|&8S0RCAIE{-CZ2G3vYS64?~x+}?o z_yx$|yga;ZcqlTDE_`Jc78b;^6$DF5%3ax6N?u@H6fr+kI=qfPg5MK;C|-9vHpY>d zW3Y`+*RQB!DGoZS&$zR@4=;p~nRh=jkM}QRXgNYczz@FiK^fw2<LkW_<ws>3)<D!@ z``B1{uFx0XO<x!O&m5y4naCG1>X0AY!(EHP8*El`HSqqt6t?Qtbjquc<UJAB6OoOS zz_{jT@kDAds`?;L;epzbu`c;AiZg8A!MXvFqp&h6ic-6cBLkTj+GXw&f3w8s@pEs{ zc4uMjLZNp`2!vH%iYbo#>TDC{$t2mbCBf&%>eW{^8LW<_wG*lDbFbdsC_QPQZ%K{b z<6hmM8)3__y3R=DA?1;%cc4Jt*PA=m-jAYZ30|LASstyqAe0!P#VaMA7UQEygN<&% z?V&c0We5`}c2{EMFd|16SfnH<c@l<xg=l6xH`m@2&kgfR@{kJmJ@w4I9nP8a&oIcI zYv0j5>nPy%CF#>^T<w!op6bbC<jGGGe#SBHA4XoH#W&86mW0fu2UU!y6R8ra`6IN9 zSQVU##~Bn48i6kKZVG=!fL8ArtF?^JP3*svpWXv0u|*SH^<)Lq%8-%Urj0us3hK7D zZ#VEF!w3czyFbA+lakv~NPX%ESTruZJv7%6JkFLc`RY`YU#**M)(dHR{E1&1rR~6G z_jIo<65`*8!1Q0BIiHK4HVv@#-r-`huC5MFoyB)%1fBV!M-o^W=%K5Oc0Hqc0Qyo^ zy>>uxBuOxODp5QepVUsv2Kt{a)-h#Y&B{z``mIlH6biQadHTC%siLH}J2sC3L+T=M z<c3Q$N9Rr{ahjOtzlvWb9}_qg5!0bG(Mz6eRl5F|N^~<0LMpft1t%!Rx5RTB)h}|p zKnePet}mE>5HM!)B{}AxE_<bDo1sJ7u3!T!L3jsgr0G~JD}zu+jY%_rBXS@viEU>D z7w<;56Dy3mZ3U`~E0(BMwAYSLs`nw!TJ*qYd!Qjs!wfA;7wBVs!Xv}b<g%rlisCHu z-N}enxF%sfDn2U<V}macaas82Xi{TUrk%yJvg15ScI6S%?tO(DH)dGcwz|*jI7+)J zSt$~VsOHwqjCorAhA#xhHI02oE>`*U!f3U&N1Ub&0`o<mN`B_W&he1Vm{v`qHpV*; z;Myqsq0U3h)Neim&`|1~yo{E7n~E4sjIvVVIKu8@Mp_l_D*H44T@O(}QzLUqRkkzT z;6C#tBOHR;BAc>~qK>=0DQzUUJq>Bv+R840ggbWus+8&&*&=A2e^mA^3`iU}mSO+F z_dpxcEtAHzTg<rDmefiGc7^<b%j0UYS%AmlWf^9!5i(R^&Q&ffCw%FAraYI58i^T@ z+lrIo^x&CV5+1U;9nrBfUL(<AJ?o7NVS2W!ERe&&;Ba5m$-8j67DQ<#>;#-H#N>}w zf#t*rA~>EvgZuIF6e7m8iV*Vgo<`5XHl!p-p-<I6UsfPipmNOFS=Yj*MgA>t<@pzK zWzc3f+E_SLQtBz51y_-6^nlRS*q@PX1XUsjP%M;zJEz=4ZBbh{-BIAA^-&`NyI5S~ zlOJdaQj5`2xMT<F_4yDz{zFIAw<FK@$Z}?1Qd?A3*6v{1{Oknm1X*V>uG3Hl*fG)- zaFVb8@xOy>mtuEAOhw^yDSJ;FRBg@h@`n<k#oY9`-GojthuC1d;%uQX&?Gxq!xFrZ z*b_@mGtewrkRx`u8$P_oDzA^JxUD{&1>8o;K%BqzfQh1AJNtVIM~r;XG@2aaxbic> zL^tiV5%1cqW|<FGMW)2WU{WSUGML?ei+ILMo1?a-tR%y`ysE$&@;r~K_jN{yYqH|s z3E~#&pl7dO%SP%_ae%F2xj;fg_cC`MZEdL@_$~XJB{7+eG+pfmQIBVxIees?WI(Bn z@!T~SHTQ1W52d~3gOaHZ!Gih4sS`wZ-SJ3OeoiZR1p}Nds&Q|=jingT8?82WHTTC` z;6pNX|3-e$B(eDNjNcD5FEmKp>-ZvrDOnOLLAhG<Sh*DbM%7uDWCIc(M&6AA4+`*~ zl2qW+cyRMJ8@Dh&0w7jChkd>@DW;b>atg}P#e)4qr=vztsgEj+A5{<AOuKV2w7Wlu zwISA=vs_fX)Y47dFybAvZDk&)?HgQ%&R$s>BMt$hTEJG1soyOcwGod8Z^;lVc56lW zO&B81l;RcAZj|Jop~Aw$u?HusN(IXn4x=6uo?qcYX)4JJgT=mujlT}EDl=l^G)VlG zwm$9C*SS)I;<xP9;Lc>ZNuHi^cVsxpwZdPn>}U(m9H$pKAm}gCidiQIi@L^PsygQj zywqVCHfZD+1t{pmI%GTaAIE>>3b>$&JBQnlS8brCqbVZjZiYHlM0YsvYc_?f0*38h zo>2yo=X?uD0Vp#IrJ5a97dybU$b|%w9<BMo92(^p#HFvxSXsj4d^4?!pd`skL=~n; zrQj`7a|!v6qTp8jU(8r`?c9Sk#ca7b*h&AAXeB%qg8U4Usv7_t7G??{G9SG;=!kd8 z#i0uy$G9$ADZ6oJhMnl8Ofg5nl1h5Ik-fQu0{&7y?KRf?t~pjkX(H!ifq1P#8B;!W zl((ex8iSA95&%6t=y9(#x9~0Y5Yg;b2nkM9-`jg^MBa)rq-vHQNO9#{%;|W%8R6F7 z$+EOBI0IyO6YXp$Yi=0WE*5Y`-1F_Z>$!iPW;8WA`Hmwi$iX=5#PscY31>6ffv+wb z9Ni@NnP}>g^zlehWRqvS%hOZOs?Be^50`*Kr%c5#_r>Eo__D!$V%JGCN)1UTH~?kG zQ`m>lNIH~XS8{c~c8hfAxwWy`?3Pzi)I~u(*ov8gv^im^2ZrBr#oESz$slxxNv7^e ztc;<=X=QL=8znFO+f!38BaPo724Q$Q;jXp8P_$v3S(jXnWJ+=9P;+%)v6gev(HuM( zC3<hbMhXKJy{C<5w??UkA9n{cDhUiFASDJWTVp{ygU_JR7hhjh<xK6zcY<n31+Q>1 zf^2g(c2qAP9xWJaI=rfy>uTCQ0lFAQ5%;M!7TP>`_55r{oFNBey646!Lv~UC(EYE= z^%|4vWnNn^xUVDLEC}DUnWL(O*@cgW(`b@AtHj-9sZIM^YSTY&0zJ0`6_lFTJ+&&n zZWT22jz>eO$+PuBVXvUnax>lv9i)06;~O)o+X!Y->Q*pAagWh`Om4W?0>+zw*~|{x zk9paH3O&ig-pSa(XnG-iS$*-53+_ifg8dCgkqSM39}IC>CoFozr6+2oXm>^&P&3uY zFgwnRM;_S-11cp9L9Y4wMSlmFr~h0xWaS3n-k`)~*-PId(2e2fM>}0p!#J7#!;C>m zsuY+Y9Y5OGKY*^I!J6DU+T<`J9$uuCEx0%9F1w3(6D{B!1izWxo`AGk^!;AFH8Pu- zTY2m_5@Ee0Od&}joqz3OePEaq1E*b{1ZYf=Od~9B3rzVq<rhU&F3KD*d#Cs+@KfxC z%+DW5ndoyNU2945m_TzOsFKmrN>f&#t$HOB9cgE?@Z~0R^^^S+=ZW39M-_(dg{^_4 z(SH0=NTOk-x?lTuEc)&B9qV+zgI7X#9Lc-?O1BEuj7#FqQmIE=u`p&fj|=gBrZ;Sy zjOsS)qn=CpN|(c*(8{!Kz+ho7qZR*cLyFuvlw$QLJOl+ff?j<Q7lb`6oh@bpQp%=v zyAu{Z*4&R<LAN~n1o=F=lPHngrh!zs)9!@QkK+aLvcX*$Txq)%^&?J3_FebAHyF!g zA^k_(*MNmqdw%lwE5m}}w$ysj1@aa3v&C4G{H?@jK<q31y-*|6W<j;o4uPBILi2Hv z`;iw*+k6sn(O3Rdo(4wmjjAPmV5g-s;4(`T79NPqdZMpYO%|eoV~^?>dRZj+9*|e4 zPRXsxCF+JNbcr+dXo4c979IAME%LWnSZu4`0*C1s)uhM_S$0B4hm#iODj@BYSk&eE z(w;*<rLFYA!lR(`UkNR#cLUhp>$LKXmNM~oTsUktclt0#h9LcJ!9%ptmyp12H`}#W zMJi;qJftT&Ej_+z?99)I*qdo&nC7<B#&$YuyF9+c*(VJl<jM3nE#!Af(>p_Byehve zw1#V{?gJrLtBdv``(m~j`bw1hevOTL-m{EWLMzt>K-iu@k3!?Zz1DAv;l_AkQ#n?i zHaS72iMrZO%bt33_F4LVN9G2n^omwvkU*}V(xP#^#=)8q)>lE9=GnAxw8TfIT#!;# zY&v-5srIt|fD%q6G&d5pB@skx{C%Os4ckl~gf$Zls(D>ZJ`k;%0RUG0^sh{P-R+Lk zwgEbh^Ox{H#(M3I!wr<K>+i?l(36xiuKMkapDu$XwKx-F#Vq2m_m~BL65~;a=Ee-I z@?4t$xK~euq#2w?r~gJaX4To>K<}V>pV=Q#eNkDN383)(jiiN^j+Kzg!W46#Vh9jr zD~1fdPFNW)c>e5KhSuxF8LwaD{|iK^_XU=D;edcF;r{<>#<4K`&qw__=9LXA_UOe3 zdD;BBW|1@*vw;Gs!D854VOdutYf+KNRDsA+EgGRKMj_I&#WY6V@@})rRe}5L`<pFy z?kamt?lsrzNI`Tnn%@>52uOc<WkDDO=-B_axa7Ye_9R6-|1%+Y+H1+Fsji+61Al;k z@}E{4?m^-i%D%`nyjR5k%WeNrjQ5f4!4Ux8_~h~j6bwwFo#*M^ss70|@&3_eVn^iw z9Eco<97Ks22q^v?@Av3ejnRbL0vM>jg>Q2llwVX<Kte=DND89ZOuu_zczVzid3bbo zU}9uuXljfOpPblR3e@`(4wRD8RZaUaw>Y^OMp{)?S3p5RL*%75vlAS<AYyrObzx<R zjh@-lpHVa`Ju`#P+t|S3WqorL5RuapRFu>dRh88>rZi`!yUW|_`vV*xFc&1G+YJNj zg^G)a5fTv_5fdfno|B&ZMM}a#gOl~Z%0$IQ#zyz616*5Q-VUm#DN0^fUR_yR;qx1y zuC_P-)==@TBxSXA2B6d9>h-z1zP!D-`CQ<mXBWoAedpi=Sa};dT6&tg+WHzeSiHYZ zUT%Jjo~{CBZ+G*)gNBNZl9u|+&d`5p>srmpOn`w3#5yxEOS84P^ezTrbI8llWl1hc z4SCy%RWPuwo=XuENI1>gO@exDodpGpG!-&)8^{-i*lQtp4EMI4Y*iVhCg)7tPL+Ss zMrsc&cBAHeGko*b#)X~5Bw-f)NNjdOk)f$}VRG##xYL7erVEr>A36(t`F>V~MBFEZ zlx8cn1T0odk%JN_g=hqm?%x1057-OIW$cUd32I<+n+{D+a{!1{3ORIyv$7DjrGHv1 zb!T785r|)6x+*9Z(e$V>0FG#)7$t-XS9TLE`;`;zR7#od7XdGI$7CYdCGi_7A5ezN znvsRfwldlL*TPW`&-(Uo$88bcb%$o6o}rJoIFulhn!PLVn`_CyjgnnAX5?qXwJ@|7 zMVLzp4NgpY1K@_(l7b__MVOJ+i@=TBDL`hrO4d^+xGZAQ6x<m*5WBg$z8!UmUaP)t zdUxMAAh+|G_#7xaLj>DqVk)YbEI<d;jM#U7nKuf`<PKkKbOLSW=Wq5@W3kQs9uz4M z7c0mtNajCbUtGG&NDg`{liu}z5a-plF87@DdvysskL9IuTuom=J0&wQ>>muX{-roN z{;pln7~=m>w$RE!Dmrg=5nm6|Z}W*73=a~M`|PIPw28Xc64sm$@o(+sT2xgmw&t0y z;9L4RLxv`-B6!<G@6viT(V|x=JevUUB5LfZPN>w8K&HeMFgUzSL-{`(c~ehCUNF~r zCeZ8pih)hPbhEwVvoMc2p-ZDzYc+Fv#r;#`=UzXzX=B^tm~Zjm+si<YJSaWN$=jIW zD!9l*e9v^Tpk@7Rx60Dmc>sd%&EJ|cc)udm9CEJ(n;(1S<y53v{J2H^MGEdjm~*B~ zZmp~b4|*)~&~9XoTxjkKMTo<+NsMW=xeVITZ%~es>Phtff*&)E?ld!)(~1<=GAQ($ zCK5=^;M-f{D}M><d*`yEln5YIMh8xA@e=`8Oir6m%Wp+cG?;lEFXgY~RJL6RTu2Ss z<L{FQH>>@m#Gu0{5OX3)T>H_KJ1i*eWhN<>GzRUeF4d=zT+5IhyM@P7+2c}5jpXfi zpzD|=l%&@CS0_n!Wx|M^vS={3onZtgiQpnIvX(e>m(ajl8~pQ;9K?xlRJD3-@#ZyK zSA;vcT+t@rp>tr({gu?(SwS*Q5@RNe4m|TXS=cT~O{kd|j5WvfMyrg%*0<7nh6AI= zKF!DXsh`3HXV89al)XkunRYMPBe+JjC;&-r(Q0Wkkoh!!yNSG*Wr%ym*7a25c17j= z3X_hj&S<+F)e^`p^TuBs$V=m{xbrtoGsF3<X7aOu1^vxD+k6ISPSsvbXmbB4JT~X@ z*iVf_m}a@|rPxZaRqb_g{>$lbh^AzAnV>Qt>bN_Qwr@`1CulAJ?|~BHwo?|pJyF0@ zCv?F50k1@2U>2GY@@AMmE`x~0+0~RrBLeSE=3E+>y~Jx<IhM5g{V-1<M*tMilIQ#^ z!qjB<j+CqZcD7ZG-gDr{!J_QTjr?34YE}a~I~u0Q)?OP5>s5^X2AATFPVUjiqg>@r z+|#_5vy!-h2qp+kI?La6=wSp^7$f-FT=%YjbV$+PKCf|e;FhD!1|?<K7xR4%BloXO zM9v$k)}=vYOlKax;RG<<%Ud~+(Dt%rfhDu17&K)BEfwb;5Ktr8`xC-(`nN^xmSYZo z%cN+9EvUHV26CH16mPfHJ<d3jHgaTnV+^#*mr@~pp6zWwQ3JhtM7*5)<ouX)OlDq1 zdU(Y_&y}%DkvvWBCqv_QtSMov$Gsx-+Ui7yEty6=Fh_NB*t_E?m!Uk1LcXy-G<Cjd zAF`UxSeFIkt<;~dG48^=ID6h2i;v)N(jF6sSUzytCW82tV!*b{LUup<>GPa9lD^vp znDCoRijCP|uBMQX^IIvSIUF{$L1N+@;l<^*!|LP73V)t$?)${I9fV{Mc<u>spevMB z5eHMPxT@>1Pn0CP%9a=i3-&3rN7qtXru?%TM+fk6%x&!8^Fne%S(%Uj1XOWm;wC`t zH8gBe#{OR81|xFfS6$+{8d|H9W!-Rnd<L8OmnTvQCl{m5WSGT;RI}F5cdQ9)^s&~g zX-8GLcI0v+;Hq4_)1**Tm%Sb49rSa>ymmLzA<^^<g|W#;gWl#o*SC5Z5A6V>FK1Dl zYBQ*>DfGQCHefC0<!V*V>6ZKREcj+(!@t6a=_E4~49Qp(>o#C1O2(Gi1IgXjEjIEJ zyp~2ueQ(HNdhFSSS;ESk!8~`v?h}wbbCYuN#gftYttS<sSt=EyVEORvCgp5ph96Fv zT_~vA^eaGZo%SA1cDY!iGZo-1YNjQ4mSrY%b9X)MZHdB)F=Uv>SXfb>IhxpYZMA)b z@}x`roZ+#yFq1TI;dCfTU#Lx?g7>{#TX`wQ8rD_1sj}cuUDE52Fg1rr6|N4cF=%nD zj^1ceE#?3WZ?s(h$;PhJ*)8-iup(vNWum=zsJXii`EZuq;nDQOdq9s$F>Zuz_pT&l zYQ3#=84l(NuGc@J78kJyG!C^}!z0`4RrPLE%O9zT*!suU+umV`&;8_RY$h}m3_#41 zpmU|x4h``EiNZ*1?q$IN=b#-`V<MQWWwo6qrFck)bZ(<85jj^xCH#rk6JbHRl9D@7 zS<<-m0F8C(EKCD#+)(wVZkNE?ACph6t?HQb)Q_H-&?oQnGTpM|P7pr#IgRb98|)(| zOTVp7x{`qil7v3nqS5uFra5zBYfYW=lhC1sw&KhC{Z>{!8<b&kjZj7{UZ&?6F&ryJ z)62~H3Sl!J(*X8+zw7oK;VM&aIuN_jUH=Mv*geZ1sBT0^f75-7!SooEUviobV$fKR z$D=W5Ock){9X!!xCeF>Jr=9O7WSCV$%BCj#w`(R<m~DJ64wrcu9Hw-Zy44A--wAey zG01QHLkZ6It8opkQ1|76*d|01i_Fo`Bc6(Id{%hfycQ0_H;r|Pbfnu9twe!?3(Uaz zx5SM0ZmB&)Y{x2c%8dba(Xu%CPvFsaCh~+B7MNo=ib9ZKqub_m>bv<`r0H@xAH<O_ z7IuaPb^qIV9AV;n^H{o8sR(Fq?<cdFQds1?H(AeB$=4RBng5#o_9T0^^xJ@IMNY~X z&DhS+!I(`*74No@8EqkiQG*s;J3O}Zs)E!E<UFB8G;0be3Ttmj;(+;$JM@0U$>js# zHlxd6y&N>g2z~-9!yA&+?9$)A3R#3)!XZ$M^4Mme(uyz@CE?=;Z$^Y`8(5-L&te1h zh=a72N~W)|<~q02n7&3xr=4-aJlfQta)G&q6xklkOLQ~tB3+`Hp@4}o>>2W(aAFFH zgz?&d)-}J(c)D%F(CZt^-a%3bWO>Di<G3R-nYcTw93w+P8TC5j4qcO-R{9ecIEmhx zXj3E}v9LRl>-5@WrN6w$hS|ACptL@ioH)Qej6<MfU(Ux!bkvQeWtNArX6p1)OfJQS z+{(cCOt-=9BjHZo9bR_p3|?qz&F3IrLIRTbM=@8+V0s7Mi)QkrR=6BdUYQzG<Jny^ z)}^IQAJi<yU$TLf6(d`19Vb>94UK4-Y*qNjj7*ppxv0+8&RX-aZ2q6Kfgik{R9y9D zw!ENgO0lz1pVv~2o+dNb`tHqpG3IMna>EpqhBDi254<-S3;hrGcKJFDT$zSze?Z1C zVTvM1rt5(B@|+TJPrxoE$z-w`JFZ%64s`7P@@95GFmWl6SzC&0B(fP0-RIZYhE5F0 ztOAE*3DcX8QQxMI&>KZo1$Hg7+X@*Bjpq>WE7qx<3Jn!8Ty6ZxK#1lF{KvYSkYPG) z30W|bDs>E{*MmZdV@pN>5gFGQBJgw*SA;Sev?Cezd|>*09_*8Tw}S*A&eK~-qK{xz zaSYT(;bs@Z`Q)6bfn=C^Jo$6H-@iYlHB4KdyoU5QiCmS$4o*o#76ar)V0DuXBEJF1 zH(TGuvLUj%Ry`QckHOz6jO5nv4b5EVJ+{=%Pr?2%A~e4pra4LoSZ)nLx?}Xs4|Vwm zGf85X@QIMotVS!j)mVvWpe%B`oWtv~qEooW!Tk{GMyCt6Ah=oMr#3X{pvzV|a+<Tk zGCtQN1PAR^VbwJB*Yqz-=v2Bq1!NOhX~jxCo(M-XPh>-aTMznWnAn<(Z(g_G(up$O zRIE2!0j<gIPQWM7l895g<fyRio)?i*pEQ+gs~Oolt=lR6FG_S1jSf45s^k|*HB-wL z@aqfO`6qi{6#H&BXA74F2&uvt=u=1!rwK1Ny=_|p^~X^*(eVSyC1-Uy)<)*_T6pbO z`p3NsgE_FYQr<jv`#qO_5#P(r0zDp9l0+9s)=rxCdYfOKcptKK00b^fP;YGcWKM1i z$lv+Ff<ewJsu&HoVz$hv%>YhDa{k&S%WNM@=RXAr+yIe<2>PpKB|sF;Tkl`Ai>ZGs zf-fuwoUKDmHCdBOK3$NDr#3<MX%IOk>X`95Dq?&bjsjqf1d7ekS4o?u62Y_)pceX1 z(X+F3+U~0q!aHhtjtZ%sGf9otLZv=0v$Uhytn>f4hPRpoTO$q&4X-I4J<7D%e-l4s zqm+rIq!_zBb6n5*@I1qoEplWe_}7o5K^i-T)r$tSV2Dy56A}{!4{xKrZ@EO`)!M-J zxbeM-eytAq1y}?Qxx+Y;b`1t&uka&ivrLN*fxAErbM6C5;PRfY?7-5Q=Fv?I00`h_ zi{YTB8F<BaYiebKcq6P(y(C`{W)cKU%QxNd+4BdM+?Wl@FiwxfGz-BaUmJDKs{pro zjj2P5C&?^DYku1~#s0I$2Eir_PFtj|M0X0CC>vBE-#p<4V`?{txBhb)dKP*Dm|4P| zn3(t~*YDc4AEr|1U&`iKGGSNMAzFKwiUq;>SAXx$V0=_r-NdzDRQ>JzX4c;bu1QrN z*x&Gn4A2_1@E;8{7|7Dws`60=H@7%~6)Qo5*cB8>CU8iLGo^)p0>2i)a_Q_xRmMlt zu*-)3n0J2mgvnI;W2q#vnb*H$rAUarA}o4cLAkt=Z2;xSaTPCpS;|Rj;Gw}x)GjS} z-L`N5tz^aV_Xu(oxbRXQyJl_UXLrdx^;#F><Y>x|8M#5{f{j+}SIE~g7+XVH4m~a~ zd(-CZ1Z>BZ^o@obIm}WoRK`c$V35(8+x%jM(&n_dB@4VUNG2R7l2E7LpskRWr?3#h z)VYHW9J=ifur(h#y}!a?<a_5*RCs|3wY7fHA$Dv&L{@HmPB|9G&MC8nxZ#eq712G+ zU-6~U|L8ZXjhen{KX~~<<Di9wTEa%P6C!^$9gNcG+r|KY6%U50;EAaIi4{<D?8U)E z1@BH=4Y;t`2BKwXzj9#k(Cb;c*WS74HiswiF;3S-tYBvMI+FHK*O$0pGD=h%PdK(u zj6a=1-@onAeb<paS=kS)1?TZeeDm^&R1Bnr8L}Uk{mIct&?^;}Dax!JHGuwuKmPcS zq(r+~kvyeRSiSzS!KA(h{y@q0_=#5_8|)m4>3V6Qf$}`-kzw0Kk3m0@JK3$9Wl8^x zxZ#jxp8>x44vM5xDX+Srgudu;@g(+Y7*$I2p#Qo2pOm=Seu{bT$<yKnSo;SBr`1@v zA|q_A;Ak2>)k$&cGx_z%&PV)sJUESM{&iJ6a?IZyskQ}R`vOr*tn%wq^D|qF|9~rK z7@)1L&ZNEm#W@4Bq2uIewfPj})$WJWE0{B*uVal{G6lsb@M&<xUfzUhnsoXb$9cE< zwTVxMu;$HnlF=%llB`XQ&M?Ud3ny((4Q|E#*hiwWNj3i*3!B7TU<)X)B*7sj)Oh5} z<qjpNYj4r{mGsMK^E?&9G#ZI~>Si`(67$>`k>f`Bzfv<N&h*~G4`Edbe;B5~u%M2@ zEr152SmsqTd68s?*!t%wt(v)npADPnneghW)X3cQL=<=*Q;6})CKlhJeqEsq65@gf zJ8TA7{vXoLDaIEji1K6Gwr%T<ZQHhO^NwxX#(!q+*tTt(`|T#XZ@Vx1RGrRwsH8i; z<Rqt3r~diPly>V`FjCWr^z}s(>XtF=LV1IlYPCx%)@lD4#!RS_0Xh+3q9~XgIuN-2 zZ48RmIQuzwSN0=1t;IliV$^XzCz{dYa}lYX0S5;cmY|qImC_-uFw?m*YCx`o*VT0t zy=)1W<tw~R&LCgcRn7~%(+0cIvjTnQKB1rUe$c;pcp11RCeRiB@6j0NJq4s}^A(H% zGAPvJ0#nJaKPwEJAl}4<*HGI-yB5JZY>MXGgKz=Cbp*I2>0pESvk$Y_MNwb%Q_OSQ z2Zq^H?4h`y1SAMe5j0qgTW#yL#$Drc8aQ;XtwPh++eoy{;Ym`!u+j`O1)04Siv=aR z!g?YrwW?o*4Y#k#s%1zQp{?!FCgGh2?SAsd_(bhNQK%*b1>Z8DHa}EFs=pCxKH4hB zZ<~x66%5Y{jQPpXq^X>Kw?-novf`F0p|0i#oQ8|mNI4Zoa}II5gG!izhZNBQr{6>2 z_<yFY60x55cFR*D!xGvLv0mmJY8(}`!s*1RO-3HNl~+iAdQ(A=PlpfOB&~>l_C?qI z%aOoN$53Ushnk)plIID@!cGa#VIwe;cJ}%>PidA-BI}#F5zDSK#aav?SxqUQQ|^g# z<a)T^2<&aaxOgswgAHg0j3br48ANW+VPR<!vQ@F~`uKI^nM;;GXPYJnrzI3#KF3T5 z8POpL4nF{56XbRo$~1oY$y=DBw%Nb-W2n~sn0H$*&=asxuAR90rp(&^;4i)^Ia;3B zRj?!IYMB4HgwvH<!!i@+$xk}^7RqL2<MP<L4W>4*Ma~mxKy4c62G{&SlOKPYfb$A? z?gY?pfAZ(3bfo>dBsD4?nC;d6QviX^zn{tF0{P5X%$xQ<^{z?cBl}^lR|vsucWoek z<&0d5J85IQr9?pdJN0&3^-=h(uS~RVYylnF{Rc(6?_y%#+3j>VZlQ<32YIz4lj*Yt z;Bc!m=h}EJ9U~FOy#eyK9=ejvPlY9I6bD5B7j76-AATI!G&A;8SxM+8qsXB6a%ye8 zzHaoY&psq+;#A(}rbRoM1AOxhj8fHPM-@GMZCY)bA*XXh%Dp(>;-Wb+AZOHxu)TjR zvm%^1t{YA-KdptFP&YUamFD$gi2X%{E#@Plj$`vGcGvR)@*>&s6%?XoKY2dd5s>*X z)XjE+sDFiq!`ziEtf^1PaGss2fEq7SU%LaytBNP<N>9LuGJ?#DwGaP1mi&YOtY`i_ zU1{!lYq%{#lLrx7qyAm_8)IvNI6kn4_kxP0&a5K6aLKT;==7B1Q43)Ec!1FPr@(+# zO<n(8af}NXNfhw#EQb!M22*d0uP$^mD9pGU`8ukzQprd*tPKZGUx{!DGp=}>;TL|- z!zY3=GOB$ZkTlBNU6{z~UxuuRBHEE`DZjfpXvwJ)r9UMGxeMDI(Iy<}?Y^QfuO~n* zfaEhFiIfMgMQq*C!%0iXgetmLDsn*1J^D|CR;5;zFBKPmj){^9bDbJPIriW`+~X(N zti`ITtQy|!Bk0i~y+FnFaD8s~;O1A-(-l^w{*N*Y9a09@0R7?gzF(bZsUGgoTCKRb z#Ndz*nX$EQdYM-aWm~~vm_S+GhdOEW^s>#S(!<)Colln9d{@h`RQF)nUkx=ENZyrG zO3yt1qe_T6qHxf|#&yGz9j$~%$Q?sBY+Pq(VU_{dHaDjkVDDzLDuI~n*ep=Zl2gP! z^RuYbV@-NRY8+WXSgzcvSK+7Gh~9d;sJxt>a)54Fnb1xK6<`u;Lk7ID#4Aky_58Q3 z<-{M(aZ9tB8+h(jWe__N!N6Z2Lg-x)eKr`Fo2(NrZfhj%^kgOU)axI+>VEgL6fN1H z$EZgf+s({^N^^<=m`C*arC=@82lfz9cUX(|Adp_kCqUcLd^(xtShlQ~p_s2lVU1q~ z?4n)YuzGBriYuXY?Du36nKtv1R`Ac+mLPBZ0~544B*E6pYxwX{3wih&$X|Qo{OQd5 ztKr84%&T($9L0rrG`L&pLsfnae9Kakh+fSeaChl*W*&*8(*raP^5)G}ptNn}Dw>D7 zL?M@W$-oV$cSdJajn-fXImqPa{ZRweGD)|jO}aFkn%l=Ce+S^0>4=~>G#&em<4l8Q z=}YD+gST?=lQJ^=)FDi8l~{e*%sG{8gw$ZK#2((8KL;uLaLdBJwD#)s1cM0&lb4mZ zc1Z#TYT{5;B>Jzenacr+a>fJx5=*1+vlX<Lx5I)~V(K(QvfW<W2c&9{J9YZTWfZkM z%@Uh$old=PE*=&h6~U?$`qx4xDs7;7lq!Bb#}nzasS{o1I0T-PYL+rIS?nF5l{<db zTwPVHsF$A$(X^wgfApqEsBvvdD##@9=fBcI{cT1Q(mSm`G3x8sjmP`mgdJ+D!t5Ux z!>ZqULePF1-$x@uEij(7rW0BU9C$`kow#UUF4PjLNUlN>UB3oH5<KW3xe3nGBPfL- z6)y;HwGmSJ7jEb+%aM^&43ZlwMz0ktU)okz^$mIH*VZH!TJr7!6O*surc<J4RbBZy z4(o`IRh;AU@N?44+j_YE#^-pF`>{m71?fTFo;l`JZElip6mD;Ve?^~t^PwokZoe2l zASl4rmO+W4+T0uDJj<JU5m>$Y_bK43Us+y)zX9js1w4pC`8G;Dqs)JDM+if(ywBPG z5wCY54;-8f)wF~6)VQ*I4zU&QZf{KKq2`@tjmk+$KN*J-8ZPsiSvU~wU(ClE1f0LF zG<?KvttP|nsrAsfv8_wH83Lc?HPfaQMIIA+zl;xb5(5oyqe!6Mr<i&0bF<nH3$Qg_ zDH}zg+L}eZzr)H61t{JfLFj}5O>8`Q?`ktF85rfK{fp)M+dED<8RfTTr;+xD+|xmJ zRT&-S(>0gwRug*akU;6RW=iS0**s6ncH<a81?X|UQo&sLLtDJlzkOo}c~*i<;=sph z*H*G_F$3LwEqi)-7))Z0`|24y(1{Dpsy#AfYpBpl^EPbSBOTn#%v{W2hF7ubDddHe zl&k*DRp|yJCVLz3vnfl=Pk+w9as_GHG+J+gSVPGv?6snJK{aRd^hr!cGyQ1hdSuZ< zI$O#d1@hT~1ywV5mD&-l_!ubbfBHomBFFlaplT8-OOg}!%OP4C^;_JNN9$T5LAUmB z#-3zZ&+~pCkG2}!0q)1&Dd?>EYb+5RB%G+HeV1@<COc2PWGs)3J_hx(|K~VGH?H@y zX0NOQerDbR(cZFRlwin0JI=+mxKSJ*wEv?s5U7Estx7tFPo}+{)GiIf16DR4w=T~D zyb)`*zzrSjw;}d>@B`JD`9#QD7{T8!Fs^V$6czdv#z*VfKd$NY4U_jm{xrGI048v_ zqcVACAD^9K+HnL!cCVK81y3ZW_=3(J#j4oihH^~6O!JINCsw2aCXnB|+EOi7X{a61 zQE;t6jke}8!q>2|8CQBGQolD#6W1?Nto`_-zTFB~BGD)nDMp_3ofPq({=COUQvQ8> z?410G=r>P=SOo3yh8+K6*h2^SqJ9o(CaBCZ7uvdhfRN3O53CNGh7_+wFn!a?VrdWN zNKiyh6<OV-h~WKpX<w=av>1n|WE}<HGV6|gzznpEc!)Mw3kyX{;Z5E>viqMiut_3M zPhc>uoxIte2Gasg-I?%xQDHHW^AeOc8KHSg=C~9bTjZ!rbqaibo^ctI)lmbG2i4%i znu4(_^AkBgev`W<rdq8?pdGa=K4*2*tOmbyqqjCGkl&iQ!%_?He=qIul9iS<!RPR& z04K{|iV<Z=6Aql0^v^b(G>E6bTLwRTPz2W(I-ZUtvVq-~YV%VG*Flx6K1K+sDorDq z_ZoWY-X*&aIt6!M1rgYqUpp1FuA>5Emo!w6KPbAIfqy8VAs#2DYF38}-uh+XS1H_8 zgD3EK?M7aKYwn0xM=aa0XtxMmK}C#nhG1T=r5Dp|48sluX$JG953NeMVb?cN=XRS( zq>SCxEvF3b;CWRmfCO&*Hn-!8#Hjhx!Xyf@^bje&J_+;3ul)TN!)NYDxzzUOez>nC z>>Mr8KPfSAfl&<`jreM(Dx>rC^yu9pM6s~-mFF>OYV@(<u8{;VmWNz>!o?+0m|<+n z4jS(UFrNms|IuoC{&GRejDsoG-)a8QbO?Zh-4(JnZ*0Q_eJnjdJD??=_haK^+eNP| z43tvlWQ(ELYPb_)l^fdtZ!;iB={hbsoeG)f9_W#p^p_go>+}gs^GB*Ed$)1~-OT53 zXKi&KmUnng5JV9lo4YbQL$^3FITmX6KKHR+$k#VyuZ^vY3&7n4#Y}VGsk+mcTO5Yp zotr{v3?5-@g@#LimbqMiyb0?LW*F<I3tD0R8|cK-i{%ux8VaPR?wFzu>q2Q$8TGXA zA(V5Ai^=AAk!+?r_Rq$yB7Xdm@yPFYsW4~Vq0jMj+l2%B9xlmiiQEQ!n~O!&x8yMh zx+~F}#M7fS1q8OasVu<eK^Ej{-MfAq!D~WC{lQIbY9>RZ2Ts&G$k$kjbf{j#2_<kK zL95@5Hz1)$W6s`V2~^)p`A*2RXmP3O)=9K#CEu)Qd_%&7{||BWxuri<@?bLWXeNc9 zyo%~=XP1S6(4*j<g8;eg)7$0t{^3DMfKp*f&<}f%zk!aGytW>GT%|hP`Y^eg4~sm& z->qoxoWRsa0_;^Gv$_vSClYOn)59h%RVLlOl#aW`a(d}_{<w))Vl$)iIRz_?X^WJ0 zv=f#KQKi^~<zK)i0ie?5IVx@%j<J&GE^r0FX=<E6RhdcE=FF-N`=kc>l5p*)DR8zh zqe@u07PyV-krkjI%WeIka;=ze>2t4VQnK*OQ!Mb19U_WGr4TSPw*IT=n;ir3;rn~o zi%R_}^G-sZX#A>fe8M!OAd@W;Y9=ng7U0N#{pO58hvuLRSh=l#?ux!pHVA3`P`W15 zIGE%P(sLTo*Y7GAFd1*zYbeu(K+cRUtF1i{1wDSJXQR5d72i6sZtJG3T}LmiQn7Sa zQ`yOevhD=fj|Wmvo%s7RW_7Qfv9W9tVbvn$pFpW#r(E^&Or2Vw#?I90ie`XG1t|3W zobF6#k<_#f-XfKKu#25ej0RXvNJf-y)*K(W=^b`ncCU+M+sSaWlxgm1Ztm!*y+IZS zMCWDsl-^T|jhQnu<^^b!cj+=kE*?uTww@N+vXO`Gf+;U|>`u2{1U$?W$NO+p`ESBb zs2>&`^$xPqX2Z)_xG=Z`;LlpT=xg~q=II@GOEN&GF+=yL*!ekUu63`r2{s}5IQ87z zW)iThjNUvRzo4t+S@K;MS}s}u0Rhd4;aIKo=ZpRT{?G77Q5XsyAt?~hJ^BA{=7yQ& ze~p3ICc3F^?zUZv-0dL@Z|5E`*g3r#56cAYX+t3l$6&rHQz`2PgVEN7VR+D!b%1*w zddzmd_B!oqnbZjOUGko8eKx!2#IM-!&A}o80rji+71uxl0TKPOVL$)@ou#*8g8~6j z>3i3s1Ggr#Mf}$n?$^i?Y@jgKyF&3;WrZdv5S7Uc1jP<T7EV&zO`R`?`_1ju`<LE8 zV1V?7!NM;3mG!ONzrEX!foYiqgYa_zT9Unf(r@g0Cf1M4!8OT0)1u0M1xGhlvv)}f zp$dUg7(@O2MAufQM3v=V7rX8XypY%wlnxFJWP*VFe8T*Eru^=5Qb0jyC>S6R3Gf%G zzC0JSUL!EOJx;Jb8}kt${KG4;zB9S9h<$Z^bu)4|+dj?fLFj-@@gE0%)PDQQY2N}6 zoF6|pQ)|0v0RZ?6gTD%azk-=Px%hZL&6oLtzfI#m2Kg-jT21Bg#hsDO?Zy7>?~p4& z(HVON{WcE6&w!4S_uuw|U*=y_>dNbL+uIYnN5sUM0=C~@&QAyLpWm?G`t65bpUx&C ztDj#lDlMerj6!Ij{;c|{8pFK==cI((pA{y^1ucGytiZVC(Fb(lwZTBUkmM?%8Ocha zDx!qUB?=}Ug2`!(2|k7ybmsN8bxh)$7j#%!66(~{klB%FtdUY2BUFj063d5w9v9~9 zWKT6BvvY$7ij%Xa75$f<(~OtzR`1CE4(nSa#)ZKOhwsUWoo%P*I}&R~e4DW$Y|#F$ zEl=2qT@4NW*9g7Z{ioLJ7e^pG|5<e=Z+=%-&&a$!R)F-FyeJn7NhUf1$--Kz$kxwS z1Lh@<lbgqRj}~kZ$6(%W#okURl`x~lGUk5mC9zeKvND=%yB1k1It3b05atCGOor%X z)vdEXHa1Cq>i%%vjr<g)b)6Dwu1=71(*d;xCg!(JI#8GDm7=Sn2=SEWYh3p@#jBkY zwh(k$Kbrx@=Uuy#H2G)Zg=gbT6`IqDH};jDZ&3PO&R4rpM!c3LIXm_(mv&=3Ss91K z8uNJ7vK@N48-EGvMU_bL+0F-4ua*y$uC{)jaOtZfLER;#{91=hI*;9^c{EIJQs=vL z6y&HTxV!`EA?(|HJGgJ@J#d?<l&XxZ*u?(%DzPeB2_~N5>@ZXGid>nYEe=vA-^ZVI z5_-dKNa0Apw*(o5@*_DStOs^udpqZBcc`28HxJyx4$YX6<y+aaf1S^(9)i6M+qRt3 zeGoy84#q7$4sO7b)|3@x&nEK$diRuvhM!7-_!**8%_%Hh^Ynh3n=SoLoXs*77jd!9 z&}=l)s}KU}*jLEhj<)QlweFU2ycCz9xeG+4T%An}jn`XblvGa*w>=V@T<{Y9p(%R} z0Xxn~ov0W>6k>ngg`0hhs<IHX%Fv+Lbk-lamC=q`akP=GsOKMc*e0RI(=X|F=58*C z4vbBiJC)*yoJ9Iiy|ay~(2fwDFM6C_P6iI1l^wcxU6hYnj%+vf6&rKiCOPmUXmzup zAA2&vLOP0xl!lrdZ>Gz#@_$inxwWq?iM}CP?B&KPU+O>A5_pu2Q9h?#EjBqjl;(=r zX#EZCAow;Y1_Igid}k$IPRe^x_Qg#(!S^`|Ib&ww+}ZMv#J6?a$~vzsVD26|T!#lc zFzyW%%wF{mT06!ZiSj1|W}pm=tQgh)Pm$FRcnEM9WN}?^kJEm<55Qk#c49zN8@ser zhR5Wkno~j{`qCBt?q=3zLOJ?q%L6{0;`lmTi7gvFi&+RLbYsvk@|`#S!1Q#PQX6bU z+fYHN=wek39tmdmj}CUL<za1_F-hWfMyto21s1Ji2idpwQx;f_Xv+-zS&m5{gCnV& zLsx~tmJWb)omDg)@pcxHY(p4PUyR&7%G`4N(bmssNM5emdz)GBpxLLHo4i&|x71x8 z5d;c7LRDFGdPS;Yve%&9a=8Xg2`&SNntxSo_0P0yAX#Y_tQUyku-G!d%_aRFzJ>y4 zoe&!W6K@*h{|xr!`X`23)xgOl6iwWUMqmCSmOsp)2JN{~T^@v7`e^5;(pJ7bo(4~s z1$*oJ|Bj`%gm4=PvZ>1IV3`&3>Kf;xA`?g+&~NMnO3s56%oA>m1A0lbp2u-NKg#1+ zRexL!nNk1F81MxdxGo_GYv8EWyJBD)XVk{%^1aU2wec`vp+ZKMCa>-%E8j6NFNn^o z=t*kL(T`u+`9jkN78^S2;N=c|HrM{CLvfPh2>784C>bMY{}$NnX~T?SH<Rcm*M|Bq zYI(8X(0`0u@#oU+>kQGxC4eG6kd32N3dhvRRdX9IxYhm#Uv#Mkg-{IZ3%w0#k$z(7 z32YQ(IQdp&R+OLTlY#g}@r=vCe#mAiT<Zl@bk26NDn+XyvUD?cAt@CSipiKz!zDs) z#7I*++cwcg^~xt?WpBPDurrZ!t`uSPBvWOW%R)*?Msa@b?37n0q6B!txTr}KKY7pd zcST8U2qCL`8?4U!G%eD6_DHj_Y#wdO*la=${7TK?DXXV@-NwBOMxqW{RJK%OWHbAP z`11(eORsVi<wc$@;t5BOzu!V8vAZfVm7y}Cwfa>NGM^A=#0`<^o%a_UsmMg~XZVj_ zq-s5uQYTfvziTucu&}y44EvsaSsViD&^n8foVU*RkQ|71`I%KR`Qb@uqGDTMaO@hG z#*_9<1Bv@EVUQiqK35e>ijSi%K?22&T63H=2CdItt=ti-!$245eE6q9?z@_%FCxcR z{V1$eva1PMLhSjFMYaoijl|$ZP(4137EzZR6}LFBef@Qz1deuI!5Ej%>Ug?>#|e&j z7i8x5Sw+bX7Xl*V{1$CuaN>s%+Wv*l`Hr;e()01g&9xXK>a04X82C!UKZMDdop|d_ z#SfR{Gluq#IMiYN(dvXg77tUQE}in33-7~UM>Un#qi89=CR5SHTc+Q|HhIcpe<{fP zFDRJ8PbNMBt-!Jk;2i9Dg2|?!<1Hf<unH{7_wr4wkP*l-pjGh1N!DaK$@>gXV7R{} zF-spWyVY8gC4XZO#>&8s+@DrlUgfSeb>U(K5avU=U{3ivdH>1L)x5<(^mU)w>2a@W zF_He&i&d^zz9gQ~Z4vbu84I@vpi{n@#?75+D~I|(sx6reayv3XX}hUtBfbGyX1xh3 z)fp-o-yu}Ts0#`QDUKiaPIsyMHkZWUXZM`L9O>auU&8HUOT#tij1-#ZfNc)I-oG6# zu{tHKGqow(c3iwWW{8gWk%ipl!LX@VIis{n)`;s^0U|vvm8IS~EcekT-`(Q;)4Ed$ zHOGPb+-Q~KV}#EOUyJ`ZG6^XK?(%{W#h|+)k9}+J?Z#t=|6N58kEH?usTefg)ti)w ztn;{3J$+7v!>W|;;?^LBm_-(=GA!P9mA!bO^el^(6a41k!^SMwJ_R=g4QJ2+$;W(r z+b6h_NR#t%mYnD;TxLc+>zHOsBtO7{XaCLbTh$sA->8ceP!GSEoiMFes<Wfzt>^Cg zyUg`cn~|4&go+(e3rSvJ?0d7h3I@)oKC-19tjEy|J|lyCd@fsg^hZqb^9zdmAn0X| z`GR#EO<qAf$HKzqAR&<LQ%^1M1B6De+#9_y>|)~*g2JuFdD%?@bMT&|9kq|bcLZ$G zeRlg#4FL7JCf`L&@B<~SnMceG*X)+3epl`wwkVK;G<^KD^kCP(!rN3{^dx=EKJ~J1 z!(*nR%cVr7Tk}DsxL~!KS%9Vz{2Qj*il;qv9e2*UZ9LS`BaQ}({v!QYz=R-!=J%&Z zN<l}S;+-Z;kB4@*7tAUkn`gJiNwm|Ve%W1r*yn3s%P#d7R_t!<jB&wLXV@SgD+F4@ zN=x|u{OLH=Lp96t12E9BcvCX^(H!l%GD+KAvX&yZnN5PgMpc@eAs@`OG9OGe62*)t z;m8vu80`A`V!ZZFT=F*^41a)3{^VTEE3h7x5>M+;c%u+K;Y70#dS*M3r@h;OKky0z zoC{Pz&_)(F0!+ZS1QxoGEy&LR<(l51w3m~!(mQ6oc?FY6c2M&yGow_WU-8I_5D+)& z?n3U^A2u{0PkF?~7(U9r)@B|+ixs&*truG@L%W>UmsUV?EQQMZZkFcBS<+GfR0-PG z)k6m=>vPYmQ^=2ONLzZfgA;p+>Vzh~SYXG{k4b(-_MP|FV=DsNoK$0x{Go1{*~DI& z-wJem>Ttx{x%jb}8`KXQLRka6e|f<+t#ucz2CrTYYOW2NcqrMHQUV8&(O_3A34y?b z5d_yN6GobvqL#P*GkAae;G#4xww)ciOIYl2LYzUl?{zzCxJ_QAiX3Dgi~+uhGTq>G zr(@kDv>+!lv9A=&s<7Me<uB=!1Y=HPo<5a0x5}UC(Trb1gX`%y$;IKkm~x3kHQbYe z<oow#%9g&Es_zTZA9jX7X0FM6;<3N*l@bpJr+iXkzyt5hBxR;^x3l^h{b7H4^@M~s z*rg3~G@l?Jqr<e^T8#aiYDuJO6oKr>jUG0-z!k&(EdFqUZ!R7R;YEchNmz3?4!DQU z_7@;g^Y!j^FAALF9PZ+4uYH_qKP&tdd5gYnsvb_N_Ws+zK>o*Vysr_K7v?m~?guE! zO<-l0%(|T;o9Vm>HPS0AQz44rW0H%!$dsPy*F`aXBq3Z#SRWlruL|P06mMip1tm9~ zR6-xEIZg09cPr2|v$QEujqF#0(1EilZiGVQ-P?mAq|e16p3@>A&=0sJV0m$kE#29_ zqtbB|GJ7FTYU3*p4sPV0SO{NPoL40uKV|=FQ$Fny!2yQIXt9I*HC$Z3h=<;p&^GaA zgyAdBbv(>*aR{~EP;gsUt>6zhxE?Q%I~T9Q1(1D-{%}1Qu3A_@tZo@uHEhrd_wRNw z$RLN0$hu~-iO3(GpO%9*Eg4MKf2)e!jPO1t>lEM_JsI)OCE{uqGrVC4Sd?MV%@}Xs zQ@{{ww|*T5v>^(&kN5OP;+;%+6!~e?p40AhgQ0F0g}fEkAVOM?V)Si1`ajcWpRc|E zMb^|07H?SYd=J~nW&gwpfUy)wqo|iggnGSZoLcedl(%G$&Kx(#n(SKzlfSSiWZcbh zn8iOQ7ttX!IMY=LK=m&2M}2?(<t0B|JD4X8aI59vLJ3xRUF^BfK_uTJmN6ZztH~96 zN}Vv$0LhEQ6ICgC&u!oQT!jl-7s1n<Cwrv8G976cROtyw^Pq+)wbL~7ZW5(;-{D$> zvtBW{PZAX$zoG=6a6WO0h{$Wul&m;yRxRV8DF)tV>S~KMsLl|9=?!*?yPzd<<XtUK zO;ccen=w&gwtjGjLWJCmi%2u9$u1XBG^Thc41PO@!DVuw$gvs2npsT}v&Wo!t|N*x z`;WMzjJLRvfCiUjH|)bd<0Ik27iJ`Ec0ZEM`fyp?gQZnxb^h%f{=w@Nye4g<x-IHD z;1P-*D?|H{t!rRg95q1S_h3lh+j=K*@+rwwJ^Y6h+v8<1{&48KV$JrvLj9Lw3)r9r z3#GCu=3;m3SiwMKpngEXn$K<Q)j!ejm~S1`TAHlQV13}(;Ib4%13aEss-=E5Ymg@y zdg_0w3B!^0MR1o3Sp;pT6xslEL;xm$b)$o|wOmKue|iOhF%zAM*FkW`XUnY+$r1KN z{{gx1wW}b-DCM3yW2hPwQt(SFkGFJSIv~zB2IB)?hz8`kRTk6ZJD5Fd=Fzl~OlIXZ zhSL*zN0GG;`RqLZIME}iwU$Uy1{=-45oU1ibYllUStasy(0v4(bwI&c?$%PKS^*FN zS{LHfa3t&opXWX#a8KnX5CJU03su4|-ww&A6@Z<#Ch@VuDi^g3nt`UomS38~&e2KS zwD#n4@Hg-wf;yb2s~UHAuTioiTZ)LjeId~C%)HdF%7NB&qqGXaXf13tWxXZM1C+?; zpa{$YGAN5f44@KYpS)n%h>aA$4Hg$)g2-6ekT0Kavtyr2YP)cXjb5aR@1L>c)1+%f z<WI>QCXBIVms9IL{P<Y!*l{2E^CiIT#@Ds;_BKK+!8XiiozSvbvHJYQxm#&}$z;8B z6}&wdP8vcWzK+yB#^y4EXwfJdT9K<cW!)S03_@Xa=huZJUd_}zrUdR5(ej#*2y1{< zHb^g=q`FCHy0)s13liIBBFEuy&{@;UdhOO)4Ky^3<+rJr(vPWapd#0pLPY)7IXS%e zNCgNQWDI`iUfe&c><7r=wt*Lc)44nmIQ9^Y--P-B^GXZM-8su-7vB$>>J@MDKq1AO zg60WS0C2=|Bq@Oil49DpHl`;}tM-EEXn%EhNeP>(U?5xiscM~eO6IWCd)UVY{~&T} zq7YKOKrKV<Ho83t-zh;vV9u!78osu>;fo&;{5Ms0Y=+4Nrx>_Nhw9~ycf8<8E~L5A zRcWT;$JK#k-4q}O2KuHQ_5^!N78LYWIKxY{iavGKI`!%$-S-t-7?Tdl!unXVja-=D zIIxjew8_-7UDke+ENIPZX>CS7H3aS7rlwhnuW`9723xX{S>$-smcdM*mGr`aWrp1% zNpHvaK~ymjJl?MTjKlj)7YxPS!Xd-Yoq4*1-Er2(7xfvD^csfnPbg=wH24#0CvG$m zp{jIt$LSMzWqPl7%g=0f1rWFALSc9PFV-A7QbA3K;|lV{$WSCTXf4y<(Lg*Z@Y2Lk zFIY`@;^^dX&PI*+q!icHnYOwBt<Wsxf~PQ?Ym8CtQ64&NHd8)_2qvPUN-;+>e(z+( z_U8%HD{f%APL~ByzF6xW7-26SG}BFp*&6pChw35IyRD%o?VFx;C5KXJ`~~qPGZ!9K z@LHT;W_%YdRx<e3eEJrX-M;;yHkOQ5e10wf=`q>Sq`o(~hspKeo6NWExo<VV0VC0f zCJ+1uy8bQ15mjVMNk5DV%w=O%EYYjsVcyLFY=T{jy6qF$3O#?qiPS015c@6vm2R3T z7tW#Hp9VJtu}!2Tng$@$wIHBt3H5aU8Jk|#ai&;pl8J_Tw+|p+wOH*U`{_2PH!wJ5 zL-v0YS_?`eB#?eqy}A9P`hMyD7Hjxv^8WAOxWo&Ow`{tAytkQp)B`q4zMTr|mUcqr zDIanH%zC$HRW5b6|5Jv}b<Pi9X0!^AXie}A=y(>LN}x#7?3kR`i=((y=eC0RPV=*C zd!~d-md6YD>&s7D#36*PyS)0%bvK^X{9JuoFxUQs*E8>gR#9(CM+n;Ng8cD4SRGy# zA#&p7Xm~WOZAv|`Lixm{9NyZ>c-3@z60pGs6XHdKZ}S=#^QgN-r__2K#!N=tpsr}Z zO(^RV<z?ZHik%_H13^x(Ye@?ylcDUgUSpQ>FjMkKfT+6s7fn&lqqxS-^!8p%xqrmo zdpRN>BrfGv+tviO&5Es<t&s$HrI;WzK(0f%^0dilWKA1M60ydH!FHaBj!qD=kc5Qm zUEGjHhQ;s)VhSuh1xt*Y9qBK&pQIDCS&G+eDa^6z?f3M^kTzVgC%YVhfIzx@G)63D zeagkZ)<g~5?bSEuElpT4-sk{wW_Iz%j!RpK+ZEGE&ysT3f42Xu__iS~n3ftVBYV?i zYmB}>GR(#()<0JvZ5bqb9>MVLxe%>d#HYLT@WKbon9&f1ZJDYh)Cp9B3nC&!X-;l@ zMYX8c+k9*R-o{@-`O=l&E*-v#?K(a>Cz2xtWO#a!PeGo+d!ue(CpYuxw71Y$XUj>Y z+n94TzH`(Mc%3UkjqfF(XLiwKWm@@}_e2F{K8jRTdqy!<_R__!MeqcXlTS`7rzP?2 z*VI4MabX5K)ZVsdunnC%xRwc-KDU9}R*y~c^I1Q-MJ@8VWl}lOjLCGJGT9$`-G5go zSNCIguOg25;abT)<+o}GA(ED-0j~!Rh?Kj&umt}G<<ZfQ>*??ikKy)VRO*`?^;f2x z7@KHg-+E>8>h35P6EVjy-42GaqJ({X$K5v`zm~ZDqIZwN(&<bq`)`O^uDkiq9t#@o zXKEl&F5L~kaYdxcIdZctrJHcM1Ta5kiJzaf_}|w{)r-HYmE>Nmpwbjr=+IWlpiqX8 z(W2?wkEGfMJWxiOlpXcB20E;^OS2zsa&O77%zmt~QEk5e=8$4Y73|M8*bf%!nlpk6 zeCj=z2w4@f^$C8s5szZW=@Bv8GmYB^@xPNww%CG8=)@t3DsCiGVfwu1<q$JNHsT&H zRm`j3Y`H@AED7yCvNj@)^m%Nus_phk(HUkC%~dobYZGiN_f-dQlb62Ij*Iv<chJpa zndo!QI6g(`rV;DgR7zk(Dzm1(8`CS!)t`xpBOBDLHe|cL^>(a=-tAAauN8+@tHoLo z895sMc;@JB?(3Q<aOGmnAk|K!ubidzNjJ`F{!;{lldx2pcw_<-v%_6y{6f2Jp-a2g zx#Af$3lFYv7j}A3Nr)aXVt2P!nqn~QgmjDLK-;^sF>np)6AH_nde?f_nK&(STmKr@ zmzOm(8ieS^gCg?Z=+ESI`;)a#?Jk=^4sfJ}0NI&JbUJ+ZDc}ao5Wv9oW3(*@@Zg^$ zJV;U`EzdBw#CUqha(4?q;C4rByleASuW%SDd!Dd+=xmjqr8&7v`?!nXvwnfHXtm0N zr4JjKD@$pBq*?ri&2cNU$AjjX`j=>xZFI!@5oKtX6-M|VfM$I#7ocw4*!saIMb8js zu6t%V?ISG^TR0|)Xpl#{Q7p)qbLZ+(meQ^2*KHY7_ttP-{ayG`-ItpvQ9^DPqfE*& zqC{dNcR`gUf1L7)FKY+6HV`gy3dsapaWa_0hx{3Ph+(x0{vjC4?rRW)L?*B=y<u(k zJRNZwvq)yybyZ7sWXF6_It*1W@UwTkt(1;>ZiR)MQS0JlG9iD-rX~heVK`;Cjb{rr zbte=MvO<YAp6F?Ar-#IFjKX0bNCA0_9ea=2-B-xKy+(73jPbuFgp;H6*VOVEb+<6H z<INJhP6J@_cHqY*x4183hfx{vn}bp+{K0>UB)z=q_2Pi*slr)h)vHRC0S3M7Z(h&H zx&O{q7zEw!#6M;^sNS}yW2EB5PL2&1U5rF#7eZYXd{Yj%)M$7c@e?0tu9Dee2I6Ww z9o4xi#rV;IMA|U859&yfqpASKbUQapwVNoUeWhZV%s(WR2OKEBa3fCmIft-AMo%Nt z!aDSt$pH6Y{r#atedia)n^EQ$>^MMT+cMAbu0cX}Gd&!SqUt+J9FX`X0VlLw<t!V3 zdg+a{e&{8D5!-JkE8tw<RNfuCgvWY_>f1EaP+q2ORIznXc6fiHZKF+(V2*2~V@E)F zkE<_xZ7?rds9RJE+w>+$z<M7>nfR>~Soo3bjfyW$&!a5jUO~&^OX?C-_E%5nmM(pw zGlv1HpOq%Q7(~=>Ou>q(I>mm*LCC~$Vh5!yio87TH@3i7ZzK-m&A5IQ2=lNbr<PX5 zoixHT0(LU0*N1~cS>YsftAoJ;y=wQ(HnqQg33TJ)=&bZdk8e{1(AuG&l3{SOeHgEu zmy%DEdB~xO6hKo;x#G$%UDzI+YIudfeqWMch7|0X4j4Mr?y{`BkkP0@2nw2OWQuxl z9lqw~4-j`B=NDV$g^lW0$<?^`Xo-=%>&Pm;u5!cWbNh2#?tNrl-0WN!f4wR=?1c#V z5wOy7<(W4doJ^j}Q)hMK;~TT@w+p(FPfKx2CA_Le$LT4Wo<*bu0pNGJn64XWAfQzw zW72~8QlT7B3@V#~pT9bnILL?w$0)qLkfp!VmTb>GUY)HIx=Qj~40ca{14S=W{_6Og zgZ`l9IWxhvu*{ye$q?_{7N@F-GY#C4NCaSN<Lq1o&m5Qe6h5WjlT9*q9+9hMY7og^ zytSdZ$y1Jl+^s&_d~Vo+gXBch%Q`g0W<}2a!_CX|Bx0TS8tdTb+seyg?P3fI#>AO) zQt?5zJdO5yb=^<R?+W3+YaSBr)9mqHcWJn{;oQEgZ=0p85`{rb#h=_^tJ@ig<7wJ; z7(bd-<voYrrE^Ci32kb3A&*P8EcMM7NOVH<LUU-AS(Mome-MG~`8w`bD~JnTk;a@B zTMa|qSi}?|BxSN2S&qtcx6KIluzK6)Yn+NfkCcx}k-eP+yJdx%G*jxmOBpS6h9Z!k zvUoP~JIJ*r)e*e`C*G5%sBe@popDbifhzr7zIGLp6G)@8v2Jas?tc}T$M@2snZJK+ zKfkIe_ke~rGxgl?wnAdPPmw~OAm`Cbk(GETq7icG%?{|ga5R|ks`1tYM@lbv<GE15 z7W$VvL-}X~@c9ubs}}5AEQDK5Rk&q>XHp@9K#{xOfw`P+!&^tC3(uWF5_`D*Njqz( ze%{}h(18c~UYV4Uz-FnJewHRqR2%B+At*SB%6m=+GwnS}#L1S~iBSWR8tHecWDM}k zDVO6To8E(^pGPi(E{y6ebW^Zt>K5>|MK?jbUCnDf%@A|f*M8>r6}W<007Z((&<G66 zb>PRM`{pUn!zb1&U+$T(M-Ya@#sgb0U;tVN!Fiv(+6?xWh{PHy*L^68g}ft!c~9p` zms&cjnv6Zk*vd~*d>eol7?UDqyn5F`FW7zCdIiP73kWH>909O?Zz-=QHu5q}vH8gM z^ZfOijsekE;>UJhFP@l}NXYTqb(6-l=7QzTL#7pnRr)#}*sD1^6l{F3h7{`C_eyK& z;L%_s7h1C(IE_un8f!E>-}h-ZfW^G&g89+k>C+&>E`Th^#+OuwJJ+|GRGz67PxPeD zO(!?#YsM0u64(iu&Sd`H+H($i3@c6m;13Tk#IS&u|CaCdH}_D&Ny!B=2zlVZdGG57 zCft97rM$XrZ$IYTrL;6O62M7K&yojx*N$7`NQnpghfoApjZgo5HtzhwrsQME3*K## zVZoHga8UvAHK`7o2Ws#>E*cQ?*YbTMfp&A1u7fptj>vx^#*Lq$5t%3mszNAkM=rVq zZ<XT7470<slbGfU^<OA(EV;&6ai$cCaQ&R5TYtSh#X-+))C~8L+(~DRkk|d`!<(!^ z$wbyqJ+zU*^FuPshlqMJ(mPVx&DYzAS>jW`7wGylSJZWtB1}zYz1nc3{_+2r0wfWI z$4EUkc)K(=0)D1P2BFAt%WEQxIq~m79xztmf$h9Kr+SC_zdk!&-eT#OmUrhKG4fLD z%D|xay!Eg@nqQex51vOGyll-DoyE_Lo&+c64V)Kk-c{iILpKCHjp+<FRL9=4T7x+4 za?M>R)Ia%tl>^)b1S;Bl0Pqpq3)k(TWT&AE_y9@^EHnP~lnY(3onTgzyLn2erMa)7 zII43I*+BE$_@`}e5mQe6U0LD@Mx2OAO<5xUsj+W7&=3QI7|3Kw$qM#7!ZBfO`Ae?g z&C{x&1K>sI6>ZnyF&d%jQt1ue2yQ;4lVG>|!@Evi6*nMDKe9D`pZ?|>zwU2MbFbWH zi;ZI|Jm~I~@C|Hfc!4G{iN`9Ovm3{_DDD_79l>os=luqsuro>~fzE8FgXdtd-#?^r z5|UyP;=Y|w&3RPO1XBeQuSe-_x0ME(hX#QM#gbDqb(p)9wq&p4a>1OzF|lEbB<3h} z$4un7a`}Xk-JgD*v`1x#2SH|T49gf?M|@DQSdX!uh`&88Kx5O_{u`udcGz9J9XM!h zaNn#uhXqcIq2f3%)B3K4yMF`kWo1RYw@L#KEK*K>f`ROt9<IUnQ4_6-jnwbzW}I+% zFn~;lyPSR=t76;kc<uEwDwxd;w6Jy#y+vv4f8ht~AJ3l==@-EhS)U(91`!r^5TI9d zs_y2nTJ@PkR(DJ^g?VYtYhQN%hWOaU_w|KlTW86hUTlo3Z!_Q1T?p=Z-@VU3{dsdh zL?A~9Tb@sUfL?lAv5L$o7|l6Qd{8`%skyn|WF9EehW45%O6`G{UVvxMYbeMZqD)2Q zC!T_g8tRrY<z8w2+OP^7vuiiJQsZM%&npxxR|qP8O^3dCG_nZP>D{vx3c+1rolu!h zoZW!_Bbgwj)h?wlW5f{!^jHkX_5?l!Bi>1iTgK5VSoGlp*}izSm8xM5@AGZFH*)qe zIohrE@qVf6O2;d<FFmb0FS~Qi9EPOi#^R1}Ag)(WMyX?T)k(;hm*wNL7Yil0oLyMb z{ZMBDXb5sg+kAi3LCZ1_72n!_!ud8|nx?;;<g2-*E-n43_@}p1DL=kT(8pMicE6F& zr^Uv0!5lHC`?vK^_u;+taHwZ6EVf-B`XT8sa6*w}U`$lUZ+xe#fUziDpggdS%_IWB zx5oUuDMiUv1Tl?SAs*o;=<$$!1)yH|=1^5&J|793ky8|UG)KyrQ67Or)qeoq^w~7P zWt0`t!(=a&@*~6+_h_SqbbD{ctFqXeyGeNDdmt(D6~Fab!hTbNIDipugP(XY<=gBX zqPrz@pHJ=v-%t$RbJ-%1Q=uOMWB5K0qdU4X*s=vvxxY97m9dCaPejQEm&g?rd!dtX zs~0Eql2T}3{}zCRV8C}-Mm>%XbfZX#9nPCAT3{?k!-v!}C~iHOM12%B(wm*zf|0<Z zeN_N_>>zKqTY8T+^9~+WwIr7)Br%4i+XXaiaTV2rGc;cB0E-?;gC|&ON}HXuz7#Ub zm}A#IJ(RQiX^Kl)me5RgY`l@b=@a(Jq_M6WHQX1kz|{iNXrp`~UUn{&^f_4(df<Ek znuDq-z-Grn;A?*$chgatc7^?PlI#UC{jo>sKii<oy@v|&D(VYLg{7tk8{-=027MVS z(;<do<kg~?oVf0LEd1@{EMSRoB=ucsZvRDm$75n>O=s2BlTu^yzQby%d3{gDgA!S$ z^8;OUkf7ltFO4lpcSy$Wu1@;oB2p4G90)@S|7+{*<@1cvaUnOZ?j!Of`!qD;LiO&F zSW}^dr<GS1Sh9e{VyeY(gNqsI;F{q%kLBsM<j{OLAe@jp(wF^hG$MK&#}VOtrVBn4 zaUY_pD5BoeCW4Og{^W~6M|>PGpyipuoIMkWss46UfSI*YvX@7?-+EflZdh5jWa(m$ zift;#OA9MIw^L_yWWxGaY%*czNbb>O3##mi3j;9&mdgbGO&%?nAkd{vQkTkHFpHt| zC`jLMLswxcd{in?sPvUWB#555nuL}*B4Se^@y}Y9PVJv7I>Kr<#c67RT1l!4%GXN; zu8sKXf%Wmuc*0_~O#zQ_<ZW76$vD>&HbKpy<VOhS!Y?@D>w@-F%HYgvwh=7X^CT8o zcI-IbSF2MCM={a!A#-H^NM;IauW#|_JAIr|1r@{otsrvIp``oxJxiK@zwgs+49-43 zBy1uqykhQ4Lk~;V`!4T33&!N%nG&4|d{&~hg1+NGKtMujVltiT^E_X_VE;R_SGO_` zW<Uu9G)wvayLf_`<9|l>F5vE5PLGogj13L<o}V0{|EowqMhF}b5D@RPzo^()SXeP3 zTe(;(xyfGR{r&w~d&pW-{Zw-xgRw7lb<l8dvE{5HB+?|lel<ytF3%_`56Q~UG|sSC zLj7ffRV3|1oULR^g(RGm^=nmw>d-ZVH1%sRWHt3AK<dg#cGYP6xCMJT1}RmBRTf1S z1*W5=1qFsGDM{w&M+Xqg`u`oOQ<RjI4NL0{^!4jB>}%2uQtBKmt*j~?3`-nLOLS6_ z%5-!yHIg(7vo&hqn8D2BWvrc?mCXN0nfvE~MCNCt7-$<;mw>5(0xNo)VD!^Z(1w4| za0_YxNE(H96=#JAv&)jETG+0-gjkU5+@bt9&^y7^XT&O_$lt|?-`~02i3rV3%rGe_ zF-n5J%!(80K%`j5Bx!$(rj~k=ME@pS!Pz}A4;l8YN<0dX**+Hr*^HVMBPLMsGDIyF zBE!MS?&LAV6JrF|CeNC~LPq1s0ah2WI}cM)T+SGP=Vxv((&J*tz)aX~W}fukUjF8t zjm~}(esK%OQ#mnVFx*ONACzXTmr%O4s5!_@91~6J7LHRUY^CRzl6>Fq{p<c7zI6u( zTDW|uw`_<arps~eer@s+yIIXm+++&O{-~YF3fi6f25bmNgaI?kf6xPZxGf%cyMA3< z95nn@di6j2FR$A@SY?~cbNx=*Ij&wr!mg2d0Da(3zD$<h+sO4?v~~il2J2UZ=DRS0 zk?IC1Z#}%Cm$$$!fL^CtMnM>K@BE(ok;$HG05_vIEX{{4m7w7p#cTEpu1g#uhV%D3 zg>r8)#b?DctSFa#=X(>GT}XYj;_>jR!7KMFGq%%zPZZ$0GvGJfCL!}kbLuCk*%08K zf7eOABX)u(cPayeEok+_jH!5Aq1RJ)`J=>JKSF;S5YxI#P0N>##ys#6V%TdbzXzI0 zxx@FK6y;*iCAe3O)I9Z+e3s!WbY9jJ+K<;BoO$_%a-|Vk`}0Lc8Ku`MM>{bvdgi-P z?+r>GmIr@@Q2h;F4ycw%5@1=MFw>bwZ1X;K`C!?kfWYFRm<BXAFc-CM`-7~8RIEy0 zGR$N@-W`?IYEYEXQ)koUcpaaEK#sRkQvP-bj1S~4cHRvwpwG4)=XifmZ{C<TY`gFl zYmNR!h>hZLGu{tehCgqz4!??oRq>US-4W{4qu5d1uKw!@kXh1R5yX`h<KE3j64dHp z^I83>pj^)#&$J)M&HqhgsDr6+4ybTSQMzx3d6giCJ;kfTyw#_?+o*w=p8%ZK{fZde z6ifMqwn%bT$lkd=yJ(%J%z;7uZ*t`SC1yMU1p@K|`+t#x;Qvkz7WV%|4AVO|#hie- zYv2Qxj&6uxUa;3ajt(71kMx1<;O_2juvfzY;trp{0m$8t?blw9YWMD{-?PV@(?!3& zc_A}wHXvpo7#J8i`Il}SG&HuQfVfZ~aB#CdZL9a)qcRFoV71?fC%FF<>ssoo@Gv;6 zSAcMg)FhUm;NX?k`8lUmC1o@w7iU9uc8?FEfs5-sxMu@sFIZ1rE?&)!Y-MlWHQp|0 zPgs>-!id1)?EU~2T=wJN#*R&Bl}jpMYVurNdMYo?PObGyF`$%`6yds)G!X0E(%)AP z4Hp?BYa0&_3t$coMn*<;Mh10C4O$Kae}8`tcX<wZd5r%Q7@UL>9x4tP677t?pzna3 zTMT>iI*yqe4*B?$-{~^J9KNlv%F5r>N5N;om@PZHUqCkA_77)TW-{nzfWaD<=KA^% z;iuqNKviILbzE3+_j!OXG6Heiui*9X&fv?h%hWHK+2?Kr3DAFcueKyW!^Av#R8-7V zowo-#J9Ft?k^JFVR{70(wqs+19glO4swhvWFiJNAlCdBuISmILROP<fgylaa#TqGs z`fej_<wXau^D)IR%=>+lu#x%PkxEqq>Us{le*QI)JulmOZUBc~TL(-}yGI{%th%%J z<<?ppx6=pUia-jdj;7%!FqW!=Vm6OaX=qw_-dJWxuVJ{0UESF6wb&hL+zK~bIjT6G z_4+@F{`zpn+xr<$F2Z*igmals;J@DaEhjp5Feu50iAUdkwQX$-^J163ow&JzIY{V~ z-k&H5^MCZIAVN{{M7$y4#EwI924GiUOU=oDF7;gbvy{s43W~cGm`MU~dT%5ExGao5 z7Dt5&66_PpnNs7m9^hxl--PLlgkSbSYnBxyWR{i)yO4@-Nua$mU4Z}@s7|S0h-`#9 zjM=;3g*A;_*gtSrBq>;Lph%bZp@gbF=qMM8sNLPz8HBo;hE?D7S&F1^g%CA~IY=P{ zzZL-1V^YHf_cuIxAcRsy;;WCr7gP7vW<e{SOM4wq<NFdnfn>-Lq13R*gV1M>v#2wn zXNF{06Dp@*0qNe;n3yTT-+eS(T_pubxRqe(9_)j16}*rw*aH?#{X*TNRw=Qw?Z0i( zLzb6qp~Yn8q38uJ;a!Ny-+GV*2Gpl46{AaqEg&ITi&jZugM;hE|9z(0-MZ9&aZ$tm zN@0nZ2y?4;15N)-J}3spR%ZBYJ8tRJ?q`;#{2gkd0;WOpx1J}3VgY3zsL&F25d#{_ z1gD$~#A0SCQMKJ}xbL;?JGu0WeaB-svN`jufeok-?3uvcVJN6CL50(vMu1B->hq8W zOq#N|25`tfAm}5+hxsp#^+qy~MS4tGK&otDL}k*<z0Nr*^%7sKSqRM#YC=os?7mP_ z4zkg`u{Al{dO=7VUGOfXrGUfX82On!$EjYl5`UXz?E0lC&9+c{Iu5<nG1pLPTmh9M z0HjjnofJaYtjFM>I3Q+mn!vVly@hM=990k!Irkta|Ig+Kn;<d`A~+^boR1)L|KC|a zCvqd0duj$slr^aCPZV)=OI)2Efy~eGq~DBc-Brjx0AH*bkwUarkX2tnO#+%>U3!bR zm_Xh$O&AhFou*IT=?Pzx!2`vCV}LT3&Cvl%9(S->wDMZiXIbL-31#2yzp8PWY3OVa z67~N92SE70{FE-d%iAO5<)YyBnGUAzg=oAGYO-Vd06&kWAhOA=9X!hA{d|AGh@Xpy zdh-6XgE-Qc$@*Aj{-|&pxeuND7CxksdD}g$_{n~CjgpT9pxjX0-b_5GFg=dH_eYd! zu>!3n?;^83x~>Tw+^v0k4*CR{AuCBi|Blv<);_#n{83OL`zrn=vf=<zI@38+tyYr2 zL_;ENX?@Bu^`*wkWcLyke%mDfpU>UbcrV(d?5k|#XI{7$S|m@YMbR?5VE1f6evI)Q z;lX>S%#B~!Ma8<Snw7say2408XxML-PH)DY_EzuI?zHp&t(tCsY~l`tz<1qvSEF@y zEeGBm3nN->1He1bZ%nKY;a^?fY*J?P<~=tq6O#?DZT^;hMP2?T8*Bn?j$}D>J@$5C z`fqflMe1i5h;vqSnCcO$>?hbR*KQSZi`I#5YJJ+GBZB>5Ti#E9;`?cEh4S@no!<Oo z09AF^OhuiNK4{^X$Oxs8JAk%`er~FW*!43U8^UvZ1FZ(*Iq_pRUU5f*>Tn4q-KcE& ze*JpMeKvH1Y2c2#=i~f&%J*IU?^bJp?`LrEwf<(Y6ftYqoD6Q|%0NJvG>Z6xdT{tq za;wISp91o!Imv@}!|n$FcTgg~f70X2$!1+VK8tHY3!qSzs<dI>dN71fuU8;pr8c^x zu6-X*{6XL(>;1}Hh4Jt7MT6UW@hQq#<M=@JEgQ5~I{Z;T{hLxS+$;#s_2HOlHnkVo zkf4y$6xeVzHrN3@lx~16ufp`;3VZMS7yh?@ku$}<8xMcI6y=o|<<-gW8pIMAiY?5` zW(D%mBq!<2Drd@UQBh?)g#|^T0bOnIP;ASckh8Za-|zc|zx+`8*f;~vRQ~X<qcvK> z$7fpF;Z&-#zyU6gS*Rt2pt&jIP%+YkB*7vI1Z9A@a3K0#VjbO*V284iNGOj%w%lCI zP@AVpvPY@MEbEoce!<r(qN_v~5aoL7S+I4>4EYG7_mCx-_g-k2#$*sejjavj{$X2u zMDQa&mVHN2L>GFff!L|Du1`|(ldM7KhBfC2LndHV;Wl4hTXpIQH<b)w>?!KrSyY-G zgH63ROj0s5j2j-#Sfa|Mzr9EK>#XP7c7kAsBK?y-IUEQL6_qONA}hEP@yHE_KLa@S zBVofRMk0yxr@1ZC{4ZUkXCZEXB4S?*tr@L0Ul1b9O0e^vqd>~cg`!yD2++G!FgE%n z+wKN@T^Q<+HDM!cNK=gQ>^{M~rk_-B3Af17Ywfo=+DLl?4PwWG_!h?GL*;!?Fs-Y2 zkL%I?4|ub;-w05@wn2Y#Pt@DX-^<lJS%kK*jKha46l2L1ew3s|GHkxa!kFS0D*9!C z6*@O%m=FJ{SNjTW8fEs1F_p0DqI@JTAF*9lt+s44{4NG-jbirJ)~J)XARuh#9J=!E zm3?xp4BDmrE&npXB))PT5t{pxwI_q?o%W6R^|kX}Gb^XXoVA^|Hi<cf`uhViye+S1 z0p)@%I~HTsoe!xQB6TV+uum~a?MvVCaynC@ZJqWCyP4Yj4v^kp_&RY8#kfjw)HF75 z35$N|;iJWJrdV;tTNbOT-d1RD$0-QAMd#V8o2?>&@s%+ej6Hx^QYMmN^hKg=?21Q6 z5Ixb#F?B!+DOwa+CS;+G651X0OnE&`?^n?Ft7wzfl>%9~$BcmYI2rzE;zYw%pr-IA z!_f9yKk=yBp-wauXa1*qhSQhkGgVQ%8bHJo9+H<uV|V@r7QN8;zgPz-_2-bLEsu8C zMBk}<G@#Q9a+>lqR4`zoR@bi(Dt!o`|HT=5;8^i$MNMTmG_yz?ea{fhzGD81u_LNI z8{?BfDMOnh9MQZ~@Y1#Gpx>ux(9>s%k`CE^hYn1{fvS4W18R-*0CdtZ91CL%M}1!7 zZSI`iWLu?BN|&40@MjB~NXAY)lu7P85};5z)c5N+z*|s$x5nc!l}FxT=0fAg!vu?$ zh;edHWd5@oW1d%e&*bumU;|VjjB-OgPDQH#t^(<-<Qj90mQ1@*+0<k8M_z5x>56_w zMGu*3?FRJJW6wsef_l}5FO0Z<)Y&}9dEiuFh1CB3d1@=ba8ydmF<8@lC49C}N{7{G zv3jV65ct>vtagIQ2c7sb#aw}U+B6io6UakgDoZ%_Fu7n|`re_B`4ED!+_VI6TN1GK z^S=vM>F1`-e$r=)yvMgUH^gBl1<jqp|9LEcCTIFx(EyQ0vb_l@e{a39l56#UMxo)$ zXFX&gk%u3L`*_^I_<AyEo;k{sVTZ74X^<`Qka}E!avP0ZgAr{@d{0#`*mXsHX*l3Y zaOr|bLDE~`uwi$Edt@j{#eY9%Gyls25o&SX+#hSz)PK~QEA>wS&{bx6sHteum)(VT zyhT_xA%=1=6iJTt>1){W?B*x(agEiqLDK+!e-fPtbi2^O^Qu&$aC!bcUl6NzFx$$> z$@|?iFQw4pZ*?|u#}i{xWBIOi4jW@6#`GK?aL6@$vXKWlw;;!_%XS>OcF~7lOKMaf zYH>NxR0|>2tb3~gTyRG6KlHD-lvGd4Le@>sm+0tUKY??Jn0M@}UrOiizU)4+&#F<X zcdG1XOAB}3zWNw+)7q{6DGu2}`#M;>oR>3q9X=H4!!|_~Nl|P%`orgSw;+l{f(#d| z=wLiLancY{<n@n(cDMURiT%#px3R#aFaPUO5BBaAGZEQsm*bYavp4GyaIxa2e5vur zYXd4*;L+JnT0<LB^s$txo2^oQ`>>#{Gii%7HVZfmfOPM!v0hyuUg-W?nXC<Vho?j) zgLxfNgMs_gbsB=?n8agmC<8`rP7!w?bOK#U%|81i-rVP>-(c1<9%Bsc(!lwIdjovf zOjpgSe)C}i`|nt+k8x8PT_7>~{dZX@ljetW@5eK&{$v<S>H)q@kKT*ber)LsaE(<> zyr6{4n%-+abWetU*6_BEoOv!@;2SMU<*V=c9C6Grb1yTRL%Ayq^RF|tEtqca=SX{l zW8Jgx(An89%TunvwJWYeJ*BP*>q5TX7LCok@S?OFJu@or+Yz5kjruTSk%&aSd}MHg z<v}7HF=2`PZrks14i9lNi+l^l*r#d)5^V+KP5+j$KezCkh$&M9l;YT59^?t3zCBo8 zi(!5$bY?RM_L#X0Mv*stTe_<Kr2j>i&3W{}-G!Wv2LD}Q+Fa;FMs)`*H2^vUggKPP zOQrt)1-{QS{-F$*^UPF3Y9EZ3=KJwYN7J161TQMg$VMaLbd=?VyZ5six53C(eQ@QL za%9}0uqjqu8he|$*w$oa^BS!sA1Q@(%%Csz{+MjGoaxDaTHGhjp<?*d_&@;9GP3(0 z6q<`F+Z<ldt{49m;q_Dwi-Emw4NzzF0ROR1L}%;XSmcu{>|hy}xrn3eM~JA?_HkT} zsJP)Z=ji@7m7gQNc3XaeBQE5f55l4PE`@)BwZBeJNE=B$dcyJ`<q>jkaQW<6DgHuP zt;(!4mV{VLvW^}2vBrPSYK6D&tYA%JC*d`@9vxsK!F{qAs4Rw7TB#DLeZwAbM2L*V zRVM|7=lih1ek~Bi;-h_Q);k~Si29!V`*zSt)QpqJutAj1oB8V#XKvzk2m<G*W_@a* zM}_?M)F3g#JW^y5&8N)}8&kvU<tkP)&lnULbXAx9$nm$a8P;PU+vf-lTd8T{u>e4v zFUZJN;p)!@6P0uJCnC}<QR;lsqRbh5oqWrvgp2>Tqls>ja3k%8QlwOA_bdFmfa?Hw zK5}(J(jMwRM@Few8e%oXiqZoLV2bgjzqBGellQT^zWA+aV5C)}ra+;nht2o>a*7|c zdFWp~bb}voH!*B}ji$1c#E;!EPOI>r@z47_!ot$sc?06QMJ3n}9wZuE@>r3}70t5( zV=)s5Zn~>>BjG0FqI=nfK8?-;+8AK88^UCXi}WW4X7@lugx^#03L{ObE8YVH$WlaP zl!0)cx~Vrffm0aNdW=fO_mF`sw0c<C<nB!QTssQxqIk;5PKsAQ>ZM^Q5eJnmB`^Ui zbN!(_x`6eo^}*PI=|64Q(|PujLygm3FtWB_16ydT)s<B#{pr>fm4sp5J_*45_nviZ zFSUg1qjXm;DynNIS~@)y1MKo1UdZ`mP+378N;SQ@_rz@W!*A$HA}BPkcF94sVs^HW zzHX|w_w@@D8yQ3{`(lFm$JpkWp0Ao3K>`KgC{p@dPv;Yhb~c>;^LB-4kyfd@v-tts zLuD=y<jn$$F8lT>$2<M)9q6&9>jAhoy%I$rfY!i5;xcO}a5m2mZpf87#2xqS309d! zJ~-6-f^Gc!Hm7R0`Nr2*13io0{;Fw-5)1wds)Byx%>M7lI|v^$Kp5=6XQ3A!NYT8E zs{IM~`W2?zcbTHMwO+V)iB##VB0Fz6aKJSq<*BKM@1>u&P;xid^;S>2k(Hm;dp-Ue zdWYyRQY4e9&4JdG!5NvwA+^?)52CrABWpI7l}gwLQXmBa%FN#Lvyf9fwyRW@#h-)5 zA4$6}<kFW%Y-LWB?;1c!B8||W!_8-IHjC<`wB9fChXf)3$0m&;u)6QZYGp6pgy_#o zTgqTGEH#DG9qWp_Grsz#tlH3hnRM;<ZlfOFL5w^pv((+$EH~=!APfnoA$gTj={wXl zW)WrN!#k&Pj()S9R;PKZy7;cv+*IHs?vHZoD+88|Edn9S;MIJjzgKU8<g0F7?fXw) zA}AvUZ(5E8TY9qXq+W}`2xwOlF%ze<)><$+!C{!O!mp?G3)!}4f^*+p@Y`?21sD3u z9TR@WjkeZBl}x}pZBAON@t^=!T`#?ZTkl2LT<t(B86pn4tsIfE@P{0xZU`t!Grykk zOI}aA8Jc6BU$XTj#2)`eXtPpI2Loz=5oqTa*=BV3xZxqPQ@{HrbbGp<cS5xJbiAHr z=hosMQAeSRhOKOPo~NnJ1iPzm?a@^i)}*D|cVZk2CNIG$=n-3;Jl*l@6NC0odgNP; zkkG@bh87oT7&c@(ehKVxKhvBvbJ!k^DLf%wL>f!hbP~v^nw{X~{)<wJ6_JtBz7EHN z4xhQ0kKty28-GdCzx<>@RjGqUV4!ba&M~!Y)xEmXkkKG{0+FLST~E9K;tqWqi@FU) z)kp5h28&NB^pTTUR;R^`|9BCdZv>ZU*p$+&IrX#bVdY_Pe9`>HXzYZj$RPM)EIoZf zsCB;G5>r@#8}#5`WkoT#1OFosp?I>UfuoNCu|p4B2e~gO!0Dq|_q)cK7Ru#yYEBjZ zrYcyVUbb5swp`=(PoHh+z+j;f9_JqO)B^zSjfrK8Z{0?<rn_=r+~8+AGMhL7#SZkv zm~L~$1Nu$wBqi}R^Wr(5X^zqaB=U-X!lw^w?nc<h{$`W{lQ2n6<_GOgs9pG;BEy>~ ziZ-u;1mpZ!zvrX>l%mIK&kHGVh@v8P!jA9A{H0>rwquB3oHN5`EYoE}OXx&mvW7wn zAw4aI<@Vh5k+~9t=@h!L>&ib)E^)+Zq?qW=xZA|JL?O*X-zT6mam<T+xx}D`oFFHa zhZ)zvw!LlSl@t>Fbf8y%h%0s>u0mJXiDM70c&|Trq6^;pai!WYO&kYfG~mH0R=YpR z#C>59^&&N0^TpJeXC3ppjk#rUkRez?oZ<<h()#oy1XbtA2PX0OBl`8YrD)J}7X%eo zUX+ObCusn~DZpc_5^-t^uYz)&|HPU=_C&1mpdU`7IT?-I2sGPQ^HAHYQ9jgo&<gCt z7C1+0=|6>!CN?@fhzyB)?I>dofR<O*zxLK@vIvEO`S~-Z5D3AWw;EROU`S!ppWQ;5 z!Te?6?0dLOpL=@iLilFCn3>QSGGjBFzWf&`E;(?JD_Dz5b5g;Fe8L%|*4<8H?ne!X zFB*)kyz{`V=Rvy~rv4LGs#T-4?cG1BiB)!aVw%#nq_nPCl4ycU{!)!iXbuE-GIk8F zW^mnV6XzVe^QNVEw%@lCH@`=7_66@6S01kIS!DOt>;IH#J3VRNs2^cm&Q4HU?9Xq` zrFORBtA}k@xs!WP+1Q4)+QKJjTUOVpSun5MsiwYQs*wFVDDKk=LNGN(GELL{6tK9e z>9ZYtP#dNLpF`|f!k*!cwwISVwfrLC;s_BJT29~i(fl@J#I4>d9Sv<uirG_mnK+lL zZI%U*Yj>?Ja-uxFT(?lZU3A&?^zb}^_LD>11X&%<H1h-)YdH%9mJ7`$Daug;l+L8D z`o+Oc$GYpjso`Z1y}{d=9NvlCLC3SZ@YYwX`?nb+Q2Vc1m3^(<KnnDU*i_05Ds!&Z zyDm=C4GpF+7EaNxpRtw46_}oMNKAEgH}>PE)v%fsy~}nJS*<pU6ef)sOFx}7up1!v zFmJ|ymOvP{Px#H=HAest_3u{+p!*hg`!gtXWTp=nZ=QaHI5tVbC+5Ni+?R5jF$}Bi zW*9s0ZYZ_3aD_&aKhy278(-IT@o&f;(<f}o_I7Jl??Yz)qJFU}82@{}<;h;l3e2C= z&?<ezoPX;ud$U0@GAHP%s@)(i-{Y*7eZi~0Nk<q3oq12+ZghN-T8Pny^5ISUe@k(# zD{~@)8Y1Jl*Kv0PQ1o8)b^XtwH+da7-Hsn~U0*ewL1}vpR2c396-zNZXguOo>acu! zD%i+}0I&$Yv_qc9@p8^p0^$f_qO0M|^-hsBD4G)@qh!vBta$43mCJ5nNk(I$;q34J zxe_zirTZImr;1|{*osp59hMlsQ>CSse9E<JP@Iwei`3f690&Yv_-J`eL`0tyY{7Qu zR}jySZV#AjGM)B+V(R(~7g|%LUSpZ;1U|R)B1+3PbX#`=#%R+Q>DjB*&1y+dH79w0 z%6x0u`aumPEeYaC+ZfYqcCK#<nk6BV+H;2PNh*{w!ZD$0J~P&DY%ZUn&4#7)2YC+{ z2i7|Q;gKlzV^o!K<)TH($3IEB5D+nnd)R`mO)rmCp_RXQSKLVl=7)!ZNjAeZ=EduG zE|HcA3oRb-{QBOXc94sWradUbG{0203Bn8${*>E@R!cqv`lR+s)M&C2p^1LbX1+O5 zy|0?y5*DqG2$I##NALRG`33KbpMvNg1dD2nx_8*`6e1X$%-1ehkPbyvr7xI+TR&0< zesvi+9TsOxjexKRonvh`S$oR!ENyZ++wil(wOeP6b}K@awzJ!Rj$PbJx)*1WDsB0O z-$^;$iIy%V4$P&`d5**ki8^h&nG`aa^kpISkG;Cy-uufEEnXA48;>xoWojTtr_PTE zN3)R49Q|?dN>qc!@1Im1PWaMkNvDVdqrLp7;^H-FW^J9cm=f{Z%PqTs99|7N_gArI zFHX#!6i<fuL}Fo(!<|yEe5aN}Yy3BhJh@+syDDU;)yyo~u5G)!z1G=Kp?}<a5PW=S z{ZPp7I5lKGB2qLgf+7@{CU&7^S|%4kw0fFT+ON_Ob$5R@h>~w%hkPYfc4mt$P=FSw z2ma*i1R-svsc6^a+Ef>70Ruvgh$wwv=Rg@X`_$>2;rvG#v&N_&bnIb1!l*C9OCi9n z2&*iAmT39l4EC4V!m3S`1MXMr5@oKNk^l}_TKn}@M2A~>>svq|8M?9yBP8$N1H4?< zE-&*IKykc@_ehyd;RrjCw%#HB1p3%L-;l$qKJ4r<%w|j=oD<(5XX1kRhxIA7FIm8n z#DabUOydp75D0zx!IW5Sz4sDE9YM~i_xH84$TizfYWW-b6n~9WZOY2JO;f(Ade{mT zwUxEqrL%CoVRdUsNl+QBvJAr(RFGOFUI0|z4A4l==z}~g5c&z^$}*u(g0}XImB;xc zgVm)N_JmTKo}9dVU{S5OUS6`kfa4>^QRf+{T7T}g*N?uKF}sotp881_TuF=y;(t4y z_CbtWQQ9NO<tLOKdeyxWD3f)0L9*->m$QHm_PJHIkT~5=^m&ooZ<SY<SgR_`q7HzT z1OFSoD^Qhof=9SRM4EC90&lmi#o%Gg-4(!+J01N>a`o5uRN&8mT^(0yMpvKeJ%HGP z{i|4{((x9DfaxY?3_D{MdR%o4HD4#F39oztR_<aMMoeCQ{qfj!&gD1bzIsBhW`tv8 z>>nHiQLSk&Y)kR~-o7bp>L*ReIFK_&V2yO<fejlgRfB36Dc(?rpZk)hyvbGy2U(M& zr4*3o+awGy*}XuDRA$5u<{7L0z1X9|U5@Y=TQm*>r-0%Yh!M~ITDWcOElYGSKbMbN zC!5y)k9YT3LLFuuvRn-OsWX$xw!eWc5a8SdOzHsfUIhlLa7lRzB%&?ESMjq%lx54D zpI-asDM{_Ec7R)d&BJqOD4gY{>(9<y%f4!4>qI7;HmQ2kxU0qJv*!wG!UF+QUg-sK z*qz*(Ft#Vk2*|a4w<T16vXCMpc$JZ@(+edqH*Hm}VCjSH2KOxH4!t4nU3*1UvK2^i zK)jeU^VZa$m1x;hP)$nI+dna;AnQ~t#ubL4+XXC#%XJFzX<cq*QU15mcQ?{37OS}~ z_HjGKjg{-04ldNpn(g52LjnUm_EMv23+{T^w_CQQ*BZw<y&jmcc}{&@3;DWsTW;&7 znA)J#W?dV34z7ILQxBd?7KF=IY|OwHaCGXT4SjH|67ofA0YHAB7HZqAgB$ooM*lN? zG5A>Z4=8BItQ?6nekrgQ6Cp@JB)HBdRKWwT_hhCCW>w&L$<wGQ(#<!|Jbr;fJs=tB z#5tJZR?ZcncPKKt)d_LMtu$pJrl^)9B7!w2*!)?xNaJ7h*t#>%Eeai(SG_sKqUcbc zf&QGtV@WjVmi9DgE(`MA$k8F5dZ2XsH}I^W%FZPt6{?V(##w&XyASq8hU~9tx-~rQ zu8TG?CqYlROg9Mn%`$klgC(8>ztYgpRA<*8rYkpH#yCRqPB-F!(5IFbP-y*fyG({e zUy)%ZrgFC3TjRphd-(V%GasCi&hi?3Ej&W%5#s1Ra`vP->8o1(rgvUjg@az8XxWtC zPtCPTjRGIQB%Y|Ih@EX2vH~ZTHbj)}vs_JO_o`Wwf1DHiA~9!d^XaGq10y4Eg7ZKz z!F~kDD*`5B1IILyehgcjEg&{!e&o5f0)WQBD|_U&J4Qe_HJF?MCzai<0h0{cMSs79 zEg_yuhKikkYwO(~!>y4&VXV_9!nC_XchwuNeNT&uR2qApD1C#<w!`4O%c_W&dx^!# zKluU$6-yA#%E1@@lE}k5Yfj)MR2VMK*%^_^&2o!_46}$osf=^K{7MGVc!lKO6inv) z3hg>lgZkoXt2SWUOquq$PQPw?c>h`6w$$RHVb8bxg(JmI;cqnCR{b4IHhN{0Vg~z{ zyh!9hsoV?Z#R;>a@2P#75T0@T1WXXjpR<Zk?9GHK$3#CS>g+yXNf$Y=w~zQ+g0ZY5 zNOt;Pnr@xMo1d9~#an{(P1g91^*)aKNqqxZ)iK5xQdwPrm$MKZJfcPp`ee;bd!HRx zfJur%5(}->+~fHcvG9z;U`rcj-L%Vbi$V#x6ucbT1{u&tZ!IIu6J0=*RAqMBT_~@F z2CwpC6^GZt+@vr|-Do}9R*X`@H|+fd&E4edH6+9KshToR12_BQzP_-2_bIX2*(Q6c z5pT`YR_?R%{_wv)OgR~S+H5hJ)}QV2(>=!v-wANPV`Cq2PYpVE){^?>a*|J*`y(No z{feQAv)L5Y!JP-S<eKKVYYe7DRQ%af@#FmnmR&sfIhOn9u<D{6EbOb-Pr5hi`W&!s z58>={3VEM&_Lm%)SqLF_uOHxVAE9scf#lob&*G;BdS!W?{)-K_c_dkpI;Tjh$_q+- z>#ZMTgn?)Uh53GqfB_r?w0i*Y%c=yoMW^rir8%(-ri~*H5`}9JgJ}6t8cZ=!@w3p` z$>661>}ik41Kbw(JC7y}>9rI)MkCK5{TE`sg6YgA-PWV@7n)8Hd1^<8_1n;pwWcjB z`fR(X7GG~Xyk`lmA}z9G*T`~tu~wVx9Su*M!G`i~_@2b^h3<{vRaxELig?M<l<G8s zsdN6_2f(CocEPLL<xp8sqHHM_al`S}<L@z52MrkV{xTf~#4<_3DvCj%wsi~^{nn%6 z)I7{$0P^>`X5|h?T2%Fav=Gje!;yK3^cw4^FQ$K2pWBv8nF6O8)O5>kr1rE`D8~DX zgZ;!I;my~}v+R3b2S%$r4((Yzp8{eUriwGEmg!|h%?Zn*VI?}2E_?$`8~5oll5Urm z877sXvN>a}9{UAPxz`H%hKU8o&KL#jeMV5Sr|+<VXyWLx``3Ir{qUlBG3t)28GUJd zI98{q=yX})J$+^_WIYwOYB)vP#23mZU=qSi65+?ch%5v#)mNJ|wK+&@60s8Od=NC^ zCl<=>%k9}vIs}}iNEI`s<O}PlSu<+G%I_h0DPC=kJ$up&`*q~*&ft#S?aB8Wn1(&d zu))!~r`eMojDvv5C)b|Eg(Da{DEFu%&g2*J>MGA!D7w*V4`^Psg2z7!%`*2w`C5;T z&S0ie5aQW`dQ2D9SIu$`1h2jll8+vIg<Y$Vjy0T6xY(nNMooTyxNtXQ4Ih5*4jd~n z4*nIJImDoineVtP&3f*3nOOeAKVJIdq~FOZ{t`l=5on+^k8Q`cxGOd1Pq66B+cX*n zQC<-qH+}2OHE{j<kOZ!vxjp!BqKtEb6|n<+G#!lwsQhdfK#+cu%-&vS3UGWpo=Vy; zknFAbPH;|Iq|xF6q1;ABHEsuVyTPQAP$LJ?JhQVG*d;1KK&X+^qTuP~ejoVcEw2J% zhnD!<X+L1W=|XB-URC*e2?>B^f}&C0h}wJUW0@1;g$8W_Z<m(V7gs!1N}OA?9yK3N z30J1O+~|5`6PGnk{LJ!{u`nP*5N;d-C4R_qWH?;(w}i89WL)@Y^W1l~fSO7sBRBAq zY40ftj|B8!yUOkImK(>g9&@Zlq<n*l0V{oj9c}*D4X-(s0fHCjOP^|JO}VX%l@m5H z>zNWA`X*aVN(kWtoFy9g$yLEt@Uz3)ae2`9_s2YUtjinQ`I6HzRad#jS}X_70mWRw zKWY;|IL!NN>ubcz@`3&wKDWA<E(mGps+x2&{Hlw{y;0}mPpa+|5?~?|RVQ~LJ+LcJ zxvv;jk<DPFh}2#NQE%XT{L=G2Inga2TZbT@gfUDqcNM|6gvIM0b044w<fCmo9G<t` zN22fZQ_OU97pY9*VCSwj7=d}Z3_+-uGjE4$T;`kx16`IVxBK~zV1p~`N&Pr%Z;HO! z83o)ydJ8SDt-F)%9!0j$k|<UwtC5E8xMS>>0Ez;W-yLSQbt|<Uj^Am4T9pa1%E>L< z`CsZ&hS-|<idLf;R9ndjSx<b0QH(69AlC}xqK;INgbi!t1-^=4Q-fh$!B;@|g=u!L zuNZ`O_dKAD^6=LBZpJuUc{F-MI&+sgGo0qe?n#CTv7r2>dxK<v7un+&)}yAO=C`x7 z3|dJ#Yp?bS5f>gs3uD<xUQ#P|yX{{jX_l09V-tl_2*YV7j1*Y<(gicOxI_TsMvNzS zQY%DdVE@27@THGhY4X@fL`|V>lwcO7z)P2-Z@6B~atk1~NU5dF`ozk(rkWP4E0Z+k z91->b$UI^0sec`o<$M6)8iU@|ZOqpATH!;kd;0u~5XT@QakmO)_$Sj<Q?1n!cTGLm zZg_?LGY@w~$z~q7?ePzJ7TnGMc<lUN?Z4fQ{sonV6qOCW0Lwi^rCqBvnbuOp)@=%F zKT*O33Lblg!7e?e+s*3YQ~g_OFxliYM|~*dOg9-lJGjJoGS#S@|Fp@t=ix#K=*<Y! zY!SW_RWFqKMx*t6yo&1l1ngYpE_B<zYZ||ti%+Y(3KJCjIMu5oiKxC_aZ*X?v6%3q z2a6&cKVvVld&TS;DfrE7(GzM#@IF}Z%)wTo65lAXhlzX%5O_GZ6SAFA-ebm;5A|j4 za0;+KwVT_+JuNo!Dl8vTNS=w~ku%n_Zs}K_p;p%eT9fDEyr>sQrb$d#*{#kDEzq^n zDG`4Mipb&D9e4%ix=z;0XPJ4^a+e|j1`0XujRxGv9s01L1t`e*@GKfrwA5o%Y*!8h zC+HW}GwT?%hjZ4SZSf7fV9;RA;jM#{J7B6Oy_YjaZFR3~W+f#*v#3|9T$HfFQZq5= zCCZ7>ejId3x3#j(DGDKDjJoiv7mPA-zie2)S?oTOMRk@a1};nWy;vVHS#KFiT!ej* zTak$50tQ_JZy3-7_#^7WmYMzbW_IMO7Q9QkEHw^u4ST#<L~<}FgYG)r`6Bf@IR0H! zsp=^h)i}(^RX!g3knHls<AsTaV~`K*FI7ouM)DzqKZTCmOr-y!E#xtXYJq`x!lMsv z+37;_WUXf^=7YY0peFmpDaDtX@{?YQgnP)x)va;KU`NMR0vt#xgn6G;dcVSNF!JYq zWed_ND4cgJM}!bRRB9)W78&)EP|)FNVf$BD^K4uFAzSZ<GJOtS|LzVQ*us(4Y5&)j zDNX!57dJBh`;->KH6oz~8-q8Tb}wEfTIzOfa2k{LkL4azA!GP_Ug#EWxFJ<{=guX4 z?}IaqzM5fv#VQYLewT_ptLKCm*rphE@Q?tG07hNxX~Z)dCSDI-Bc8*DW9$uC=R4tZ zLph9z!3i;Uh9B>`GvgYWdIEEWL%*8iZTT^kmMU4fC4Z1L4U;kxAr^#pQK!Gy#VPcx zUM5#$psnQr%JIED)xhB;wZ_`s<p(Dlgfn^-YEee_+=q~f@Y8mPI<^eJm0o4!M}e#6 z`ip`Ea%~0E3UEAW?TI+YB)4HJQ}=CsK89h=g|$gZ>Aa`iCiTzQ@-HEm<zC=fDdg-4 zxk0x?L%urkrQ-%cgWrT+Cz@jLSao)d&PWo?c03K6vIUI2jR$OqhrFfqS)DWyIuL%Q zdsa;3N`zL%B|Ll(1qG<MQNytFSY$>JDp^FYEpV=eOqp>v<8#{EDV7rq_m&#BpD$Ld zt-C2O5m|ocm5K;R&VY6Ors$op$DG3dpvsLTr_T&^6IqE6r(SeoA3EVhhz27o-u&DC zCb>D}j;*WJ=gj-m8TyHiQ!97{pI%ng5-+6Kkm;O-O3CWxOhv^C?Q-cud62#dS6Kw~ z^+}w$u7P;wB2%S;w1X)<#h2a*+M=@6@ptsOX3`I>imG0u3Z3aj&`{tDNE1)&kP8pc zP)->@(p%EokC@!Oi!0&Ra{T-~_NmbVd-?TuryEZ1G+U=~+&BBbp$LLxn}OqP<U$VJ zbSSwao4?{Ftj*1+-%0Fbr{<J$f1s#x#z9a~A?halxX|8T;=B`m1F(5}oT%1aWVAJl z8Y6B|?Vmukgq?5H=!3de^o*~|r5=_(&nINrRf%5_K6fM{wK=#q2uMH3)=w|Q?CJta z>3K8=9hqRG3#7Fd)_|(5>hqpH!E_B43dw%fpR=leg4Os8jGNpjg=a2QJBQsqt%gK% z)KxkT!>VHk^{pyUKIO?|)+0t0M-iuJ9I8jTJGR<!VP--g3;D}w(oJFMqL7CZCesKX z>>n6rTs%ZZ=J%)-oXN20nb2IMuq!eWoQB;&9hL0<{3)vLKychq0Za3=D8Ly&6F^5i zS<+ChI$Lt<M0X{#IV;1lRp*Ximhy_v-0%BU-m24$@W@CqcNdTOR|n(oi&~qBJFNUw z)z0O$>Y=H5u|@ZNXy=9d1C-8VSEZ8$p!g1<yZgiC7|H_R`oX{p+yl4H276397l?d8 zpRa`t&#)og9^vP|mlr_q#2{ro*|yA$Z;b{IEhej|YHLx8KRyvMQtZ{R`56<pi^HWX zLjJ>W(_-(5-Oti3$LP>o0t=Ecvq`04pRRmN;=(wdE~t`4{nZbvlLB4c#^wZllP+gh zk6Pt8xqF+z+bS9K*q=9GH+A}>UTVojvvm|7^k}9e&vo~6jA&kmvHU0HCjFNtpEJI` z_@2d1IQvmgr_wj>I%cSNel{uSo}TD84+|{Tqjk9~k5feSZZdv&S;Xcmv89B85|x;X zy8{)hCz}4%-DME_x>+Kke0X7Qauo{wavlKBwU{VWT@~j1y}L_`2IW^qM#18@3W;IW z$u8<Ikdb405<)(#k&(D9(p4mm*&Y&`xncHY{2cXKaxNBybinKo(buW8jlFP82XWY` zwKfb?9-OgtM1+mBVs7sBgx3`VJr_FS2?@;JH^YwzK{*hei`T~8z(Bkn-uU$oSw9MX zNKd$`|LQa>gb%*ZY<;!9H_upb5zBVH<wrNKYGTK<qlxK4QOMTn#&=y03)ScLQ`zBo z>`_A%=q%6UCeujUCcvy8cx)a#LSdtwMPxKXu;_6k4ymduh;VuujrIot3ier2E#S5V z7Uvzlr0IScdkpW&-Fm(D%N6|VB|NJIozCGf2FOQ}B2q)b8&|0w4)Yw2n3!Kwv5PPl zh+{{)a~Bp~@J*+0h$Q<ag(2FbN{7J^VAJ?UT*GGYx6-P=wNkY|99A}pp)KHfcEFQ8 zMt!m@ZJ5uCQwetq8SSy<`l0M00j5$3%SNByC>@9MA`%>k8KI`ppnzug)D%=A5Z|uc zWh=|kg4Rlg5+%}*Lhwe13fp&?mJT|LItG<_6+~@+9^Cs<oO85D17A{rti!EMk_^_E zGsD%Z4hq0f^+sRvaTCqQU~QNIMI{ca9JoG%-hs<^DA6Ffow<niCFUSf<-`_U+YZQz z{;KyLJ>sl)G}GkoTz=!QdaJhJ`a0?~L8f9Lga@#jmQUfoSArYlBt%=fnq;|HoT>Fh z-1pJ6`3^ZIpbt*bOrl7PFPoFTjnSe#Yw7n9CiUjne*)(`ir^7xzTO}r^r4o>%eA}G z)AfWs2~2Kx=Vs}mNCJ|iii_m5tu;{k7M|Kq<&;m?T2#bDSd-5R$|u@EHtmk@kAN3B zldTNXlTawTl~^c7D}Vsa@$}C~&7lVO-l$BWSv43s)2g@Wpr!0^fn$fXc06%Zeb+Te z9v|09%e9`WvAPB1s7uZj=Uxp9J8-s92~U@5(LC4wHk>}lH-O4Qx`bf%2-4ISB9K~5 z|K@f)Eglz`t;OWK67Lo%_OJ}$fqtQRQ()ob3Kz-V4OHfeNs#PJ?ISqm7UnGTYJf8e z$L>r%t9Nj?kwy{C*U>Yj`0yO+GaY6$0sVFd`6U7M?F;Y?JJ@CA798o;Z?;@1J%Pcz z@)5;gJ5z(?w`_6`x2uKflB3G`p^Y3Ptswe<9?b*6aJ2y?62C;>B4<*f)V|f9ck(78 z;Pc&a{xf3ex{Pa&zjeav&$HQvUn$Jo&gX-_R@c+Epfbt|nelRDk`@92b!*=%-`HlD z#)MEl2amFSA8M|Bt1jVU(aOvpr#SLyKrpL@O$p2V?XG;9SvqEZ2k8hh^Qr<9+3Ac| zYxH=SJeD+6Ar|PTrg#0Rq{_&r0|_);(003d5(}70+U{wVnZW)?r9K6{cwTO45g^Pt zGa%eU>tiUKr-sVIg;aiD36%o<$D=v&!MRx}oNv)3TnTcYH*#iD?7@KQPS9U2ybq(S z>jovKHWgAkvMK0vKH+ZDQW!#;j|)S#oX;}ZZnt^&TL;!Bi_`%&_O<*RPW3IT(lq>a zyMAGHSBf>yWvGV@4G*IqB5VqUWPw3pR3++A$_yHzm5@JR+2k|DoEY%}m5q03@z-L} z6?uTPM5X&sZ)TGcMs?_vGOXIxSBU=&QD&cXT0ity9cEzGd%%~s0Y;0OEG}U(+fs!J z`B*r-eF+`5`5{m_2Zj>XB_htaGw0uBYis-6)efk9>MK(GO8>$Au$=U79j1SJk;F*I zm%g=w!<$=b{x&;k)#xp}oDIa9gy9q_)mXxgaP5Cdt9ZCq2ryhWxoy0#NA&$TaxTEv zwh8@Hs?%5DAIS48I%^c~G!A;*DCuLi6MeTfB>|*2-)}kfU+$Lh!fb$?S0lw_Z8_EY zZy$oZKCf0_5AQM>m)`hPKs>qd6v5>iWP_hfvUaAin5^Y446n!if+$9MDt3J(rv{mK z+T^}&-*`AOuJ63|(Qn+aw6c7uj48BczTKy<H-NvbpGr8tSPCx|SWXIXJ-Xu#JZ%(0 zwF<Z;EoXsnHjVatI~A^_0uRKL!Sjq#{3|0)0D(Lil7J=8M9fc|e9&)118wsuO`^GR z51^w%`0XoaZ6W7p#Hwo&T@5hpo2D${4FpiXi20T`7)#KOrR?!gBLq1cSf2A_TY(dz zdcph2z!@cSBg_s~Pf9NlLtE>BhFGA<-toIBy?&$|w#>)i_0wz<O7X4l=i@)pn^9#B zsx#i-#)&>=extKld}ivrR&1E~?X$Q{AM|BHy>**$`Es$efJ<LI!LU$@X~hfJiaaWC z+LM^hi-LHnzdWxKHqOxM7c8@=(Z^g=^!7uK43%0c2^>h<PvG*2^X7wQhfc0F)P%si z%|d^GIVqCxI@LAXDi8^8EZkQgi2etKQh5)yUI$uR%-+)_9vx8<YIHJsWmOioAM>UU znhfI1-p{rKLznc)A>mHNh45sm3^29{BNdLhgr8I4jHTKjt{liJh?`IYg$KCmr*WdM z2*jlnk5hbVo9wU+r}~5$cajwwTHhqog7E%**T5CnOJ;l?Z@TRh*FB-ur~^V(y_gCx z7dZVz6ua)H^;Sd>D9S|}^E(Zr@f^krxVQM$!=KaonfRIl@u{Z^t?fqaBBwNx850hY zyx|ae%eES|U|sLzu#BLR5$4#DnHKM`O0jgho!$NL@1~njymCCDlVB76p4a>fPLiL9 z>eqEh>3UtEQZj7t2f%wv?pG!dl{%HOTEufLf#;xCj3ZvX3~4i6m49R(!rKawNF7|J z4+WVArvkGi=sDPg>zZxsgk#5SvQ2SXr!i^BLh_&t&Mz@S&pb9;THDuUz#I4FJmu|s z_<-x-+}F5{-35WkZMaaAjL>-hb0sfMXp)FJ`#$2I+pYdFy+qyX+i|V=w$DMMxamqY zcz}n0yjUN<au;ql0&ON!MK<kAQXUP2{yd;&JT}S(J;-qza_&`xbR=XP{G?p}rC>o4 z&{b3C?{~xJ7-B5^3d=msCH7YrBE&Z~=Q8H<#ygiLM-vh!Lye@L_eA%$Sut{-IV&pv zwmf2-z}d;^dtTMu+7!-R5^^e4ni^V?n6UGBa?Q{tnxOAebxUcww!JoX|NJJ7bf~%{ zTCj;odA}IPu*Il&5nZ{+lRoJ+=oIt974OrTSnKf=10w}OfAA;l(frWy<?kS>1a>B} z%y3<1-li5*4<_%Iv;fc%SM3&Bzpoy5asPBIu4290lr&o<uQ&ekOR>?CcRRh2iC*Qg z`M1l<?Db|3);MI4l7%VbGf?I3-x^&J5nHMFOW>Qa6>Lm&?uvHezF)Y1AkL6C#q|=` zSxNR(;lw3<L?qU|RkJex_A*{2eZuj~264lq<I;iREMFk>5xKabpzhWWWxD%({$(Xy zlC-MtjTeUbLT)a7bu`82>|z#3=sZ1tVkDt|1Lk<i4H~N9;t?C7>c3-=)&1*Bu$8j# zuJ6njnbBs^Z}T$u62}-)?XOPNjjpdxx_REww^L!KSywmy>6yLbRFHbcMrC4;<T2uZ zARL9vJ+4R)a^KZdzHiQYh0OAJ80gBFN<y{17&lH)y85fYJD$H_UoR4K;-5i=$kg;^ zE?-^DqMGWKhu+K`5$Gy<?u^Uu&#+QynsBq@yrIPsAY?Ji-Gw>vL7o}=y1z0rLvfn` z%>Jk0DfGZAio>)jv+4zfBTc?neWJ%idv<8UG=GD2reRx_kB212XA!X*?@JDgN6(R) zQZJf+Cqd==Xdcf=MON}5Cb1g53jHq&!m*s8TRsIU?-oNCet2oT7Te*ekFi$iDsHbT zRQ@6$fZ#q5!kC&`$K7|uElI}Pfu?=bm%MbcY?nn(HaFrO(mw^<H8zPj2(q%5g!cM7 z(P**?-A6lb%J}D&I2KRM$pJ?=FLSv8@o(ZuKdzsTpcX^Sqa2<XM_`DWVi-0WO{x)l zp4!}sbsb#Fz$r2Dx_QQHo%fUS4Y54Lee%RtuPWGnt(s|>T8IZbd88oSpE9J@?Z*6e zWy7=n4-G#K;SnlczR}(?JiG@3A7Kwn(rn33O8DKefAL3lr3p#j6rin|&Vmd>GDkT= zl*iMm^wv`tG?9#CJqTvZvAmCVg{NQYygyk<8ocsX61JkP#W9755l-t(#mtAH{3<^Z zQQPnSpi?R(w{Z13Kg4Bqq*4_vGl%C^d;Mkdx>f$F87|X6pNk<89VUr%SrJs?mMo;L zc@%@HPJdb}$kE^%JV#ip41(iTifSl6-D_xhUnmkorv>xW23?oPmR54(R*Ld@JmPB2 z3)__c^1Yn~^lU9E(}4}%H7FG1K?V?3#_zq!D4fU!X5Y*aUjFTE^8kLst!ix6o<`Gc z24nE_E$G8kAv2S|@p7g<OIE|33)`$^rKq|)al4g28ZO~g&V_BIZ+)G}7l&SwYG0vs z?W;6AV=qVdi*F-l3=1p^I`%q3723kATt%hhNT&BpIvOw9TT~vx?hJ3{_OFsbmc5}r zxjdg|kXcMB2jc2-DdznWes1Gb83ec{?tw@ccA23Z(2QCvf6b8Cokv6<p$~jh>z$FZ zJ1ME=OL%@4{z;=huIiLmI=cbhd%57L^AW-yJ=Z{9;w6nb$f;#jl3XFkZ9KV~{nAw~ ze=&up)|L#TzL#Za5W3}i@yI=Nw-DhRzc^Vfp?g^#w66GPV5ZB+A#Is0E`9S2+FpRO zVs~I5Ruu*$gZ!HgIDwtCbWVxCq_n4^C3{@S@M?Hg5XmC<ScpDI{-&H}y}a*DtaQIJ zr_@(sm<MCxNBQ$5*EzNZWz-`HCQu&iF%d_U^W60zea^-hOsk;Pcz%Nk=Z6O<`{z8s zCv^-;-W)&9!Lt#L=bXDb!=#4f5!+O9l&0O|yd}BNH9)lrE%zdsag+clKHL^v1n?bV zS^ls?-i@9Sk{B4FFOzcx9@u>$QdQV<&V}^5?8*44?B}zFQ(vpwdMZJ0*DT?D+a1tz z5(_J;18raQ8}neIit|FhI+A&G>m(QK^OG={Tv*mZ4H{{{+#)j@2cpXFp3p<1Aua_& z0suBv*oHMiqi5!?s?QX;blpWs|N34vY7upb<o`W4x{iU%({RBpyo+ReDds0y>Ex5= z#PH_uzX=*i{B~x!>9ZSQQfE_xzC}~jDq@|NWLV+Uy&q<CBpHh(j0>qpYTuEb`NeoP zyw5TuIJB=tmUfp7D>o?Go}e@6i9@fdI^&nD_838jMOef8bn74p*NVctY}xY!D%-+C zJROlZMcb@;A8(He%CAK*i~1)b;2hsTBrvs?2Y^4d?z3s1eu#zW6-&B^e~OX(wX=R) zdLLB4bllO^U6FFT2%c^}bN-~^srNm<Jj>fL!}Kn)gCU)4$=@nR&S23WbFmd*KJK@F zo4u#dm*-taAMnK+Xe=vS%)&iaCuMbj>;M3rZ6u5~zPX(ZIomOwJ88X)W?RW?0I&p+ zSw&Eod~Y>6cUB~FfAy8aFU|8m>4WK~p!DLRe^ZsyD=8Wiwhgi;{}8;e8~;$xd6AZy zWH$qCmkGADOM?VQXywvJIdRSyt|-rr4f0(Wk5SoPB49oW(FOT5fPT=VC<u&_GS;tc zZ}F*edL3YUXP~~S$6O3)?Dw4JeS8TzdZ<Ah&*Uk!9^vs!M*_xWtX--&Ho$KJ%E(=; z`xOfArQ?~Dfp`WJt-q@4?DJxbbJ)8tArvtqHwr-tjn>lQ>GDWqrD74g>W4hr$m)t; zGt;3hwmmS5ftua)yXi=D6J7Md&yO?T$vCz{ph^zA&L7^oiQfrgicgK>HuRum=zl2U zX4WpcbhQ7>;u;;((EGjVhMOeeMdF!!2&25aH8XqTMXct;@|R&i&Q&M#^V%IHwGIQN z5I9HV;d`Ns#FE4M{gDHHb3MpFStj_ix>HeyWI%wZ=edBUqV%|53!nJF13M0=Ef3xC zj{?4st+^BUsly6v+MzGJM*K~|o?$UW;OEqLl_&OHQlUi%UBugNmoHRd8DSPg7iC<Y zFbyoA62rw~3F5SoT!It@y@tIE3@8+DIKI|p9j*`WP#1`4ay~Cdk$lUY{Qr<x?%_;7 z?i=6Uj2W^RmK-+6IqRUDVu?gzPK9I?A!JUW*ug0jNpmP-2%SU{I@wSZJ~`)@O>!t< zIS#Y^uD-wjpX+(<>%Q*ix?k$$a|e0(tNIx7Q>$QRSJ~(%Vdp_8Po8lxe&^{PwV3;W zw}^b#TpzK@5Vg1=g1AA_e4rW^@S7|8{+s{F+TR`<Dv;Vx*y%v3cOZ46jg`wdT^_x_ zYwfVyWZR)G$u;bOF?TF@oN;7gcPm%o18L#0X+utq-=%K=^1LrP#=?oA2~G%%^kE56 z8Mi6~=fOE=w;>?~rD5>y!bX9QTRtWm5(;NFjZ-SoA75&ceZW!l<8Q%~NU@WB8_yT$ zMa!`GiEleqM6k$m0cE9_AJ3CV{O9mkHjdZfy;J}eg*-Y$ssy#(50T1OI;<CSD^5tr z{9{1RRlk;A-zSDXO!2^L?${cO(NvkFq$);8*riWTzG{YiQMT#&%m#sEH*KwsyFN-E z_tNc{K#;TIVZJ|{vB&DnlPVRGBXQ8-i{kO=ZPqcmdqfE=!;5<h)LzE^Ri`qFsk@<_ zhkpx=)8`68?#VH=$-U;shRqcOPKDN>DW;17J}i6tjl!2gUkA=5-;x2(zKa(edJaet zGj}$}!%UCd-_^JC4@O`K-00_;!RLMszN{EWmM<=MSdFKgbdJXXuYVn#bV-v~VJGh- zhMV)DboxycALIRYP3F#fW6|{#{I|`v!|g7YH=fPqvmGBqLE?m*wB$C02bfYXjxG^R z*}BdkiN2ADUO`Cj{>%Yw990VtS*h@1+BE489j7VcBxgsI<;O)VBWM3OaIK;IkW^_C zlkW2c=5b9iC4e_r=PnS7h+X@#Km)yH8XOY_+m{|wJ~*XuK!+uJAf@#?w^<%dmq+uZ zn3CDKaJ5$fC3XQT(LWl+kI^yx<>)N`si1cpX=hL{DDw0R8t8ichwFkme{WtEyI7!c zGy8@=TQEF7JXCe*btP(|fUdG5_V{RWyC!STE!!MX!y~Keo=E;thtKKM6I`^g4<h(? zcF-}!*Y`ut3-S>v$+reB!HFuTdU%l?iF2!Wg0BbIWpj%|9~TSg%t-&I_zUZyDR2gD zw=a-jpviXbG4wDd7XfM09Z@F>i%ijiu*3Eg*O6$KJ4(rPU)VL>BvTo)jN)u{d`TiY zMbVOmr7<{F3@D_Q5<bDPG4?@X;24%n2xr~gcE#@-0R1U~fFcTz2(}DkdgaIO>Al{E z?8Vju@+g256&Tr`efP=#*#{+wUyM_$;79uE7!P2K0!XC+S3lE>zw*K2U_}XYvdAC@ zJe2MLUjBnusP<T;A{f7^%Dhij8aRdp&WG!a%K9!x##~1=PiKicfFCg-NV>alHvj=3 zw*k)=Ge391yLmvYY9>^M?1bTpB9Oxfb_9=BO9f)PWx}`Lw1j8g!0O>pI8+6;58&85 z1w9h8gd(5_WEJAnJK}%bpt+MzK|eUe4Tz|}CMZntwu_`-JpfVHgY-WkCP>tifu;-8 zUQ61$H#@r^seBXgDwdLt1<!$`y;G1bOwgs<z1y~J+xBkTws+gMZQHhO+qTWO-SeG^ z_|M(U&D>W-WJOf0Tu)xCJapQmrzP6$h5EYruy;La;4N`31EofwKxIM%#b~q<74#V| zm)?NtIW1{hK$-FYddAWiBGj-~0Pz={n5P~vWO+UX);bo+i7@z%=!#WB<!lF$mK2bU zIHdm0QLF=|<FmjHMu!}-O)`kvw8cg9*X9`A@rBHu<l4KGTB^4}4&7<>SL_n{8^0-7 zhAzt-Li~Nzzh)ESKIuGD+b;<%h-#PyP-HX4|K?Q%MNO~PS3SMZG-&dGm4#-^0r3XI zD0j8tyX{<y<dJr0PsOT?ZS2W}Fd0Mao=k2u3=c#C)ds2VbKA>op8<?(7`W{zky*?L z{r=u43ugyLUj+3KcweGIc)0+Y@^`o{%?9hYkQoI$9$#MqqHGuqHxnHO0YoR^95A2* zG;*AQ`P&a_+^NXEe`ErEe|FV9%$gRzd+UTCHO{`+e6U8B$`x>x&Rq?IL^BDa*?8lX zjgILwkKR4+mN^Wikmj?NyY;*mrMJLC*#Cfrf*H2O4XP|5Jn;2D$t57q&7#4BXBBZ8 zH07@va}qG%zOL6=u{8BV9G=8gr<3Ecgw(qV0haqDmhmT&EkIK8PR5Nq!;r2mdn=eo zR|SSvD-K}a7HBU>1UD+cYBz5Jy%Tzdq9RS8f`O|q7@!;q21C3#c8v;|ewU<~@gu&Q zu8jg*xalmYKv9BgE`-~4d?Pd#S1;WHLtN0r2`L5g*}Fai3VzZus$AcciNgcfbdmhU zfQxT|cZUxu9vpn`(*85db7)iAQHcdsnx+7RlcHbzo_82+-^V<5ZsHpyOnHGk-4rvE zYYAbAAlft<Fq0Q>ZA;x6MgFf)91|8?kR;jt)%3tK!>&Epd!!LGcsT=s6b8l2x_&Ij z@vgO+$#rT@)L2(#logI<wLqWWgcDT)3AWB7Xyg>Oiv#sst}_~@go5mupx!@uU;V3N z3s#KHoXBrItLrTfU}<yg`fB-zdF=B(NO+nw@Rs@|{j*Ex0b0=ez}A~5JT)<6uPG^i zrx(fY_60qT*b=oMdp-(KAXKk6N1mSB3n3|ucH!6sY#kUtH4CK#{3A0U%WPMMGp}6> z0TX=~i)Kg$-|MT1-<(G%4N91trRt~w+O->pOEq^Dzit_WDt^IsTaJxS6=D9Iq7=B? z(tZ5Hzx&|v5OO0*^~v0zUjE7Y{i%>!>v>zxxPzWHKKG-c_~6foiVXZ_Y-;$8H!2C4 zuXfL1@MJf*PS#qjJv4X1X~FaYp0N@mojxFqd2iYB{D5rZg*XOAr1Qi9E-$Co?<6BQ z7Raf#2Yg4P!cr5aj)}JuIlB2UR;-?n@1?I38c#15giSp~>7O>8hD2KQ9zVq);ZP~o z!6+Tr$#F^-0+R+u5T`b+*N#1xoW@ea7Y7ZS-i3CtJ?YcgvRZGLRKFxrB6SSbp;g4o zH=H6exL>0GglkPXAjn(7E&VBZaq8u-$7MY0#-Ae&wKxVR?M6?Gaxu(qC3N79jpsYt zR2XW)#JlFwN7`Dl2jKA)I93|=^$6K|)+QTYd$K(6&P3yKXt8M=A^1A=o`bHJns4Hj zxSQ9fW{X<e{O;VReS2GBq!2&l%v5PE`oqXxWSW?Zkp4{k#DD6Qb=l-Oxt<@O$quQC zXLsR;hh(!xY+{?K4apev|Gi?KHzp6v&?PDTU?~4mDnE5g$9kA2(Ymx6PD_ov0PL3! z9FloKQhn#qmw<^S$17M|*0Tg+U<Jg(6Js_%gKJTP!L8U@4ND6_+$*GigI9i^r}9|e z<_(+uSBCJ4E-;%%SN2tl`=(RKKm<I_Z%%Dw!4)ab2K2hG(#PR>J<?&jSNoBjh*~R) zwqnL}g?MXf3WWnT7;bTVs*8p2b}JG_wxy(G6bVCuwQqFpdKX1?bzsQTX{gG_>|4CB z#i=z&jO{nW7wjyFJ!0=5fi_Ljkp}+&Bo+<HF%iXdvDw0&Q+-&h-89e36J!%t+$-F` zZ+}R>no~^z2maQAC)b~;`5#JufS8o2gZejPGm#Vw_k9s0fq!~7D8Wv<a_O@%i~zU5 zATN^^45mdASa5DqjC(mszHyVIc^nlvGAW{hC?T4~?zH+5n2T)v-}JM;R=_%5Lh1HG zUE)J|ki_yv*u7-Q*!tWhZwzVXhS`$66`ygVm8yEraJyCihVlY;(rO6paF<2^v>Q%_ zVV|`v`7qS>4PJ-=g^0HJP0$@p)x**HJ1?nJ-byu8kty_Sp{k=XqOO2#NjR&HFHOr6 z0z`ita}$X4iRs{xN{S@+p`rqV=>iD6l=u<OKU=|*g7PneIVy<_$>6xg2}^8acf8X% z8c`-%cQ6(I>XyMeN^F;Vk;{J!he?Dk#FUWk_kNEctEtGlu0U8ac6Y{;s(P&$L~1YO zz*^e`ez8<D6ZAWr_Q!Wn+8>rtej~{gaG4d=l(amfmin@NE%(d>r4`8SFUbihEK`z2 zA4d@FCDQjW-i?4Iy3p2*8O<qKF2zV4!+tm6PL2KkI8%s2vEMN|{3uw%J^4L!<v{7+ zEzLDTTD5R)1f&(5b_8W&3E1=NN0E9HK1>=Rvi$z1|5}LGPk~?^Osw7fCeNJD9p2|9 zkhKEblz4$lM8mu0V?ysz1t+Pul<KNu8kEG0IORo9Jaaa2TTZznbNtp7OEEljvT|UC zzs{Ryu$;hiAKRtFTJ&C(zo<gb)VKONeJpqvKOCjo#>XDk<(YM55rkQ^J}44Wmx%km zp0JweaJ)J5ypr*Pgf@u5Qi)s>B|k=ye7|FgiRK?AOPz#JfWF#q7G2VSghXGv`(x|1 z@tU?@ExFwc#qp=?&E$l`3Dn0(hA{eVn}QjES4jg(Ka|uodMVl;mXh#+lRpq{AyZP) z#_-b*8A+xL_{n|~2rj^6&{gji3aW1C93qI((_<4DRt3JqvQY$cK+rCT>o?N%<l!Ue z7{~%0`>$L)&o=e{oX+_PSIguXZ2LbqHjLF!S`|Jt%kj$WANi`R=g9wS($Lu*C_A0i z^Bixa|0LrvFToo{Wu;jarT&aJ$1W|2-TNJrBVa9iS4pbJz{Kq7x;>}k<a}#|P3XV| zv;!ewxZI0AHAS~?8P*ztY7F(fFA5AhUW;KADko2~+8J)USBN(@Zf4^e)hH#WCzDG5 zfUFDfKArn6U~L!yhjT*@+8pM^O+vwJ{%ho%nO+3#_}=BYzn_MZmnDILB_n0_kUK`z z$dhh7+;?fO!~f{}TyevYZ3PzAWgOYHi|8WeKF~uIuZCS6Z%~(V5*9&Dywn+iy_xkb ze{x`W=qtPj`+Oe*+P+QlcUcd!aKO)4hG%^#9;jFcl5ZODwHY=~X}KB0qra`eb_vS5 z2<i*XNxx<15W>&lVEqR_O3OA>#=E2!+F50yzHfxagSde=oqie{we_}<u?Sp*Lzx6K zb<L*cCq@!kWjBLG4m+jTSj*U`g4z;!iWIzB57y^3q)4Al^ah48zXXt_m_Wc|B$SmB zEF|6DL-v3;I8uIMCL&$uI5ThgKDGURH-4_HcUm-Q49FB(FV^4O`x2ViH4GDFTlJV0 z4WkrgcC;MzX;yIQFpAZ;{91T>t`a_P`3-i!Qk=AEY4BT#yH?Bxl5GoWNhBN6E}Nw0 zA3W#D=)bF3>%qnoCX4MUg0h@HH-nfd?+Ia;4MH_84o4`$q4&l9coVXRW^mD5r|o<J z(PQ}>s0A^1sX9}%mQ_0vuKEdz*#g?`?+k8WW{E!B#7u8=;LM-K&omI1>=rQc4t{WQ znKcihPdGdp?m1iSx*ZBv8jlAxZC2#fvoRRhJ~SwhOP=-ZQNox#2MT1Age9{gA-}7a zln+aK2!hEhj4lE`_}hZSf-y|!Wt%8ZLKn!tP_8j12obSQZiv~EtfPs6byAXKZ}vzO z{WH>J7E{Hkt%JZ!g2<8xR*mCpbXRIX`QGcw;zNkCvPiurTXdXr?D(iD7e9Sr{59xP zMT%o<F3aTT(zoWb*g$AcOJU4=qx0gzwR010^3x>PcDYUK9NaY^k91Ljkh*_4a^TZ# zaNnJP+E8HXa;R73yV2S569gBV9o5pK!gNgk{g6G7A*fFI>xrx|e)-YZ+Jhz8=u7ZI zLtJetLg`xStcMzS>GB78N0g~hKQfwUUMH$}_bK&yv#I&*VL73WbH43k1uq5!k2Gz_ zfrdC+Yqwam>SuBj8<$NknB7f4ZrjVIIksXNP3^$y7Y&Yf=Jb#H;y%#uFu1o0EsOH{ z+Y!;68xB=hrH<+4OM#i<o!jMI>I~diZA_SMvQOQ49P=lY^t$r=b}3jUq#z+m8bx!c zN(_JoPF3i<bE?2E%r1K4l%p$<I*}pI=uQ%CxXtQaMh%nH8k-kt3kMg`yXp4J!M=ZT zaI^SiS&y2;y*bLn8<0(-_)_8@Anh0GV&+b_ner8!~(9hN{!KV2v0iK}w5Sh*x<$ z4USMTl-Y`m>}#1ae}ZZkj`8#cs6P4m@Fc?HmbRvSC{!3QJX>;V>`~XwYoC6>(J%l+ zB8g(_)2{rky81KE@()_U;cb67%O#$jcNIR<fC(@*M;&MpXL0{q7p=ETBodPL-udMc zBT}HCbhdJCUm{{JQO8z8q&nQ0({pI=^->A(f+vrV_;|Ij`Q~QR0b4+X6eCzUpN(&& zlus9PFol3z9cVrgsMD*r<K@>8!f*JQ&u())QJ6E+d>*XEGq*^-;qBR?70G7qtrV%f z`*bQ+g{LB@^Krv@CzGmWuvih_zKe2hh=G}W#(}yOO`NfkYnaNaxW(C7?Yk}kgC4c` z`iIyZX1f6MwY8L`yOgU#?-Lb~V0ZkF+R_fv_p9f}$4R=ERL`s0RcfChsqI0djK+TQ z@vFwS;u_pStDS$GghhD+vU-%=S8n5sKL1+Vp3$Uk(sLUa!u6S5_{8M1^|kx5IO}Wh z&rLw?B7msprWyxP#d>cm<vih!LyJ~;(c<!HSH6J0?~2jLKJ)$21o3#MW-e6LohPRu zPi#3e`ltD~YB?6RP-}!Ny9wJC;;VC`itaF<>_M8?Om2Cb-u^<Ov~(REM8{ZW-mlfd zEw5!JvV2`Gf~|#O*`Jn*jtxFC^lBDzbHLAO>$YVOwE9kI4|=&s>o0}bXXU5=P-S~L zmkM8rDp$seT0INwh`97^uaAz4-w`nIX#Ao|JXG?hyCx(RKu<JA*4yD<UcWMq1-J+` zr|%%R75)dlnqBV5q1TLg?oz+HI{K<FCGzkYPG*OmGfpfO0(LtunJFoo7{&>UigL*0 zEg@y*MJ~Zes@?V<;-7wmwLO^rI$Nl6CnYTa!8&X8q4=v`cJ{irM23g|AxktELUZxE z(y?;(Dz$1;IyAD8Uu`a8y0W1_5s1$kOh7j1%zSWi?0Gl_p7*<`($g9-=vY>d?Wyx0 zh|at+72ue}3?s(Zt=eqeO^3TS-d)`Tn{TObVP46c<Mn1RbgwWu^_tQRJ=5dsbXr@v zv<6)3p@_P^h;WaR%r_D(#I>ekZyFqk$rAw~=p`><qb61U>jhK>HZc=zJst<nXKi;2 zkI$^YkdVNduXe2$2uZ#r40JRuxOxj7OR3q&hssI*tkW>OvyZ%)x{tL~Ufzmode_uM zcFriNJ}g^2*Mr>eZta!PY*_-6KziMym(dL<*X)}7`3@T3qKU4J@A|!}qg<Z}D%qb? z1kcU7RxUJK)nN#(f{4mEt$UbI93$&R2EGH=iBn)N-mo!@(Cy2u)<|xnSG`lscIs^( zl=Vc5W)*(Kvxpj*9xyZ<5ub*t&KB~TMCyHyOq)c*#<Pq#*N6EZ3g1sQNaURL0l_9^ z*@X)*o7AZkp{X&k?tBEv93y?Q2Sp(sTzH|q1Yr;tcoiMrUfX(Zjxkx4S3pF~&fdf% zTRPf7W(Hp4CEO}1=RGt55kdLy^DDkxs;~>{`RU6QwsqEt-Urppvu2?d@vrMn&+gR0 z<+q?io_>99XMmka^6T}$#&~OSPidYb=qqY7?)epG{8WQ<l(_2$?&U|s^ZBam!$grY zdT~Ti%0!I%9=z)g@~5Xd2}$eoEUQxrj<<~(#}NS|=mn{~TxYV)jmEb($LFxD*ihBE z8r}5m-wc9)e7h0VCmM(A2=r^FmvSznQ)vAj;91vEqPyTqT!At0=bo=IHR*pJDpL1+ zhJZB*frxlfrT0gMoyQzsh)Yk1QC<&p<9zqujt1SH1ukp9Apbfz@GZL9tVxE+qe!Bv z*iJ@AX7;{&Vm8!XZaFZ$TfJq`KdFM5l*SpTxVj5wSjKcPTXr~fyxp@lv)c76N5dBU zNpI}+221pf{W2R^1N}(R3GYs4wXrhU7*_k(Xr*!FetS}aJFVxM%oocO7VXa&2@{EO z-C?hY2`nC8J#wqU9G44BEx$T`rS4J;(T8mqH1ge6J_oz*GfFvA|CCG#=z^ZKI7atY z*hrT31U$+Rjq}#Mq-_;d2HFgQ21zR_%JDGmJy6<zx*|Sk#BlAnGE8lfOiCrlowai+ zAqI!^z8o=_49&Jkb5V|BBIgk&8r7_<-zTBqS<-i`STO52g&3Aje%8vJwBE`Z*Z6xp z-r<>?=cFGu{q(JpF>c8Fq}96mybUxtp1MGm)l?bT{1uyWg5xv;;21<0k^`>O&K_1R zEWYK{l#F@Wh2Cakna4EC&CUK<Ot_MXGHTdz+Ph4P;2Ijd-;nkts)b_r`mPQIB;XLm z_mwfU8XR2SakLSCWoA&h*x500kUWx?v_~%P%-M)uYd8q8$7Hxdo-jc`!?B*;7wKN9 z*cw%8xHpEYQ))eH)3DvA+KP-O%ri+`1hbm*`b^8S6dP*-@Akf(Vn<qh9GyEq@pm5l zfaHa5>c^zO66E&$NL#fNcSEe%1{^Rbzu(VfjhC4vuDEyR0<62FwOuSy1isZ08-!*O zS8BxrmxSSk+|fbAKIg3q34Hwp3FB*8f>vOp^M-$6{wLMhcNf?tQWFShNb~=e>Wue) zPIYEs{@<a_sUECZmY-vJ8p72?uUf?5%8eRQG_92yQwl9<$eN_7qGX^!k)^YgHY~C$ ziy4cRB`qng+^TGtEo*94SkX2T)|M$>v|`_}mgc)oy8!O9kE3_~y-z3Iz0W$Hr6(Q= zODHxdAfRI1YzI9cpne2xTv#9=5-Q36>Iy$NafU9xRrZ4b0wNvd@(1?M&mIEb;N}ee z14QY6c{BIy<~D?UzF@(dfd5yRLUar$%rwPcHas?hoax~{_?!|OB+DS?Z7ZOJsXmMu z9Qb!@FuM8gTbI}1%|!!gJJtv0CZr(=aM)0dQG`h~#_Yq@g9h;iwvZvSaXlt%)QE7C z%);}!eRM-e2-xU2sIgICBw3<jv?w-8o_`^ebFbjf!M+5nFfCiCWXaNg*xnnXC+-q< zz}w}!l0G<7#qqC9Aye-t@q7_em>=V)1<7>Zwa8aN<V$!-qJ_*C(cb7f^pn7*K$pRf zbq0eZlYY^rgofcy4?7N2+ujQZ5YYBTVAIoUSn_eHf}{5`&j$xNowy${?8zRFlS-|# zk>ju|GM1dPzf~F`db6#`F0aBySjTEVN1a{h#Kb}Vo*o)O$G3sd<gx+NPrDbV&d+JP ziBKNTmB=JsmgOkk-=kIK6~otNHorS><t1k$qr8nm&`F)RtGq{I>ix)=eK7H>xV_uM zAaV){!*2nOW&qp=E-Tu&V`wbB&XI7VSf8Se;Ra7lY=a$f4$o48c9VDD@vvxp;*Q|v zs6+h3{8dlRZ&!u(`9#E|1J%^bC;NQ<zZ%Rk*5r`+NYBCyi4d{%Iy6<xM;9?y=7S<I zq2_=z0++TL2!6Dc`GAMvSIdSkbpd@&4j~yB;^mmF0p?6-9ryFEv4aD!U1<OT@3=Ey zN;YU_1UoSD(4>Cd<sDwx5z*4}q9-Fx{=i1^gv`yt@o$6iB3hfK_?XJ4>hcClOZ@!S z;pHaEA^(Rx!i}(f^ZjxBzU9{CWmiWZsXxZd{$*u$YIq)On%B)a0qzxbv}+>SXL5lk zSA3)Wdyc3q+kL$Ra@$a0j#d8HP7E<v?h%JRZc<{2NdJDX?ys__!XHlNjb>eITb!(2 zHu}n2<IGB^8#|GLVEhPliQjmxQ*(kh1zW{(i-AAL=FazB$uiVJb9D08gr0VZ$`(~t zG|Igxk5iZ8br0{0N>9&GMrjdaO&;KFc=H{jPk2km(b0cwrO*#54sF{k5D@K}1}5`v z<rErGJiKTtAd&}LYI%%4$G$sZ_$J}S+hY_N%N%SAvD!h5iWgk9;z=OWqR@3`E@^|T zLvk^ae7&bBE+ZPH1m4A3*H-^ET6lxl7bs?eurcE@v}F@uIcRjbSb2=LL7F-0=@Du~ zTrnc|fly1Pt<-vVkk4FU=cWr4)Xv!w7&ACnQ(ZfEE|E9J>8L1nymg6R&F8-0GyR5B z*(i+~$cFY<a(`@cL<3+HWVnR)6R_+CK~EgAWyI?7<o}RSyY#pm9@F6mQw=e6KY-h% zv+a@A4U{4#s^+6vzhuUojb>^mEN!AOhGiZab!+u{1kX-;Vd&L)>&C20l6{$uDAnn^ zRCCsWH2q9(5jbe}p_a^~2FORTaS&2nGvC~yiO}v`5I9QTHAabGWc7u~1f<OY?-ugs zcytYBM-=riLIN%H>@Sxn7EqD)V~El1$$D?aSun;WBK=g)8)s4(`XmP9joq8?_Ip&! zvRFwj2q~wZ4LCT$G@(5jiBO!|lE<|_79t`yTTHvmwDn|qb{|lEh|(f~H4IW|!E3qV zsJDDn@Qx0@{pB|+rFM7YyT@64YHb-+1W^SZ=aBMag@LQ3=(eTlt)xYsFaejyzc$2^ zmP?V!6%a3G@Vk1uY_uEi-<~dNG3~#Rb-`CEU90N=j5d!WT>jKX0eFzGnm%?5HtFy^ zrSU!2rX4dE`P9_@#z1fcO0zHNDBiajYb7w$;fSeFlDa%Rv#v7{*#^HACbpx_rW7Si z)r6vH_f6!@)poLF=>l}VD#Il3kQG)uPIU*L9zl;fYE|Xg-4Y|dWH#{swsmCF!B}?S zWcwku676rn*0!a$^c2zZ?)qqc*n6<Hn+ELITs{=Or0Uh2!_FQ@-<>QLP9Yj@Jn~NC zowi2xx~0o8?%0)-?St-<GB3#hhuekljL~wKOt<z{5bQKoz6)w`V`gu~E?e~QyB?0l zHqZGR@)jn){3IT(df>EVX0*H{J=5Ae7g^QL)|+hpNR`L+{PYC$QLk{}%AO4)9)la2 z?`ysfvJ4q3N6M%bq?xZUdKih6(Y7$7LD>w^PwQ9r#9vj+hg)F2&CHPcO?s)NYa3Nh z@KZL!Ec&L(sC7T{;&=BEF!TRa5jWv~TB%FAq_k64NT05$k@0nxmGBNrY|7P9)*-+g z6)(bRsa^fGXvgUFQE%ktI6Mrv97>Nz+xttT%kF%E8fW03^^H<x$!0CC^2V7wnCY(f zbw#>9C;PK@C;y6qlOz~~%^+Z95B~mRFGP_@?fm!hCqjIybEnzMC}Ahc3J)!Qt_4F( z&Ky7=f0JH)KfLNzsjMrhtl(QM>M?WUBjO}(%S|gPa>5t8+0~HL;sY;0C&?Y3&3pMZ zDNH5!sE4Ib+vDeOUxY2u{%tr~v&84b-j^JW!x;E-=^%Hy+<A9;HmCHLk}fE{k~JlK zuBSP6SI;saEa!ULp5z8<dUAx!aU-Mwjh9@KW81St)2pPcGxyf-M&53%=}!%T<O`S> z?Ps+XblLJxwd*X!#*KV>`gI)P6Wq)UkwjO=<@~<xV$wooaI0!3|9hg&Sj$1r&{;s# zkX!qua>2zf!T-N`0{;SA^FLD(4*CDOvxb%P|1&H9(mZ%kb+*RL8%^AlBj&?RW*|#4 z%&Lv|+Qw%QQH)1v&1g-jNQtQ$W9WEfQ^PTv*Qvo>C<>8Cv}GWTCq5sx0Z-j`XC8M~ zPaQv;YwzE+PQ7dISEL(SS&)x8`~S7%K(kUvFCd_N-+12b|J=$uA`jAk#XY=|gZoo} zC_MoI`D0jnf*}C?I9w41bpHLj3j}meH@Oh9Z)6H3W;Acb?~AGL$Ht5e!wHFrCH2>M z;Rloei<z4f6oG8W^tZ%6biV+?w7z<}k2ILDy*etTCYlKRjKN7yR$5k9ElmFJU+~bU zF6b6<%wL<acioUFaAZggN=zBzgk_0LD@+}rH(by^z*W}%Y^<|~U$wa-VPS~g<K`mw zj(%+KZUn&s_z@z8P?R#^(*v7h7$T(orl!BEUub@NC^6r2LPT$U74ev?>DNJEdCJNV zzey4Pot`gwx)3~m8_qv#5F|wn3L@Ek2*5#3!v=va@ZkzXLhi)~tH1s*;6HXFzf1(p z!JGREKSZE;AjCONjQ77)-&y!y`fq+S=wASPmp6m`U*2T+yf<wM3?RY&71)A1%<&gm zoRq{n(uJnSlSp@A6p?-rsBsQl4XM2PK6CoPV+sDa<r>IlKH)Vl1JvI!#Q`IvDzA51 zA0}Nf2Qd(pJ>{lCJSPrqRkClUAmW~fg1P0`x{a(2o14sHX4a!;H|X5P(#~HzW=Ks- zO$X&<$C}{B<@d&F80XhX1rpO6h2I~Dyf7z6r>cah)+6rep_C8=(riAENDf@iZhIrx zvp50)Ph8&;_E$X-^R$=B=h1>c8OlsbYGr6<X`F4nK9&OzHJeDPeWel>@W+Dp>K<sB z*Q5k28%p`s@#2qK#w7(yI|M8<(mS2Xq}YMI2*<`|V2zpcM}F*YeKXyAP|xn@oGRVh zX$3%y%4i@fYHCu$eh&yAO{Y@tNC*fB?I|fMV<gb4m5pO{P?*_yr}xwRTF!SSD>&Dh z{;>?|)~c#0WdM5f0=a{=<&xpQm7_6WuYkZhVq$qK>#ZYv6F*GsN|eH9-YD4}0+dF! zyPbOy&ajNk^)6^s>P-tu96U0I677VP8{XhNoOlURLXeTM$T9^=(g@uOuVTy4Dc6@| z6XGz}nz5)D$Oy-)FUW<~+&SPM!$v%~xm=`*@osP6XR{RLmtyY!^kn>N$k&cY+<>S} z=7&mpE&08q#Gow}$18%3Aq%*GUG%W70+S6t@_WjOcI;g-k+a-d9ea|8Q+}<d1&OOv z^FfNmOJ9KbrtL+8d&dS^F4KZ6RvP!tM1_vnO3BOuJ37gkx0WoQLKQpqJbz^+<g!`R z2{WwwqMNa8J^Eb=W@qQa(&;<`u`^$z{Fqr_Px8X1_u}0J#nV|!SvXkuWsYVi!bcN9 z_e@6AkEj7B@(N#Adzz^*CJqed1PqB9db<K_I7eQc<gRF>qO6j6`EG2vfgv1~ExStH z!yuzb^*#9S=S?Ai-!Nn!o5vzckfpV$soMAZ%S`tlcpF$ci<xrHa0s+?bUU*t(d|kb zj1*$>cDRSiZ~tzUffK|d1j)Y7>^tsQYBe+fbAgs&zZBo@KXNgHxW#{gJ2nDo7{h)z z#JJv{#7CG|jS*RXtW@WK`|mpmaK%I8kdhV2_L7&~GpvN@Z}avR*Zf`ppay?NbPn8n zBv~OwW&`V)R0cA9vpNx=hfHOL9D6dMj2FrRBfHwJ2o-#_=1{|7dXd7^up&(S-;6WQ zc&1;2+A#QOpL`K7LA_eVzYaCdItzH|EVU+Y`Q-FPxnAPsn{VAzJDzI#FM`u*3uBSc z=8%|>zpQ&zqq}OkP6VPw=Au-v;pwO^$q8I;=!=|vg&G&_-D4>x5WnB$X531&#wj;? za<47qP-x<v9wyMkCS{LLD{kL{gF$VsFW+k<ZMNLbOt)=&`vh4vp0<EjWgH{fFV;C- zfBqdFyus5Z#rm9twd4J9aok%U@SRfX&=G;h91rToCctr0UE@TyZ#uH2%<l52Y-+}+ zrJ!TLw{Vc}%I%|9kuYx6JJ72vI_+(8p;wO_8$(Xk>Tt2V>UFszI&KYc%-x61ePJ48 z8cgK8_6U0%bp5+*GWz@Xk-bb;S`F+}ugqst*8E!Q0Opf97zJ<z;GQscyR2?}*=siX zj_lL7(xTr05Tei`z4z4A7<^+~sPWt?m2pLgC0xWevwhy4I*)!XwAy!1aK)Z4VdZ^w z;(^o<Zd(w_04QnG#wWymT2>OC;r_bzQJ)Py=rI*Hl^3`jA9PBp(XK$8(l+?=#mxNl z%gDA#aeUB=@pG*rGLGZhF3iX?>CF1<*f^;f8?gd($*3+~&aVKG8$hJaE%A9~2Q!bt z?pVDYy-g3&ryi4bR_=UY4pcALHzDu&cZoU4D-?19N)cKW>)6|z0E)ZIeFS&3a%b^w z?yu>%J6H)^96oM1%ML}n6yX&d6$IAXcJD#TlcVh@ah%)+E_WEabk{g{m*}(wCWI&i zj$<_=76A@W3%@Lf97&d9$vZOio3QFG3j43fZJkhMUkE-OgzwYb!+NZGbPDuiQu6)z z)K6_Rr?t0Htg?x6(-0OX0^?k1%5(VJUJL-^q>pno;O)MU+*<JNO!~JiLm=AxNcAS8 zD|b76h=n|+c)p*#$>B-=T0yg!T%{&lB6~c)okn#Ys_d!^%9@k^s96MUG}~Ny_e--T zj|9g}r`a0rP1>2S3euRh|96}V>LMwr8Mam4`Fy|ngqsRCuHfo)!I7i|0831w&shiG z;g?avqL0JP^I&MhiYYYXL$snsOKwv++~uf}S>ich^$imJd#{u6XXQh^fP32l+P7Fb zY3eS+GkrTFF{Z*5D0a`x-@`$DiTm4{;1@puj>+GeEIgRvl2Cpb-I6_7Zre7>=#!cv zWQ^?gRdPG1!2mA!b!wv`SR^FWF?Ke>l;Q735j=?#EGy5}3`w7l$NNcbsJvh(`uh~U z<3vq;Cr5+A9#d<@19Tk-e7%Zen0RK<FlFmG{Pl#-ax<3k^78cI`pbsnXi{Tin#<Og z!q-UcgqOci-xOOi%urehRa+Kp*|}5!iFg;<1p=u0QE2AfB7DR|UkVNrld~LPw&z+$ ze<Q)ib4vW@afw^^x{E>QrWq~q4c6gR{Ior$ag>KE5MT^HAdQ7!Gr|owJxJzOmv{5! zuX3un)|Tg1;wp*xn7Tv@s47sewL;!KWretyMHjfn%5|lll~+ZkdcHfu5cP)%CPRcT z@TlnA+`Q)Ny^u~xqt1FEV*(-Bw74}qK#vcrdK@vm0B9lU=@7pU)UaPJFQEHBdlD+y zfNLIA=+@o~Rg`Xt=vWgy<22DMG$wRCY3;dNNToE!WU{`aI2Ezq&T36kQ8k}?7FzgC z#4X17lm*@#M=47Y#Gv!!vRcirv8#m*ISr9m&=98NqM?HLtS_9d5(rNh_yVMWPi=5V z*j28yhQ24tRHQe95@0njHfH?#>TD?4BiqKid2W^65oxMCRO^@Ti@}CzN{%6%2BdCJ z@6-zReW`NQb;aS*ui_SeVC#1A0`c{C+AHdJOw!gEQSb|vci+MVC<;9XW0<(iubE3I zyzr0Gjaf_EYEycKrl8ZXuywqlwd|VybwnlAUup*c^!!p^Cd-DoBB&VOmqy$)?xRIG z>xi6u*qYP2FkEp$3+lvjlpYG}EMaS=$GT$qN0>f~HY^9i*yi-OkbY-)*kt&6X+VY& z9*0&dLWpQ{KCUCrF2$tQ?Zs-vp8M_X<{R~NdazWlK5gSr+&~;Z9iA5C0Fkv=f@(G$ zGF#hCC{U;6OAFx}u-6yqv{u3zP)6D=t&!x1SIK%lH2Db|Uz#3Qsg<?gNbox-B00OG z4q3ZL&KxCCLqc{kc}BQ|MM5~@hnP_|%Xm`6UOP+8+I@Xtmele9haS=!-5DnOHdcNd zS{@=cybQ6)>Q^i_C89eFX!|9iz`-A-47X!*<g2nGkS;Z;O}>RU3EevVTrsaUQ=_J8 zCf({D1BKeF;`YeJva`2guqAYjl~*RCjz|~G13*oWO;+cv2{m1tk!fR3M@K^g9CqvR zp$iKGh!XDF8&=;vd*5$jkK8I!6cjumnYCUjrs}iwfZl+Fn|{43B4wYd;<GZUGcC&t zX*ZkNmcTyM<pYk;XDR*DXGB@=YY_CB@9=CyvubV4-XR}xD;RF##ygdtH3~z~#hL`| zsZzVy*x@C9td-)0fqhkQ6FeIfA^Ou9K(#z2DhsYw*LrK($RkQ-kmMZhwd)un4bx+^ zF7eO0$CmJtb*U8LHgC3hW{~^2{N{Ic?+o5UM?VJEnr`BjDHdUcQ*Ygo6kX$N{UXPZ z@yy+Hy5<tg#6r9dO<+Bws4s*L9ml?zMPPh002(eKLcwpR^jH~&l%R`|z3rFKu8%at zrp0|BYN_>+Y5HK{p|lNZFyB-uS{+ZnILzQ-T3A2AOn0W>N8Ug1an5pqsVwo6fT#Z7 zPk9D}+-U%+I!12pt6kptox#(;7wO51QL#TUWCX9uN(KCZ?=Iky5BXokA-tC|URP=W zfBfnCZ_FVx4H*(QBF$0fjrS61apd^1^7UKH@WENwASf}Y#Wx!9Q&(O#fI^nGTb0~w z6UKH2$(#7UQm?+mjxE)SM_e!r`~Ah0l-ei&Hcg?K=aO^-<X&r-X<B<dG|5)2h;g`a z4^OOKG-Ss9V*G5Oxe|$r+V_^wloT`O1RKbrR(yE(tG4@An=i*6p!0qJV_|w6`(e1B z=hpAf|6r$vi@6*LJP=Sc{QoO<va|kg>`ZXu+_J#|6t!mJQ7Q_>P#ZP>#m*{xwW=X@ zm6AXqu@a4-Zn0DpqT<l~t14Yn9@#?`Lo5nqb(aA+ciNkK>K%LHKXb_T`<mSYeD>7N zd5mbMW7*e3)dK?o!IOya(fmi8FJ+qP{}Ct7TM!ixkYHFV^E_}e02t%H6EutS_;C40 zqu-X?vOYfQK>oEjw#FD1=2m|k5Cq2uc>iqko-jg^?#l}?A;SKNxQ7i6V1yL#V+Adu z|6l+cCV+cq0gnp&A%l8W#b{w^0lEOs=M~~OuAQ2QvZ@adB&3`if-x#_yCUG39Fo>u zreH*b0uB-p7CshEKK`SyYXHW^##Y}=tf8ogesVw-1^<E&Y-sYmVB{C}#Unn4auXX! z0&)QSlP|Ex*yf)v=%Tpb$LhBx01zeob&41GAfN^SfntJ)1fm@u5ByG{LINH?_G$(E zep)TR^a)Ud1cjXybL;zol4S+`^F|4X+xr+c@j{=!hQPpn+YW!3ej|d@i}rJW0_p`s zv7r_2e>pxm_}=>Ne|PEL@=mPkg$8~-DB;+DY_)lS{Lcasa$Dg-ZCTUU9(FA(mW7M> zR6Hhud2dH11)`5Is^@9iJZIrL8<TI}iCU_m{chokIf*uf^uHogeh#tTtns89oJ#CH z7ho9pbtG+Fye>Tj8l(!yFx{5qLMLWqC5=QhEp5)q?<j7B+C8J)f<_Vw-14w*4B|>R zcG}I<8pr+6dgjC0)o)BY!_-BrIeS{U_|%WCLBa@Ndm4PMbgq>i`Q9IJG=o$)i=JX{ zWh7uo_QbK$O2LIDz<Y;2ppY*{ZZC_EOpMp{9G{!VLlp|MokeRnOaIj>sEP`h^irI4 z7Znvvx}c>bpQNOOgZBN?uGmi?W@Hy%pAN4OP&bv8;lH^po}o^;e2P%_H9MV5L+LG) z5Z7q;C}NrEv63UOF<yyI@tJlck<jr{sE=;-F}F=!gZ+6VUb4Bi*b(kE4j^xhXc|Cn z<J9?h2X~9y8cf=A_J!9`t(SC)2)*R7qiCr^J*VGZ5~-lYM`=Ra&f!a11?PH-hw&it zOYzYRuJJ+~bsoc%11Vq1rz-J1udj943aT1SB;P=H@X76-`zo<va%)WEf<!M)?>lX2 zk{&K{ABIGUI3wG3h^v#X6OV4!*eOZoIyE*sf(iYjM@b@)($hh0-O$zDzq3fhZ2M<J zwensJkFo(8@$Ne7uJCP#q7GeH@MD;{FGBvVNTB@5?h+(n_4Je~b&X{BlIAMx-|ii; z${RwkGz>9<%W$|QwWN#WF^>dZNgP=EjGQDbKuN#%W5Gl|fW5GpiVKAL9?Qii1<y|Z zCS~lBB4OKoMirxWtAg)Mc3;lIC{L=wc{71SkDvT*UFQdfN0t5){-qWVr>ef}^gfON zBKygw#`Gg17W9sRXrJE;D)tzJ^5ep2kHfzCyo$_m$+%m33O!6Ax~na<Sm465LNhnW z03&iQ^kVQ4kXbDnf0()2`zFzLf_qoRWAd}WE*$dnx7%6!jYi_ZYU&Ht52Us>c3VBW zencJ?BVV6n*pA9MB1*JZ1eC~K0Oe2NOjs6iEWLG3YXszxz-ycnvPb%YRs+wGFVs#& zX_YO*uGV#~F@z_WRy^Ag$&ok08S`{X3VtPgR?<!EIR_-zs0X)jLlfjhBm`rqO90Bn zX17fcnJRBdMA?qGD#<<gRB<JP$Xi){e0<>Ocv6_x2C|vus$%ITSnI@2-0WV0_4_z} z;2jLHkUR9@wo2sWK1%y}?;^~u01Ei?i@}2y)xH5~*c_OKHLf}^#zusXifB7!$8oPD zw~x@n2Hm*m#1)p>J`xKz^l>GX(akk_t-sQ{{YmOo>vo3Cl1<sLgmFSB1dnu)j{I~7 z&VgS5q0i_{Hr`P6lg7s-bOp?Cs-4OZRMfLF(TZjO3~9I4!P@gCOW5~grlj=!;DCIM zY3iQ|T7SS8Q7Q*a1MltJ@}oSMfa{u+%#og<EE@y)qQ6Hhot-&mawl(4KSic?fw?Wb z>YgX-$xy`dAwqi&v9l9L;vN)W!&Q)QZA$Et(doF7mMbh6Ump8v5@z^FOZ~`g_d<g_ zn;V5AU>4M{R06J4`>D>U?KTGVMHG@=lpRIJs|aiEhjn(lb4pOm?Y;&*+9K_77NYH6 zK`X+V92$%th|w6Yr$j<Vsovypo9PXMmEi{n4O0QUvC=2_Kj)hyObdqNKx!IehsoG! zKKr$@v_8eKp}IN1cuO76{7Y;Jy)FEAIJZozJ!v0VwZD}Pc;l08sA%rS9u9)Li0)7P z!k17e>oU&ItNXlef!A!wRP?9SV4EB(>yN0a<s`WTeS%%*zq^vWePiq;?^Q8krzZ2+ z(fHy|G`<AVf4kIch3``UsjBE^mSW_-Ph(3C*7FM3Bjc$nYnxA`V{kL?n9H9Y$M(a2 zjNk-Kjew7TGffah|L&x%1c_b+HYj?e=dHF%y$aOb*k#xQdb<MgGH2wmI~zHvwf0&h z(M%sKa@YK3aT+P=zdf+H^DH>$YiK$;#a1jU>OZz8{{=i=mZRC@lN{k{C#Q-%J%2Nk zD&7QX<fo@uL4#SJ2B6s@oXrlAx2kCPs_k0?)C#@530qa=RS$Sx=K{;Id(=|A-i%B3 z4DiTaSD=a%j*YM~sThXPf^tb$-k{B~b;rL3KPn^0JnY+X)IM{^OSZ7gh0w*o+wr}S z%?a371T0vCQ2#}Dl@Y>%)1X=iIVqj)GCZd-hvB|02&<5)pU{Q0elX~Nz$&Ff1;wTQ zQA70x|7y;R{;Y}49-}er{NoWI@|UPC_d2BU^!+i5BQFQ8{@>~(?bwf}E61M39jEv} z4rYAVWhZxyG~GvJz#d_b;-o4ev|L+nXNoiDz0T^xfj&7`mO7tj3E#eZt4Y7GR;u)I zz_*gHd8kRqT1C0xr++YJfu{<n&}icUMg>K$Q?v8ZNAFU=?zcLK+`@@t5r_@>BP|w# z-!d4TUm4uy)?(r5woiJ7C%z<AP_7UD!7FFrDM3L&ndc@dLrQkoPD=f%{Mi+!kIY&) zVz#C=gWUc@#Pw??&zOD*ckQC4roIAtxi=kJTLDQ>{m!1%5R&t!UB&cE_vzdI=f?r* ztOuNv=w0Rg#)3u_e_J&m@?<V64*%i6zM4QK|6wcTkn|!q&t<n_E<_AoB)L)4u1APg z;}#E&(7*`ZKaV7g##Y%utnsTXKW<cBhLmbdY-{cQPzmb$8u1-@VonzcF#zS<aYV+x z`~!VYeQ%29AsD>DM*+^OE7ZgGkRir}<XHcfKmJQRws6C7<;UH0bW!5<+e{L^s|c+B zwQE7z#SL6J_3nv`UWL<F@0;n9h~%xeeMg?h6!d~y@^ay<Y;89k>*s^>-ziP?;T<Tu zuV$|S)_4*k)jA`5=q5T3x%JZps<pJd=CL?4ukK7t3X|f(Eb`2TK$JRNHLCh@CoGHH zTFbapm}x}Nq8uSd!`o@){Ag7ORg3rVqq+wP6;^d7uQSV?CL)V!%W%!#!<T8KB6V=8 zAH7v68ZRkWu3ftCo<x%l>^c}j!BcQauDBO7U~gc;Yca-y>1FGriY6+qD<$yE2%Xmn zq6O+6_DLFS&_IFG1yB`<?Wj&FLZj&*q+-@9wVUUDz{M~g%Re#si`BBD%Bd~UOM-a2 z1Dd5Ni=UA3fR9uhp@9LrTxg{&WrTL{Qdx_HNc`smeLdTpNda{f?(nOGm8$iaUTN&8 zMROap#~C(XcRuf*B<nDU{;jN}E@jplkuAH!Xw$_-KITbr+i0>+(kB)FVe>v!+dK%v zK^n`va)DKU)Mn=znlMOZ`q{q=uaFudDYL})?G37-4qH#orXWgNogiMwXJ*$)I*rTU z3=d5k$N?aX@{=Ccj?$3=mf1lcNf>E%m3oj;=qO!QL*G$&>eNLy&<@g|JFQJ*+sZUt z5G7j)E4f&T6r}LYb1FVBr;rkcgjv90FjO0Zf0OtQuz)+{WbpNwqEaVMNd738=U<i5 zt<BDV_?r<fjR&GYz3FU3aDV?aaOej<0vvI^S%=;;RDQBN<~r6HOKJARjyE!{$a{}y zuQ0%zlDVLV#9uM}o}k?Sg}ZSAsq&jFT{i1<7g9b%20`0&Fp5Q0@C?^J?O98T=m?+x z<(8xnH%2u$c{zcw=KQqKs}8eX<buX8C7O06lcPx*{AfPHk<X`$i$dk@pm*n3@v~qK z6vU!l(ij}GT}Q3q9A}mWr@shASmOrMPlUaeo_sPK<RR3=I$W+seY`I;qpg0EU2y^J zIX<{NrA~`_iv>n**9tFxP_d?DY%tE)!G6c2C6G%adHhj2ZFF;b3X*n&G{-x@Ot=Sk zVv*d%98v53($b-(PAe>nn0~gBGrs1OWPhG7q$ST~*A6Y#y(}gPQ%C2iHILTN-CZ){ z&mr^&Jkg2H&gb@e!!arzCSYyL9_qmKZ%^fUAiGPNxO&R99K70Y)rYxgXsj2Xk(ieN z>%W9WBc0f=sPrCjNjndx3GsjvQk-Zz1eir34=ok!$>hvlMf-T&J4C<LY!4Nm!(p=# z?8Ayak1WC%9fH%sfJ>3Dk8$Z$E(!c#i$g9+wfQp-ldb0Rf3fDwGv8zwnF~IB_<ABC z6I`gv)lu?RafpuLy3*St<^Oz+v{+Mn%1(dmXKk7XFCw=s@ln&=!H}DaM{t#3?Dpsc zP4BIygml2*$(9~#TZ@rbfShI2kRj7>Ef@3IQ`p>yFF@Vj?}gzunCo}{XL2LGbXW{B z*B3gf3=BC6d8!78wH`Si8i<d282A`wUa}KJ2)wlznD9$a583>$>^3LX9M8`{oexb6 zDqvk$7BM(nwB9Jf4+xCuVFU42gHZXFLDI3AR|G4}p>?NWH70kzuNAW6!{XWF=r%bH zj>vkB%FF?UGEV132bG1QL00ge8Oz|>zxakE1@@sY9260OAb;kYoBkOP#i9olP=s8G zAk(O_A&iu5g}-c`&iBGWGm)(4kg`1m>$ej)bU-X=_Puqo{vKSFkhoxtwE*O!hD~N? zE*gydo88wwS1J8{n&dP-&d2!V<!-Cg4ry&JXGf2=At5&BuGWoiGAIuwr}{%|=|H-Y zd!8dQpoTGTu4nf5Fnd;y?Cu=XJxZ<F?A=}x@tWEeHQbapm(pOqTIFWbS6r(!gn|UN zvYoNqKuZ7dk82|#lxw0-M1{n+87{M}posC2V@WqZwIy(jL3^!XFJ2z<(&)1y^D681 z_1bzge)OwR9B-7dJ-NVjR{UhiyLPiu<4HV+Hf$+ZD`v(Ht=T<6yjAk-m9AoB+i5uE z>{c9I6hC=7dl+9oB90JTPITpE;E|txdrQB363vYPAC02C1njn)#@YmB;$VmD;F6@- z$~fFyxvCkbV&>1WIbl-qcLrA`jQteYkw`|NZO*KYg?9J~73L}mLk*KWEZF*1`!aH_ z^xEyzVgQITk~N!GXK;M%nJll-i7n2v>&VA?RSv!k$S&2_<U)flU{VJ!IyPaN61IoI zL>Hi5Sw-rFJtw@1^i-aFEMDs%9iX!whwxLj2u%g|)m5(tVg;0feZudQ=2R=Tj&od@ zj#V5P!ySp4*=x=VarAc%I2^30W^eX!rP)6{crheuUHY8GRrv2r(O@kZ?C=m>Cm7{+ zxzub?i;{7uT8ntRp-FjOPT^#;ugEzn2e;3#&|~Kpbm2V6GLsjq)2K!HAP>Kq4^K)r z+4iL|d{KcRERrdgpErxGqclxjJa>ok9pQJS$h7rig?w02QFu(6qPOC1E2Nw{jsTzg z6;px!Zy`W}>iEpq8^anjCWyXrN><%~$VQ=xf6~9eEv$O~beR*1E)2RSx)klHH9S_{ zNWC^v-ds5wRbaflmc|zXSiW9$?M_F_hUhf1He~<>J??esw~e7PI3rytnR_k-F4$*Y z>|_)v7{$16@PNBJ2H_l#0*-g8kU+JJKdfJEzMobh5^6cVH_Ubd`z-RK=DZVMP;ifx z{O6@Jl}1uVnp7<DoT<GLx(icvlDWQ10ZgcSNnF5Jp;P4l=`<t3zT^=VY;{x4qA(uS zN@n#)x4{fQ+z_zIurJ${3tr3m=<6y>G#3+ek1@loJ?;nEpSAMMM_ub!;yrNcdJp{1 z7RA0D`|zo+5SnKdujCUvG$hY`-z$3-j)lziJ7uAW+SUX}7cfVkK_o4+wZq2Q$v;&Z z_TNnvE2fKFi;s2gcDkyGxy|p?j}y#u_L*H>+Gj@*mx(MqH}pJe3|%Ek=dTjl(37#s z)LWzYJqNUpkdm-IYf~?go}yuEYqTC&t2b3R0#iZeP%!i<vuCui`<Cv1HLOcm*rBb= z-e5s1EXHmaFe?L})d20c^D~NV4bMqypBJtt@MK{K4d%oc42#Z`>+9e*6RAf$*GuHA z?G{bHI^vlIJ4<$6Hl>v>WS{#5Nh>yu^(z5pR#x|;$<0xqKtMp47g-l6SM7g)^ML+m z5J%kX!NZ0E1XP6be;dT%|DOkOY)s7b?#5=<JrL=nsw@0IuDR<;BJ#5yrQ~5baQ>n~ zh+s%Uq-Ug4mw!5CH3SilNg~6;{qqx(AO{nds3j9=>q#YX)^*uuop(Ne@|^6{<?Z@k z0AGE3b93@%9<x4nYbtK)s%v}zzJpxu!}24!>MXDE1D7xYmuo|yFG(gpFd%P!ATc23 zR=>|~G-9AgV9+G5RPxV8eW?AaKk*C%TRzJU5O@w603-@L7s~5jAB!xXN2)P=HIC0< z<2deSzN(vh5_qnIbriWuYnFMRMI;CUm9?!U>z~&73u)KQt)@-*-9hb7_8o_(*lw5G zYZL_T<MN}p@~bEQj{hzv)7i+_UgbJ{DN?NAxqK0c<Fjk;`VAh0&GBC!cRst>^-kDs zyw#+CJms*h$m=?Hgl<se*>4L`<jp%BK8O?Ej6qT`u$+`hbRB0*^nR(9yfiI-Y*>D0 zH~ZRZ2{62O?CO)=_+1FNJ<bWRMC_gt?h635pTqALLIgzRZoK^l6b1BG2=03m9s*&- zfh;unpF0xT@yEMiDcFN4WCIV|LR3O6_aU(M!8w1So_j)_cR~FxKE5g{uAu352tfx8 zE<r+YcX#)}Ex5b8yIXL#;1Dc$fZ*<~gS*2(kb#@;|F1mUb??LJRja!8?mkt0y1O3g z;3vSE#s=#!!>%*KdaR<YK&7_N%3)r<!JWJEUr)LQJGR0^Dtw5<`4GtokhXvsmIyYr z2{QEwGPU?H%mq7)1~YsK$n|1jvBb!15@fMtHkvB>lbaIEdl$@`0aH$b^m<KB7C?g` zOb|7Vu$uvMLlngR<<DyY;I0m4YVzaMIwnsKJWn8!QxSUGv2OdPo7Y;I<MEjRl)pUl zXWBQe9m#;<_>a7(<O$>xDioLrWTE{d9Bg3>XkQ|sBj&=z=aNFcpaG@S2AoAZ5$2L( zQ>JHpPN>0QudJ+)PaJmPx(s<o9ClI4;4zD8h)4FG`#wuvmceigILqPdb{r8B-#muP z5Qc|TyhJXh8P9)nTVn7k3A^M4NaPvp^9$0r@TnaBDqgb|sl$>iNQo7qwt4PSBFRnN zFBz7B>4?WJ9+$!7%QJDqrxoqIWA^?nIuSIshRR+@ns!NT*ymQUOgiM&rtD0-=X7=8 zk1xFo?*f=lYD@i%I?v)wRq5G_fA4uxqN^FIatwP??n4!Zc`S%u*e&71PVi%ksDDNg zMb&>Rgq#L!ITzT4CO-4XD$#641z)s>qNYd^0dt&}De5kZ;SYk-eGaS<BfUSH_`!cO zugf#D%$9Sx&rCRr>i^X>%c%~`iuHM>YvO1>0-<O5NF1ncgc{psJo;If*P(UFZb4kQ z519#ie_)Bb0bRFc;ujV=I);7Ra?c4)zqQ*JBONBO2`8@j&3SH&{d|P`yxK2tY`Mzl zR0xyyM9`Uu4#fg8o}0kjldg<@s7QyL8<F1=!_w6!T`+{4W*ZU379A0QiZWKlK2^YE zFveL5n?z)yREv2Og<V)^Yt$oY*oknSsf_C`G!dfKh+&yp8T0Du*hDB%11IZm*Ogr& zCQ#Ln-HHaRxw%2%^I>%5FpElpHhH=W{EJpjRWthoGrOrJi?p2FvgK-44rD!d;1^k2 zt?u`^&5XdS9MiM_lrN!JDRpnVGfJey`z|gA(DJL)P$g`ZhKCO3r`ZUTj;n&r5Zu&R z|I;WMLd=rR^A)mF6<Nsgrb?tu6`X&CD5}1@J!KV0y7|FOy*T*vkT_Lbt10+2%_4O) zaaE?-g*#Pbk!nRkYuKMAL@2RV-BVHpkk+1SukQGZob(wKB26(MDsfU6q))@uBLg(C z6N4j~WX6(Dap9sarK}ZhuC*(<IH}`)FIY~5=Gi~^=BR-UlOwinN=-{o^lHq+KXqLw z(ndF+an^`M<o2*fRqPf1IT34kg6LtmW`lM(vOCGrsScD}Rdwf{)z-(j*7Dzc?%utj zE8ta&o>pE66vz7bvmu{mcK4uMIeGNfLs{xTF5d!=#)#9K>l+qj|2k?jo)I9WnR??U zV-bbzW~ez5uL!}$E8c1cbveEmtID1Bt|I?Llt_KBlcA9Rrk^ak=+@AJb<vg6Ds0Rz zmr|V@ZWe&kruMuHH-iWTp1k!jZ#Mn#EmiJ#k$F@-sp@uTD0@T7E|deOTt3aA3NmdH z&7eTppS}-MScM4bb~xgUqcweED1NTdcy^aB6>hJ+r<fimLjTTf@TJT3M{DQrEAoQZ z9-Az0!?b(Y#4!@zaT4bfeR^un{<P1yM`LK=q%z<<D&Gxq-(2!8(}Vdp;?&Q%sEwf{ z$pK4-=84tji9oZ&X*o079(uh*R>Q|!y8v=BOE$d@pABND?&_Y_ZMX2q5^7pwe*i;K zx5As@uK~L>ilv^^+6;L|{`L^8MHe{st<+krktNr%mWQuqXVX8<d?QL1@?3Tvzi*W^ z&c0{6JtoH^)Tf^ACB3>84K_j;R(*chxmTOn4n;OXxK{ac%olt|hH^_A`_~jWMBYIy zTXcFrO*zlNRWGLT3aUF5bd46x79lb{W(!`(?A$up`!bG|NZd04JJRu$o|P!YSf!yP zBNePZf_?*ND}alR^`yXkXV3Q7QoxZ2yQ$xbCyRa3w!DAihRx9a1oGXff8-}ZzTXzJ z1M~uQ`SpAbIL&)Q#Gc(agC^K3=AaE(%R3_FE5R-n;;!*}=pa4cOo^5oD8WN&B8e<8 zMRfjXj7A;`9WgF|mQ%dD4Pm%QVR%F&?c7rgKS{q4;4pFBE%md+M2~pp9~F~D?4;+t zA^E$QqJ2?u{d<9Ruf{Av`YHJ{lV6(gsr_tcJ7v;SJ@KL2Uz8iXIp#=uv%rs-XcVF1 zBl~2HJVEFCJ4cPn6T#l+qC%aM-?T@Rup9a(qABgfE0dQN1aM29=%l;HoQ!sQTmt%h zr7@f%l6O$Z=Lsaz+5cgm4*9yIHV=6PM?5>?*BIUSRQBEQA$q&NiWX#S<;;h2-<J*3 z$Q9Zjc%O8-f2E4WAGLjzDryXr7M3o`HZ%^R0Cm=yCG~?MX(D(&x`$b0hJvJRrFa1T z0_>~I5`3}#eYj1lK*0=Nx5B_b-yTE?rf51PnGYL)&kBc4SU!Qc^{_Thg1{9tjW=%G zMpU|6?AR4}f7IAjWd9HHD<2?~8I*PrHs7XHhoE=c?7|(dGq<qgiFCphuSvIiNJtgZ zoVF_CbR6{`6d9y}^0O8U91SZ2F<7xm3|)38EWpr-KP(jZ#)zgUCWO#TB~lAe=*{(q zm%&5NWUyEOZ2P6l<bm!uByF{vWKoIHCXbGT2gk}~Y<4%bcrug8WGu>?qAVd(WEJ13 zk>%LTXeHWc0Lgd)$s~Jk*ljqHARz(^o!RNF(y(SNA;VbjKE4`E%^Ed2Q}YDGfjyTl zhO~8RvG<XD4e5M)6|`sqIvgbmTcln%0TZ9FfGZ&qM$0+W+5=QCJ*rFV?}OSv&+;7Z z`tKS}{=NdkgqnXK{!q!K2I8NA1sSV<RNI0byN0N6`%#In;q|l;xxKFS>`a9=u6M5L z#qF{_Z<*k^7Rfmnp*QV3qZueg>VWJM8xskfD9V-V3ot9}-^N5E3X$t}SVBQygFejX zB9p*<e1Fg$sVkvAG5e_VsVxEeH2b3>fo}YWKel*NdpX^#)g?3DSGtK<Db136&I)$! zf{m~~r5qJw2ZeS~eib_o5NWZLybj)AYEEAVO(SoTo7z2jVuG_;l%mFfQb}c)B5)oD z_gmWURoe+q%@QVBNR6B<Ed9G^rCb*nt6|l|1v8iJ7h$p<eT0Q;jz;n9h6@w1G*gIL zxKueIL<#kD0!s5(3i@TCp6RP`xvGRs6uuZ)p<=U?$Z{ZG9}s3|Np>QCES|rIZy18_ zEU8qkVkbr$eu;!rBe(U=dB|U_l9B3DPDhEVbRbNlQTgcmMapF2X<Cv6Pqd&HH(k`Q z*CJi?>1P>@_CZg6e4Hp;fV@fvofrR^4iZjxhCAC(Kc3anjAR=r4v61xz^3D|<_RSY zH0aro&Ii;04cAz5x?@!p@xAxao!Wz7xo<a>bws;JPq!_m^_k93eXW9s@>*48*5j>0 z^jHF$okkW3tRnQB_U9Rj-w4;XTP6ZCo)&sU5k7U>2exOotJ^ltgpW?-1-yn>q_Yed ze3g56dg6}*bzu$xKE;Ed>W1-u2*FVxs?^pFvGgsp8sTG}cCmyZE<O_sVHIk+83VG^ zNtX&qb<|^ZXCm#Y(hNnJU5-!Z{f|XcPxIy6C=xGEQ$mMy3JtQt(XeOr>n#DbG(|6$ zxndk8ahGe=9pn+U-Efc@p`nVvAijzl;f7orNo-EgVo&lon{r2Izz}lPfp<m7SwWqS zEY!ZekTNi}+N;$~TG$9@F$TGPKT>hbT?mlI=DQ3sB<oVs5qD2P$6+&E1~DSaKYloQ zqg3w5kb8v6oeY(B7OQn2$a?lOJn4AK)o0tdFrPfuroY|V|1f-MxCdLM2i$9%Fw-P; zzcZb@3w#9!v=HZI$J4RqRaGpVGa+oYrl+Z2J<9dm3!Z?rX`nNvF5Tk~Qt{f#=I3TY zxj$Z73RdyWa3dyu<OgF)v5aAqu|_$=vnUB$%tU5cxIA8&9ljFZ6Dj{Z_EahDqX@%@ z$;X=_`zGoY;`A|*bYvZt8i=2t^aZ75uivdH1MF8c7?f;%h!rwoQl5fNeS&l0*~ofq zW;`-6L4fc41>apP^YA0<<wuswzpVW?#${PWQ2wlFegx={DBYOMP*)O+v0rhj*=`1s zA(d~|ahI&Y7735eABBfX9k7RAro+Q+4)ZU37Pd)0F$|rlo@3)yHUEtuf#Zx7S%?R( zOOa(m&S|ONz6f}Xq-vNw8BSwwuBd}QN}=KAx#H&?`G<pdqL)f$v5!7PXsQJfEcY73 z-;1!rkOPOvs}@laMXq`=tEgeG#oyCQ7Rvh&(mE4La&ylS(6%|K48{k#h|7It%@~I( z?;j6@bSK-G#h|>FPJPS2r@he`iZ*@|-6A~Zd2Y_juMQL2jgYQ+Zb6ipO%Y=2i;VvM zxx3P-iF?~jT5Scdw)X6(%JiDG`4)`hvJX*xU9%MC82!}JSNr=Lz7C~OtUBuX>j85- zx*MlP#(qR~AYbnXToe7RgyDSe1AAo#U0D_VGiseb-xU6?p>>?%OrlwkvtIo24L6qD zPM`7)g+=+Y13pQYMVm!$b=m49Hvh1Cx9m!|=qY5j!7b6HIdy@lR6chk_Yx^zx(RjW zeSZw8-hWlLPr}10^+n!@V*e=RRQ|2<CD=1OTTwjt_bWwx{I=Wn#{?B&MACcaQf_e{ z<`FnUGCTne@=cw_25Fzxk*gc~C+j73`A4yYC{dE2fT(`;y2u}$aRhNHJb4)1pMDVy zf`S|li-yC(xwwdH@{x!>o5mv$9Co|GntU@VTf~+fH05uM1dq7Ee@CV;GTZP|9T~yz zmy(Kq9%W&hP#C~>4Rc2P{4WC{P=!18xScWWqbHj8=NId@aMK-Qh8@UIdKreZSYu5m zZfv3O{Tr{~`C+sOmxawih}O((0*Q!#6PCMwq&_7&^RCV%_h2D3s`vBnYezQbfDpDe zdrJlrL5Mz01d+hCH`i#cEkknas#q8Bb|(T&e}e1OMB<+i7<sX9MTYnDYUXi87RtXb z!YMrFaLPLpLd4_!**9#{Ow64TTff8=Gngnwxjy6BU4<(&5YycCvzSw;unVt<e=bed zZlommJP43_hZb3>w;j3WiyFyW#0~)a&9W8%W;=O?2AZq_6s4xFJaoxT&t(U_>hqBx zZ`4@CM`14+)jgeh1#y$juXN43ZXL{Ng3K(MP^96kHoSQ=<yKOJ@$vPbSf2Ql4q)(0 zsVi1ePn2mch*4x+jv#D#Y-U~3Ih9U@+4Rb6^_iW(spoq<mPVuaJ~=_M@b{AG0NsfF z@Adb0hN-OWb-9KoL@oh|qdHnW^qWd2T>cDr+p1xO9T~1kHs&q&k-~WKel&fc^_q-o zh-G_Jr;?nfOa~a`A{ZEqQX$SEzd9-~Aa3c6)xs@0J|HlJAw|G7A&MVX9}Qzc<S{#5 zf%MU{5z(GOGRQcp1<{oQ$7qV3HN(NQ!8^GgKPP@rbCNL1dfnj%ihW$sqC`L4Om0j} zTGq6Kr7Rntrdh~jUIMR~<I<f4Z`S5eE{0TIeO7=uVLGk%pHVI~w>m7&hDD`vM0+LL z4@&rKWc^cCbQU?5eIGZ6eqDbsXDwgN#9dTECCpX*MMNu}gC$;#l&(?8i^D<BUa)zY z`Zd&2k}BYZ*=q#yts3n6cL=Dw<=ELGAdwt3$#ZPy;WXIMTG00NUCp9^&GGFCPd{Kh z))pUKND7*yU>3-j#M)Sc#Kx#N@sUTW^dS`8R6W|UFHxlmwUZ(Uv#Ob&EXue_V;-{) zV==ZC(KPAw7V*n*x$X_8S#jd&rLI|T(equ)h$#2w<HI94-e-lcmmBP10>9Xb^7$*V z!?gv^su8AzUSe`C4gW5=45}*q^f!BB@}?2py#aQsL|`mE-=4j+f?uNAkD&KsarD$o zPg_DI2SNkemSV!by693E7Q0>J9>_%UL;BD&onx%|0|*u{{$%%Oj{~v3Nu$7{xoKks zb*m(iTm=a+r>K&<FJ(4J$#Zc>s6l&-pv0#Qb5TZ}_@%-GZqvQVpQcx0>0wyEd)stL z1=@{4=@eP_H!fcN3atn`dSvUdqozEY2l>FMx{izaCu%Wq)rIB>I3*gNu##k4oHx57 zpIMS1yK<{Sl2*4u$VwVXw=x~A7~fvKz%lmAFSS}QLHKduT0J}R1U}9vSHLa|yMrWK z{JQT-)KONl^Jg}uVb&C*UCNxlyqjN(GUKon)iW6zBY(>a(NdrEG|Voe?HRY+T>I?R zRVokmj?d)B1uOGXhg<IB>sbV4;mh$-Gqy&(2wt*mUVq$yPsc*Z@<bFLWxebR*ptK< zWy_Bc-P0do2{_nET^1eE7-=IIR>+RbxZUwA%TdQj!7KjED{tAcD!xTokeYI@xPosQ zdBd}g=-YK8xlsP)%-l*@YO$R7JKM_<K9R|v(E-pHxwYkM8#rgSJZDwU!j4}J{ojC& ze;;||-LG^lK<_aABgJ!F@DS8vX{tquE>Wl{3R&oBC~@fX8NNi=^CP}krj37zs33Yj zq6%XS{sO<zN6}M5V{Diz&tm-Wg0auT_^%6=CWL<K(;rz;nY6f#iDM8<`R=C=<ibHP zo<rOe_{00N-vVUOhYBs{l^>O*C0H5Cypt~1Y%Ps2p53L6yKlPK?!~m&VjXr{Fz-bS zr@mDoSo}-Nd3yz_hCM|1?-?0>_&m^C1(TQ~ZQ?z!VJ;18OFcG2KU9PY<>9D1`Vnx> zL^fuhCh)0?U7R*XTy}U96mvu@$IN;8a;J)MG8$toZlcnJ5WXcbs-G!K!z{p@txow> z{0Wc1st7??8KhCa$~m_{+o&O>jx*J{cxLj=Leg+<a;EM~-qUgpB5zxz_8%dK-#&ad zB9J}~CF1wQ89pYti!#}GBwM`xAkMa+6u86D@cqNE-;fIY4lZ<|6d!%eJJm#{!ZARE z;M!qH=Zsb}qN*p}#JS?a&>Vd)D|0MZe%f2!^Gi8@QpvgEEar4H!<dYfEbTf9CoQ)% zITvR?UpkSREI(&W=#wflD}x{=!=_=@Wpx~1SLN#Joz_@IvQEc>H9Na|`>1676JRNF zHFIpN()lgRFgut46zj?9EamPEUp5-$)qrElCbmS3n1#Lo;T@u=z=h}-ZV%ifJ&AAX zSosIV>eZq<t#a(as-Hb_WQoarjwRVw$vYCqyR8iP+>-wX&ihz|e9@3@mTCTMoi#<` zhXE5yf+)m|OBW>P9=P%sVe#tKqGM632#K|5c1VY3Si%F+%QbFgg702Y>{Ex>Y_&$? zJ2ZqUar(UhHaXkuypRuv+loUqn2Lh6ACwcX|IOjBRuhX1la|%4SuhP*$4uMSl1@=| zKtAtYmA0#WD(6aIoloBk?f&a}{dI8a#YOalPrh~mI8_2AmehD&YL#M1k4ZJ-J~MXV ztKi`xt)q8IGBO82G{NPH-T8`3$(f#_w#bix>yZcbDwE`$l)Op~DNN?(S$X&SLj=c! zYr7q{WbghIyZ%H3)s{wTHZ?DkE+@55tgk);Pt#A;xmwyoQZ(St43-r4S#b?8HvE(L zXGM*8O(Bq(jK=ToAa+iA9bg)Ss#+Te#fmv8E2GtHBBa}^t1;%h_pUL=Sx6e!#k%qe zcdrS{pZ3udai>H%?OgeTf1l|*cM`ce;&S|1;aGy%3~RiwXUHO5?8%U`0^JBGU)Xnr zzc5^%HVD!oC0cM@9r{x7dm7~wYjsMD222DGLE{R%L-VNr!@~{-Ssjx9*;hcg@Uprv zO}#oOaBPr6^6cs{zL3$gR49}z$Oid~OR&)I_HnB9n(Oo72!D9R=@YJjC38~||HMY= zk&aii|3rv`MbDpaz(5mW_9EL!w{qpi>yHR#pC+79PxE+aoD#yRc}Eb{55q*eK1bp| zPJV(75U~CoyTjD4uO3_huR>I;DRB|S_X&q`sJVib=(2{@24o?ag(R;wN~Wf2VKEf3 zAGc!G*M8D;P{v-yZ5tz(HvOn-AeqKxZ?f+TAE3ns)le@Yt|M+G?y0C(iHKJ-;e%#U zQZuyNd(9=_66sz#wm+IPjPN8of8A3UDu|P9a5djpt1yTscw~DT4b#pZ!^-;3#xBbB zm3oK@t68CdgFBC>YgElG%C9>^nZBdM8q0URsk!redo$a^f!9IX!C&)<1U}<E(#(Hp z!T8f7zp+(S^RP?qWr)R|wDvCqKm5|p-A?kqtP0%D)|esq#T~7mjZr{djTCG%(w;ZQ zFlK#4FV8TdW+ge7K;M_-Sf#3RPswilK46PDx$d#j21kSm$E?0UD|TsxWnY&op75B8 z{9`|RwMsM{)e`u*nXC%a)C79*a#)B~s$kdV+VhPAnfl29n~|o7gdJPb(bAY3=*qBR zdNM9oL|?TdlMX^JCb`V`=@o0fpjAi`J>h@lsw3B228ah8H0jVea&sJQ7MAi-6M(A6 z>~A+9>6Z%9uyhq$6HR_cXazg`K0iwZFFh(GITycMq?pxiRZDT&RBq8Uw=XdtmVAP! zD@&>b!&hb4*4XZp1f1z=H|4l9whb3!*Q)m<=w|e-Qw)`EQyo5&*+>fFiwkue|KwRq zr17bE6NvlvgtL$qK9UYLKOw*EM49p53j#<8wmXvGhaJ;BUWA5X3?6j5%Ap9w&AVT% z3F4d8?pU0trtI2qRuU&hU<==QWet!1ZVMmoobyLE=u^Wl8S*XcZDS@#yEg5(VIO%n zH{7vuS<|Snpl&2U?+PkZv&|ImSoo1Cp-6XCNIpm+u(Ztz&y2j?5aLF^DzEg3U;Eq` zmHJZt`R||<?zqky^9yn)jZ}_WxJ~)LFX;WX<W6l<gNo`*B~GQ552G2>M5UtyF^a#p z&0v$dNO5?Gt-+w$?HOnJ<R4A>WmxY^qwn`9lp5oBmZY*o23YIoAa^mrY#}2-Q+Oh6 zhx%l55F=^5Y}621L4ywd5E7GKn0#2BMNU%G9Q6v*FXMZ`6oUgPX03B<)%s=WArj5z z$IN>=ZVq2m-z=Ec;|289X_k!^`ekQO&DzD)BJttZ5A(asvGAStlzU!L&yrI{9|ZCI z%xbnJjE)TJ_7KHo_Adkb%Pqba+(Rb)z2=;vC8o5Pu&@M3Q&6SfPQy{{$~rH*u~fpM zjfRCR!4M{TUe>2&{^?C}*fedT&%&p_s~rPho0YL9_W8OlOQZw1d|MC6`0DxUjJ;m6 z#P#EG;0S~U#HUNBPxc>)p(j%T({a~4VU{i<x#w^IVl3ndZr2v)iKdZ>J+^{YN?s|T zsYSOVi?udanp{Nvbr^EfcJbgfuwi7756@PR`Xp(i5v7bcO*0~{S(vh)_Q+gn&YQrP z@|8h4>;RF7R<x{FY@a0p<1TsFB`h;mYzV_ld5-mp_h|m}JxTAwp+REY__ssei_cgK z<J_)!kaxVSC*{N5mi>*5-GK>#RinA@b~ec<pe#fB3Dq!McIH?(=B3}-kG!&vTj}O3 z2M<kbX1`(8*m7OqEWYXoW0rpkC@01&CpM;_9O2N8BBqW=N=XzbCnl%H3s*uBJrdSB zjQy$5Ist__c0p5nhZkkVj;Ii-OS)X<k$~!lNjRda3T~%dJ`oo_{~|U%CR$Z4^_2Sf z%=(~a7=&^>cwX|XhKNZ6hJR4?-};&(zarg5%2xEUBJWSqSlA;LdAclgLNZ8F71=j} zt5=?LT1w+m7&yq3(wqu}V(=?2sbW7*pBL&1VtLQh)#ur)V%!#i&2o^)u|)#^Xjc8( z(J_2z^(x-f<GvhEuPQ)5Off~&s}k<^5*-0ts<m6Br8A;jAVF}P%Q4cDiaxO@iVv@C zMfz2O-0`E1qPrtbRiU9N<>EO1m|1-iYexYIrU>KxhxFOa>k^vNK?jDSvn};VsdiOK zH{m?Pc#Gp$9g)XT$M9LYGPTspwQ6Fwk;N&CU1;^=lsKN7a8t$lEKq-h0ZpXNr0kC& z!-o0JCt#%BF<YS@eO9mN@e9N2OkV~{lsoPY#{C^GQ&W8>435DlOJq@?wJ|j;U0WD= zg2?+qA47yTQtM-%EeQVLJxMg(RDAK#kenK*0`HF*${_mXu`m)Fb|G@aVKW;B_Y39* zq|6;fO_&Vt2@O6I-Sc`^IZO5+eIy5gz=&z1W8T1$36k8n?tkAjM&q#~v?>LkY5GIB zd7qoPeSewh?m|{?YduSMOD|mkaf=7DjrD*&=X+Ty*iJ56P3Tt-Gb1hOdSHP%0VU-t z<@!ia%73t5|6#u_Gxh(&2K>VY{KJNB@<5yaVYB~(wfYbC$A4kx0}Ea|3j*O5*ZfpU zsAKX44Hm4vVV~L-^9M3?>CDB(+H|3<f`+YCDhi@0D<72Wr5F6r7POX{a-L20#U{TE zGM##2hMyXK(U<OEbZkoTA-OG#A+bP!xQ;|3>(g%9V2gZCF(QJn(u6(FxwMRdm_lrP z6z|W?^6yI?8^fP-Xd=#D@~w3JvE+*2!5rg8;&anaI7A0gV@2J~F_49FGI))5j<X6! z(eR30zEjT$A6<Pb1%a;6@OE5>mim?btFsTL(31;BKXBg_!*A3bmySR95r_Oa6+NcL zE#ag(ZEJmbxcR^8NBWR$wN48g=-u1HnSkrME9-r;xQ9AzfBO7@<+?nxeLJ`ht=I0r zPVG!{;}Nm)a37#Ku8WF=wq2rZ;iUYc$T9aA>w5im<=3@(<B5E38+iYy7m}<-B3OK7 zi|SRYU&p$$b;Wvv@HqOqHf#pj@q4udgK;l-Wih;7FpPCx;y$wxG`?!QoaT0{9J=Sk zJ%0Z5P06DU>{fSbLby5k*`}G9EKQa73-!j%`P1eRrc<V45kMn>EJ_QChGKRJ<){P< zUyz$v<tVK+*JY^%Hvgf(cS)?@PH9?S$-8*O7ETn+Yg2g{Bi0sqajwUgTlrQ;+}>Jq zrORboN2D`)1>A@@NWP=;6QM^Nq4}U%lqA~RibM^TPTi8jhN^Q*#dS&us>HEGRBqX@ z8eld1;fCOsX8+~-kSPU8LD}P%{mu2!DfcJ8@C3mEGb@^E9_Q$Z+w4u0Gj=sp=nx;) z>5j=G9#ZL3z{aY*?0GFcgy>Eo-DR7*;BZ_hIfUyD1^cb0syX=^`Y&P2JMm9>FE2>S z{4FzV&t+tg{PO$dYKaK_-Rv;#3f!KWrcmR(|GTb;Fl7?K01{&XL%lGrMY@C~f|b6{ zkr;R};++A0JwB@w^1iBL7WSPo_MM&(-FRnE_s5>!xx7=Q97^WNz4A0Bq&iBXZym(H z*SVin%*7mts&54>x_-vTEhhTW8PGx+Di+(P&U_vQQ<OrW4vd&ZfD$)VIGlvSLUCP> zg`Ospt_MoR$b@5-k%DuLV6Ys&HR`q0PoShbx$N$=L#ay3<5-oLo*<rt;!(zPTCG4` z?Me63{_;TAw}#F~+%Ld0|Kz2*d>^Q*EfV|jUCLLvkreLhaN@<n1VuzPqlo*VIrH5G zgPM-7_PuI2XYtbd45zs1_7=|EO#;@=T7<EkLp-ym-1HRn5WsO+uQKl?Bk$5}3R15a zmE=zJ?Hxrzq*-+lrWkn`pI5&^g(&K2F4f1pAOaC0`HX0N-<z}Vza)h;l)7%XV(nLU zQ|&GIx%dxc*Bj<m5;%uYHG5XSJl96PbD=^<ogGIx(+d>9ICPY!lIroizDHo_`Q|nf zy@J=|<jamF75<TwvcAP>SsO3d(BxNmj{lr(s^0j8;Jbg5Hr-Cn&Ahouqm`6SX!J}= zQ(d6BAZ)I7=W#ZaUf48MF>@lSdD*g`dC7^Sv#4B;XQ3~Val;mOgYF%<^V%co>4R&Q zvLH?WE6m~iA~$Ct4qanHxEnPyZ8CXJJbrG$I}08BQD8KA$Mdbnf+(DjG2AA?BVwU$ zT!&4^RsI~q!?}Bn>29;Dw13}dqh?cbbYk7wBJ<E~w+VxAPnY&ck7dcEAwz`CY)yHm ziIT+mK|y1}<v_T}edVruO;NRD4OYri<n8A(M`95;^?fYOIsd~bfre~!Otq(yyEPS9 z9Iw1m1%-`Q^AvP9p7F2~P7(9K2{ta#0*4P>bS*>heszs7V5MbvKdAC*&=oP!wLRDf zwmUd{Y1$_n()6I9Eo^(jzciiw6bET~c4$c6y0Z^^M8w+BaK$FlhR5kx^U(p4wiqle zNe+#lN(Hp#*D{2yIVVr@+4QV>X>D%h;B-#hE@nN>7{h-GzF>Nf@<$=Ze7jwg=amuu zl;yis|D8f%qWihBSs<-hb~25`QX!GEY?x>sE4FLjg!wHq-|T$wi=gH)tGKdHN+qE| zj8vd*OvDlWX9f9bd^!1P8RbcQ*-{G$)pIs|f%h8fttwjOAp)6%jrbC$ljOF0t8enU zV|5u1XOc&A^MPG5dBc4IREM&TY#P1tD#yz5D%Y<8q1Goz;{TqLN+gQPg)o_z$<o*( z+xr2%;r-FJyMnvAvgc5+#N+)5*GRcXi)gnwC)Y?Ti(QD{GqNqhrKPxkftGIPC712; zg)wRqx=XF1TSNRyC3%kOtJusB?6VYmi<>n*Eck_<$a?gy5+wLjOHdfv>84%!4Umhi zqQ?O?tnM!=a0%RK=B4r{$=E;XVBjhYg?cGc*9%jHXJH;ibctI#UqHpgt1;j9<hC<F zJOko@8{jzF<RF6kTsh5Mm>#Y$p>k!nV*_hr{fEUCN(t1`&WARDuk8f;`v%k91Gm|0 z^b&RdHiUCy{M*_lSe(1+!s!`bameFhtm)6cU77Bb;~Gd~n3{OOf9y8iK?Vl07JkAU z3D!=-*pi?O<5EL1&8Y~ZMf!oOrxY#ROy=s^0OWe__Bs=IpU&|zg6Sd>{5={^vUV;- zy1p+}@Lj}4WiR!w8jzG5uao8WDz-KM_WgG>0xr+H-n3jnFS%49=?+FeC>a6|K{2I1 zCDrx{>ietV6fY`h6DJGx2YTviPhi3qx%~R4XbgZD<1#f|*N2x9mqr&yIahhsJADr~ z)cwmo*bRDfhj))fDmksw%e34f1fuJDrOY3*t6+=jPdNu01AX-}?f>19Jhi>H`dkv! z$Rp<~XN=eK6n(?2r#WhM#-fQ7d=sq;I4-Kopd-J|c=Pza^cQ{0=CU68@zlrx{(gvW zt(0>3!TM+VA-r_}{p7{mMn6H^k@x^+mMj!=&l`Pym|(~?wbvMnVbYS?q(%~<2_rEe zPslRj#>|YTpNb{@%I(YHLUBLqyJyQopt}-9nd$fEhLm-d2r?{3gJ1e1Ki;S`p$|bm z_Y^rP@|RhyuH<~%QZ2k0-nm|P%hcy{`Qe0iBcJ)UH~4Ye8TPU%fsSuC4V@4!js3{v z=w<>*&Wq6X&o_qXet$fEIt#y>-OvLK{m%BL^@mErC&Z$W#-%V!QDERz%t4{el};hU zcfVQ04{*iNPKtt-%oI~v)SoZYpSJOw`xu>j-Ow_pURw4AiItf=6!juVGh8`$1`th@ zP++K|=t2pV?8n?Moe8H)4ca9ieLB`VIdz}Kgc%rEaGUoGW-Q|Dd%aLr}(J{(E` zs?6i|4(A2dxhn3HK4e;uK>BGSNy-Z_zcxO!dBXxL)fKpy3KK=Y=JKLD7|}wU8}0d@ zd7|f_0T5RDiUJXo6y@*J)|zT3bgQO#T%dxlhr8l6<pE0)fF+sbm84<$tCzVu`77_U zW5<?_D-K{_19rXOW^A1hsvcEaVtAxV1nwzUKLSLVf$>|uvGooNZoWixeV>Co8gpx< zNi{M9zkqN%V(r?DxPQEPbk%(00KW>^xzon?0qSJteJ6BzG(%KvO|N=LPC$~i_0B(< zh4rsbMhl;M4Zr9iZj+<~0(6aO!F>wj5C@5fq|SMU_IY33j8nql4s~INW~RkNT?V|D zdbj|ElIQx>4$b!^GyQ5(R8fxSXMcjn>0+ytS~&I`)ozXkr7k#l&I-=%Rv$Irb~!t% zFL83~(S>~;Y#=604_)f{)PorbE;&1D1j(APL=|kp3Gv`wzkMPGk%g~)*k6{7SQ}B( z$x<|~n<l=FeN-@sGlC0&H!q<3s0~-pYi*Ixz?QCygD;n!gH}#A>%DmVJI2jGqeHZb zYKCd_M79?Ai%F@IuPwrTq#Wg-RuVBsRf&%E>30p3aDlK~vx~Ov+kv_Wzl(}JbqMnM zs7Sk7y9)KZI(R1GoBH~wXtEko0hVM@uK+gwgmicB2MNV88FCj?T#9ugB(^-dzj<sa zvY%M8C_-=$2~+*6Fr2Ek*?A@verpb?j^Bxm63*|alMB@0=WAh1)5maI;U29n3JX@k z`7C)_;lVERxQ}?gxvIP~e_OCP1&m3!Drv)YO!Tqi{%m%N2^VCHs#;X8&mTiAA+B;4 zJgdMf`ta;K*GYr}3KnkAWSEju^X!Ot#!yEZtS!n<s4_bt(~q;MI2UgE?!#+SGzLz| z+Lc`pb^mD=_l#E&xfU>&9v35ONrvK|^!v5(_qoK!X9hJm4!XKW3HbXu9Wm%HUSczm za7Rm4h@Uqj)vsH_sV}GY2auAH2%$7M^)rgwXVZNVe@j)14&gD`{ZH*6{#uKLq1;7| zY|s<+MCrflE13GW@Dz_V$3{}5<u!jKk}e=ZXQ8#^gM$%{qWjT!maKn`9RZoj$L2kR zxRJ%0pcnm5gP^Bnb_pmZ-OiR$G4|=1JV9YM369L)^kkY)y3Uk<Q`iHq&SO(JDs)}R zrI9n!V^hkFHMm$15>zi{Nv)gQ`-as&mkKx1a2o{loSkN^2tf*c#(@7wVir^aIv6Vy z$`=i`B-oF_7ombV#*N@XSu8|3mB&BCQ12xSea4pJLDZ<9DC~|RP`7-U0WR{5Dpakz zZi|2!@h(br-Ndg(zEvH(lwi?aBi~hAR*CT6`#o7}5=UuPeCCX;xU81KQXl-3KBMoh zAmfnmr-Y&WW$7(oL9BqWXJM)4NiqIq18$>AqrEaYtJCO=-+o6BS=?^tl(UY}?`Dx3 z47EBLb4P0DlFhLToDW$3WtsCpH@{`EHmvy4VVxm+re%_nHlp)OzA2W2TE?}V16}6s zCr8Z9xi`_O{v3Ft_tQ$TtGR7LT9#hVK#su;ii>N8s8Q@?NNqc^g#)zD@tNOj=IJQl zh2vDHfAT&Um#OhODct<pG`FK~hN~;~KS|oJ>#9;Whlo-)eO!+wr?_xZy}x<k;kfC4 zl6n~CTXH-s=Si&BTorv&tVy~5`w$_TxXPeZEaljon@ByZo+D<Mw6mT{KSZ_;pqSj8 zdlk)wn-d_PY?}K`Hd#H#Ah%gVD%+%<tua@VF;v<f+m%ru-^9>-=R5a1>zU@R2-wBk z7veQ^qSr&2G70XS?-_x#QEDBOT~7R$lJomN<zDwlX$vLZMwvs$JJN9BRR%ru8uv0p z>xZ{^w&#zh91i&(I^>gt)>Ngla|$z^f)h+v<qm*5+Q9TfS!<H-hmUg`RFie3?b_L- zGOl49hA9^Cf*G3RmY}C^C1%2`7vp96Nrzwf`+tGCE;#1Xvv&c{u4gX3y?v9o0cJZO z;JS7NS2Tl9IOK-0-YGcTQOAnC@YS~F=vo$-q02K8Vk!d1t&OnHjyu&<-vpDEvOQwa z5olXiLM30qrm^-T7S7^i7K1%*UWlaDXhGtRUX7ByBlknofW^ot%hayduf8YghtVRR zgX%umN3Mk6aDK$tHTqt@4s=Jy;yGW+6&cUjQOUmS2f6z2%Lt-@wRF7CZiYfq6PC+? zav_@vHC>QDsuG2CBqqXGr<H1*m_g5DstHcFdGeld249-WOavaQY7HX1ws!(0Z2d%= znkxqIq}gBfK(s^|`5Wq7i8Wzdz!9I|wg0j}_-DcS4#j(cLiIoxnk~dyhz{iNm}?9Z z$Kj;!p81Okx@p#BGkPbJ70a_ZMo05GZs^}F(0$Zg@Vcz|=G%Pd4sWy+UNWt(I4+nK zeT%G*vOR?7r&#Q36-R-DfB$@nre@qQ+xZ=zIjqINgNqDMDly2L`gZS+%hc?Y8lHt4 zvx7x=UuiB5WcX&YLjz=I#O_aIU7a5w!_#hC=u^S9_!6W-r*8y$UyNX@Yj*k(F7#1R zr>;;GT7ep#Z)vOy#6dL9eD)_2gMRK?ar<LWc&RX*Aj52x+^!-uI3pF#G6yvC(jhn* z<S3?1^uNLrTDF_F%&~v=Yx<<t@zcI(?AXBlenl!dina$l)ZN49;DhBzD5fxtCc}K3 z^pB(W9|zeSP{K<G>16P0G3~U+KMv1-9EtYNuMMBn)c<k#Y#)qfZ#TpXJg9B`h!>P| z&q3V{?73T3UdKP-#r3EkZPQ8N>Ua(dZ(^{sto~~5Q186@!a!_ZG?uC~H@(V+dB<?? zl9V-bwc7V7LuaKo2)VA2lP18{m>HI?u`j*)Z&vt8%iDLyhFUx4h;R$Fcv)e4TO(p~ z5gerz%i2u`V=dUR_ZG$~)^#D*TBF+9Hs`c(l9!2Q=}GqGdxM8r+uoklxzFXR(sgM{ znb@ZOY5pJdN^A@Mc!d5F%DI${=38~}jp*fz-i;c85I4OtsES&d{?&*@y11|{eS)3k zEgHnX#mqO6jdC4QXLs<BjY>tJVrT?x!~4ksw-Imq6Pa!gcBxSp|3}a*vl*&wAv|_< zt5W1!V7JmVF45MH8RZTo;td&Ui_(*U%Cz74Kk$f773ULA2pkP?zj<aSoXgSM?Muq> ztNJwZ;3z_hs|^M?1(Er2NE@E#^mq=<Zx*Q`=6SOjoJ8jGsE(?~RQl8?4nMFO=iK@h zs??R|VlVE?P9pE)n3;h!{EE_Ur8o~aUt&Jf3aaGB@cF37FtcTm)aKrH==tw3=H520 zoTfY%PaVg;=f1N*WYdKe#PP+|QwZQ8rd+mX2)GfLy=03nJ)%&4qF4R}F;q4dGJ&D} zFntqaZnNS78@A!XfPu2)JR4&So#T?{oaw^u6)8eXGNLYZ(kIl@aXX(iu90AINHn<c ztrAr;0IB_$HOn&OnT}|715?FKjS-!2L2EU)4RgOJ_8Er=D2VxV{3Dx&t0K^Luav(S z@R<rp2{fz{<w2)m3Ibb-|MV?Fv@ffuFBC!_v?|T6;iw2S4{h0`5d}g>?TkEqQ;V~n z;fU@xrw2F}UPOt&JV*ytKXkKfK?RBUgcVeDsHgHO!9G>Z2k?+YP&8jvS~xreT_s$% zs<a&*Vy9jbaq37=5z%`4CpOGy7L+WdUPfZK5|`;67binMrV5E(Q!ybiqnwNW(&W;o zCp#PJceh<_faMaG9cc_HU&Oz*LG*%r_>FOhFGe-Mn-JtZqj@^pc{9V{b#iMUG69T< z<|t-^eC@Uvn3z|R&{avNYn@N{bQedLtc0EA7RU_kL3ldM((IzT#paxDKULP-zGO6d z#I5#Cu3-&R_+d*7bB9v9&}8>6iLPzvaQayNs;oW8ckI{{bNE!3Rug%eX$D7BIL%(z z2)2xipYhEWdw=#wZ$heaqa9yCfug22NJc5q>J`QavrYqM49$_&3+pUd*9(z_%rMu( zTd*5op9ygrVd)+faqF?F97FX5oKWsoQT=0ej0$gY*~dsKijWTHf`yXX&%?VzdC$Y? zyb@Q>LkaVYa9@hh8_uTR$C;SW1&o%H@qSxp#I@En#t!t<*g09Di4&)l09~-@_H?i` zRVf{_3sY?Vh6yE5%s%o)JGZSXV$2sk%x1#)|85Vtv9sGvg*d9K33sKxIjvP)2QSzR zR%&c-(u&jM$18rzeT%0XFV{*XRnoH+NYZuXZf<Ggm#lkd_P1H0SU7Tl#|f}r>V~^w z%@<F*34#DEgv|T{b-12D=E4@Mo>M95R!2hi70qLMRx7{8-kZ#);HGtd=H5w<C-id@ z>DIgomryJ`65stYcK^=xRm*?4`L~DXi;OYn8T+`I9&UquwVz{kUDIffTG!^CPAQ(t zsw!rN7gt`7TK<M>`H$s?6;=Jj_m;$HHKOI47?Ol}eRd1mm@6aOm`=l1&OwOilIM;7 zSq9I12MH6a0X)RDfRP~}dKw#dS-3IfO@O~^S~Oi@^BLc4+^iN&DnVg7+CP~d>vkYN zsyNo>NnyWN&qy_;Mwk*yUBe|rF7Vlb0b&MD-^U6rk2y)J7vvRn&!qI<x)sX$aXa~S z(Nu0hDg`TzF|5hi-Jy={u}q`AD`sP>WIF|?eXkd;vKf<e^j5j}srq}iFtoR!VL{wl z?>l-^Uezb9-Cxw4fss1NhqX#r7X^;L0uw8Fi4>;*EhOVZgB4w33puz&56B>2WgTVQ z!Z$qOd%{x+l~9|iR&jVpt4b_gRR$Cu!c`$&3TpRJ2h~=xRVZ^N%4j%BotLP3Hls^- z5h>D?tj$<~rlr~CDz~QDDjr)Fj~t}wV=B|r2o}H+L@^bPlKjY(>FI<EU=al5Frep` z0vp+A(Js7>Bxxv-8-*Oin6)EW{$NTB-KA1FG?cjN#osAO5n_zwlPq~K^=q(Ixp}bl zeOp|ZZK4MOqsYZ_rE%TWzWsv8uKl9?3%*p+>85HNnFz!?gYj2ww;j;FzzW&^tY9>3 zC^7^;(x(J4Uz9VUv3W0Bp*ASP6-c*JhEA?v`JKe~Ub|!%*BrwKMFl=@7+H{uMggR4 zB(UeEfYZ0~%IlRQ^uUy7>iv6cPmLt;yWZ@clFOO5-{_ufUvd~J^sYw_N5G8KoAfoy z`DX>zx0mZqeN7!@xg(P^F<S30PuHCVO$m!2u#RQd*Uealy4Wof#JuO9<}NmCV3cq* z%0Q0&Nk~B@gJDkh$~9-&3lO*I^J%p_12=tV4%~SNpIx)LX}mHa*CD)8Uj4_K3l;G{ z6HP3rM|ADM1bxjOUgJ)T+;_RM@^u~g9QR|8&$kT+8ts;K++kG@R0Hh0QPOkB0zZUp z$hz9ZpZOf?coJHt^r+BY$R;wgFb3q3UlcDnUoa->+k18cMly6r_Q5}J1AGob?!yNS zC~+N)8;<2)Y6dfBL&a7Oq|-@Pge+O@0u}=MGV+u-A2`a{VZhy2t8~`{<+Uvu+vCjZ zM)Vl!`mDzE7z^Kct^c)e8=C#DXMxG}|5D3<ta{tn>cHP~KN+V4jT`j!h*!>NT`fCG zxH}Ki-OiYvH#TA&ri!NP(>a|wnGGCjVkCxINtO<~U2~?OE84*5Z7oNAN4pS-sqWS~ z?pNXDPH-O4#AaGlz{@3)s~+WTkLwv-{|<F1`?R+~4nM8RTV783y55Me&rnm;OO%%z zk$7j9$#<8;sP0djU-@WAHitm^bw<VCtO=IcBFt+XAn)yoD+39m#|f4KZEK*lQ4w$h zcbB6;U&`Xkx7%{}!&`gAUzh%epJSWbjj-BHBMl!`koU0k4Y_V7+l4y=XW`j7mY?Z{ z9$$JF9|i7~<k)x9KaTTR23%aLF}*G_dV=3a=BK-E4}A-2w9kf0?vB|d)MQGNM!3=m zN%JrYyxj8l*awtl@{>Ba$``zx%tE%-0xf4WnDvJ+9kii;6FnvoR;Hs5(DQp7t4T%g zoo@Smr#6~!b*v5|+?h88-h*a8>=z}RX?6R62c;bi_r#Ip+BN;#t{>!&0(?8u?bP@7 zM$<@{e0HK=96R5}fYaH&8@(^*Ef-Ff{?;w%jBF!W3`Gp*I@(Q-6D5pk$_}!)I@fZ9 z$XM8iM`>)>T-4`^_&F>bq<cb)hPz*@|02`kvI*q+?N6uE{cZWGb?3`@9rhP-_QnQ` z<c-<*<)b8G^z>8UUrP2$Apselr!nu<ZJN!r@}vGp%ylHA5s&>XmORAg;{Xqz?%Ii$ zq1n|IwyV(2)$*q{qMs)b8zPs~H>!F$kID#Apg5_H0{z`W6nBN=$cK2c2*QrQ9B>ew zIvcC^`cIgJ!rbTqXe4$q38lhU5}sd(iZo_@(7l~OD@hV8tU!U{kDo`3ccJu;Bcj}F znVH{M%CY<rS#Nr$A14OM{1krsUyw86hp&}?a4uM@`Bi!}@IbtLQp$KRq}+-o5c`MT znHD!__*Jmws=?3rk)$c(MRMi$@GgZ<lTCC!^Wt3rSE+`4Dr>4zhG5LOh9b7yxr%Y( zo6j$;<Db&*2gA5NXR~YXypglA5D)s>Sy6}^67r0ayDL2Mtdx5<x};T+OQHl)cBST3 zh-y=X&SjxgRiwO10({jSY*bN#&EhgBTDM9|7Zgrdl_R07uA)eisH?8(&y&DseB8q< zE;v@XL=rDWz6aEs3H#J>Ng&Drya{mqSW8pf!A4|HQ}}GA<%T%g-Ho3oRt;W**&He2 z_g13v36l|C3^y>F)AvqA_ZQ1^OfUu*-({wge?0k_`FV)twPgxI<EQS~Y(lsITt}jK z$f0kbrGWR7WeqH+mV9fGMSkn~-xcM_pd2u~5CE`{`2VXYNBch&<*ttI4rZ>*F#n6- zKizQu)9n9E!1#X=fE-=ijP2MAT`jx}P2Anw932du99^yd^Or~_dk*9CHg|RX@s^_= zu1~q!y_=hPA3a+|oL1U8;XQ$umuS74`mi4}3VZXmZ;5!1HXa?o%O%5gFIRr>zUs9) zO%{_H;C5SPTmWEzO6k(W<y>sw-voN}Z23JjU8VJGx0$zo=&Y}G002hj7bfs;_5_1L zgfCE-AY>K5M<AfE=j|=${a`oH0QliunhXFinHuf=^9ca3rylQF3VXWZe2;$c-3)~N z_zM0BG<HPg;{NOZzO?-g^{<4yAIR9ix48UWW{}piB-$1ZDs1FxW&P)`!P)04nRgMi zxAg>c4;HSc;Rk+d2}=a}-JX|13TbL_dH_J-a~^T;`{CW}TEgZw_~*M0vdGh>deocy zpv5_&$LnVBJp@Ae&)Z|m%Xs1#SbyLFh`JU4H&l_A=V!6P-tHR+1WptH2)a1l-~a1q z91a6G^(<JM9i2Vy!F}>Yxhr^Rh20lE+2!Zs^#Q!cUxW9^OaK7=4}dTxfJhPypn?D( zQVReO!T~`1fS{pZ@G79t1^|%!0H8T7;KBijME@K6Uz`a6LAx*j?At^r5D--SPeK6{ zY6Ae_?|V7-iH-}xcL6U?FaR19fJhMlfD8a6p#y>hU;z6c0c89DfDQmK@(CdFk9h81 z*GE9m%D*^$0FZqH0E#~RF??}F1^oFJx}MT$1OOQlAP64-_zeKezykifwyFaFuUqv0 zmQ(8c)Ak$FS7~aB^}q)>WIzBtgTe<u#28>Z3<Z!RH)TW(3kVvh=kj>Y`1SSO;M<as zD*`M(e|6xxVU(aNy>vMk$fL6kMN5F^`fJN}7}$=ON~lfn0r2N$dc<(C*y?QC%t&%# zOuoj%*7Q{7+)Td4=KNTK;aq7#q{hMaz|LM_;@^vjRwgx`UOBxB>1_TP8~is>9C z2r$If-tJm!k!V$y{Y_~mbN1Wf>d;?L@|{(D?e_<`0lPT6-b1dkff#r+_@$mmmN&t& z*oJ;by{-4eB>Z>er}Zy&g$xLQpuwKuFBWg8{J>%GXA6tN9=@8IiEr=K;aOP+!VKTe zi;3S)C<dMl|M_a|-H}~AS?v|di1=DS@V5ME<NV!Cd-aXK02~$Ta`$S<_g<F=Mi8rv z@4Yh3xeQGIP@P{Aos(bGl#)^#pPyG-(w_2UNO+gZxBB*zK0UDD_A&lb6AODID;v8@ z{X7;uZw`@8Rkj`xmMg0Z+wJRCfogs5OJLQ+*hJq403abb@9Bz83Oa2v*uc(N{{lvJ z!p~aOfu7~QbcQEi4ZR2-Cfsce^seCl?I(S^jud{~K@a?YiG~#ct?>T?2|)J08#n>q z1Yv-U%>EDW=0v$v5Nb!qWUO>PJa<?Qt)FpkJO6n7@anU36fwy}{(ATNs?|kw@N4R@ z^EiaJcINF*X`_uVJ7no`k91YUyEnxZ22ju#L6(Umr7yJMJ=qK;y^Aufw5wk$`9*Fr zrgcwhh^oyyRxx{a=Q7{AZm+pcP0^g!KpD0~EswbQfnWCmD@S}-6-svA8+aSXS0b_| zN$;u@tfClJ&|RnrSP?e1{A9*q`9|^3{DMyIlSFh;Pj!!YQ_6Jp7JO*a2Caj0hC1UZ ztY`;hvNcC7RP*>OO9FOz1-sSE8_B%Ix6ctdw)RjM%8_1NMN5aJ<>Me}X4j+gYKgN* zSw%k-hyz!vMAt3oL#w{+8+^^9S2jHwn4#kq9>-{4HRJGDJlJZc4myES{!F-bL}xK{ zvDD|8FS~flbpEURtKMtN5au4&ooQ9}+3SMOUZcnJy{*FS>&>r+yI%v&w5_|KsUV=6 zU*W*#KqKUK|3!QC7BH|e&8CQwwMxVYg^HlGE7lR;7(n>JJ&PHkB2QAkUZyk<s*z1p z@t`Pza|-dn@|6kPI^{+2MEOFCzNPn0(tGZu94+xE@4ebnv9_ko!XkTOTn0yow~r>` ziMkg;dQsMFM#dfKw)b5&rI_V?`{Skay)AJDML6y{*n<{Q*%I~$!akumg2kHwH=uVY zt#F`fPX}jbCflvMX~ljtM@`LGKZZO+<^9i5xYpfDCM8bE1o;8R%QW<99%%Iy-A3*J ztyto%0}b{%Md-%QC?#uqaJs&_yq(^R(ZOgu_c7R}S<C{+Y>^N;D#d8eozF~UiI=f& zS3-uqC_A|DU0QfB<|;wT%rj9zvjkDRL^ut7Z2WGV<3_n%7`=%3$aw1sZ_MMBazzp| zRZ_r-^V7#|;hAPGCiBo=s5<$jQ)>FyFV*4K(roq+C-Mgc3Bph1XqGG2>bDDDviGNK zO^AK6r#kN;^ng~l_x5)l=q#D8=-jZDO*}elF%Pr?DBZ?-%Evq&W1a(_n~}#)Z+)Y4 z%QbqsZhzgCvvLF1i&gcW1aHRRa;f!RhEUNxip4)hIKTb;M8)+n-W1hunCubx5klrt z?^k_zk`(!5$;fme^VQFf;5w*ai88bf?u0=fw^+P==WnfNH`zq-veH_|PR|c}5A&~^ zON;_#Z6R$Om;*t($dlX1jq!cYRyeFBaRctJw_ON#M8mgl+g~}=aY$q0bI}q-6Dx4& zy`2*2z%?4AA1&ibxf7b6(=|1eIVYEv%4xl6Z~HgFR{Y4G=>sudMI+qjSCJX*Mu%xX zL{rPAR9!8Hm)3inACQHc*f+_z*~h-C^hM&DU(j9sYJue=bQwj}C@+8W4HP&(mAq`4 z`4yqP?SuY{TyZ_Su%xH`NG<QlMW89d8CS!QYIGmE(M($Y$kT_&r>g_jX8kUr3MOQn zbg9tn8R9sFjZ0fQGkJp%@b><};>j-o8O5t7BF`sN=SxDp!-&iuQvH}zjZ(|Rj`*f5 zvk9H=!X~D7KfLo<%?KKZ@>A}pUh>ZV=3aMpFcO5xEQ$YvCiATZ9#wL}kJRT|e6<E` zrQMZ}AN0RhHdt+{o{D#xoQhCL*_eI0+NI-#G6XYZFv|+Y1@L3+F~32#L)?`rhyH|# zAPpBzD}{#gO@%g7Ka_qku*+@=f7PqAP~W$gwue>Dm90&o>zE?q@$`B{r;*84E{_ux zMXbG54IfdW_CVB{g<ltYzw<_ireWIj6A{z*`O(>g6=)me=+En4JndZ#!rW_g>Nh=u z7eEUO*Dj%-XD&6F%)>vk#e?tY<6^(dM1~HTF3l}8nwHOwRcAPxfABFS1^`eu2v?&j zK?@0fM7X9q#YvI?TKHC$BWDaVpz!Hz^x|XNQh(8m8x#vU6%<$Uup$g;GCHxhUjNB? zd=Fw^{;k;l{#3d!(?<y+12T(XDA_RZ-t*3}3r1xsiwh?S#+?Ubvj-JdPQO?d0Wx%n zs$B5qH=2-!_>Zu|yPgNAa!6~d3X#}|xmS*!HZP%lg)*pNZj?q+@nHsxe$A;i!ILwI z7f*feRjY-cw;e<3(hCqP2pk735^WZQGalE*2c_?!O$Aph;R<mY)98nbNp&1lb5n;S z2Ctul>FY8)#7k;xR~iMg2%GZ_d+OUS_cRO6*GU-tUzgHNo0dg-q@YW8&?ILT$110& z^K<mt`c4!Z=MuIble)t{Mxfo9U>gRbe!I?u$%uS~D30L(eBKS#u1vz+D(}*o?S3m| zX~%00n!8UH8R!3XD{XlY_$F($Axh)j(-IM1`~oR%9-~Wa#cJAQ6s_o}*fFA+i#@+Y zT9aaS=Q<~)06AF{EtYzFd}I1yZ!4$XndcMx9?#;#8Ijq+!alSU>iM-DGSo^>aVW8D zdelcNW4O{z<!Sym$y~vR;XJ(fU(-7%Szc<EC<aK)xol6)F%Qd=or?nuIf|RCC_1+e z(%x~xKh&W?87+z+9M5z=S){cr>Xyh}ovQj{_76}EF(MRJk7UTE#{6`fVTr+{N%AHZ z6C317RvGu=YB@++Qz7_;{7N0Z0RVs<2rF}If>SY-)X-#?JM>gs%7KlINl#&=%9M$( z{n_We$D?IS(@;nI%a{{I#eKEUUe1+2au+T>VMP%>2?Xu&;KPY66$q7X_@xJKV42(? zpVU+Mvas`#C`)8#Zr@pVV%AET5@AzMrG9I^^ntHx!>tq3>@!Ubq9?)F9HpsZB^*{X z+;@e*8EmmKmr}oA#K`63`Z!2om>*>o^xUzr80D7f5qxK@J#Bq*HGV<0hF5L|{LJ^# zEi{r*un?HHR!SO&@5rrH;Stv;FkTL=jYlI@uGwQ%@ZRo#4R?_rzS5>0>i8SG^;Qbf zelbcRsBB?!(N`l@Pg6`?ZjOa_hRHfS;w6J@dD&PFxFz=*8g<1N5GBy7^UYEcJ%B8^ znuc{4mJSx@f!nO>dYyd{cNeb^W3}Ehwqf96Gew2yqmi1H*3>?d3S0bO<(Y|1CZIO5 zHlj#mEU#Sq_?4V$w>%jWDqR=8pxWAn{%ipny+o)PetHj6;PLUCCSuP0eLfW5p%?5; z#qH)b|9$6R!J5-ZA&ijriKsix6uP5)kGUl?Ioaa#ypGQ;g5m|EcU_o`(W_*DF9<u+ z`xmv9l6K*nh<EhgJ50aW@`Wupm}m_h9lBOqe+A7}4+xQGeX1xTRk!njCR{e+-6=^Z zq@ns=^u7vASE#Ab^;KZ;2tOA`f-Pt~R*sR0>r6d8JsnBVE8b*3mVlQ&$3e0nnnqAf zP9yrPX!MghrwHnZ^^)|Bc163k&M*!mNtb)GoifuL&zI8IMZ{uw7_PPc^Ms=qv`q6= z33<E{sEhBG&S+m8v>Ed!$5vQz%a;4wy51-sSK&vXRK2N?Buk&$sBw)C?0(<4fo_G0 zPzbRP36mbfxBmtuC9qr$qES(yY8YhDM4S>-tgqB8hf`M_)gt%$;pDO{%_1j!Ner9T zt@pynou`s{i`tr?oD(%zJpN}O4aB|s8-o>QgYmfqR%{dIv9vle6|qyLqJ1NT-aD4j zk`^3-FYN0co$^rP_cJriA;w>MZ_!n3Ck{Dv&^8LMBH)jzQ`c2vHWKA>v@x}Q>~5dU zZqnD)F)p?aQbSD|1$SECvapkgm6<9fy*H^#sa>(_$3F5{8@(K-fX!%3E$!j9>a5p1 zwjq{F9O93%h71t{p|Wyug%R)#3;bH)4*?NotRHh0*+?L3q&7+8VM}YI65cX7SJ5yv zb!~@u?rENMu~lPvZMj}3d=dswfyp4U0)Nr{HNK`d4Qy!x6mgrpm@{NL;D(*2*(0!< zNhf8tz~uv-xw+ZhY}OvBJr+-#PsY`^Xa^+$iWz1ywAgqOP`?{{<gx6hWW+7yjvTbM zmXV)7IF~LrvxPZa6+<LGhdwE*Gw&eAvX&~J2YvlYyWYBsl;dh{X?d|3k2OY!re`)h z0HzP2^~8u4ZKA0mm&QIxdAkF^5ee?YLW}y5_~k+kkPh-&UOQY<d_JR(yPJtX>BqvL z<UCr$6yub~9^Pvzd|m1xVuLXW&mnn_<QBTUb9?~G`SRv#e2l_p5eV8fKK13`Q57Cf z2?sQ0*DrJRLk`!NS1Tnr8!3&vt3Uk*=Iql~qXQ(lsTP@G+YMMq$nD4iaJ@Lt0;KpA z&{=<E^eDM42So<1#A8XnQ(Gmah<@>{P5K32Ue%-=Qx28Oh33JJg<S$g&@L7D9!rkQ z-z~&C42x0NXu_(xS!$%di0fM{-W~%?VBGr%NR9o2%2V|^-lWm+Yx6Wp5@R7t@{CTQ zj{KLd&+q1(wr=$L1n5>=wL!$09>?ltRzrveUsWvl@{CK#Xf}9%-JP7M4R5uKHPGHF z4CTnxh2a_yS45L53TW<OTTuvT3JB5-j~FautR`U*H{X_?8150P7#pOCXu&z5&B|Cm z^menmn#aK?l{%r!fz2i$k0kGZP5d0YcV>63o_o5T6Zww3vvd7occ(?FRE&WRc13+1 zntv$2FYFY?;qR{{HmA~V3Y6f0A%V)0#y?&07?NlF*|o^j*m0fQy7id$u<}6p+Ucka zNpqks*u&iDc3A%Ng~4^F9#yV0_6Mw{sA!feGJEtlB~^U|p|3Q1aWp$iQL;t%U*1qA z#vgVtoE|*r;P1y*A9pXow$X8Qw$~)l5w3-hpUgpu9_|r9^?`s`EG>5g;v@_9bQ(L> zB-IrNbmmDe+Eo#G3{_=HONwIQgg_ZTk;D>6u%AAHKhGsB%UT-)IAhN~fh1`1gEw^s zddbXM0+2mpxhXj&yE$=&-W#6efyCx1j4IDpBYCPY3Zv^d3T+Z6fU<?fp2r>c=zC^U ze)=&q;b-s&Gp2uw-=J5C;GB9vJ(z}yoIQQmAr_*)F+&bo!LDwR`L*;l1O|kgnf6_L z6X`;#vdnrkJr<|M(73aSf3MQPqV;|@dv3Brwf<GNOSRK0_DgnG@zs0p)U5T`g$_xC zC#WQUcPaHJ2&tw^QOBxBw!Nu!UVqNB<=K=`)^$?RX!IM`8_ewj&g(*0F4Q!+#`5xA z=iLa8f#+q{!>F}n&k02`B$vlh9ZiArH<0hFXqC1bj?cgxbyfCOZ=HQhPOO^>>h=x* z11{^CH9_pc%Btk5IGmsYQz6q48`g`_v|QY?fX@>Ok9vWX{f$i&627seDO9P8=o3OD zlsL>)Ui1%?`E5sLy6%qX!|}_ObfnrdLnZlcwx9DlO>z{sGG};HBUnz8=6qPEZ_?5L zAd&{0n)>aDQvT4Me}~B6hk6Xzez=zGR~b93I{xn+G^Yuy`iwH=of|XcKH0=JZPIUj zR8Ll_$J0%@o(*Nf`ZDwoVk%pV1#K>+M;MT&WcLiqmVV|=E}sR2i4#}Z9H7k&da}59 zp2WF3CggMoes^^VvP2M2{SY)81F@Hpu!V64(=<2KnIj?J09j3>zzCrbVrEH^aG}PV z^-~KKu0evM!gXMbe(T+7JQC3uNjsiUc6IZ&UMnCoy#DFKv*ZSdIJ4}#x}v6%iVL0$ zqxJVllR1+ry{0Q7+~+RbA0LQ#U%IAN^t9}wH5Z<|te>`)2)lfq-xm{=Glg^w6*yNa zy+yC2zPn3%Fs>GYA<~&ACvp`*!mFCt7;oN*JBb>1?$-5Rw>5il4@V+DSM!AlG#~Xx zAe^OyUig-}#|gsyl5q}{aZb0|eimpmH){mT_0SlWPR~ZM_65c{DPd#d=|3_K>cLfi z8n){Z1Ry2?;f;u-k&8toW8umCjo({4`w4~JxYV*MN6l7|2|NZO*?Rb$gzh6&q^h8c zr6j*g?u=I%t?l-{HIP&ZEb7!yXL3fNTmwtax~3Y?`Pa15mn7vou*JWLHrHFZJ)Em@ zj}F9VUU-innA!h4_k(kHP^Kp))NV4x!wA6cw`U`b#S$x2w%*Tf@AA2Q7FZ#7TlH?z zGNYn2z=sU2hLRxY<MT<oH0R?je#5vtyV_0jSu$t4qYv`F>#E8v+Mua%*gk|cJ}fnV z?dgVP7jGr1=7q?RL;;z$r|$l_>&>WI{u=IV*lgN9%Yl;bgFceQ31q86i6(LIMe9 z?5Z`%*vic&LQ(_)pTeNeuuxVm4-7@x@MZsJJdRR$g*3C04cR)WvNNL?80`<$N2poQ zcI|hr&&}V$O?2u5cOS0opZ3Y^fV<4oSzH#JQvaekNjc(DpY4e3FL*cUdq-`LqBrZ; zHV$w{rZF=LRLKJ|9dQ&<eW-h%7n8n=J}c~yy14lfVXWTWO1%B}7`vzTI4g1Y^3hp4 zX6=1VGU_V4ADJHkJ>rFyy2)eGs<h|lP;9JdMH{w3-BpIV282-|I!8FHU`TIRRK#-% zM_!8(vo}8e7V*^5uBr^!>b^t_ifU(R7T~Dm4SljtdH7g;V)|uadBG*KJX4*&w1z2? zI8U%hqr*wtXQ=2)MZ<Te5%eK14iD!8KJcqctntR&I!W@rz(aEHCCwvY=VD9w*AD;G z5YJKyW~LzV7O~(?(1rG5+vbD4JMCMPjjsF|ke`nNl`~0JwGTd*r&wl;Y3{{8V|hmS zL4pu&=fXAHR-JTYm5(C_P5#c<aE|6<>HWhqJ5MjmwaX=eUk8rU>N=YyCfbeX%Tw&} zX>~T##}o*1kcIm;`x>{y<u65X7tVI`Lg=@31z!_o49Bv#OWwJtoE(oE@nEW{6_n_# ztuu<Kp#aFbQ*Ad(CQ<SWyXRDq#*t7cw_~|2M0GFkar}6{af476E1jD8Xd!|Pu=N@& z2k6ENzb8A>7RdI`P>89ErYGu$)5bQ~9(B2owYT6XEq*)=V@_fqJm@tnXNhQd<UiJS zdrg~P`hIm~ab>KA5F5HHo5(6hZc?$^2FskJI#W6^zluWz9s0Gtz8){zd@!wML3YNs zp}3-$8h}Gf1}!J3(U#7sre#d4&8C%^7o^dYx=2wUx1^M?QQ&YpYJ%f5DY3wLk<3Lb zJSe7LTYBh(%3de>Q_~?~Xw@3q_bZ?E@&!BU$L%s_d6P-whtH^-GMjCBWx#!op)EXR zDHy}cGnx1%L)8SG=0$^<)}Hc7B-r{l^U5}H?R4>o%vDX*@aM5Rc6NbKX$idM#o7~* zi`$XQG{qR{BD(S2JE1(>{1PsB*}?0vQr~t*6TQ)R1CxA%^#i!jK@OW*RnJ#txl;bc zt`o4-)YR0Bh0xH@(5g(l#TyOk;XmpX6_sY9Ft<0Lf@n}0lyA(tYpI{qRw#A^cQ$B! z%ojXkU*;Zuw00h@IaN~w$iM@3rPDA4Qc{3{psK=2^bv0$TcDu^-<G+0w7mzN*EM5W zfrH!~6UQo!z}sV<VoLU~RKXuUoFqySNc3}Yd=BaXOZ6sdHIuaQh4i+#pA1C#i<O1t zjhufn2^<NHdMoU|AKHD|u~<ez%GzLP)ioGVhzaZ=4=z>0NoWY5X&NaCEmMM?21&(z z6^7W)9Pffk+*1K_Evf7vJNm+x$CCftrZh-6Mopp;GCVkI(#rFcYMH=L%!O@)BsB-` zrgE@vma;A~Fr(Cl0Xi;Y+E5cQ)Gb4dQ_kU&af%-!t3#1P<@_iJ&C!!&=&?BaBWZ1z zZ*pZs_q>g?zXi|H+)BNZHl{U0Nkb-s<srStFjyptn6FX|-a6C5NuM7u<`L8S80e1v z#RozCbgJp-hVLw4*-Cf@Q>$9bmdYPJ7vfBy9`6E96+_1?SF93Z&hk@VnfW@#>VCxL zPO5mo%q;$is%)d2EIF|ssl0pGX8vcGxU-8mb5}=9)ph>I$12yQA63W%D3x0P03d^) zuq)<Z8IWQjgkVz?vEYMN?kXZGZm^b@s!|-SHEmWZ)z(bRzz}A(^+qjF@p&SpkCLK* z7vVzVJQ>EcaZ{f2{ghv#-D}q!C%&^XL7585G2u@N9U3($FHe}>u8pc+S2PX^*zVNB zoWcuRSQ0&+0wb4U`iGGv-l|WzyKrc|u-!ITWMN4Ia$7^})1f8hbtv_7oy6T*lEVGm zWkEU+5r%XIH1`#W^~{d4N9d7-&oEc~!}HQ@(K+WF#}3#MeJ7mD&e*DQ-I$z)(_xsP zxTGmIMSyr%*okks?1JT+l>Eb6{w3C3uWFe+JlZ-W$n!k08Zn17Zs_xzl38CiSpE%D zHg;UP$UA|gA`M}+_o+J(O_r_jL3D;HJZkf`?{<_^skzvL6@LknQHHBhX#6;&VMhl+ z`%Nx(YUbWQLgNcy&)uhh+XXShPsjkHzz9&_NLkgg=~q}H-h}bHQuw#NZ%W_4-^mjt zGxi&2bPcYN;E%7XE7r}9a(2A8v7g_L5~mad{`q1=;3EYY<a8_2vtyw8lNn;`)!&{m zE_Y~K$A-McT?o2R*D+BVxJuv9pQ-f{ZEFif4Q?~Z_SWns5ss{1%f}X_=Q=_QD2mxG zIn{vZ2!?fwYVaFmO96$Szr~5$Zow<w)hR!#x71itUF2#WwO@~xr=;6UV^-8)OKqw7 zmX6&3bI6@}FEkhjm62qIbSFy<k0?YRKigW!W-#&1RQ}Nw+7E6D@9aZXxwVUQ1?DKD z@uUEcjgi6NPezr44+V#H^In9v)gGCvknbX;Z`D&9@8|?$>>>{}kO>}yDx)q;$vAew z1xlZrFkI&(E5}GhxLvYFrAv=;&2(YWM{g>QV+U-yqYmURSOk=+BXN#e7q!e_y8SIM z;BpbbF-D~zl%6qxj=hi5ajWN)F{aik<%W#@7CT&DvV`MtN($U45*YDNO*9$f14!UF z-zGfSC60o=92U>7XU_$u?r5yP!I2@Ogf-=>{9LMi(^XZvqc!hga`;T5BXjDQn6%`p zZ4lR0b4~Qk`zHBSLLuLV`yK!`fXm;);KBR%)^w+wQ=&wL=6-IvpK@H*+Qe4hR%y7i zFSAfr-)dgqNF&G+rhQHpHE!{!dhWGjM&pkR%BcVvW56&dJkturR0Kb^F=8?jTnL(5 zR#a?_;Cn>85z<Y%n!&?tremFuP#+9UA@Cfi7zWx!;2MGkWn6H#ql(!n<S=PuXn0&7 zNmCt6(wFCPR3@XTbzqAz!#C2OtLWaZEi$({F5T-44a)v3ig%Yo{r=UN>m{R4Rxoyl zWzbG9z(vm#nkc@u&pu(2#K$AArnFB#9)k?JSMVZ5JIlyb1TYMsVO;T3vkA$fkx&b5 z6xO-nIy|Jt!+GbCY3K^eq7|9bEylVI5g8@0gZjA$Ywhzw`DC#uwxD)6*f~-(ln%*{ z`i(g5&9_RY^m9qygXJ&c-!u7rzEsv4^=dh#S)-O6+-tM<AF|jJd%qJW;_(#ZEHXV( zL1h`9pd*{&H4%e9Xy<jn!I0HBUfa}cvROZG>*`&yJj}Z!=2HNuyu9D*;SJHd&R?<M z>_s@H0sz1b++kNbHDVwK5Brf|hrc`6yh`2kVydQGYA{V7t(f(5)=cf4Yw(u}72Ml8 zZQ1v_uehfO)<EU8J6)I(<K2$$tuY`#6Y4)RTat58!6+k$?a_TgZBi$rx6)O=Sk#75 zv-1q4raP`nbTlyZNivVe4eK0lz2tC3%#6#J%Wk=8oS;rzCD|#R2g3|p$cD~wu&=+U z+&>DWQzt~y>lueeDWszbM8KvNDPfZrkmEKWwF}#{G9qjxosDvMB7Mr|?d^o51z8Dp z@q<&5Gg*;UAwWMrNxm_lP<M1eG`A3+j5|>e$84?FvYY0&I4_i>`n5uO9v}EIQ){n@ z<^+#A3?B1mTBx+SsMv4;NyKd@OPrRq3+pC1URI&kxeX+L1v-thUCF}?gPAjpn%QDu zNL<{pEmo;o|G0I$YUQPhxNGspn00h&hIAjR{0ibT)(EI6Ytxd0?RK|cqKZe5QRP_s z{$rwiOxSUg6{Yt&jC?$?q-tte*wamjmulx$XbBZ2yf`Un?ypsQn@c}_%%)E$xVlQb z5d;7j;0e3Z$&(Bo#vrF#(}WWPPWU<VYFS$$3~oujy8eQDW`2)_uKd_P52mIb+$khD zv_Pbr0Qbv*#eQc80z2;}VKA2L#$S1$gt@XP*X40QYSppyp)x%0{*z(sp${UP5@sp; zOC)+-<JG4;5$&kiQ@Yfz+ZA?K<ES4Yix8w|Y$Vs|lYddDh!yaoxtN$}=1;d$f2sa? zbv@S*c?MA=2AveCFAO`a>uoW9ZkA=_!qA(Tv{N#QIj2R{>uRCR?tS&ieWzM}(4q6W z>_a8I>mb4&HN2vHZKaS6v^td|xp}%(xhB#sf9=fWHo6-|CfyW7H)C~+SG-*m^m>^& zzwP^v?@>t6*l-sV{lA(>i#fj&YgbWM^pI#0c-A04VF~ZD!PXI1U_iiZXry0~d2KvU z_~88^oih3T?s=SKGN{yu&r&fg$%vSpJG;$)1-%BydW^7V4C>Kp+hkC%Vwjy;B4KSu zDoJKJ&#@Q$uH-(D#vg^4hRmL@NBjcHi*@KmEfjDaBFNO6bo1IvDkAmPIB6FI08lq@ zja@M=gMd6C;;;CPo*e-V!k>f%k!gGW<L<!E>O*H%m)^5fKKU~473X*n_iobRnOGL& zfY~F?V|BRZn5B5iZ*rD+6U4O0qCEz@)Z5NX)sobV{5Q|z8SNn-$rLU4dpFC8`6I6E z8-u00zaMtB?C|$pXQVJxn_nyM(Dx5sXKrRG+sFkSq=`vZCQ-eY#1|68_$ia=Y8M@@ z)`*8Dgg<SB9X#D!$Z9`tTy)H}MhP0k{Was#871=Y#riTBNu%gluSwD6RDi_Dmde_v z$V`h-{&+fX7#c+wnV~>fOKHhtppsMxH|evqv+Me0xLC9F@kfMG(m4g(_46Ykev1G| zc%GFfBR=^SeJk_8@&-O*Me(w{lz{|yMKoEDU$w9{PaWxAiw0H+b1Cnv+HvJnod?_r z8*~Y8!uW~`YZFw}lrk%H`tNc>YGUOt^CAVC?B@}SqS@m<ZDY`qwKi<^xTMOP@2ub6 zZL<kZDiYj9d#`lEP(lTBrZG9N`0f7?di}Nf+Vk?RWY1}QnHbmr&atcZu?gTr`-Hwi zS&1OrTue?dbylyqbe=Pr@>InYj1FtNY-nwhaA=;j(DNueHi3WffUuJYg(%;l7c)^E z6kn<ZJoN{9CCp-aXK6!Y3%qwj1_GG+&%6xTnQYLBqjzN3T)zIaIr`)WCC;I`TY|Y+ zv`EPfcDT;r$Gw}@<67z>f(`AD>s-gl)K6a{U-)L&X-UhTdgeuV9Kn(3jEPI06TeU( zrwJbd$d0g?FryZlQ|v@qTkyZ#Wr6>7>k={nnfJM(^augx9b;?gL+iF;RA_=VPUsSw zGUO$%0kTE$*EJiuU5umY(Kfug{7!3Q)f6FHC2<K-s_2gwW;=Nd-p*-iKjNMjtSX=L z6F8Et#*5k@c-$_DX-%t}&1CksIkZfRBKdg3C)RE;bG1jDwGOfg)S~#5_G;n3nqJu) z1v3QL!&4u<g&_)&aI6qbgoUJ$(`{@?D)v0MamuX}&DD`ou!$4?EDOa-oWK?z9x{3Q zVb|xptHDX&*7GsT6M*#n=jjWpPgsa0$Al9XT6phxYF44Zz2<^TMTJhc%AApoGm4Gt zo4r%9fX|^M6_gf4^5a-SSjON;NpYchCz-5MW)#d2@f;73k*C;w8G1t=<J*0mCB8CK zwh;-;5wMRitsXF8jQbMe<0qETZ<yT{AtZiZRtq5JSZE^CNmOH%Ej5o6^(}-J7jg_V z))&ILTi+FK=^ykK!!{xbget}u!M8-2hwc3W9r=~YQ#-0K7f+?@7*193*P$DsmgVGy zH;)a6)^-GDrIl$T1haz&6``Haj+`J`=0RD%UbVn19OiRMQAfP!cON;?%Q%R5<F;1C zPttHW^xjzVnBVGx0&j=lqSLU_%^lOWYBwV?Bi05ZvgQXBGU%oa;w_G^oL&3o_nA?m zG~p<5IJkqhk5@X7G9}kT)mBFhDP^};=8Bv?IphZRsaU=|FS|2pS1L^?3AC77Po9e3 zRYz#AO^C@ivWN0!EPvXa3FL0i5-a3Vh=6sOSLbZ8#h9ZB+WY+SZ0Pye#@ou}c@TE$ zr4Rgm`g*~x4CiBjM-VnaiIL@i%Wfi!648-d7&Dc(UbD|*Vj~%poj?ehGJaXkH-~d@ z2Q58A<$oea;P$iO9&{)QH;h}uq>utL296sekAL`4yU?jKs?>nDIFYLs=&&E&M(;@I zWYg0UP1}r#L#WnbYX8|;Afewr<nXxorbCwC2mv*3aG#h*Hm-TZzr!_0FeSeJE{XSm zBMKuQ9d#E6Wov3S7IvEzqY!Q}4(g!((yBoK1A4D*kR&G7@x1d3*f~T?`D-f2)!JMT z*`~9RQfh0aq!sZFqB}PbgZ?q{BgMjKBS`*XfsWLl;cA@kI6Jbu^8lQIAMQl%?9zxb zV-l+oyDFQ9lrlWnf;?uwt^HjbV;3)K#jVu<%OjApa*JU0VF6KOXrym?Q#4cEKpx{u zHLmw+?Unl%=<_Hq@uw5sOr^(btq+hCd9YaIP+{VFe9TmMoqo?CnF<m^@SHMeX-HVt z3W>ka`|*|NJ73%Mg}pggIL(r{N6$N}!};b1-X7nCF6Gwszn;4+WJJ*dd;M~9LeX&H z#63(s<G<co@L5|fMSRn>sdcht%gxp&kjlSrR9E|+M`C3t2A5MYjq_YhC?!vtBW*=M z=em-SxxX5)HoD8*I6YK6?v)qovGddLn-mXW(}o?pH6>w7QOmnmq5<M>So8AO)5u*S zukDHE6iM?z-`4n34T^=oVsEP)%MwGAR8e)x@Y@qbK5Z5a&=}gzP*Y)`#9}AEfe%UE zXCLz@i;@_+U)t9l5Ib0*deu4W>`SXigx7xc<nV4F6kDhbrQjpMb)d!qVW4}_3wkh1 z1Hv5df=L3EfZB^uQz+F%NTk+QcN=Wvdcl-#mG^mbG|@W(8dg{PTAtr*q<BH1;%NPM zO8L?<*tV@tB!XKRYLaGtxaacX??yQvQEqoHG~~ZPVAV6ECw2?Ju+J*f3qbiALB>Kk z2n1v#H9@M|KV|KTkQ}`C?Yd1<LKf+8cQq=Rgll!I4bI?Qin{UokmX1<)jim3q{8#& z&gkT5cd0CWN^L<sldJT%8X(}e8vLjMB8p#gtWfb#dgotEiz+X@TW35>&SWcH@yTTO zVB{^i5$p%Ra+Z$X$wIRuq;RZqtrkj5zUC(uN3ekd<twacxn>Zbp~X)&JM)uiH_=Kn zyu|IeF`lOC_d@HDjFCcyY35(rewFl@3n714HD#pf4GHI0p@~St%GWO%%{8#l7)Qb6 zNz1GFnnjwI(LqRy5QIu_H`XB)sk40eMHi8-?GQgWx7Cpe+DU|#aJI(%Lor}6R#?`d zt3JF^hUuR8mEcVQ#Uwl&@;pj=rHtTP7m6W&Mg4#nDxQK=YR8rNN2a7-I`@$AZXP!y ztisE7)@j6aKoElSZduPb7C2{1CTqX+c0&EKM*CKF6GVf8b1>l)`XwI5&S*G|gS1cG zKW)M+4_`kvijp9c4o@SxSCVb<HWLHxNHitPd}S(o)-nkqCEu2Q(*U*>$&@#4*VBd> z4Wut)ID=ik5U}dXsK;#C&ytE#)ChqZgY!1|^_P#<tWUv7`mJ>ifc*Q2vXJ3N3KFXM z{hvDm@*5HT91UqSZ_|^LzSui0uW|O(jx?KJUX2`lWg8M~&bOP*G{fSR-4*=lZ(-C* zBCRCddW@To#jPYWCDUND+;U9s*Dq$h(n#)x9ZWb2>#+JmBr^v_eyJ3a%}R|?LPw)c z-{p(Wz<E$P{ZKL+{KQmA%c3}w&r8EbHYj(kFB)c6D>#jdBUF`+C%{?9KOiSLu6^aj zL!Ye4>Nof<8@%*L5MR{%FtbO_a<BIdY_xGP=6{(XN`gEp>(V|Fmoy^B5}l{0p2>%4 z5l?9MzO)9Vv7FY>!*$8G!^JOYgyoFi;s+9M#pOE<YWnwut$ku+dlsF-Ae>+daE=%( z9>b^0I;oXv+ti6N8MK&r9E}-G!vqI&0n+=6%lhEN?%{B`0SGcxbKI~hwMW<{6qKue z2&{uvRQ?S{w;?a84}!vB#I!LjcKn?m2i#MnIE;hwE8KM}QaAH#E}hH)f3fTg<iM_7 zwxGc(YI;T}fs8r)ZQZA50Ukp#C0qai@PGf9o6w2{BN>3Zzr~Ql1>R0MY}eh}D`=`- zP7K~9Cp&t+!?^fnHN8y7aW!BevF9oH6E_0q3pDvadWFPdyh*b8n@Zv=Enn3KY!ZKr zw#>=kL1odxeyNHozVD`P`>v;iM4A&#Mhs=wcyQluhp%Wg(aXUJQBWTS#jz`V$NQ~; zcl=4<$k4B!X0`aEy9Rvodf??c<zV{pDbTJ?kw{q4LQv4T55SW{Fboj;!CIH<NYjW# zIk9gP%$p7FuC2RB6UTG>Ilhfk{)Ess(U-(1p^1I}aY<N4%@M2Xr`8*OFWc<KdwRvL zf$(L2rvz<uVuaN<5KSdFd2>$jyy3dX^d#f+VL-vAh#n;Z#gt}=Bwpp@D+g0|AWe#; ziqsb+sAZ;k`)q8DiFmvKl#&!g_a0-cZ5nDrEUswo+_b2lgmn_(F)HmXTl<zf^+LkQ zakLmOHW*M`oPMKHb^=JBtaZ_$I&74<OE40ZiNfE1ysaI$w%+y;Js^Cm_j+G^J9Xsx znF$Qw|NgnKlBS3aGxW{TFvG$?f)FvJ*1X(n^wJ9<u$LZUagI3MT^itX^rBSP@UweH z%S)S7DD(6=*ttSijn=WJ!=RnP;(v{m8g#Le(8dF}-MM=pRDv@N5B7JdN7-!(64v*w zvX9frclnaYlJy(iSnWTpp+bgU2D%1u(csc|gm`z(=`kSR<d=$#oLcysTP!9j&k=3z zHLXQk&e8L<K`dQQ9_#=#(|pFBxbrO09EQ`O3Pv<Sl+>)n4toSl&3fbZJWx&K*Y<8w zG6hP0AiJX7xL<pYZ&aCKh?!l@CY+UB=aWQcISD|8Bc_<W?iM_4pB9KS=%jGE?2+jU zIdUrV7}5C(O0uv9{c$On@3tM#DH3FqazcZrNFLHkn^v^hSKIC6#j8&H;qtnh=G2Gc zCye<+^DSycJaalTexR8vd8nnFPL{=uKWg<jB0t^iARNJ1s_Pe?f6WA2T_)A|uG2+L zG2TB^s8>abaKc|3X9sbu1h#*{!Yg<u=kn{3Z946EKtWH!mC=2|82|v}-=g^9D!+jd z5&W7XOOA&se7(o#CAU3=m~oO}QudLqeZCrR*HLyDP2%cKvJaC?)qX1XbKVarxXowx z`I0UA6WJ4=`63d#HSuK&6hRwuAwKGTfe&CySaii<E*5b#pF`Kux{;M`GPRI*V!zHF z0ub6o!^!PwS_G$J8sW7eH_-u|4U-a(WJQv%=<+sI?)jFCIct3MqX-_J1vvalNC}y9 zdKrFqwD!ks8<yYYXL4@ZwYC*mx5$ImS&nq2+_?5d5DJbk(|i6}eBP_6A#OLd2+gy^ zK|5EpvF^!GHIK8{!1BU3#fr}LF_!QsOoF3!?Yx)p8r5O87!AcxGT4S=p8cN)x>%^4 zmAq~-NEpJZbD)MeJ|cA)`1S*HVn?v#Tuc^o-s<YMoB1K)$4Jk??d}77Fo|&#%!ZMn zfjhgAq2?U*l0UrG{5UOcvq#bnAy}p|zbepVcUf|-7>0QSbTyiiAC{a<SP1YpM2&HQ z-P>82yuDQ-o8hKxEpJ_JKMv_Io>)ej&Q)%4P5!0I6Lw`Fu2?vNkbaIP3OQ_02!vv% z36DJXQLavlHfCZKlu2JCmqC(`bEk$Sr*V|#GpUIZU6N0jry5mAtlV<y?Y`8Ec(Bc^ zbg0D28%_2coe*Z;pS30zPFtXwx13((W-I5|{6BLj@P7t$9j-dQu(t%3Ke6-NLl2B+ z-acSyn-Zvu8DfQAjO`H%+hI9Tb_jcJYTBXV$&U{+>B7No#;levFhFygc45qt((IQQ zyK;GqSlzPrh4>ads}JdIZ5!`d21K4V5uJOuShNoKhOo53EhI^^Tj3zr)>`(_H*EjZ zl%WaF%Cf>qD=xEz`(P&E|K4Mt!leHQrm<ee7*>_#W0BI5R=-XLS)!?hCX=Eu_i&Sa z)q~h_@%8-tL}FK&T`XPMq{e;B(V+7y?s_pLT#dFWp>F_HXSm`NHxPD?l^UHdfP5as z9t1<s@TS=}5-I@^EKbn^_~}~;H=A|^%BT(n&GB3XUue;|pBsK43C2BHDN?!S8qPx7 zr3{_tTBF`jckJvk;l10FM_W%WulnnK)-`rzBrQP_f(Y@~4OuiiRN)U2`Qy4-?q6KC zgU9)!_^dY8O(Avg?-7Q6N~)Wrb}d2aMD>_?6$ch!C^bZZEPpv*>Wtc=dWhbAJ6@&{ zVuv^~4IS7_3nxC@q}N#Z(4*gTVfk44&`~Nh`4V=&5Y-fs#=|sPb}~Ulv3n>VT|;HM zigWAR$vy~;75W2H7hp!&*HL`l#7W4q#;$}-T%wW=pZ9|!ksKF)N5h&FMUTaUWG+6Y z*pOmBn6d{F`bbl&AU#*yD{V`D((gVCK`oehRrVYVVOq<(anPF!=P5PJ$H1yGqSsZ) z<DlP``I&lKfTb$A)qPE>6s;eQ(lkxIh!RE__j_AzQpMza;c0$F`<T9%BTnJWF!9s( zuVTeWS0mLeVyD-EjK2zE5^0)=<N{~P3K55!tio~j+;Qtb_RrE+F-K;D*D`P-8Sl;? z?8@o|gDMiC=^^$E1fdawof^vJG4Uig)G6=8I1Ccs$VlR83ZqUkd)`j+Zo5wmm~zZk z{`^J!TZ{+nN;??_BuL2IT55VyH0aP=iOx1@j@?9C#Qr0v{&`EeA*Z>f#(>m;J*SKU zQr5ByQ%W5$*#{|FxrX`YJ)3j;tgzvsdk}}<#wTN6IXEtdcdq-9w0y4a@mzdVfl;)w zq~XQEyR9gxK5FkVqN)3Hm8@QqTNijg|6ov6rEzxrH1*s@4?YN=jfHlgWmm^wQr}|C z8<IizydHjXF=+&t(Co&gW@gKZ5;T{oP-eCZrx$7l4Q-b56SX+W(2uPpbJ(T{TofN! zKC9t+oy32;YS_Q-W#Bc62_Te{mqdhs*n%UEJ(8fatxD+37pDeUQqmkdvDPV>a!b)B z#z<pot+~g@$=#;S(G4r;lq5{cSnZ&b>%se4sDEuHSukv$U7%{WM7UA;T(M5+fGh@h z$Z}6*2s{qAO;yR=uW496J55u;T!hh3X9Z<S9p}W<xo9|Nj+Z&zM))m8^It%%F^byN zh#u_V($o|KBay<wg^cdEy16iJ(i%VH#z+waW01C{Kl^zYRSVc6$v^6@-kOK6mjD1@ z_gkA#S{by!UgEDgvS@fHy>5KpC@#p>^_3kn+1p$y8(h;<&{__#2dPZamKN|I>DmaX zAlb{_#{~~LLUti7HwBs3loB3jpH~>iMf`fx06R<AZ@Zg3f&)HZ4+#1tkncOcZ<G`N ze%<kH*!7o@$xc_Cb_(n0TLy#byGHrB119$B>9P#kx6;4X_|aDuPC`E&t{e{8%19VG zAXry7R6Pz^3lRnuSrR0*Z<J+5KwVgGr@?sode`C)z_&fV&^B4HnZ#9Prrd_Gi4Fg( zMPaO3bXBW~M(s0=aXBfjt?2jP8bD~CIB2MX`a#nLS@t#Wtp;yi@Pd#iM_vS#L+>Zh zX{R`W$+B@DXB*aA#1K~zW|7rlBYWvcJ9OM4$x7J4notvVr3qs*_*`8v3^4rMLo@+j zT?djz@w76#zn!(AU=sGyA~d-!p{k}2j<<LO1J=bvRfZ2YHG%tVW9L}y((<j|2lbnV zvLaoMF}D3e6Rr8wPg9hx(@Ey~PstOn&ySr*Q+-X8+UI}EVZlid9G+|NZIPN%7&X|y z(_0~(lXr8r<6BEhW0a2lRukGpi9pT6yjSyZq_UpFd`u`-f1!uA!n>USg3-bv%Ya=k zD2lhOMgCycu4=Cv(=Ngl66Bx)f)-okfaulWI0O6x<~Eay%B`a%adX-!hr>qxj%&6A zb+uZ8aKmPvV#VS#i&L7j1vTi0LA}ZRj+Xm&y`)zofsd$aqCHW0v9}A~3l|KyQsz>p zz>YHxYwB-wI5WF2iMBOuXG?V1)pEwd6ity~T%D2@o$|Va3=xpG<4J7S{9aUMU~|XY zWk`}8D;_9*l+aLw@ctT18<{Sw1u`dMGsPxCBiF#w!OohM6+TF<ADl<R8>-{*na{~q zY|-sHU)k56Qw)yojmj*c9`qQ|##Zl}Dhf*F+`@0^IL@)fSoM|b@mI<b2$JjPP*%TF zil>vvM&A*JC0C7>c7_pbpDvo_r7>icwqUk18qrL4XW8^mdXyDiQd{2&c1E`GD&#${ z{(V+i$Pl0gLFVS9)QFNH_Rhabls)J<T`k04S`XGSnS1zk)D={$!mGc{yLs(KGeU^< zgb$M95{e=^Vi0a1>bv$<noP`{{D5wdPH8kMwv&|Hf2}+tG<R@+mRv4WRD&n2UrR#E znRe@N;W3~zA-*F<qE~f@Gam#OeFk%oAizmBBR$&PIfvdfGHcS~Xti>RbiLFQ1H7|E z{7Ct<U8)=_6p`nklEF!aYSg*Z!ZD*}Wjkmw#r+uzcZp(TI1D|Eg7)xWKstj>%&+Y6 ztyAeI(&GZNuBC|ei(8sC(=nX#%b=tM^Mf?4*8CnPT&$s@aDULCK5?WQDx4||N&<O5 zBXubR6OLrBl{&?aVsGj}B#f}-wp1fi2%scwWF9^X{j&+@4I-^gRSXH#NCh)SjdB{) zfjB6Kg5^DjFbsI2tu+UVR$aS)iFW2AModB!{=R98ZRRl?O>FB?7z>e<*_1oJI$U5U zPxz*7+;Zq!OefscB@Ldgk;nYX9}f4Lw#%D;3t=K7f)+U9TN5Zri4(L?{Z`|0-TgB| zlOOneTeCcRMRg{__mHpe><Sf&5DCn~>J}QEiFNNs5?n)QYlUPe*WjfCkIR6y_Z|6A z%~aJZC(qv8ZwY^^OJjm-e*q7qVQ(2CcQV6AYj;qt$xbpp?fLfb^)_VCEG_4JyQU5` zohE}B5^7d0X?O~!;mfzn$yFXx7hOG9SI=qvJFH^{<tTEKiEWSkCx!`$cgx$bV~Gzw z1n$XIciG6j4;ewl7sq4Pd|pUYaR$jWoOjftv!4+C_xK3~jDk{D7eCGEilPU->Fo<( zKah(%3g<o50%xRs?NOG%YVCsYS2K;;{2WKG!K5SLJnFK%gdc0X^7(S2lp_47ax%<2 z56*9mGwR;y=K80?+&ARK{Pcq#d7qDJeUMfevM<c6{L|?2X=qG|x4V8lkx&zukrpQI z!Ih#LHGn%Bb3+;gWIs)DCWdzhA9#G-<b0>OLK*qo$Z;ctAoH#rH6{?ka{uQKg|#Lo z&%D2NFytmkj1Vy(PKjYb$LL+)dBh!&(38o+T=V2>*|OB+mK_Igstr?T9k{nSe4qBA zc-4<OEyqyYph;2-N7V^HBwn^Rdcn=;)s7&0V4ipnbzXz1Fwy4uYuQ%T@N|Bw^?r-n ze%0yc{CD|E(T!zkM2IQ==B>~l9Y!m*TE4f^SeUzHm+`hPg#6$k0-32&GZ&VyK;wfS zyQd$MPWnrXcY3;UOpT@-`PbiH_OH1Dmc)!$vXmDyAYgnE%l=c1YBP*60ScOezAW_- zaE@4m*f_T8+-KQsR@vt?RWfEIV}T^HeMM2wffP@1Lf=Ei9|@8M9gI(#8)d>FeX*Cc zjF|1!t*HMIu4xi|)U<fBwyk1YAi7m32vOf%%p}}RIu0Qs2Yb1X<8CEq_#IOW;w}*# zqW6=3TIYI~>p=+dn`;($5}t4HXP+jEz-&KwMH6>!<_MMsu~pVPMjG=A6t9YcHs&hp zzDUFpXD$cW(U5E<uU>y~)r!cj%Lf2E5G;131vf!z80hbpRXD=J!mxU-HsiZQ=mqC% zOtcg0aaufix&}3GjwcaclIV}Rw1=&}n#Mbpgm&)ukc!E;a$&Z{WZbRHafLLVKwG>4 zjMuEqTsPZLHV_#zlZjQSqE20U$wTzxJ>x2ay`qLt0_ZEJ6IO*F7n0e^G#vaR3@{jQ z3`rq#E$0N9(6wFU+RCh3@3EBk8sOEAm$=pPN-uXDV|ZD$8gp1#L)X^`J>}Q>owips zKi`X&jk7SCr^7{{e>-0B3W-UX8QgLjgE&J~GeXQvXqTKY>)T@<Y|VRxIPqLctxAd7 z?SJ48<xH4Ek|mRxn3i^9#O%yVnkk|~O+%q+*y;^e0Iwz3@{##zVOgHWpY5*ED7B~5 zoSdGVX{DYn8hbA>WslIEfAVDewZ{M4qkXB9T8Q|PEU!(TE~_)G2MtX;SP*b3L~93s zh$rZMzRZ8%jVI+~@rHB5I#xe(^2>e~#A2iR{ewo=LhZXq#wY;T00G#QF<J!h2*TiQ z4Ko9TqxTDex7CbQyw|s>KTYIX#gkXk!y+pHb<4AGx6FRCN$>dNR|xDk%Z2?mYR$cw zH~ZQ&Pr`7xibJ!bF?(?1?PjX^@ty<OTkT5z(0Bow4-*zNhth%FJMRwek63!$Nv$3a z$B>>qG?kj~o1$*6{B)Aw|33h~7eMGtOJE~WX^2IE5#I}Pnr{Aqy<pglK(G@AYv@uS zb5c;oX#fa70E^LBsLqc;s#dqm*H3+N)g>6#5@PIiRd}5{RAByoSw(Ji$9c4Nds>nS z?V?nL091koIcI`1c0zkiqFJ$I3P*(Z8(K9IUc+q%1jQ-3liS#otAe8oSc0mTRRE+z zG&DXdQ$88^b=sG`c29mZoyuFO%M3@Y+O2A*%ZMoS$72URv{`$pb%_?YTP3PRtET+N zzeg3ElL;Di8fzc|VT1|By}4e>$=G*EO1V^7J$UGh_YpqZkZ!hpPYgT4Yz=HTtZY}D zb>mLu8JMil00#i_7_DkJ9hidwVNlRaSRw>Qff0`n4jr0#l5Ts^=emiS;-#IrxHpst zAQ|T&j%Ot{Lc2ZYuBd^KB@&Ag#E~DmV(Dag>m)GKr0K_iK=15~+zF9}dAm<PEY%PR z29_anY(xJU8Qr^+wi8FuKikUUlZlwAczPG6+Lgg@*jTJZ`=G722bzxGe6KUb*9oe` zSxvz%x0#Pe7V20f<9kJIw^na|6i8#nK$Wb+GWNGlo#ji97W=eYjFHUuT?$F{jCDQx zGM=6inSp*({9wptc7Kk$l8&8#A$yAqG#)&#w>zAvEITJ=cd4mK8mKlv7lR58hP>Yc zAcaBN5>HsEwxwxT8OUz{4*9a18NZ{dfIUtJ$w(#oRmC8YsICZN6Gm!wv}V-5t8j8? z42*3{)GRc4qt^H5RZx7eqWDaalXI5?-DrA&6ok}t8>ao}PI)@@@Y0l<EbE)r1*8}h zk~=b8PB4aE^g`ILb5&xv01g217_DkLEry2#p`e(sL<pVBx!UdTA72ctc#&<*)Yg*O zybNYgB8Y@wqfmUdEKRDtF}YNE*qA)Z#tPw>5=PNjHL>7i8YtXv5<{U$tZVS`=s{J$ zdNl-?<57$Jm1;CW0ir(S?><PdzLktkJ>%LVb!|42)_Ja{<@{iKJN+pNQkjS{Oe6;K z;0jZNWi>Q##*}?ybY;udc5JI-YsXf{Hg;^=w#|-h+qOEk(Q(pAcWiZ%FX!I(-1p!4 z?)ziyQDdwzYgRq=%=ye(YmM3!G}^K}AF>>d&41h)a;sueQDjYFvM6oZqj1zXCzhbE z-XKpUf%jGy2{s(Rd{;U5s?y|PDA+ou49(OCmCQokrM)vrff_1zrWCb|mJ51GO1`RN zSf;hpL5<P$InC?dDDGn?;kp>)7_6inu%u1g^luE|G!tpT!-|$RCc+!D5w>L`gK#Xd zIi<W7=Jmu;(R3D9f=G8!;L;R8w*Db+n$%_|`f^2xw4WQ-sUl@eA`&1VA5WN1A&LD0 z)CozZ*0|D`6Tk5f0+EaRkXMVHl5%VPDh?2hsX;)vKtZr;Vt9CQLnZ|yB81sbc`1&* z#mHQ8wyAdmEeoFy5vKA}g8C$Vf(fpArj{$uc`)GYO?&XKyz-WKdw9|6X_@IAgdkiB zn9ScMBV&L=d&X0^-k>i6;AM9;w>~SmdD{gs@i_h>c<cI(-b*&wSMTf`c@{~>+fsKy zfMb~bMyUYpsX-i<b#`K^iPUMfbX|`VBR%#RdQFx{Pg`+>7DJL!atT&owXY7RR!vK( z2)yOfa|}_dd07j7l{cab!NTgYO)f%yeVbWuh*6~#YW!A!@Syaik6kq-zos(l$}E|! z)%mbvSZM`$@h^kis5IZ@S=l%@mH~ovjj7qhi;4yHY9kYhI{NpQHTBCIk5c;?mhx*J z_*6YUy&ZWXf7nX=L7^h}qqL^pi|W}omp@({-t@+|3JO-f-1tGmsnm1!3dd|xSf+UJ zLoo~pN0!!<Ao}Dxo0AFbA~AM!3|;EEDS~5v9boeZyC#B~AS@EHpwU2*gf)))(ujT) z&$<uJ(~PCXbSQO#wH+xq3i>|Lxt=dP@nv)JRP($xeg$<BH|Me7Q3A2^QkiYE&sc>g zaZB1E)Ld6_*9=pKg-AGD;@m`CqumOzf=T(s^%kWJ9zCBUNICq6BNLZidKG;WzxM9F z+%!2*DkpJ~K^3Q;5g0RrgcU|!Tf%bN9`aMdS(QH;qlo2fDU~I?aHS$;@yKi_N7u%F zWj<@;<mrOUFyH?SlS!^2!B_^wQ>e0&70GmdnhNPh7+T^Cc48<L?qztu*u?4DN*He# zdkc`e_p*ebuwk1Sv0^bH`FHY6lVA>yva6`0Xsag0)$a1b5M->v7gJXwhX-?CW%r9r zp2w~2mV4hnKjvK7JKt&w_4M`zqp(-*modtJ4wqv5relRLFG_`<OE!|-+O6_&B+w69 zHZ}K)K1js|QB*e;pif9kISqLl+9L8U2T=q8aR7P3u1PLuhfOsFP0QN48s0PR9tyJ= z_e#>#UHV!dE5-*UEySGn1FzF3Aeh`0y3bKmhb=i=`hBC-5_W;o#r#aQ(bd$saUivv zI6Gg5;LCJ3N{3Ri6%(Qzy;Ytzd;8K_d*woE5lhiDhw5)eFaMf|uhq|XxU5F+kLMR# zB*Y>>8L>VJ92P?|ge+Y6TqPw(3e9BH@72Bp0V$4<<aR~!^jX8jBx&;Ybg`;j9?x=A zH$h9TDZXy=x<r~wboET&Uo=aRZ0AX;Atn>ixR{y}z(4?*K^t=nzw?;{OBbbl<_f<% zY|*DGJ6t$_#}qUGF{Vi`hZF?SSQS1gDXcEdaI`f`0>hx^l_ncaBKIs$*JDm%<h)5f z%G~2%0!@)uUN_Ce+q=|kNY%2~40ZR*BGixLp7-6I7U_<=xX0b`xpBI3VVEHo1TAdc zz@0|a(W$ul3sk$W6j(@Of%yT#D0tHzW>S90wT0cbN#a+YHJB+$_%S0Bu#JxiT<EM1 zqU03PkyH$!=rrV%9O!<L&MNuQ5y?XJ?B27y8?jk5>8Sk;>AhJzM=^;Q8BaaAq4w`+ z%wlVm%wzmn7GKPQc4|+wBEjQamweNx+bb)V<(y|kGkHv~85|N4gZ7NF0FY-Yl~(BD z1-LR$xuNoSIBAgzxRoS8bLvPFl=i)_(y+P<osD~!cgVW_ADPqa2+7RXk~jrPT@+!J z(Wvwh$MFUM8oMC6SDFr!x}E3F-p1T!R|!~=ww$Fu7Nen>ysTbW+kyvWgjPz5M5jYa zm)KPw^kfK@HNBUn0Xbsy7{ik2)!z1F0YG$ETsP2CzX0#0Dw2B9m9k)S`szdK<eaS7 zAgKCYa58k9LXFnko2xYNt3p>1ai}*{m0{a*)k&+a?b}&X>;AuRjnQI53mXflA0{^S z6DX7n-bnGu?JiXXUZ_Pm<A>(U>N>EXTt_P~>3_|6<naDf^vad#2pN(Y@tpB&uDEqJ zUbbQA>m1?!;G>z^H$<U)r?$Oj2Ac$3+QCWYdpq8$hu1GBY6ptdCDYoPdz1{$hLoe= z5ja`oVHs0G;&7tV*|{_Uw&3bVjcOqZi76+0<*ncoSu|`d@)2ha!Z7(nY8@=OuNURl z3n)4r7e$ddHuj457bK?1F|TfM!|DvApa|E|=7}rB4$5v`Np>4Hp8HY#xh)4gglJOw zb{vEZap+tcPO#jaTqW>fKTyjujw^C1zuv-vm;rgD%1{6~mMwc*`e+p(jRQ2`Nr|hW zFu2gEqfi`_3ZdWiUID90g{J69PU~CewU?}J#=2FhjvEbJ>*Og`J?4#T!NKhjvMNX* zFW5B}JhB8)L5BGOm$qK#U2%F_G9%ZD<JxH@*49S>l{)=3VM$^c;j10OK_s}fX}4dB z@I;hDm%LK56WK&1-(^jUcR)<gSIQD<yBV=8%yW}}YP76UQ_1V}2jXv_(~{*WNcHh* z`cP&_{Epph)beM^eswY1Waii_Krv<mE9F-Fo~`)>7-h?y7N?34;DQM_>XU*8G%^B9 z6EF%G;0C#g3RRrhJKRYo&YR4ykw%gpo!Oq|Wm1#eMeudVKq$`d4*hvGu@Q6>H+m<> zJ(|Z%zE?tqNv8_Zv$7@pAQKGKH61$)_Sv&}1mf4lgRNR%>&il{Eu!_3-5eGVTH<jp za-=_$U|IdK(gwO5b~UI*=rM<S8rSx$Dm1lb;IZaiM1B+Nbi2{RR;<<JQ{Vj;WLB(b zA>V}>V2E8#^RyW?UNqV~b*L}u!Wx8Iky7)0ueET@CFDF8^6O|BnAJe2?{1d&Iij-x z9IYbr-fgkhc8pyYqT%wiRO)XSD3yv2QCbWVU)P@Eq}xPuIo;Wv4muP!<)-8?ekH+& zpoE_0c4ArIH@%W40lGd$rk+jfhDyy-^eg+=Z4NkWNlaJwrzA?t`_e|p8&kXGj}dND zi$lM~0IsMp$bt-a4pVJy^*Im+zbV(me>w1wmSiYnSGl#EMu)H*NXM+ATOw~SO`ZoQ z#o<wxBr?}VTPGnejj_O3Q24<rLdp|CtMoM-oevrMkhYY8D+k}H%~k6vfntDpQ*IM4 zdqL*u=Ir;Pe6E*&ZtB{$<?#g)i}<OLoXV5Cs?Ym%-mwmwa{s@IB`Z3TFkvC4VPf|- zoagmN<-$nXmI<Tg*176_kYTJ91(@6-d<$+k1vcg)jJ7bI7vbCNbDpeHBH{<E@{%xz z5V~*;lHf#wT%_U$wxWJg4hb@I<&hl+-$nh=FW})SEpLA;zu%;Y$HQJV3&{lh77`u8 z!Y0!L<EE5#98<*nMlnBbWrD<qU9qf&-OGmTH5=8?U55&&kCFY!$24`v;MnqZ2QdA< zysQ@{N$i!m#Es;$6y0qy#Vry*<&z&zjqPLvo*$`VYUI$Obu@`MaYK@>?9jnXOk*@t zonruUGzckrZH^3=i9Qz5+!xCEw$odlp-wTHu~}a=#i;=*BEMDAnA(r80XhALIUS5K zcZ$gFSK{u!l9(4BR@i`0{G1{NObAkHA5JaD37CB@hBLhl#x_KKgb{~(bQnq9vEi|? z3|5hOyNDH{#DR&lN_tAU3l&YaNf~vviGdN*u8H(vOhNBVl5Pzr&y}!;SN~BLLl<vT z2%g#Pk5H^kd1#OpuR_vaCjqT8s9)O6Y~!Ak;|OL^C~R~55gYA>eW(uDznvO&hOS?z zDsQ)Bs?FZ1oKJy4M5!c#cFVV`Ymv(_lQdc3vI^pOg>aX=Ays2S*6jyj2u4H}`f12| z4<qS*IMU1JC5~(1)gMTHMKZ<ai>#=YCE)8My49!fKeupod2z7_@jTBBAMRTf<vW8V zU>gHQgwQ(itO{1CcB>TpuIB=Iz^*CR06-x`L-4Rd)u?c~%lw=UjbS2V`_fwz3Y_AH z?smXbcr4je=g=&T<82bj^EQTv9@o&m!Effi2bD3U!DOBNQH;}iAi!m{9qm1G-*({q z{pFX3vSr(k3yRaTj-_OH?evPpf@<GmJzFD>rgF(zEUe7L&?-C=6Kdw^_}peh6UY<} z-&T`D>)YEKfV<vf$T(ryVdeTmwuTkm?}PaTmHQK0%iS(iE;LEnBc-jHJ>XABbh$JF zlV{r-PQc_4+jQ5UFDM(=%(9P;<;~DJ6_zQ|kBnvG0}myG0d#kMJ=W`3Qwzl_{!y=G zgVJWn#l5D=UkYw;Ex;+-fWPWp8x}g$NZ~+KMNuY^lS}lq!I){CL2M-v1Du0Q?)_Z< zk<^pY=}Z2VE;$%Q9yQ>Qm)y=VJ9ZBwuR=*8=|vMvn~C(Dj=X}^g##SMhGydh?W{Jx zf7Sftk|mo_WnLi9ICz;3IFDdKb+t$hoW>bl{T7w|&->91w8+`Uz^&X6Q7%}>GvQxS z_4OIHCSDex)f*CVKNW~nHm}NeN^C?=$z@3O!tiE+EUYb5=tkJ%QX)#jt3QiWQX8ud z+V;4w>x=;PmcL4X%yfdzP!Uj|PV0t|^mtSWoGO`w3FQKC=$Yh^H{IDUY>L0TNqi}H z|5f9AkfA{ZV}KFKtX4)F3gMm?M5V-+8Yt_I3xxW1@Kp34Q?TD7T-5DGeWdRMkWR(A z!txYcUC4H~Sny0st?e@@b3^d4=Tr|$M^$D5&;ze@_D`EPBO*<H*<*~)ICM;DBH$ZN zV+B`<>R9s_$mF*gv_C1adS$u3l227xEM2favT9Mr)`ogjs=es8h|TR!6uEy_9_W(p z0RZbpy<+#+p1r=J;K!hpx>60!VKkAg4FpCy0BLDL##YiTdPhR-$K?@{W1kQuM^pGW z|Ex8e=KYd346)YnKohgV|4TD$glQ3B!3E=oMFnL-H%QYBBOs?kF<{`_<sEr#&yG)R z+24YcVj1HQ)<SfYR;v6xcCZ)GAstsuXQ-+p5PnJ*aE&xS1ytvNDJ#WM!sc`t-ALOi zQW#U2$vD!+T0Y1!)6y}!P94&CNP3O)jB@1OcVEDdX||;()wH$b0Pt-IqOweHS)wO_ zP>O@nW$i9<_j}P{Mo(yEE91<eO33^cmy)En-wfo3g-B}3Z4FT(^LW&)@Nduf>VM>0 zu@MD)rt#_}6&XaBA)$a_gR<pxwlh&U983foxLFiC!7Sw!^tnFNAkLHxj#&HznvA;0 z#F(%%O((d1KQY3MX&2JsbC_c5`xV&V3_XrQNVtWT05AwT#I!Drg<p(2%BtPx7#oe{ zT~{@n>b0rXhbk(UiFNj_&QA{KSC{)$@FUSFz}FK8XPl;e1<QJ|=LqtOWSj57$5Api zt;G^t^Tm;--~pd7e-6<gAq)UXdo^Ig6pX-tlR`-i<;AvYN1FyPW{~x<Zszh&&}iie zCUWKeU6JpK-0w-4t3B^CAEMKo11q>hS})-xf_!DYB1@4(aZ!1GbbueJKv@>let6c9 z<GXaj_<~#;^yOfQ#XRP1(fwFF=5sG&$6jJeclF@IpH*}naKZorZd;{GQ;Y(u7y(L} zDAoVhsOF5kQDhN(A;Cem0^m3WMV4y0U5wGWC<V5p&P&}KVFSooQe48ZP+<esO(7rS z7Lzk$FE5;@evALOX2|LLO_rdar1jR%^YI2d?{~z)pEqQQ0R@e$TV=I1j^rV#T5+2z zYBA2pYf(G}Dw-S^hrOm%4|;63a%Jbiy!VQyo<p*G-*6}1uu>0##q}9(@h;*tbdn*c zAR&UIcuy*80mRo1VmA0+zL5s8F^FXUQtx1M5#|1P!5bE*C9VSjT=i}x_OzA5Ol7o6 z`>7NvjmifEfNv9gm3d<EbM9R6cPoGtBtH(Z2fkO-x4uY3tUu{js**Y@F%`QYCN3j6 zj>;M;=0jTXw1d23XA}$K5I~WE!3f!<DP@A>L;VgEmOe{1<KgA=y(3ctQ!oXigaDh^ zMedM)u2vy42kPn<0!JV~P@61jSF_;TR|Wl!s#e}-4C$4o!Oq$#<clz<R12sB&_NyW zKc|+SDk=qlL9_g+?EweF2?MTg56l^*7_Ncv@Y5BnoSylht*}DJNB<5+iuQe(9`rPZ zAtAU)t73C5dnP^t0t^ATW>ZJoy3*g@vV|@_J@m8heG`e~n|QY1&W*7q+mTq7kgw}E zfxp&t%7iNeN(3cDZ{C^70OWgCJuwsp7*i@)sbL=GG{=*q3!k%f<6X51VYr4lk4w05 z;&83CmN1aSb89pm2Ntk^>9{!LMK=+{7z>gf*tfPh3ItMipZU}3vWN}DRM1&qD*P35 z<!3IE2@s^P{F#+uAmE^iL@1|7F4@cIw>z$8k&)$mv`{Fr3|VcmPHC-ia(wxNVKr}` z>DCOE&HO8_X>c3qa%**1&s8vI1qr7EbmOf%UAK1k4B>LkKAW%i#t&;fP>4@9m`El= z6p=&(A(z1zn}tmf(}ZU0!nw*XIQlFUo6H4t;bPjs#UP8&4EkdDhOtbLq=Rs*A?{U+ z%FiW2UECv1W^PGw`QaU!(h|7uLr3mZjB@4EeTL&ZcCw2&S2=_jEOKQ<G>9=~0k}<c zjI8p;50s3UFPPBG(NZZCh}Fo!=ZU^9=KdD9ayM$kkVD06k_c>X<3I-g2BH}M%SF%C z_S+svE1+usXO9u7l)~6>;;>Zk&DerA0Y&6L0hGUV{TjV~jlFU{f#AZE%1jjZ+Rzt| zL^Z-WF*Hlg3S(2V+Xl+z^IWiD#yoo7Z@fw{0^+Bk3(N*iJw6!|Yk1q8X%jlpp)w^f z3_kEw_kIkUCf5I-lald}Kr&`EKtQHk{^_J-h|kN|`Tu;tGUET3IlCCTI5T{<7G!2- zX{Dy7WaxqAKlkY*Wu?ZaWLD)S7y;w6EkGtV`ttgpl}BI@f4ez!181fC?1b{aa^qlV zXKM2=H<ME`ldEzx^q<|*s(pHzlB1KJoof2@KwYi~Vu(GIS(O?MkMg&h@m1KSzuYkX zqZ{P^abxe`Vrg&pulZn14ZsaDA%M)?-e7{xhI(Et_{z1eXt7C2k*N*)6ZHse*ZztY z&~W3){eDLez<&WopNKEuX=3dd7&Zba_StWt`~#vn>S*|WEPFu7lKEKONDOawwlXi{ z{5`bzFUfs+pN@6^acF-ng@uc)&Hr_QkpH&(_X_>htX7r#w!w?SKU8=1($hO4Tn?n= zPSA2gPN8YhY6W_`BnEmoo>lV&-dxgdj-z3zv=UM6o9B9t+?ozgpC2C$Ju<o%kBA>D zqxwapnk6YQv4Id*`S743=98P!=Ri+cgj+wP@*l7pP3~4Gcg6S_>+dv`*lI;q&Iw9c zA_fh__;pX_Z}iVkk3q3?D%acB452#L(Ns6Vxm7}7A%CEoV$f7%FqVYb5UMH`g!zP` z@fjWtaG=p^T4~!sDzyG`A+^IMn_P}!!t!Zm(GCj7Vu`u}_x#02f#f32N67Ys3j(Mh zsAipLq46-J_i|}8jb1l;2vePqs4FsDp=O2W@vqRAf}om)(o(e>Xb|^;7}f9h#{%fA zg$v(b1eMK14XTCbt5pyHTJHFZ3Xp*~4kS~eOSe8cT7#0+?YsB9OYWprX?_xD)~C3w zj;+>3Bcc|X0ff*FYE3Y}##V+R5*e&T6M#bIjx>Z55%B;SyA)v2%>%7`wMbMoEks<b z@NJIouaB3K4pTNt=%Q|IvbP>BvsI*;N{ucPDKZyUMUxlKiodl1Y!|Hr%dtmrM<~6q zIAARqJPIGseCDuyb0l;SP?fN7p^SOw_Mp}-ZT+2w%<B)4D?zEaR;W(=jYY4_^FWBc zLp*>x3w8WHhUnhah(&C`Si{q_{ED6=kSKmVBdXrwD#_0kzd1R`kD`GJ+eiC8o;h9D z+`^u<Dh1C^6T90$R5p!|xL(g97H%;;Hw1<Vn5*w`5zmmzG>0aP|Gs4!DS!JKfM}iG zUq2MwdsU)Lk9Ilnp5W>8yPsgqh$C<M!1?|}gfucu|EB$gj=dE$_(SsS2+v*B5eMre zWgutE+o8JUrCv=d4|LU(kdLwEni}z?Y6>Z(cSd+QKn<!EZL!LC0*yB|bN843t2xNu zyzdn1_}T>q0x|~uU-ACmDdVqZak7y8CNDzR?0DT=*=-q@7_$L3Ik@)fPyi_H3es9! z<J6js=|oa`@$+LaU71`LD1B=Z`He3TcQN+c&M4y-PJvnmvDx6dG#<u5?cXsFiQFKq zHEHmCAliFgc<A*B+S}!AHzeDv-{Ac09L*2i@6UTWVTLSl@Q{J+f(XOnew}P{ZdVp$ zUjq`phP+{u=21VcIoWHi6@ar7ynm4#v*?kY@nSMZ4^7}(QcvxNr?49|;EsSN`jJyB zZP%e=@y&(m1qP3d_M6;tNPlDz!SeHOpL_9^^mZozAEg@j!bAx<B#}5%;+`K+5_JGC z<7t=V9)#ETJ3zpA<PTq6%W0*G24?}EiB|O2y>7YjF&*S+2xk3T@}$TK(CcjNlXoAj zFFdiS5Ut{!wlRX$*wBjW#HaT!TV6F)bbwl`)?a3m_$Lwe>7ql$nK~1et6IN_Ct#<P zb5t872U>-!_O{1ZHPZ-BD#`W7!(z9*7_OGW$0{QYF5@_tR=Fwp57z|Zee*AHo}BY9 z?AyKZU@K^Uz`#C%KC|Z$TB2VRJ4$95A0=jgeK_8{smhcYOkMQJ)oV#u<z{<5PMv+2 zAsQjnCBCj#t|(W)?elo?uEKI(M9<>9?bJCrB#om3x{U5c8s-sKGCvJL^?cAXP0!eN z*s-k6GPhMY1)^#1-xWGdp6IJl7>NJY!%AKEsa#Oa;L}YJ7|{PuN*(z^2toKsElkLN zq894k)cRW{{+(3$KFNiWd#*o_b}NG}rkD>7$d_Zqu*fQu3Un(jZ*pZ8t2`W!`|uT# zjyp1uoHI-Gc)WVfpH6zYJh(qPud`RLE}2o4Ng<lT>6^#rorPqQYtbo38e`hbOb=iq zvY_9-4)>B-f`8)MmA}o~AN6*`>D)$HLE>r}K=)YqvzQWQ23}^n?UMhDWVjP9$$ChL zXXOh1wV8Ng-#?5HHWqyx7y3ockc1q1*;N7C$0%qkY(~)_jbW`O(b&C1hdSJEas$SC zx@1Ueg+#H?!ppItQ=<nHkus5^MA>+`Kz}`%t4IVn6aB{*2y@izpOHvNKzPCLquBzB zA@lPxu*vuen#%>;CcUl^1ViGtk&=hPYFgz`?o&KTi9b82IhYZAE$Ne4*|}Pglx~sU z1mhvRgpL%S9M$;`v9qZS^n7sw5#C(9q*G_cB6^7|q<6z>!^UQps95x-_?PM8OoO}n znsYZ$q?S;p9w6WCSu%acPSjzU)jw9r8J?!2gME<vZlk!(Hkz=%Ijv!xwIV&<VjSJ; zJc6o;`Vi|Bu|F%&0I_|@<ay6dt0$$~6!S=@vzNe?u975ie<S@O(UHqtJ`^KrV7>0I z!fOJj7^Q#i9K-L^x#M8b)Qjs|8h(xV#h)^|E&9!m)hseTVAy5P<DQQZ2Xdu<10ina zj&hS`J%X<R<J_@+xLyH8jOd49><k|uxx*>VqvWu?!%NmVtr(F%;W{~23@PNoQw5Cl zF6%gOw8J${*(qB_I*uq(;6F6fT%Qq_{G=f})IZS>{PVK<KNoDs|F$yz<gJUL-DgE$ z<?N#@XMMng!Z+F{%&9vu$Z%J<5R66}36#*HdsdW2i7TQkY*n%GG}L_A`J(N3Rve!- zaydQf&B~B%%WI&sK%r|O#jVT+H4EaUezZ+5t?t8gJlzFwvd<1xP{MEuIRxmT-V5su zus(g6Cf`a7VF?1cD_tmQz~vWZ6)G;ap+E_Ueb`<z1}~~>n8G1ERV=9eiOOr-K#DMn zjz$I|$4VgCzCsu={aC{9a^9M3ng}D7k?0dmApxQ`(yGU~G@-YIC|B)Cv&>8JWIBOK zrT*$!bNda?Z*cwhS3buF?6vvTe0oZmYziPEZg6i~#UYXV@&$^=?4-EB4>Moo4w2o} z1HKK>Bc#BtC8b@Yz`SooxpqSpiFJMBo(I7L@B61M8Ph4@>LV%WeGH@VX4R(!SB1Bv zY^b7@y^dVOmNdHV%Rm+}E57e);Dy6Ra{F{7jznZ2-^??q<zMDfU*^OXag699C$Lir ze7}%_AV2TCBXA|1+MUn5EV5NWV+?68*gn%|4#?SUc3(8@0xwTx>Zeclm-?>EZ6|Kq z0&F*~7W?J2!x-E7T4OKsg#EpA&x1wB;4i~Co&Cj$SHxfnw-!JCBaim5M?WV%NwEX| zPc(r4Hw|1YZB3m%DG;L~XMezf!Z+Dx<kc8MxpB^30nZiL0E;^sTElmT!L%SrNt(pK zZG{H$atR3l7XDE>CU@i~G~ezvRAa6oInq|S;*MeguvPGoRqRJHi#G4^%u5c7RT#p7 z?HHWLT_0{pbk}!_9``bT1S&}GL(XD50(gg&Eux{*?jncVG#vLFmEGCq3?qU7J{&!A z1>%kLkYX0a61A|9m8}<MY*7;oGY^&VRuuWrZiXcJh=-8FzAA%|1uto;HLMdfCcg*P z<3=(nGlvLe8^3jcDXA}qGXJs(_S7}BlZH7Xk5sKW_qKjo<L(={gl!mNMpzp!ev-fT zIO9IiVqG7Y3a7iEB>^OO;gB~Ap+3?)51|?^L1^o#>KIds*_B>$D+su?!{|J`!^5Z; zX!8(L8%UD5vW+HPX!$oNG+`eJq6Mc*(2a$x;~<WO$+R1XM8@04g^VHYl)dqXUZVS- zqjpeb2#b3Z9cGDRR`T0jHdX6~KkMDYPTp#MU*br~xp~coSGT7MA{l!}5>;9PQN!)h zdUFt!D<^=Y0CFX&Flar>9$E`ftUi-FR=|$40~jW93;YDMj#3J4D6b}6aJM%X-GMcR z&Gt<=ka<7Bs)=o5k&W`Jb|}%i2wuIH6tMgVBAR27T2CWxjl+MI>9UL-mC-gm<0g?< zZ7yd#fR}E5G5NsJ4oA%OS`34`BnsShZH{EDF+o>_PfC+)5UkO(bo~{4ps^>wZp9K! z>!fn-9_mFEI^sulk5^^`&d+O@u?{Nm5@Q*%JX>~W$n2lHRf;@WX2PyNyJ&8#sT=#Q zzQzc*etIvJU&KTZ!ANaB3^nNibssL_tGBZ~d+EnNb9uI|dvlKWqv;G&kIA@2JRb6} zn_97845dB5rsxnWFcKfGwm$w+cmEu!Nqrac%;a9_sxm03uLx>`*rCSyY^Q)^-S3;Q zHLu6p1I7X$;yKmQL}ZMJlM|hW?)-9Zks};paq{?iYNQSo@JDMOI6e1cpjoyracTo) z=}F>YY63n{j?LGcyUV_xQk^<e3r7{>Jajz?Q4BS=bh|Hp9nyLBYPaio=8Cj{3C19P zhCILQf#%<R&ECB4FKXF%N=q@B^Zx%y#&p}Nt8$+a2nY9HM4^$PiMi=#6o$mlS`9HF zgwI|p!?;O0Yj{l>nueR%D9n9vFrjBhR7)^TMZ38edIrb)dPW{E@b*WFYYn@grIspP zHW0s1TG*6Zr9<gtd9-u#@(V7eUICp#X?iTcYr*Z(zCNB3_R8CA=s-coa>@13BP5zP zcb-PCfUFsS=HpSIK)8pWUGL7M(JiKdMpF8kBi5A3n;KDw{vJhsuQpqrE7Ie?rqz8v z2x#Xd)IdW2c>{K&yvTN>lk@&fBfE^QXP>pY7kUR8%juGo4pY{1w(ra08%)zP(%*QP zL#iCEe$Lh&^q=rR`5O;oYjdZ+{;%m16zQ2+S_UQR@hLfaV7=;?481xGXahT2O$W$- zz-FJ!r6T$?#rsF)L;QE=e-~|5&dI8}_E}6AzDRw8_Mm_(a9m~pQMHJi0nMFZCe2~L ztr6rIT$asZ@&`W-43|%hFInsC^*#6T_AuZl{_|xJ)5N^KEf(v9nBH*EQ76e4vwhL_ z??N!b-|*KX1{pDy1YC_Pw&KX?ZqteF$ww0D4It$>s3K;eAMn<x4IL9eF;`GSl7jx| zd^n=}%45clQ%uBIul>-VIrA2V2mMh(GFfk+oUQ4)M81S^w1--{JM7dj1DYo=HbT+Q zD>)2v6gPihj;$>IjlQ7J-8M?0?||&&+!Q~=8I;B?1U^4LjdH3sljAh_1!@AQ^+@Lk zR@wH`4*;qPQ#p&X$EQvZg$y8%b`t1vFKJqX`>}3ek~pbuQlyPq0`;MgtZD{<W>Rzw zmqw#X#lHes21$(PO2`yrxidf7;ytwXv%=S+i6UWjM8YR<Ly~|7nO0&%Kg#CLa6A=J zf915?J=@u#Vvb6c6^i;o%QCx^_7EjyL-;_JK=U%IY@!pR5!M^$I4=-Ato9LGRAB~r z5|MNkd8_Wi470QM3*>urTP(hP%QpAsYB+4q7vIL7)1DA{lny<Nmsi!3K7JR-Tye;q zKgUd30$;1BFgGj<l%8fD312N*W@{(%PvYWPOp9)#R4v(dG;*gA;i<+6^zv@^<58LQ ziMK3DC67WAO%GCUDyp1ziKku$2fFr?hmQ-Y>{`<>wn)mdb8#C|BsnW;GfOSyD&Byt z?|wt&@zw}b@#U(j1+_%L4|^KvF}!!kzsc8?Uezc3S*-c}<8~D3fA!YJ((Yfu{wcYe zObC3NeL-cyP+-T~bdYd#ctO5}_omcQ!Y$m|!E}%qIr-LaJJ91q8Rl)16cYyrWY3}$ zs|(y?DzREPA;(-3HIA}!GpVBcff2Mvz|mBb$of!;MyhZ&;tFpT?(Xg>2V3U~P7!`& zidF}A0g=9>nv~lC5P{^ebvE)uIs6t!eEJdLypSL9putqwU_o=5zQdR(?}ORsYkH6u zCgshdSZ(WVS*PE+!WFuREL%SsU%Nj#Wq`GF5xH)`wex4<kux+;){TH`JE@y(?IQvh zxDPE>{6#Io;j05JnaWw!BG_E4MBmc9mmU+0+j93Ae=mQ^5QZg6Ux6OoLK({;^{-qX z0tab!F1at_@(Ox&hW1WdT&|)p2MKHxP$|gLtY}z8nZ{CQ(E6a6gG73(3jSed>M^>F zWzLTiJ2v`I3=FB%m#retk*1B*V1Op$p+7GDnDwR=d@HVBH;d;Uhg%#(4#>ktR139D zREun%Zs<DT>KPA^dwV8ty~qKZ+LWf!3H@G(wT-b1yQo4q-=(eY@!$>c)*LG5c2QxI z4aqZDu^fOp-w$SFw-ZFLW+$!vx#c-CMNZ7DuSfj9D~8m!O6d6233Y4@`-A;W2}c$} z>ebKev<mTGB>#UupRjVSR#ULw=SShA${XYig0S>ge=#n>D#W5shFciQjh8Al*jpRR zZ5C7QeVvdOes7+$Th=!EcFfm@Bk*-!#rj4N(&6SOPXY$6DsF*_-YNoDyXnSiz}T>O z5((;+aO(HE)gBtMLKOfCb|ZwahZqZaL(BpM#0y@3K=5-nx2#c}a>zph#hir4clnf& z7yt{o{d&qN&y3di7sLtm3MSTGDAZX&>rT+wcxQ_c*(gv=-tF)t&H7Hl(4^-cf4mUd z+dd6?3HN~~N8Fh6zEdvE)lqsF1qtm4Wu%4z*|5GdGlB=vOx6yV6a?ea$85r>WUHf- zBxbRzP@n5gHwk&O>sp<*QsXNGurgUP7{!jDj8h(>DUHJ<nnGFXiFY2c<if>!OMFf= zkDQ1mi`8GKb>2Vpq)5y1XffVBVg5MqcOe~fpR$~UiFd^&Rz%E(ZocL0RkQ&O{c8d) z{G!fo?0R9;Iiq)99@B8zR(-^?WE!3|R~Db&&IJ<f=$~Vnz!0AZI^7K8^bX7<HqUxR zMajgrj%Ck!rHgn^Bv&`SVJJde(yRIi@_f;jeF~NPl{G8xc4(j=pVKX8HsfGQ$&U{6 zJL6`bTmrv56T_HjWc}>ot3>02;xIylB=@Ceg$9_i#~^5jP4!|xQ7M&I8pV-ZQazY# z3Nfb65v(UR;louR9^Mu$ErZSZ$x>+J%DmJdmpLvez{q%?BJip{T+?=f^j<Qfc)c9) zw2I1R<-o?ICDLs+2dxJ3PD+z)x1qJ=fkuV;%Q`|9u8-YyE8>J#VsDCN2AP7WNa=@@ zseGbcDGjKNF^AAQQR3uH6t^SRIsLv#kF!l@jaqfInU!+N&+2YfSFP0!``TX#7%*VB z4;APzM-^78(04iCG^#JRFQW}Kx36ketPfNqj=MA@$g3P>6Obl22Mm$#t+&U2Ou6bl zo<v{P*z@LLvdB}!lGJt?Y!`XIVodI6K4_Y4^qYL({T(AZS4%UepAl0D`(MO}tBa-0 zUy5Cvvh%6fD5H7P`i{t15Vpf7lZ3)Wku>wTHRQ?;M4gq=7W<Sd5d=6zwN+0$RKcLP z#yPD$Y`=2)@-Ck*h!t=)r6+LCB4fr<n{;{1N#xKnQ$N;U76aAcVM$pB1jBa`7<gxI zYksgWlbB|Z>rOSqWMUHpu|Azx%0n-mFt4r!oEPG*AIe=+g~pqG+rx-Xp2}#}9^C_9 zt9%&TblmNE!PbQN^#_lKVi64f$e$W_k!;{F{A{)Jh%Utyp3+~rOuwQ^#J)V%>MhQa z9MaS~U638GJp_I>P@(>MyXUt?Z=fTE0|g_yTU|()s%91)0j<W1ceJX4o$_nyxQ|Y> ztHGl66DO$$vFINos*v-efs>0_8c6hZe?@);oq!w^SPaVDXTd!*=?vt%KizYMT5bwN zQN~ykS-7V*b%~aAQezpsbo*ot?hWKW)xstrd-WKD9I&>kva3?Xa$0l3g_h+0NG5`@ zg55u+Drtf&n$xsF*J}^hW}~G;d9?O^BJvgSVg#$Q8(v@>b2-~U8;D^M5oUj=Z6T4n zPnR&Flu98rUlM3tZPdD2dz22ui6&(Q8+2QIf1B7l|82BMM%T0{3o~e<(qI4<!yEjv zfn9Eths;J|@HnF{PxI(>Lh$u5xdgh4J(6LtymM`Duj7vyQ@M=u;zE`A!EaI<=$SoX zUDyH%q5VrgBE4@8DEfArDEgOs0YcjwZ}LfA)>V4$V13z=r^}4`@+J^~gv3VQ4K2eI zmW`0(J)4#hcYSjPy)aNcEO*NX$EUIq(ymdO*k|U{AJ@?B^Y>1ntLjynS4Tv9^MUZ5 zCAe%B4ox~f?~Lz==C4rpyf&F7M9u&Euuy_=&?54a!JYpo{OJE?u${e&rJ1F%;or4q zOp=iOh9FAl>_c68u1&E?LS=b4F%7D;b`@+~Ki{DV{pmophTHs1JBI4>Ws0q2KZUJ* zm2Xqt&J-^#S){>l4aSzl>KuwEOsEM>BYl7yKc&e^Yq1_ZME3%DoH|p;fg=i`m^WBf z*8~<5MD$l|)lfIbr8Lp8r82F;_o7?6>DTO3fm^ZfXEwdA#hM?24IK$emzc6+kD1u? zUQyn`Odd!>f}Y7S?%U@uZ<a*Nr-&~$ecxBwg~AZg#?cI6l$IPU%QS29wehH>U^H)- zGLF_44@6CV4N=S3TLZWPc{?UVesUxdu))khgf=}f;Ig&Ae{<q%7tQvUGuQOv%!=vN z9a)(041>D*SbBANIkHzguz6-Q3zX5s=|wnk@qBOImZ-N-cf<lmJI~y=%%sRmx~7&{ zu*~)8v?`l^rQa5AjxSbqQQfgPI&-(T+oNFcQhw;jxO1h~^KVDh)^1&{USA3rq8u5i zaIL~WTiu=sUNTWj9=jdlzJS#$h}AE8YhW)+yK(}s$#wn8)#zZ-zz@0|VI*!9zsQ<e zQMTG*JK&jh8EWShG#?eOV#gB3`hG3tqm_hVp4+wH0F(2Jh`z6ZIk@pPPyp8h$shV} zTG%RO7O#AgMCc#I|9|R1XHyp!OFQ#_?M4!Wtb_kz#0%}ucHt{%HVv4iu!V(W3*?ey zgVX_yGlr=cSc>buFVnTmmR=`PI6K{s+zP9ZtR~dJj6_2ss0~~!t7Z+L5+{s_vg4Fd z1vM&~M$#5@V&3o{TQ+>8zMn12Vtk0f90<W^-_5y{g)PSd1_-+2-zu?FNKLfu9l=8K z$|-^lTUQA)`ZKHNaWhCjkASITa`ZllJoK*u(gqC|Q~N<3G_k+g2YPex^)D7)*H4vu zCl+}9J#x+Md@kN|kD`xka%%|}+tz3WyiC~;U&}<)`8hM)4j!JC56VPSd7e;f^}8V) zq2Aux1KLHERy_(eI4qVNiX)NFayG`;2fky4(?D%FQkYxD6nf2_a<=0j@y!q)_PxC4 zJs&B_lh{6?|BZ8b0`Vx_C(fN<|Am13`{k#VbGEv_{U#UMoAx_Kupa1mL}5Gk9a33# zox{G)W>-4^4KvyX1*2JXQrKjHSVAtQrtj5AQYqE;`}&pun#R!R=<_ufZVAOAu3bVw z*p8PTO{lnP3AO4RRj|7g7!mj2lNVSTg}y^z=dmXjqf3a>fTEKx32h)#h-@h)XkoT- zET6vb4A>6nH)Y|MH`dYoW8hxL{@JxFS}<QO?iHaDK<pjb6Xpdic0aR7YQ!^?`a20> zFy9IUe=aT?Dt9SH9<r_ck&&j;;d;aLwBtzp4XZia8~*@fvEX}5pnqlyzRd##!(%ge z7;$CekL+GNiQ&ex8|W_{suqVqRs9N+q`r3|FfUAhzEw1<PZ3L&q+?p4K9PMlq@bNs zeLIMRg-AANA1~~O_!zj<F5yzefY-wc(xys$0WdK)Z{e{Xa>^dsS#I5SyV3^7g$Erd z)XO#d0(-fSs}iGyZ}W-vvZMROS3Rk(tG)T`SM7|LA3?AZY23cEy$?Q<Ay|vdeRE+K z`wm2SM-9qrNNHuavX?O#QLEvjx1IV$PJ>KP6?|??nrwpfVwhFlz|*FwW*smU$;N}t zY9cfeA1dh8_|X>$W~<0rK}^jp3@U=1Ed=^O2@x&Laa0l~&ES-sC*<g|v_oAO+RjL5 zz=bbthwdgeVsK1e2H6z*ZW;IDcV*zW^95N#LJj68lpUOXuv4X+<g>VLs$Jifs0;TL z0dw1y0p4)*TZywe{2fr>*N?V=C5rW$DsgReLa;CE?M0+&j7^22wH~Q97=2}z9~TBZ zW7=?2+1d6=n53(7OVy?XfbVMIIc%9N$y+($7|<fxPE`pWmsj=blYz-7Lp{skLZiE1 zd3O4{HI-7C^DEnZbEQ)pT}fmrjILDqO$UCxKJF3Yhg`ng=K^GioGEA%T=${oD?}Jf zNv?dNZ|s}aZLIH^G@Yp-F_hK(kEAzLE}-=E%X?9u!7I8`6pBdFc&L70LxuHFNSSYx z(}xKSiP@XOa;Y~?9PdIb_MXmg&}3)@WS>{m^wz&r^t&JpVDS$wFMxI@TOy4gj~`7x z9$uW9ChI7OkGtBebf3eYFm&|DGPcr0U+bl+X^^$%un?5#IRab0-OH3N>pXP#zPb1& z`3UrN;J^7#-m6XET_Vrv==wje4K!8&zetUkSJN<W>(&$0TWY<^%`LyA8n-}v3{oIu zZi1^Xamns`wb~P<fB79nC@5-%G$ywgwih_*|A4F1GBxEL9bmm%^0SUmukU*LvR_WQ zAd6W|hA>#cYOOP}E>e=AAzpZtJvJPeszJvIRfjT`@)Iz^WL#oL-WrdSL(QeEQ)FLr z>ZMv%eMq0Ue3D_GnVn$wvZnRe4e2dE=B7#q7qjQPR((P<+aaDSw|2WSn0y?Hogr`R zU8JqKDj@4_>8W~?9c|<M8~8hD@Y_J1v}lKe(p~0<wKj=YQjK?y-lgqs*s5PK*QA;d zD_~=A#b`xIZvsGT*{da85KZ*+t%SyJWz*7CMWx8*D?&~-2s^}+R`EBT`}h5+`;D=C zjw|?v>MOl^NTOa6W}4sg_Jn`@mU!u7kwK5Dl2sOX+*vEI5R9*y=q82JWhv3IW!k&C zx{5F|ebA+JWt+@NAZJ_=F7fj{zmI&KpEr72h}|TK-)cV!Iaow`qKX0h#=by4BDWdz zXR^9V@+{bkyd6EyIb6D@yPB4^Rv#8?ZCJ(s`NtQ@{iO@V>JR8P!(Fubo38`$+M<6C z+Ifid96@b`yn6S&@Ma`ZrW?Y2oXC%yry20r9rx@CyEgUag}s)Rww&!_i&ukdXpgSB zP4i`2(vX*-BR5tdt)Y@Evgw#rAN}0y{!k2o_QGMb8QG}JUI3)XZ@iDLmePlKlZq^v zE<96x-767aI1pjc-_ufmj;|R>`#3S_0E)a#aXdx8~l4Nt@@)Sz*Z7cBp;<*VG+< z-p?nG$uo8QrTB$@G{#7{kDz{K`cq*K^)hpkcYkvE2=cc=AR|X#{DK4lX-ED4efVT! zY4m@6kB0I;W+E1bPA&|#mUf@&a`tBJe!$U4jo_cBZ+P0R1Or<rIj&x5SR+rhzUWPr zBg@0;-N??PSq~$VUJ4o-Vndty{@Ue0;gN8DVKT#Np5s$5_5&^yOtG8>Bf#+TNkO8g zh?6!u`YJE<j~;A;eArNE%!@hdjSqM7yg!+z5VuU6_?{H@+pqGniR*igvdI)KT(Rr* z`LCT%4tErN=E-AAM3UkTLJLKRGE#ozYKJGAZ32X*E<zeYHo9Ug_zV>qwzWf$eJ%G$ z^wLA8G5W~%jwF)&e}0~4)ou5D&~(dvxGdql|9UbT!U}T2g1M5k4?^mDr_zi-5;p3h z{PQz{x7w2-%C3z}sl6bkILA24V{%bWJm4KxPK_Lli9}N<j+__1FQmM{rR#-rxD7Cu zH(-Ml%JAY5eoMweQeLy-JpuF+SQe1djx!ypbL3bSsNsf7+>$-&6RoxYl`4;*P};c! zmq5QtM{gKkPl)A40}aFmUY!_e#1F~NUtrJPbi9-Pmf<KAq$eL6XT-})vRn0$HOZ*n zqz|a5gK_e}2gRAS#piTHvx>s*5O|@P^(1uJHW+E=>MWpR=X1LAEX#ZRn&;jxTJ7ZL zpBx6Ci?;Oq(8c)iGOaGq_j)m!*Y|!=ciDT^@4~oe8$V3Im&qVY`1l%WGenme4xep0 zF!I1~2OUEfl`w%lYi`8PT;2$x;7Hm}XlI}a6qM`g8K<afj(o+-g+{~ohwU+lE0lVV z3d1p!X~;Z$<2L|J5p}0N3m)alNLibh7&sv0zc_YSl682KnwDjnCbM|z`%q^Z3eH*$ zt}7Zi`s3IQ{n1A<9Q(wIsW5-#e>`c;`zCSqt?<j#OYrj@ktNZeqLTr0vLH*~$n<-{ zJ6U#>2h&@4$h4M0mrkB4NH6(I#s(KI)JOYeFv-+BT@Y%_PbLv&x_B7-290X4LMRJR zLU@&_{paBa!>B^37n-)7q=#4Hyb|Z;5l^9Q7F3KTm+iC<10Se|RQ2Ql<|l}BLy~nP zrr#wFOERxy4j^2RyVpmG=9U7v!BV9~y)#^?2~@WnV`q@@ecz2RfBFn97+~b)KF}Db z>M~ZxfKS(p#c4K-a2qCC%Vgq&6}%#dJFiP|Z_Jo%;1eEG`hMV7x(EIVM8(g^?et73 zuxX1%nJ9G^f+E8XCJ%eI;g!Iddi4HA&rv#GIflDPnobGO46;0>wk7JCMbzcytRlm( z#xGY;qZ^0A>4ewOH<tQ}J#eiFLEHx5c$F;qt^{GAr+}Ac`FYdg8mSMSI(-CIm7HZb zi+Ritsp)x}48xve>Fu7#q%r}(2usf0Ob}PRNny4x;easlM>8X@huq&0<UM(6<d%F+ zF#!IW#bwme3nL{S2rKpF@=u-o2MJ1(1=5nejh}>b-OpH^pzLB){e&&~PXjykcYjQU zFEo6=4ku6Z7t{J*2t3I9j2_uDAHU`+59+8GSRtSa7jGiMEDRWjm_RB&Ge&|YUtK3* zjxhpj%u7xSIEBFNX<L7k)1lMTc>GXUVf_T@VaX$Zxp+;+Xt`J^!-QvC5$coMQWzD_ zrf)Om{I$3VqyEgKPau>xoJ`~!=SGSp2R9ka^&G|qswVWhcbe-GDOhy^h8U8RZ?c&5 z2fGi-R-N{EvwmVZe!CNicATjK%6te(@@3+Kr%oFLzUi>`iL;Zk?rJ|+aa6;%fmkQV ze^5}UL58>Qe5i4PVIch(ohDL+e4vB}K05W1{va|)DzYFn#q{FJeN7NerUvzn7IlE4 zEJ?g;C*Kc0Vwb1ZLAyRC9fA$!VHlTFNv!zxdKxnMZFSu%GzqMBEO>-e%CNVaV+Zd! zR?Yx)m0TZ%Qr5$Ch+_y*2Q%YYZ^AySKCH?c{szmBc+)$#Z2VqNZWsB)@shmpQ6ibZ zb|8G+?ZJ;<;_~t8nvQ#OcCQ_vd+I6%QRajdX+ZuZF7qcKj+z$23?6XxwM2q?nL1ut zi+#&1-Yec@1U-YIduTlj<AhmXk4nu<7c=A0SKV(X%@eC_6FCw+omee7&b27TZ3TcK zC7mJ);zgz&I(Jv3gNy+OiR!Pc0g*`HLVnpam^IGuwTu3>a!kjqM646+(aB*F446jC z-Z%R(apfu=2O$7FJ(~|Q=N0H2e?Ctbc`U#6)V~wB^szfRSaqw5cTO}Fx#gtCsLu{I z?A?4ON#x%&WAs)7WX~T-GXXIa77C#DYr%x?-DIx2M803re!o;#iFZS|sH5dmVrh1m zKYuBpH;c9V#XC=*IVO?w?%(@yp<Dhna@)rAk;6+8NqSlA6&87w`-{#)4B-zs^icXY zzt}Isci=N=S=xi5pbu8KyxP(Uy;{F7C`vA@N-p#R3P>CErR4_Aqb)0+j&6?bPkBc- zMNHY1VQ!CF3I}CwYNKRZ-b_6&Rig1cDQ;25CaqRsI^rW0nKLS2)E`&(f|?+)2BwB* zgbMfB<@AC=rpl-T_2a_g$t~4tBJPw7)WlYx#GRG$rdN-^neR9AZ=vrk^9#Q^X{G`i z`=mCYmQ%f(24fPYWCLN~>cc0qQ66rD8)#f|Y{w=iV^lJh14*~+i1|ehnqc5CbR&N~ z(fy7dZms~6l@p3}4g5|yinbIzr%1v6JFcU*d$(NeXbV1id!2{itFPvO_qQ33>%9Xw zE0g7RPfe1@QU-F(hv*3l@gnbiEXI<nJJchW#a8mkr#A@<ycCS*2%s_FL$=P^Ats$m zg-|TO3h6~uDou+K7OzQtXix!shzPWXW~3Fg`p^S)3V35%k|c*{1wTllq0rJQ>xa|) zTJ|zfqGq_&*0vCJVH+>I5nZ0bShr(qS10v;Xha;{1!;&it=|(h>jo_HzW;4RwcNos z#nG009TYXuXw(u3#U?ptgTx#~`IJ)MD)r;?tEo{~3K%~LE3bqhTQ9z@4hc`mkOzid z99qeI&9g7coF8^hZjd3J|1LFe!&j6&YQmiRh$X?H+b5SLG9V;k(QU$?WG+T7bZ!Pw zQwCg9#X{{?0LVn{PYJG+D>wyk(gctpkgA>GKS*+a2+a=TOu{Q0ES|zDXk7?L7H3XZ z>%PKv2vhA<Ah;yTn<Fb{`+Kx@5ep5R+%%T4T`fl6<^uZ<o{Gy5REE-Ha{5_1+eyt- zEs@HNAvIQT0{Bc!A|Wj=_t){!FyuzmO@v>3iOo#n#LLQpam`rw-4f}Bs>;8Zt+T-_ zW4V2^IkIt9$%_5yOaAc)Q9Z=r6&^^xdE1Z=%?NIbrFp~LZyf6WhxaPk2lr`Uvj0@| zoqO(am2pVtR1>OM>z*I!LAggWuxDz#Rbw}%+e9nGm=7?xDD(NlrIxfmuEb3iFUZoy z&cG7noM+wID(<*0Vi0>M166z+#;bpz&(Vjx)(g#Xye~!uWrRT;2Ix0GXevL8w1_LD ztv=Ms-Zh7sr}w?8q^W6S!32^Mi<BhtAu6DQapT^v5r=UPcDjOME51UqVnB4Kk%d5A zCsTo59vff}`)*Hy{yzXTK+C`A$6z>u1&Rk*g(Ug%I>>rB%t;!6e$k`)3(7d9Fql~L zt>UFlV50RWFgQ4@daUp8>ILzD0kDUHOMSm(Ep~`V$u#4vIX)qQSnc+6Ntv=YAVb({ zVwS_^N0c2=K*JR-zPo4N=X_0au?=z{^$$d6xn#hPduPYgoBIO5&dgXQl-@V*D8jQ@ zK1a@y3KEw|3j~#1$%3<jXCx%r2C`w~VNDi-q{jTAg>}ii-5Q4Xd+1p<!a{2J)_T{; zN!o!OMf?uzNNRVCF|V`QkPhsWx=IIjoW|2JR=&1O3Wts{{h16-ZBdmNO{8N@f*q+Y zbYRCQ03F!TBE8MrnOB=|iyvGIMpD|)e+F@>|HYB|Ggww*BwCdijf4rh=xUWqJIg8- zRXZdqGZ<p@xQ7%)6I#ktwBHAKCc?!E=dVRT!5op9n9u0kw^tB7rn_A^(rpMpT<gIW zT-@}Atbz;IA>HXP*C9nen4wr1T{Wjd2nmoOQrb}s>VVC}9F_Zdwn>s7keLn5TP%TP zb0aX<#A=Z=C3q=Zdf73UPcqs3eG5=7^G9>%`6I)VXJHpJJU2jPbNBQnVEPleU5N;~ zor)Mb)|gFA#v}s(`qVOlS*)Ff4&jitR*-AVpurFT`{i$crNA+rjbu6;Y>p8U-EP2U zn>nJg#AY7Il5V~qM~%UvY<g{D1<4h~jz8C6tnEc^#0LT-L5C@BR2r_;AVrFi`L)SG zqWK*GpuRu}h@E|@hNIE7D_DAa8s&)g9H2am>5R-1j1ZC^3jZXKpQy1&3P>FehyC8V z-9UeYZzNwu9Kdo{iSOa#C>g=i<a9rWC(pS#DFy*Cq;hJSZBRKc&9<kUlxCX~X2=Z? zwLK4DQH~xHlcJ(rVhcGw35pViP%$Ma;Da0t(}e5bs2}75CL?l$3bjvo(ht~xgJB9F zDQi26dPMsgL|1A*v5!=Uq9E%Ra%IOz)fFY-sZ;>dVNmolkfg(4G$;lckdj#(MLn$k z(|OHFrA`Dx0Mq!7Z#YJgY+{t8!=e|H@i30yzn&O{-i+4O%~X5lH766Z9LOeO-9)CF z$d${3jL%W5;J6A&$rmtWk{6(O;O9|WrtVYaF@%_LMekhwXY)4K3{7=K@TeSdu^n-C z@L9^Tk`VEL!+4OxSoSYLGAs$G<gMK<l45E+$SYA)MrD;Kxw7^ugQJ0L;aT7QW7gQU znb-V2N*b#+;IcWiYz{%>DvVB|lhbKwr63I}MMAVG17d`m`EfHpHu)){&HPO(NMcMS zYLQ?lJc&mqJ<<=yr{`xq+z;c6=(I;6N5)QKj3n4tNGQxv7{!-knG(mBD&_K2ma!v1 z5mS-WjD>l{?WH>RB>f;qOpik*$7hC^r*-imx;zb|lXI94k(7lp`EwCoT#O+{{3?v1 zi;L5<vdtXE!!bzC!}E*t9`DCz!#F;JIm(+^b3bctvt}r3X3hMpnaxU29G~^_L3{== zI*p>9n&Ob6k^IgL8>-IAg*UeTJCFnc71x^DEK!pqnh&LfnCXEfsZi*F6-SYjnIeQT z=P``rJT2giLk{_Tf>C&SRZNRs5K9JG^s_<H%OF9cUNMm3nb{7nI9-mfQsojzQQnV- z<K7@h2eITowA-cqKBQN1w@U{D$WeTC)}vF>KkEf}KtPWs@ztnDr#Km1ja7<{4@SfB zfP&sxLLi%^$_CWqZkAVEc03wr*2T(}^RnfptXy*W)HEXrcn^&r>!J7x@hMM611=c@ z?=!h<$Y!&l3c;D4_=Xku-dSs}k9e@E_R+1EnAH>Syu_lO_)udOXOZO<vSHLU%sL(2 zWSr*#0iT^gj>w=A2XjS0Dz!~4W#2N?<8rz3!je$}H7sS^q`0TrarJS53vv`CX5vy< zz<fSYk+F@;Aa#)=8<|523lljmBQr=%<cW<eVD2JM%Zjw4pCionW4j!qU^HN$$00#X z{vXQj#&XaNFeHem<zR?L^-eD9{7~uRhiXr~uk>*(@xIc>wZv}^taAtFFHBL^FKnlz za$*J95T&pfqEZgf-F_y!7NdAjK#I<Kd_Z7yjDomJq^?g<JfL#1&iYhNM!86W$CTXQ zO(qi61!sxva)jX$F?fx#$#qWf2iNV0!6m}=gi(^C%p@>BVQdm4DC{Sk7*JU~;nY+v z6PPi|OSQR|OQpHDRR6ENo_gcan+D%j>HVdb$m)r2E8SR2d|m0rTH=qblCm9)rW5nB z6Eo%K<_}SV;(@2XF*yq}(9d)SdMUh2q1BYUOi=_PiZodL_m`CKD+Kzn+LEs;1ga(e zT$u#5#2+dIswMvI;|NqzWgL!9qO%_B59082d_L;&e%>2|Czls;5oNtWczJel*^k4E z^V5qS?}yPzEXM{#QieJ2u|Dq&!clb6mqN{XFNa#PipKFcx|k|Sr{~sf0^^|+dj>K( zAxOzSJz}J*_A<Cq2AeY2NLcM<Xr&A_WvDO4dulfUFqY$>Ee)$Q+L}gH+LL49o9DF~ zx8^$0ifhp-FGVYcSW^gMz7WK$5cIE+!nA0`J<&>PMpm>^Vpc=6`mQ2ceN!E<U$ir3 zqkI^}!;<Dg$_@cWN{Ss`M&nSDM57pBIiP_-6eK2FDRj%`0@aAI^B-2@O3ew`SjpB6 z9j*`=>Ry-<(;dAaAD%{0pAAeELsfBNQcJ?=T(TBwz+GM;Iy8MarM5RE?Xux0ifRCD za@oN;n}paP?tj00V3|RW1!kilhic6lOD%Rd8mg4<-@@ohS!|pttKy4aauIOF5oG@| zNTI)E|LXPc--0iy{rm3a_)(P0^|&|cS!@X6`g_5PfJ%H#xS&jiXAF`GDqnf1d=b2> zqVi`i@z;9dU%kZtnF$Z(KPznfuhn9|RM>be@uvzKuO<GyvIy1^|I16<)D!>HOH56o z=ggchuScsQODNP|cL~#9%6D0QDNA;yKCNd$p+XPaU$r0eD8tv<i+PkSR>=acifoiG zualMfQl5zV>;5`ft1kugR()EacW_nQsbUZ6OJcRvU-#F^2lb_jy;q;M*gag`U#nu@ zsxMjWjrqDuzEoeT*jx2!i@jDBdR6X6{V5B6Z$Iynug&NEb@H?Rv_*fg9vZ6jUtLH7 z_@@`TOMWRs_t(i!E~N1Jy9-M4{g(?#vi>K0*#4@(|4n_#9N*}##VYv@W>}N|3-u-Q z{i?oX>VLy*u~H@8sV|xDEA=Jw{aL$4{||b^8C?+NDK{IPL~wL+q4zs56ZDr2QM)V2 zY;+pI(fAaOVwv>I1}C$q+#8V*w>YPaB(r#Qt`p+X9O7R$xdm)9UlY1iai>uIjiNcc zro}G`1DR=b0prWFxpAVh9^Tg(W{VX`adyjDYO+d<A_-IBAL*lRI(SEUMnp1;#~1Kq z3`ZjgG3WOznZ;+P@MHu}Mss+*$+PV}=Mvy(1mlYn7>`fqaDh`IG}Oye7@uCi_$-=3 zbuv3Ao5E|TislQRVMVAof^l>T$1<AdIMbNQ%ojR}-DLcp<QlkIMNTf^Xnd{{3z~f} zjgvhgiL=P*ZNZtuFoL59Dnz!JRk|R>`G=AU@%U0l*?jT%vW#5vEF~<Ljn)l5fpKh- za=euUx`gJ>MiZjpM5;4PTwB%;EBt{<z?U$-7{fR^*YVZ^ZzfUkFytA%BL@D(smu>g zOc9=Awlt$6K5-TEe6gYu_tP<y!!kP2@i|E?bd$4CgC&`b#$y<tMlc?YOaj5C%J^gq z<BJOzpNvhC>_<(>^AS9YOH5UYCeX<_JimnJ)dbQ=5S#p$4X1_bl~HsCN0CW!qx0lK z4q8QiLe^`_Z12l)ajs*F4_n){@nvlKo8FqficX>VGqI!*%hRPDaAOJgM8mkDIl0cM zoMiF&1stEi@yQ(CWOCTLc`wJ8WDC(8-te3h!Vpdln(?JBv01DNigj)?1(%qz;+p5& z3|sv-hszZ&gas}~xaBu;P@4K;HL1K&I*R4|JB8!X9GX^3CZYf4upFJE3sq8vjpybp zJ|C-DB8h2e<Ck4=Mz$%r_n4Gy>WYi9FBBo=?4>NFn5l6#icaC>2wskK?2;$5^HVjh zWxhL}Z@v9v3DL|8Rg3C`Xbv-cM_5X7IYM>x=+uk8&Nju$G6UHMr!wuH*`Yg<{Wwy` zy2&kPixs`OQN!JKn(TbFuWp!)Bt?8CD>CtxL!Cq=MRbDV8zWVN;V>%Rb&4ggsz?6C z7N+i?Q5-|_=i<$TJAtFIoNy;)LTdr911?4|z8sr)H>+jJnVHo(#ZBw+2+AQHpIfZl z9E#PNab_s3lFE4<$C6E+!T5AsO(gA!f{@J8_Drr?aO99FDP%^$NHzGDSiT+Uput%8 z7t~lW!VGEkaG5&?W`B;|;+%7)2ejgOw<M*T+sbMjjTBf#2%YS$m2!OONXJtz&fvwV z?gX8(-sI~{LOMBzaXf;f_|hho<d(f~ehK4v?9xg$8js{MpnBb<u5-$kZr;k4#-}GX z)nl9I68%ff<8`9uoSN5PUc!-N(6UyVvT~%4B*`VZGJ%OjPVlV}IrQ9+@rBstyzr!s z(MZyRFBZ6<%o9c~;yGma4*!$;Tv3V(=VO(!HLI?iK0He^yil3OTELOrr&hU=_1Ks+ z$Jerx&S88qf>Q9Pta)c@kmxAQbxu#=*`<!u9i~{L>Xwr^T;q)RY;$}8M`|WSCe2L2 z(-9n<#xOn|>3EOe@%bs#<t}uZNAHoG0P#pKOl!QxTYSHwYb%S%&KS?(n&8E1y}7xu z++0%dRL18U%{Sxm7@o<T<pjT!{Vb!hjqE7dt7me>i05$4?^7o(oy!?^qG{?zrW*c= z_&K>Iiv@Nm(Fm$`j_1(PPtBB^7h5Y0>eXLM06E`cGo#Nm<5z>Cz-gKhTVQ-CJ3-Ea zk`);SDtn>8EVaN#CnqpIJAqQ3EvL)LnOZw9&Q)ZwB3WkH{HdmVK?!40SUQW~#Ry8y zU(oDME)|ki=5G$0Y)uX#fAU3V@X}263Zologe4cQ@Hju7mHf*rO^u1GMB6#^IN`Zk z1oeU`)G89IkY4fx!I@pERhNksEkvdy=QAzd#AkCT_$?M(SAKa3&*M4t2I<*}9tF|G z99l_Atto01y_m!M6~V$xcr{Ni=ddEtm^Dqs6}S9@uaHP$*O_-@qudlavFv&e|HD63 z`<Elij{XNUwwnKE_Ln)Bqrd12Y)%g!u{{BhmA)#ap@7^UrDZi-dkQ|X8Si&~!1tYb z#e2*Ya#8MVcf;96AMt*|*`_?H2Oyn^c|gE^A8>smKyL1s8R?s5Lh?Ws0S7Qc`7EBp z0_C&Oe8Ohg9LayX-Qyn0k69rj__Ij=CUni61qSKXQ^43BC`AZiyX}e{l^KdA>=m{? zS4?@@v5F&=4Eqj|0S9}%_3HJZauix{c2}Us{eF^qsONkm$iI~v71+b{1ulUGsnQ1! z86R%jPA{a~{H%Zbv#yVKm4g$iv^qszaWmF+T9;a#56>qAu^FDr9yh*N9s>5>Dzb+& z?eeYNn)T^2a}=v%3^1K}c*FCr@M0DCxOv!1n9T`hJc3=XN|KgmUH87T7u&<fljLMS zhi6T8;2G!sFwy*BqWQx_^M{G%4-?HFCYnD?G=G?A{xH$}VWRoNMDvG<<_{CiOHDM| z=yHD8=rXzh0howjbOw~-7>q{t<J5k{_G4^6PVC2}`54=zvCTZTdBzst*a93!w)nY? zv9*s~%!U21Rh-yTC$_E=Ti1!L;>1>ZV(U7wkYgJYyBJ$nZ0m|`T_anUO|c2FO^9vX zv8_9{XvG={d)7%^&s{3DbPpfnD3RkXPU0BGqePDDaT3dEp2R0GK22iDU=um$&Xf2Y z#utg?RF_FCmzzY&t8p@l;b@eMMsPGvMv|Q;N+L?+`f`?x&fw@gk!s*YBA1WLWONC~ zQ8JF;I8Mef9FLOm2#&|ecnrrUi4?F;lkq7WpC#inI6hCt=Wu+Hj4$B$G8tdOlPEcf z;7OdE#PDR4NF8;YoQ&bgNpf-mPfnAQQ+RTgoSean<N{tMm-{)qXpXzirXcEyw}t3< zmkRop1`&RNbI-uw-Fk>ab&*)-8s{Cz$i2SR9PG_Fzx>qtHrLk~d8SI0r>)jF`owC# z<eTM+ZN$?RrzTfx)h!o=zo_bOD0`;8QqXIyvgHc$7ghN^&v5=aC-~`l*EU;g<t;Zf zzNqpaaQfVs%4L?;N?T4NzMxWV%zIpMxiUW9@{}Z<g0f{sI(w*YbSRR?hu06JNM?@` zg+$R@;;`lgm0*(2H5Y>4b|6iY&cgsd&|(mG_H(#>rd&pDgf6u$OYNcHJQH+XB##T6 zW!HG|p-3JD71i4%jKRFKhZ(-E-R)x1f=*wA58udSa|dd;H6hU1@AvzO2#wQz5f%$9 z1j!MBLSG2Ovy9|rd^J`!28!^#Nqn-;420HRYuRadaj%JRMY1)?3%?oHIInf5BG19z zTu8}<=i3gnU*DUnOqV1HFW@!K{fJAr%xNkoW|2Jdo121&|8Nn<(f&}c@8v3AC85Mr zgkNHT3nJdQgpfQ4!qVU|#R7kokz2yVj}nv!i4GOv4`d;*9HfvkDk#qAuin^DRBVG> zTDHq#=86XON`*b794?9YmIxdGh2(Lxhf5;9!1)`#VWRzt6Lpo6wP1%*f)Dhmb`i>k zsDB0VA9x^;Y5)w`oJ%4M)~b36CQM?`?b-~qFzJ7z1-;HlKtZ?L@8i9?R(B6K>$L5j z5p9#77`(98K8aQhB^+ufhW0X2-G7FGg>O>)J4UeA7)cGTuU6Hyz+8vk%MtiB&)=p2 z4<BAX(Bkcv0A?+TTbo#*EL5~F$oKStWC4IFVul)gEo(2zagn=mv5_?06oTKXO|6Bl z!w^r(lHtz}sz#JU5&pc@-<kY2J@uBQ<N>je%3m3;J`h&hRx5Ke?It66fE747*)sI_ zkT5x<78|J&e1Y@72N+r)D*(3%offq$Kb2X4VP?!9Ix4D|;W;#@DIS(AbOOA_1!;jQ zNfy|ev6S>uv8v_yZy6V?0F+F2sdmiNsrO_P)?%iOn55hvdaa4|UH+x!LcyY*8Df~$ z;{d$oc}nv4ALx2bQdy@Tp4P%iS`C}h4&O2~t%RPzv&^V*EW;K*MI={)3Qa4am(-v# zdNrspkSuXc@3>I+)6_cesVjWEDXcE4sm>o-&L57{u~p{gN+Iy#14+vpOmc+vV1pUT zYrLvJ`YM_rn~AxKo{_nnfzd>mbE^uk4a#Qe94=5^XJM(@*j;EYwy=01Bqvtd?dDC6 zmI4iPW$WI!iYL5}qN`%+4(zO81QK^@M~3!x7g5bm#WKF;x$2vMgG!>uQxtz!leu|C z6MQkzA4;O*&|5G9Fd?X1XjS8FcgWRfTEX>4y7&-?ehdaJ(I8==n#e;I3cC1E*u8Jv zlcZNdZZ79ALjf5)okw5gln=QcHGUn($c_}BE!jI^9`&wzwaD;rfl1Lr_Hm@bL#ZNf zzy&G>2UE>*`<U8=UM|iYN(9WjbTW+&=PvwyjTe+HlMLQ$vdnVAq>$o{neXz`W?Ss5 z(^F?@k;shj;0=qKJYmO3DJpnP`*B6}{YcaH=!Dd#@l=G>CW_Fuz{)I&A+-%_by1PM zx<*{#NxzSQ-PmsvM=*fIh$Cg5#{9)fBBAaCP?d6jPwL|CoxA4+GDN*8#&yV}B`c>` zt`lwh0wU!I-kkGnlV$2<Eb8!m!*8#7`QXj~)sm(-bVF!3N+QS`RL}ajO84Q&i*bXi zk6mxHW$==Fxek~VmAee~@+uL3`kj^r!(eemG}7Ew%)ztkMg%hy!2(4Sa#c(UyBMTZ zHenZ&SuuwjmsA^Cg{p0%N7tsYOyEO<tuTwl!nP$X(T}bc)2xpcyIqvz`q!-v(G{Pz ztPokBOAgzJ&-=Btqp`5SG{^S`W|<k=Vz-O!p!TJ2Gn7l&R8p9r2x7$Dby8Pk((jwD zw(Ina%qMbuBZM-~Q7YT*^wU2X*zNd?%tQ5tmD0Hb211Ex0QP%W5b<ZJD83il?2yjT z+LJXQc`n;%<YUOHf;UH2G@kIf0Ek$q6xA<kqGo&aQ&JXgEdeQ1WmF?oOwhmq0LXoz z&*9{Wlg+4?;Nl6Et$28XW{HDh22~uiz}bv?F%DYvq}4jqJ@2>tj{F}S0rnEQ=ajeB zky6)38Zl4Pqppuom^by2`bfC041yQx6u6>OsCs;zqTbWjl}>)4R)H&8MOlaG+C6}t zMQFuy`YUGwOF8GGY(obveV&!4Zq54_S(WzCj+5lk4V2`usv&9=_Aj#_dMjtA<1Q{W z4EHMPcGb&O#$Y(b$O|Q;D$B~;Dp^f{SG82-=V{|+WxhF3CY!qT(sM5L=UZjEX<)lu zi8$_elB3exx!*U;ZPj7WFvU5u+y4h9o;+-rcq%MpQ?uSEbI!9|<X>pwX<A$U?%Qy- zhYdV%^)V)%&BvK|R)j8BqL%5;DzeSU)3C@)8!=BYp@u~WV%RYJ)QvnfBhIuIP8LrX zc`DYKY5G!zyr~&^7Ke>I73<72eJMNM)QmifhLK0gT)xM-{X7z$XMHgXHhlp;JDKl2 zb@FFDOcvt7SR%ro?<l!flD_Wn;YbPk+W}RUhi#v#Yn<hv83g7RhYxZZRu+!oXi^Dx zy8-K?4DtcWVBSZW()Y-cvhT521u}F)vrGvKsJWz)un;-_KwP><b)q&*^qN<xQ%$u3 z&1M=;$mh_0vN@dP=0Bg$VTxvMr^zff9l_Tf*ijFBccgle>dElkjawq^K#IU*5F>;( z-EOc!k!*|<e}3d4UazxlK%fXBP+q&bK=I_{YB5>#`#@t~$+`ewqR9~eSfipPMDVY( z?>+pR+V>t_X5ahM|D6WD?H>lde-{IvUe!DcpNV+F#Ak9S8=v`p(#U7>v|IV06wj*T zgLsPlwr1wT?Pk9A=mbAu<}+9+JD>i3%E0#NY~|n9HdJRZ{}<SX4%_ZN+5o!!KW6~_ zvk@+ywSd};hfSb|bNK1c8bSBKx=pm4$oh?L6WY1z_jiPeKFJX#`du7hK2DW{^r>um z>KM(nqIEvuWusnc4s+{nQ+EK-H2*{&kncHV;%SG62FIhS8P*Siz0C39u-k*W{Y+P= zUt55=o`R-AGa<bRoR=)NXi0RlTk%O>0p@iD*a%H@4p)dDQij)xMmLD-epAyz5f;No zqZ}t0G^%k@z=~p=+(4}mClqScH+g(W*fjH*%$H<AZ*dlcry$9i+^6yC?P9t}-r;wU z!W+nI97*cU)1oH1B}EhJLKX)w$0^+u37bYq8tTB*ek6)uKdA3u0pN<7K$3>;d+L2Z zt>3w9kiu0NGN!htJdNsBR_$-ZA%-h`0(yzCwU95v;safyRQ*i#Poi!4%kTkMyZ$oV zN}a<g7OtT!K5$1O%y+w|%&uyT7^)rI6R0dxlc!r;0il~qAqM6eblST9<GMXrO4!Dp zoLA>UR?;goXro-)yG^fFLQnN8^D{#3mdFD%@-l-y^~M*|bCJ)Vw5nHxv1e%5K5DRB z>7K+<Q<)x+vPg}}M(;9&o<oL6)pAeDy&FSmW+$5cNU%o;3cNMC#h?G<*J$<XpIxOV zIJADo=n*q|s~>MQpX3Mq$kuTLO@wA^$MGKGVoes}2bn*KVf!MVktJd28?(~3$o;eV zgoNu&u?jwawaJba87>Oc`MfVen)W{*=<=Pb&+W|yn*3@JavHaky0w}lg<5KrD|c@M ziYELOokeq_QE64G-{-(pozbgT#Tv7tLK#{*r5$FVo`Om~?<)W``^=2b`=58NUJYg0 ztIq*sGd}Nj4Okff&;&ZKh8ex;cuop7dXrssWVU~D%7RV@SgIwDx>3pFk}#5ELB7%9 zmW5fb!A>!%*~&{=nW(ADa*NmHVSj(+t!oSsP)x&(`)IC~Vl~>?92O|+b~AsZr|2-3 zP_BfH*@p9l)Lk1E)J9Aq*Y&!ojKPNS6u^}P=NULFAq~c}s3{P>9rMN&*VfBQ$Sbam zlx1;kq_nEGAP*v;(AoKt1@x?X$qG6<UUCChG))OJD^zaj3wAq4>riKbT8?1*JxFHr z{T_1mCZm-}Rz72;Zww}(<^JX3WxZ7(MM2G!wcE|+z&*KToLN}YUWEa4+`8K>Ik!O+ z9oJ*PBsXHA+B08l1m6g6@9H$tkNZhRWbU}_4Z>5np!s5RdqZ-<79=U}zx~ZJy<3Xi zu7Q=xAwy~t2!Es$PeNL#dq@HbrU6CNy!Zv6<Rg8=KtlV7L8@eUDR>aMP-L8upybH< z>I^Mi$}I4)L90kfOTG%=*m*Tt*6@jH!Rve>$LNRmT4f_4<9w||B+8aeU#RjOw+Q-v zP|tff5l6mf+^(Tpj-eBOUgrcW{oXJZr8rcWOD30EsTB`cDAmJ3b^aD=>sV@=0~QLt zt|h1CrREtd0NkL*ha`gAB-+D8MJZC+L#?Bf#!wl+a<RI3<wmh?-V*W9j{VPqGI6r( zBNyrg%PVBQr-L|Iz8ct2oJ4x5T%%?G2Hr{>-PO=bsSdb{p_gC}uPf>6O8Oe?;T?*u z(6ZZIU!iEXTfQoB=yu)bE3}3WX!#0-r)6sS{R*vhQ9pT9NrzimeBe?CwW2P;EAqkA zIPj~i7mWQn<7%Dn(MnxuelKaTm2`CddmBFV<iA(ZG)~?FcrC-%E-cCPp;llk3v9~* zTUo${!5)4qYq^`orRCjLa#gG3s;uOpnqSv(RjcF5)$s;BYLE2rv=@9EJ`C=|2e*T% z<F<qQa0~Vme=rZ<X!AHMhHuRFml@p>NM8a`>~|}}+r9)K!}~q0_+983fFC>$nP8!~ zBY-sI8({_g@-4C;9aLa|;Rr@DH)X7udo`_qk)79DC9y7{CFgI{VugZA#z6%h7%DZx zFrF_xGkBozRGt!lN1O1WSApWvenOjYTT5Gnf(tCwC})@aQAVhZEWhb>#C)`STI{zx zHNbZ78&~Lop8x@k8Aj9nx7uRb{S!3X&8>w*v0W(&TDDuDEOd$lOr=;MnQcGUyjS+| zMn($0?&pT#%E$%E9P5KCKX6m`Rahe0?G|B0N0~;6F!IGT^7rfC_)Isr(d#vygI<tT z8S>EMw*amyb*QCJ!S%WV-X6%~4~^?5<lxeHB;aG!P-I;YjJXJV=AyLE?J$MgWaC0V z!9vImQEog7NLZ>rS2e+D2|fIhTj;eYSsUT#I=C@@5*Tu$H(7rQsgSBQ=B{)^RBL-( z!wv+1&5qjb0)3;~U0CAlb$3#U_xxc@&kf?asWr4sgm>-}`K9}J)gA`^-tm)Gg-<ah z2z}t~DZ>!X7yjOb;t{@#dZ(UG#?I-z9P$)Zz1|^foQ<PxlU^95ZARx%D-{ClcErq- z-7a8#^WMdEp`J(pka-wZCeIVz`KE^y7j$S{McwYPt#s;%FJeeQqE7%;7mRi}Qv220 zw|MoukSeNHO<*n+{HuJD_xpe#G0W}vn0nt8%}u{tCeu_uO}%d^GvCl<&B`OSuDY+N zRGG*Xosxt~arBB#apJk?mqwdUI}C5Xk4WY6LF|}GX>$`{vEujNP(~nepM}1Z5x4Kn zNR<;ky1dD81dBCh|AE&<a$K|Ky!5c^%XVn$J2Leh429Wqib_Gm0bNB=;R#*l$t@1| zW}%$Pnbvg8bd#%^sTro`TPnzKgYxQZR~regK6R*hr9pZ75?Q$~aZ}N#)#^rq8@SPa zGs|u_;HdB|EAIK`n@|u|P|mtt=c#_9{c3D{PzjeM04&0vRfnRL{Pfozl$$xG9HnTM z=7gbChK#eG8!0!T{hXGc$;N#`Q(MAqy;Jv<w2kBnwo<CH*w!sT4R_{gBPO}2$Lw~^ zLzF&SsQ3|2D<KK23@JdKYUmr4Dh|)nO2`2zvGJ@=<{Pi|YUE0qh-p2dgk~Z<fF{Pk z{1O*s<78m!2OJz3C}GHuSN=OCVpO2$sA)5*0#Qd*;p#X8{XaQn)h4@`X(Psgb}=Pn z7o|*X30JOUQ~i^8lSW1BpJbtaU?IqQO_XzV!b2}Kt%MGYSuY1%*bsn=%{5)TWrE~u zo+;7hTggv(*q$&wlyIQd_RMf`AOUFp{Ucu|D=B;H;1^2#PF6+^*OC82a-OWhy1Q3l zWhY>k<J8>}d_^byJ_UJA!$_6X0fl2_vI8t1DVdio_67Ns%Gsb;zGBoxaIh{3yRu)W z3e*p{G>xJ3$paI5SE^xKZV||M#h=<e_}k!16g4>$)AiI3>6oqcLmO*tWuO%DlE%Re z^`2%U7C`Dz%I8a;MkSAVeH4W}{-~(qVPacZ$?^iKc&J#4lu?!%WlRet>hkBuQ^M>5 zd^9EWa#K=5V^V3E&GJ%8XjCecu<ppTdO$`|;-LOt-luU`E)vyUpPDeUani&B8D}vv ze~~~`NpvnA%euH#_sm$k44&4iB(+-<BZSt5k?eLdl=^#uyIo#&pP0B+!}>sYl2)oK z{K3Qrm9Q%Spa;V_IW)oinKmG~D8Hn-DnER=QwV_@c&q&0rge^<<fV~BO@yC<h0HIt zWP8lx#yjS*Y8>;}lm|QrtlZZDw+V;J*P>7^7uL^$IgbnOoJ|Tts@?91;a#CFByj2I ztKzkAV8(!v3!aCjr3DGB3^rv=H5%Ji7sVth!k?G5jP<kWxn0kujioA^m5!aZVRhMh zgp;GAiuCe)IX|~l^_;g(QI4{g5YG)yML^$w2iAsFyL)C`*V1;yqQYI$1}i8^KCwX& zTxehYwB2u(qG*Dz=!EwBfZhbm=xwE5Pv?;9+i?61O$wmC1q~s@mA84f%e@2CsdAFd z+HMZgZCjP@vC5*mTnXbjYB?YPljv$SUG&jvw~LaE{#6?L&7r~qIPZbz>SmfYxxk`- z1Co~bP5;LE)3ziFX98}Kz<l$Rvq=cslLn}>(Ysv*0Wp9?+aL%uoeeYH-R1@&*U6b- zyQM*Sg9@i&%MLCYqu8jJ>gdTvO7Vi^LDO05xGeF3uJ-`I&MjwLaNWHPxCex192RRi zB;IWDJMygo5NyDNWCc00r^_kYl>6oSbU8yCx!`fc$`iX4U;z%-Ik}^JQ@j=AHrPM{ zY*r3&$jF0eBs9==iZZvx6xDm*8_0i0xvM37IFRWlKhw6B=^c3x5{g8p0YN7IWD~ct zzp_J%v}|{{z-v9y^biA2(2pznIf5K$od^!3z*KEMz|?F$9Bld_2tUD8X-lcysc5B3 zy|jvbrfyBNwvvrH4_t*{UJ7nIILb={Ri<u9@ccaTx=%+w!<7pSGIL)-P}_E?9S{YQ zE81~bDQ@mVfKSzDu1t95#su;^pO^Q&?mXYaC)Yb-);rIykv?hVZ@M<ZmtNHHVnmwv zGN^*T@m_|PSMMoYtyO!v*7H{}d}Os+yZMCM7l?HpAuk(ItQ=8Q6;8@6c0@V(o;Gy^ zTGJ6KVOIda+>T2A5?Qzc1u{rp;)e{Hw=?LS$pext1J!F5{LB^E*2}2-x1P~Tx6Jos z{j?i<?+%|fao5M9M`grH%)WzcJ<h%{yAN{td7Uqk<47HOE0RZb827bMHm~DozlSe( zf{ph6j_aUwFRA&){^14t|Be^zA1<&yPyT<=1@@rZYt`%ZH#@DCd%~pdwQ4Ue*&e#M zq-2)Q?X-TBOX#QiY~qUST6%D1D6h_qqI6rUx^lv*>n4~S@;EC76<2`a=xLv`yy3{% z;)K@B^!s|HeUuBCxw+)!E@M*v*f1eGNB$ZVOurZEiVEdkqG#Xl<Wp8YH`(wjt0^5% zxt8%zE%k8o6r)|BiUSjr0_XwfFvD!{T=Km%e0W2cAURy3G~Al+HHzSEMcKMmMyBgY zzkdxXJnLHWtXuo-JZ}2^weg<HJXa<7fIRm#Wu*C%76P*c`8wyfy7uybbcyH|-St<! zHT;0K{lEjU0`NU*_@=!a@JIQkX^AWKoYZdMHd$6&%c6?g8J)gQ9(?hs#iQ>o*_K{x zt?3^OTigT-h~dIGr$N^0iuUi}`_(eX8XjORTS&O>|3w@AU$`+rF?clYSFT%q-!Izl z@74a#r@DKo#ysclH6%$?3jU){do$w+!CyV!fF7$N_hA*lzx7N?9m%6Jq&L?|4g0w@ z^0#^;eab@GJc3;ip^iVK`T|T=Kj2vzP6ax6=uvqrm6u8=N|s7)*5Y%N)qIXBVdNPn z9ZM-OuCW%oemTdZgu|aR&eu}=vfRaXSnj-v+?RJWwbYj@_`u?@S5ZTxo;G5Vtm#$M zkj`tHJ-+;02_+R-L;>=I>FUOkFT+<t4oHcOC(tV|mt6b2<TY2AOh@aVq|mM~rm%G~ za#dM3q<TbIy>mk<YB9bWk}a;>ko<syqur1SFVu8H@(UU_q-InFqIE+m8gUIbBnzo@ zLu$l0(4HGoQI9GeZqkOsP1<z0QA@Mho;7z^1ZpjFQ^l@cP9A%iC<d_<AfIrsc}`TT zh-oz=SVLB0KG#qus-E1ePxVHSwz!*SJ6Qz7-z1G>o-{(InU&^}G<;A`Mr2l|OVV)r zq^DvVPjMWlZWXU>bvRyQHoL8XZ)!iDI!vEe41E|D&X)Hn{*cdCR5vQi8XE=$pY=TD z?D&G}JU*qWD#PH#j+rm5M)TCN8sq)qc@J>U3t;L8UQmag@DjT3Nl@;sbMJ->{<0e~ za_@!=3AlbkhPSOL6`>DwJ>~xO7A{A5%Y}>DzI4ae6G!V?v~`JeazG6A>}j;z10|I` zP*U9kH6R!~j=a54QtpMeW^i+Da%h{dxlLW!78Q1*PAHqg;myJ);cTIBdxb(7BU-l% z+hCZ@)o1X~8;1wWx71Ia=5uf>v8i6DUBd%?s-9N!w)`mA%T*?AZU$1f8Tb?^vl;m8 zcHqZepY1JHwY{ABb|9@>cS2u!-3e~)4YJ?9H%Qwrac_@)DSCD0&OYHLciOzky&3gl zggo}&ij21$)b|i+^E&rt)W;!WE!ZEutN42l%4hC$S9tpaH@9Q<d4U3(Jdn99$M*5p z@M8WLX#%%P6YTl>;b}#lpf8mta8sUOPhS#WId(jyFO?{8Q=(wao8qmh<I~>ge8SYR z%=k6-OrYp7-Q;?&GA3h4a6#EJ=@49y?>6Eu8=Q*{<m~&LFLV9Yjj}Fq_J-fCGa`tI z*+UV&c0fgFQ~_t?SZwl~NU4Ub6Lt9^+uX`Pk(@=Y)(*@GOG&PCaOMEI>gx#(3z?u~ z8rQP-B)_8zf*x;jd`rG`tvoNcXNzPuhiT5&U&|~-62YAOvLS`g_24vh71bONt6I&3 z?skEznk~_BR9;!Ew@q1zSmE!SsvA4Yq#2*<N&A**11myE0An7LT6ZJ23w@{DcM$=T zN?mGq^sxdn5wKP&A$tI0b$Mq4&2E>4hAfU6ieCEmWVRq#8<i|$BjF8YshR}()uplm z=$lNPA+pi@J(vvQV}x+GTZf<|z=hQFVz2LI2gHi)wqV^Zn%Wmzgl(#<%YGx`6F@=H zCR_bXGxQ*qW%Lc7+C2XyU6Mk{PQdK<>zH<2AVFVZA*YpbfRgjq4brPvy<DI~wwsLe zJn&Q16B90k{J>{%IVLHJCiInP8I!;f!W(9^G0Z}5J}XkaI5&zav-G*_eH8cc#}v4F zF0W-gABpyJc`exITc>$kqw>nQe-6m=wX|^0Zub)ksgeHaB|om2&o|5OlIKUM?Ud=W zUEQ*#d{m=tp^qn5rQ~lVS0%emQ~a=!)$&aWV*rwVpPFkRJ-)+Hzy<^iMOaxsE4-+W zIBa1e>fx1xYleMfdGu+Ifm_*Tf!Q4{{;VY&^thi8r2;DT7S$JPXFq^B%wPdixS7zK z=8+eoj!KhI@b@C8Y#9L9ndwYNfBx~?Z{FVGrL}U-m2dxUSIO{3VO7Zi{N?*dE2;`k zKp-6ubFcgevH@`~N2t5Cj{|LT!C<$Gt`G*`vACyVv69QB5$F<8c?v>=I9~)5GKgUW z%ezRR2p1VIh|8v*NSIvb1b>(;a6vjEr|N;0P7P#^#yvb#fQnyo5scN5ik=@a96@28 zZ3yTfmu=~%!?7|xs23Un+HZ}8Y%uDXxaaW8Wk)3&6l+}G|K*1tM?JYRRNF5L{y-KY zpo0x$gAE+@)E`i5an3)G*3^1UKk%1S=Gwf0tlF;rrqcRG`e5^tHZO8s6!i`%tA(tO zYhZB&EnKa(Z^B-+joMVhs}*Ki*jVr)u=}wmpogs|O+i^T-a{aRY*18C$RO(%pq8iK z$fHXgKvYUlzc*F>?HZ|04;^geM|N$Bi`7#Udj`~Aly9dv_C5Y2_HDoIog`XG&_}ei zmjxsMQYq}?@D@vMHw^xf_QCpL=zKou)SPdkvv>~7Zsgv9#{PYb67_9Hl$~Tr#A_jP zdc6@O=xAo!(PwL`Ns1?T6c-leR+oPk=+V4SpFG+poy_yy9I85!$CMW93~v(}nlF2G z8a1rl6rh^xOIo_D$bId0o$HJ*K6IcF#^oxb*AmsJ97!@cB;96gu0&cDjdHM;s--T^ zOnD~NP4#7{V()4b<^!4H!=QZZ!t;vQ?MC{zl0qZXXjn4V@h}iGcWg|QJw)YDs1UbY z*lkQ`s6Cn4Dr}SI;SJBf!i!buaqGI9%<z0tI?wNRh6HpfjNeV!%@`yiEc}j_di@^2 zT-%w6CXzC<Rb65X`DS>Ih_X6pqMKis5-HFfm2KIVO*ej*vLgy5W0cZ|m<p8g#YP!U zmd+#Oi|yMq5E57Sa-C4`-T^42prs`t9cuyriX&>IKz`GdOv=fz)GjIHL4hhmL1&ce z2|#^F8p;n!gQ09`GLOErG7dKL*FC+l$+EKTTuLqkDT+?+yeAOMkAJkiG=ZY3GcB}k zc&KtT+daaJa&rOGw<KSZpke#+9$}mjbu`l}EHMC(?DaJBEod^Mlry0SEj>)o^Y+mZ zrH>EthmExv=@X0-jCf$~UoVgzS1?6Iw_BJ_gd3E0yQ$?I3msA;%rU}nAs$cxsVRa| z`KeluFf?2SEudvTXalJ~q0wf#7;dz+D+_6g@^C{_x#nw40#W&8;bo4*xb&|Lf4<(_ z+>o54dQ@mt!;xqv!Ol?zjpCD%8_LM{IbV}pY=aDTWZ!n+<C2J`*YZ*3U#7L+16Xvs z=`_g0oCwOWa(N0UC{YV@Qmi>E=$(}1^AM-$52T>Kl5c1s2vcWb*I25M?|4dl(@iFe z(qH8oC*hgEaRg+@@FJBAGmr!e&I+E9kmNbfgU;8OW+Xil{AiIAEXa`}Uvjj->~nF1 z7r$(1PL39Ox*Xl){Psw!$kCGC5q3lcx$Q`>d+5Bv{83c84#LM0k-G6nyVjLYX0Ef% zlCmOXT+o|s(77fzJST4%6&<MF6C>d@W$9OUrH?KvHo5lmEdGq|$lEV<{Pl)r>38{G z)oyQzmY1l@sIcA>{swRPMthp%q;zi6S!5f2<UIS4uDv2kB&j2fZv@GGocC~%5uCRS zl{{1_LAmh()Hd247J{!^3N&rSVa=SWU|A@7Kvdj3@7g`n%h|z^otet9<rY&WFlDdH z8QAU8>I$poV&U8O^l5hdKyNp<`XCesz}_XSvt-j^m?eHj^S&epnulvnaEwr~+gWCC zj8F<5xnUBPSrm|4X5qL-3b~ONOrCyc{m^ldHkXdA&rQYQHuhfG!b(Kxe$wo2P2&!n zVYrzquXQu4In%RPN`>{f0K*M{WVZ`&D7!i+y_GyMrsNB*d#z0afc+k}4E_UN47PKn zu%a)tQxXEU!HE+e)HQd|my)IEKvN|D?RNI6yH20@LdW)*Qd_?i?sfw#6R}QI7<9lM zdh@cKQ>eGnY+EQIrY%VADbD5-Y$CedfFUON@B)h<u+h44`gBX>@RK_?|7d_G0;aW# z{v;<aA#Fb%Qf54H_W;P=R)D%)W_CMlc9UQWRnPI!!feSU$5Bas@AV;Uw|M;doVPe~ zF(n*89IASxE@?)BWh?gni8q`TBHt_o&jYR|W~S>X5F__TS@1~HgoQMPwgn6>#6x0F zXD-A8)C&vQg9)7#YHckb4qaoq-N5uDvR*zFRB&nr#gE+ZXvO2KFOQB(DmxmPin9RB z#8M;3+hf*(uNPr73o{T~R*!?DayEw)={p<ToT%)HmtDkQsS<^?163SMa@8@rU7$Y@ zGht$-3f*5=51ZTsb5Ek1`T^5+y_dy768MR#2P?whOaq(;1ajp-qbn(M0I-LudSf<? zL3ySnp0HQ$h$YjPkKh@bA0vckY!J`EBe8c3q2ov^`+IkFD6Fiy2ll)Sb;Tj-8daxp zP|YWasz*Jk3QVPy!K3f=tqK4t(wtqZ2v*G-`)e=pwX7Igs?me11C>pjI^fE4!agr{ zXC68_EX`Pg&_e{#np>S9q(YDi__Eb|NR^SLZ7xyw#F3swv^s?jiA8E2S6bfWVM1?7 z>OPXB(N!Asi^DQkjiNOne_Dyr8=j9D{&kyR===%DKB0EAOLnB~UR!yC0jNuQ^?v$I zaHy+oX&*s-7)(DFQR_TAg|N8{<eA>HqG-!VQ)FqYeZRME3m-jhH8nLDH$a`?#mXt_ zS<h}a=xmr)pVH2;w__0<BdJn*si>C9!qka6#*b2SD<=v~xZ5j30om=m62tf`JUfFt z)Lt5hnGeWK=c4NTuogX?>#Lg^vQV0~4$t+~3FR){khq$q=qv?B<IKk(g_W#e4|&^0 zBVu70sAjR7YbuKkw0MbxzOP3>Ay)>?y}Fu*TK7XHB@BOm&<~l7zebd7P|237o|API zg6wwj1RFi3ZEBh+kmGwLBYSfmhu6F+Hae$BTzcGEUw$JmnGf5(=cZhHy$5-vI#AGZ z!IiAHab1=_2^Bg-;tG$WgB+?AE9`iGs{`pFP#y?%siWcBuZ7Z%D;?&PM|Hy!R`KC2 zPe~E#H_OaHz6zk?BOxifmOT;pNM(9K7FtrR!TtN|2U@%k?#yT$o%zdPE1bXPxw=BO z&6LGZTP@hWVbrl@N{+;)%+^iSk$YGUg^whX8FLkSdxPr0*+XcJjh>68RCa#8B?2oQ zQhlMvJ(&FI&OGU)qGm*j+io)Nc0nx(>BE9bgO|XScbTq4N0wt;hs`ww>f2mTsRLUt zu(vmjww&ztmryG^3KT)T6e>aM$<<KhXiQN8x?R!lJ5$mg*0UU-ZGBn`%lbOkoM!}k z<G>yvogUk-<hY6NOxQ!uk^<)P4t=SI*K&)er<{k?3sbC;lafN@eA^~@FlZi&&D_JS z+H#|urns{#sH=o|J6V~z-hosehPBr_5Rb<xHO*&v8nK|7OF5B&Nv15B8|InoxLl9b zr@Hw^ZEV!+oSA3mR7#CnRk$^c(I5k`+EVSa#!F>W*Wbc54Z0nuZf0@Y9i`Qm%lWW} zf`5Sva(1Hp9S(Jwk3uN8q}pG9_$I{bb+!!}IUvrLYKKJjr)Nn#U=AgAK`;`}k2(}Q z{%jO!W3~Ia>LE$=qq~V_74T=Pk2{Nr1zRW;jvUZu${stYf_a@Ppy#WtqADJeLP!1? zvow<;wRcBCt801lqD(yPR1QaUl1|+<y`zRZLy`A9#)Mz7Nx#nkMPkP0kaoLmvz=Bw z)%_)Xmd^t!wOy|PPw{6xdzGkY2&-N}wZu_g`V-RJdWaxtDkgFePqfra!j-CA5nQq- zzSBF+)o93fh<3ZQp4(a)>Qz`ynNNvTcycE|!#tFl5lDEqd+hmSX-kdfDz2F4e`~Fi zP;Ei9G&VleSV;EJ!~7{id)r>hgsmtG89I(9-pw$Dc)bwxjvzmvcHKI+d{Yp<5qeWu zGWRJ7vCci4C+?es2PF$BDyk)2s>n3tOpQiKe)Fm2XaX%T00Uj`W?fdh+jSNhU3@5G zl%Q$u^YK0{G~vPX+vRpyt$yxZ0paJfNFT?*L2_kv+5s52T0R1j;CYDi9B;q+WrMS# z%;eWt#S^(a%sVh}^1FCtIH}8SU{8(nn%kVu%ravf%n3+>_8mR}JGM{<K5Dz$Cdb$6 z_A^M>=9ZXH4DWEZA<3hIoy^F5zc=?^v*xb9)1Nw=Nlw)1Yj*xx1Q7@Y|Lb~9@;A63 z0q7I+d}b`EEoNjsIfO5H8JdmtMm^T)zqp<0Eu}0A$~8;fQ&TQ&kd)e?wZ=7RT+!-U zglaLv^KMuEx1gmw3?P>S1AwY$OsRCbnkMun@E<UB^>Re@(dh4P0%F|o)s~g<ALTHX zQ`WkD?sh?YFIfpe_9tk%M}Ym_7)#s((+tfza%6R2XU*3g*eO=@M#x`Pa|d=dOh?Vz z9__B#B($7cF3pNQkd~XRPh8gm+b-yEGJYenZG+Y)y4w0TyXyj)%PJ6olI->l54D4Z z)6_Q~dbZ~ZLpM#6K*Zj^2c%WtP@7ie5lvjVpDqCQ7zDAm<*P-?d?ReXb~{l!TITNw z&7yfoQve;Ttp{uCU~Qj)we?{6y4}-aWKDf=#L<doRWEESU)Nw90F6U=jd-OKns9U@ zW@3KGDsC)|$5FdlqVgzts@pYas1P)ojCM1SIJS_b*5A$X>lXKJSBk~NiNm%pj8N>$ zbBVbcZr`Z=IZeBzVyr91bveAXVp6@HK}Za|+0kgZT=vRcdH<T5>J>J|=V&%}m)<Dh zS1ZuW3cut^O!|ER_)N@^{I}cTuu1?a8@fw2%DZ%$8O>fviTrDp{!kqrwOflD^@z$L zYdzi#Hx@8b_y3o}tGviVKsC}@cP9=E9a>`!?wX+8&TNsO*&IyF0o7xKnDYB82dy2k z0Fr<~wUMEBWR!ntPKqsCG+A6i^%29?L*{0WV7H6CS5iDuOv;S_RyTIA8JV}51)n^i zTV>ttT;^jg{iO$whN^vIbEv#=MNsnzpqA@7@&LEo=t-JKW-Isopr@|jP#|lktSg6N zEB6nfr>@y3LD^%kq;^jF_q)g&KXH-w6Fp$Mr#wUcbf2_ez&&k`PIy3C6Cj3p&;SnV zz0|yFd)kchD)BnaR8Tn#U+uT%h1%0*R2{gz4<&0HclT%ZCkZ0j>_V-n);!axE-1D) zsj?}la6bm=fPsWv(Qa3nqDWruI#b97R2hu?=-M>57F3L)3GrW?Z}RIv^fA~&t#*9B zDOQcOyM{o`U}8D9Zp|Prty=chWe2?KyVl13*L)qg{O_eu{9FkoIeTRk1(Oz;`OrdR zmzjDi8|@g3TrGdq0{e56idtx){8*YYx)$G+j<O;-6@}G;Pd`ZuzH1ztw>Ktezg~l4 zrA&FLlyZo1WU)$suj~1i%d(t1D*vpPrvh!S29Ebo-N<stu;?`SJ4)`=@pSctNVv#2 zBkm#}pq6EIDA`Ywc>xrAST2|ihKws!VOJHdRfWr{VuX;Gx*RqIVvB-4cn^}m#z-Nm zc5Rs}<q%Q_{OC>4`B@!vm_>8*tcp}@bzR{K7vJ48r{^;O=uJQoLMFqEd4(Fj`4otJ z`)I9*>MnDKhb$T1(ucrHP`JwkD8Qtw0r4<jUfaWk`-M8-l7mMt2i-d)m^$U+BcU+J zkUMJO)zs~p<APr02%+P6>cu3HkBr}fK?ZuFpXthdbQDc2D$ehK+6$pP>P`J(i67_* zz3~j(rPcPTwx%}r_>gFI$6P%Hx0Ub!5kT(0cE5)!T>PzWgK_3cTA0H@6)2$FJ&?3D z?8Qz)!&FFvshmB-RE!BD7=ssC*_?6S?vXW*g9H?<abA$OOaubP5rE19Bb-g9^H~R| z2l=SFMVfe9J~KQAAfZS=TCx8)O1Uv4x?MTz^jC**MmqAldSu1Bg3BFIF~=zWM#;T; z&BF7m&-4!18-Baq2$I?hbZ2x9i?*a(C8Y=l8Gsvvg95;XdBrOH{=4^Ye|-D5uYP{} z?(4Vj-v0QLWjX0?x0$-jtI{b6GAJMe$pUVsBq(660wB??+TWQg`B&wsVXjz8<G`@l z-iG;v-UK|Pg);61LNSfJd^nr}y<L(I;t9J#(S!{Kz#9Fa+AU$;3s36B^(&?v`r31~ zok|vV+8c}I2eK^!^CD`FvQj!~1uiG|94aQY-$Sl>a?85szbdIMk-jqr29G`&rt0jI zFgDc)Bu%8tQKd6;ySRWv7gh&tAh#2)GE?lk?Ue&G;8ExkR}iCE>h?7`L0zwp`+Z;< z;L>M!?ipIeUf+ghj|h2n*mcd~S{5=OUt;5hF{td@nWCh2+2)<`Ev~Ig6u=y@DW1`J z^0=R9hwh@Ij<Cr{dt<pi-IPND665skXYo%!<#iumYsWHLPZ1E~`AR@?%yv85myX%z zyItA&IdF&S@|L{B&r5(th$O9esVz(ZvFwntQMEqTZ1rG|)NiZqC>x|C2Hx#DTNjwp zI;Am~wsno+bGc?yHCJy<Dd<%)Exp>ETly0&;Ev`wkPL&)@Z5~v-R@Y1W^Asv(NvP! zT&a>Rg9Lztm`4Tm?=eD+vRc~kOPW|HAtX;{kv)^B5Sq<l3z_Wr{S8E#9BScnq+@cV zg1ubcntj^sHdql=+arb>=|J=52Su|MYFJvSgPv55)I-(-RF@7a3#}A<-NX@7oK)HA zE4!pj#f;1ooCv?F_BvW>m=ayk2ndZmDHA_!1tYw@p8a9nSQ!Ru51P=MK=EdTh&u{u zCh8!T2;HwpPHNcKmey{!j;(%@5jgbB6OF_^Vl<mSv1EZqqJSFje&INcyN{|t9hWja z(3Qfw%t|?kCiRRMxz4~-kzoJIC1r|ou0r|^a(WYZYqfdn+_sojNGPj*M;^p~H%KWf z4$6AnFq5+(z-Ump`3d)9b@!9)!G7P)Wm&(JcZgJu3<_*-tG0KSesuM=stOW=ctWMT zL<fWCtGAMPo3^eu8r13K8ZYQ9%HuX2FjZ$WY`9f(IH0Oi<Ym?-$Py63`*H)<jU+@o zZ615^jNBhlh^@?1HVuky*NQ@cR{{zkmE)g_&6?yt|6BzuX~Q^Q`v}Uo4Nd(hZ5D8E zJv5sx`u+Vr0Fu&1L#j|(=Q8gyD23$fjAJ3CVX1U}O&JyX30NND?3Ncododhhh)QC| z*F_)(1iVtMxWx}GRUU~jC+TKEf>wT|5h7qJ5_grY-q|&Z!@IBk<8?)GP$=F~_B+%? zS+%Z)lA`J==#tqRM3!vYQmspr1Z>?@M129x^5LGw5Q(^org5S<L&leJq^nV%2kTL( zhbpo;0s-{3H{ZOABMDycA8<-BD_Y6ca~Gq;7ZK3;za-0?kVE<7i)d(XCNis>dZ6X& zoZmL@Z?ZBu2_FU`d{9Q=?LdTEXes+kE&|-cecGb{avg~UW}|>YT*`~Dyyx}0-GKLz zcR|vly8I~NFf}jRB%1Zu;1@*P6T<ZM*6pisiH!PM^ZUT!JOX_$PGdg;X2MWhsK=CB zsrA_iArwucBs^8)sl4&}kj^S4&kuAhB>~70(T@e|2yCypsba~)hXJc$$;0h{X)N6x zIF&+q_%PtLLV36ya8oEn*)YiZg;eJY{WVFE9>6J>Mo9`cCb*Hojat(ei1t#rLbSKB z55L)4v6IJ#L}I$=sk&MC0N^%}c&ZqMF4#jx9)!u-U)8hf7?V}??^oZyfBVgM@2si8 z1b4fb4C0e2!R?#P%~eQWF$QxKh$oM+>c<4!CA}%h1pcoig17&r-nUVYm6>JP>|;(c zdu|EkGcq?mW0`pnKfs7wMbmsn2JzfntBSHgd_`nj-^F#i$IL6JUJ=!mqrfI?2Nw1g z3|;Jli+un99^>5(dw`}iy!|g^VJY2_HIlJSR!gVibT$ecBUHv(I6#++67}OU_g(sM zWUkGCDcrzCNh{fMpIQuQGStY%szj_VS`G~uX<NP-5(X=#Q40zrgF}}&RVih7f!wSp zDsv=-BLFY2&|<d>HfZeKthNA9RZ;XdJqJhCmwGV(=*IuPLj-rb$GAE~)N6Bg6ks<B zhGSPl`wjVJq1BT)e{wmugH=zq9JGzp6>1%f2hh+L<GXDAb`<pW_pbWBsb2A8`#``U z;RR30l@n<P@l?#Bc_K6^>nUZxW|1}c?-U%aCAvbS2}1sul*mRXtm%Th+uXJ-oRIoA zMQ|qrC_l)d8<%ke%advtk!c*BUa@JMjIY>ql$>9&>1h&2NqmK5>`4BMl2iF3<00-< zLG35jic&cUh#s~2-zw?sA;ATC%l@*#?fz9glSN-m-Iiw%_e3ucYTHo*JDfKVLlmBZ zSMfAF?TMa922pt03kCxNVGuhYZ#LI-aR4O`se{?#UJwW*hVdW<vP3`j@jFzkj$ltD z62U+W&`5(Ro2jnqK8RtJaIF~!bsT$Q5Z9>KTCj<wBV~zc&+n4IY$$8RHSS4Zw)zUv zhfCCut`qlA(KfUj1g;VJJ!PbwbZYP~coB$UTuQ_v0Q#|O#DUUBrgR}yidt!}9f#^x zgm%@NvOO`3{qg(N!<x5Mt&K);5|^`g1mj3{gQO^MxE}%#I{?AJ12Kprg+jF}p2i|d zEU-$~)De?tsa~qrHy8-u_0=1ix6jxs6i-Dmu!L4?Z#=LAucVrsm<M3Qy=qZ604uY) zy>Qt$uj>pXq3ciT@peG^^!zHrg{ZL&Z4-&Z^C&*OfZA5)PICBE)~%JKR%aejI0lfu z(wftC5yW5`P!vOg@bCmA@+T;jCH*0}dJqpOfP;WGdkMt=l;b*xds5l&c~FKJ_~Yx} zrZttesB!#kJ8Gl+Q=2j}O$krEw#2<49QWez6#RxZ#aCh~wck(fsH8!a7nbaWryg~_ zXn(x^|IgmrKR0e8i=w~Zzrxn7)e<H|QA#GeOAV}=kDasgUM9(jXS2ywsit5NlCY*o zUy|}jvGl*cLgSmHWKWWFUcFl{m9a<=pN&SNyV2-YaGA7sfgoU^co;B?D$lOO-57L5 zA#2Rmvug7QQcy#E0lOlj=*9R2(mh1}=F!R`+P3uRb+K(mNYz~*fcFF#D`XOs!5ROl zf)Z*kN5gUSmlxB~Rq&VS#W!Qv+)y%x)a%+whbfF+zz5Mi@so^ILM!Ju8arA4_La!o z%<+wv<*#3hOfIZX^*j>IMK7-8xHW8ovFNx-w%`~8YZ68;j>k#Sip}7vJ{3e|poVUj z<cEX$`kCF{@%qQJc{atb=Q9*fl&?;F??3}pq+<0)zG2|136I!U!*61ww6)e<-4g?E z__gaA_nUKBHpQ=JzZd6ASKXgaj~VVNpBnXw)jzU~*8IW5x$KsE;Jl?M`HJT>gByp3 zLk*TH%BjdlTCSK#jH*)GtAY|{#Q@b(p0D0yoaHq*4Mz}-vM#oZHLE7zsZ-y4ng*1> zWt9bF{~2@l^%s-`l;qCG+<XBsDJ70t9Y(0kVsP)CrlK2zj4kUPLU{Xh*1EVCITugo zET!vSgx62!l>y;I<|WBg<opbx%MH@O0<TD><L75lUEB}0gS8bWVMhSt<{+S^7#c3G zO676bczSuu9{7TRMig8kA}zqG;#}8{hO4VmyUagR{Bf61yiYjj`)Dd}Tek%7+I-SC z=%?)@IP^>Eh}Jb-tl`ttdkcC+-V0@}nS7oTIN^|23{JJ}e07@dNCod3mm|@Ml)0U7 z-a0!`s4z{1bK|_#kq31PPu@N^58#)#(+Ggi*xV&M)LcMxPtYvbgWA8$&#<TgZn77i zhl9=|0KafYk07rH>wsd0Yt?{sZ(P+S<#{a)-#ciKsHV4}yMgpJjeByb{!6;sZq*|_ zZJw>j_^*~V{X==oR#myKJ-bdgUAsDJ4Fa82%9>;XYz6sKdDZHN%sE)=nsE;3fa8*M zfy{dKP={hAn&$RUEXQSIU>yMZEh7V}_Pl{<Qq>rl>`3>}l)uzxj}6-FJ_mAw)a)}h z^<QUfo^%;dc34Zo1xh47=p$_z)R-YjPmGh*PSBnpheYkLX(Rn`7)|&x7+n(LE;qSK z<;7g^LY-?T=M!q	lE>m1o%eieYdaB29P#CLJ7leqy=w6H7gpvN<Fw14Tyt187+z zq{BuW;}{#4lh)H@5iJV==91^DQ;Jm<_AYv1En2(ig;buN<||g!AK9)QI0ij(!i~Ff zeF4tggVQ&<Xn9Ll>`jqnY*Duo4u{!%!l82lyx>q(Rn%R<Y>s7i!Vs?26Z9Y>@ub7> z4LurbUS=$vSikRD;$0GQ8Ba4(L>oq{ZOO!d1(rcf9EK7%GZ-Uu*nDXt4`z%!8uosN zLvXqYF!xg)&-F>ya4hhyy4H7Ltf^5-;z@O#PSP+$>dJUND`)9^J}LE0lo(egzCZ?t z`?lfMWLgtuHp{K)(BTls6jFQr&XGbfWkHl9go|qq_SS{61(Rm+-!H$Vw+uYXcG;+m z&RQw?CQw@6e=X32S=$+HESr|}^N)fNVyRdPaBAH#P+W*r(;4oAg#~s4q_B_=RLcL} z(zK*CU%+{%{DvupzhU8*!8FVV#pzOEj#bTJ?v*qt?Q*h|ty!1Rt#_5cW;|}d60q>i z3fBR@Apv~K1J({|@E;{jx#p$(XqoC=1rcp~e}@mzzpIP9s4tdcb}oAeGtK$<j+r_+ z8?z<I3%^Ph33?oYZ}kv(1*BE=oe=YS%5B0x-US+{OopN^stWMGr^AszG?7X1z{+J- zd`@JsiM+Iz#FGszS3FPRNnPA0@kFo?Nj#C8XcA9=O-SO2a@;+N<3CNLGjDjj*Ec!n zZB=C3noS_UDJut(c}(&mXOmwC^78gzG!Y%G>8&)u8;tb52`A2qbOT-{6xV!l$MaQk zIXdFpWi)xDKEY*V^-L~f+|~!2iq)vmLAm-br*1_f%mQRW%OE89U&F*w+{+4@_T1Xs z&v4iXtdwZ;aG=<DHqQ~x!4<2%qWBtIECv(;K$TVfX3et{S&88!^2h)xf?}MBp`wO1 z0czr~TdHzsEPzd>Sw#8%>Ih|m4aHIhl<KX^>d4D*!tlrhP=ibmG)-M}u$GxRAe#!3 zCs&sBmvc(~m-ja=>%-xa2{B(1Q?WN{x+=SHIfB#l)5fhisb_SKONcLnbC-HRulxP7 zl?D@Z>GcyhNYkdd=#^g*QrfPl2e7>o<JDg5+HzyR-{lR)#vlY)j4DdxU2N_&Hfj^a zA81{(GN0CoBB())qKekrlGZGUUZ5zY<sHj|XoS3*ZO0>i{3`kCILG6^{HDv8`q>K< zg_S2Wu&?*7fW!Q8a9gG?#7qinV_SDQB1Lk}TTVZ?5E^1IoN_Md!rhuMR6K-^N+TGF zO5HG&78fk2(D6htDr>OJ8eD)N2S3t$#R3}bFpc)8-{+3yGWUWfx!g>7@|qORoCfp5 zAppmPT?TCkH~S+{my0FS?3N`mLSkWp&_f*%GBO8bo0QkZG|0%T7AvMeNkJeeRA$C= zL^x}NL~7i-XlnQZkSo^Ux-jdOyUf{09qk4z+My%p>x_rfshElqB?5jWz8qme-W&*N zZQiu$5xv8uk(knMw4%tWQQAHrHRC@6?V$8fFrP@X7mGyweyUkc0jd-nr9SwV*Cw7z zR06hTRq`l(&^lDsy+YFkS8Cy!pTSQf+iHB^(GK%ykETJcrxoXR!^FA18-_>dh{2(4 zl4HpP<i;(kM;N{Y1J2B=5#ckVp6&O8tUVtY%t7k;EEI17Ik9$?n{?uu>@c`g0d6O0 zZ$PI2Ziiviqu?z0h;v3uFDkU7mCK*3O$d@8Yf%dt(}b3`u1EcT8C6AD2VHEajDuG) z8X&N<wQo701MVJJ<{-v49B&L*1D-gC&>Ai(>^$VOW~)!4XDQ_3%ymuJK|_C**qOtP z-_l^F#oIjE;T*_okP$I~2y+Xte*Y4@t&-Us;qr+0|D~P%MR#fcM|9SPX8h}y@3?Yc zj?C;`dr_Aj{7@Ix5d+9!wTYGFWHpx~tWZTBrBszX+K@cSWsJ`R=t*MS5jqJR^GOk7 zCjCJQmbT~kq{PZ4B<{hX4P1iPFOYYR!JSF+s60(dV@N?tlb%|QJ?y&3#x3`p$=9)9 z)TD1o<rmHs7klOEmV(AA#&I-4J^lGzk?Sn~^P6wJ@zUSX4bS#T@6Z2W*#oQjf?j;b zw(QUN!lsCqS0$&}pYcUS^J-ABk}th#ZuqY(8I8RpaIMqJi*iG=9<J8KXHZ)JFtuBh z$0PRrCwCl>&*l>*G4{_dx7h_qr=<7iu#R{d{&^tF_pbkJZ~agbPw30$-l~`@3YV5u zeHp)gS>4n80_0iJv#xOlz=S5E8Q%jCoi`omgn#Z`zZ{BcuKz67R4YI1N&UWR^;8Cg zRfgWnVaBg}hNRl$ZFVih{pjBX&x2kMnBO{jqg?#edR6}I%U5NmQxY$R2+@(CVb*Ax zzAko+&8U{40l)_cJORB>&)R*b_JMV>xR57g3GD<%z1lm2K;D}nTol=KnLRZqaQefm ze-tJEwa9Cl1!zL2p!Cu~hKx_Z<u=QtTcTa^27f^K?SPo*rHNbSGrmFijra;W3WVRQ zpipbmPD1g9=dd^!zAdCjIn%)+Fz!v5f9EcE?<qqK9^4i?LP&i?(vPO%3*B*Pj^Gh= zE3dFrseHtsaKT#Ba-2Ll^8IiuSOpLqYa8TD4M*uK-#ViyfBR^#?r*I68$*A8(EWXP zoKS%kr+OheYWk6>J<kJ+;Iu^xq-(g_<Q1;vIdkWCI#?vH!Z)~%>f)Y!3kWUxMZOKq zX~nlhr=mo+^^>Xfr_dfEh&q0-b^H*%#Xk|15kl$KTJE!bkqZ&0q?%TdI(w2kz?Q^# zL1MfnF<z2*Vy?XeTarRI4hNAVl?{lOHAzJ$#N(2rsvn0#j1o~s<P}-OH>p8i2@HpM ztUE$~D9s9-27*Im-Dj<>J0g7loEqdA;i)P%	s=?oU>5`<x2Yao(vq9-dPNuw{am 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¬~RGp~f;I!rijCoQB zclW-aHi0=hpKOh24y;edmoKLISE!g<ij<=xWz{g?@f%*eo_3?d5q_S105(g1)SgNC zn!mVKWwX#?va~Bl;=v>Ltor=jJy<%@?ZoVj*2@ZFjxuX*w&};j1)iy@2{<7}S(zNi zpO*p6xag34*dj%f%v^loQOE>tLD#ULJ*oPExO$p9=nDIO_QU=%Z3X<IN;IjM`Y9Q^ ze?aGv-70}G3eViZCvz5e&lq9(xH1ZL-Zh%$aFsQbk6}AK@WooQeDj4iVO{cTyd~7N zKHMCIZeQ7xkj)nur`oRky7AyV01q�C(5zoU@M&NSIe#F=aw@j_oVmx{(V>XZQqD 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