From 6500ba7bfbdc2bd8e3301813b3cb606aeea35331 Mon Sep 17 00:00:00 2001 From: Christopher Chedeau Date: Thu, 26 Mar 2015 06:32:01 -0700 Subject: [PATCH] Updates from Thu 26 Mar - [React Native] Fix incorrect if-statement in RCTGeolocation | Alex Akers - [ReactNative] s/ReactKit/React/g | Tadeu Zagallo - [React Native] View border support | Nick Lockwood - [Assets] Allow scripts to override assetRoots | Amjad Masad - [ReactNative] Navigator docs | Eric Vicenti - [ReactNative] License headers and renaming | Eric Vicenti - [React Native] Add CocoaPods spec | Tadeu Zagallo - Added explicit types for all view properties | Nick Lockwood - [ReactNative] s/ReactNavigator/Navigator/ | Tadeu Zagallo - [ReactNative] Add copyright header for code copied from the jQuery UI project | Martin Konicek - [ReactNative] PanResponder documentation | Eric Vicenti --- .flowconfig | 3 - Examples/2048/2048.xcodeproj/project.pbxproj | 70 ++-- .../Movies/Movies.xcodeproj/project.pbxproj | 64 ++-- .../SampleApp.xcodeproj/project.pbxproj | 70 ++-- .../TicTacToe.xcodeproj/project.pbxproj | 54 +-- Examples/UIExplorer/BorderExample.js | 90 +++++ .../BreadcrumbNavSample.js | 97 ++--- .../JumpingNavSample.js | 61 +-- .../NavigationBarSample.js | 35 +- .../NavigatorExample.js} | 29 +- .../NestedBreadcrumbNavSample.js | 211 ---------- Examples/UIExplorer/ResponderExample.js | 8 +- Examples/UIExplorer/TabBarExample.js | 16 +- .../UIExplorer.xcodeproj/project.pbxproj | 76 ++-- .../tabnav_list.imageset/Contents.json | 21 + .../tabnav_list.imageset/tabnav_list@3x.png | Bin 0 -> 360 bytes .../Contents.json | 21 + .../tabnav_notification@3x.png | Bin 0 -> 1602 bytes .../tabnav_settings.imageset/Contents.json | 21 + .../tabnav_settings@3x.png | Bin 0 -> 1059 bytes Examples/UIExplorer/UIExplorerList.js | 9 +- .../testTextExampleSnapshot_1@2x.png | Bin 267971 -> 258738 bytes .../project.pbxproj | 54 +-- .../RCTActionSheet.xcodeproj/project.pbxproj | 4 +- .../ActionSheetIOS/RCTActionSheetManager.m | 21 +- .../RCTAdSupport.xcodeproj/project.pbxproj | 14 +- Libraries/Animation/AnimationUtils.js | 6 + .../RCTAnimation.xcodeproj/project.pbxproj | 14 +- Libraries/Animation/RCTAnimationManager.m | 6 +- Libraries/Components/SliderIOS/SliderIOS.js | 15 +- .../Components/TabBarIOS/TabBarIOS.ios.js | 4 + .../Components/TextInput/TextInput.ios.js | 2 + .../Components/TextInput/TextInputState.js | 4 +- .../Navigator.js} | 195 ++++++++-- .../NavigatorBreadcrumbNavigationBar.js} | 27 +- ...gatorBreadcrumbNavigationBarStyles.ios.js} | 33 +- .../NavigatorNavigationBar.js} | 53 ++- .../NavigatorNavigationBarStyles.js} | 25 +- .../NavigatorSceneConfigs.js} | 29 +- .../RCTGeolocation.xcodeproj/project.pbxproj | 14 +- Libraries/Geolocation/RCTLocationObserver.m | 2 +- .../Image/RCTImage.xcodeproj/project.pbxproj | 4 +- Libraries/Image/RCTNetworkImage.podspec | 28 -- Libraries/Image/RCTNetworkImageViewManager.m | 6 +- Libraries/Image/RCTStaticImageManager.m | 13 +- .../RCTLinking.xcodeproj/project.pbxproj | 14 +- Libraries/Network/RCTDataManager.podspec | 28 -- .../RCTNetwork.xcodeproj/project.pbxproj | 14 +- .../project.pbxproj | 14 +- .../RCTTest/RCTTest.xcodeproj/project.pbxproj | 14 +- .../project.pbxproj | 14 +- Libraries/Text/RCTRawTextManager.m | 2 + Libraries/Text/RCTShadowText.h | 4 +- Libraries/Text/RCTShadowText.m | 3 +- Libraries/Text/RCTText.m | 2 +- Libraries/Text/RCTText.podspec | 28 -- .../Text/RCTText.xcodeproj/project.pbxproj | 4 +- Libraries/Text/RCTTextManager.m | 30 +- .../RCTVibration.xcodeproj/project.pbxproj | 14 +- Libraries/react-native/react-native.js | 2 +- .../browser/eventPlugins/PanResponder.js | 209 ++++++---- React.podspec | 79 ++++ {ReactKit => React}/Base/RCTAssert.h | 0 {ReactKit => React}/Base/RCTAssert.m | 0 {ReactKit => React}/Base/RCTBridge.h | 0 {ReactKit => React}/Base/RCTBridge.m | 2 +- {ReactKit => React}/Base/RCTBridgeModule.h | 0 {ReactKit => React}/Base/RCTCache.h | 0 {ReactKit => React}/Base/RCTCache.m | 6 +- {ReactKit => React}/Base/RCTConvert.h | 23 +- {ReactKit => React}/Base/RCTConvert.m | 360 +++++------------- {ReactKit => React}/Base/RCTDevMenu.h | 0 {ReactKit => React}/Base/RCTDevMenu.m | 0 {ReactKit => React}/Base/RCTEventDispatcher.h | 0 {ReactKit => React}/Base/RCTEventDispatcher.m | 0 {ReactKit => React}/Base/RCTInvalidating.h | 0 .../Base/RCTJSMethodRegistrar.h | 0 .../Base/RCTJavaScriptExecutor.h | 0 {ReactKit => React}/Base/RCTKeyCommands.h | 0 {ReactKit => React}/Base/RCTKeyCommands.m | 0 {ReactKit => React}/Base/RCTLog.h | 0 {ReactKit => React}/Base/RCTLog.m | 0 {ReactKit => React}/Base/RCTRedBox.h | 0 {ReactKit => React}/Base/RCTRedBox.m | 0 {ReactKit => React}/Base/RCTRootView.h | 0 {ReactKit => React}/Base/RCTRootView.m | 4 +- {ReactKit => React}/Base/RCTSparseArray.h | 0 {ReactKit => React}/Base/RCTSparseArray.m | 0 {ReactKit => React}/Base/RCTTouchHandler.h | 0 {ReactKit => React}/Base/RCTTouchHandler.m | 2 +- {ReactKit => React}/Base/RCTUtils.h | 0 {ReactKit => React}/Base/RCTUtils.m | 0 .../Executors/RCTContextExecutor.h | 0 .../Executors/RCTContextExecutor.m | 2 +- .../Executors/RCTWebViewExecutor.h | 0 .../Executors/RCTWebViewExecutor.m | 0 {ReactKit => React}/Layout/Layout.c | 0 {ReactKit => React}/Layout/Layout.h | 0 {ReactKit => React}/Modules/RCTAlertManager.h | 0 {ReactKit => React}/Modules/RCTAlertManager.m | 0 {ReactKit => React}/Modules/RCTAppState.h | 0 {ReactKit => React}/Modules/RCTAppState.m | 0 .../Modules/RCTAsyncLocalStorage.h | 0 .../Modules/RCTAsyncLocalStorage.m | 0 .../Modules/RCTExceptionsManager.h | 0 .../Modules/RCTExceptionsManager.m | 0 {ReactKit => React}/Modules/RCTSourceCode.h | 0 {ReactKit => React}/Modules/RCTSourceCode.m | 0 .../Modules/RCTStatusBarManager.h | 0 .../Modules/RCTStatusBarManager.m | 0 {ReactKit => React}/Modules/RCTTiming.h | 0 {ReactKit => React}/Modules/RCTTiming.m | 0 {ReactKit => React}/Modules/RCTUIManager.h | 0 {ReactKit => React}/Modules/RCTUIManager.m | 23 +- .../React.xcodeproj}/project.pbxproj | 40 +- {ReactKit => React}/Views/RCTAnimationType.h | 0 .../Views/RCTAutoInsetsProtocol.h | 0 .../Views/RCTDatePickerManager.h | 0 .../Views/RCTDatePickerManager.m | 25 +- {ReactKit => React}/Views/RCTMap.h | 4 - {ReactKit => React}/Views/RCTMap.m | 57 +-- {ReactKit => React}/Views/RCTMapManager.h | 0 {ReactKit => React}/Views/RCTMapManager.m | 79 +++- {ReactKit => React}/Views/RCTNavItem.h | 0 {ReactKit => React}/Views/RCTNavItem.m | 0 {ReactKit => React}/Views/RCTNavItemManager.h | 0 {ReactKit => React}/Views/RCTNavItemManager.m | 13 +- {ReactKit => React}/Views/RCTNavigator.h | 0 {ReactKit => React}/Views/RCTNavigator.m | 2 +- .../Views/RCTNavigatorManager.h | 0 .../Views/RCTNavigatorManager.m | 2 +- {ReactKit => React}/Views/RCTPicker.h | 0 {ReactKit => React}/Views/RCTPicker.m | 13 +- {ReactKit => React}/Views/RCTPickerManager.h | 0 {ReactKit => React}/Views/RCTPickerManager.m | 4 +- {ReactKit => React}/Views/RCTPointerEvents.h | 0 {ReactKit => React}/Views/RCTScrollView.h | 0 {ReactKit => React}/Views/RCTScrollView.m | 2 +- .../Views/RCTScrollViewManager.h | 0 .../Views/RCTScrollViewManager.m | 46 +-- .../Views/RCTScrollableProtocol.h | 0 {ReactKit => React}/Views/RCTShadowView.h | 8 +- {ReactKit => React}/Views/RCTShadowView.m | 4 +- {ReactKit => React}/Views/RCTSliderManager.h | 0 {ReactKit => React}/Views/RCTSliderManager.m | 6 +- {ReactKit => React}/Views/RCTSwitch.h | 0 {ReactKit => React}/Views/RCTSwitch.m | 2 +- {ReactKit => React}/Views/RCTSwitchManager.h | 0 {ReactKit => React}/Views/RCTSwitchManager.m | 12 +- {ReactKit => React}/Views/RCTTabBar.h | 0 {ReactKit => React}/Views/RCTTabBar.m | 2 +- {ReactKit => React}/Views/RCTTabBarItem.h | 0 {ReactKit => React}/Views/RCTTabBarItem.m | 2 +- .../Views/RCTTabBarItemManager.h | 0 .../Views/RCTTabBarItemManager.m | 10 +- {ReactKit => React}/Views/RCTTabBarManager.h | 0 {ReactKit => React}/Views/RCTTabBarManager.m | 0 {ReactKit => React}/Views/RCTTextField.h | 0 {ReactKit => React}/Views/RCTTextField.m | 2 +- .../Views/RCTTextFieldManager.h | 0 .../Views/RCTTextFieldManager.m | 30 +- .../Views/RCTUIActivityIndicatorViewManager.h | 0 .../Views/RCTUIActivityIndicatorViewManager.m | 17 +- {ReactKit => React}/Views/RCTView.h | 25 ++ {ReactKit => React}/Views/RCTView.m | 192 +++++++++- .../Views/RCTViewControllerProtocol.h | 0 {ReactKit => React}/Views/RCTViewManager.h | 28 +- React/Views/RCTViewManager.m | 205 ++++++++++ .../Views/RCTViewNodeProtocol.h | 2 +- {ReactKit => React}/Views/RCTWebView.h | 0 {ReactKit => React}/Views/RCTWebView.m | 2 +- {ReactKit => React}/Views/RCTWebViewManager.h | 0 {ReactKit => React}/Views/RCTWebViewManager.m | 8 +- .../Views/RCTWrapperViewController.h | 0 .../Views/RCTWrapperViewController.m | 2 +- .../Views/UIView+React.h | 11 +- React/Views/UIView+React.m | 121 ++++++ ReactKit/ReactKit.podspec | 16 - ReactKit/Views/RCTViewManager.m | 169 -------- ReactKit/Views/UIView+ReactKit.m | 274 ------------- package.json | 2 +- packager/packager.js | 9 +- 182 files changed, 2094 insertions(+), 1780 deletions(-) create mode 100644 Examples/UIExplorer/BorderExample.js rename Examples/UIExplorer/{ReactNavigator => Navigator}/BreadcrumbNavSample.js (78%) rename Examples/UIExplorer/{ReactNavigator => Navigator}/JumpingNavSample.js (79%) rename Examples/UIExplorer/{ReactNavigator => Navigator}/NavigationBarSample.js (77%) rename Examples/UIExplorer/{ReactNavigator/ReactNavigatorExample.js => Navigator/NavigatorExample.js} (77%) delete mode 100644 Examples/UIExplorer/ReactNavigator/NestedBreadcrumbNavSample.js create mode 100644 Examples/UIExplorer/UIExplorer/Images.xcassets/tabnav_list.imageset/Contents.json create mode 100644 Examples/UIExplorer/UIExplorer/Images.xcassets/tabnav_list.imageset/tabnav_list@3x.png create mode 100644 Examples/UIExplorer/UIExplorer/Images.xcassets/tabnav_notification.imageset/Contents.json create mode 100644 Examples/UIExplorer/UIExplorer/Images.xcassets/tabnav_notification.imageset/tabnav_notification@3x.png create mode 100644 Examples/UIExplorer/UIExplorer/Images.xcassets/tabnav_settings.imageset/Contents.json create mode 100644 Examples/UIExplorer/UIExplorer/Images.xcassets/tabnav_settings.imageset/tabnav_settings@3x.png rename Libraries/CustomComponents/{ReactNavigator/ReactNavigator.js => Navigator/Navigator.js} (79%) rename Libraries/CustomComponents/{ReactNavigator/BreadcrumbNavigationBar.js => Navigator/NavigatorBreadcrumbNavigationBar.js} (89%) rename Libraries/CustomComponents/{ReactNavigator/BreadcrumbNavigationBarStyles.ios.js => Navigator/NavigatorBreadcrumbNavigationBarStyles.ios.js} (73%) rename Libraries/CustomComponents/{ReactNavigator/NavigationBar.js => Navigator/NavigatorNavigationBar.js} (63%) rename Libraries/CustomComponents/{ReactNavigator/NavigationBarStyles.ios.js => Navigator/NavigatorNavigationBarStyles.js} (73%) rename Libraries/CustomComponents/{ReactNavigator/ReactNavigatorSceneConfigs.js => Navigator/NavigatorSceneConfigs.js} (78%) delete mode 100644 Libraries/Image/RCTNetworkImage.podspec delete mode 100644 Libraries/Network/RCTDataManager.podspec delete mode 100644 Libraries/Text/RCTText.podspec create mode 100644 React.podspec rename {ReactKit => React}/Base/RCTAssert.h (100%) rename {ReactKit => React}/Base/RCTAssert.m (100%) rename {ReactKit => React}/Base/RCTBridge.h (100%) rename {ReactKit => React}/Base/RCTBridge.m (99%) rename {ReactKit => React}/Base/RCTBridgeModule.h (100%) rename {ReactKit => React}/Base/RCTCache.h (100%) rename {ReactKit => React}/Base/RCTCache.m (97%) rename {ReactKit => React}/Base/RCTConvert.h (95%) rename {ReactKit => React}/Base/RCTConvert.m (69%) rename {ReactKit => React}/Base/RCTDevMenu.h (100%) rename {ReactKit => React}/Base/RCTDevMenu.m (100%) rename {ReactKit => React}/Base/RCTEventDispatcher.h (100%) rename {ReactKit => React}/Base/RCTEventDispatcher.m (100%) rename {ReactKit => React}/Base/RCTInvalidating.h (100%) rename {ReactKit => React}/Base/RCTJSMethodRegistrar.h (100%) rename {ReactKit => React}/Base/RCTJavaScriptExecutor.h (100%) rename {ReactKit => React}/Base/RCTKeyCommands.h (100%) rename {ReactKit => React}/Base/RCTKeyCommands.m (100%) rename {ReactKit => React}/Base/RCTLog.h (100%) rename {ReactKit => React}/Base/RCTLog.m (100%) rename {ReactKit => React}/Base/RCTRedBox.h (100%) rename {ReactKit => React}/Base/RCTRedBox.m (100%) rename {ReactKit => React}/Base/RCTRootView.h (100%) rename {ReactKit => React}/Base/RCTRootView.m (99%) rename {ReactKit => React}/Base/RCTSparseArray.h (100%) rename {ReactKit => React}/Base/RCTSparseArray.m (100%) rename {ReactKit => React}/Base/RCTTouchHandler.h (100%) rename {ReactKit => React}/Base/RCTTouchHandler.m (99%) rename {ReactKit => React}/Base/RCTUtils.h (100%) rename {ReactKit => React}/Base/RCTUtils.m (100%) rename {ReactKit => React}/Executors/RCTContextExecutor.h (100%) rename {ReactKit => React}/Executors/RCTContextExecutor.m (99%) rename {ReactKit => React}/Executors/RCTWebViewExecutor.h (100%) rename {ReactKit => React}/Executors/RCTWebViewExecutor.m (100%) rename {ReactKit => React}/Layout/Layout.c (100%) rename {ReactKit => React}/Layout/Layout.h (100%) rename {ReactKit => React}/Modules/RCTAlertManager.h (100%) rename {ReactKit => React}/Modules/RCTAlertManager.m (100%) rename {ReactKit => React}/Modules/RCTAppState.h (100%) rename {ReactKit => React}/Modules/RCTAppState.m (100%) rename {ReactKit => React}/Modules/RCTAsyncLocalStorage.h (100%) rename {ReactKit => React}/Modules/RCTAsyncLocalStorage.m (100%) rename {ReactKit => React}/Modules/RCTExceptionsManager.h (100%) rename {ReactKit => React}/Modules/RCTExceptionsManager.m (100%) rename {ReactKit => React}/Modules/RCTSourceCode.h (100%) rename {ReactKit => React}/Modules/RCTSourceCode.m (100%) rename {ReactKit => React}/Modules/RCTStatusBarManager.h (100%) rename {ReactKit => React}/Modules/RCTStatusBarManager.m (100%) rename {ReactKit => React}/Modules/RCTTiming.h (100%) rename {ReactKit => React}/Modules/RCTTiming.m (100%) rename {ReactKit => React}/Modules/RCTUIManager.h (100%) rename {ReactKit => React}/Modules/RCTUIManager.m (98%) rename {ReactKit/ReactKit.xcodeproj => React/React.xcodeproj}/project.pbxproj (97%) rename {ReactKit => React}/Views/RCTAnimationType.h (100%) rename {ReactKit => React}/Views/RCTAutoInsetsProtocol.h (100%) rename {ReactKit => React}/Views/RCTDatePickerManager.h (100%) rename {ReactKit => React}/Views/RCTDatePickerManager.m (66%) rename {ReactKit => React}/Views/RCTMap.h (88%) rename {ReactKit => React}/Views/RCTMap.m (67%) rename {ReactKit => React}/Views/RCTMapManager.h (100%) rename {ReactKit => React}/Views/RCTMapManager.m (66%) rename {ReactKit => React}/Views/RCTNavItem.h (100%) rename {ReactKit => React}/Views/RCTNavItem.m (100%) rename {ReactKit => React}/Views/RCTNavItemManager.h (100%) rename {ReactKit => React}/Views/RCTNavItemManager.m (62%) rename {ReactKit => React}/Views/RCTNavigator.h (100%) rename {ReactKit => React}/Views/RCTNavigator.m (99%) rename {ReactKit => React}/Views/RCTNavigatorManager.h (100%) rename {ReactKit => React}/Views/RCTNavigatorManager.m (96%) rename {ReactKit => React}/Views/RCTPicker.h (100%) rename {ReactKit => React}/Views/RCTPicker.m (95%) rename {ReactKit => React}/Views/RCTPickerManager.h (100%) rename {ReactKit => React}/Views/RCTPickerManager.m (88%) rename {ReactKit => React}/Views/RCTPointerEvents.h (100%) rename {ReactKit => React}/Views/RCTScrollView.h (100%) rename {ReactKit => React}/Views/RCTScrollView.m (99%) rename {ReactKit => React}/Views/RCTScrollViewManager.h (100%) rename {ReactKit => React}/Views/RCTScrollViewManager.m (55%) rename {ReactKit => React}/Views/RCTScrollableProtocol.h (100%) rename {ReactKit => React}/Views/RCTShadowView.h (96%) rename {ReactKit => React}/Views/RCTShadowView.m (99%) rename {ReactKit => React}/Views/RCTSliderManager.h (100%) rename {ReactKit => React}/Views/RCTSliderManager.m (88%) rename {ReactKit => React}/Views/RCTSwitch.h (100%) rename {ReactKit => React}/Views/RCTSwitch.m (94%) rename {ReactKit => React}/Views/RCTSwitchManager.h (100%) rename {ReactKit => React}/Views/RCTSwitchManager.m (79%) rename {ReactKit => React}/Views/RCTTabBar.h (100%) rename {ReactKit => React}/Views/RCTTabBar.m (99%) rename {ReactKit => React}/Views/RCTTabBarItem.h (100%) rename {ReactKit => React}/Views/RCTTabBarItem.m (98%) rename {ReactKit => React}/Views/RCTTabBarItemManager.h (100%) rename {ReactKit => React}/Views/RCTTabBarItemManager.m (71%) rename {ReactKit => React}/Views/RCTTabBarManager.h (100%) rename {ReactKit => React}/Views/RCTTabBarManager.m (100%) rename {ReactKit => React}/Views/RCTTextField.h (100%) rename {ReactKit => React}/Views/RCTTextField.m (99%) rename {ReactKit => React}/Views/RCTTextFieldManager.h (100%) rename {ReactKit => React}/Views/RCTTextFieldManager.m (64%) rename {ReactKit => React}/Views/RCTUIActivityIndicatorViewManager.h (100%) rename {ReactKit => React}/Views/RCTUIActivityIndicatorViewManager.m (62%) rename {ReactKit => React}/Views/RCTView.h (67%) rename {ReactKit => React}/Views/RCTView.m (66%) rename {ReactKit => React}/Views/RCTViewControllerProtocol.h (100%) rename {ReactKit => React}/Views/RCTViewManager.h (83%) create mode 100644 React/Views/RCTViewManager.m rename {ReactKit => React}/Views/RCTViewNodeProtocol.h (94%) rename {ReactKit => React}/Views/RCTWebView.h (100%) rename {ReactKit => React}/Views/RCTWebView.m (99%) rename {ReactKit => React}/Views/RCTWebViewManager.h (100%) rename {ReactKit => React}/Views/RCTWebViewManager.m (90%) rename {ReactKit => React}/Views/RCTWrapperViewController.h (100%) rename {ReactKit => React}/Views/RCTWrapperViewController.m (99%) rename ReactKit/Views/UIView+ReactKit.h => React/Views/UIView+React.h (85%) create mode 100644 React/Views/UIView+React.m delete mode 100644 ReactKit/ReactKit.podspec delete mode 100644 ReactKit/Views/RCTViewManager.m delete mode 100644 ReactKit/Views/UIView+ReactKit.m diff --git a/.flowconfig b/.flowconfig index 7e5099c58..c4265b9b2 100644 --- a/.flowconfig +++ b/.flowconfig @@ -18,9 +18,6 @@ # Ignore jest .*/react-native/node_modules/jest-cli/.* -# Ignore website -.*/website/.* - [include] [libs] diff --git a/Examples/2048/2048.xcodeproj/project.pbxproj b/Examples/2048/2048.xcodeproj/project.pbxproj index 696d9331d..bf1fb02aa 100644 --- a/Examples/2048/2048.xcodeproj/project.pbxproj +++ b/Examples/2048/2048.xcodeproj/project.pbxproj @@ -12,8 +12,8 @@ 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 1461632D1AC3E23900C2F5AD /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1461632C1AC3E22900C2F5AD /* libReact.a */; }; 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; - 8323482C1A77B59500B55238 /* libReactKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832348291A77B50100B55238 /* libReactKit.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -24,6 +24,13 @@ remoteGlobalIDString = 134814201AA4EA6300B7C361; remoteInfo = RCTAnimation; }; + 1461632B1AC3E22900C2F5AD /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146163271AC3E22900C2F5AD /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; + remoteInfo = React; + }; 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; @@ -31,13 +38,6 @@ remoteGlobalIDString = 58B5119B1A9E6C1200147676; remoteInfo = RCTText; }; - 832348281A77B50100B55238 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 834D32361A76971A00F38302 /* ReactKit.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; - remoteInfo = ReactKit; - }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ @@ -49,8 +49,8 @@ 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = 2048/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = 2048/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = 2048/main.m; sourceTree = ""; }; + 146163271AC3E22900C2F5AD /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = ../../React/React.xcodeproj; sourceTree = ""; }; 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = ../../Libraries/Text/RCTText.xcodeproj; sourceTree = ""; }; - 834D32361A76971A00F38302 /* ReactKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactKit.xcodeproj; path = ../../ReactKit/ReactKit.xcodeproj; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -58,8 +58,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 1461632D1AC3E23900C2F5AD /* libReact.a in Frameworks */, 13ACB6741AC2117000FF4204 /* libRCTAnimation.a in Frameworks */, - 8323482C1A77B59500B55238 /* libReactKit.a in Frameworks */, 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -88,10 +88,18 @@ name = 2048; sourceTree = ""; }; + 146163281AC3E22900C2F5AD /* Products */ = { + isa = PBXGroup; + children = ( + 1461632C1AC3E22900C2F5AD /* libReact.a */, + ); + name = Products; + sourceTree = ""; + }; 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( - 834D32361A76971A00F38302 /* ReactKit.xcodeproj */, + 146163271AC3E22900C2F5AD /* React.xcodeproj */, 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */, 13ACB66C1AC2113500FF4204 /* RCTAnimation.xcodeproj */, ); @@ -106,14 +114,6 @@ name = Products; sourceTree = ""; }; - 832348241A77B50100B55238 /* Products */ = { - isa = PBXGroup; - children = ( - 832348291A77B50100B55238 /* libReactKit.a */, - ); - name = Products; - sourceTree = ""; - }; 83CBB9F61A601CBA00E9B192 = { isa = PBXGroup; children = ( @@ -181,8 +181,8 @@ ProjectRef = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; }, { - ProductGroup = 832348241A77B50100B55238 /* Products */; - ProjectRef = 834D32361A76971A00F38302 /* ReactKit.xcodeproj */; + ProductGroup = 146163281AC3E22900C2F5AD /* Products */; + ProjectRef = 146163271AC3E22900C2F5AD /* React.xcodeproj */; }, ); projectRoot = ""; @@ -200,6 +200,13 @@ remoteRef = 13ACB6701AC2113600FF4204 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 1461632C1AC3E22900C2F5AD /* libReact.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libReact.a; + remoteRef = 1461632B1AC3E22900C2F5AD /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 832341B51AAA6A8300B99B32 /* libRCTText.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -207,13 +214,6 @@ remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 832348291A77B50100B55238 /* libReactKit.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libReactKit.a; - remoteRef = 832348281A77B50100B55238 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ @@ -257,6 +257,11 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../React/**", + ); INFOPLIST_FILE = "$(SRCROOT)/2048/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; OTHER_LDFLAGS = "-ObjC"; @@ -268,6 +273,11 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../React/**", + ); INFOPLIST_FILE = "$(SRCROOT)/2048/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; OTHER_LDFLAGS = "-ObjC"; @@ -312,7 +322,7 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", + "$(SRCROOT)/../../React/**", ); IPHONEOS_DEPLOYMENT_TARGET = 7.0; MTL_ENABLE_DEBUG_INFO = YES; @@ -352,7 +362,7 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", + "$(SRCROOT)/../../React/**", ); IPHONEOS_DEPLOYMENT_TARGET = 7.0; MTL_ENABLE_DEBUG_INFO = NO; diff --git a/Examples/Movies/Movies.xcodeproj/project.pbxproj b/Examples/Movies/Movies.xcodeproj/project.pbxproj index 8dfb1be4e..29eaf91c4 100644 --- a/Examples/Movies/Movies.xcodeproj/project.pbxproj +++ b/Examples/Movies/Movies.xcodeproj/project.pbxproj @@ -14,8 +14,8 @@ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 140D9B661AC36C42004F25EE /* libRCTLinking.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 14312D241AC3654D00CDC950 /* libRCTLinking.a */; }; + 14A2D4421AC3E43800CC738A /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 14A2D4411AC3E41A00CC738A /* libReact.a */; }; 58C5726B1AA6239E00CDF9C8 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58C5725B1AA6236500CDF9C8 /* libRCTText.a */; }; - 58C5726C1AA623A200CDF9C8 /* libReactKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58C572681AA6236600CDF9C8 /* libReactKit.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -40,6 +40,13 @@ remoteGlobalIDString = 134814201AA4EA6300B7C361; remoteInfo = RCTLinking; }; + 14A2D4401AC3E41A00CC738A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 14A2D43C1AC3E41A00CC738A /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; + remoteInfo = React; + }; 58C5725A1AA6236500CDF9C8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 587650F61A9EB120008B8F17 /* RCTText.xcodeproj */; @@ -47,13 +54,6 @@ remoteGlobalIDString = 58B5119B1A9E6C1200147676; remoteInfo = RCTText; }; - 58C572671AA6236600CDF9C8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 587650F91A9EB120008B8F17 /* ReactKit.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; - remoteInfo = ReactKit; - }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ @@ -67,8 +67,8 @@ 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Movies/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Movies/main.m; sourceTree = ""; }; 14312D1E1AC3654D00CDC950 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = ../../Libraries/LinkingIOS/RCTLinking.xcodeproj; sourceTree = ""; }; + 14A2D43C1AC3E41A00CC738A /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = ../../React/React.xcodeproj; sourceTree = ""; }; 587650F61A9EB120008B8F17 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = ../../Libraries/Text/RCTText.xcodeproj; sourceTree = SOURCE_ROOT; }; - 587650F91A9EB120008B8F17 /* ReactKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactKit.xcodeproj; path = ../../ReactKit/ReactKit.xcodeproj; sourceTree = SOURCE_ROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -76,11 +76,11 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 14A2D4421AC3E43800CC738A /* libReact.a in Frameworks */, 140D9B661AC36C42004F25EE /* libRCTLinking.a in Frameworks */, 1341801E1AA91750003F314A /* libRCTNetwork.a in Frameworks */, 13442C061AA90EA00037E5B0 /* libRCTImage.a in Frameworks */, 58C5726B1AA6239E00CDF9C8 /* libRCTText.a in Frameworks */, - 58C5726C1AA623A200CDF9C8 /* libReactKit.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -124,14 +124,22 @@ name = Products; sourceTree = ""; }; + 14A2D43D1AC3E41A00CC738A /* Products */ = { + isa = PBXGroup; + children = ( + 14A2D4411AC3E41A00CC738A /* libReact.a */, + ); + name = Products; + sourceTree = ""; + }; 58C571FC1AA6124500CDF9C8 /* Libraries */ = { isa = PBXGroup; children = ( + 14A2D43C1AC3E41A00CC738A /* React.xcodeproj */, 14312D1E1AC3654D00CDC950 /* RCTLinking.xcodeproj */, 134180151AA91740003F314A /* RCTNetwork.xcodeproj */, 13442C001AA90E7D0037E5B0 /* RCTImage.xcodeproj */, 587650F61A9EB120008B8F17 /* RCTText.xcodeproj */, - 587650F91A9EB120008B8F17 /* ReactKit.xcodeproj */, ); name = Libraries; sourceTree = ""; @@ -144,14 +152,6 @@ name = Products; sourceTree = ""; }; - 58C5725C1AA6236500CDF9C8 /* Products */ = { - isa = PBXGroup; - children = ( - 58C572681AA6236600CDF9C8 /* libReactKit.a */, - ); - name = Products; - sourceTree = ""; - }; 83CBB9F61A601CBA00E9B192 = { isa = PBXGroup; children = ( @@ -227,8 +227,8 @@ ProjectRef = 587650F61A9EB120008B8F17 /* RCTText.xcodeproj */; }, { - ProductGroup = 58C5725C1AA6236500CDF9C8 /* Products */; - ProjectRef = 587650F91A9EB120008B8F17 /* ReactKit.xcodeproj */; + ProductGroup = 14A2D43D1AC3E41A00CC738A /* Products */; + ProjectRef = 14A2D43C1AC3E41A00CC738A /* React.xcodeproj */; }, ); projectRoot = ""; @@ -260,6 +260,13 @@ remoteRef = 14312D231AC3654D00CDC950 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 14A2D4411AC3E41A00CC738A /* libReact.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libReact.a; + remoteRef = 14A2D4401AC3E41A00CC738A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 58C5725B1AA6236500CDF9C8 /* libRCTText.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -267,13 +274,6 @@ remoteRef = 58C5725A1AA6236500CDF9C8 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 58C572681AA6236600CDF9C8 /* libReactKit.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libReactKit.a; - remoteRef = 58C572671AA6236600CDF9C8 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ @@ -320,7 +320,7 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", + "$(SRCROOT)/../../React/**", ); INFOPLIST_FILE = "$(SRCROOT)/Movies/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; @@ -338,7 +338,7 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", + "$(SRCROOT)/../../React/**", ); INFOPLIST_FILE = "$(SRCROOT)/Movies/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; @@ -386,7 +386,7 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", + "$(SRCROOT)/../../React/**", ); IPHONEOS_DEPLOYMENT_TARGET = 7.0; MTL_ENABLE_DEBUG_INFO = YES; @@ -426,7 +426,7 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", + "$(SRCROOT)/../../React/**", ); IPHONEOS_DEPLOYMENT_TARGET = 7.0; MTL_ENABLE_DEBUG_INFO = NO; diff --git a/Examples/SampleApp/SampleApp.xcodeproj/project.pbxproj b/Examples/SampleApp/SampleApp.xcodeproj/project.pbxproj index ba0c1d97b..76c7963c0 100644 --- a/Examples/SampleApp/SampleApp.xcodeproj/project.pbxproj +++ b/Examples/SampleApp/SampleApp.xcodeproj/project.pbxproj @@ -19,8 +19,8 @@ 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; - 8323482C1A77B59500B55238 /* libReactKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832348291A77B50100B55238 /* libReactKit.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -73,6 +73,13 @@ remoteGlobalIDString = 832C81801AAF6DEF007FA2F7; remoteInfo = RCTVibration; }; + 146834031AC3E56700842450 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; + remoteInfo = React; + }; 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; @@ -80,13 +87,6 @@ remoteGlobalIDString = 58B5119B1A9E6C1200147676; remoteInfo = RCTText; }; - 832348281A77B50100B55238 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 834D32361A76971A00F38302 /* ReactKit.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; - remoteInfo = ReactKit; - }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ @@ -105,8 +105,8 @@ 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = iOS/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = iOS/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = iOS/main.m; sourceTree = ""; }; + 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = ../../React/React.xcodeproj; sourceTree = ""; }; 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = ../../Libraries/Text/RCTText.xcodeproj; sourceTree = ""; }; - 834D32361A76971A00F38302 /* ReactKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactKit.xcodeproj; path = ../../ReactKit/ReactKit.xcodeproj; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -115,6 +115,7 @@ buildActionMask = 2147483647; files = ( 00481BEA1AC0C89D00671115 /* libicucore.dylib in Frameworks */, + 146834051AC3E58100842450 /* libReact.a in Frameworks */, 00481BE81AC0C86700671115 /* libRCTWebSocketDebugger.a in Frameworks */, 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */, 00C302E61ABCBA2D00DB3ED1 /* libRCTAdSupport.a in Frameworks */, @@ -122,7 +123,6 @@ 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */, 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */, 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */, - 8323482C1A77B59500B55238 /* libReactKit.a in Frameworks */, 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -199,10 +199,18 @@ name = SampleApp; sourceTree = ""; }; + 146834001AC3E56700842450 /* Products */ = { + isa = PBXGroup; + children = ( + 146834041AC3E56700842450 /* libReact.a */, + ); + name = Products; + sourceTree = ""; + }; 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( - 834D32361A76971A00F38302 /* ReactKit.xcodeproj */, + 146833FF1AC3E56700842450 /* React.xcodeproj */, 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */, 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, 00C302AF1ABCB8E700DB3ED1 /* RCTAdSupport.xcodeproj */, @@ -224,14 +232,6 @@ name = Products; sourceTree = ""; }; - 832348241A77B50100B55238 /* Products */ = { - isa = PBXGroup; - children = ( - 832348291A77B50100B55238 /* libReactKit.a */, - ); - name = Products; - sourceTree = ""; - }; 83CBB9F61A601CBA00E9B192 = { isa = PBXGroup; children = ( @@ -323,8 +323,8 @@ ProjectRef = 00481BDB1AC0C7FA00671115 /* RCTWebSocketDebugger.xcodeproj */; }, { - ProductGroup = 832348241A77B50100B55238 /* Products */; - ProjectRef = 834D32361A76971A00F38302 /* ReactKit.xcodeproj */; + ProductGroup = 146834001AC3E56700842450 /* Products */; + ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */; }, ); projectRoot = ""; @@ -384,6 +384,13 @@ remoteRef = 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 146834041AC3E56700842450 /* libReact.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libReact.a; + remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 832341B51AAA6A8300B99B32 /* libRCTText.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -391,13 +398,6 @@ remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 832348291A77B50100B55238 /* libReactKit.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libReactKit.a; - remoteRef = 832348281A77B50100B55238 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ @@ -441,6 +441,11 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../React/**", + ); INFOPLIST_FILE = "$(SRCROOT)/iOS/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; OTHER_LDFLAGS = "-ObjC"; @@ -452,6 +457,11 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../React/**", + ); INFOPLIST_FILE = "$(SRCROOT)/iOS/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; OTHER_LDFLAGS = "-ObjC"; @@ -496,7 +506,7 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", + "$(SRCROOT)/../../React/**", ); IPHONEOS_DEPLOYMENT_TARGET = 7.0; MTL_ENABLE_DEBUG_INFO = YES; @@ -536,7 +546,7 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", + "$(SRCROOT)/../../React/**", ); IPHONEOS_DEPLOYMENT_TARGET = 7.0; MTL_ENABLE_DEBUG_INFO = NO; diff --git a/Examples/TicTacToe/TicTacToe.xcodeproj/project.pbxproj b/Examples/TicTacToe/TicTacToe.xcodeproj/project.pbxproj index 48b484437..c1333f78b 100644 --- a/Examples/TicTacToe/TicTacToe.xcodeproj/project.pbxproj +++ b/Examples/TicTacToe/TicTacToe.xcodeproj/project.pbxproj @@ -12,7 +12,7 @@ 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 58C572501AA6229900CDF9C8 /* libReactKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58C572471AA6224300CDF9C8 /* libReactKit.a */; }; + 144C5F691AC3E5E300B004E7 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 144C5F681AC3E5D800B004E7 /* libReact.a */; }; 58C572511AA6229D00CDF9C8 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58C5724D1AA6224400CDF9C8 /* libRCTText.a */; }; /* End PBXBuildFile section */ @@ -24,12 +24,12 @@ remoteGlobalIDString = 58B5115D1A9E6B3D00147676; remoteInfo = RCTImage; }; - 58C572461AA6224300CDF9C8 /* PBXContainerItemProxy */ = { + 144C5F671AC3E5D800B004E7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 587650E31A9EB0DF008B8F17 /* ReactKit.xcodeproj */; + containerPortal = 144C5F631AC3E5D800B004E7 /* React.xcodeproj */; proxyType = 2; remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; - remoteInfo = ReactKit; + remoteInfo = React; }; 58C5724C1AA6224400CDF9C8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -49,8 +49,8 @@ 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = TicTacToe/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = TicTacToe/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = TicTacToe/main.m; sourceTree = ""; }; + 144C5F631AC3E5D800B004E7 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = ../../React/React.xcodeproj; sourceTree = ""; }; 587650DA1A9EB0DB008B8F17 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = ../../Libraries/Text/RCTText.xcodeproj; sourceTree = ""; }; - 587650E31A9EB0DF008B8F17 /* ReactKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactKit.xcodeproj; path = ../../ReactKit/ReactKit.xcodeproj; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -58,8 +58,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 144C5F691AC3E5E300B004E7 /* libReact.a in Frameworks */, 1341803E1AA91802003F314A /* libRCTImage.a in Frameworks */, - 58C572501AA6229900CDF9C8 /* libReactKit.a in Frameworks */, 58C572511AA6229D00CDF9C8 /* libRCTText.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -88,24 +88,24 @@ name = TicTacToe; sourceTree = ""; }; + 144C5F641AC3E5D800B004E7 /* Products */ = { + isa = PBXGroup; + children = ( + 144C5F681AC3E5D800B004E7 /* libReact.a */, + ); + name = Products; + sourceTree = ""; + }; 58C572071AA6126D00CDF9C8 /* Libraries */ = { isa = PBXGroup; children = ( + 144C5F631AC3E5D800B004E7 /* React.xcodeproj */, 134180381AA917ED003F314A /* RCTImage.xcodeproj */, 587650DA1A9EB0DB008B8F17 /* RCTText.xcodeproj */, - 587650E31A9EB0DF008B8F17 /* ReactKit.xcodeproj */, ); name = Libraries; sourceTree = ""; }; - 58C572411AA6224300CDF9C8 /* Products */ = { - isa = PBXGroup; - children = ( - 58C572471AA6224300CDF9C8 /* libReactKit.a */, - ); - name = Products; - sourceTree = ""; - }; 58C572481AA6224300CDF9C8 /* Products */ = { isa = PBXGroup; children = ( @@ -181,8 +181,8 @@ ProjectRef = 587650DA1A9EB0DB008B8F17 /* RCTText.xcodeproj */; }, { - ProductGroup = 58C572411AA6224300CDF9C8 /* Products */; - ProjectRef = 587650E31A9EB0DF008B8F17 /* ReactKit.xcodeproj */; + ProductGroup = 144C5F641AC3E5D800B004E7 /* Products */; + ProjectRef = 144C5F631AC3E5D800B004E7 /* React.xcodeproj */; }, ); projectRoot = ""; @@ -200,11 +200,11 @@ remoteRef = 1341803C1AA917ED003F314A /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 58C572471AA6224300CDF9C8 /* libReactKit.a */ = { + 144C5F681AC3E5D800B004E7 /* libReact.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - path = libReactKit.a; - remoteRef = 58C572461AA6224300CDF9C8 /* PBXContainerItemProxy */; + path = libReact.a; + remoteRef = 144C5F671AC3E5D800B004E7 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; 58C5724D1AA6224400CDF9C8 /* libRCTText.a */ = { @@ -257,6 +257,11 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../React/**", + ); INFOPLIST_FILE = "$(SRCROOT)/TicTacToe/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LIBRARY_SEARCH_PATHS = "$(inherited)"; @@ -269,6 +274,11 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../React/**", + ); INFOPLIST_FILE = "$(SRCROOT)/TicTacToe/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LIBRARY_SEARCH_PATHS = "$(inherited)"; @@ -314,7 +324,7 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", + "$(SRCROOT)/../../React/**", ); IPHONEOS_DEPLOYMENT_TARGET = 7.0; MTL_ENABLE_DEBUG_INFO = YES; @@ -354,7 +364,7 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", + "$(SRCROOT)/../../React/**", ); IPHONEOS_DEPLOYMENT_TARGET = 7.0; MTL_ENABLE_DEBUG_INFO = NO; diff --git a/Examples/UIExplorer/BorderExample.js b/Examples/UIExplorer/BorderExample.js new file mode 100644 index 000000000..668e77880 --- /dev/null +++ b/Examples/UIExplorer/BorderExample.js @@ -0,0 +1,90 @@ +/** + * Copyright 2004-present Facebook. All Rights Reserved. + */ +'use strict'; + +var React = require('react-native'); +var { + StyleSheet, + View +} = React; + +var styles = StyleSheet.create({ + box: { + width: 100, + height: 100, + }, + border1: { + borderWidth: 10, + borderColor: 'brown', + }, + borderRadius: { + borderWidth: 10, + borderRadius: 10, + borderColor: 'cyan', + }, + border2: { + borderWidth: 10, + borderTopColor: 'red', + borderRightColor: 'yellow', + borderBottomColor: 'green', + borderLeftColor: 'blue', + }, + border3: { + borderColor: 'purple', + borderTopWidth: 10, + borderRightWidth: 20, + borderBottomWidth: 30, + borderLeftWidth: 40, + }, + border4: { + borderTopWidth: 10, + borderTopColor: 'red', + borderRightWidth: 20, + borderRightColor: 'yellow', + borderBottomWidth: 30, + borderBottomColor: 'green', + borderLeftWidth: 40, + borderLeftColor: 'blue', + }, +}); + +exports.title = 'Border'; +exports.description = 'View borders'; +exports.examples = [ + { + title: 'Equal-Width / Same-Color', + description: 'borderWidth & borderColor', + render() { + return ; + } + }, + { + title: 'Equal-Width / Same-Color', + description: 'borderWidth & borderColor', + render() { + return ; + } + }, + { + title: 'Equal-Width Borders', + description: 'borderWidth & border*Color', + render() { + return ; + } + }, + { + title: 'Same-Color Borders', + description: 'border*Width & borderColor', + render() { + return ; + } + }, + { + title: 'Custom Borders', + description: 'border*Width & border*Color', + render() { + return ; + } + }, +]; diff --git a/Examples/UIExplorer/ReactNavigator/BreadcrumbNavSample.js b/Examples/UIExplorer/Navigator/BreadcrumbNavSample.js similarity index 78% rename from Examples/UIExplorer/ReactNavigator/BreadcrumbNavSample.js rename to Examples/UIExplorer/Navigator/BreadcrumbNavSample.js index 17be12f8d..0734dff41 100644 --- a/Examples/UIExplorer/ReactNavigator/BreadcrumbNavSample.js +++ b/Examples/UIExplorer/Navigator/BreadcrumbNavSample.js @@ -1,20 +1,23 @@ /** - * Copyright 2004-present Facebook. All Rights Reserved. + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. * - * @providesModule BreadcrumbNavSample + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. */ 'use strict'; -var BreadcrumbNavigationBar = require('BreadcrumbNavigationBar'); -var ReactNavigator = require('ReactNavigator'); -var React = require('React'); -var StyleSheet = require('StyleSheet'); -var ScrollView = require('ScrollView'); -var TabBarItemIOS = require('TabBarItemIOS'); -var TabBarIOS = require('TabBarIOS'); -var Text = require('Text'); -var TouchableBounce = require('TouchableBounce'); -var View = require('View'); +var React = require('react-native'); +var { + Navigator, + ScrollView, + StyleSheet, + TabBarIOS, + Text, + View, + TouchableHighlight, +} = React; var SAMPLE_TEXT = 'Top Pushes. Middle Replaces. Bottom Pops.'; @@ -43,28 +46,28 @@ var SampleNavigationBarRouteMapper = { }, titleContentForRoute: function(route, navigator) { return ( - navigator.push(_getRandomRoute())}> {route.title} - + ); }, iconForRoute: function(route, navigator) { var onPress = navigator.popToRoute.bind(navigator, route); return ( - + - + ); }, separatorForRoute: function(route, navigator) { return ( - + - + ); } }; @@ -76,49 +79,49 @@ var renderScene = function(route, navigator) { return ( - request push soon - - + {content} - - + {content} - - + {content} - - + {content} - - + {content} - - + request pop soon - - + Immediate set two routes - - + pop to top soon - + ); @@ -180,41 +183,41 @@ var BreadcrumbNavSample = React.createClass({ }; return ( - - } /> - - + - ReactNavigator.SceneConfigs.FloatFromBottom} + Navigator.SceneConfigs.FloatFromBottom} debugOverlay={false} style={[styles.appContainer]} initialRoute={initialRoute} renderScene={renderScene} navigationBar={ - } /> - + ); }, diff --git a/Examples/UIExplorer/ReactNavigator/JumpingNavSample.js b/Examples/UIExplorer/Navigator/JumpingNavSample.js similarity index 79% rename from Examples/UIExplorer/ReactNavigator/JumpingNavSample.js rename to Examples/UIExplorer/Navigator/JumpingNavSample.js index fd44f7384..fa3d72b0d 100644 --- a/Examples/UIExplorer/ReactNavigator/JumpingNavSample.js +++ b/Examples/UIExplorer/Navigator/JumpingNavSample.js @@ -1,17 +1,22 @@ /** - * Copyright 2004-present Facebook. All Rights Reserved. + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. * - * @providesModule JumpingNavSample + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. */ 'use strict'; -var ReactNavigator = require('ReactNavigator'); -var React = require('React'); -var StyleSheet = require('StyleSheet'); -var ScrollView = require('ScrollView'); -var Text = require('Text'); -var TouchableBounce = require('TouchableBounce'); -var View = require('View'); +var React = require('react-native'); +var { + Navigator, + StyleSheet, + ScrollView, + Text, + TouchableHighlight, + View, +} = React; var _getRandomRoute = function() { return { @@ -32,55 +37,55 @@ var renderScene = function(route, navigator) { {route.randNumber} - { navigator.jumpBack(); }}> jumpBack - - + { navigator.jumpForward(); }}> jumpForward - - + { navigator.jumpTo(INIT_ROUTE); }}> jumpTo initial route - - + { navigator.push(_getRandomRoute()); }}> destructive: push - - + { navigator.replace(_getRandomRoute()); }}> destructive: replace - - + { navigator.pop(); }}> destructive: pop - - + { navigator.immediatelyResetRouteStack([ _getRandomRoute(), @@ -90,15 +95,15 @@ var renderScene = function(route, navigator) { destructive: Immediate set two routes - - + { navigator.popToTop(); }}> destructive: pop to top - + ); @@ -109,7 +114,7 @@ class JumpingNavBar extends React.Component { return ( {this.props.routeStack.map((route, index) => ( - { + { this.props.navigator.jumpTo(route); }}> @@ -121,7 +126,7 @@ class JumpingNavBar extends React.Component { {index} - + ))} ); @@ -132,7 +137,7 @@ var JumpingNavSample = React.createClass({ render: function() { return ( - navigator.pop()}> + navigator.pop()}> {previousRoute.title} - + ); }, RightButton: function(route, navigator, index, navState) { return ( - navigator.push(newRandomRoute())}> Next - + ); }, @@ -70,7 +75,7 @@ var NavigationBarSample = React.createClass({ render: function() { return ( - )} navigationBar={ - } diff --git a/Examples/UIExplorer/ReactNavigator/ReactNavigatorExample.js b/Examples/UIExplorer/Navigator/NavigatorExample.js similarity index 77% rename from Examples/UIExplorer/ReactNavigator/ReactNavigatorExample.js rename to Examples/UIExplorer/Navigator/NavigatorExample.js index 2ebec71dd..f0cae637d 100644 --- a/Examples/UIExplorer/ReactNavigator/ReactNavigatorExample.js +++ b/Examples/UIExplorer/Navigator/NavigatorExample.js @@ -1,14 +1,21 @@ /** - * Copyright 2004-present Facebook. All Rights Reserved. + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. */ 'use strict'; -var React = require('React'); -var ReactNavigator = require('ReactNavigator'); -var StyleSheet = require('StyleSheet'); -var Text = require('Text'); -var ScrollView = require('ScrollView'); -var TouchableHighlight = require('TouchableHighlight'); +var React = require('react-native'); +var { + Navigator, + ScrollView, + StyleSheet, + Text, + TouchableHighlight, +} = React; var BreadcrumbNavSample = require('./BreadcrumbNavSample'); var NavigationBarSample = require('./NavigationBarSample'); var JumpingNavSample = require('./JumpingNavSample'); @@ -35,7 +42,7 @@ class NavMenu extends React.Component { { this.props.onExampleExit(); }}> - Exit ReactNavigator Example + Exit Navigator Example ); @@ -45,7 +52,7 @@ class NavMenu extends React.Component { var TabBarExample = React.createClass({ statics: { - title: '', + title: '', description: 'JS-implemented navigation', }, @@ -69,11 +76,11 @@ var TabBarExample = React.createClass({ render: function() { return ( - ReactNavigator.SceneConfigs.FloatFromBottom} + configureScene={(route) => Navigator.SceneConfigs.FloatFromBottom} /> ); }, diff --git a/Examples/UIExplorer/ReactNavigator/NestedBreadcrumbNavSample.js b/Examples/UIExplorer/ReactNavigator/NestedBreadcrumbNavSample.js deleted file mode 100644 index 20d857472..000000000 --- a/Examples/UIExplorer/ReactNavigator/NestedBreadcrumbNavSample.js +++ /dev/null @@ -1,211 +0,0 @@ -/** - * Copyright 2004-present Facebook. All Rights Reserved. - * - * @providesModule NestedBreadcrumbNavSample - */ -'use strict'; - -var BreadcrumbNavigationBar = require('BreadcrumbNavigationBar'); -var ReactNavigator = require('ReactNavigator'); -var React = require('React'); -var ScrollView = require('ScrollView'); -var StyleSheet = require('StyleSheet'); -var Text = require('Text'); -var TouchableBounce = require('TouchableBounce'); -var View = require('View'); - -var SAMPLE_TEXT = 'Top Pushes. Middle Replaces. Bottom Pops.'; - -var _getRandomRoute = function() { - return { - backButtonTitle: 'Back' + ('' + 10 * Math.random()).substr(0, 1), - content: - SAMPLE_TEXT + '\nHere\'s a random number ' + Math.random(), - title: 'Pushed!', - rightButtonTitle: Math.random() > 0.5 ? 'Right' : 'Button', - }; -}; - - -var HorizontalNavigationBarRouteMapper = { - rightContentForRoute: function(route, navigator) { - if (route.rightButtonTitle) { - return ( - - {route.rightButtonTitle} - - ); - } else { - return null; - } - }, - titleContentForRoute: function(route, navigator) { - return ( - () => { navigator.push(_getRandomRoute()); }}> - - {route.title} - - - ); - }, - iconForRoute: function(route, navigator) { - var onPress = - navigator.popToRoute.bind(navigator, route); - return ( - - - - ); - }, - separatorForRoute: function(route, navigator) { - return ( - - - - ); - } -}; - -var ThirdDeepRouteMapper = (route, navigator) => ( - - - - { navigator.push(_getRandomRoute()); }}> - - request push soon - - - - - -); - -var SecondDeepRouteMapper = (route, navigator) => ( - - { navigator.push(_getRandomRoute()); }}> - - Push Horizontal - - - - } - /> - -); - -var FirstDeepRouteMapper = (route, navigator) => ( - - { navigator.push(_getRandomRoute()); }}> - - Push Outer Vertical Stack - - - - } - /> - -); - -/** - * The outer component. - */ -var NestedBreadcrumbNavSample = React.createClass({ - render: function() { - var initialRoute = {title: 'Vertical'}; - // No navigation bar. - return ( - ReactNavigator.SceneConfigs.FloatFromBottom} - initialRoute={initialRoute} - renderScene={FirstDeepRouteMapper} - /> - ); - } -}); - -var styles = StyleSheet.create({ - navigationItem: { - backgroundColor: '#eeeeee', - shadowColor: 'black', - shadowRadius: 20, - shadowOffset: {w: 0, h: -10}, - }, - paddingForNavBar: { - paddingTop: 60, - }, - paddingForMenuBar: { - paddingTop: 10, - }, - button: { - backgroundColor: '#888888', - margin: 10, - marginTop: 10, - padding: 10, - marginRight: 20, - }, - buttonText: { - fontSize: 12, - textAlign: 'center', - color: 'white', - }, - appContainer: { - overflow: 'hidden', - backgroundColor: '#dddddd', - flex: 1, - }, - titleText: { - fontSize: 18, - color: '#666666', - textAlign: 'center', - fontWeight: '500', - lineHeight: 32, - }, - filterText: { - color: '#5577ff', - }, - // TODO: Accept icons from route. - crumbIconPlaceholder: { - flex: 1, - backgroundColor: '#666666', - }, - crumbSeparatorPlaceholder: { - flex: 1, - backgroundColor: '#aaaaaa', - }, - secondDeepNavigator: { - margin: 0, - borderColor: '#666666', - borderWidth: 0.5, - height: 400, - }, - thirdDeepNavigator: { - margin: 0, - borderColor: '#aaaaaa', - borderWidth: 0.5, - height: 400, - }, - thirdDeepScrollContent: { - height: 1000, - } -}); - -module.exports = NestedBreadcrumbNavSample; diff --git a/Examples/UIExplorer/ResponderExample.js b/Examples/UIExplorer/ResponderExample.js index 73398ed1b..529e9f5b6 100644 --- a/Examples/UIExplorer/ResponderExample.js +++ b/Examples/UIExplorer/ResponderExample.js @@ -1,5 +1,11 @@ /** - * Copyright 2004-present Facebook. All Rights Reserved. + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * * @flow */ 'use strict'; diff --git a/Examples/UIExplorer/TabBarExample.js b/Examples/UIExplorer/TabBarExample.js index 793bfd309..f5d07d68f 100644 --- a/Examples/UIExplorer/TabBarExample.js +++ b/Examples/UIExplorer/TabBarExample.js @@ -10,14 +10,14 @@ */ 'use strict'; -var React = require('React'); -var TabBarIOS = require('TabBarIOS'); -var TabBarItemIOS = require('TabBarItemIOS'); -var StyleSheet = require('StyleSheet'); -var Text = require('Text'); -var View = require('View'); - - +var React = require('react-native'); +var { + StyleSheet, + TabBarIOS, + Text, + View, +} = React; +var TabBarItemIOS = TabBarIOS.Item; var TabBarExample = React.createClass({ statics: { diff --git a/Examples/UIExplorer/UIExplorer.xcodeproj/project.pbxproj b/Examples/UIExplorer/UIExplorer.xcodeproj/project.pbxproj index 0b4496435..e5e783e6c 100644 --- a/Examples/UIExplorer/UIExplorer.xcodeproj/project.pbxproj +++ b/Examples/UIExplorer/UIExplorer.xcodeproj/project.pbxproj @@ -12,7 +12,6 @@ 00D2771C1AB8C55500DC1E48 /* libicucore.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 00D2771B1AB8C55500DC1E48 /* libicucore.dylib */; }; 13417FE91AA91432003F314A /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 13417FE81AA91428003F314A /* libRCTImage.a */; }; 134180011AA9153C003F314A /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 13417FEF1AA914B8003F314A /* libRCTText.a */; }; - 134180021AA9153C003F314A /* libReactKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 13417FFF1AA91531003F314A /* libReactKit.a */; }; 1341802C1AA9178B003F314A /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1341802B1AA91779003F314A /* libRCTNetwork.a */; }; 134454601AAFCABD003F0779 /* libRCTAdSupport.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1344545A1AAFCAAE003F0779 /* libRCTAdSupport.a */; }; 134A8A2A1AACED7A00945AAE /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 134A8A251AACED6A00945AAE /* libRCTGeolocation.a */; }; @@ -21,6 +20,7 @@ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 147CED4C1AB3532B00DA3E4C /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 147CED4B1AB34F8C00DA3E4C /* libRCTActionSheet.a */; }; + 14AADF051AC3DBB1002390C9 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 14AADF041AC3DB95002390C9 /* libReact.a */; }; 14DC67F41AB71881001358AB /* libRCTPushNotification.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 14DC67F11AB71876001358AB /* libRCTPushNotification.a */; }; 58005BF21ABA80A60062E044 /* libRCTTest.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58005BEE1ABA80530062E044 /* libRCTTest.a */; }; D85B829E1AB6D5D7003F4FE2 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D85B829C1AB6D5CE003F4FE2 /* libRCTVibration.a */; }; @@ -55,13 +55,6 @@ remoteGlobalIDString = 58B5119B1A9E6C1200147676; remoteInfo = RCTText; }; - 13417FFE1AA91531003F314A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 13417FFA1AA91531003F314A /* ReactKit.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; - remoteInfo = ReactKit; - }; 1341802A1AA91779003F314A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 134180261AA91779003F314A /* RCTNetwork.xcodeproj */; @@ -90,6 +83,13 @@ remoteGlobalIDString = 134814201AA4EA6300B7C361; remoteInfo = RCTActionSheet; }; + 14AADF031AC3DB95002390C9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 14AADEFF1AC3DB95002390C9 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; + remoteInfo = React; + }; 14DC67F01AB71876001358AB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 14DC67E71AB71876001358AB /* RCTPushNotification.xcodeproj */; @@ -121,7 +121,6 @@ 00D2771B1AB8C55500DC1E48 /* libicucore.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libicucore.dylib; path = usr/lib/libicucore.dylib; sourceTree = SDKROOT; }; 13417FE31AA91428003F314A /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = ../../Libraries/Image/RCTImage.xcodeproj; sourceTree = ""; }; 13417FEA1AA914B8003F314A /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = ../../Libraries/Text/RCTText.xcodeproj; sourceTree = ""; }; - 13417FFA1AA91531003F314A /* ReactKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactKit.xcodeproj; path = ../../ReactKit/ReactKit.xcodeproj; sourceTree = ""; }; 134180261AA91779003F314A /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = ../../Libraries/Network/RCTNetwork.xcodeproj; sourceTree = ""; }; 134454551AAFCAAE003F0779 /* RCTAdSupport.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAdSupport.xcodeproj; path = ../../Libraries/AdSupport/RCTAdSupport.xcodeproj; sourceTree = ""; }; 134A8A201AACED6A00945AAE /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = ../../Libraries/Geolocation/RCTGeolocation.xcodeproj; sourceTree = ""; }; @@ -132,6 +131,7 @@ 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = UIExplorer/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = UIExplorer/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = UIExplorer/main.m; sourceTree = ""; }; + 14AADEFF1AC3DB95002390C9 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = ../../React/React.xcodeproj; sourceTree = ""; }; 14DC67E71AB71876001358AB /* RCTPushNotification.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTPushNotification.xcodeproj; path = ../../Libraries/PushNotificationIOS/RCTPushNotification.xcodeproj; sourceTree = ""; }; 14E0EEC81AB118F7000DECC3 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = ../../Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj; sourceTree = ""; }; 58005BE41ABA80530062E044 /* RCTTest.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTTest.xcodeproj; path = ../../Libraries/RCTTest/RCTTest.xcodeproj; sourceTree = ""; }; @@ -151,6 +151,7 @@ buildActionMask = 2147483647; files = ( 00D2771C1AB8C55500DC1E48 /* libicucore.dylib in Frameworks */, + 14AADF051AC3DBB1002390C9 /* libReact.a in Frameworks */, 00D2771A1AB8C3E100DC1E48 /* libRCTWebSocketDebugger.a in Frameworks */, 58005BF21ABA80A60062E044 /* libRCTTest.a in Frameworks */, D85B829E1AB6D5D7003F4FE2 /* libRCTVibration.a in Frameworks */, @@ -160,7 +161,6 @@ 134A8A2A1AACED7A00945AAE /* libRCTGeolocation.a in Frameworks */, 1341802C1AA9178B003F314A /* libRCTNetwork.a in Frameworks */, 134180011AA9153C003F314A /* libRCTText.a in Frameworks */, - 134180021AA9153C003F314A /* libReactKit.a in Frameworks */, 13417FE91AA91432003F314A /* libRCTImage.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -196,7 +196,7 @@ 1316A21D1AA397F400C0188E /* Libraries */ = { isa = PBXGroup; children = ( - 13417FFA1AA91531003F314A /* ReactKit.xcodeproj */, + 14AADEFF1AC3DB95002390C9 /* React.xcodeproj */, 14DC67E71AB71876001358AB /* RCTPushNotification.xcodeproj */, 14E0EEC81AB118F7000DECC3 /* RCTActionSheet.xcodeproj */, 134454551AAFCAAE003F0779 /* RCTAdSupport.xcodeproj */, @@ -228,14 +228,6 @@ name = Products; sourceTree = ""; }; - 13417FFB1AA91531003F314A /* Products */ = { - isa = PBXGroup; - children = ( - 13417FFF1AA91531003F314A /* libReactKit.a */, - ); - name = Products; - sourceTree = ""; - }; 134180271AA91779003F314A /* Products */ = { isa = PBXGroup; children = ( @@ -281,6 +273,14 @@ name = Products; sourceTree = ""; }; + 14AADF001AC3DB95002390C9 /* Products */ = { + isa = PBXGroup; + children = ( + 14AADF041AC3DB95002390C9 /* libReact.a */, + ); + name = Products; + sourceTree = ""; + }; 14DC67E81AB71876001358AB /* Products */ = { isa = PBXGroup; children = ( @@ -430,8 +430,8 @@ ProjectRef = 00D2770E1AB8C2C700DC1E48 /* RCTWebSocketDebugger.xcodeproj */; }, { - ProductGroup = 13417FFB1AA91531003F314A /* Products */; - ProjectRef = 13417FFA1AA91531003F314A /* ReactKit.xcodeproj */; + ProductGroup = 14AADF001AC3DB95002390C9 /* Products */; + ProjectRef = 14AADEFF1AC3DB95002390C9 /* React.xcodeproj */; }, ); projectRoot = ""; @@ -464,13 +464,6 @@ remoteRef = 13417FEE1AA914B8003F314A /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 13417FFF1AA91531003F314A /* libReactKit.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libReactKit.a; - remoteRef = 13417FFE1AA91531003F314A /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; 1341802B1AA91779003F314A /* libRCTNetwork.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -499,6 +492,13 @@ remoteRef = 147CED4A1AB34F8C00DA3E4C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 14AADF041AC3DB95002390C9 /* libReact.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libReact.a; + remoteRef = 14AADF031AC3DB95002390C9 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 14DC67F11AB71876001358AB /* libRCTPushNotification.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -595,6 +595,11 @@ "FB_REFERENCE_IMAGE_DIR=\"\\\"$(SOURCE_ROOT)/$(PROJECT_NAME)Tests/ReferenceImages\\\"\"", "$(inherited)", ); + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../React/**", + ); INFOPLIST_FILE = UIExplorerTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -611,6 +616,11 @@ "$(SDKROOT)/Developer/Library/Frameworks", "$(inherited)", ); + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../React/**", + ); INFOPLIST_FILE = UIExplorerTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -622,11 +632,12 @@ 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", + "$(SRCROOT)/../../React/**", ); INFOPLIST_FILE = "$(SRCROOT)/UIExplorer/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; @@ -639,11 +650,12 @@ 13B07F951A680F5B00A75B9A /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", + "$(SRCROOT)/../../React/**", ); INFOPLIST_FILE = "$(SRCROOT)/UIExplorer/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; @@ -690,7 +702,7 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", + "$(SRCROOT)/../../React/**", ); IPHONEOS_DEPLOYMENT_TARGET = 7.0; MTL_ENABLE_DEBUG_INFO = YES; @@ -730,7 +742,7 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", + "$(SRCROOT)/../../React/**", ); IPHONEOS_DEPLOYMENT_TARGET = 7.0; MTL_ENABLE_DEBUG_INFO = NO; diff --git a/Examples/UIExplorer/UIExplorer/Images.xcassets/tabnav_list.imageset/Contents.json b/Examples/UIExplorer/UIExplorer/Images.xcassets/tabnav_list.imageset/Contents.json new file mode 100644 index 000000000..cf064d8c1 --- /dev/null +++ b/Examples/UIExplorer/UIExplorer/Images.xcassets/tabnav_list.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x", + "filename" : "tabnav_list@3x.png" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Examples/UIExplorer/UIExplorer/Images.xcassets/tabnav_list.imageset/tabnav_list@3x.png b/Examples/UIExplorer/UIExplorer/Images.xcassets/tabnav_list.imageset/tabnav_list@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6cf72279023724a465ff4bbf5142332aeae18b6b GIT binary patch literal 360 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!f+emICBgY=CFO}lsSE{q>B&W< z#TgEzo}U>Q7==7t978H@y}e_|*JL2lUifZ7+yNJTHN8B)SI-KkNEb@JHqPu35{P-3 z|AXJ*^oOSxKkZu>>a}vx!v+Qc2L?tK0f*15B^Gf{-GAk+Q{H_-Gw6ACgHrbi+fN-! z`fWb_bv@Y-HgOyCve{<+($$%>0`E2C39H}nV%hTY=bE-pQrmTT1O7f=vdhHbxxIR9 z$ONumOk1|H^}bK~-YGmQXnW;`6pHRCwC$oLg)aMHql9Eh0^+mryIx3xO(X1L2}n zZA^@qfa0x!#Oebt#>68gl1L!L2NJnit9XN&wjxTR7$csjsTz^^Vw9AE!6+J_&=y*y zQW{MowAA&Vk|C!D6JTEVYoScNPf>Nv2=kO7i zplg9TU?cDW@B`2V3;@G`2mB430uBOufGt2hFnufv$_Ew#uL8$WfC)W7GjKOBZY&6T z*Mbxo-S~8sWwW5GfkpU={NlU8V?Y}C9B($Ns0%EDc=cF2^-vN7T?V|xRjfATdA9&R0{?R7vL34( zc+#RY_S#L1OAu=q+queota0uZ!Oa}velNu*pc?quP!cP*!nL4T_!#pQxmn}<5^R`9 zx$}o{NFaLJ&KpYV1?IRCG!HoIt3Z3i$C$lRUvjU5?6_(iFq%j@2h>mtnuQ}?|Hbb# zXbkVbGQu>fDMLwvI!}_WpfbU0l^KIvY1m_|1g=pGAK0jQHBLWl^l)Xi1+m`hfaHQ3 zi04FW2!;Wy;V!f(s9AEMZ-7gQ1+5~QrnK4;^nm07hk?t9<%|c`63*r7Oa&EV7bz;d zhFH#RzzIS*9=2&kCW2m*6nunO&hcou~bv|XdXXDkRxiX28u7(qH+>?XyH zS7MvOa$j!)-(tvtwO<{;6L{P}f&_I137QsRBsxhVC>?Mv3%AY&K1`4xk55jD1l30< zut6YaV#p}qbHL*X6I8Dfv?)S?Ck29*YlIy(Crr?0m7q@|6gVUh)RwTD)*-DD)E=S0 z-vxpWXR)AzDnU`Qn=F7o!6)cV-!UxUJ`=O4Ung8puS!tV5W{D_xHMbhat439h;p*! z>H140Xw;zKpL|mf7B1Ne+{gWGVV1mRQb89iWDM@d48=6xYggqk2xh{tO3aTZ!v|SX#LggK(MQLLqnD3m7B+3Wo`l(l*$h ztm-m~|D}9El5m1XT4*QHYx<~4&~%57@-YmvuEzX(loU3r?>gWki%G_*K>@Swm>S2Y zETxT1h7X-#B8n|B3EFBY0nlksho&%s?ukjzgO&unY*2^0!U!6VDG*m;hOj5InO~cN zjqQ3|9m3kUZ2{@5K7YrdN*p#glEVV{a~*C_DN)Q88gw$N(}2zI4>F98ogiylfv@m<3dg4#J!Hj^s??qMTM1Q03wBv{S^A zUUwje?JC+U>A9{jUBp@Epe>@7B%5PCY-<_t4hNE!5DNNUaJ^=m>!b@Y3rZ>IQ^GZm zst{r%q7lD4B}F_S_^VYxt&BA`f)=J>2|0Eg6&Wg z?1?C*09U^C3*^spwW01NM{%Rcn)RBAxph&#ZnoPX2yTyle;hhhs3-of9p=Gz?=xIbR^)nhk%qo6!Chut zQ~!TpDec=0-G(Wl75Ms&`7coAKG8KM1?3R)A49UD$}Y}lbpQYW07*qoM6N<$f{TyX A@&Et; literal 0 HcmV?d00001 diff --git a/Examples/UIExplorer/UIExplorer/Images.xcassets/tabnav_settings.imageset/Contents.json b/Examples/UIExplorer/UIExplorer/Images.xcassets/tabnav_settings.imageset/Contents.json new file mode 100644 index 000000000..c665c5a07 --- /dev/null +++ b/Examples/UIExplorer/UIExplorer/Images.xcassets/tabnav_settings.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x", + "filename" : "tabnav_settings@3x.png" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Examples/UIExplorer/UIExplorer/Images.xcassets/tabnav_settings.imageset/tabnav_settings@3x.png b/Examples/UIExplorer/UIExplorer/Images.xcassets/tabnav_settings.imageset/tabnav_settings@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..581f2c72a769f54d36273600de2511e6ed6db022 GIT binary patch literal 1059 zcmV+;1l;?HP)2^fDIDn>lOjgSbzR1U=O7hr)JZbUqok`ScU^-c1c zY&LCo=5=P;?atu~0Xj2pzHWAB-pp*kvaEoiJb|&h3B&VRHUj=P&3fl0apdgUv6vRH);x|E8Ipq`?^qQa;@EV8^%RdnmlpwYf z!8l_&1+m8dVBq_}ZQz7p9m|4(mIdo)@r+`87RDRXA;>Pr&Kl6mS;tA>Kv2*DmgA|v z7vpi(L6Rgxjy-_qKy#V$O~55!T2M}rX)NDVrv7GZ-z~L9_yofL)>( zC%af*tK-Yda+Vj8BwLQ11>hNwlO)DT4(neal;xJhBj~N74%V7?vIIqJPlHC`7jQ=A zJ!rJS1l^H+lV;~LwiDGko1d>TST<0b18xA}GHrzM|DT8hRXg*#(;bhAf&K$h zz##?2r(!{!gdso<`;)-_1$hOv0XKmcz&C+)t8#qQv@|nUWt@5JZxZ|8R!Y#O zf}#DeCPBjrV&8NMvJ^}o!kPqy6--Mk)q=J)uYhiQO;B31ptRQnEov6DXs)0JyMnef z3)=FUpgeWJ+o>~J)3j$-hA^y&~JjwyE`~AZ+~&&7N;QJzCXykfl9)$hD?p) dGjG9j<3AdogG@(7RlEQI002ovPDHLkV1mYW@@D`5 literal 0 HcmV?d00001 diff --git a/Examples/UIExplorer/UIExplorerList.js b/Examples/UIExplorer/UIExplorerList.js index a13da34dc..037fb3dcd 100644 --- a/Examples/UIExplorer/UIExplorerList.js +++ b/Examples/UIExplorer/UIExplorerList.js @@ -22,7 +22,7 @@ var { TouchableHighlight, View, } = React; -var ReactNavigatorExample = require('./ReactNavigator/ReactNavigatorExample'); +var NavigatorExample = require('./Navigator/NavigatorExample'); var { TestModule } = React.addons; @@ -36,7 +36,7 @@ var COMPONENTS = [ require('./ListViewSimpleExample'), require('./MapViewExample'), require('./NavigatorIOSExample'), - ReactNavigatorExample, + NavigatorExample, require('./PickerExample'), require('./ScrollViewExample'), require('./SliderIOSExample'), @@ -55,6 +55,7 @@ var APIS = [ require('./AlertIOSExample'), require('./AppStateIOSExample'), require('./AsyncStorageExample'), + require('./BorderExample'), require('./CameraRollExample.ios'), require('./GeolocationExample'), require('./LayoutExample'), @@ -176,9 +177,9 @@ class UIExplorerList extends React.Component { } _onPressRow(example) { - if (example === ReactNavigatorExample) { + if (example === NavigatorExample) { this.props.onExternalExampleRequested( - ReactNavigatorExample + NavigatorExample ); return; } diff --git a/Examples/UIExplorer/UIExplorerTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testTextExampleSnapshot_1@2x.png b/Examples/UIExplorer/UIExplorerTests/ReferenceImages/Examples-UIExplorer-UIExplorerApp/testTextExampleSnapshot_1@2x.png index bdc9fc180483ad7b661b9ff912bc3e3434e2070a..044576efc9f6e795fe86228765c96106488d714f 100644 GIT binary patch literal 258738 zcmb@ucRbtg-#_}cORKt6OVQoZqBU!VqDrkIw6$xGP>oT7Xw_(|bg3FKs)*RNN6>2N zu!)cmbl5R!1QE^^{e189yU*i3zx#ae-|>e?@*dZCyQ@#KMcX+0;n*#TWa5^7F$ zhPFjhO539Q&Q^~PGIBd|Qaf6HuBD@zRcR^6xxf&LOh;0=(5~a)XBIX#dh#gvV;{5^ z{5*%EnLq66THxm-#603S%O2)8++oZwu0qT&v{;#E{CB7P|9P$dbo>9qcKvg$Dhsv| z9AUb(JL_C)O7+gx)|*IXKQBgp)Bk4p&A3_;Dzqx^YfY7j+xZCe{LR}^=MFzO~9bw|{&D?)~JO&0PJ4YJsZ^q@K0^ul0+avlW5yE=L z|71(2&VSI>1gGi4AaTpztB|XZ2(RT?<6$# z5L)%5jq9hX1X?9XT8dOrUKfz{7k+#`(HBx+QPjz>2^w&k4T=&Cy`&(teMh7ol(O{w zSG2K$-AH=l@|CB8!X>GmA#1-g=mj@Q-qunIDk;rvk<9pNOzGt;4qp4?b)&Y_p{3DJ zBzQgp3t^uLl+7+3mO0)hr1EROm;B#$yo362ejW<>gaS*2I~dL!%vho6yQ_O?TR9u@ za_&PmMGdo(Qa6gzZ`OLL{;MS>P%z`E!eFC$x;jf~Xj60a@9948J2u2W;k%W-SfLQg z0Sp1#ATf6|f>hy`kml2zxc9^SLQC2mtM|T%i==VQsHB4ux89tHQ|b1tn=XuIV|6;$6p2e~e)CL2Lh;dFEpb8tl$i z!JV;TTLO+S_?zeU%JQvp_v)f8l}Q04om#0==l%V)#E>8V{A2!e2jSEixPAMu+i$YB zj`l0(SfQ(&0JkiONce$Gv&_2Q1k2A+*>P6ahz|`LQ@@2Zz+AgX_OV?kJpPA zuby*bgw9+t#Tp+Az-T{7VCPhy-kQZL{J1nGbz|a{2l zTPi6*%JcW&e_UvbUvttTIMpM*rc*5nZ&BG{wG=i!wJ!p!%-mRo=4f>KZlT4VvjE$e zsGCL11uV8zYL#`B7Nwy#*Jh{X+Y|tTkF8ts4yISZvId&r}58?!0?+GCBKxA0Q792%%AU4ZG8x`LA*Hp2d8?x ze)D=A#clq;9l7C)wmjfjXB`RUhX|)TEZ>hw?49YYM)s}?7JioW?!}fUuJk($q4P-c z@z4YYc>|8$yvSYfh+RFm;;DUFKxa$%&~op>Ln-#{;A_|!_Gd|^{f_4KuD9AlTNeF` zMYVz7%>ytWBX;U|R=O>|e#JT>)8Xq!?AmitW7>1DO!2l-%?%b~`c8U2Zfu3~M*W_@ z-Ia#aHs()UN6gAPr+u{PT<0;|TuzpC+gIgvoMoOupG6WCsY^X<#OqOe=IFU6rOrd{ z=RXc-8$KaL1zpS|5esulcC1|ni{(Cu_8qzuwDjg78zy)vHz%{NQZ?F?JB*EU_v3!z zZwsqYGq!V|CL1V$(FIe&`5E>PSkup2*Oc{4I<^K3C)?Ww+t1dIiv)N%>+?Ik$&>QwVY@b#6O;xx3?KD7Ur6DHqCNx!b(>7gwQINgg*&p(*0G z@?sIBrNf4NPTsXm=@1s@u{=W5L87#ynd?@Zo!3`WFu`JyQht9r_)yQ$XJ7`)h+sP%~+cvN{W$L=`ooHb2#N zlrGkCv#XDDGG=S%-p)|)wWvkksa~-=!nso^DM!Sw#2%RxA>-hAcY8|+c@`atg_d5` z5g^W5<2^}bUyt~9YQ&zn5)*x+!k>DJW;Gm2r#cf0t=p%!HWrO;(T6ODg~J@f&FjXE z>gXxpw83)-sA1#JHQE>$UZX-@er8;-+?l)J^FxbfwFS~%^=2*Gvq`9`GIl3(I+;`X zo)=?_D)ggphcUwj++vv0k{2iYSmhZ8TJEdeX$^nMh10%Fyw1QOq>RY#- z?5B$3Dah7vJ~h|+wJ{-3J;lC@ZLnD4p}%AhHd*MMAsXtVUjJB_s^3zW|$$$6xNd?nhVRhKS-ZYl(*#z&vO`Ti4w_JK=u z<_J+NC*?=|YtOScOKwL5{&;joA5G{mc>X>;wdM+`<*-YN zy;m(&eh~zQ5=PEMgHW?F*#9g?K6JhEW1=cCU^t|5kpxao_!BC_7}`5cEDDIF)q_MI z>P;&57~h~w`ekHaAkiLh?7SRjN?go{5|JKHL)R2Xa zaQ^b_So?UdOZCLtC#|MNs=rl)%Fh#^H&YB95MG>-Jmou8z>3YL9CP5TaU*wt#>DA9 zflRv(5AKuAb4^a=CU=up2a6~tu#OY&UK;WYU7;RjOtiE}f*s#&`;zQc^Yx|bJjL8i^6RKmya}Rh=ny40phq^xDKR0$B zJ(-n|LX6}So!zKq7McyV_eMF!2L~9tL{$2RHp$)%a$F+!>{?Mee4a2K*<1b~`jyaO zNA5JT+$X!shMAF$a;Q3j(wRRf=9J#6tAP!P8?!qioXhb%Bnz?yPHE zo3s79udFk;>AT`!oA)L*rSMDLZ!*ZUKl6&}9|snlUfBbYX;>R%wK2h>Tub)sK zl^yukbVP=(QRAXE-Ft02!~;9oG*lrfUzpypjeDYl>-(m34AI)Tzts7z;%%z$I>`ih z-5yuBH-TLi*DayrH~xIb5Y2A?{tcd4KM{R-*C`EL!#lWiCRfgoO&0rR!w&wL88+X6 z_fC7iQ*F`fGvWh#!B)dRR)ZAP@mxn_vOarXvX=3^VtWnM)}>6GC@lU>?#af;(#%*T z@!Nyt`c`=$Gt|;AjlFSb1)IdF6sh>DXWtAsiSsWdL^@eOW{rR9EA=XURm6wtwl?Vo zR8l#Hm}g#)&!y4N`W|J>?qt**2m5H?h-iz(ZbChlVg)MLmin*b4`;TEd zelcvw!+1xu#Xjz^b=6Kk<)uzdOxRmw_HYmiHi3FOhh=2ypgnVcnKW>$Kdqoux1;?z z8@1A4pd20gxn2~y|A6Oma&|}N@TFSAf?MTp-M`-EXf&IHfvkVQ8G022t#;WW?9n&- zY2AEeumdw>9sb^qW}kQTJZ`oO7K4i{ z`Mj_$J%9jDBmX_m$uftU&Gl&v0{&+STu4iT*mNGNB|hYl)oGtF$&%r&Dy=16})z+9hWvghy5x0v<#~obdxxfHk^XvTpj+K; zY=?@Lj$`IxH_u)VE9Qf%dWLU?Em6)4FoE@6o>R|So9;47 zG|m@hTGMdu5vO_}$t_14Bg5E@8n)H=8b=E?lZl?$74}FC4d%iG?Mp{{L_A2g*0EQ9 z9+E?EJpqv_`V z<&QpM`b;eqVe995>Z9}|;U68gNM>%=4o#|j>Mi_iF2PmK(xqug)$&zU15163)j4WU zeIb`?C)*b_ea}b9m!H$5dS-Tn1??H&dP#ctIcT0NzUIi5Ub)^i9Q)<&6=M)Un+=y#!w ziOjgc5H1ekCwj%9`5hi{TeNw-g#6y=S_Qj0oN+JDY9HcL zT6_5)|MY0Wf;QH^#5&;PL+$}Vh(BdU4Q|c9lkq!E59$psx2nF|?!WmV3gPxbWKYGd zp<3_qQ>6rdu(9CT6;=}J$X`adp^}e$6#D7O0kI#izi|!?-@^)^dl8j+1%H z31!nk81Ge#y%#dH5du+u#CexVpn;}+b{=C?79Q_ncYH=`t85Civ2o7L3ET9kx-d7u_9=wo~514sLw(*r&Q zGZzlqV|jYzuhLcw+hQSXC9ir?N*7YKqJ$#&SQ@EA(tapyS|{93lsy<*+AF0V`?gHW73^s7%wML7!y#35Ct9k`nO|! z3BzR9HLyVYx2QeN3d(j8he+;Da*qvu;j<$3<}*beuUvC|O31#rpQZDyA)6rG(Bbry zPN)BlVuW)Y?^aK>InJh>9QpK#^L5>a)sn{R6MEkV6#xR#tU3F$= ze!qX!BO&j)uC+>1{6I$mS0;(rFaKidzL2a?qyp58`?lzRr>oxAYbhx*s+b(1y5R}w zzx!rDi{q`@l#ijCKxT3|6@=uo4KOuzSzp12YP zVTWJi_d<9=jeWzlibs!{RbwjW^oP)3Z(v8V4P8E8N}d``ar+U%vP`^toS?B#ALg%e zYWbb1uF>%m#V$lo&Lm%}Cib(@{Ux>1J_U8cK0lrw&e^x4cD6G^^JOR+u6;@n!V4ej zy?LUGek}fexE%Wv8p~~=RMeb=B_`Y9dVHC1Xmgwbgu~eFxt1X5cg=*bbSyv0s}92M z`*^S4M}pulw_igdhg1FONjsE!^JT(}221B|>fXGj=bv|rWe!K_Z;qX$pvLR)Ax$3T!DIb36~fb zG14>8A6GDs{>E*IR71fPP#oQI<&LVvU9u4~>KC|hHab_lNB%APcf18FEkiwrbK{l{ zOxi}au}C76XghpxS-+ePM-`_Z6PnS~A3t?-hHa~`c9zFlr^TTKUFz^X3snH#D^(Ue z7amlaNFmweZthm**;rvTsa4XVy$=?k==CT6)ttvs~?tXCX*#*CR~HS@WYM!^fyCZj$SGS2Jzpjc==<;71rw9cz^En||^T3=~BUz2Vy5dqoThjw{INBoH;ilG=Q) z(zzNWgyFgmDk@tF<&o}ESkW`&KIS&XWG5Xu2jFp;p74-Wv89ROO}9=H?y$?IQUgDU zXgT>L*e{$gMlI?=al1}u{w`4dS?kos;?nTwqmx?%wHES9@9>iz*r|ljRyHdpg6_CXmzjZ?~}bqSo`~dnZp3*7W&f@JN4gc2_HzHmZjxRM8Vwsdauo zQI8f`7%>$0v6iGpvU6>+@64CH47)<<$e+%1H$xT3A>QzId~M~(7xnSxQ;3in(yWj* zA$}G5X387p?($PO@&q=?pans^&KpQC27NU-2ZQeozO0>Ukv zH>^fVHZm#T&P@!Gu3k#D_~|$MRcw1WCB813$CKKnR<`&_%lML0rzl+YylWMzSh(CF z|1137&v*pU7YWE)XRx#PkoXPj{`f_uTNI>^s63nPMsEHlWYzjvdSHOqaqoIDY5k zSU$MiQJt9UktOzZDd9ciewp|uj}2_`l-`_N33a26&pP5%{NN;)!~o=)M>G2~%IJa{ zcWdg?$^tG-o3W*bsvs`x5Yq1_?>(EZC-)pW+v|Uow}PtKNPlKg1dErPLIy@fm*6uH zkeOfE$MEJSi+rat8CXGOO0l-07?e#PDsk0f8IoF2ekbzLoiDqaf9~SL@@mtb14C?- zdF(JB!}%e+C~H0WWjjsnu*sT!wJJpFzQedaf~L-|*VHFyJ%g5sx4 zghbi~u%bBCkoE)eOZ6p!aZwpB#2H}`26L~(d9;=IrdIcO$iE(Zm~;e-GZ{a3_JVlh zk_B>6V?h`wwcp`J`FdtW`pA93#+*c7X(pK2iNN-Q*djK8*a(hh9ck7QE9U- z-wGy>=jQW1NhJoB$UK5UL1+(tPCskufr}?9RTr6Hsm~6cFuJn%)861pamEulY9eBP zj)_-T${y%GfNj+w{Sy!=%HxJIeECNu++VO8oWrDTSs|7S2@cAWSYddAq;<;fTR8Ky zOFnO9{4)_}a=T&Pe7X=Q$eCaYP}1ZybQt#v+#0{FGmfK*{Nf5^>nY+mHW^DgX?j9rSw2X$A1AO|F;k{cNkqd z>4?qCcj(p8sIjaBo4eVsx;_|?Y z4H*gK1X!~mga}(e+dr@w_V#{}C}RLniXo&4;Brkfukdb@h;@;0?Ss>nyDO;*rCXe0d=Yl&Dr4WU7lg)Y>R; zrKihP+E?-Rr)b7H=S_T2x#F*9nkh)L{2Lb+K^>b!C0FX?XNqoJlfw6^CKx2k%K=fd8!%r= zu!G~ND1hE3d9;SHu%(1JCz%>5epZCx)S?BT2pp+*_dGyT`K-tP-$3W&he7*tN)gga z)5MPI_HD>H&Udo=b6}g07lTh@NMPz%2q^^?|FijN8vvi&0meIi-n8Scu*GnF zh=UCs+^bEozQ+hQR4uQHT9JKu#>jAe(fLnp%Ix@`t-Vfh(<9-0{GrhT{BmV2h-G}YTxdoKB+E1i|Vh{Y9 z*e|C~=3Y*W zw|xpw9O~eIIGb^UI0CTS*bSDghTXSXgafQ5*4G{M@qWl3_%!R`Y5bZp!bATTeXc>Y z-0FTE6ZXC9_pYbmC4MY1D3zP>!4CEvM4|h)S7Q6`?V8eV@Emv_qXu%&8xKI#Oy58w zrgb&}J8_59$S-Nt&+thEY<4ed>Y6zq+G#BYeDHXRDnM7pS^)z~Ll1}0v^^DqSMQ8# zzsf@`5%EI_N>9&r;>tcK z*XaYkyKS%HRM(R1bLr?7yc0 zjm~+c)8hB*xlYYoF7nwU=#BLp4d7>&vU>edjE0q5&<$}o?w5$s4P$poU3D$vV#|@A zuZky?Ghf`P#hB%$>jl5y4a*HqkXfjH@J1C?fsE6Quko;|b?fSkYla?m! zq}NSUsbwAE5U{e_tun9Pvc;G~wimcjGXoR2F%wbT9D z&#iq^TwR;#_pX0!(H5}&b%Y2KXX*kntKl*p-NgYXV1J#RC~^}n(mP$w)FTP5iwFj^ z&URG5bzR7+!jNh8nFp+oX`=_sf2?%rh$_wn3^*lZ2}7mR3}33*?HmTq+TsvM5ePfu zZdF7F84y5%t5I>hn&lou|GvB%CAYO|OSD++-f#E*5rmbG@E@Ma6^$gZkd}j%CZ0RY zGG;bx=Gunco;d5iZ%H>XU})IoSy)zjVY=lyW}!oUea2bY{=(&i)?b0FtagRF!ZfJL z=W(Y?;3hVnmIp$P-L}8BXl76xxad4C2VV=ylY1>?TW{fY2>yAZ$O2C6cb6=}JvOP; z@RnNw3(e2XFE>2thv*i8O61u|=*>6Py$6hY2d-o(Rjhl=k9@cePtJXRX4nXBwKC|M zR#MF8;BDN^HtZ#ucO7rc=385+WOH&q^b+p{mPCDabya=p^5cL4_rCl|^YAec#mWuL zC?-8oO734U1)SsbM#F5>jnY%p0tkyd5{WCJuB>OC?iuIa5e6i6L88*3y_;92v1d{Q z$nAPrTooZY&nWUn?hePyWYPWhQQBoKd8RqBfM7(WxJ&b{R4a7yRqGvHN~l0&o>lgp z7%9yBphKMwy7PH`ra~Y^Po`(c-w5nfXCD=Zy~XXHTkDNEC!X6W%F1(8BdakN#A^`D zd%1w5_!$Jr!Rs2jS?!NfEa_2?tcm2G^3S0+Gk(`-NT=hV;!ktMmQrWT9w(Xp#}r91 z3Bb4^&h#6qeKcn%#!qx|z@c($Dz8X7G!>-0X;!;@e{Xx(c_zm_Kt6Z1{ACH25rMn* zU?uZ~LV3qJ$h0e@ws#o^#m%rIA}@o^^1xM3(W|L!G8hES7t;To8Z8G;4E1aZ8pAEY z5gjjtPdgaZ5AT$!8}SnLj&((a))CuL)a46LBlIpJbk2Hv|NdWs%N5PmyLnMWa8qmA zU9#Vi#Ns@TPs4y5&QKQiokfTxH}HBGa);r%bmbxEKPoINchdO6D#SH;U8q(13uVW? zJrS&r6Hz4{K6g!1zF!1UA&?VVC3BxNj8(Gm>MuT)fiQ!+#A)OA;^ELAfW8?{AoCO) zYRF?N&_uz5>*Jh$4~)fPXSjf28GtCg?Nzkz zPVFp{RV`q-0CK`3$Ti2sOeg=IFQ^r7THxi7-?p2b@<+L#+n#)lESQIP@Y)%cs01GQ zK`DTTPb}4N#fRNZCK19=KolvEAs$h*^0-Lv^ge?YD5}(Cz_$ zTkfz>S@ptzRyn!uc1NhSm!3;Z8@hrn{`7I>%`)dHZ?3R=$TzrOeIbCz{p2n!iyO(nfldVW*st|`=7$gKBhU!i+| z9aS#Mld#RdDYrDzWBXVTX#_iolkc=$FvRmPrl=2Ik3YH8|yx~z(p(~nlw2{OLr z1?Y6hNZ&*+|Ix~raVdne*3FjM{^BH?Rb8t6&-Jn7rqeK`gN-|;h%YW?G zhP(yo(^Rq+t(YlwXBdU+h2Eat$PTiE4d1?a-+o$W=fQ*YnhMhneY8U`FMHm_&IdKW zJt%gyMs1j+UEkMRyb!D+J*odCD5dv(DLkDL=#M=l_s&A> z6;=K2Oi9a?jZ4|31?{=2*=)Nn9i2pdvV>vcIAOT+haD1iB0uquNva=W-VD?d{N; z_PMglPlbamRm&Nt94H#gax%K_i7IC}8hzVMYdTJWy5bvzm5LS?{D?d5OV8XZ?-v`o z2agQJ$z}r(vz?912_st~`|@udX1o=%ni`!}RbyBpESEH$TAr2S?1MUeeQ_Tb+U0V& zYAa~%-d0Q|R@gqf!T``9K?7pBKiZ;_zRHJzecYp@@tee3e3$23%y(RkRAq!-zW)Us zcaN5PEWB4;WkxyEnWLt{KO};42qk}rM8D`N|7eCMEOFIp!FW9S#^OiuLuClE{OxMJ zo?gy=deX-X^y|o!J99boi?vT!!@u_RG4Sj@1wDTGA#CKHKC<4Y0Zl z_i&9VyMf%BM|`*WZJA4tacHVYJ6_uHt|btBswC&8o1Es@LBB8vScrP>{+V;)*2dnw zjsrb&<9L5uJ0bm3&A8ugxOn!yy+hM0Rg(3qKN_io6m^-i{naJ~JbZ#K=kpc3Kpg7_ z7v4BK;&wzX{=tCyfdiao1~?ceK0~+V?eL3YTs7#Y%MXQPwXAmH4Lwte-U;VcqcR3$ zXTI=Go%~g>slSvo{tC?XVhmH8l*e-6OuEz-&?!vFzT$Ov6@Dn#jpKb5bOMKe6l&ai z#lt9FURcoA0>&-~-Qp81Z`1X6-p4pPQ53X%!C+<8bif>QYX$XFMxg1M)n85By9lKVSko9>vDsa2 z)Inw0=gnF>1z9h*ad;ZpT4(C-vi&s93N&*cLt`(eDam|FzIO0E7yJa-U!!LC6gO7h z)}5GTlL|KU1~nzhX*-!xyFD*&2%Fe-q)(a5`9_2i988eeV-*^=X@m|Au;r&a*2T&CN95ID`00UzF-t)g# z_sv#Amt1C90q(JNx14!=w^pLwfOrd6W7ai`H$awm_w#@H6rM*+1lr_(K6UJRn`Kz> zZGpuY2)sX@w<>#>#|aL9cKn+O&}PaHJSV(A1r=IXeo(Z_GUvDMKFyRC9#vynA8-cn z`$^kA2g;Nk!7^{*ZBQ}O?s2<{`R%}UYHiD3jpdlizYGdMMEZYf7Wuaf9!jzd|MS3*74`0oU_^Nyj1xH zt}B5tVZx!!zEfqBV*|4tiFt)Jq?9`!xyOLUMP69R_YNy*omYshat$#hySVz(=+eqG zaX1js_2bl7yoIftgk^;+s3oLr)!1z4+ z3T29xr+$}d=L5=n45;g5mxW|6SX8(QrUp;~$3UrjF^`!4l!P9xpR1;C&C*MJ z*wWR)t+z5+*fe2tE5gbc4+kRV57{i#ZV%HK00W!_v@9Y4R7S3->Jzb-J_f`5t$HhX z1pG1C2FXc>8@9Y~M}qH+sEJz?dS)A>je4Q<@Ie>J6JmR)Ul-HEEb?!ZylL?TO0>kR z@2_MP@DC_Bf=BD8v`~2fcI>p$DeAx|OBKk63D4D>yN$O0undqZ zAL2RVboCLJ{|JQNSqWFz_e30x;E53AmAGx&ksy_J_|nABP6)f4XO{b8V{04LI6Bsm z2D?3+(^ur}KQs8-lbnB3#x&zHhbhiXETFoN=wX6bTj>p41$!QY4-Ys_#FhswH?@JS zwc}J@fsl`gne?G^kceOJ^>#G>!{x*H@4tW>z*8?lk~#xsHZGt~arK$z@xJSi?3GyV z{3$X$zM|mUU)fMFqCqM(-i8ch*J%F`)xa{L0))TJZW!E#s=WO*+#v zF!Xy-;Jhy`oO(Ax&>LQ;0DS{>RpTzviyy7)9VexcKt`^WFB8%n@0n)Pvzqy`$i)(9kQK5-qi*cD7#mcJ;?>g;!z+&drm4Yd=2V6Mh$m59610 zh`1fkgZnmAxHziAw(6t7bS2bZ+7%O!q6%l=UVWFW1@NUN`Ey|SM*wmi5QGS`60Rt3 z-I12?sF`JZyN&VDXE?aQqkX52_^D{jWxRmZ;vXPyK)qY^Jgb(cTgQGd$Yltj@-6QD z=*Kr)C>tDZ9O~swWkm_+Z+1^=%nW&b`tp45hmghB1shf131hiq%NHi&(stL@!tdRt z@QRxF#nNe9h~*7v*Yx=xyh&5(&t9_H9dA!nZ8;!iqayn$h%H_3dbl3>@j;2H!c4;x zn|^(TmZCl}Fr)QTU`t*RDXv@geI31e{gXfC#Z5TJV$%brAIs_x#P5E<>~^mBK>E~h z)9yTx#gHp;B0meKF_+tfAi}1UCw;$>iccIzqhm+7ZG2tG#o($*kX5on=qrZtB@N;F z`OxaRkT?4*Ej@fUkA%i6oHW>by-Kk4(YBi)peB__PMfKpL23XZ|FZp8D_v@9$+)H~ z`F{M5>qZ^d9>-s2F>ZOW9~3nhb+gMkshxr=r?8)l;qNGh$4gj8lD+Hs6(CN(Z=DzK z4KL=TodKW>o=^uw;Qmo>)`BODY0E&JI-j}S8^$R}9NUjDQks1CW;zHJk5f%+t|nWs zrjsD|6qxrajtMa=_mTB!Pr954ea(L zpt-}Q2HYzN#V73@KCgwRR(^7|-4T{~<*9!q9A2c?_Mq?kQx;>j`H}G1Kfw29Km8->O3>KnBM7Fi642ela+WK zSZksl4<3MA+ERrtzRo0_J$-9AZrj|%#r2?mwr2W-(t}l(^k+$ttwQ=h08WnKRG-_F z;~Y*^;{$exv|6fLPMSzntkT1K9Us!;xW<#9v;0eSnjb$YoByjRa?2Kp(oV;N{%}Um`%*o0sb5GK_J48>O+1#K1!r?ilyFn8_87DfXd@@D%z&R>BrO z_Ibz@$>L3_J2hMPDd~&_cp`~)h-1hgXt3DFRO@S+S&KlZ{&qG^<5aKqT;u6k2Vz%~ zW9ZdftLpcGxh@@57)=x2us^`ayk&Bm%)0d`XzIUZNMT;< zZ zY*HG%8GOcd2#Ea0>K5B&nAHVPFUtVV%+?ySo(A~I98?vw?B4TMd#7o!odyydoD3ASiJ)xx zv^3e%!fgNyvQ_(Q9Dx|Vjrk{0(rT#2&y*+Zgifq4OcTIwtN&bS7`g;_Ddfm~t|Xu_ zPX;$syMtj;f$bRO+AME;&@#zGpb)^{VjPXYbd&tz)HS7J0fSXO!ED?8qq{&r9WI5r z;Md5)b%~I-Faew|rS-Unw1WaxcQo`^j6ErJ1Nm0fFKR`Zvs#7bYy=AHBw&P5vY!He z5B+_?uW)_|5|*#${Y`TWnf2M%urtU?3m#BPq;OMq%3ZVGfEc4XLVSl!f zmqu!dB@7^8F3R>G7LMWa3h$D5D8O^jUiE-!wrQoFHcW9930b<19E}iAa^R~#ko#1C zAlrF$e)J;S2sm;)zo$L~WJe+}2sFk3bkjQ9!Lr!y{^5(a zAIemf^%?j!fX0DV$gwba&Hy&MISRgqG7PBE)~5=TiCras05$dIu#EE?`=-c5kYg^* z`7rA;?)|5=5IHZj;AaxfS+pMxFcvlirJb`^&E#p9TBdwn7P0{m!lY(n6Rhq&60@o* zUJQDET)Xwx*Owk~t$UwtUFl^#$oM-YVE?$upx3g@gL=-;!xmU-s!P*= z)ie?8D77TEz;@FB)R-7QS#q>Cp*{(&C4*wmpqjBxqy@EeHm2jIL4DkE)4a^JtI>VD zv|Z_(ER!}Xlhe)lIi#M{ef z&1><1T<72{Pd7a3{@n$ZkX^axaP1FMCBL#0T#CK%2rw!>&br_{zJgH;3F@ZbsJmAp z^Lhl3;*&Eu;M|O9_gOokbkAiRrrQ9)`SO^#v1O_AQ@Yyb$Qwf_rt+T#J-(k#E%SQs zH{GX;$ZHn@R-*TZRqhoFr5Gwx%Q}|{nSJ#MA72^U^)`6duQ_jT%fS<^1(}JZUrxDf zP#?V33cRc@JN@0qb26@PThfLrf+_*meIEgR2B~5;-!#`G3kwA;b?KZT6vl3Q`q&#~ zjR{4O3fGIf_DC{i+^x&w9cgn9uf!iBwI3Gz^LcmtACgBAhZh*iamDYozLP)dEAIZ* z%SrIgr#?i;ym^$Konc+3Kl+k+IVJ+mmcGiM4P#QPR>-F)m89>h6x5uYX|}%4>jofQXbK5n43_T?cHPMDbC${2~D~G{3nNQ{Mp@tvR@8=)Miuh zCY6b0P-VYIR&>4c#EGnw0lkdK;H$uwBr~jGIW{uf52%-wDaU z_XUvE($hMkw3x#(t;%zC4mQB`vfmbgH46!pEgp=A~PKZg8vWF zT28d_5LED*VK1Q1)^;pW$wd7`>Ca4E0qXYy21p3mMrmqeU@NDPb8S4$5UQL1xbsAX zsI=pb29fQ^7GNFu7JsgdANZfuegU0}C(~4j1Z=rdmKq1ofjbFI2?4kLIrIGfa{_>o zvUlTX1VlymP{rj49@P2H(3Jrf6i_wB|B63jzT;#}fClT*-<+g@Y8R2sTEY<3piFuUH?ag|535v8#_t$Qj5( zj{$wfEPB9VS;XGxHB_VhYP~HD2J^Lsf1vo25n^0LDf^(gnrX=ZvO}z*bDXdO^UmOK zBHIWMy*M)of35J>y_lY1qs_XYz2(d|eHUie#r$u z$IgSFc7;6=kn*QksK)at&s-R1FiyP!Mpy;lUG-ndVN8V_@SGVpK9c}^SgnT_jl)kX zcvA)^PrjwJzX#RC*i31Me3VEK)~);9Bj)nm!xOeR)+WQWyDEYr0D~l?ga5SwUZU|okJFt||Adm<#=8)O`Fpxqz4xiQ;-<)sa3z&TgN~lz34h1{T zW6(O+saSrIeSk-i%m$>=Y1{f>L+*?Rw?GA!;={HqqI1MY%dUI@B(yfB_ccFL;|c#I zrUUVz1}Zp6;yfhY>6%gtDl?rrN#JSp2&e@DvgD%r^>0T427PAlKJ}h(0>+qZU^&}M zzqhf_f&nTdTZetwf)E&;*@ybPO_@lSsGRF9DTUUxR}e*p$`x#}tVwFgD!|a2Li{t{ z;q3)>bd7c*QjlTFrLIJb)_0~E^5G-^@B1e&BBFL|+t7i=kgHM2Z|WgumYFfOm~P@a zFAWOEfW*tM6gO{TCgJDHX&>})`urTDI2T##5y~-W1|l6hqHeG zAAUu`!VMd+#WZg-g=nuCpb#_s`o`KH=#6rYK>YsriMo4SgPXwAJ>(?*yX@G_`y^$? zkSKb?-cV&hD?mBk=Jb9D9(1eFN-?1NW2Jx`-*zd^az}JW7|=+Ce9~lqEMO35D|mH4 z+4K|8ckL^&BD@CwCS%7g1HpTw`b{wTSE!cw_&BAhvx@+Ci{w;C3#l78xFp0&SjxMn ziH0maueHju4$U^i2$rBZPD&*SDfF!Xvsk?R`gKCNwGD8uR=TWw7O+WA;a@_91@p=Qld7cO+AB99waZ(wHvq3u;`0AXt*_Crc&%gPy5D zQ@PQ8W?6Z=xhTYXP`WqLjK#n|?9lS!4HI8@VsUqZuP2;~&tIwNo~w7&mSeOxG;A4MU` z${HO1)dyYj8oU&sT#njxnJ_}3nUBYS;z+wLJGENl$i0#Kvr0U_f&6;Qh4&oyX$Vw| z;OdDyULd<0s{dJu1_AGVnT*pjzpsfoQFmW2_Rz)S?hLT2>9;PN(&sQXXv$8_Tk$LB zGK-1~k%Mp#dunZ$^;R;Exz@FKp_XvM??M=_Obs8A3^ix&k?q%;d;u`Fwqg^W9w#OQm38xD{$!F+o({}oJh3CM&uCJQ-yA0R-n)I7GfOc+< zrqxeoC$mOf?7DE_|6=bg;#4A3dLaK#1Xr%t?Q|U)LF%<;5&KZior_1Wjz*qsL7XN0n0D%r;74L#T7VYQl1r6=D5+ z^<6Afr*c=nwJ=q?ZcxOMO9&}qsAeqdjk?WU|DU8UpG@V;NIi^-YO z&ONsS%eNro1C@#ya&aY2e-lCXn`?B`5lBVZOcOxOcu#Vtqe6h0 zegZ1P^XU`HKl1fI{nhp-QAxpmRUyB}YoO%aBB~GdGf}Kl{gN#bdF{Td^g)#Yy^GI0 z#|?go56HZEJNb{PX0 zyi1f_rXXvJ-k04`^gkZH`boUn|B8J4?_)d3HuGKgzU{;h`1^%^^R)aD6{0q1`ipk2 zHsacC=eJoo!_ex*uAQXXYX*Vyk5#XpgKJ034@y>B7j*N?>8nHCJsD%xQ}@iB-~Uqg zfQ*bQv9k>3w?9b?+?kE!8Y>?7Sq;MAwl{XHpN@((WsR#X^(;#<){baevhU$3Piql4 z)byV|P*bW8h)F%Bj>O^n<05ZEaUQ+bqfOLks4pvH8knu7?0EIE`?BL|e z@~^oLsNi!C|IQuU8KB$}hoW(mj6)=P8TgMvj(UL{ zix)P-GF-|5?9vuc(HX*WZbf|T%-Cw8EEfXxZZ{|cdTb!;BB|+Je7!?8s7BN5Z=)OB zI$GUq*v13P&}I(LwL^~vRKjRe&VVXVoMbdhEI2lX9TQAD61`bevm;p`R*WB&8m^R@ zd`s?Ve{VOVWDA;~nAdUwU*6o%?0Iul@goC}A5%cD@g%sf(~81nK#9MCKUQWl9{bX; zcR5RrCWhBa?ka*V@e2+R6e0JE!!$~J5tfMub54-DQQBcY2;mah)Opka5obL%eU~hbJT%!+kj7#eW6yfRjwS}6?@^N?3_G6m+#x>oVDyV9LD~G`jAPWueQ2R1$)zR=X{zV8- zVe16WXhR6CoNKD#6bb8A@gJehGo*)vy+kRiV_sxBS7NQ7tyEyueTd)gqju+xHGo+f z$h}ZqUfY~68O^O29?QQ5(#75kPlH_hO~H6zH!-^^QZ*T&Ib@jN_UA#DE34bUWQml< z>f-3AyLNTZ-mjIe9L-)04``&9=b=43hoqfGl)LE>kQHlhtU;l|u_{EPQzREm$4y1% zCGL03W+O|9Pb9B;{ox~PsSPLaa~(Z>(@vTp5A^VL8_M*;;Y+4*Xo~@kLLW3ZpnUba zw0LN@Uo+^@qpjHB^6=QJK{M3@E>Vv2-RI9=MM_LN8=Yn6=k=FSU}vyBmY?$pqT22>bBC_u@TE*;I{>!odL132-#aQkAc!$ z^kF}NKoJ~eLSV9C51PoREAdVjx&UqvW>^12M|@Anp*Y+6$H%tV52uP_nqzqL3bUa_ z^G>+YJ^tV_g0+lycZWihMVlJ4HsIhndv^$|2&jZS=EB{-%64%3IxLYO7>lD1vjGVx zDbXGK#Qebw+vlm0p-gS&pI)5i1y%BkKIUQcfCKEA3bP{d5*;Uaz_5Jeb_uj>g7u$q z$SypM%t!=_a-;J+1l@50x*+{o0_%07WVRflc^1rP-z4`Ik!m>;b%lD)|t!b zJn^bcAU(murQyBA6h73MNriGCj%@{4Z*lhkI{i~+Pb!+m$-N+F=>Ap2Y`YW9^?(3a33(_@1O7lsGQ{FaP);0B~?Iw0H`Z16W{*{aA}JmA~IN#};f?RX-JUTwo|3 zh2y&PV4L!W<<(g|+YcW!nEtix7rvd$)$+d+RUa;^lxI`#6^N8;xg>knUQF6U`0A(7!pau9E zeJux1^Kjlz3z0PWOl$Q;v(jN6;^UHd0;8q-B2-*3>2H?Dn@IdL=SOR6@ZWv>5yB`K z%W9-)c%z#F-BaLc@`EQ@knwz%tC|m87P;n=+e~YG@c{8}!JUac5pj%_9C8LQKd^r} zFAQz=Ds?xY{sYwC(TXCs*q8ImSBtRY0r=uUaHs)##uhbQ_sQ-0<02E$2D%W)qyZG-9QcST)j}>( zZ+L|a?`Qys-N?p>o@KR4rqU-k{U*$Z%cmrnoF6xAL#W8tzJeiGcqn)FVZ(ab-TE&7 zhtNKnY!q!EvQRdDA;i5iP1bdi@0QJRi=i?O{j*ScPrjuH{ga*K{{7ZEN+M2~? zcMq8ubjN0cu(@#8(0L$L&`1sxE`b_glpt|H-UF7MT#(D(I4n&F>-N}?T+PxpH`qkw zreDRLLSFNifTEc-Teo&ZCX)R_|ADUOUifMW^%XfTzz`h8d9#j-!In@$1Rn#fRX+PT)s9p;=Sliswtv{1( z6#yCpJ1s)paHZ%u7C0HjX<@(*(tse~$n*X<3s#M>BJtHH*UWpeP2)YbXWqCNkr3U{ z9t4EE`6OUi&N&K6Vr|Z6cr4Ug+%5axf6{Va>u%%!bJhS%btwKtNvBRt?ggPwx5(+Z z*ik`3uMl(@vI)ZOU=4#;a;OvRst+tjcaMA2qFZ*D%O;fUJo^2B-_bj{LC#i)x)mgi zm@*CmDtOXy4;(;(bIjj~tpRaGaoE7hc6bafnGJdqkVFGl(l}fKA!Bk!q^}^t(2~fV zBOmZYNh)CZDa#U2-i85+0-MkRNKumeV$6z{Z#7y&`Jvs@0up?#9s+D%258nK%n z;8qEL<4aTr)m{^t>!x_zQ1jWuMx5iwgUufzPbWSH7_#aC>UnUX1U0yrAku4nw`dW} zEtIQj7)~I+g)$M9^H5UCfOaBT>KLTTEoRS+>ZHcb5Y|aBaOg`k2&Lj#zxMh5n( zU!Ld_ZUhA01EM;JMI-VUQ9pe4&Rjv5vv?5*+?rFwgpnDNnX%3vpS1^j1$~>E;glk`%Xh1T0s@CYi)BQc(2Ea?u1|87XR(KSUs(B{+bC& zY3MtHGdD3ycgPOr@u?WmHw> z`~qOVA?nlcQ{;MP@$nkhf6z3J}s(hSNmC4l0dJ4gy!}m*w5?LEt6S4D2qgEc|S#$x$ zOYI|`0{KC8bNlTT8OJE8dO)%kZz>y;SzW!q(FfoO+3OL**)FQ**m%rYJ7ov^$pZ0@ynAY-Nt;mcUer;We#LG#Ts7yCRbenp03b++dfM#bIjHjQ zAcW{Ge3fVhNuFah;E$i3_W;2T(I}p~n;NBuSu0q; zvzJ-Ec{DosZcCit+rz7WjQU+ei|0L2BOn-XW1*+Ltg;VlY3imG|+dh5Z zESs>KP_R#Q&jB=ta`5p_++DvmV#xYHn%HyZZ8jz=qO)LPJXFNNWsG&x2urBoBSP|H z@mCW2X*)ME2$e z0%XvhD=og(J+9VAk{P|Z8F*>c&0L93PXKJji?&sm$mImb@Q$tYC}p-mnQ-JQtm)j= z)sUzxk=>i8D>7{#XS+B@mn{$kZH-9LMa68_y3yB~KBgo;tgeA!7X5~Ki0=GgB#^^| zp+PhQI@Nd3l3vZK<31O%KHGgwUnqRj*?9Fxw9<`X18H6a*r`RzW=N%C;&6{TGE0;_ z@+JDujh>}zqDfca49$NS!}B4xd5rEaV~DV(6te3+eB=5X7+M zNwd$z733Jl*~WKK|LlIj$zu7%+sy(Z`#KGDy=>o<9uc`7T)#-SsNnN>aB^1R=UG<2 z!^hC#m>1pq29c&*>}7fW$u}7V{T5zJ4m@yg{sQX|J3B%w%N7x6pgi_n3u0-UX0Pfu z6};d*Q6wCC;I2aFfEpBJE7Rh?j)ZX>9J>(hvkCMJujN3I4YBz8qFSl}oZ+GjOLWN% zlPDwOh#X>p-}>{Nkw@hM10y8=`aO5ig;7TvC%K&Rm+ZYT5*>uVLt(cZa8?#TRu} zc&VeO)#5~-Dfpix&!k@DoE6BZPDzkhz$@N+QM?HIhlqY7C5k4TKnnSR_6f**%nBJ= zVL8C{pUaQaxrL_?$FwUt4iw^x9cN`Bo}~3BBmMW#)Q-;Dt?9KjzrIZ6^m~>mtdALE zYTrm>s-w@}ZTfxuEmlbmIwuKP@k|q^QwQokE+WMrf_$;fdz}N$LNo7PUy$NeE++xH zjuvwvYc7513Rf%B;TGtMXa7{e3PVmcRBENm>HO#Mm9oio1LY@ZnpmMM`s$Y@|Jmoj=(^N~`m)-s$DSaNB@>Qp{NRE0In>Y{&tSm~PG*+jL z`1B@f%x`nNl^V9(p}tbn>hyJt5q96k)$D-E#NeZf5n~D^p>oaz9@t)M3Oyhzx)mZ*33^c- z5cNr@RXl7_7dr}Xy8+i}gd$2i+E8;Vld-^6w+9%atd~Fxiqy1m?4XgjkgzE)lP(t* zTeneru-9G%n4S@Ab~XfKumT!_F56-RtfMRNx1uQ+1tRI6lzq4j^)yPI@&FYU>?&8Y zx2`!|X51D#6WUZn;OWxSgXiAjV+h&8@<~@;s8t~1bJr~Q5qes1ZpeP(f zgBqsbKR5w*;($QfSmm!*Rc>fO-UaUv=p;h1L33T1)SSpVq~)?~9V2rjGeeVmL#NT@ zixx42LRe;FVYn5(gyG47QZdu)lGkKE)P2l=Mdm}^TkcQa|(fX?D{9y1UXuxTne zNw0sDdJB^7vjR^N2Ri!Abc-=Z4InmS!39;Km>{U!15I($XR?J{s#tpr{+X;e9cBS< zl`PfPeo5e_^@(vcBIwaCSTkbI54Jl33!G-hz)D-ZbL1%6s6+lq02CVhsh(t~(&HQ+ zjzPlb`yb-o?JovuX4arTy}jU?Nv1M~HIPt8wBA2{(BhuK>8q_K%6@7Fc)KFFT`f5^ z!8C|HlfEKEoElfdL(GZ^tax@p}ITxsDP zUgEPJtBdTxVwyG7EZ05)p61;k*4fu@4=nj!5aFHhq0H&`Vnb+lanY#q6)LOnB77|Y zynKLs+FY;^6yn`&5Dwvk3j5;5GFNg~9jye#(3|q-Zw%4j(X1>z-i4LRnrKa|Sjh6V zA|pKrPs!XJhGAI{&Oyoyn@^>u+`Z5g3qW5}2n70x*Y)*l{Ct4cE&xIX3#j!i*|cyp zNnBTssm;$E?V@d1Z@|cF1iQWsI4-oR@D)#Ce68Q!fV`cG4S`hOjvM_&md7EeSab!t z2N;F0{bj}^dDdvHu@%MX9zh(uSgBB`K)b+`wWmE*&2$g%#hCylaqsX0jZO_l$fGj4 zHuLCd;IHjLB@t;%{CMLgW#gMDrc?%m$s98VH5hmPTo1zcEE z33(cRra&`cQhXh5#l?SgZ`t8ihXtJ&rcD&=~X-@CAB%h~7bYs2%@kvYm`;7`s>7Ss>g zZ6820*1B1U?qHk;&zn9hv7og*3qQxqTZn{WopI|qVV%$^#MjY`&t58DNY5wDqtK-9 z6uFm$G#+=h%ypGd{7y?_ZwL|<oC@qF!kGJRBLoTKW#=YX~<6(T=Oy z7^@*&kpb(4*Nzbs$9GEEr@P}-(1&qo;$rhK#HbYQKIlE z;2DB)p_<`Ushy+}CJrYSxvc0u-i;IJvJvNW?ek7HkR>vfUZ23IX&X+p#mzBf;pbo@ zENAr6T=4vf>OeqPmimf>(e5SZTp<1o;5V`7_2MDI+Ian>3m$CWP{WW5a>rsW8x{J_=5Q5--vD@(PEc1T+1i1?n+Q%I!w>3kwl|eDgCvz(R>gbB|e4*`mQGygB$&G z)Du~Q-B0u+3aM86b>`DtHK^l0tnBv_f~zOf1_};%_5UWS{>PYFolrfbgSW!NMe_qH6+RA*P5A8O zwtmQx*(f&{A3ThmpB zM1l;GVOWeA%JxA(Opq0fs*qNM?ggFEt8iRgC}O+~l7SWoHnKz&tScbI5D?<6@2hey zoEfe4d`_0513}QnP)0mL1-W(ZQ1OVMvfDOe2!DtwhxFwZ=oQBqfK%(Fa``-G8%odH zRt4(lDUkHpOUbdpsG&|&xdYm-n7Q1_HoJwP{$mV$9hnzGKlK$DqzHEc+7oLCvM(+$ z1am+E!V8Zr5ATRm%1S)k1F~UVW&k)|as#Bl0&AOKZ#m#RX;3H0HC@p5k=TR+MW#Jo zD6V}Ju$O7hUz?Tob5mM*PH{nDgs*nM- zikC;S4SNKY`d1Usbk(9XU<)j%$t8ffxpZxVC?}*a8!)dl0KgXJ074EO@BnO9F5rmk z;?v2mmsekULe8qb2XP+ylB06C*JLapNV)~eCH+Tb5s+Q;CQ88GY;6CQvqdKH9U^95 zdF|%J4a^yp$m0f31gAkefEF|yp}L;8f5m^6fTV(IJd{7vqD6efB4TelKkcdjv31Zx z`OD0rw_)!?RZFD)uc_tu&a>VpX4C}2rPc7Q_NlcB5d@X#q(N9ZX>Bb^t;t+_{Ao^x z`lQmyj>m&O;l=Zp#$v4l0Uw7GH@^pq(z)F^iKrKiT4V`X%W;FE1*W#2|e5npRRH9Q^hb6?M zl0D%5^}C?=Y0;xz3U3nD6^4R5G$m_EAoJ}OS`85HB{Gx2bA1bX19=w2Xd7NJ1Sbd; za#;;<>0`-v9@NSV*1jO**R3-T9Ak*Oe0QDa-kMs23lw>wWLH?j6|dfhN)lKgZ%ivl z6W{e082DGlV|A#VKVK`$nB~g0ZGp*3El`2c7w5qjc_HbgQiYvqI+;DF59R2aP%4hS zEVDvbF!V+@0w%)K0`n)jnG}0Hp+&;MtPk_h1nnKALE!^|3P%9sr*cz%{B@FeZ>|`^ z{!@|28CO{Rq4nWGa&@W&@+YQX)v<;VGWZ8i?SC(&oEX=YXJmZF2bgS14<;QgF6R4S zK9;Dl*-h>)HO-s$m%i;hd^W&H?3*sLwyL6_8eZzD3y+fQ)pu7dHp}5vOYZ3`=|`Wr zx=J(YL;O_{=c~oz8a=-9GDt`ZJ~H z00%sS(LSX@p8n{^s60B207a<{tHLtXBFcGXBTl7DyqoJAfp<%3x?43~-nt+^ac z>cNn@kAT)Cy2O*u!?u0{5GF%>M=?pvH^UyfhWYEtfz};DlWZ&{U4W>X=>q;}@VzNQ z8(mLf4Kzf$v}*K(+*~&n7>i}<-w=KS!T+1VvM*{n&fs1v1LbucQ=I6fm6x7Cn-dt{ z2{aUdAZAtS?SdRs?_WW% zTx>c>%PQ`Z0Oj`ZheN1`de)cwgl)5nNfOle`{I8Q^?rJI7sRR%|r%M zHQm#@!7DyT$S%!3PWHFDfbA3mLnJsVX>UxDlCef_FF-ru*vMbx!)1PR0&d#8;D~WM z?xS3qOp9i>k8qz|VpC?DVz)cnIEP_a?7QWTdsnR!z=$RpDwpwQ0UBqrVMztHW)$d8 z#gV}(Eu%?yFY7_AFEw+16vU4i_Gor|aUP@(bGlnZfpqiKjlU`=z(*HyrdgrBd~>51 zSdF?3ax=Es#jSt;F|!mB*QPp9kFyY$MS zdE)RfbiaW3g|j;609rj3M4|J{=$PUWl{|g>CkmKY;tQ(&2>Io4MhYWPN}H0@B`#0? zb^@;F4;1eLE8WE87W2nhL`Cl<$P1Y1L=x$#qis&Q84ZV4}b;wG%#ao^vmFQzV&jtfm-2KpgMEOO_Y zlY?k=LZKk6c75-!A!x9f5fI7VJDn$epfHeg(xvO15a^OgjgI&&xcpZKj0PJ5kJB!XO!(OMh{FV3eDRklz z;rBD2%Qmf`4u^0a^s9r2Q7nd@%jCq`zCioz$u~!UA4=ti{#JbP)qBI{Xb=S5Fk10> z>~ht37Pl&o2~#751Z(?RKpA!>*1|R_*QZR+9=_?@y8n`8wFb>9L@6K6GuGIQ(hPw* z)GUS8Jl4!_s_)A2@e~We_V?aad#|(Ta^Z3NOG=tzM8d)1ndRQqD@xN1hwn13R{O-cmVffKUtym zH>zAZ_}h2>x+;A`y{zxCq-t{nQsyvBJna?!5M%cs<_`SUYx626i(n=XhRE!zN;xy) zlI4T3%4vKt`vIJ=0RcZ);kSm8#fwZwz0f~LuKZ)<6&h6Ve{w|Ue|4;~TH-o1qymkv z;I};;8C5uini2Jng-5-Kdz1838__B^%ZU;)W;#s;r^ay?EU+P;_}16&AwY5GckuF7M-nQ9=Kz-l=_(+EASc^*{SZhq<0GTulc>vmToCkro0!%|EM8!Sp8(Vkb++K>{87$3wt=A$E!11g35pHMMCg z?kxE=!Ls)CE%{*%MGM8~KcXJ`-mHIHnS6Uu*Z^uOnVt3d))ls@N1y_rPzItiV+G92 z$0^Y~3sSFgK}5%9GTdl9t<`3@$hlegG;&-pyP`65o1AWUv|RUeaa+~aQNTMGs44NM zTLPNG**p6?XP11% za2Xc0c-H?9#zyFhH3>ofK!C!=y~UBFxhJCqoilv49ik-s4h!Ee>pP=?4~qxG8wSI@ zx^vyl?n3dy6+-lzBQd2G_W0>-Gns31F;K*InwDnBv9LN%ya>jbvkmYRlI{!X9Hn7B zIq+mD;9>~-Xei_9;(18|;)*#g%Ym+z%{@ou$uS>-4HWU>wA?=CIH)|^{i0uW8DIwK zUz?s$yXFlJP+lf$6uZbuO<%|+Pn2S&wlvVFu$%FscZlEz8bYj;e=mr$<^ANf&8HV} zc54~L!g(f@Qtut4C&-;pnu+rhFUXs2e%pSGVb#V2>DtC%Rc!WkE$3C9MT&Ut2e@ZV zG_TiKLI;Lv}vS69S zCy2s^v(^42OE+^`7;*;3D>*%Hl>Hp9L}u7Mdx3(%tL!_2=dgC|^xu1PH5YGc=36T^ ztYayrkA~o!-oMz{M{L$r)-Gq{@ zJcW?01=sYGw?_CCFxg@cnH%w{AR6Gp`uu3xf&ba^W;ExbuTcGbf5ZvaJ91l=th!H8 zC;g*!!aK#%D-l{Vqk4-eVd9JI*I=kic3}Xo30C~B1L2)HFhRAp@{a18b!AYlXqhm2 z9+3f_Fy)1#C+o~=UW(ao34wGc=?7>yZp{R&QG|63_=z9mrYeI|rDC38J-hd>_w0a! zwGk#(gvY|HhCSWB_1VaRbo@lM;Jx&{thkiYoTRnXcpeab`Y7DKmCi1@2hEc;dy}ggx^{T@RK$>yVOu@WT z>vEt$quc3~YPwj5=*oQvJ6M^#i(5j5!IRxO5MZ;fFZ&`*G-}=j94?jy#kvx;->$9?CMwl5ZYP-1zjTyh!Da%A)S#^=r{=>gNGTskNE9u&yJ%Mm+WR z>(YZ<<%ZA(%D`U1Vw-W>xVp$0G_#>P?s8b%QS~Py@4IJ&Voc;U!^>E_wl=6wBD$XA z!S7uEtk0}Gk@ze((bq*O+5N}u18%eEXF?`ng_4&I z!%Q0*ZlR%~8P3=rDk`^ru`M@0;f{RoXQ)x+6li-rb3xJ)!F=r9Y2|G#98RzmZtt@h zkK1zHSm*EA{hHvhUOv-%AfAqOf*s5)6L*^M!a*j)VJyObvbFyYe~p$khe!N(H4*-! zg(HVG7_IGH6t_pbS`J~*|8}y%Kh?WvrHSBv2Dk$H--m~V!WjL-q4W-Z_RrA?|Gi(M zC;ayj{};9NztrGmo+NcZ4n+l0Ux@~x*yr1TdQSCdT5$vI@zNQ(cAPg9e3dQ0*0jc< zN5$DuKzVElc%adri7(W>0Kr5v3Asc9%FJAK0Fs6dRAiqEQjoDH$9};7$W6^G!;U6^ z17U_k4u>lpc|m~6Z9Co8s*W50O%r?P09>)rsOb>R8Fg+)-Tc7EM}tPq{{;?abLT)j zV4^oPVFIK?BDJ7yW@oEfdWI6EKWpS+cH4y#z*TNI8r(UjoPQIbx0V$T6vaYGS=1oQ zQr(VX&6cIZMp6;iX;<7s_nKOK@%g58Xz9X~xjV(B~u5 zaA7>SWN`Tc{ZBG5hgob?vU?xEfuH*Dp?K`2#CM7>UIROJ1Hrx*0fn`g-fflnO_-A> zVW|u07MxFp$~xv}fiFe#ov>}pk6M7%NERy=>jQe<5FK%uUZH9+Skk%+2Fx@-YrQec z%O9iGQ@o~!b74W8f*O?z09^Yl=k8qP4N)+Nq>M~MC|I(<8QevKX-wIB<3n!ABXk<5 z(vCvrYpL|A9YvP2mn0!2KUr!QTuY~I>DM~e)rNV^x~@*~%zl~It_4iPXrRcHqtqGX z#3^E9Afm3rNhBUUIqEelI?GnAd`^ZaoN0^TBRm>y+7agf5OkChuby6nJP=uvLBQbn zW{27%IWAgj7qhLZZOBJ+u_SGnLWSPo0EpPw$HN;$R0lw?B#}RaD5Mv$VWhFMy_IZh zWPS}xZ}&kfd*cVIYR+`tcR+W|$0~sL4OEv;x~Zr#@N0M-8vN;hISNRYB_a5UR3;qA zd)tJo=atgmpqfis0{OUGc5-2~)9f^;8#KTcaKQG<#e1Lxp(}uy_9JJ?Mu5hlD~NC0 zlRg>#%cb;&V)AoNx%23ojygl_{5H|dan!;xM*!2g%5;DwkO3B33lu&li`zisaIxos zZ*71p9e-WK*H_4>4PS$eF7| zFfmU?s`yi;C%`4}!YTBz>pj#BMmae8wE2ej+>EVRB<&nL?o=M3;MTcU)uiXo*!Z`V zOA}F98%ATcxqp8K?mZy~6Yna3G}67bhO8IGI5sLqCuh*;(h6RI@34$>H>B(L*)I{d z;vvD{LGY(YvVFO8dgrOp)<3e|-HU#akBvKhZjZDwTjr@RiG*C zIODh9o^vh@YmTAMY8_nqQIG0j_0STqI2ZfER*WV?zN(dg^#DH~I)_&Un=e-Co*N~gLc zG(nxY-F4?1or$_ZyJ^XB`}ohKkgYcHrR}8Ah#Wm=Y>sJQY-@>OPu z@jLe|h$hhQgAB(aMKuEGD`%G2v z(!3~dMfJ=DHN<>!#KrC_PdvfeGrt_O0i;~0*x?gdP6m%r`c|3LDt;&#Vom7 zBRn>s?H<0^D{;A)?otJ)v=!&~RfOVh3M9-9XJN;V-Ylz|kr>Y-E{S`--en9hHL!cPvaP@7{)5UF{q{54$)(;OfX~%9dyMN(s2Dyw59O3PtC? zK{&NP1>@|Ss($y3iieD%Ka-;5ZgJNnsug>;w2kfc8HC;q-|nYs2fOV2tGS#grQO9m z{vcSe;OkUGR+A|%iCPi^w_O}WatER_c;7po1^i8hj}NM?-!P52Bo;h;d)#IbCod!kujd6Nrw z#hSdF18k%$?UqMUTe0VC6{z0d=)!vr9H}3Y5pryw_0!|&1adJS!W|ztnC2}i1X5n6 z0_Ih?u?_)We&z`G986yVOpcN}FR!c5M^Aa+@?V}yb3kQXOWoTP-^AHT!O;j`ia4Tj zT-)akg( zX{*D};ZiAc4nEM==@MsG*U4NHW(QIi?p`z>lF(@&tw?vsBHbkBN~!8aO^ zGtnO5$Ltb_dcvOeU@^sUaRf)Lwn_x31jc#}RD)IUyg}~{6e6L02SDV;tqQ9|&&|76 zr~B2xmwyg1I?_5l=l*i;gRn(ke$o02<2eni#I-mGmThBzO+G4Mji%wnrKn^HDR~K&A2mU;J;$f;D-Pg+_sI+}NV>kc6v67jv-3hG)C7X@$YR9?3{Swb;@5ff;lCXY*tckjH>I7GbHYBXZ75wTV zmOtM_v6(fiBwL=wDpgDm5*B@k^mNv{>>5Z|2iw&>q9Qb8>NcnWS!lULtl=?B38@6} zSld`Ps;sB?!cg&}qmDn*GWt8ZV^Y#z_`OZg#t5;L4eELSE^gzw^oASQPs;R$mv&14+DQDa}^t7jEi9Ut(Q+vK>E-! z6SYL$peiy1DW@DuMy;)+!cwO&Cyfj4`{%d2`KTCASrAPI zYDYcya^dMN?hsX*BPXvOPH5_!CSWu{s3NotyA@wTIgo}^K;l_9l6Kv0dRW4i5~f*f z-{tfiW?)mQYJQXuB!HvBCXJ5pLci_*Sv!R4R^i!1|M|b~vNq14a^M( z)tj{%`oBS>C%G3$DoSTMl6+Vm7G?Aikr%>fcZf zRGx$n0`gGovK6bL;N%-+oFH;@d7OaYZ7KN}_}f~6Cey-bXSt)vMH;#8CqdhU_MAo_ zdPLh1(bf6>tpY#e00-g%Bo;J~Cr}-^?^x{-^KC(GlxZd_?7F z8KyT6g~#z@UOK0)tB(;DgD7Fh9R@PEpdD?nx)l&_Z8ex%XBvR;F+hV1j2Xk};IDS5 zN(S~Z90b01X5r12 zD7o-CFgu+t+wBlP&JA>)r3#|LuG~Z!P6aE^4YNvAa)LEp22D_0+r^dX_Tz4OP#Z{) zZzaFXJa2~T+7?hE3^tv=Agqf2ymZ`+i0c|ZpWh@B$IM|_9YG!e0k1#ME>Mo-CEDs> z;=~)qKKR60!XFINPcNgPSDPD# z@ZZ5L|5NJlpNPl*Y-yQ@|No=l(a6$&mk}><7()O5r6~AE-%+|Mh;}8;d1JT+7p%T9 zdQi8!H2(ZRFy4OXHV)AodW$~>iP^GmVWWU}8#J{o@D{*8X_&blBVgA09gd-#;)o>3 zp@U;+4k6n~l)eLQi-cID7Mf|!I047Dh;hE1-?l>=V2#Zk%EleLg+elz&Ju=_)djp% zOO>Lr)yPssQ`B4cAo7%1Hd=z{!)aZYKwO?Ipn9i}Qj1|D3J_Zde6Q{ubwaU~quJ17 zHB;nvu%ixAGU`CXuY&u9`0l*O}Tx0GTjp>t29EXhb8*P1qIVBX(88pgvF;_R`2s69w=w0 zHxHbhW8=-DW*}*QsgSse=adTc(IYerFb!8}%}#Y@8j$tY0sFbFXE-W*1I(2-@XUeR zrOi>g33(}C8{I7Hrs&8`=LskyhMQbrmm^-#EDU!ddGE3G!5^O>@w#To zb<6#~rx4g#be7~))B@3+K!t6l#nU#EV`6jFMDi#sXnx9uE(n590Yk$ zlj;&5ULg$vQqyNas(8Jb%1y(gf{Uwx<+*8YN3p~dFz9D?G(Wy+B+0BQ)lCnyxQ%YK zxX;_cAXU?z2e$PcAN(1@R3t;qbIW_WOJc48hf-M!jUvyK@IY~8oAyS@;6M`ufGv}8 zPe^CGn?Dq^>d>swH+)2Yr{)OmiP*b|n6*>|=sl|05r)voC-IJ7`F1J<-1~a{VF*Es zdyz%|ckR+Gz_-Q_ew{K|8Cyb>Z-SRw89iU%m$@RZ0*) zQ(E&VEzHU5{#Y~Bwfq4FEN9?BHLzv485)o_Ab@<;C^VLA`AOL< zj#cH>J$9C?smq zFlZ5ohfD1V3^}K3lzNB{xw~(E^9qO(%*I|&HGb7!I8FEj9`mm-eT6UewSxd}9u%4m zX)!N)`JbaJAvy}fMWwO^M}EzxEpMp!X3grzHbwldQO(gAFRI@e^YJkH&i4A^)Pk%U zV`zwUQ#zVXeir4C{*Oph{=sAYZ{~{}Zm)+i;rNf>#eowKi2Q#GQFW$;^vapnY`PXl zPqI(t*9Y-$Xc_3ZeFGWXkgHm@Y)rO+z+%;q?OXfbk@hWD;y?33;sx4vXpMhUco&<~ z7n+|wWZ$4yD#lyNNcow!GwRu>ynOA@cH&j*_h^+hVCZ2I9)0?reNaZ4W~LKD5)5@pcx;EJ!~xtT5&x6x5I zgBDQ|A}h6b0UUX?@jA%v9Gk&H#kJkOu0ahwS{zk&;2n=NcAMEatQ?w zy}%Bm@NM(Bu*-$}dmoQ#%ne$S9G{|xn-2Hs4&t`EJd9_syZPA==FCDIghn$~g<~qo zKZut7T-Nj17EVViDCEEGU|hxMpHbZIh@`jTni_TtcHWxIPSPbi-A2YsayIrMqLLvv z9Xs4)J)5b4SK{eu@T9ssQYzem&2`NC*L)1`X!UNS!F#F8YyF_Tz&{DPi5(T=2|*y(8&s0KD*|yE7lA<(JwRto}()7-3Xu z4C=4`9V!w8W2Uov*GBsbQ${_9%CaAsl*;oUtd9mPxo;-azLCFd1A^5Xy^-$bJ->B$ z9)Di2%qwTkq8oZ4HN8+~upxk5kOOf=r7rBbAv9$)gf!7UQb%!3$Qc?0^9ifOQENX3 zS=Va$V+-e={_t(I7^W*f8~)Bz<6CmU;CGfXQz6XcLmhYfjT*_IBcrN6m?3&8tngxJ z%YfW@wqw3Zl?TG^4py!Wlp1-AE+(q#ys} z&o^P+CHzOpI!^;Rq$4C2)3qxbp7rl6F5WC2sN$dFo>$I;Z~+>pj|$UaWHe#Ny;v2G zUAw!&X&%ARnQm-iqYU-@8g=<|0_by9c|PS<-($X-Z>1lUCXqGjNPd^JDjW!`*Sq@0YfaU*u9>BErb& zPchUyixhO+sF?l2a1AliuN`Smoke?Eun*E8)H8(1w4xUDcZfLH$b7%Zv4EjfV{jnk zBBMZq2(di{%)~U~quGf!YmPidca!-W%w%wNlsskc6-a|{7U;r6w+qbh=8g*QF_nRT+5{_0we!!d zSH$ql>ui)y>w_-%cP~BimTh_v2ZXnzLD5wHM>So?TC~TU%;d}W48@)j;{-;}VV5-K!#Gu3Nb^)wh_Ex%_+Qm%0HFoHj1_0-*bgcnU&~eT@RY$NS?Np?jecTeBFd6b@neRvOzTYz=c^%8PZr%KQ+LxAtt=8pv>Im?}`X$?p~XGxQyq9*m4S@_qBvK}lMPD-(#`)o+&2JsZc+!#{x z2(m?UQRNSo{b87oliKp*_)3Dhe3l?65=NHC9Q%ZxmX|x1(E+c?40O)uhIq5JYOg@!OB`Si&&s8*Vr031T zdSbp#Ciu1Lr@!dTW`qgLW|3#e?W)YxdOShyBW7?s-eF+D3}arPuVIT^8}m!T8u*U* zQ2aGiA`_LpOzzWmw+iO`dEj6K2+eO=pKsjVG*E2{eeAFMt>a2`v}||0o;L?07tJ8L z@XwbvUe`L~N*s1h<%W=%%5T#}rSp}CiTiipIRbIVKj}(v-wS*(g#WEy{|ALNfGl3r za_rz;vWERP&Cb*S=3_;^xOr=8Jk)2S&}MwWQg|nb{u&dbpix{FwfqE(0YvYaHFA63 z$>7h#gEs%O6ck<#{CMobjw4a_xhLyz>tUH1{-bVequYjd5xNm2ifVYL%0vyH&yzp< zk6kn}i(pJq@{{hyTiqZ~Qkd^ewH`X@fV&Vri+q|%H_p*be$L@}AbW@h!^dtRPV>bY zb7~onT09Rv9rwDXMhDI-ja+T|no-J&?|YmVtC#FO4u&H^%K#y@25tOJktAnZu*o9@ z7xz|{R@xg^f9c5#mNatVwqA`L-J+}eB?7si0fx}n_xSJI6x-t)W#VIXkfGw{NO@u0 z-o}66X3!?s9@!RGh@B{XLOx=&zni_Xxw}%S8*}SZ=>tkMPvxYgIYu&H% z{E6-mUE2Y?^T$s0Oj@@6Y;UMeT4H}r3M6q9?u^nXKH!NgsYGwkl%xjj`>@=D?+Cc%unMDo0-(cs%Hn<7(Z44B-zBJl`4&DJ(0)x3?Kw+msMV^&nBD1tz9qZOhFvpI1 zmAt{!EZ^I-$z)8_mbW~;2M&&&Oy#XG+#?|l6e=}M$ukv9MrmA(3lho@wTEZD{BwA4 ze@Xmzdr}yCPWtz+5|KiJRd#Ld*%}&6HD;KeTAEw)CE(k3gL(E+X^G@vlZh7)hn~KFj*))H-iXsBSR4b6*$-jNic8ym9Gqr$i4HFNptV*sQ*@ zk3#!(&D%CR=)hp-$mc5dC5EiHzK#R^b118GkO~@_7_!cO=n*Z7@^r#eK91Bwd#^>M zph%^4T8=R*Eu>Xma6`vsx&ILG?77zVfY|i~8IWmsevlgOgOXG}^5Al5Q^NC(iBECe zS>AUBMG1;K>uX;mFt(J2Qk}a6Y@o?9E0?`Ysi`If8~yi#=?P7VUNNIf>P0UO?3`8z z>k@chX1r5b0|NZR7FqkH`BN_))(-}{DfT@%fi^v4syo8QQfN#wkaM@J>M$$&vR8%L z03?HeY}}^zPUpQHl%ywdp4uCyKK%{7&J-8i-jAlE_S{R&+bm}&Yii504y(5aFV=C% zjjg_f+|O3S$TytPbvGfe+^m{H;j+jA@D%}|Vqv=!Q2=Ee6mTS%_OG#7#!9{qU5>ZE z^gscvRBn(H#c)ZBhQ$c(ZJ$#(*Eq+4n9%n){N_K1qX-dsR+d-LF-n>k53jVWh? zqXMMNSC%4H{Mn4*+FsSrp}RrX=bSMXPS(QDR34Vw5mx$lxW~-CE63;FHL0$h7D*iI ztx5)LAkdYqrdMvy>-+jqraBkBi$#saq7pg&)ypPzj@PFCL>??a5vk~YqSSc}#}`wC zIqT(ahOF0w#6~9nn8$r{3NS1$_5mW8iPI^@|KmVCYh_DRdIEMLw%kyaQRn)!PNOsm z^TdYH(QmMSMx8FH+31n~{)vR~;>`oT*0>)@eLyb7CR;=5Po1*>no7JpIgS-KPD~>` zuq4Pdn<)FRBy&3{=3)ePDemRF%I>1>BPk%IiUs8~5OWII*F&nhfKtTK?5DqrggTqUxV zq|y`$h91|SJzNv8RB=dQ*8HrZO_{wbes`H8%l-M#%=F4nFlqly4+H^N>EN0FZRXTJ zuZG`)8jh1dJLdn<1Nm>UvBu5;4vQ>opa;*Y2D=AQ%SL2I!2YaSRgP}}y_Zo94wC=x zpO(7EYm~jb{r9IplWg?`OwjsOWOT2)Nld!J93BT#3UjI6oIyB+#(hoX*>NZGI22WL zm4Vw<$RP57=D&2OuBVPGU(aAt`V|8$=i;f>mfmE|!ng*PZ2Ysqvk??Sbso$R{JlYM z_+>%-stWVBZ}D&N!T*Uu1Q%fbyO&%R=>8qn`0Bmp&u>DP6f;0RTkO`>GwzKEg5Q>1 z*;vt8(ZACP$@W)PsqucCo7PiMOKl;J=kmx4&$O3?ejxSf7L2Y>?qR@3kd{;wf&If? z3{w8^Rq-AP9w-*E3w+8f`ohZ%=o5Rxmt~`tZd9R5s+&~+KFdw`xR3wgVA+27hl3UI zx55M>P4FiF%f`6>8J|r8*i8SPyk=Vtr2L}30mW@afcbGwtR!FoIs^v}6u^&xeFX4c zG+NvaJr}$Cope{nI1HvhbuisC2X2TQjFeiG2PXuCqT@Ionv@mOpK~W*RVun+&s??q{xcmwTiA35utZn!$4da9v#_}vZBk{-4~=`S zC5#S^AYGjTnNEN?nh+=hvcL~Btr*W9@XQzEl5*d%tp!$M67d1Uk-C&sGXN7^wKfIF zTPI?W%o6Wau~-qR`41+&3{WR%+gDG_fQdiLi~smg0km;Du03}F^csS-%oof=iArC? z_HSBF)cIc3CS?Snvf9-wEjRW-T*}<%<<8~#K)7<27gvt2M>`!DrEFfvA6c3Ir~*ag zDQz8q0xou*I==M^4=%C7rOmXTKgA3CXNJC*Xx`4M$%n8aK0Ixf$m`tFfGM7Q3Z z_+hrV)1GL%K9XO*JD$=i-F+{=&KwB7n8E7pF^_Dl0c$%m!_%~Wd=pmu7xb0dT|WmF zzksWC1{_5zCP?lmP_KFp=g!R56_V$5Z7T=oF>g3qV{i7v0N!|X3o+ounUS(T#ROH8Qpwl!u>2xp!#9rlHeAWam zP7-1LpDAZ|XDYZx%mMZ47WDsd-4RO{m`SL>1NRINWgv#iw?IpN&kTT;X@NvO3b@-Y z-S$2Mknm0eE9eRlsVbYN>WkITyqHZ26+uZF&R6{UZubH%pDX>t1S_!w48hF;W^5)v z0JM*^@T_GRN@E}BQ-DcRj{%%vF3^Z#vu02`?RyjO*sQu34&&Z;{TavOKo@clK*cD! zz6N|)qX8hRy31+ZB*E?TZY3-VR_8UUKlH^v8Wd7gQZn={Yqqq3Nekmk3dPba59^W{ zSEK@910g4oSZhad*^Kc3%pj#^o+ZxU6@W=0EIeaO^twTSvsr!NRqQn3>{6LUph968 zneEu8`DPiH@;88{vo%Wu+eWf#RCQ~;I>RMc%Lo@sn@E_lZGOM`m~%S8CEA~>u#0&6 zPfSymrxnbAS*zQXqdIU>A@OKVR$fVXWa}}3!J=N#@x!LSK|Am6kSOrY)vMhA%}P_D zmfw8=cuqd?2mJnM4Yh7pgXFO#CAImKp5;}0+XVZW@K&MmMpa-!+3GX$8~i$+8>I~! zwYL?h@F_p;%qH&#I8)u+>f0|;+1^n#tp4hAG2+};H@z{oxw$r??c%x2#(pMvdMBk= zQbAs)Ht{}<@=9iTxTHFyOfF`VnKG{5ww6l33T@`DUEXBfa{xCvw!Vga@7QJZB;#j) zUbbRh!7RbBMhiLT848;Tt!qY4`~i2{#rBuos`Ae3pwB7dy{ z__}5(RIk6Et`!Mw)%?DQYX*m(Pih1rhHkJ~l9GLrVjzSLhMhp~5V(oYK^eB`cm##Y zSSkv8`Qx8k-4h4Cw2PL+Uc;s|zaS|)17Mb@jm8B4;0e7e1{0?axF{?X%%aBYGC6JL zQd$XUq%QC#>fNQXM{L4?Xel1fq&`x?L99(xes-0>u!*uqvn!IVjV=b<$kW5yL`}(( zug>MgZh7tkjFAcEOo1z~$k}P2y77);<_vvp;h)ps(Hw2pZDzx=uO{_Sg-1 zEdb3b#)%Owdg+|Lj2-lUErhq=e%zF5Ji6%X z3R6>UVPNdaI=Jx*05+M$<8QIu2jcin7rOd=^?5#@wcGjp6Lqe|u#Qb66aW!f_U7MH zK&6L!J%|;Erk8g8!E4I>IF@u~&hSCh9cjt$?*wZ^5%vfWcqS1BaJ;R!l+MqKWYF-p z&bbclc$bvJg6`&)`tkwkt?r*!^J#Gw2zZSB4%ADgOa-LcHB>y@Pxcd58+1?FL7R`@ zIai$d_O@!P)L(`hL2d1)1vK6xKys1DrFw{$2qXF)x(0 zkx=d{#_P~;euL;Dm<+o_f6bys=;Gv@_g8t;YYhR9h4_0;Skhc<6^_X#le`f&)FFT-Kn5 z=2_E^$+GDM{H&}}^M?_Eg#8z>t1Q#!Tmo@v*1LF}>l-b}=BBR>rRgE59;KYhU@q>` zCzV;hR0J%ur}8Za+osw9$l}-X-wSq|QT4ScusZH7F}X|jC-Ts!{BC0`pH1Br9ggSh zrCHujc$fLJc9G1HzTGApTfBEx)7)S>ZIB1H3s_JpN?N6FRcUR+MR^+4iih<15As8>CD={>^*o;3jF?G_p$p}IV7xUCMA^ATdTs0e@k8za(M_z!`GKHG zw-|1tJ+N@+cEElGZ`b%QdI_$^2uG{%aNsBubkg8&;g|#d7CwakrKiEo4^}hyCG&MR zVLm$nJICU?D@a%L|2Hsb*k33qDD=SPQ~3Y?iW~R8>7)F&D*JEhs(-Vkwp)(mF(!0K&E|RKUIk`O$s2Eb9yb+(r%nt;+iW_MN2Z z1dN2X@&FdO8)}dGVfuy>9?&T*8ws_5HIqmq0bOq8u_vx$-A1K61N6}RN5>Q}o=oVn zOSAy)#hW|VfpNVWRXb20UE4H#bwWn~3OPW@B8w9?Hwdbn0{>e8tYL{RMgwr0k$AZe zC^-X@fX2HBJai}4+V=tDuCiUF+Sv*$^6(`Qf`TcauUVc3unTI##(p{k`=?eXY7W%{ zE>tIbyEvFbaB&;c8w;%g(03~@W&rOfYGMkeBTa0`BW(ljOh+M25Lkd=m@onYo@=l$ z*~tYA_J_6MW*@q1$4itX+;q|f66oM=2)Z~IFi%MblDg>edd~cvw>d&*9@n!N=C@`9{B|poUaQcH75@At=el#o9G6UzH zTk2NKq5Qv}?tpILi=e;j~2-m==I2D;7@G9K8BNYpkM=NEVIxd z2;r(OV7E);@}2#cL%RFGq((})1|L;G^w0KC)m`B~{%`vppL9=IgXX&21n-sy8qn!b zt6GCiybZ>{DTTELCw~EK>qA)3PU*?Q)B*5rvIZdKuzntkv7)cA6-F^@wI{$E$Bm@+ zCX0Plo$kxiH~2FKEBGF?tJ=)ya}3EZa_ z3*TrDQh(=hwt!_$-~BcfgWgwz`>K7$DsGbQ1v9xC~~@2~#{I z;#2+v#Oe&zN?gqoJa2a)H|guALr;M3L;yL-mdBj4eI<#_B+h$M6-*TpM zii!>NCzJsCfl0*fg+RcT)AY%-$Bf-pwO9Sp(aQw+vrYbknkBD3hx#Rtx^&Q~qw))& zAa&+2L~Kyv4Emzay_+*Y5+(Bg{zA}S)=)T=o6l9e+oU~=sq>zYKvdrWxQ{eX%B-i% zow^Z^0WAMoiWX+e*&W5Gu|0gN=#w1AYG^pqVH#t^>m8C%x?o=}cK{ ze`-Mj9cIW@V@V>kgDtcT7H}0X4T|@_#37Ow1%TA_M!_0=*8Aut=|CDY2mi;@R5+C} zI?rBmqaES7V+mE8km!ixU|a*(!fbG$nSiOb_WU&{Mff^s z4YH8ID3~e+!;fWd*&)~5oqvr)ut0wZxGK3DAUMEXn`D!@e=^a7Z_bu0#(E9@ zz`$T?X;r%4t%L$eB~ z^p!f~L|%Wdi~~}jp3~c@#(Kh2yk|am&;(6q%e|irP){;ri=bQMAJ=&MP9~ZYU}r-n zA&kA{PZs1q$3PS){LwRNFVLQMAlNC$Xed}+^hV8Xz~UXIRB?@9n``*f&HeUH`X^O{ zl0P0L$D?QU);?@ckx1poWRU{N8s!?yZ-X-_QU~V2L)IuNOfc6@+I=b1r{zPqYIEOO z8t#({F>a+m963F26@)KOJ4dGxpTAqJUYmm=M2ISk6qSaI$k3`RD%Cc2qiubolpyp7 zX*5rp&w`JE(-mnNMM)uwgN0y(ae_UFz%F1v1S|8|x=?V+2#zYF_+676+BHB>9NMv2 zd;vL(4&a282i?Kc!dZ%D4{?5S%AIRS?g!5qCCGqcR2?me=LNS>Cvl&B%#Otlb_386 zaHTu}%zE|qI-ubyX=Z4ABCeG{(mkrJFpuzcg-^BOPE>Jft)9QV!qsToko#qF6@ja5 zEiQ+G(FD+urNtI;z|PVe6m1==(#Jmdu$%9ElIkPnFtTLgZ4lGl0)vWT}Zwotv%!97UU?kyIb zj<-oyK2#!~Qi!6%#{-i;!9dftn{4LZfRxO?`{$TS*S^;!#P#_w@)-@JaQN{ zCUyho4R6wYA|%KLpO^F-jWLy!J&||X5}xq3j)?lxvU}}M*2i{07~=o)I!b|Yp`)r? zIDNN%b+SkRx{k{S(Hn|RQAVFN3K&udyq)!Ear_N?^wnLvyHoqU(2{0~POf_|iqefXuBJ(Eh^+khui_T93{%~Cke#C=Y=q1#twLFAvd`?$8}0fpY@rrTcM&+ z3nPfV&6pu14%-PCE+ke3PGm&FJ&rf%{$W$pmGeSB$BGR>IHkJDha(B=E*jVyIv5ej zsBfgT6RX;#KTI=cHH{>}D_HvzSbS?jo^weMQYS zW4;J)SkAK)pSBBE-IF#@l6w1RWv-vT`^ftAmS`D!HT36sUhf|T+G)1Sp^h`oQsWI^ zJ>@Z6#7>3iF@2EPdeEppQ#-uVhs80Kkr8YrD@_i8a?K$iGW4f^=wIQ0?4R*m;`cTGvYWZyDqi9Q)itVGVDUUtPBf>h8Ih(r48*91|rq)v{*n4f!!*itwfF zi05(e)u2)n-i+nxw5#_Sx)S%$Y{SJ)%PE8Ut)xgu^e*YHR?blH z{_8R}y$0{Fl4pO9G!R1VZ;Wc2Fe?&E{W>ciO1UwrF#)TKto3%{?th)D`JBzcCphT4 zAnwX4T7!BUqABa{9e5j9T0}+nt(;)QNOz^_?Y7TYZ4sh%5%rDw2=cz>K3JAjGb(^! z5p5ZngVmxdT9P&@4}qPJv)!kThsM~fuIfFmB8*LgYm3@{cJaiYUn6xB>Cu>w%M4Htp&~ z-|$}LRE!Qn!lcddn~SJJ>kCeL=@8gkcZ^;0bf3#jHlO_a4ma+KWV@9v>#!M*z@tMZ z4+JuzK}H#;Cx((adga|G(}Jczvg#Z8ke>;Go%_C%RV&Id2=N$d!Nz|r;c1P?QwhV1 zJKh)wT35h~NEit^pa=$IOI>|kP#lR%MT1BTl>d5l3%p0wD?-A@u2Fev;SwGfHf zknPt?*{np`%W2ZffQ{+XeiturO~gQ_B`-RG{*+3@_-Q_Jqe))ny@r?~KribT2}AHa z9VFbyqOK5ZLGu3;&#(TL#X|x3c12r1LeT3ppL;FL$i%VivX z2v3)*umAr&y7~+M#URM&Are-NJmC1zts8WCJWY&AnMt|db)Y;yUh*UO z-1IZ{ah7T+u=$Qkefb0WXfLoJUOxQiD?Jl*^^_#G5d0eOiTwBF|7U;Y|INEOWL=%5 zV&mH9H7_ck7uaH54RS@;l);qIG$WYEoBW~mv!ENSzwob~A!8(Ad7i?h(uOHS>^k;a zWwoJk=IWVm+?e;#0-lRw3RN&CKR;^zaCwx+bet-*{=O(A-lXMef6obyIP?U*LJ?S0 zrvpzf&&Js`A=B&<5^uta4yyN;FZ^B)q5gBun4tgDkB+`v4NnpJdohT;uPzEb+TTkk ziFAm6usM+*0#f53;AD~Y9Pk$W-f5EB_qIrek0n|1ujLfy9v@|0jN}l(Z;}ehup+s( z5J>nHsOGlQVGHdZVi7TZZN=x^jup-V-I^GX1ldS+*|$ZTJl_*Rx;${Oxr6x#yefDW zP-g-0$^26$V0ZoZ^}bCUq?3!ltWat9X3j{EXV9uKdI@ei1_0{BTKJxyhBFAOYc z0ZREQ$TNrSJf{TD)i*{f@5vn20*=-yC=V5P0-P94EiNGSPKO*svpak?A6oTvdiCk< zYEc)968=a=GEmISS!7j56i$Qwc&-j;`Z?|PlxKi_=;tT58^OD|zQ<6^oHvd_J4zHd*(?2{+o!G}%P`c%>>Cvc3f% z^S57cQsQ1;$_r{5w?YAGB>#B5I3aKT&ybI!}i!nSau^YMxywB=Z z^Fg*vQIsn`&j!kB7Ob$rd;AJ3xL(^LXoBY$eS{1gcJZ0kdAz6H# z_c2^UpaGuaiLe^cafvUbYA!3X0ZcJon}l`pi!Q&gwWea@>4URjs+Lo)(A%M4`@} zqhJgHB_(qT4!zk&Ax__chd{1j7U(sX)_$|d*O-`_^QCs=t(S|h`q!UyLq@dtT^maP zN|+X{_^e2QbE;$0xgIVfCy#ep!iVjEUuXYBne{~87TrXC#XR<2Pg0}#Nl5(bZsdeV zuj)$cm&r^jbTD+Jb}Q$iTlRr0QTsUFhb8B8;KBKKWk6=*K%;g&!+oTF!j_2=PF;gK z3%m`it@1T?2?W+g-bM-BYmd%$7Qz`fTt_?#R2S-IpyYH7%%%qWcs(Us|2R+xS*rMq z%V~Jsh?G>M&f4ySbIi2TzwWs^NZc0t`835w6J-`lOc0P|Gwma*lxu0hclf+vAsd?o zETSqX@$L4eJ#r0hcz0NkT8s(FylXr%wwwiQKY_JUU@P#i6B3QwPf3KK?{73eiAv3& z8b!pqTYJ} zf)jzY>l|_aI(kDiYJV;E7kAsWfNoSC@^;l)etDT;2Umu@^<;^L=Z+Yw6DSzJks)Re zewYN0l=pujL_A@$F)M8*gS=S4x@5tK;W z={^CEgO!a?0o5*EswX2GV+ApojIS?uJ~X|yYeER=G%-T&C??By%nq%1H2%sxk~hNB zWrijSU&KZ)yPf&J4`F&C3eD^8Mu9SK6YmA6_qe?D2S|?R?aHqX^(h=o1>54j1uqz# zq<&L+l29!X+II`h{6mV^zfO$@W&_MClj|*D^l4ky9Scxl54%N1#N>5q7vWwiN#q2~ z#WhaY$<=!`E6qzEPiyI;EQOG9sP?tIX=skAEuvaOi9Hb0O3=sy+67OXHouGQUATKY zb;niiKJhmJ6;_4~x3~vRF>)S;@3d0A$pntm!#wobirnyBc`)$FvfAEXh{?+w&0L(5 zs0#jT3KW8Sf_e5SGQw@Q`}WjiV95hg>(X@d!u-@ZQP(l*#cqdks~Lg^Sgls~X8|CR zfR-~p@Bz2mA+-+>TiS5jyk9<<1^jFz{<&adB9K7`aZ`^pvbG zxIE}&PO;{gICoKFTHNc^(NMpAj_-Zbj#un2OYqjoYolG5|4AxO4@;iHocO)HAR?Eo zvFzRJpb-9+W~tE-6Mw!}ySjAwZ(xDlP(tkejk?B|lwo5kJ)hE?%Vg7?Ae=MI9$lm! z@vL4ZigYiFI;x`Z#mWPLoOR+QMn82CORCM+8cp1cpG}%qX`ia0%wgfv>oQ;Mn*RhW zsnCD@=x3<-)n0vd#PpK?^Sv95`k!6=zj>sWhSdP15fxyw@fclvQqmzFu-cXO0{viI z@*njtx03@L<0tLAa&z!McGGCp>whuAKY1lUJ?~rqs<`eaV2Pm|teqF=3j)V&`pKcK zTZ2rg{@Xk-?akcs1ST@YwMvjN2n#?wxXo&Y_!CUYR5NziwcB&)d==ZJuvP>b&Z z{kg@M(ltfZkSzSi8EZe&Vy$~Se)APR-&?KHf~OcRM)bz?SQ6^HQITrMaU5?rUsu+FNMyDXP}>9mq7H5(?ib4n z+5GoZ^E$baqF8>p%mam++^)T!;iYEW9hL{Z=#7BenF(0iVh-D3$ynFD-|Kp5%%p?p zfkzyw8nRK?xbvOs4hYB`f+19i;9HVNPvH+mh@r#b6Q;b5^L6jH))K_t#NIqQ5UuqF zP$nF{5CmK65Kyv)UkC0>IC8oCXjo^4fO$<$-O0JfnwaZ;<S8xqdH#4VePhQm0X=?Y02qf3gy*d=Wct3-+=UpKlfiyz; z*g&*{NAR3mip%P_Dhu3mm$A}#>Dn^hcQ31!PAO03=OyYJg0>2K8wa227<#LL&eITR z@qC?OS`Shd+~HsNef?hUgCx9z4Z$RT&x3gL-{Tflr=W)xS=Z+GHk@|))nd-rDu@!6 z-^zgMkQ!_K?{_TK69GxJ*1+>StIBaBYvQ-lh;BZm=O1NLLe(LHM>)<@(lssdvL&2dwD#3(;ut z+BQakncdw2``2s+fx>pYte`jbT)pKk6#mSM^w}5?EEQ0HIs@h4|8v zGyZmN`E*F;`{V`g-R@$oe2matuwC5hi|0B~b6WWt>7Edz5iGa#Zce;5nDQ)~7f8rZ z@|8SFcVK7l&h&k-cB6g@i!pB2^|5g_i$)c5-b1Qvfk08FT{0jlUqR&~ zndb>~SGXxro`s$jp#7fvh!-w2eyG<7=9G{$w~#} zcaDx*Ib;$ZsMwtBmGe~LBn3_b8!n9rbT5uOX>->zsW90l@eL~XFsw?DKD(cRtub97 z)Y(Ss{PZXnpRmL?B%U`jZ>nnLn-q}V7&zI^SBh@2Z4R;n21gbI*djshB2!((6fTo? ztFNPPg7I01?F$;{iFf$fc%3*IhR z;=;Z7yy*S%M~!d888n|D8->$IlG5-jHRDkrha!o#Gwc3gJD1xL>kwcvYUrnknR1e@W`W zgHDlE>vhTxrn~Qk;AwxMRh1i=zt>4_X}(Kho&Hi&H3Jp?qlo)!&&yrWafZhG+Sy71 z(NEZ%Qy*@%Q&td&l+oVmnNd{#6U_0aZcvU-_9Dm@v$|Z1Un`ANo)L+(Z|g%RIA;pt zG>FHqUG9ymcfM$Y+LX$@tR6`sML8m2&PzY#$KU^%WQ|;4($}~5&{ea>-MdIx;6qeG!%V#b&3_VeI=Hc-#SY-m@wB1ncot6dv&te4(U?84SdO-hXIr69}vGAEwCal?d;f{53%oRo5B zJqCG**c)LZH{Um1W*5gpynaB|6GFcAX5wfm;iQiv=B?#U$hYcHZi)O`X7>0Tbv^6E zQwC3ZW~d7F3rpMt_o-v_1tVry6bmSv_5dhr?V^5H&Y?Z@x@(Edvlwe+w&5ANPa7S# ztlOO8z1AEFy$gq}5M{C8p00xY3W)M=hy)(FJF zS_Oxk2d75w$ba87_i?=gvi2vaNr}H>McE$h8+H_e3|lpz+-&!=AEpqQ>YIYyEMWHb z$aIVPPP-)kZT^4{3~vJ?2kMZ6NUdEjCVM~8)J|Ae_v}U8%d4Qx@#R3%OFg7`$=y*n zgHJ{I(1L#&zMIky<&s{5)DK%&^L^ijh6vUvnh0=YLL69Vhcsz zHgcmZ@^PfY66z*yeaOtpxMLvKVjCUDYNukGEq(JQ4X;kOcw3G@3q#up@(Gg~fR1ag zwadK}V0;1{Gu3}9T^rV%W@dj#iY}{slazfEF;JLrFXdj0(H{LdCc9T*nhhcpG2b~E z^5NKp$lJPDs>eOjuxD)4D{)}GqCJ>m$(=>?eajPG(AR#J?|j<|o$`^#l=~-&t&+)w z3H@dR^Ifm?*Cah5<8esmph3236*$v^frX0oIHH@>bms=0Bds=?9)G>W-H8vQn4@E^ z-&g3B;At&9W(~H#6=Z~{LZR#XFyuyQ2o{`n*v}v$01n-wN#Raacm^&CH`1fOebCVp z{Pl5mDm^ies*r`9hn@hr-=;Q3^c{i+UAII>B+?6Q7T`!T`dY)D=PY${NI2y26Y*LN zW`{E)Ek`i4$we>gw~-xtwwdmh^EgeCN`;ileqzz)O{?0YgU&{MO&v7rw&#QNr&dxynL zE9$3X#|Op^T!C*MR6f{2=is2Dm;io#jW%0dz8B zoYpvs}AhT6~MXvx9 zOU6J1oh1*-#NiAOJBKu{)KB~7{L#-T};@u2RQX2CIWM__(QSX_Vp2dm2 zKiXU{MCxO~Dki!QosIjN-YKlz*3%cec}kVd+2JJ<{N!x5Tv%JbjsN`fkl-E2*Gyte z8$#EI=ST#$(2;qYvhzwo95{ujw`a5_oHw)r9KsX^H&wzv(ZX%^kq5Kcy2jhljbn?~ z*6ClIMqKN=pH0Ah`-phK-^kPFDGHI}kuYj?*PhYSYjM0*RZiNjyzz=`fso%$XsH!V ze*7d!vx{82&{N5?6g+VM##!k2tMT6Mf1G?96dGHk*sY0#=z}3AvsdY0|4Iy*2-axD zImn$T^XQd}P@yHHf#Sz&s5}t3g??X3cnV+dr|$o*?pmc%A7{St`Xdo)(u^~4D&%+) zxM%U|>_@KdgsdWz_6CY5<=jBZcK*VIjy=uhc)S>~Z#HP6t~;^MYCRUR8;0CeXO7(B zM{insjoE<|xp}a|jX9O2XW+9rQ1$pDZEW!)0(JbY=$Fc)CiVK)k$6a$EW4Gdw-2MT@wu@o zUSJDFP*EZ>$pg(?^I3q;ci8QP^^yJEU@t!FN$JO{{Yd)g8LoPBNFuz%l2(38Y=VeW z?1raS(;$@bcQv6;r#cslp*UfGs^;T4?&kaMWc^f}Z$bAAX38 zsO(JTa3u0Joit8o-LxT~vF@5~P>5PfHW)>8nKTLoCP&_GHoiF492IB{tIowBv#CtA ze5$QS8IZ57aPA+5C?vKBi0Jq&y-ry7BtDoAHTfrMi@?UUI=X_1zUK|356koKzw5n0 zNlEq~^5>6z2b#3?`I}B5QLGN+e&K@%hayyJOCnm@_UUJyM2s;fPVnaQXhX+l5?*L}oMnUg zXSgZ3?U&J*866}{ifL!Yhb2TaIn@zs97{3POy)b-j7;)+?gZOLJR8VUGF5{wbOkF{B3COv);b`pxlGbp%!Ot;iy~x z7A7%{=fX9eU^ixD1%K}CUlxyCsaw)h$G4?EzU!S?m)SmbH7?ix1TJN_LaU74w>8EV z51*yx^QTV4eH`cmc3s7@3ursF`*MhBtdpBP!jA6-E`y4jF@@cp$NSeNLJx%emuneT z6`;165O8_bElq0n9|e|erf<Cf21VY(n5od+03GIFN~YO3R=<+{PvhW%5oeniHs0p543M1>W=R; z5!Lh$K;H>|>$-H>ttVe1KwbQbuk+{Q4{#;tf$TEFWzXxfPjOY-xoYHGHomUPJy-Qr zxHU;X7#oG@7u}O2P>KeZ?%|@sKlPsf`q9;I{kv*V^!a4@g*N~rWX5p1z3XLf=cVC@ z2bG$Pm`AVFWD_2I+7tc=8a`-AkAN><65Q!=0?5OqD3i_c+*n=^q2+!8zQcD2MoWQK zo}6|fa4vqOm}mxylE-y=7x@_d%RkwyC+bAvL9)5(MGkJr6d-j?47{Z>8@vK0Z0fajL4RmV);-`}Ukl!& zqa4-RDr+K8`Z1Q;yg0qax;#Tk+2ELgUncPpY!WE*VaX!*eX9(9-NkO;)+o0YII98V zCMAc(-oc6e%?YZ}t+2aDf%=w#8n&Q}!^tbT2-kUD9WW;5#Q*V-Ph?jDg#qb!;J|4P z7))?gQW1hb#@#@-Vr8jS!HU)^Kp9Ku!4h^uJ7xCQt*H#Vg_2Bs_=3S#aq!)vDaT^3 zX;7{L7s|K>60MmTkf6%l5^xx{y!xd<4T$A$u_g=PmNvPmr6}{BiR`WJeH}0Lknbo= z^c+@#n@m~aJu#n!TO%Kr(M+3wHqr6L?DBx1+w{T6%%XaG-t$@pbELoro<~MDL)%A7 zDo4Ms{}36<%Iwvy%Bb93MB9%mB#hTS!59279cqzZEjQAKVKtrwlA!>KAawz^O`rfP zFSrG_EUd`+tY5aAh#gaavb%pYIe^l7?OWv4stSPqO_uh_K0%`3FmHQ*B7dKa!=nHC z8mMWwpH%GBs}rF=ULAb~E|z3_o|w`MNJ|Oa#9B;YpF0CDlduq9y?PY;&{P?kS z@y-qw`36>v!5>e{2)b zy&Rf?i#k;z+>mh~{>dia(9hBlxZrOTBl2h-S!AQnOBxqlTW-<}bTSU}LPu%p^Dv?BHvl$kwm&)5`xrQ~lV5Xe-o1q~ z?G|@UnBvEYflXHiN2+v_4Y`%3vw7%0r{x~>l`i}T-Lg#G>P6`>z!8_4$OQj^LE>Zr zu95vTje|5xs&2DLwYa*w-00{!`@kb>bZ2_o5(p?irP>9}8&NJ)oG-6H&u{e%xWf)p z5ZAaMWDv;q^4&szPT~qvH9lCtYTm1*X|hhyvt}(E9gkgkUf5&sf5>1(y#77~HOk-p6(UDNXVl6X zE$$w8nl9$!URYvOzQ5eA3cBw| zQH96~yh1OBHYZE@EHBa%_X~pQK30j7d!WCjOTiXlkUKc{I<#GTIoJ$R-UBM`jDU=m zHAAYHW-nLnpD_<)ejf1Dj+W1;4Z9&ePPnY&jN!AkDai|1QTXcDE4M=L4qI&u1<{+| z(K0-=8N2y3UV;w#z=(G-{c`tyUc3!G5+t%>FOM3PFMkm5*~5?iile_g zB>tvrb|EEYzW`Z0KoBS7hvbXH(d=^)Vy$v z#5u4~DbXw?yemf(a>J8;@5WiT@DSF!fF>0WwltaXU7ebW$D4rYFeu`lN$9;#%0^Qo zWgkpd0qkbJ5O`D9Xvoz|G6R&LX!(Ln@}FM59uWgfqZ6PuO3^3wGVYe)fyE9-G;k`o;EliBu-)*idjZV@#oNY>JH7ibT-&^ zG{wM=rG^l5o!4%_tWcnsxOmaNZ=gE>SXg95RZr1@U*4Jir%6m3$21b6gXqX@ng|81yf^p9|SKiX+BAQnz zgQB?M4<_I0iz$Wab$pi%6pD}v5w~q@dJ|$bvEj0-X)Jfq;08=SRZQ@BBT?mtQnoPHuUiX{{f)*n|^d++}YU{$M>+)oxM*sN$ zmNgmz!+}+4$X$gbp;1fTmNshir{A4gVlcM%Mq)LPwikcCTg4Y#ALpsW5=#FqHV?26 zduMUhmU~`nfg*uv?PBx6>m2t6Y4DRY(^oEM%$-;e<@a#0xjpIhIea))XSRDofZ3A7 zV_qYIEEhn!4SH4*F6W853LODRr))MJ5|M^mu+h-p81R+kCN%#Lc+e`Z84`iPMtLE4e503^B+&8rCQ@LsD*Mlmva%$IRWPCHU7{y0nb9j5=vwUyuDWWZz5raf^=k=^VE#d%OaYTI-E!0 zarfw_ zGKYh~odP$s+@;Wx;rqP!JkAXbHUJHFe0kl!haO({-X0a@y^(2T%gjL2@epUXlOC5| z!A<(lFG7hjk7Vh@2LeF-8r)k(sKGH;eF`C z7XFrRr9p7~wz$-Z_*lx3Y?z{Wr&XdB5g3>$C|g_&%uvAl!6eY{>Z_nc*^263=TPE{ zYHDVpisYG4{QUJv9_LTxW`*q74uF~_eb@<{7^X+cwE0H#Ey;#ClpY?s$+15E-SI^g zC)sm9NyEA&e2zOcM)C!vQ2I=xJUj`*nV=6DV^&e$gD*G)*Nm=FMgHJZ%PwSVP zQ0hm_c^ z@}aT$_6b3dNrG;kmYW3^el-Sx(_P89c;h_r%h4l1wwJ^%eRHJ2hM7pOU;KrJ=;@6+ zL7oPrpyq17$s;=*7R8g(OYrAEoO3j4V_`u0`}$eGg@kopyPqkL`eTx{hw&>%V}teh z;UrwF2Yt`o8njM`u$&hNyerb_t*#pc;@asgK0NvU+$({DklleOTc(2xap4#J>HC1B zNx<#46j{_;*Wd#{)2nexU`7hGfT3Z-wP7=OnQAX8o~gbskmqku^fo>sIC;zU;w#I5 zcv!yNxp)lm&&nV%s7=#F7_&hwmUBnz8fn+Bv5_WmZ3ELuEshhQ%<+E3<@E?2NECUN z4{nnov)#B_48-M;g)#i`p4Pd_rtFFoX_Ws8-EPH8W{6LXg*XKWI|vp(ISxxh*zBqP z%0$MDtZP$E*|QPN-F*(?^PMW$PBmdU^>;_if&lar-bVA3p*U99Z!e?Uj-xD@((A13p`q8d)B^c2tS#sqG&q7cSboJrHQ-uupq{4e*Df62J%66#-VRZ*O5 z!h||FN5|ryUp*9hK!6-3gD-W9!uZMHRq*7C2E3&OQgK&-bz)nagd$|@V4!|$4wKZ! zh1@Is>c)-5ZWyL2c?R;VL8&vypzJ<56$rb|jy9|B|Jm~8HT0j&klqfk$O1*F<6$?)_HfK(`yd-@T%KN@&PsRA3?)WyILbR4S~mcY4>1&EdE z_M*qr8jLZYqL)wFXDcTKsLv#>S! zRab!HFjH$^nMOBoOPm}n)qLaxJouh(sk|k;ZJJ($HDh!38fX~I0kiK0caZ6mcpET3 zkcDX7?sa;O8ATQfrw6J~y;QhBhjZjLcB&GyY}k{N_OM@48}x2hqYOi^#(-m&U8(h% zzn|l|eW>I5Y53Go5ujO;3)%8{zT2EDtEp1nPQ&Aj{9`G>Ek};tQ&tvtHG;hNs<* zNUm`8!2zzel(pY#1F|SJ)-nHsGYRP~%lA7YVkgz7;+*SQ=*yh!G?>IHxfS3sQwb^#aPw}5k@ z)teldYd>4Fy*n}gO-{+Ha8tZJU+XO>hj}$t(W#leMF)7xwTcgDc<5KCMO^n@AS|ke z?k8FWIVsoL8y$d_lyjVZG^ht-Vp(v1)Oepwf3ez#~jvdehD2vAqk!8frn; zEkjeF9&!_gtk4IQ=yaj-H zka`q&YEGt8svPUi?9Yyd?Ln%hB@*EQv1b4t5DkR?q_7`&p5@qS=Cn}j%wC|*DNP_v zq}xpcd&B(Aa->TY&m@M=vS82CqL)8nB6efvwddG=R3h9q)1icH-@0*Xn5MmN-IXWm z;5)f2tuGhPeCzyElSCX0Th~L+yqp+nw_dyo)LEEO;;I{&;&+`n|2@UFMN@V>xTdap zeGAQDQBB@?P3$q<#Ordt!C-Kg%W{2sdUbui%sL7@xz!DlKAJVIRI?FFHp5brq7A3y zyVU#ab0y40b=hAz;w!#_O;2~tXpV!#c2zC2YlfjC_N9a9oz>Tq5uePxKg^AWCVEF} z`#}EBgvbUI+`?N5rLsVR_Z0{YIM?=_wFKwIs)BXsR8=sC zD@4NeiBbeOPp4>W#HNMTQ}V3T+O}1qO*G#Zuep+Pl0BCbh9S(%2e*m$LMI;P*tW3# z9>rY>H=dalW+&Bu3pB`K26FwYeKZHUjW}}Vxl3SpU9Pidx1*zW;BS>c&RupdTB`c` z)zz#*x0TWW;U3-R6{fA6r=e;E;?FA79+U-9eT<*MI%xn7l*i2XTg@3N`F))}jPB|= z)KNLnV6+1pZZ-8jQT4*Q*Wp%AT^E->*OY6h8&0e-a96JiB|-S74T;Nk|Ld&jZ$}r1 zXm^>}JGk8LHMJj>ny97S;R__B#4M?}0UJ8#9LKSkJdIcRD2p`ZbWs@Yy(%>E>f#3_ zf9zdgSDKLQ3`naw)omT{TOW6a6rEZ2&J_zg^JJfL-SZ@CEH=Kg$w|#_fDN)PC3qOOq*oGLbvq=8@bDeiEt zEy2Kj0jyodMR2V5mFK=vls(T3NF*mD;0uF|CYPHO# zI7%-xX22uK@0XUu$tDxzMqgm60Nb{%UG0>`e`=EdsO(gXB?*mE@k483 z0y}Pg__l-dv9m9IA3VIY_qvYm5yBdjR~8808{Jm2<1K7hMBAQH-Q>TnS2J|y`<|am zk`gw6H5o+rTW5-G3Eg5I6l>+y#X_GQqgX!%X;!H#R0123V!7f11iXsaOps<*Ym3AJ zn*K)X#%Dxt8+XcjpL~z*+XEXV_4xygMyQ>k`swRh!~ZPwJO@lz2=~P14ifEM-i3mz zGkxHZ8L?;(?_5GNy`Yti2vV~mwW{)Ro9xV>5(Pnj9XxvdvOxdW)S!ama;1+(3wM`G z^p~E!?=2*oM4;({>>hNrR+z^#X~`lsfwZOS^sw<=lVHe%9Mwdm6bk?LA4SMg(g6O# zsvnO)L#T%R!Av7w({I65m6i*^HQ@ZgJczr;1Ysf}^+vg>B2C5%FvqcLyb79s;jQ^T z=G6J%qr(T!UL344jymBMXzcXm4>bX#jkD^(@{iDaWI@GQJ?H7AUr`)t8I&4EC$|#TdJA4$T?l>8z2ICy1iSk#j9kUq*t9z_DZpJ0=Sh-}N*^9DLD z+z8%af4OwAoA+Mh&e4(2>m!uun2jucKYMynpe$vz-#S3MibX8*$iBodd*l6w!H?%% zCl7rOrIl0p#dh>tFD7P}R9h2@D1*;KWHBUj1ex)SvVj&w6T&4kxfjRT5?+ip6H#S`=1qR%j-;`nec7lKaa0K05TJlH&!N^3*fJvdEI{jss5!oVR~TzciiE( z!IH+T61FIBr+g4of#UE>Pc#dLow7|#PH(6l4pQC_GrJn8scoHU?{6TP>juW6e{7I( zc`tn&uNN|#d-ar%5~Yy2hqN)n6DY$HC62I2N|5Y@a*Vm@I##-0R4gk^?Ai|XO*Y(S ze~g-h^{8S8Da`bqS06oeC3^e{JLG{=rVaZHYWj4zNXV+6lGqDQ&JgV*$pnei2?*uwX&@VKs2a z|GnesQ<`@@v5`8tzr|8HZP$KWTIJpSj3Ei5Xm$Ls07>(OHJ>j3s8R3V@Nx~}axTX`NWnX)=XqAzy$-hHI zS%yLu^SX}5{C+n~yC2>Q6C^C!HjCG1MA~>|W!m~pcSzBc7ygl`9CBPO5u~s}J&!{{ z{7NG6nBd3G`P45r9q8a{b>a+xtjLMpSNqh4`R!-J#Mc;4oOSR;H?v~P&mhg@yS#HR zg`&YOWw-5ZnLY3C*{S>s$B;f9(}@&TYI<{4@Q^E?g=!+XV@ihnk=0Mpp6nqNJ_tSc z`sz>YtGY|bV>fv1N^9D>q66*Qu|q$wuwU<5ft1m_%iD$me~z7if(MoDwEP62=r{X7 zR)j64Ue7Q?BU&^Gj7JzDnMvMUQl+Qo51?KPy0Nr2SK+TiQn`&hd9`3!1|c~FyxPf8 zGtTf7!9NWC58V{)uvAHT;3*Us$ADch{5gE#WO zBWVyz{3JwB!udi~IVJMn_4ee`-gUo3%z-FP)1zM;FqL zPcJSI|6XJhNP-)Lo*xJSwW*xKI_u)r(VPV zeY6^RQwujdEE2Sqe40Sr(dnvEEi-4(*h2c@1S}{#-NMPm_(h%0-g7zN^l6IlExXn+ z|D0fPe?WS!Qi12&Svqddz#kHhbbMu>q?oZPoH+3kphRzcYCY_Aaakd}3J`j|n(>nT z+Tj`DS1~50&#T@ZbvbcTV;%jGC-&x5`aNBRp&mp**-mHmGE4RC@EXS$36*K~&I2`K zm3F?mT7FY?ASAuuM-A}kC71nXMCKjkY4K!}Y3QLBX=t=)2!JhIH2--kj^SB^i+o|Q zLq!}Ey;Akf;69EFT?~4UxKz7?SGCKnchMIGB$%h&IY;f2^_FhN2BayMY+z}46o;!= z^w|vW2o{M7Ls4W+!Tv|eh6ZPLZg z6J5yVFBBkZg8TBxrEmR6_!aM!cjfIDWbT$j2vCgpkz|9O7_+7>ou?db`YE73YER^P zfHBA>-OFLAwqz2(^r(6eo7ooypMGq2uNk$cwM3_)%l3ka*LN=b4(mVn zt4bCmZiMihV`iyT-Qi(^ZGTCUBJzM|Kabv+9b*$^U-KjC5IkSieTpDCizj*r6O{H- zX+w>gO0L{9wrFHLPf+t)aQ!3Ec;!9zmedpB36}fjrI2G=^dWHQUX|R=2E?|K3XwML zOy)>5xR!fLEWq2B5Dl0MsI>LI@XxgFx5kOwc_ewJiArrrGG(PyXgzQB&n1>HvjUuw zEi9PPDKENe!>UGZk7a*WS>cF7o7K*;syTFGj21S+r|?qR5R#`kJ_f zDi1P(Sz5-N)Zv);!0rRZ0h5iTrP~vjPASF}{7=ZDHRf@!z=INjToPS-@a(ZBnLRh? zO&~D}u(VnoGodq{(Eki{vqhmEuD7CCqA5d;AKXi?M{=~+_t&dK2z}vEN>>4mN&H^V zbZ(LtaiU*{X4ODs>$-m;TjM6Gu-RxXj0VfU9Lj2>PNJ~~I0Uk_Klui6H2pSfBA=LIyjs|MArXp}+g;d3!wW#_9VF%XWLRj!FA8Jp zyfNntW4sH_XyML}>wZc+=z6&!x)VfYWQ-@h#!pJ&G3JSv8s|>Ag<`{+m6B+31w;uZ zSx7VM0@l2t>%g_a_u=>3#k6qcX!^iG$*U*Z`oi*+WCh+^!+A$%&a<-Z5c-2EU9>=c z$(@O9&Y|#AWjtTnptK%7eL4l&jvlLzB&J|a<_G?ol^03 z*PHsQ@F)vPrUO3a_es1GbU3N6Vmsa=ZM5TnRR}+umDWjsKBMzZEwnw=Jbft-wd(Os zu|>)$0dx#BUOy(57(9B6$L_!Xd^34VQ)qmJyaZEg;ij#B3jbxD4J+Yl`$Sf$K>Mf# zOB#xcpJ41A(*97;fzu(7WW1iHEY(<0Zo@Q)dyGABe0YZ&?pB*BuD=bl;Wc^+#fLMk z@ux7hYFAcKm%=omgxo8rQfU}S)|?I&g&AzT4FjFV=R8w?wt2|Vd0BfSS{a4OoG0iu zF2hGI+C65?m64?=xW|+ELfrV`75O(gA%B>qFhbm>cLWzK0!ZlaVhizo`-jz?eRktbIo|8gHSZ4N1*6acnrRzSZRH-pWUn22P z;~gF_)5K>mD(g2!iDI^qsnU9Gc^KPORS;ls#` zYSf%BfG|)Ybh4gzNY+dgt}qLvXa{xuF$Ist4-9`()ROlbu~|&H8SC+d!tr)OO>7yn zyn&YWs+PXi=Kx3Jzc#JJXR_FRAXl_sMNL0coLH6i*TMDoN2B=_cbLH@Ep-YpHJ3_y za4i*F@6OHo&;NlT{EyY)|0Fp7`i=g-ROHU^6@dV>ytUr>2YPOa{{+9mM}GT!g-SMN z6NEPD8M=L%FNLxXGNzZR(X7kky)oHr??F~7co zDU;ZVJCxY{fSk`hztV)b$eq0~Y_bl7itcbezf4?~)-xk<`56TygBWA5GGa#YulG-&d7fLv|D(w+xCvhkG z>}w?u=d)bX|DXEo>>wRAp9fLbneiDB3$sCu!F2U4< zy`NFV8dc^boP3hUm``1JmsR(d{6+gq+#84*JEG{<6xSu|HeL8`xra{9{O^>A1WUBfe25J zLxurt*A`{xed>NNt~St?ORan#35#9119IT^IrPYhA&c%&Ancn{`E)WR=(IN(e`ePm zI+=on6&raVBBwXj*L=3(OHlj0nW_^kvoyVmw?g9{R4yYLV~z^z{*VcsuN19ECO%&( z?1m5T`3Xt~y8(1UmAFhk+M~32e5$WIAka;1az&TYCw@g)cUODVH|)be-L@@&@FAX5 zZCD?zbY_ZtCgZhYDi^ovz11=RGtoi|VML&mi+~wzDq3iz5%-u8dC>Q9H1F=NP4CZ$+lISe3rvdt0Jo>w#6}Bya{rpAFV;GMJxEj4dcnDqk zz{qJ~%CU=tSCkVYcNdXivy=?S5?1p>>Z*c94-77Ks}*Xj`k^25dmeN-o^RnV>*c5# zjFzphPX+iLeHWMVteW1w1#;)HIP~4n=AXm{W4{kzxHSp_I+@*W2n)~rP?2BgnVYOU zR!e}FLaedC<>B;FWh;qD#m(h3<&B=7wbD?%#dMQ17+3v7wE*@j`ugMOTNa<& z>r3hl!GmcTbtxDf6P_&V>7o&v9^UQ*U>{bb_Xr|(xdz=2)UYC?CIRc<;b>Xgl`3FM zE&no;(w7-Z?BLnBHng33S?Qb-IWKwIWQ!JQ&wk2H=E|1*l%qu4sC++j5=Z@vRe}<$ zpYLt1_{EAQhiLEN@=W?pI2%Mmdo7r#%XGhHsJFg(nWcS!s<|d?{tOJKe_gHvf|h~D z%UBB|I@CY>M8KhU=Z#knmWvf4RXao4^@}DrK_Nn_-E6M~kE?=&?e$9!?3D0|r^rW2 z{ZFBXAN?|j<2tW@HVxc6U0gK)jn@;}xP@#M6u`*hdR8RTA}XvU@{JA)nynsh@mkZ3>s3qh*llc?mB)WKet2Akd&Ksx~%#z1<4;tHfKU<&G zaQ-c!zH-#Bu0u8|jriR|zFdvCM9fK`LX>3dtNR&PO^;~=a?NVD zf$J?3qKuBTv4X@a1nuy7hR)+-iT79(!~Ov|mnmS-P>Nxi!UsrGWTRR|7C)XmqA(>{ z*?!P8a~d(sRv`t;ARsG+{TXN$VRVdqSHSR$F+PFZD6j;;2=G%W{Jnb@39;ow+;f20 z!P{FtmNnB;u1o%&FjLWDC)D!CVjUEC2=gbC9C>F>5iWoULLKmD`Q&E-MS6N zLN@J&WxlI7d4N$mA&#A-c=L>+V|P6j<2guMwO<>er2c$+bU!x%lglZ866sm#->c}L z#``N5F%m|`!j=ucxN6V*Kx8V*^`(ve{}(%M2J-sb+$zBO6F(~qF{H({&q zgotWU5q7KbV&afRS8IxW6Qybt6vwlQfs}@txF~|akteh!bIt zy>wxU?`yaprY8b7vjQ>3%`-KYt2f@^lD|KQRZgh(Si9Mdca|5y@(2gnVwK_I?(Xw! z5CTTX;GnFqA@U?Xsht~FOBgLRK`i`@f@dt)S}4(s3<*MYcc|8n$#@CqK{|!DlFSWs zklnps_@!AaIOHK4T7;2ost>|y8>&2CfWQD2UL^WfHlm5dj?oNXHtkXC3LP~@(}L5! zb;GOGNqh>TO&xcBs4pYVfP={CLtoPRIEbTjJlB%5dGmeC%(mA?2ekxJKo;IjoVPWe zFzl0;C-2mJRARh_J)nSi5O?yq*+BY9UQ$a|x-PW$B_eYt&r2BWXAk52njOL-424NOH)J0JfaLx4MrYE^3A6{~I^%AK5Ht>m)JT|@jr0Mn z$*c0OuK3*|_$uuVI5$=QInu-*F5JVsF;=<}c9Vy7xx4?~?Xrkhzcw&*^E}S#s_%MN zfstdKHp%f_6Kn)_SS<~@SEzD2wLp*?NISe0GpJ#xBxY?%xvsxI&ssi3fNi2T-cwut zFu6m~%4@rR+ez%}N`H|}Hu9;_!nq+Ib7yt;ezNc_{o@51BVQ+nS|}9hrqxImIP<;b z%Z5LXkiy^63gyob_>F~dtCMbhd>1?O8gAa=?2p4aWvkGIgRLefOze-5#Dxo*MFka4aMBGiRa{urR!;8lv%fq}l^tel ztn)H$8=)bJ(&UA8Tv!T+)1syu)vOSmZJb>I@8iux5-qARSjJ|-R!kJGf@yG1V`>Di zw*_JeP^4O4J#vhRk-+1v(8#8Jm6HKEPC~~s3byBJV0_<(%Q;W1>g?*Mk4wI=3rUU3s#4weH!|22bx0DZCGOo`Sa^x2{#xFsEDqTt+s=LvoO2CBGt!PP>mZ zltw6PZ!lrIyxM|MyE;g%Z#~Z?MDJTF`*~SvKSfg$=6;W@z-p6?4n)78TXL6V6~G*R zI=hWm)A1>=lcF>A4GXS`baTK??{bb2hYNenn5w zkc875&Lb^vYL_81NxZB&Qw+R*R$kcy4db&9;9)~xlTZsTsc-HyfVC^(%B+FR zO?FCjDjP`D$|22U-a*Euzd#g!_3b8Ense}!C`~=zf@7bf3w=FU@6a7=n=mCAortxc z+{(#B_eoZmgwT7;_$KwE^WMjoH%6maevCC9-w<8?qW*Oz4;1Q$Phm`M_51w$;IlG9 z{aR#z4%UrPwY6WeczV_(<7Xv38-kBU2bp=1Y3z6k;6j#$?TEaO&?bE8S=SZOC!p=Q z#Z~)qJ6}?n6f;^8c~f|>A|q$cj{TJF3CFJaR$vB`6&|9+41nP>mSLa2Zoh0;|NI~E6@ZTS~(2(fQSMG@)P=hj|YZ(P`uqqDaC3ggA*tVwOn zw=(FopVdX#V62c>S_l9P{a7Aiq*j0h`JwsVsE$iw-}krQ4GS=P#%l#B#$roF zP4^0U+A1TL98dGfFLd24PSoY$*ELraD9pS{iqVKqY!J@~zOjg<6P`iJikfG(W?ZiH zRL&cXO1a3oVOytp&_~-*h4MH$y;XESSU%_McxZ$m9>b+P-3@H zQyANl77T}6Xk(_?0_?p*ij@YR{P%3^a>W1)k&ThYKDi# z-%K)R#V7E^kSWg`55k1wE;w`@m$buv@ZSpT4%wf@Fhri|DZ~f`6Z$^=z(yC;!o%)I zcWBP;E)x@t!R3cN->4*uqyYW~f)!;xkmqP#&>3>sM!%bn`$UUU#J=`a(#%UoSBmb% zt;oNr!%jg~q?^R=ZI`r~iurbL(L&AQ^Spxo(!L0NCtpJ7Cn&078kPBOlVn%Sqz&3@ z#uydR~=vg!sSyr|%bl z81WM*kXis{fx!knU`X-Cn%V#_OU2F2ER#9R136O{`s}br! zx{m|&=g@cklkM?w3q&6EN&N#Ubx9rNl&3=N4Qi#L41!*5J-<=YQyfTqRj18NM$u_T z*3JG9yH5QLS zK!$F`X{u^ibjNp}^FK9NVlt_L~{49Llmg4qMkb?uP@0z zkqfBiIavr8I{qQ5R$b7@hJ+hI+P26LDdNB2Fn|xEz~6TRJfLmco)kVX2K0LiBu)dC zvspJ9#1BK96muj&yG!g7;KbTW^Vl1tT00S#N#AR@^G49b?0Rqsrvv{-s-V*4|_LPSip0m1ij;k2Y4FVIt)g)XbS zIfvnYpqS#1*anL3^1kR{FwOD2Qat-;`+{3D-uAzaQlBvEAj|1;yFBXL*IM&eAgnkF zq>fE5@H#tuCiUe&ldBm37B>VXu`4qRmrBS$7_U5yXkT;-Q6{6=FMgJ?9#{bFqUer# z3y8F@?WmVF!N%+*DEjF>5G%)$q&xy5nf1XvJ;KfiI%TP;INehar4nC&dyM6s#Z{kz zDi+;?FI@WN9h#75)0Q946F)SZpnrIw2&}fF-9@$E5coJdg1Wcbcy`HPS}?2w*_*6U z^FV6V5jqIx?H_s8-utdOY9#*xwp@jCh zp9iS59o2nI3HnRh7rj>dV|6vlH*)WN6Kysa`wrLpi_R)<(^Xp6rFN3^E+T}tSmpa| zI%Aj&`rQw{Cs48|b=)FwjTJtiNb`d$=jm6_TzR=q<9$9@wm0`-dpFmI_dTZ|y7Wvv zt~3RKQ0?AHS6jU9gM77T)LyrpL#3C}55;!I_DSMi~-R)&Rksch!ltYm zXjeSv&l7G2p~l7?bPwSlxz;m0C(zVF-PyxWOWLVz$=u)P!b2O)ApO}Xk&_i`?!bLJ z+>CQ&e7xIc;B9qX81r=>M8`Lt_zqX0>nVIu+NQnmJZcpB%wo7)LQQzwEipUw*mM#-$gd87Y zqb$k=ExHP?0l3cC)nb8vWl!fj{|(5_y6JgW@A9!pFwU4bhBynZ?ny8WPL;eUvbyLi zfqBoc*X7oZ#{FFWkT!go*K0!X`_I>5K0NG}4V+sjS9swx=Ge5YY(XQ%G^YLHo}X^u z-kp5riSn=!T0m+m5vHb$+{KG>!tt(2H``Umsk+@U^1+%6reiH~MO%Di$n^eoNt}|f z=KE^A?hVpGvX;jrD&(Y_>{4+^GI^&S#?Y6-)=-sRFVfesN2x)Fbgz1F#tD7Bx9=?} z1O`r4FyPD7zD_syLPZ!r9ih6i;hRXOdWJ=G76)*d0l`0qUSh`SE)LjLXcq0JM80^} zhX*j9gN&v362moH%pgy(1LBas`r6S8Zm3Bu<0I=3YG%1gEJ(DXVMs!yR^*Io?CX|! zV58AyjQoG>1?dWB_8j-B?nucz6~8Ru1Su_*&h*KNMqvB~%?2}ify(Or4mdpDI8#I| zhMJlwtoDt0JRff3*?^V~YNDMM^ZRABuA$?YEz0)Ikic;Wy=;)*UeOCCx>yeGTIRFz zFs?Eb*CXtvJb%}Xr$6XG#&OBac&mJqXBFwGh*IS#rdkZ8nX0|ims)r;)`@GYrTc?Q zVNA(}6VrlX7yY$UKTk;7KyjEdi7 zWG=oBB`M1}k&G&P8_*QvT;saErrU-XS}{RPXlI25B>E$rK~-38^0KrFRYHqY?5PJI{4Yb@%QK0nG1;)h&3jq41 zD_IeuW(A7|*(uT?_<^%0Zb}fc3IYPe0~mjG3u#W&mfmew_#sJ)uvxi$HgQVEz(!8U zO}xNR4UXd~%LC#DgR51CZor}DAKmT=&r6<$~%nz!S=LcC-!>BH{7y3Ela5~u^%KT44prV)uz|kqO z>aq+r3c3Aqwf5hDh{pu^USAv3ze^)$h&=G4x8g&COAmkJTW#-uzNP>VD%zjqdC+rw zh9i(Gc;6^dE4=~l)u{wpp>hm_;X6Ke9U-_NNC#y_8?c9s+vrZcfDnzB`ALV_`5UI` zp?R*ZrR%d;2A)?)tTMuh81xsN^n*4q$`ekTH-Ux+vflS-3ptQ!hf1t@JFGAqP1LTC zGVJ=*hzlUC?a!XvGtTKtE!aK9eD2yTv&;M)a zq6f4?2lrVhn7Xyi?!|CGEP~3t*6POxDiR>?-;^EV->;v_QhdpuZkD48z$_p*1sYLa zbOwTdm172+g1yFYg%bJfg%HpsG%8D*8qO?TJFl9@Y|JO*1}OSS6n zIU(^IP$m}~QND*?No=%GB#_l>Kb>=!ijlOOu4U1n<^lx>|4R}u^7eT?d-A@>DlVzf z5O4@TMDzL8)i#=Zg7h+RVWqV!>#H&7cPf8KC93#<;kbnr0%TvMao^S&U43F&7Mm%cS$IMj|VjNBn zR^G^Xl31>Ge>PGgD(|qBk&!5wXYBFO;W~oO%@fanW zsvA~Mo&UgNMIs-%Pe}hAma@FsL>!sM25z14PoV!Wm(QfrW|ZFJn=`MAX6e23R@CKL z|3udsn%c4#xFz=`vxf1nw)i@64&u*$2T(=fV}o~6WbR-L$&ge>rL~ZV3FWb!3i4;7 zL7J9%rcQp-$~yYv*sQn+55BiE9|74TIeOb1kLT+Ahlh&BXOR*Sha8a9K++g>rPN<` z<9#lxm}Hj~9`rq^qflz+wF-R_L+l)5FZ|c%y=GpVyi6bK#6mFS^S|p=Q};aoJl~Y| zx;;<-2cd5^s}!d|4yJ~+k>#PiCgie!gv>vP)bVJ=y|>GaqJrP~S+e3d;t&CU!CPmo zXOlFJ=TCZ^J`xsowEg~D?Jlmu)da9=Ps8Qd;ER#uK*x=CnZvz+O z7re0bro~{1o$Tu--%%?Ut$Np#S@p_5I^cQ6)SGx=T< z-GrVnGXoBeRROcLyEk5TVb(eMuNspr%3v(gbIT zP~tmOhy1LhCI#4q)Ow{#m>402T$2>Yf@MGgr|0WmF$Y~{F$B@IJ3T)X2u$wLKd}|G z2+9|-C0fErEnmS4Fn%H@56FD|M_*)L=p6|wumCzqKi5?qbG9sfYf4;UY7V03dY!-_9`DkSs^WfVWBM$VlhUEnX?~dHc zIh#Y)gzS}Yed4EZr%v^sjQnb=jClCQLu0)sZBk`8t1V36i{!Ldznw&g-^8f*LmMi& zhcy;>w?;~o8ER~tMs_qNXTX40nT%{^ahj74lZdKXI)UukS4vlpS0NTKo&_vxM@@1C}}8~g4hzm7|; zZch_a|4k%+?FTKd;p_@51YwZ4QQR3Pfu*Y6MfF&?j;X@%rf8AV_W(#7-SgH`sq%%h zW{3L@G~&K+kJsgUTlP!JC0f%=W1?G=l6d{U@Ov3}B*W*D*-U#TZx3!G zqG9-`(Ar%ZVOnv0?hE$OGT&Yk!*VI-Bne$UjH)Yc!U!KA>)L4J#l#deURwtmIKK`~ z`TJm#3Q3RdAwr`lgLAW+8HFnOm*Jxm%dUB|d>i)t-KhRHE5&;9;DSIA_LOntnf(4! zM@9o!qLSj~;%8b)>Q~CIB}G>NS?agy^Ujyj#Z%6lq3syka5N3BQnV6-fi~$t>;>_} zrX5CEI5za_?9$D{3z4NXn5|5QZ0W9Ie(O6v%fJ@2Kd~4hdTa|4v2zq4uF#E%_Oc3ZQEZRyl+CoP5X7RvHfm;&ksNINvq?8zCHab`C@=uGc z3Xdbr(Yv^5mNrrz(zNh$+Ni2?sUCbUd6>qG&AT2a%#3geGInAw)a+NhOSMUvg)ORu z49dDf6O%3+5 zF#SZpql@zRyKK$VWD<)Z6w8pZ0t6HYL4C84Q-0kPu8MlF9=QHzORzw~Iuj8;-Nlss zNwgBsGBu)V%h#?1CDJG|+@_BGhg|kA1nyr99D-%`zyEvx{7bMi{Hp{a_VTv9=qN{6r&s9k+)f=15&Hg|h9^l_oFgEXQRQSU1u z@$-d%--Ux^R%+Yi*0`WT448~KA?tmqd3BtC0`>|Wm-;=SuQ3RAvO+W&A>DConf(RY zMTW1%hGF;&`STvjZJ!*CazK)P%;lX5Lhb~Y+5JXTtVUqadqJ_wtdbn~wi2W|twHP^ z@VV|cN`ki~$rbYTRJXKCU}6Oc_#cq#?Sc6>41aJ7v# ze2slaBls@er4AJMR>gnU%u&5eblsi$Arp)PS|B{O8xF1yJz4_7?JOy67!f7lTUoKH zL+k6kU$pI}D|!zE%fmqFrmWVF7joc$UA6!O?}fn3yMPbCCyp-07^P4Bb7L-WGlZDbG**w(5pb@gdEJJ zi!EKyW&s1KhFH~`$x;jaqTmmWW#3XW#g;tF0|3v`s5g~d<3ox(D45-T&9~afW zxVwE~PNN8E-qy}s{lEbcczgBOPS_89UN@&3)sg(c+@)#Wht=iYHyy3&dZRWSI9{n! zcKlh_NfmpSN(uKU`510hy;s{L3bvJ#eQ25bmtGYStnH0Ap#0u9HWlkaY2Po|T8xyq z0~f{Bk1y%dqW6sXiG0D*j-p)wOyeP;uP-(cgQ2>tPCoLxCjWcY%Y4D{D$Omh_fJ)S z10ux<4>)zBY%&A*-R=p7AAX3V`9Jh&03^X`XR*aVg62KHjJKOv6nt-1UdICu_H+ql zrhMcpMCH}CJ8f%$5t5+mj!wUaq;F#509&gvsLi5`Y?n;~1>Zp_0gKuPkWBGjQgtbC z#}?R1zC*F>NlX3hQ|_yta0I^+MncA2>d50%&pB0OJ@1IR0c%uAtZtR!7-T!kuKVyd zjY`~8CoISF;!r3J{Xp1hrK1s*_LftpIDNSem;nWqI)sr{Nz_URctl8I>u9Tie*$m# z{QO-Fzj!lkejVziVvs-tbQXkf!rosq>NDVVU2@o)mYQGCYyG+x@v+De~f0 z+2fRE$O6enkGg^65fum<)_Eta-o%tHx+9F{Y!EYuu*c@a}%67({{=EA-RqB0tVPy|-VQA+&&eJ=9 zAJhaY>HzX4Xf7E{%jWGD9ey-^ez5F?Dfzw{d}R#9IT?Y9hB1B*s-|Ivv!EPoLlNkf zA$0LxUeEc>jx_o=)xI(xjK(7-e7l#PK_Wi@%kf7a#iwx=Kdh^3CB7DZxBJR zGxf0;c-9bQb;JIs4bg9dtw5FTQYMPwOW57gpDfJgsF6LsF1xzrQ4w z0d(d4ZctbYY5|QqqUgqiNV7vl4V0RIbm@;PG=@9Hx*gPvb7N1m01MqT`!&uE=H3p8t4L&(s7pqidyuwC7yw5%aOMkB-%%{uRYk8 zihfA0cIpVFnZWMDde3|-p)dWGCVg&d%26uVTi=q z3NK)j9n2oER4&R)iotA8o)hvsPCTfcm;QspTo85Q`vn}i#4$<^|gWXvl)P*l! z9Y%e^(hU-c7=jz{xriN-So-hQsbklK!U|M$dEA}qs61xm`uBaV-R4i)-d&{--NiZf z9s1NZc8}j>{CQy7q0X{hdArF5;R%=6tK8V4l%$I6I9zb)d-%x9XR5$#X$O$M81!i@ z?)dZS7Tly~r?y>=`h2$1ZyI-BO$MpW=2g;J4$f7;Yfi}O^b!`^$udq%(EH@4x4Err zwqizc+Hb3k)btM-Ah_4wI$jbMMVH)p5fXPM3AZo3g}f7rO1()& z0*1YSu?f#E4Vjw)OR_a2q{;PgO$bvGl160NN9MszBXinRgSF`El?X3$+c#9&kv6U>=vmZ;gvyh}{Z={31d2V}(BH`O;Nvpi z!bPmDC#bsuPmcpz6B!HLZ)3-(V0TeDRxdCIWiUS<<;W&V>jo5k)FJ}-RbpB#7&Qz} zjpu1|*^105Rx(b(Q@S1TDt=o6=~V-H7$ryv3>X1uhw zWldY$D&p`{;aMb+kZ4^coS#9d0v}U{e_yQ?M>ws|$!vYi%yT|B}$L;1S< zyYm-s#IGK_SEaL@mcD!QyCYXWtwPi>!gT7?bA8_0PFj5-=W%h+(fw&T+IcS2=Ypd# zwvf58r7wb28c4V`;eD-SAdqKQgCjJzJZ^zL%G)MJ>%VhyKYHg_#J8d6rf7$v^6tCg zR)x^Dn~!bkDfN^eCO&SZ4vnj*H?L<(D+9zMa_ak5#WbmF?+4xK_=39@4Q>G^)-q1{ z9F;d0K@#5{`bzx*UZA(^kk#%vyVHy>5LtOvo_Bc68@UXaja#F6dWMuazFq_mr-K(C zgSAydGsR4$MaG+x5Kx#|25n=TAHp%jYSR6+|1a|1I;zTcYZqUXbcqT`qksqqh;$1o zDy2v_C@7uMp|nAW5|Roc-60KvbcoX3NSAc|<^#U(-h1qQzVm(Ood13U$8afYJ?nYy zocFx0d0hlC9|w4k$thb%T1GOa292L0PE$Sy5Lpiv;h2GS*P>etI z(nWjx!q+j3zBVtaCM(Gk)JA*pTagjO ztvbzg=SwUbItjOxMKCVG(`QE4eLKrUOh}$p9`2^i4HRX?{=Ns>HHjp6eF(UMTy88$ z|LF_Aq*u*KG76vdiYWzG{hY%RhoQp1uCqC&EKD!P6-8<7lzg|gp^wG*3$BES!^Iq+ zdQhyrTa4gX#IhatjiZpr3cApu6K;rq_VVN}%A>Vr&IDQ;e!pixoHyzkV9_Y9eieQV zYxIZxQNVdey6D1zZ-ITF#^A~&d#Q6d``&?tT`dLCJGT`JTrSs31KbZCdnq!#<4yV; zG+SamXcFjMM58c|9J^P`=SVH5chzr}b^QXWn$CRnNz#_}PUUclV^h%L_-(JA@3ouk ztBeMxJ~p@$lR#SXS721bDv0hXvK3BX)QCx`-6!p8c^`6RkN!>mO4I3THZz^VZ>C57 znyBj!2K>5K2O8aRu2*BC0?oSfF3Q|*J+n{j0X+g$bW=|E=HaC^QTFAe-c~Yd`|iHXJ5pW>`HMZ_Ufgt zp?@!1ddsRL68A0o?U^i;v{nlFN?>F=QBdrTg`k{>&EBs(KW^xn+MK4RvaYM>bHle$ z^162Ppb~58ta1xa62-XGh-na;u3zrqcTw(xp0gz;g~nTkn`mY7;{kn>T!|(+JROk6 zzv?v()%2mv!#Op66H)%KVn{V?n$oMtw^biaaEMET;`&sOlA!pWgTO|I3Kc}oW0Tnd zYSuUsT2upLDft-IzKp*VRR*(mE64GM@6;0;N(mqcPWv3@s?K=P8UL;JGmgyC^k2O$ zS%=I2-KO-lgs(Q>=tUcj(kgwL(Y2$e@+lnk_BU0-z&Tt(D!%;j%xDqMU$ys{P^7Y) z?S9TRuT;(UR_p09#<+{-S?-|TbL+Lf=gqSjaq5uky`4(Ov)RfK_9F{b8=UUMNe~w$ z@ffZDr4vCvN{o@qlq&7V{zi{(m@3a>fH6$InLXsBcLS|h|1ovW2(~1>bLF**cNUoa z-wNt@-ck+x=BI*4Igs2c-9#@7l1C@WQT{O|LsC*+Q_HRU(8)YFzMIx~`XY)&NcPR+ z4r9#-iV&jHvGgnw@ekaD1<|?suhw`m=h#v_-=C5CWqG$#TB%J2eWh4_jI5U=beaj3 zz~ND(FU&zq<*p#i{ffP(Rx!_sxOU&iDa`PUr@u$&Vgu=~2d5}~Z$$CTH*s+1CUU({ zMj7;W;ZBnXX8KKbgtSQ>G;?1K`IcgFx&v7yKA_GhQ2lU)ZDf%KQwa2iF3n!2PiI8S zaS}MEa~5O(&IY{$#RWA^yRxg^C6*%<5t(t9(ER&;-k*`7A>-s~VeP558U`MKNx+rQ zx32?=rI&Oirylh_RE4Y4RAH1u<}FH^I>qeP4@-V}=FXP#Uo5A-bCB|J+5J+S7my9i zspQ--`7SK6+E`vg?(@@+Qjfi9sTA&Q9TXRM%8J| zY>RRy&fReIXmz2VZp}hn%fkLJWA7oG${iF}^4)2(z>yc`=yc*4vV>O-=wt>f`WHPE ztOV<+g><%;Q`!G9{Nf`=dsqd{0EAz%B^6oG(+i6aMV(po3LIRT<$l&lJ+AzA(0vvV zXdR~adTy%?7w@7BE-8AaC|y3gUi7t=P9#)2u_}s9@Yltqc2}J}p$8_f1j`eO1Gk&|D)>3h$yR#T7P(gviu7bB;&p7KX$4 zWFm|(>oLjsNr@EFcQipBlv?AOVUI5*jezgmCRL7xk>9Uds3xlmzCF>Nk@=11(F1Rw z-b;=8W7m97BnY|b^#D&oRwp>3`Z38YEdWvZ7dRy;`A+Loi@VP0)EkP?6|-GI6L5UK z-lXF1@zzn?(SiHk9p(=LgaxJ@0u$mL{u}v2bIhd2p(Dt4*E}El1mqG=hU>H5t?{l( zsBwzbH;w^37rn#OqZ<0c<}}iRUg{sP z`i8vB>k`DpAb9OX#pg|Ru{cZH6^$e&m$P@E`Nw393_2+oJB^6{x$<I`35 z>oxMxNhIPcL?uRI`3c$XH;A=F@G9M@S~t#oICilOFqsf~^(Mcw60#qBjuIe^acz+& z7Vv~fD=*6LB=aPiS8-7i+AnbGy>S!mLVk;sIxKe^$f#si-8q*O-hfC|$m+@5Z>u30 z-CP{d_KRZ(4)JO`<7_+Kf_q!f3_ENf^Z+*oASFeJLw!RD< z-My9H6a4()b9tZdtpV_S=KaR20C}7PPYK^}z&IB#qPEUUZpk#5l3ySZGP-X_ZJCrN zaXHxW8;(KCMH-y7X7j$CIC{w$PAUByJKr}=wH1k=-~9deq|6Xl1zoZGaS!#e&Gbm~ zmP}ZAyNvTIq3~_tmQGMy^0+2qaP^|e)|HwXqf8MD1$2LF40k?wwWbH{}L1HtJ9z4d5_5rx|l9a5vD^N}FBenDtt(n}O z#)qe9IMvSs8%0jhvhjH8)P8Wo3Ic9?M2MN#g<78RGYnS}y=n`%OYa9t(!4Nk2}0#N ztjM#ymT-(%+a93Z+ZXJs0x9wD5J@p zeZ&}DAGdd!H;QsAw}`IO2}XTo%&ed-qjyCypAE3}n^SKG-r;9_6slBFi-Aq#J&9p= z;VWBonA@xTb5=c>+BIR5JOP8@GV+UII2uMT8997VU*&}u6A2|R6Dj`C#tEq>tln9D z!8++dMvArCG5M3Dzxla&!!4FP&V)q*rbqq+c?^yAjF|NIJt8(d8}U0B-=ULK-C@2O zf|d6yYGd&9)naTx%p0!X*ifx@EF|?SKLUEau+PRm;!)>6eId#m--(7pGn8qrrIB?7 zXWZfD(#@1CM@&60BC3oszb~wL2q@=pEtyL@Wv9G169yNZ;DPJ z7QA3O_fb~n6Xpk#E0Potctv^DpXG^LY;OJ_-(m5IqZm!9#>l|b_B0{$%P&4xpbiUl ze@vpcuh};U@8UZ?LxM%1PtX#Y=P7U#s0}f1f4Amrm>U$PiY0fH-uGvn{9faYw=U*? zug2^SrSr=|9_d&CC3fl3(=zFgPPHgA7^q7LcEJ_oHoKJQ@krah*e-uao^LQM=E+Yp zY3&h|kM}Gh*15Tdjpd#EQySl~O|j7Ly%PzmH9_zDMkvHHn@@ zXT$Ph<&42i-r=)*xh^{PWDlc0qgs;CNn*$e1YYq8%|Ap(+o!l*s~A3TnQ#`*pNRm2 z@oYfocb{9QhB>m-V*)SpV5$j%~0UX?V@|j6y1fy z%2NIYGFR_ke;eXWAxJ%dQK zs5bPRL(8)*<~?HepDTZ;vHyib$|7JnwambFK`)Fetl~O#sFE=yv6Y)vJN3DjC4N)RssxLp8VEvcc~6gL&Dsm+&RM^;AS-<{gv3sfD9ney>da#lp0DhMJbO6d zZ)%HP=6KbcD2p~k^x3C!dZT`#-nJ(HA3raBR3D$hc^;1D?>@X*u-* z$*en6S?HX9?vG94=08-+RY}ez%aQZCgPmOFA#?wsFosh1Gp4WiDr@S3rRzE-b1&dL zN9VGjr=Y8`lR5Qjo8dVQ`lcO|&SQ`%;nipO@erGl=NSc;ET3BChJuPOex31@D7An^ zP}@wQJJm!X@?qSFYfs+D|9TNXi5X(1H;%#V0JKIYHY6Tcfw))u!ahmoXQHuECzOdQIh{sVz8ywR( z*5pMu9&7;oi@cKM&ZkcDf^9J6)NTIoA`SLSt+JE}2ywuaj`pTuPzTUADG7ulcI1Z``H`1zuv!L0&?8l@6yAv>9= z_BdVqDiNo(WVgLd9~xV5pq@LRbNfxIDT;K0BA{_b&rw11x@r!cQhrR=is(ImDB<TjI77%-d#|2yuXESjLojTsfL8N&c`5M# zW#KX$8FDd40T4P}cm#gnoqKp^E{#T9d;g~=s98{Zhxr3**^vv}2FBea^CPk7R#SCH zWwxQyelN?;sfY4sFMrC6k}9+uJPdbE8JNy?5nJgN5?!qc>pNTb6vVm-bj)y4dKBSX!J9zOY%LeGxY` zsGrE-|Fx)4Fp}&mKbTOrU!q$;lRZ?@9k09T{o+fCONLvNgSYc4fMyoBWgxlDolc;X zB%8AtL?ax=5r;g-C6sL;3Uk$ijN-l9`g(@5Zb3Tb7vW86yay=v!z}(Ri_+K5VOh91 z@(XEwHf{|SlrM=jwjy)se~SU=ScItqezP@A*^fIIO~nJ5jt4M0S3Q0eBny2OZxO^V z(DB;p#-p!vs2n*S`O5Z^J>9QJkGQ^i=PMPfTKP`p-aeP8UD7guNXEEjj5l5Yzof>O zu>0_ec1iZs$pF%8JLjq3Ix3Pto@VyI^e||2*QPVG3Ujor+%J8CyK`R$l)PP6Vmvl4 zEGbw44AJeR8#F{?6Xbrd>*S0I=g^#vWdFO%0OEyo=te}p`O#{p{h@=u0BCE`5`VxB znXQAwXnv;Gr_sqWcX2;R;%$_@k!*fnHQEqzp>OS&>VVE=49VwhL9{#%I>$Y_>W!|5 zp-lAeEgk&&ONZI>GVC7!H${a^)E^Xz&#h$+t&O;~e9(^vWG}2L?f$1by~O~;6>hdi z3x@vH`ji;I-X>W7D8tbI+IAad@Z6u;SYgCwdu1eyyyF#GzRNi|z43Zu^;zTKP^;OJ zBOB5-t+kPh!MbMG*CAg}ggFe-O=M47Atl*s`-ub@Hb|F7qte6Qy}+X7t1ij#&|q9_ zWY6(aueN}*{_|WF%Za6^t|hl4xl5F=fZ7u)p@^dP74DEbQnXT*e^EffPLa2~m}SOC z9zEwR5})O;yu5Pnqc;-@AZD`7^f#Aw`%SYRr5&#<2s)1=T05ZZwikDslEj*LUl^Y} z&$_;4n9e=Wob^lW1qbzUf*z-YnR7AOlr_!muKBF8sKa->Wv})c1pTF4C)PQ39sBqI z*{gTyWywIe5>st4n)qd9PV1={*k8*d0Zr-Ni@NsYtBL}$J|hGlH3LGyP5QZ(vx4;b z%md8!NUCVV?b_p8y*sul`xZ`co1v62^7~nEoj`4ksBx;-Y9Dpa_ z8&hQ3bA^K-$K$IvuGz+)_1hLJp2ojNGiQvLmyNBPs5$=|2EmbmoPNviZ{Mx*x4s4Q zbQ25*^X9*-T&xPta=d7rj_WT*>gjcg5Knju^i{g{?u4;7o;$uzOf0=5ROoejl=!bo z(T96$Q_Wo=w`fzahLQ5H!(BG5F9uHp7W_yq9#0xr^-=q=?~ay3whk$oef@q&!|uVc zjF@FnJzWAcLK!N{@&)W(5T3jrF*hLO7BZz2@~?zdov_b+WmM9>iS_g2Rn`2*_ijB? zEih3o_ZY2uX0~|zaEd4+Jig`ayBwNFe*FcUcID&k;zxsPhi+i_s6PWxzT7fwL{~M1 zjyFLlCPWKmmb(wDv$C$oLBWJKnJmte{`?e;A`616{Z|(G*!-Hj;Y&V zte?YU_gsuxAI6{qy_S~fO1JpdlWyC)vNKo#bwm7`?F0Gs=jt#1eBL8IU_eu9*v?RK z@1(b7&>q*9y{pvh*>zr6N(OiDbvQ#yrr(e~2^OFUBG zb#*mvZ~v-;M?X&0ElqR9(k+^gsN*gH+Yne>mdjXK&(dZE-~EKb6hEKug&zF(BCGXf z*MS$txty$fZ`9dv{^_0rjY|bP&ZTo(>lUJs*FAehsRwK)ugu4C?3w)>xY@dG>A&GO zyZ5{B2|ls3{jjgOhx*jE`Hp0LE~C3*U}Wy7ge>|>WDuYFksr=$Wzt)dWhe%1RV<|SozlHzF<4~O#i<-h6f zosyh6r>d5*BQ#&KNl_&;BU#lTXy0#P7o81)!yY}qL`_s>(XHCnMl$Bb2dqPxsy>o> zhR)C_67xC)eKs5N&}>LI$&NhIc2W8 z{JY;|(d9!kb9u)4cbZI4>R8vHFnD~JYQ?Fx_iVuMeXRjrm799|!R$&*W=%URk5lfW ziynpI+igPHhiDT|)8J%1zt$}1<=!`;_L+A?Gi%PFHyKMC;94o~i*x6D>eeUr0TXc% zGxMAIUhCp^lorRIJ9oC-(`8I(H#%J?PGA|8fp*-44eC{6c4TZD{pJr!HxF6diHr$# zD>@g&NegTyJU+6K=6Q}i33VIF^W~G!H0*FanP z$igf!zXs#scZO+hWUL}qA_jwDsjh6u0-w-`qfcBIh$B=rpbDSSu6iVr}DjHt453yt`b~Yp}k?5Ua2W zSgxho&ZwNoLU8hKxZqI?|7OoYKJc#~uttdd6sg}5@i^bdiYTS)**v3(XkplE9s4E? z1wYL^wv8U#<`Kb+HQ6qkxA@1ZZ==v7Y8eKY7fbdv`c%x_4mNUk zdwhCk6EeCrX;p<=)Ef0e56L`vk6vG>6}9#dX1F$0MyoD0bTZc)ZqsLSeZ$KPH9^C% zzPu;CZ&W($%g|}Ee0aeV0aiEiKnO)no##y&?-3^v@m?7wJrovTjQ{+dXdt68jxmH8 zuN3nF<(gu;t;km!t&K8>EKw6F^G`dO`anT@Md~S$;4wkOknP_7;=l_PYMXTBmHQj7 zC=}+Yz>#&`vM~o?ZLCrLI%|@b{&Kb77qXg(d}~pBvhk?eTADsz+u-;0FE=L#{#u(N zHUaZ;w`uWa=f=p2tHnAzTZ4%WqCoRirhabzjcHxZQV}TW^cY!@>YV9^MAZ`+WSpqh zy)yG!j^iT^oMQBvF!d_qCdfSHXV7Fy*lRK@T`RubiFr=#m{WBZg)YN8an1WOx>f7+ z(cFfT-xnd<$D74KvI{#(@{}y^WeG%Wo0}93#S5A)a$s(MV7ibINd}eg!?i}T33W>ctG!ey`U;q`I8^uUUCJVzDjfaWYUw>?F`A{`{ zr)D1#P3frg`Z{ibLX#fyum3o$Gb`!v2hQxvjwGTtc6mNS>1qWR-etlWHG zy!X&t-@l-b?*m@D-bc*%b9L$|))!~xS77ZYH%xVP|7B#&@qmD+r;mi9Ex*3dp1REItQ686FrS`& zTifvX)mNd`PQhvb(RFBkgwUT5ko6Ba7n$oPG~NH*tCM%Zc7C$0KR?;JkOS69$N|g7 zfA2#7^%o{gjx#lP0r7Rm^yJvQjd|^CzH&c)6|ZS`+QA<23OS?#VAov1eSG{hxfx(o?p~*=rS)*&1?7UFEOsc`bfNs^? zy;xGEm|>-TmHBuV#$mh~9~mFR^&Zdf{59n|90^+iiivIIXqHHuC$(f!x0RpUq;_t4cbFY)uoA5Qc@!!duiiLQuF zzLNlacKGZrxhKrnlS>~f6C7Xf|J5sxYbUpdC}bRe$6o~X6T@}*FIJR?Dq;&w<1`s! zy`B(Alc((U6uWlPE1_}!3*$z9L1K3r ziTR;~I#oL0^m|0kmcB4=t^6Z4u60nd`srj~L9loM<*+!M06Gz8>k#2yQpvQQbbAqt<%$DP@?R3SQjD=} zEAHk6DNUn;N|1}K=Ri3u_eHIhfLA6wDLU8XLX!=5f7D>vBU6n7D@pt+q{hBPCxr1v zC#ZI&R|0n-(ML<dYN8({O2inxBi6}Ak`t1M0!+cI-+CVUv|TMFkdi{=;>0w zd5j{`ip-d&zL zf5B0zFV|$TWJA9u1M#)9Zvpyw+B6i;Ls`1m(wB*JLrA+(DYq~ht=8?PlW6R$&lF{H zTmN`iUJi1x-Gy*w=3(IW1P|h5d4Vy^dgJOm`6#gq52>WHqg@~ur7_?U$#sv{edke+ zv(upu`Sw?+vVbaxcn>rI`~Ke~t2XOZR8a8yhA7(FC;1^>r1uSOqnwyv- zU=#$F&9&#jJJ-kY^2;+E5HEvX$1_}s&a;?l3m}g0d{esV5Dd(cUz}z04G`c*!%+dr z$^!d=r)dlRriedD`T;R$yM@OhEyRkNAom0x^1Mxk;g%=9Y(_*c{YZ8;qP++4IV&D( zW9wvP4wXEyj53?=E_b=k@~kC7kZn?MrY(v*mrm+)F8JQH;me{bHo6D8HxYv>lfA$g z{hk{!)=$2zCl)A)0Io@fyeA+X1WVpWQAG>l4X4iKFTd~pX=!lCYWR_PMz&#jZ7IRa6w zzRUz?d~k4StKmWrh)4Zq(wV})j@sNy^=J@Xl?9lNg*h^UJ7BW}DN^jICD19lYS0Ug zz}u_!af&BZK3IANSn;!hHJHSSPXeUVuZ-Jq5~TI_jAAk9oCX$Wf71j6_hjqv*%AIUtpo@IgQ)Ym1FSz;2@Seo?2!mgcqs}=Dl5SyB&5-v;)v`ab z&BguEM*r>wRV!twKsV46=G#p-g28|>>8~~IH;HF~i6}IcZe_&`7n{-UbD2GZ5f89m z?6yZrUJ5`{m}Gez3_FvQ-h;9j(Dg4)&+zmJ)qT&3{L1`(H$u>~kP~ft!M5FJ^7dP5 zf9BP}j%l<%D>+`3H@-xA7{lJ$bZeSwy49T=17`17kw+#Chf8!G)NdZE8;oTyymwlL z0)4_#zA&}W1E_9rZfRFdSL2@F2f+@K)osve@g`7`s@fs-M08#P;vUf%DI4wx@?a4# zM@vUxgIf5>I3~M-l59ETWx1s%rvU=a({pKZ?~{SU-P|A4S2bPSP~?YuF1PaDL>s5bHHj@G6d-zcfIm{P(r*KtXQ` zc%!k2>epP+%O+6IGqUvd7hm~w^YwLK_xhu&)vNuWpp8=;E80yGE0S)ZPt-bWT~8C+ z?xQB|$TkH&Mf1|yEF_;OmI_DMfc@;<1K(_##+LczdX_bToA-e0xX@UOoTBE3M(9Hdv5{qx}q*(AZv*Nu#>Pfn&oaEqcl z&*SWp>3&mQ()F3A)GA7(X#QnB>B7j42g88pEt^Uv9%acANS6oJ6ivTi105p$q2o9M zi$1b3za3o+){qCl%kKhoh9>NY^Zf%}q(fnWd_!4P$61*UMx+x$WCBnIBy>YQQM&8z z-`3jC^CuGv+kNMGGj>pl6y_is5>h*;kgiYj=R1yX6e-g~?&$cc$AABOrQH8je4}Uf zR}}OA?=rjD=g_~YQ2mzr?In3yjURE|AnvKA5~J4ha8_V1u$_?)i<)XvnM#t=FW#}p z9X#WSrdJ%EjO0q*bq`R)uQsI*hLMQ!c$^7E;-6`P+)*@O8$g6&C)C}u@e6Y)7a!%W2w&+QkXj35Q7Bm`?6 zJJZ#b_}@&oM&%8n=>bMJ2P=1erY>mi+Jhg!)Gr$hq@b?C0(6l=HI{J6n19)LX%<;L zDkj^v*yZ3i$1`Uz*LUte1HKYuo&X`{WDdkjV%S3txBTGy2dQrEM@?@#_U60N>TR$+ zp}1jw9!i)xOyF|t4$oifB-#W~aDPqBdrifkJBaJfe-IYM=TjJ5$R%oyho$F>Tg9rB zq}CI|ZRk6}J-dC{$fWog$SO(c7J*|dyTj>MaDmTh!A+eux19NZDx-d!Lw-Oo>=K%Q z^|2e~kdl38ZugqwtjOj0sZQ$+J}J2;F(bMDmT9=9Bt)<7Wbrh$3dlDU%hj)*HL^mUpjpg27>llCnoo_bS`xd8^E&8v+ z&)47itjF^I+iOr9{h)!JD>SQY?M}n0a+-?0=;oJ+KqbTaK>HzLaG_wl6%IJ+Q8(vJ zq&8|9ZU- zqC7)MU!f~oS(^Z&@;r#dRs0Y~tZ~!V&+}WD#r!O`HHI(du)Cu}sl27%hbrsMEG$>2hT@1*u|%sEA~h`ZCL2PWg_C{~Q*hCP zrX8DVDk7mnrvzbdet^sE85@Lf3K3$9WHG5vQER)>w<*ah|=&In=yp^!v@dC25=#Sq_J* z!>u5uaME|3$W*zAFY)DZ4xxBDx%0-{BPQG-sB>(3eJd%<1yK3!O&Q7ZnOK)h!v*=v zuXIYn2U>qIB@70T+=u&mSQZ79`1wA_Pf7s{gWKmkBOZC1lk2+X@Fp!wPacG+Fw`a?d}-<_k8|TC2S#sX^iwVy0lyh$Fw9{SWWv3{ z8U-wFS+J%)!2g0w0rG$dx-@O03mSB+{LZsF7W@g}uWVSZ%RDkE4qdfizVm0!C3Pc< zj5_K?8o6Zcn;w?aVf9o2@U1ZE^~*}lF|QnW?)_ODxC;1u(777Xt#;O?E?W+l zIlI8>Ow)bURF2jfMugpw))k zQ=6wR23#q6@;mq%@8@vgj^(70f0=64cj$kp!D;MM55_em%$7)=TU{BNJwoL3vUMgR z5B)#FvE2kJ088{oO)q{9a~UeJ7cwT_tiGfWE2556D=q`4stC>v!9t7qKYt$r+BVOb ztETfcTFrtpA^ew3loT6{kllCFWQ*QxhWfC7zkz2c@0?_yaWpK@5wPgpX0VMaex=A> zhk^DvKrM(H*3qg0cQ~AA)Kj}Gh|$K43BW}4f<7jp+6 z`{jDy|86=5OE%fg@m6s>%#OE;GdL1xzQoxC1Qm>}bR@cX0L~Hao%io{9Bsxb_E~wv z@R~h2oGY~Xb#3(a4`HMbRENSfXJWn)Hw1Z>C7GL?AycP(iD*)n+3GkiF}!P>lAkP{ z{S2EO@-zDc&LtqnZir@p0VURnUcNs$f_a3)sBTi~Y9`!#eSdwXT@`A#9~P@GnJHQH zp9zavW^R^4i(vRGQ;1ah9YcbUJN%!&I{DXOwcZDA%_NolNzVEMka7ILNgy_ev-I~l6b33Bx{fj82% zn!`8>8iMC5KxEB%0GrM=UL{K>#lVjUmo%H?h0c`o z?(Am_R{oQ``7{ZdzlaTqIHQP;$ASF@q%cyTG&~tr0QDJOi@{!@&$csdP$aH_NSNks zjsUyFnX1h6&+dBn?7!}=j{6VcgsS}DvwX~h<>B%I{#=k$aCQOL?~L2D^F3KbO`eOr z9&Lg%Y6GLI1Rn=a5Sj=KOnQ-fuzSZ06Lok`EW}=R44TwRq~{JvRV$I@;ODZLlqsi4 z(K&L)pB-;caSZDL6#E{ zYB&G_l8q?BP{^E0_^U&8pJUc|^`5#n=A%>Ytd1M%u-O03hT&bxlum)ky8_W4wXeWP zq=!2Y)Td4w-wpS4%b9P5h*8Z8a$825w#FTQz=DzRkC;wuu%8HRM)_%Es|!S|f9P>o zdRFL2f$vtd=$v$I_9qSGo(2j`$!&|Xil@(?AOt`Zlt(pjU0{A7)AmJ13qs!}BsSFa zO{|9baYK1&X{c1`&vPQzTPj`d9!OPAJJ(~c#Dom!pPv;( z+BAXufo|rEp~_{WjP5L5-K??@6XXepVa_+j2p0_xLjd2i&aJs!(4+J7QT-g#A37fz zMFhQig==vWsBjJs=NR6qw>{clSFrE6K|X7E`9U&CF6TK0W$0*XU5j{7DRACXH;(xP z)bbg}3c&}jx^9CK>gwNvw&4yv62%Y4f>KBMxs1pwkJ_RI!EdUhyI9SZUxk6GrU2~G z6k)7&rD;@=g()>dc2Ov%l4Orwkwqakorq2>eQR;JT$AwpH5sJT+SvoxQU&~6=Ror9 zuVEyGN$;%$=T#}AScAuBo6{l(T9~>FNbg511pD*a^ArrCeC-uPR;A}748i6Lzc3+C zsHtBC4le}|%V*nyxSjYE^9dqF&4|LHxbyAw!6G2 z(dzl>`;l4}7kzw-mb}U2aabK7yv^UT*_i7JoB^{2_ohD!OP>s?4!!mh#L>4E;(NbX z8`kYtK`e;#z;PFu@6+vZSwyrV4Mp!xM%e!jIYL&n6AbD9{i};_Jm2%0rv4EviGD{) z&nz1eKYwe0{-S`y?fkpVHn4ylM90Mz)) z4B7pZn*)IjWhg69KG+2`m563d1Vqk`7v7?_jDK2jX@W+w^}Rrg;uCYG+xCk724n_P zp-5P22*guTfh0Bu>zOi-Q45ZsC3H-;6QaSvsQ~gE8Rldx@^)n-`#bB(dz*`0KuJu8 zOz_RF{3nRgz@-9@Blr3Vm(7KgEPngB2M7FtaQclZ0l>n3@Md}hpZR+*=84G+M`C^D z3=QRQeHeG7?XL?KwrLbMxee=nRraK-Cx{*VR@wmTt(4qH&8aN0j@RwyI&U8tF*|Q9 zWwh5=8>|2q>thit(wBor+(1%e*V(*3Kc^4`a5TGMvJTlabId{F%^>Pg)a#PgI;En> zL8G5Tw239HKWHyzS{#>sN?#D&Tgb~GA8G@ENChZ$YhE2hj`;BS#j$%$Y*_+NujJAZ z=D`{sI716=Y9$@`b%8YV&UD$(91L4Ka6Bu>X$oZtnplNR!rB#)W-uwQ1YHah2=C@V zY%8a&`1g;y37I|ONBc^munc5QeOrfk-nJzAX|3jF=~78^s>8k!JmANP9aSxB9}TF~ zv)6&WUaL9aD&}gb2h?*r>pnxr`aP070?vs)gp3h7Ri0Viy`ny~dA`sAGob;m2Sw`r zUbWpEAmMS&(`pro68K+{$qPt&tlBU3E4#s7*^e^`jJ9QAkZRcId5K%5SWn{+-9-Yt zD*FR0->fNQ-y+Pko~X;@406>+L}^lC9L>Ry?i@bFN~S~a>VtvoU7Y9DV3jRDdX9f3 zyAY}f*(b%eHQwyOwtB;3cD#Ahhg|3TDVhO%@+;|K?CRs&YlylGgD=|FtIc^_&MOt2 zlY^#!gLxEe%>KM3y3wgrBKBwms|8|uRi4=g6iq_VnH$_w&EXENPHm!FS_jKWMj3|6S*0O^Udbky zUo~7oxO0avjym^j;atFHIZQ3n_ifZmhC3T*q1o%)(hR;&+G9nzzwK}D41MD9(f7{r zL90>3Dw9W^W3{kP#y+aioNs7RGIfA`QF44P44o?qU&1v-2BW~kDMDi6E4Oj1Q&It; z4w_kWoOq?N7Rfl5l@?4`8eQ6JviwLKMCX;2qDBbtkxuefjqTW}$uDng^eCzh*BZ)W zd`rtbBS>~~Z~D!iqBv9B4l>5)WcuX1md_~|94`5D1biFaLvHLW+UkI1Wln2u>#jv! z$Z^~L>!2g|gu`#14xa1nVtrT?cAN3uPF$Qum{Sr4_eg_ za+iy2{|I>a8*|O)q5Fr%W(+T296yhkKWpJ$ERG&fo^3UDT|3J_>mW>r&t@Li?G=)QMP;$b0DIVN zy}RxPoMswNRn7b9-(@&jv|zA88Z>^20HaY9EJFPv5Z9xj^l;0H9bfY>bG~3csuT;J z;?|@*QRuKwqB3SfK&r4sb3}anZmxm$cdhHv@!348F~I*xcBP0sH}ouO<=ys0<^$(`7P~iJIYoz7b8IB#kjHa_3fBB6!jG*tQwL-%@@CD5;i;bx zpVlk_LWUOV+~o(CmZaZ~KfOtkG0F8p+WH2|?i6XbXfH@NBsT%XwUr(I8R87!rM@?ti4eMW1eV$kL9oi2Q1yiH;Ws9dt(**aC zFOr7Rfq#DjvBT|&k`QX!7H)l|Q8{``l0YdUR@``m6}nLfT4T3PLNSA|(?;A3wiOSf z6n-}&au{q|NZgtb%dI7?3q+6m!f@9~o%~1OW9^_Fmj!P$lgON(`l zn=HfO*w1o8y6<`49n{)egH61PGs>0lIcTATaFKSxTxX?W_NO$3!)AWi3R=je&TB&M z%}YI_3G7BY(cOn&jzgTv^9b3w3y!B%>7Qw(buz6kSy;Fp^iqjBLXvxy$-E4;B^Z{- zt;@G#G7GwPYUkGIb!c5#8L&@Rcuqco$u@piAAYXeKc9-*bx1Iylyb7!i&Gx+G8B4r zFl^mw!871*;jExfZW}NEDjC(IZ#8rE`YJ-^H zmR%zHYvS!tyYFV{DHl%@mQ`)v`D%8H-N6nH^@+oDcg@Et8uEi|93N#U6y<*2TW*6P z5Ea^QCe&jt^!D{8y$dK4A@M5?qu*bz{*Uq&|8=J0_#6J6L-o&DjfN``T>8&TApOP* zVtY+^xFmpXbZ+#QIoYb58el*9LGYvyF$!)2Z-kX{jo)Ih0p5tf1REMzI->vjM#-Am zwztU2^(czznD%v^`Dqg7$%POyZ$xBovF&G263co3iJeY4{-H#R@(mT`A`5K@;l%BK zeP?L5J=&fi?yB_gm>-0!eljA`#-Ux(xw;LJM>3@IO~(8Ei0M>7HZ8$<;x&IKP+Za> zNu8+UwxP@mS&?j8NL*&LL&B?`y{0qqHd%QFB)kK+qW+64!m^_)Y|0xON%AqNM|IW^ z$tgkfnia_V;_S~PIi;h9}3l@3N-YQ<;{64BS54XNO0YdfrVp$S;&|z+&VFIvgC29{UN6Ufv!nrxLUkA(IA^%hVXrRS_&DG+>@<@CDO$nUQpZ&T zfD~AJY;~Qc&fdbfw5R{Yq$_pGaS35>yp9RLJA3)dFdL*B8R|jbXry0Fzx3yE+lNcVW(W=Bw^RmTpB=HeTxLgBlkzbC7XH~U6bZ2T)sYc29 zm9(C5Au)|=eTbZj;J}Y-eH^q_S|M&chvW181!=p0z7&u)ASZ1HXqS0T3o@=tNYMJo z6G^x%@>Y>+BTxo;F%q<%(yidK1fPzs5_{7PIKR(v8nBYRVyrlW#r6Cb{ff_}9>>4& z2Z&hjgc*Vx_Qy)Q)kk|@@i`wScr7BLkbuTpU)u)I#ohlN8^pPty8B$c+tK)+F zpRzhp&+^G)!kqj^B$6ISym&fXf#A~#ng0*QaUUxtOOo@Tds88tUyx)s=li*cHoy*3 z1QU;-prMETRsG)~>xKc}9hr(1w`nJt9C&%*1^)+r*Dt-DF`~qai#jo{3F6Dqk!d=!8*hkg7@W?)DC- zeo|~I2bCZqejA5KL11eX|7W=&=Wj|otWgxMcGJHu>1}hDoobiKo$FR84Q@Llt?>%# z?fhbb81By2ZZ7nZDMiWI4;kf(`k%pwXx#KP4}-i4I(7vdd-6RvqCD?a|A|<2GkXy@ zroH!UEz#H)&{h&Y?@FO`60u?sOR%Gp+?;`q>D*hfUqoV7Q$3s-i`|O#C?xrns5HI#X%u{9*_M?PM#6gTGMYoB9lri zc=~9icON%C_-oKf!ugS1Dv(o=-)y8p+XX{HP=4HQ#lYnQ=zw;s4rgkYeue0>6itdy zVA_|;!v8jEd|u>D2U&w^`K&UD7jZ)VNzf{#WaEJ;>7ozWx)PmMV;TFC`!PE2ns-4) zWoQ@ad4o7Al3Pq$P{Cj)8}kI|>cwZO|1<%fQ51qPJm<76_W;q1j_c|-m6q3JkePp6 zK6zTe;{1MNC`;*Z0)TJ35pY`KV@7m_R!C~bA!ZeI{O6eUXZE*s<*2!mjXBwax2?xf zD)X%Ue37<{@r&(i{CfU!ORI2bukHNPB8~-pvW1XwfRfV?l4x*3*qw3#i&_J*t>fg| zvl;2y++M;8rD#OVI57&Jl2EANEh=U3%(+s&(!vewR)j<>=fa$5Z_RGVfEu&C`FP!PT_~X;d ztjUy=OwFvePK7>MuOPegjhUL2i;Nxr>B`lRucNbeL`i&9DN7#(UD4lsiD#>d{i$A@ zg>OI-eVYu2%)=kDAuk}5>3qXLrT7TZ{|Tbuw}{SEwS9c4%YMEqa+fvg$x5qwU}Nh4 z`kNqIlBru^7%0eWwp)QaS@PAofq_YKgcJPYho3@{Hu)I8(rS^fS>S!>5N@^(Hvk(^ z!P>ixUmZ0YyAk?+(VCY=MytIrc(xmYjEveHFpTCIvZ?DC+TYXvxeZN{QzHsUV+JhA zDrpx*nh}@vn=${{0%UMj3RpSm-@Fk*%ljTohgYxngsvLOyOf8^oHjNCX@rGhU%JZ6 z{0cA(mgc)hEAe?yg(9=M0@!PJ7YB;kS9hmZ@Kny?G>u}Y;o<%rv{DC!TzzhI?&v{J zhFy|C9g+AW{HD>p6ix9(#)h`el-83ugp8P?zedc1Oszg=+>mM-Q%^iF$k3;}B0EyV zdF1`*KMQQS-oay|!KViDSxhF>5- zYs>mSg4RJDNs4_aNY-dR&mezl>YYnGwOWu8!Dl6%ya(MG1oL{`7c$Xmh!wm?anu*Lt*v2>!4T2%Xvi-*}v4Y&9YaX;Lr?4`l@c=%Kp=&j(lXtPU`oP`Nv9r5!0$; zqPg|(>vL6Y`*%9NjrdjvhOCTvUcp(wG}!Zf)JFUjx+1LUTD<(rw}uUP!)WQICj185 zR|~R?&nH%6k1|PG9dz8Hqp|U*RcA1&|9wC4?$Afsh9Ru1=XPA1ZP#LRvCN?v%taQz zS{k1>KVF7EiuxC}!eXq41YiN)=uW95Qs_P6zT^gI<4Op+hT%SO+vAN))%NH-1M~Dlp8jm1G<4-hxy2J`Ql5;~)Bp3z_5ZrA{lEMz zg15jQG@0$|P?n3-Aa+75LHf%+=dnm8ep?hjXT7M$w-;wO?9)^--WRr47}gWb^Pj)^ z5GO9qJg&WcW~MX_BQ_2__`4%0n0Er^_5ms+DSz3220iI4{I(cj{!CMZOrs6ff2klL zOu4lWD!}0t7J$f%3n9?QZeKN2NHe$KG+Ca>Cv9nLr;{E~s9Rqjnpyw3IVC%A3r*&6 z*=E0KDr^X;pc(zd81qK-la4)M|TW%=Pe^$zG$Q zd&Qosdw)grlRc!H7?ob>eGI;R)3ZI!-CX>$xCe9PUcOtt8-&HM=g-*#oY6P8 zlkjA(L&W3ifO~FS+_JmDup2Z_#RD;MEcy@D0M5;ZUCyq0X*|qWkZTAG z4PKWWcaGw>RH>)7eRb#pbd$iFR*(@?QC|=NocsZt@-x=0(tlci1w2xEV*&II%Ec;9 zqTXsG>eWWlvZQfG@I0L~v6||76yMRtkB-&oNVj1lRYrW}vz}2pn)YNCv`L8s4jjPq zlWkbiwXWa7^KP4*2})YL<$URtzARWz^NahG>U{I(2lwOCKa772j zd0_>Zg(;AOpFcnle86@T0ZsU!s{%fEpNDnI9IfB+Tk5pSj{*q#^9af2?ta<<0l|$k zPEOo`bm^8~?epesCHnG*aWsZ7TUcmiYG+ z9M>N}VA@iEx2GVh*DOH#t@yxNA_TQoF}U6vNIopN{B~d!61+90dx;T)^#{y0mu|ML zmPSa^TTAyeH91T3%}ZIIwl?61gq3+W4 z1!Xtv;_J7eSKx(aQAWN!yg7iqx747%++WY~9oyjJI%n$epxn5i#{C`95A|Yl3$mw& zi)$bt-bX(oay#H9^k{eT{qSv-XZ&}|`;`KjES*4*^rSE26NZmN(t*?nu95MKW zTz@y8ja-yLxo2k~EE|W?S{jl5BcEwy#z%Z0_oXwc@bu{3cY#Y#;o3ps$K-~Z3PR@@ zcwKN&#P5`(7{~b`hGMj>_Xz<=u0CbFnlbJy@VMtEGFxq$A`e+hGyRj1_ zc@*reS6KDG(U@I#n%>L%@E4{a&z@Q=;0Dvxy#~dVlN(2Qt=@#ZH2DhGDZy(av-P}x zKjwm(T=VP((a+H7(SLY(e?d*luO@p@AD_&AAphF8^voU(p<71-d6t%1L#KN&enUVq zr)^srd35Et{T2PUKUy0PoLQ}*Cf2A-3_kfzrMusXLw-p@zxA z|G94knvVFGa+KZADx>VckG#OS$eG{!7IQv$ytdurN*6n7;44C#TK$g)1I#wX2jM-x z5dgE0_L4za$$&nLd6V0jO3NbWJ>Rq$>X+Uy3Dk(KK?k~a+)1@rS0t6Mg5yy6mG zg4Tnx8*S0E7e_WW<}QvA6K7**V#wfO5gkjKpeYTI4z5>kPhgq+k zk6T+;N@u|}C~g{W@@!I}xFx#hvlPHcZKqINhvqS?zSRnnFdPXoqj1MB>P=GSeQJNa`ddv**ZWHy!XC(GZecd0{8`p7&UoR05Ez$s97BQ z?Q3;Tq4uVmT{Pq<`}O3SgyzmR*-`O;nF+!bAOi88Z@>AU@3I011=&mY8TJ}OMgGn} z=iRQrxUq)Np2ZD5y0<(AQeEaZ$Je1HgQ(|)#oZJ5*ALa~sT>6Bx!d%iXk#qgQ9lLL zPwGwHQ$5*<=6bUxg_aEhyka|6T3M>70|9fWzTmE&PjlGAM_*pZjl_TM<%|Qu}*3}Ib z=!jDPf?o3R-biV4>3{V$M+V4>E-=uK&paqW1;&4RJhK-TyP2LdQ2p%njKOuBf^E0! z>#MylQCiC~On@+flD-of`hgjJ`(MP|Bc6!{X>O@xSB{Lvd_)k zIq?c_#mpVw}|&dq(O+Gsn{+;c}{u;(LdIMJl3r)^-(QBvE@DZt8vf2pBCT)>kh z8A_$TtlfYcO@!)0zg|miTI7#~;fsh)eT@jCVcWredt;nLh6V5zhk}1kBb8H%Kq5E* zTh({#tnX}~wR`OViVJ1m!ReOR=h6c(l*}hb5cnbzX?YW`zXO_?k^I7+J}h_Mw1su; z06-|$WW3sAzDCN(tUB0Yj-Ywzc(~f~!EJz@{G{B#;UZG(KQRP-?@mI6^o;(l42Kdx z$KkxJ$JZoB1J(PXCev`a8|0?Q+aLf`NT4{;mo9CCFy+UK!-15gmtV(`S|GXF{Y4LS zUvuCZTHWexav-}5kXK#Fj4~+3R2^`IJut3-5*7k?ppLs}B1SEtXnok1WSz3_F&MYL z+5?~fe^>&!#u_Ez9+T~PPgF~$nk}U6kCp;Q$Mqmx|5O9 zdOI0oXH~M@i~=Zzs3fuQ^<{1I#0Ufh!4a!V_q=kQ%Owq@F-K6m-aGZ8P2%$s`3?N_ zH<*&C{d2ud>GvSy_i#Xw$j-o4wcCH{QB*OYjP9vb7#6D`X#=az)%`bUl>#ljgYVv_ z+?fY=f1b(@vdcu3!$!{@D|%zOs5_Q5e<$TuzWxj!+-zFycWAnkAzhEksa{!|Y^ya$ zG^ud_s1@!JP!{pRC?N71KKqFUDmM|>3Ljm_URw*#Z3&;r%U+Tppg8z4FHp~weS@Sa z;B7pz5>C--`@KLBT2{<~T;gH=fNSdMjx>Ch@pMt0GRY-fdYWiE-}Q!KFN%6-hriin z{8QIXF|>>>gwR;qDnRQ%QoRjCk+1m|);)uDo(nAtqFMDoZ^6B)E%M&O3la@^>tz-v zR3oNU1W=83WZC;e4XAG>jlz9a0|$~6?h(XX(hc-toNVOvY^PFas1~@;qQd&+OlRcP zL#bJW)2jJ8fz|vi5ZcH$#V3#@x*|+b-*-E{nmgq}d)@{(_$>EP+3C`=#M89tr_l#cj1@cOsCAI*9?O^K+zZ!{ z{pxO^V3ndoBPzL1kj8P^f`utrj;SIIuGkx{*p%rEP06kElbb?!&z$1aZmck6s`$LH z3GZIHLQ`GVGyhFds1B8&=ha&*&35k}Q%MGTeS9cV!k&%tSPqrjHa*I~V2QbPeqUQR zm>#k)GgI#+^an?>B_@+8y_^fZT!B8^{*c@|u&Sx3&tMjqO+D28h-~IfxAwuONOsma z!gF)dhp8fGTE%Ux_UUvjY7YwY+lwiQe*{Ytb>C;X=jZd&5gRNaAazkABSWYO7 zq3%5|fq!?!nab!SdbAZvR*UMksCM@U6IA%m&AvL6KL~dWoO1^|Cw@r8de_!W+cshB z6bn45&!7xZ(}Layw@<+$inVEuW7jwZiuG3=`Lg6Y@Dd^x^_>f*o(i<~f23|xC<62Y`eVqQxhJ?Yi5QIB)jR zUQU`P=JgVIdYdZ_kn@-+&;FjpVub2jS~)HxBirVwhVCB7_%n6)U{rJ68_zNr6nAWA zJO%~3^qb&oR00e9)D=LCWAv}#&SJ1D#bgpP%0U|StgDL9g`%Wi##V98ZX$-o88(TF z5j)+UWLX;3mK=k2RNmU3*_7!`AqX3d*y(9uAnb3>3SQHicJTaNxu2diJFR4QBW(`o+bF5 zHDG-jN%$0c!eW0xvDcfg5~Wk$33;lJ0)K`N`E#K_kA6LU`blPYt!c1M4H+23++{mZ zTGOK|%Ad|Z-|qn#S;Sx{X6dR;*`IWsc@D76Kq+wQ$~t$zA1t8aDQQ;XtEN+%4tbmh z=e=L)i;+Vmd+;LIpM?cOX8#Q+|6c^f_Sz+QpG=Q$@_EB*u-K0TnJo_wTVf#-NrVz) z^($}wN@B4C34?N}6VnKyf&2XI#lO72)?(<30#E5L@Fb-30g5AC=@ITWL`!eZkA>U* z@Ov||*(VKo<_Acxsy<*jdMGp>bJk?44U}DCMlAYpUTd?oey5fYDA&DKU2fF z!_V%;!DEWAU`0@{LioIqrx|7blP@E0=JiH?d&9N@KYu=F2qqnQLCG3LT4fmm*Tx`% z0iKb$`YZVtA#4BzUTA~=DKd)+H9Q-2W>I5NOUV}X{0-x%kLQZe-_HWAe_|F>muU#hosW$!v#fd9Z;$Bq`2)H6vwj;=Qi7hHFDo-hCJ_(c1 zEavkza?ac&(3d0~5*%f^pKbRCswV6&@YZ$gXh9j7-isv181qvAPgeu){`o_H0>*Crg__N`w?^r<S26Tzrn?DwiLTqq;lp`z|jw?+(%{78%OF#|vi4 z?f@CVRM|Z~GFSe-p#Q>KentQD!NA{%l=2|PzL6Ze3>_hyM>VwzFGjexddbCHMUIBC zqZaU%Jniz8@VO?;=A(U$d^^M-^QY!|0=_=ky^BL13{h_+=L$4Nj&}+7*-Xprtct(< zbD|ZiI22Fu*5bh@BH%R@pbv>w=sjwYor`*M=m7wO7F4v4U{Rai1HHllK>ZixF3~cXhVDg6_}l?E6G9BW-B-EV-Bz;ijJNG1}3^k%#1; zR!twQCApx3{}zR~(ngwH6x?AT{;b7yQU!tIpE7ixh=C!MzzTAayc6Y~(yKg^ge za$bw{SZ}GF1ANh*#X9Gm?){e+`VWcEO%w-7gA0=~ejz*AW&+UbTJEy-;dIbc+JK+# zOf32|2$ePXQ06Y-ueA?ZJ(K*$rs z-$w`A-9L^;Ow*q*e}DMJ=zon{B12$tJ9uhROQT}B;)c<2<1J8#@zlp3f!YLAme#8 zSU554t9#-mx93mc0A;b{$gl*3kjpkTOy+6p%7l;wau*gq`^tLkle1KL#t-%__dJM~ z?EQb1*_N&3g}Y8A$66P`1gxyLhQ7SvSPh}nbhhd)%CBb7y)ignx+X(5#` zuB5EA@yFzmO{d%TtOD2J!CG6ZPPu!Y1|7skLDCoV`?`E*P zG2_snwv>Ch@Ynm6ZSmQh?9(gZalCSBv2NC0p_S`owf-pTbU9k-_2w^(*ARn%?%u-i z1{N82_%j{yQ9YiLyT=Ekiss6C9Zx}LNpQ3+*$9p-y0G<0RiIH&J%*w^kY}|J^Qqm{ z!;O*F{+W8lb`n8dEkBb2r@bLZB(RDAt0%fWk;HRVi z?7W{)#dWk|%A}vb4=ekRM+g0u*VG25x7wMRMIKu&?3zn3TeqpA*yM$cvqrUaHHq87 zx;6w}fzw`#^7p9?Tkp9fxXl+!_u9O^GVUj(UH{1=on3=Y_xPYlBg%&s+a%Q0pIlD3 zdg=JRM{2CT6!%<$G-Jq)o~A?t{|8zkPTd}azs@Nh^oQ{R=e7Zb;|R2SUG&!zjJZul zkYpA6{Z`ChA3avDB-g6We6&vdAU1uCrdY+Td|Pg~3={=-VBF}0e$JP#x7NQTMLwuY zrUx)@9Kvz8EQ!B{TFJCZ#FrYpk&3j4d3o$&WoHVzkyQ*Pd19&0 zc3#b%_@(Srgy=IrCK+;g4h=FvdA$k32UxB41+slG+;iG3u~XQ8S+gOm^CwNd8eXsa zc8K87oUw+sA?ilHq)z_au*vRKGKdo8{#xWrxA>gmGrZ67 z(5vFMZLFK9L|H>x=TOJN(^H)tTb@5z+X0Uy6dYzI;|Em$Yw^?@0hZklC}fiDxm|H( z{9~$YeY~K>?+{OtUGkM#ggCbO=%!=%b6P{Zhv7f$M*>DQ)%vMIsAd4R(&SZ@F&N%yj($33p%-vh6~gK+D9JC;a@72I9c_ufCJ@Y;TS0W*L37VN(OUlIa9WTlFZ2g* zI$v44-h07oo3U@Cf9^wk5MJ*_KAHydVTrpfw;4jP{fDG}z1{g#KhC{MLlZ^)L2ebd zEk&3*YOANQmgaxzwSt-Q6Vdkxs%rQ+xy!Y>T-VVS+<##^xh?mmdy3mgT(`usD0Rf7 z_pg^R2c?Zp4v#gls-G~Z7cFrPlMu&Wk^Fn#wmKyfN*BuH7>QGTk|5L)^(;=U&=SLI zrRTmm2|d(Ah%;|O&G}8ZrxSv1(CH>p1`2tfo8jo(=~zikHhS1#S30CBy|o@7{kq67 zS1*_1vc2W(@bgo1ldk>tiSs@`#2;u+WAL){N8BmQ^XuiZmD{qx1w{yyU0535l3 z|8XixxIh1?UcnuQKns5AC?NLvzX%Wh{`CJ58K8DwfG`6&2y*GjUnE3>KNWC7f1-!~ z+RMm^{{4*=yTJ?!!z;4?#ba{^GmR2|iplrLr5@gGj z&Rq&U>C|00*atkT$Z!h4g*t~I40LW&7ALSk>)mr63)RQt0@+4EI_8LAl3mbKy0-y^ z#kxQP(%x#1KFh>UTaw}jt@R}Hn;&|w)y$lqUrSdMz~Z%JW?Aa zazXjZXrK+?uPZy!0P)^pSE_@Uk0~_c=a=WkD2J@!SDc$mkOuddma3t=_;CmcZ}V%I z@o$eneCADIHHcBwE313t+-EJ~3>XDz2l~i0%mH}DmWzaNNGwJ@^uY{8TAQB-hv;79 z!s=82lDTdz(JGy;(ZnL@RKsAuUaQ{M5(?~PxK7b3!E(E~4)4|W11H|CgiM!G1 zt|xW-!Z*YKAtswc=?WY6@zaZdJ(7&4`^6onel_h3xXrJuWpmR+dG0`kI|slF6IBia z_ML@9(d5!*muK#P&!}NlnY%Wor25Q%7LL0(-M-l?*F;dWOrIdVmnB##PY~N|5o!1K z{MqY1H)<#P3$y!x($OEJtv@-~#-*Xt;sUL4|FQv2|B9SS7qDET5`?{Tk5D3~A zNz+A+g9t>l2DnMWTtHw1AXN5|2D+yn0lP!{E6NMX8%oinUc5P80A0pO&O6`_atpn| zJ59OhBh4DhyI>sL+IeHlO)QZnscUPi;H0K(l0XOWPJHp(d9rOvYa#fu8|Kmc(|}Sn z^{+uf$`0n2vqtBnUN>w7{m>kIwC!ros3y}S3%XmGChAyV_0~!7v0BFYX*aE)9$!5UVG>|L9;Rm|8E@}LFn3^xsAyEmyLOpgs;?Uf3w4bQDRt(@gJqHP zz50$Vo(xXOxrKase!w+#O}AGe92spi#a7$GRVfpl!8Ko+HwYcoe7EdRVKt8V4ZNC{ zrxu}N%$*k8ePR_X2{XM~t%Nwg{?{2hoPQye!OD(&0#GXEu^>T4{eC34<1u^Fo+kCS zfZT1uKtnuln4yhd1<&2qevCsx^NYH*6~wNu5B`cf&MznfD>B~prz%xHK*4kS>n9vS z$3d2Nfw=;ZtBk6Gl;7D}tVF!H&wXyqaBZqe^kIo1d^D($%yR}2p|4RxkXo|lx3WP< z2$9WGN`vgTan+yA&n2(A0bRWq@|$fZLD7W7p4&^mPw2LxQmX5yGjOA~RRCCwDi@); zTwwT6xkxMevD(^Aess+2j6la0-o?p<+ECIm-EZxJuWQ>q3zSH&#d+H^7jo?odep$s z(>1*{!Pi)xhP{@906f>{Cwyz>_%u~^shkhprijVxTxN(lMMv^{C(E!v_*7TEEcI;u z19smCLEOmojsjsjsIXZ;opXvo*XpQ8In1=eLnp=7OYXQt|4<_+t@g9#-VX_?6%tsH z;t}w6ZF+cm<+V+Aqp+0!0OaCqV5+=Uj85RVjr&Vmp@7M4G#s~3K3_)Ka*J{A_0%O; z+0%6zZ+roY{Or;Z%~zKpHDR!jzjkvxaj`JXT!+=e7}Zxup;2Qbv?gkn2`uAN2E|GA zjz@Kd<)BJ@t7@2Z4x zZkB1p-U_4ge>#_u=Wom=yDt%&cFj0-FlR9MtV$7&QN2kvW5u~irJCMVqG^bpdzV{D zuC_x)uQ0!r<)pmNbvCgd&~b;^I+kRvH)(V#SukxrG2Eu8b@7E+{I{ipx&tu9A4Jx& zt;i+QEBAe~d#*PYSo_!Kld%GMuT5hRMPAr>)=0lOU$no$1RqZ<^SmyQWr? z%@r1TAJzAnLLy=cNfB5gN;e`^#3tjo z`SXt8h1Ay6?u;c<^ZLUo9<+_^4E^1I9BXlQX9L(`Aw{;``T`Y*Dcx9yzm@3BD==+%v~1C#yI+Hq&ZyqFkb58rnkv6!TkN~E9mg;LyZ9v| zB-;|&hm~XEX`XqOrp4F~YuQsgSAPpenVVn5Bhsfxi9l7O>Z_t}Y|M7as*#U2x_1b6 zg5ZM4gL{?AJ~6bXHe9t=>vUD!9g&|0ek1*D91Q413Dzi0d|vRmj=-S2#l3P}I8^rT ze8Puuj(8-?y%RLYs7_v>souVz$w;qg^I1js8yBUf6xiW}1b*+8gnT>iz@mk$W)w@G z7TW!NYrycufaWxsJb#*duZ(MMWVx4Foa#!W`+hpDq(xlSI?Bf}+-E-1^X9yESWk$W z_>ea`h9m__oC$H?`M}Tht~a50uK1wXr5-2Q2-DqxLAI}0Axh2yJtq10X&o|S90aX^ z8{Oo0?W45!iOmap8uj^e{qB}%y{{5wp?XUr(8R0mA6sz9I`(L~50>4^AeY08oL9}2 z%*keRP9wYNiGBeXwu;(r_8PTV*~Uj*#wg#9UhDmW@42b`8LfR8WgJzo?kSGeJr*~a zlGE&-l|WXjXOz!7H=&S!AOxEv)EG+9fQ?ZiR^{!0qjS>3hWp+tom3x3ZDDn=iId!d zdODU@FR|6<(TvnpEeEz=xKu@<936eD{%`||p%K|}mi7yHyDVBy*J(bxKtq%M)?S-B zT5bW$sn@!c<$g0L9?QPT<@+mQ5~<6Wr+D{=JZ zxm9<)y+nJn-eEG~&d#(4NPnP63$~?VdC9}B{G+)zH6pj5Cp%b{hFacLU%22#O_o;O zqu`aXKNrLO!r+HNtXGyv?i0I%0l23NPZrK>iZXmVp%U16kMP$S;nP||I{A9csLf4EMpfgF(?-L;rU zr4UUtzS-1j3dB&vOY+cMN_Kv{$scJ-*kH$Go@560KJ(poB9%ISU9|L!ld!mvJ{$Y} zX?Es2|AjqDv9G6IN^@Zup}|gHVev?o;!~gYi_!12wMMj!B827fkmmcg@%(CKU0T+G zrf40lJ!&BeqHn*jITAWh36jN-!iH(c^(vw89Hv=r|G18LPlSq_4kash=`)Ho9kjvI z`)gLZO7$JgyLU+cd)?^k?Y-|mC{52u^J2v2MC_zq| zy`mF$N%o+z(4?+WsL+vXpO1zG8I+Tu^1-O^QRW2O@!(vJryUhIA!IL$-D^FF3qpU= z#cc{N1r5vIJHK=o8ddnbXPZ&Id-HMf-+YCvIU_FmxqMSsXk`tQM<1k9 zKcYN#f~UFN@%~?vQ0YQ;*w*4Qw|IW$v*=q!TwDzD=a08x6{-@}GIP_yULLsFl;F6Q z+*gtJlIQes5pQ{iEcz>6^#_E0k3$MqrC)nZ@PuG97SqhH>R1|At!2p?!QUFUG1GvW zDijHz;2QDx9%B*4c^{R#>8&IZBn;}ui%N<_tF{U{d0VZdR68wRk7IQsR=*tG-^!k+ zF>H~D(P3XK0oe0pSX+_!m-X^Y$1X)9EOXbyklo^Z^GrGLoLk1H^p&s86H0HoYS(?6 z_uXB3W+-~!w>f*YgsLb*M(|My(G88k@uBuLOl0?K*wj0e8cM$yj^GK00xEpYO+{h2O)dbH{6q+=B%_yT`nagc zJ~oc>MaSb{Cw&I3sCS;XkMnaIJxk!GF=U!oV3uvWcNERYpt?#jikG#&8NGpLL*HdB zon#h@&Lqr49qsB2h;~+^B~4w?owjg~D3xQWIOlRB`_3JUSXC)d^$>BQoL`F&q% zTe-d%o6k9TuVkOvMlLt*Z70brmSoNQ*0ZTOJBU5^m5ck80@uhtyUh>ksK)E8*MmAv z2568npBgAs#y;jOTTQwk%EFXXbun3nj^F*KuaRDrFqW_Bj@=4f&9%l~Kf@C18ca`A zEouL@kr*MEoimBCdc{)D+s={tm^k;D|1^=MPcF8u>YDmmb?}*$6(s7QDRchV1 z_~x=sY;>nI_t9KG&dNvPSN-ad&@3?*ETS2ic#&uDn>Zw<2d-I zF}WRf!%y5E@_d=p$hrSQt2@gbOV8CvY3Y^vfN)vo`lvmlZKAQIN!dWl?|h-puE$oS z>dzq&Bn--hBZLdOoWfKtxqB{umq-!6@luCUM^2XQ4(6KBQBKu>&J@A+eQ7RKUyfJe z#8Y%?@rkB%HBNIJfr0Y1jltN{0i7ld#^>nr6DzqFWQT>smcaR5$rb64`Z6gt9Q(ku z)#Mu2^_MIau1$lgGM^6)H(PM1->FG>%>8jDFBk7qw3;a{7&w;Rp47|Q-ka#BpKDa# zANCy;yiykUY3voV%=B1Csn&%2UDc^IL9fuFuw`3;Lwk}%N-0Ax6WH<7s^NjhIrX^+ z3S~mnyQ?U9+$EHv-7_WAV)Ecz*Z3a4-T!@8*`&wf2KswaVW{8{dHO%KO}sRUcb&z zh~swsz2r;|bYpI!nm6-C@?4o{k@l2wlIgLztR{mR8PbGAN~2m=uSHe|#P40TH>RZ6 zs;|FpoLA6IDCBA{jepm~|8dqbrYB}n$p=e2W6o{eqb11k2G7&PDd-)2R(*|t9b1yZ zD`llWB#@FWYf?of^PbsZxf`t+lBGp#CS81zF_HM31jES z>y4Ak`ydIHEHM2(9o_RNHF>?FhspRG{1qP#%u@jef!Etukvgg5fVk8*t&E8fMHEnVd5 zN=Z<-zXv%&%K0YN`M3cMp``EXxh!Z#r~Rpe*h*jK%Et(x{IvA~yxji6W)Kn`@bJjB zq>X=pe0MYW|8tCo|Cr+N_p8m_xIcssYNoMGAc;tkN=_r^eWdQKL_kS^ghsIdG>|ww zxw%Y!y#FO~Ng9b#^KDITDNe>H$0}gWI+c^R_wRlr<@(|soGSh}MpY^J0YO3(!MmgH zzfZ*7aJHMosFFMXVBXOWsG~|W+gM~+epg=qLx-?IjUwZY9XfZIW_OSZC<1x^Z-@>5 zCq3fSZZh)7Kj(WGp>|XNG=0P3+;3kBCG5t-pzzrAhQ%Oz!iN|=D5#S0iDdNrw7w$= z)MXcX^*7f8RBnrh$PLsM&y`&i%Zm`=k%l3F$==*}W&9pOiCE~hPyB@IT`L@Sl_e=d zvS*fqV#0m4|FGmtW=h}S!?wnj)jOe>%y(;QnC906bG;_MIj^CsT~N+11M>dw|2l(^ z7VZO%Y+OW9vc1U?V~jXRCTDgNHOAQ#C&+#CbEMOr%bP!IBYC|YQ{Jr|-KBmQp%jF? zXLTA)P%P|!NFfwl9nfbXrW_KdZKXe?NFQI#r${sp2(;&j zburDazg%2&T;Dx;3OLVmZgaqobr@ZcLxg+zRa>^P#OnG8 z48o50Uvt9>mlqb?5qP2R(TG2h$^7GF8F`MxP@__d;J~rQ520Si<|hF1ubLri3w;at zvmO_XjRv8)3x00G_;oU`YIK&|&j`1H4V%Z5Y`6Mtk!ZXoO@|sHYOlFnaCG|K-wX$# zTGXM_3;un8I?=wl0x-MFmt=GE$diB(Cu4pS@(1ma%<%AMvrmp%Yb~`q&U&0_1^1_N zZvply6-xQ%Zu9n_>Ml(TS|)_n5DLezNE+74hz&|T-|`(vea72w1~lS_U}h~p?*Nvr z@eOtAVe{3p6;6dNeP_J{3il;KJ`uLllOEC?8tR1rS`zd3C<7z9WgL1N*!l+7r;(Bv zssU>(7|u5jHD&NpnU(Sb!R2;A2X$1!hZce6o#Q$tNAowQ@arC5jHlh{1Cl&MfRtv- z;K;pNn%8CC>eOee@@KqWP$&v}w|4efjmUYB^aLl6s!H|{4OuUf^ZKl{Kko#nNYZ zQe;!P%WYiGS=*gwgv4chKbdRU8@X6Q??+T7{N3+AgE7b88H zJ)}q{9OAaiu$@(R3(j6IPw7L|p-klyxEoO^ob6KD+V;J+KHS#P@(RUoc*>R^EN`#| zC=MG_1iVhIydcoPd;Kz+@$`gInDf9!jCFd^ChlL3^ns%N#ZVks=z-986fP&#BYm`9 z@RhKVk-Hu@vBLDw9-Rl@FT^(Ge$?+ROfOv(YjOJdirI2)p=gdst9vUT?$H+<#xAeN zOo8YHWjkt+jk`t#RdieKu=&@d05{YcnLtC4l(WNLL5pim-Gl&H*%5q-wK@@ z)-ZVr|(wVFY2mgnltnhdszqBv!8AbbF-( zt?>36snxq3q@;IWineiU3qWXS6gpTyjV_po@%`KCy_Uz=kxn}OCMb58$fc@bR9hEK ze!7swHuD)s&tq+KJ#=$XWu2szgI`iQgojC~Zek}g7dKgK$M{-Rp;gsdkM$T%lse!}HTc-E#u_0~%P!nSw z_gZB)_5;7oMRNNq?aMxQp&7ggm^fL??~X24hj};>Y?io;Uf2iD8zXz(;39*F*UuN0 z*0C-Wh0cfrf;p0_Ub?ou9~vzr_)%l8q|$>Od9k?xD~>YsG65hB9Bp3Sn`62UnlFLgtz4nMF4S>!jZgHUXz|2L_* zxBNN92`ZW)ARx>oKq2M{(*U5R`d+J*`1SVsmVGc5m)zR42Hc4irpJP~_9S8X8=&!c zjQG5~W_(U|sWWZ)yl}tWb+3Nz{Qj)V*UiQ|u$W9Cufu3j2Ih)WlCJA}g+a|$1VyMj zc6LA-hR34UfmbWXQ~mqrmp;~`Ct+{cUb`4-a;z(3aK}vxuK%!Y*If%#_*u!<@@WOb zueS9eDPLy%ltKdJXC*In!0tUNAiT{ti;s)}5=M(_a4W5f#9v@~^1RSVmklmtBI>@A zP=Ie6QRZcnV4(QC*`b_7^-ft4EkbhnifV1`I^lu`Y!3ef9tj6-lSwxlXQ9f$186a5 z#7=3WDB_Jk*gIs<0!D}&-2KpfR5+_`HAK|B7pEdrhr>Kpd&o(gpJAMjLs7c`CXQ7| zVx4|?@zcZiUhKdS@EBZihpABn5ouxd>Qo9;!^kEg^1)I%=%Q7!GXu^wVOj!6hU(5h zO(+CSc^d(wR@>bndQPEkh*mOGF>VVIfODY5u)lfIG0^LB zQ5oVx^RWr5xRwB8gFGmf$XW*NV=j>q(c#NJYA7ex%f?=l8SHSm$o5g$RIs|3Cwx~w zwAz_zYheqw8lER3^4>NF&`a{fj&Sg_mTH9MGy!)y_Xax2p#YM#r8*Ps$?8hw24-Rn zbxRMu9@4lDGCT527Y4g7MwvD0E+s^=qLXaQf}Ze4q^4!P`d6}ue;j}P>(Ga9kV0$9 z&F6Lk!Dof}yK^pu)&P-0CHIOJCb)zM=>+id6{og;ioX|;#2N`ejgbr635tKsX1B<( zT(CKh##jDcxSND+Dx4^brU)p^6bubKWO8fq+){YZsU~12F_dR`1VfRyFt75Xlf0Zw z3ZxQ0H=X(1_VE2e_<=AH@>d!|P@WRM(yDwccq3WZA%J$D(~4PVD^)Dw6T^Kknya5RurtRcYg*ROi|Lw&pa5JMKgpbb6{p< zeKSe%c?iW5H==hyCzl@%B+xDAO>KgHG@s^Ub?z@e-1@BZS0a;xb*ON}9AmDmZ|BN7 zW3XX3TQPHzvXD0CL(SqgTY0mOv$_We! ztY}e0zyJ_IRryB{E&6-4AWfmX<{Rj6z20%ykceyy>F&owthf@IRtxanZB+{v2++SO8i1Je&hHDJ;u#4ZxGskYKPP`#zPpgr}V zhz&j~sgnD;R~ScB#?iOjGcHQhvPk)@?y6dO{);t%@?n8AG9sGn~Lr&EosgB#9_7hp$-k3a`b?G$^KK!)YcAo*E zeDKA?yX~k>H=gOzVArL;*9y#&$mW$)e)nGh6o8kz=dxoMiFcYZ_My5$pM>l#pew_>=MH;ms%;2zk_$ zF21JU<4U>o@Y84`bNi_>7;RoWlT|N=Sq5O|WtrPla$-y`grUT)VP{PNeZ#-@ zZ3zR5%T*84T*WZlr2cKFTe$AmaE%txptC4NQDnPx?%8aHCC6gIO-E~;v5dJ4QL_Tm zniboUR0TcJ&LUc~Vc8#r-^z?C-v#@0kOLC;@%xwXd9Q4F#=WbIg9~Nl~H`b zH1~KKkcQNLp0E{45eYbGkdo7z>lZxSl?UuJ4fG?Z_&K`i53@CKSX{sYI;Gf6ZHGD3 z<9vR4WFN=Y-nwp92~?c-W|uUUI?QqGir1GWd&*pl-$HWBkN5jlwSc4bai@K$ohePQ z4YoF14$Cpu=a$53e?A!Th=R}*bc&$rC!G-?=_W^bVua;>@I!W$hU!p!i{Q-3RP!ui z2^iNwTN5!Z97=Zy`|8)##*g`(#;7md6-RO(_Xtl#q?>)?vVHec8OPgFswR;&mpm{T z0~ymRSi#w3Q|(A|ZsxOt;DFshCq1qSdmVs%9QZqpQm68hDU(cTdndP=wM`xuX^|E!DM?S0b96buuoYw3BH!_Jh%HMVO#Rb5SIL5}CO4!qh z828nTOujO?Go?>uUK9zI%$-Id^o4$U&ShuL0!_DcpWI80ATJFSTHPgK)Fu0BoG))! zt_8L8y%`53dJU@Rg;sJ_!AI7f15zEqcp-1g^VT%+KjZe)HDuv(b;cQLgxP&A+q!BP z9aGLVnSl^_TY$I&Y4B;tW6C2OE@#=^wKFM|=FjbwJMRGD`@alC zZbtloL{iUECzje!iz&{=NW2`XEf%GmZCgDUa&Ui9QkwcV|HXLME`DWFY0Rj_yPV@r zOBbt!p5OfdoAyg;!`!3l@ z9|S=34y417dtMBsMk_gBA!z;L*W_UvB19-IJgYpSFf1#YS=68=dp?+&6vWO6}ae7YDi8r~HsP zo^)KLa!`lo)}65+!E2u*8k!RtR7Es|5NU2XVT^;b9_4ejrK9tKhIM0JN8lBIUT=Fr z7rbbGsM6*MW|`b(&FfS#eJJ$x*qyXa!f^qqYu&f_y~Q$0CS}gIwwqe%RWths=hsJR zT|?jH7FJVdV%=AsYNl_Sh96i?D(p^cjkmTsBga@_t7nmCmNv%SKFD!*WcPmNnWMYE zJ?!oUjKAxB(C(ci&={U*+#7ZK6L!eTrtFW=Vx4`4CZ`a}Owjw`=G{jL^^4nnl#__< z0sDQso?4T$j`^>om$wO_x@HMn=%jQ?x1(!NwXDHfh_;BV?0zcFRe*gTDOD~w_rXi7 z?#zi?Ue|sUTVu=dn0J}Nrwv8@pCr7>BxjpF%GdI4M&a&y74*t7AKaVoke^B6cr|=M zkzc@P__d%{l;XRw=9CT;PUs1j)sVV72gVT)$D2CS2C3d{g_EJ}wC@eipYCvt%}Lzh zWE@a+el-^`KtmKznjn-1Xzg4=%(!(ET?CurUb2q zeBu@fFDSUMuNmasm<4f7S5lA4KM7#m*KdMpHroynX!2!i$YJ}H7DTsb;)*R%PZ;H!>AbDW zz+I2JjVryy`O)f!B>j;EbL%Gt=@5Fh+njVeoc1ieb2*99KG&aZFppiLs_@t|n&!+7 z>DC0DKi92ApV+yJFiI;K|&v$0Ep#@IKH7OJObSZ5O32`S(_( zb2uO&aTAI%VP_J%TkNg@E0>m0#{ZWBmN}96XI$pO3KzbS`k7gB{)pu-OHmVjp4GsL!F=n74 zqOdipcIGoqQ(j%-YY0)T@qKb86Mu$w5A|MNV<Zk(Y81v_}`Qy4)pZjBvj9^rS?&rR^ zD=S;8Mz~i?9pa~;kde~E;dJrim~7KG?94F1DL3xs$y$CT7CYLT>W&lQsk!)rp}6_G zu;tB{5sXj-Uo3aRCQWI^s)X-0;v4BQR=ECS&x=@YyM(rw_Z_(CANTrjgxUZ;pj12D zll{%^Oj2^=Uoewdkr1+t#7Z$4{hreq1M(6T|9#!+r)W73a#vc^M+MB1Q zpxK>r;R&rWeQdg!nrvIs(z1tJtV89>RB1q4KLD1uPrbdaC~i=2ail7mPn$vrood*8jc-|esa zz4!I`=YUjPd+)W^nsbcbP!uaOlQ{10MqtPFRft*5Ftk^e#Em$8UgyE>!Np`N=@_Y< zNb`U71+7I0Up8O5FBdg-Ie|K~;%gkd??R7$BIO^+pRVDT+ z__Vg0>*(8KlQIe}$(ojp(H<72^<(Bn3f7!b!H8wcTuIPBZ2V$#R1cc=V3&gJ_b_dw zdyKe{JXZabED{)hCbBZDQ1!lgjCY@iS*1dpUP%2_@FMkzoFZdd+g3#ipM4r-X) z2NcGsoqO<4Rbv3&&72iHZCc_xwJOb_aBqU;;lO#r`T(cpVUMCP8oTC>z*TrHBJb;zt$b zE=_HQP#BB!-Up$|GKF}|cJvvb5)zFVr3ausIt`F2TwygecM)J)ir4}~t5@a+ui+~Z zZyW&6Oe}#&Z;SZbbb)*}h@5o+*S8(I!C2Tv=6;e@2j#)B|5I(wZ3qI~(l(G~^E||; zE#6p1d`QRO4hbYqy_Nc_{9zbmTLZ>v%aq@6iKteyW_sSRzC;@v!OG#f6?K# zBZ2HyV&zEUy}Tm6P((4?ogIhd(w3b?n}%r)usY9UPY?&tS&!pfXV&B znh8eLbH2NrJT&75be0-dqzXETmJK)==`;%!*J>*p7^kjBD8MhyxA!6@do6vurn|np zFHl+18&TkBiq<3{xfzSYaj;>RJjEVw(#Tpp;Cdar zXm{N=5gOXgAcUUSL%{f&iS7JA?;J#uZl6Rd!_{kMt;_E=l9xB3=~)DZ$X-K}A$wH> zmV;D3?RIOpCzf4c5qjDlAaqHR$8TEblUi00o+IKkT!6yy!2zJy)N@dBwm+qGn7S66!2r>{SM})y$Y=J^iTm<#)N={-U`FFJK7;RfR#7x zwxMS)A9n>4SIMq_Z3kRMgk-;8wI>Xl$^w8mp8>6HNjO|CqpQaiuRIk=HXSG|n+SjD z6lZUaf@=0WN36qWjjK=_z%1fFGu1qdD`pSBcW%XgBHBvwdPB*O7IF;wt=QNMd?_?M zjlG!6?ue(zaYWYWL$oz$6@I+6f-YnYuBk~uuABEcU+;sEwFTg!wN2V6*qqR}4H7X% z&?UBS;Uks(*sxgmj>#a5Lz$jd1SUa_`D?Iqc4*hPe|lHi>GhgYqwI&F8yPMDBp!&Y zMC_03^BF#E{Ea*zB@5ty^koCzXpcDxQMB(YfC+pS`x0|j41)Ds=dL!TjuAAXv>qVD zjbX%aS|Q^Ijf1uDTb*{`S@~kVgBV5c8+OjF6w?G@CZW6YGFzwdeDB&F2({)ktvole z4xNWz&pIl)cUGL&ar9kzP5cTPMk!2E#9zJJ{OlOlwyUfVL)Plp48`1vB(B5YT3_7j z{lHAB+bS+i^Sr^Ydm~9&2O~9!Z_K0U1Z259I-Jy&E51t zfyJ#SMZos>0_9n{$VjMs4+9D1(mXhEZD0;d5V1V2Bp9@#yi=E*0$prg39-|z*;u&J z%3Wr{xz5O&IE6#m)$&2tPi84i)$unbhbjZng=5emcvpSpEwHG03#K3!XSp2x6jq@d zFF0;ld_<#s%i_#Zmsyno2_<>T3fyJev7efzC8IBPbcpKkE?b0#v379j%v|F{B#!3M zkU!gZT2{tT#@Sz}>s8x}`5O)ko{I7FzM6uj?>l{<_Ikpp{n3OScznmGQIw(uOj2@7 z$!Qzx0sII1Wtg;Hm6$FUQwJPnlgaO~2hR1~Wcq@28X$a%CG)R|VsQCdasI-6sXvhO zJ5`~q;lqEgWj3?eozkIqm2@ zJ_CiA2`&F~q<&B(;A~^9JGRU`Eqh#3E{R>sQVgfw5yed1HBLuRDnmY5-(;AiG;cK} zP8l-IB|c;-c;9&p93dH7_`}i<5}V#m8R8r3?)J6XBNB+(2{RNvZaG_8F?1(1>`OHR z5t=Lm(MgF6SBS4IqQSdY1PP8pWY>!V5*xUnY(-LeNks{_IQ`{ zIuy$auWXmZ6)b?!!b1Q#fghm4(%2&_9d4w}Rc9HQF0XF_g$rz$aHsLbRLDi@mwo4W zG^KhY7j#ebL)o8-xt{Ai2)eyF;nS;db5L6jj_2k47U}IJxDQ>%??8l*P+ukbq)9na z0{iVLJ02%mJhY+ZMZxp4>?Y+K2AkBb6a6x|kzVLmvo^KqN%2LO`{ze}FIyH-Xk_G` z63O6J=Y6)qSd}wl(0$}SuQtY7?Y0cBJls_5YlWwkRrt+~d!Dvwt0`Is*+TC!G5mAl za-wKmS!g8dwBx>ywo#ol3^uO9AOVqCjF-E2_@(qd=#-lTQDidg#8=l9 zgtZ>fJx@m$!{CxhBg-e(r=ri{MSTdHr0TzlKrxxC^d2DBA^a@coi*H8&HtkX&ioDhg@<);DRE!^_L~w5?@GQk_n1nMkpf+c$mfDQXLa6F zlV$laXdNM`BXAjnGfLI=K3Ih2s7ycC{CUC;U>Y5E*?d>xFZ7{#^nNfuj(F_e)3ZQu zu&o%+IAb1}l^;~UGOxW*JU!GiA*XM7HX2u;bC8lT>LLAkhJ6v|ef!(?&&t3aSS_p5 zkIu2~Hk1)2a8y^Y7X>4kuFZpEYw*1g7l|Lk(0}oHhdCvrMAe(CY6*3;X^;f3*eUz$ z2+@riS-+K5=$x`@K6b>)LJhS20v=*JWit8Uwq_g`NQ;NXCeKt7Xr34}C>~xZdv3R* zL6J%?P&Qrrsll0U&x46K!ms~;??%O3V9PDnzj+4Q)+d)%MrR#{myAMbGo0IjWOBR4AQKPVV`ghASQ`Z-U;FilBlw z13_Bj6kzk;tvV{2#WP1Wd_))W%!9tEW!_y&BrX2Wvnw#9BptoPBzx?sHe0sp(Pld4 z`;)yh0!qXXGt`RWhg6Z6NQz857h|@SBtSBb=Hs1mD0m#*uFnl%gYJh@z)9#$K~q{8 ztSVzhxB?_s%<>v^{Ppi1$vAj3&H~L8ZKJ@}(bn`dK1;M&HVHS{elqp7TyzE@d}~@l zTj}imjatg?vDELEEWc*{2!#-NhUR_Y?EaS?K|gMpDdOr;TV7J>D~kN53{lK!%w5bJ z?P@a;g_kPJz|d5Usl?nXG)5}astJn31z4797<15DT@*YKLlZFC(1GWEbl#;+&kkms zw}L*20^p=8!3!-UGYvSFi1;4)Ak_*zius?E~v z$7-H03Q4yov%X%GW6_MLN7c28KQ#VYr1S&5fXuB4qq7dcJ8~Ic=)dz7N?o=_Lzlie z!Oo9oj7j7P`|C_wwHg%WnN@UI2{X&1oTtND?a>`hq|T&!z7+X?-YXe)Y`-PJ{nVT~ z{BcXLziRilb}zgy=IbZf)2flhU%2QN2_!#0Y{%59nmF!*n&#+ zc*Mliv#uBIu;ML>pq*}?{FR^P3UdOZ)OBtb24=n!aVV|!$exEf0zJA4N^dN%tRkJE zA;}uvtY3C8@fg#VihU;^OT};byv;~X%o#I{WZYYG0Y8!+{h3;%nJL`ses70svUE4v zpsx?bP>f6mu(-KPX-=g`v8cm#K}e2>&-LU+n;*GFlz)zn%k1RIrpWJNZ^m-AhiV$< zIjaRy;%EknSb0Mb#$bLtNU(-tkBf8dN_ z^HA4LRgpIw-+qqI%Wa?F<+4k_xw8A6yfE;p--y?l6-Lqj&g63=U^Fx4l)5?9Ir~I^f0=C9>Kr6|TTY1bo?uLEgjR_6fr&ParuXO|-TQp64Vd?4Caoo%7re$YW zX0?~~JpBw@V%mO?^Rubb^J(-3OVGZ8dbv``oZ?>3%EKbNeW)V7=^QNTs!s9S2*+DG z!qiA7k^MkWy~&$>Hmpk8ABp?5AajHeI2tQ8Gzdl&RFuX@#jt3e>c( znHHR&edRjm;MB!`)!KHbK&cBAh=BsFm;hz!aIVAE8R|}n!uiL#^fL4%=!?OuFr!cZ zJUph4Hx%SYlR3*Ii9Gc|BL`^{@dx@-r!$kjUV(zkNzj#!h6*0**;A^NK8Ri2$`|F> z>&acz(_|v*qmtm+dG1}5gDBxS`XY_eg`;*cUTwwZe^?&d{nm4_7g=SQvibFi)agW( zy~XIc%&+r(L@dnCe?H>9&T&eX_~RFIERjx`>yJ(!bE*Uy%6oOLjbepm9ZO}t%u+Y? zm(csJ2}V1uVm>R)s2wErk8UbrE{5o+6-IMuLKP1i(=E~QF5z*&EeXnIp)^bD=&~X> zC)$nlUzTj2r^|~I6TaGi!%!H|O&tc5OQuqBALuAEr~#5}u~+xPy;OK;PU~7mBRbT6m@$)4o?6ol3mp#7U`N zdEXO%sB`>+e}d)8P`UHQ)6*lLEMZ-G&k_~Sj{Yu%^+-38zv&sqs~OfoONsJ7`xz=- z2)D;GcV4iTot@~D?%a@!QQcHiE2D!y03Q1l#Ut6&#@10YI#OcLlM;8I-uC@N2v%08 ziULteBIOTZzG+nyN{t2m1N@F$*>51H;jc z`Y`bi%rvzUtu?S4bKN+kSmMJJLIVe(C^J9DualYnCcylMSNu=J zom4phdLDM88~~6|V>|L#&R61Lh+U@&xH`qH3GQRw|75KCaWr9|CA(t$_rE@9d3SaQ z!I*}69Xd5mb!a^}g$iCn^}|=(o~A5`2%?e4cS<^A-VE2 zjA{r1P`xsHNUM_g?1a#>y}R1nBn9|$+R?!Z!e6*9)uq28{L)RJpD?UPm;=XG70AayVXaOtpK6s$`XHTbbI}d-xdgl~R>mhf?Cm z8gq51=@%P^8E4%#whr$;MdRhSq>gu8muTKa@q9-+K1L+U(zWMRI$zCyZKHj+PWTJ= z`khhAF(X;TL-_0SmtM$wX$<^@kFC1>+v%igP09I}#|v47?7liuuiG6`IF*o68Zb5Lf*qr`Noh**B`BFRp zdQ$bg0Lk$;cI1|Yf3Q6jL{Vf;Y)3)xV~ZIX3q;kx`R*|l@f&qd;Y%XdpF7o$^%<*I zU)*zR89t)4S^@EMDyBZheo*Q6Lqs{4tL6%Zhg^3)1{Q<+sPaC_X0p4rGHK`|Y;48F z;y|K!#X9=5+ve|c$QZ@)5M@7Lk;1ng4|d(AHad01qcNmEU!H8UB_G`NQ^DIRb^^I^ zY!?j+mZ{P>x9wVesJd8!&ddf1KdJo>LX-wTTQfmLyUpL1GJIld@b(GAS@3Hew5p@C z>HaN0FxCauPe5*X-?XRx)ellJZEB69D%vGmnPaTuQAq z)EkEpK{VGNP18>E4n3cY1XZ|4Rta_MHS!WW)V3W)_&Q3=H)ceDkHWEQRTze) z{I6{Rx!k~o3bI@6Hovr7H*-|7zsOM0h(6*!D5x|nh{-Yr))blG0rF$(=2^(2V9VVf8+Cr zvQhR*j~cZ>)hWf6T>NvFZ|FrYIYg1)dxz&UDk=a{<9u-I zhZ!eJpUpYr4bzFaupf_X=Ml)%y1~@)VRZB-qZD!8b3$;}t2OOItE<~td+PeIrk1|Y zxlh^QjMV#m!_i#DQ z;k%PqFNj}Ox^R4FduU@`#U)@``p|;F?#xH^7&ZXtQwb_@6`Df78qb2$FAAHjv>C%> z_U3Hg_@6IXEkP~lw*=ep`6SwwSA}h9(Rp1KMg@bGr9K-+V-0(PS4R~tiwvN+WZEi* z0XMjnI((i0jxO(slNjhnF)ichAfRNA4`%ID=TYI#C?7Ij_?WHhWWDKhGpp zn`;{5OC|lH{(#9i>`Pjt(mk7!lcv@_v9(SBbV}+Xxgv^!Mwe{~v(njpXOlqMSWfFv zW_vUCTxQo63p09EvY-d^-e~+K#G98-kjeG3`39&P=6lD6j+e$l9gux}7OIO_dP>Ga z9WAKCO5fF#qPj0nMOAA_w*!~{b@BUyzsCeTMRZiEJ|xEoh6UmJw>Dh^dwDE=yuw`= zOZ<~{M9LT9Ly11W*|7_F{gv%6#S<}xd@;Tyt#b=wDxwsBn!_MX@iDRhB#Aq+88VgAqM<;SzNFe2+C~ z&c=P#DDbZ3P7*L;b^B_-0}Iq^z8aKe<;O!6MDD=qEJP+G*0t}nTgND4)PU&QGSMLn zl6WpN+zbWuNb+r&%Wsb*_pJz3?^?trH@rEbIIU~uuPsz)^PRO7mCH-E&-E_;=$)}L zTOD>glqxv)s`e9xo@Epom?Mdzd3Rh?AZK2m4_g zt6DM?*wuYa;_SEg()WK__Ch*D#hH8k{<@PoQ>JQN@t>6de;7SgL$dJQj4-XrJEaDv zxGU@)M_kfBR!Do{UO21s=Ass?Gkmnoc*MJo?_g zA6t99kBmO>{q@bmIO{m#hl7#(k&!gIChReH!`k=3Bx2HG)zUx`)rSa#7#5mWLloH;Dix`|lRy=U)KKYU6Yy8VoieT33fg8{TOAjhul%4yR#E>XgVBmO$gI8_BQ0&s}$^5pmn` zWI(45if_VFr6q0&x|3Jy*k@^ld#Vikp@YV!RrwWi&WM$VSA04Rw;uz~m~}AFdA>Y5 z+11c-g=ju(Kja!Hy-!F`qTqI{!TD^Z((rQ&Z>K&6N(KZhLN_Vc?uy6MbX$_b^f4@4 zX$xX@vy(}kqHQ$qRt-V$+}Hf^I>5a)uU^irIhJ(#8c711*ab!wcN`>#oXRl#aWUoX zhuRNr#8h6Iui!3TXm5s256%^}E8mqCo1RSAdI-!}Gq~62 zTO1bu^&04=g9FnU*(1BadC1sVAG;XOAhBaV>^!XhWD0`vVzdl;N zWq{hBhpT9XB)@lyD~x?#ki{WPTCz3d!8JCfCQ^7=z`Ra84q=@9k<`Td)2qVTj@PNO0d61eER&eSOQr&Mzsyk2jx(wgEm2@t_Ff%Yh3{NN>G~m&LUN?DpN}X3e{p+b>2lE(;*|#Hijk`pad3(W zTW=uE*Ax6i@sHOQO0JQOVu4za9QttM>&?R(3y%t3fN3cEejMVt?^`V=Uw;fF28ZcI zaKQ}KJbbOa!de-Q{RAwaKX&mLvDjFxylqM@>t+FhZs4xr z5m)|P%9dpMsqG6MR`!dFBsr=p3rpSj^j7KbT5VQM&|3DUPkL`bN!fFrO7*beVHM&Y zXLDUkV%Ux%L33pL$-4YwIf533=?Y~&d1#{u{28^~o3@CR?7CP1nl#Py%xVKm9d%q; zycPUcb6L8DA+8)o!)d0xL!&|AI_9OP><0Myv?-~6#;Wj=Gd~qi2zdYz^#)X(&;AMQj^oeWjC5X9=cwpNn=z#kq~~6>6&Ybh52Y?1@TbEJJsfX zbl&pG^Lt;+I7_f?%x>>v&2&;Ki9mKL!{FR1v|QXuiF4HoqKI=G*WoR=J2zaR&25M_ z4kf#MtgdSEL8mP%gXdGJ0$)q5NWb6M^LO|-bDxG#zK7x|pLz995X$Rj)!>zD;oN_ls3P@FNJAh_P=o)k4#wTDACq3(1kKQJ1@`a(CZmZs*UR-vL{E78_>>f8bc?_ zOk$_SX!>dzy}Ic#m>y@zof9A>@U>dx5x^Ot`i*IfqSjY7&h=>zzLjg<>=H}0NiEzf z#qf7O( zQJkbfRbBqb%Tgak91Uq4gH3Coo{A|II%h>= zgl7FQU{fw{HKJK@e{Ve3yJ-yfSTA}cZI5Ez-Mu6D!BXw~wwVgu*yM>bdEp(@SzAPZ z^z#hQ`!&voU~EZ39rvNvhm5RM`AWg$n<#}VLk%g;S@zPy+*TT?vP_OR@bs^FxnB4f z(cx3Mb?BOgI5-jCtZaVVyi33H%PRHS09SE_-TVOEf;d&q0a~M9@7mG7mVY9d8t;{TC%-BYT}^W&*A5PKsOSBz|{1JY#0#ktQKSX)*l7Same`-gB~R3$K3w} zfozSUr}6Q9R;jC*3_`^H(+j)>10T*lm#WUvF|Co~4YV`BP#kP7O|(pRh_C_I(Sk#t zWB-O~UCnnVE8#x#gj7#yJ~>kfU2gH_{bg%i{oZ_`15J(8Sl=-VB$wx{p_U`#?ASX5qMCNMOa?C{WG@Wk-j-q>{q34q+ zXQG>#Qm$$Jfw2?)qcQa;;WTI&C7{zy>wGS!60ha;?N5Q(`k-h5&d^~osisMKyrBfA zsi2Uq8DR?Fi(E#f8YzXDncXSjnCl6=zIf~QcsxUhph-H7G{wgPE5>)cX$t4&zH4ji zs*RgkpX0L4%TnOOYdLEUSR~LG=}aVeJj7nq)C<_o_OpW04n!KR%p!pJN_Ut0W}3nv z2+^7epgl-M#Pmow0<%N`7=w$iIXq?W72RwtyD>ton-Dj z^o6|9lIkM4T5HH!4981iZqV*C_@t=8GN^CM%vkH8^XRo}a+j=cd;9S8c-t@}gJOKc z`D!UT`Ppv++B2+c?yXR8?kDFH1^JUs!37t8KKfX#ZhTU%zA&p=Jo(FL=7TRw1}3dz z6UAO&^^qVEBWa8ru1{Og^6n16$Ck6rEwAwg=xst2g`(4T)N3)pS2_!?zT+^~RvGrJ zls(_5RMpC(ogCi$xCGj~E=Me7cW1xtW%K~wd4HuL9<9hj?-w*f_I)3?q{ zHtOJqBC1-XzeYf)^w{qT{2nlSVb_(PPL0^^5oYAHq?ytApu~}Nmnx@esdaf@fj_2c z(Sh`V_Fa+$(_^efeisju!s!9PL!n7) z)V6fEF{P~SU1Wj71W+++P+m$S7&C2S6MZ!fdKpK78$#~=Za&vC3I+mj8EX^4H1C?y zXyV2-Kad0q)!1l^m?nlM73Bz0T8}wDkrP8o)+lH&2ZEj+Flioz>WSeaY^r{ z0O)f1^Mk0aoYc6hvep$v)k5_|POjZP36D!*s!E)&3cEd3G!{r&aeG1U3hVbPg&jo3 zFSN;*-imK{Ql!ewgw$R5M8qwW?mT6P^n8Z-_=}hRL1#&j4`UVom-3*S9fRWz zS}c!VKS1HdS>$jb$8-mD+Qd!5w}X=}Tlj`aHHe;O;){N$Oix41{2n<#^b3;`^v0PB z<7y1vFc7%!lGFy}gz>is8OQR8pcJghG6f8Jn%JLDf*!Ik#E#r)QDsngOP^?khRJ`k zK>mUwDgLkTCWSu@qJ0gf2leXQPl!|Ywma2Xqg{d?Bkvj#<(AtU-U(8^S>F8Ui2nH0 zi4Z0XO|;h(9pX3BJ(CH~jE_h4<+CyCy`Ct-q!+qo>Smx-i|D>w4Gq^x?Qg>L`eQeef8z|ro^oGeu`$fyyWW`oBG(ePO{8Y zVtASWFkVgH2A;a9Kg7J1X~FO)lpswLob1clh(c$+MwiZB$#lhJeEx`ynNArR6M0UNUwli5R;90k z`RXt;Rm-Ret}{9F>C14d{_|5nGNKnVIeVk?=gY^J`q6;1QvEReiP`+Uy-FCmoUN;U zw~uOsj@NAFXd37`i@J{S(Dpwvra3+})JSca!YgXfJlw^=_6JV4gJbrMNBZ^x%O|zS8gur+B zof2~vwL5yY(DUw{5o$()1?uD7*>u#4gq539k@uLhJ5gTU>7UnS0ns(ix#oa<(3&4F zA6b%|^ovfJu?o%$H zzY%#fi4$1T&3-Jyc8;#WR9#6jyHa5LWSG>n#Ob{cb!SpaIK~Ky%#P8-2ETIOC`vV^ z)YuTrccQ_VSu}1u(1airb>fmidv|HtGiiF-q{76WVhm8YUEmGr<&V^HO>H%(i89%i zlZ3M!+b{Q{sUE0r ziceG|#6EL@m^#0J_*)qc+ydHWIl*QE*>JU;Dbze3dIX#1|E>7p?cJ-bd2LbXb|>DV zJ0YAMKhrnd@M4rr7QkOA0qS$HX+)t-9KJm=5;K?d6-H3Nfa^*yzZ8>n^l?>-bCQ$N zX34QckFmCznGrr727yq1!wm!CcH)?ZfQQaR{~bzmw$&vrKM4Z4cU(w?zlz}{Q&tR) zKE9=_R{PxN(l)trWVARx9x;5WBXFqa!?OmH4rUxjqEOc!t=kfhgw$iR$6l-znfbgT zk$d~7T4-!Vqx9)THLEh~?{pv45(HPN)}fx7m2ui-7UM|5Pj1#dFOY)SJNBXj_==cu#_qX$BB0$^?+E7?x_^*O19>NXUA(8bg%o+z&w;3*ps)9~RF8(|1Bdw=7d^guB2`2)O zsE{0DqSk()LT(vlHa)EW#U_DMFZcs9zfPKI=Ean1F{yIAzx%}LVn`RYrbzZ^U&FmY z_DhlHl+4nNHb2P51s<4q-bc#QB9!TOe|gb5P* z;u*3sEj;_sVj?ja)%Xuuj9lk5U)Y}3V3;hde(bZ#^Bd;aa*yNp4+stHuawOH9e4R( zdC32%nU2)UkfJ9L!ruP%Q&<9onj%_&cPIa6EIaU0|EzfUM}5M7HIV9WvWLILSs`!o zpQPmehEM&M6L|l!1AUW2#^ZPH?mywIehWGNpM!n>4WJA84*w(#`JWi5H}5L8sEVKy z5|OeOUSIWyBiF9P0N_?O39>tN$0^}o|1Jg@VUsD2H*{_O{jZ0QvNlo~_l5)4NYeJ@i>2?FK=gQA$Xsf%x<5?icWpi%mZ| z_-7J})Qavd*zxR(20oA7h-O^XzW)H_BI9oU)b~G9ga1;k{5P|K|30TUn(uzbf7kBV z{75KjleZkOt|#b57+T*hRYpNq;k14uC@F$AN>|gt(Nj6PrtjJ;B)-c+tjcXhW#x?e zAe7uR-3Wa*M|cWJqMN%U9AaE~$o6x0ksw}w^{LB(6-L?+ z32|~d-9Ebq8yY#n8p!r?RKNw=Y3cLV09Yj3KkV2&=-sd9zD3(A?8{rw!?>l`P@;vj zZK{O%Jg#pq=WT4iJgqwk;hULP4j3L{iYgksTp7S>Li=@c*ex(?>E&s6Om}x077S{R z3D_8D)B9-VEr~=LdBXMHA9Qv-s zP{wUpc(`Hc@|hhGkRXx2(4V*_p@zl|l#>S+4qe-PT=+MvE79!39b6p9R4HqcQ57A8RKv~w&Gc6xySy?VS>Z+dcL2?GV*hr$2 z4N`2i@^30xkRxG#MBE$z0`9kk;*R)X0m(> zoX46A&y7Wp(KpM1J-i*$cfXN$@R$P62x+k)BkKv0{yT2NBKS+eofqI`@kng(0Ai8q zLSu3EEjRY9nFM>YfutfwiRP>9Y4=eCMAgA~gI4Ty@#ksjFp4P1cREhi_8Zl;s#IU> zMZ^rVm!B6wKZj%fIyknFjJ@3^Q0qhRw;GK&yb}hBmUNZ4{>^T2?OT+XpRW z-R5tFRAURcn$~4T+zV37RHSNFyxWI+0l_*mihX53e**0Dk$~ zN~Bxv5C*gCU3m?>oEtuJni8YUg{7>$c3SMxPwc2UxyW+Fn^!`96*iV%$Awrqg zMO(LyD}6(Hy|9`N_94JYJ%DWT_;30AzXR`!)v zWZ+(I47I$HQXasWEg_w3H7?DR6HHoOcM0c4$VkEV@~eqAHp)9>AUPQx-O(zb=&+hH z)L#N(PeE&Ozc7*y3}*z^a8t4qieoHr+7fmuw>!%XF=qOM*7Sg2C&6wS=s@xdD!KRQ`QQ90ux;im1xdesqoZBu@e%fVK zJpCwnU8_8QB(=Den1K?pIfo=f({G%RSU}Siw8Yw~75Y3B?4Qk(9gcBZXQBy}y@26cJ_0!Z`GSu3AYVtopbln!0RI0(h= zUVmuSU$*t7wAFrN!Ch*34T0E|&VGD-5O3d4hK7WGEg5FnD;~509>$F^)O@u+*iXq? z!_Rlkhm<8&@+V7S9)i^At;61no{&Un_?{wkgt|0hYVqji?9%hYl0~&{KBqKJR9u|fLQw4pN!;r>wcU_oM8{Za*yY(v z2X$`<8r4W@-*{t3!<2ZQ@)zi1WaE_hKcA;3h{p?73!VI-T0jxns<5tKYv-x&uKzL)n#gt*vlBMF>=C`gcy4uLA-a54vf`i6EN964nf&pch{_vuzui>M?ncoa&e! z;Xq^5B_7HgcFOM00{94392;&(-_6>|;={e}9F}`#D*C01^OlivwQ`sTIaEeLzvmoH z+OMJN$~wf(Px&y7$o6v;e3sOvU=2uA>fhNqEU5_Po(2Z$Op@43-on0gW2ziy@(h+A z>M!=Jo-*}l79oD&tRGh=#X_hy1*=i9_^w`0ns=io^0EvE6Gv7ugi44sMlR=8%BY9g ziC?^O-Q;%bOdB`M0+9Qf7M}-~=v?VORu|5tdzjoD90dEmn6x39^-M%PIgi`<_3945 ztWtOvq6$DH*d++DJxgEM{O=L!Uzod<^1#iVWYe4**rTYd{(sS?L%e|PY9zXsQcypm* zOau<uprQp3jlR7~A%rMZ zj35MIQ8V7VmH(ccx^=41=YrN-a5!jMEMVGR3>3tT?$5ww7cW&autzTCk6GNG!gxUzbRi%?I4yYR7_NI& zAFE~nJdIjohG%_?jn6{1cjQML)OATjFPnRal**g_WRhdQOn?7Gx<>DW50jFZo2a%? zn+D(R90V&)q|ln(BST=ooN7}uL7U)_GUvUKF=z~%Thri8J?mACDyeT1U7CdZAKg6x zsP_&h;t1w^REVm6Bl?^I#qzo?8pI?~4NzQL;Hgzo>)Jn~8ujYhNg*ts&EmaVL@LbS zcq16c-kWl>W~AM%;8#Y1-l6u;d^wGR9nn&BE~zs1d!NOd=BZz&N0~+^8BcMVne#oC zX5YeO+2$|Ih{Ou#pf#+a&QS(w}PoICKC4Qb)dKk zF8Q%31*0eO_4GGI9{A*~wpS(n=&`1JGl6DTdSl5Q`+yK}Do$SRxG(l>FbNHfhBe8M(!$gC#L~d`u3Up4#Rgtofhpu0zruoY8nQ=;nO* z`d)xXg?J6(`0uQoWSgzd6t>0-q%o0nd2^!d&SQ4>xq>WWOv$Lc4Vb z1g#y~K0K3a+y98xq4kxq((UsJx-(W2Es`fP5@{$~%yG6eR@ehF;QT>-Tk!7fFz|l(rC#IoQtj!}EL3Fu?O)HNTLAGPC zabQ5iN8BYO!PGNpESiH)3X}p_?KNB~Ns=2f!}!^r*23x4aZl&yRdN;bXM)jE# zOh-C;N07Gus4VN$rOHw2>vGnyCd<<+Wy7*dM=@fDnkSO!`2=Oree&$h@BZVh{tLAs z0k`nZ{Re=?k)ivNm{F#dvy@g z%$Nje25U*3Ze&m`2e^^JXL@ob>-47t_`J9WD8y+i0=j&ao z#fYM21l^JS5LVyg{^onVfaVb=8z<@7x2XsE>kpg~?f}Igtd@fG&1tz5Wane|?6*uz z(A;|*=}=TTf=FLk1c)LW7}#a|Q+pzcBz!3n@;i0<$E%}k@3B{RHkUr@MSEi+?NFT9n%rI1xJe;TWNCC~BtA&~-)A9!m1Rwg9(rw{ScPTY>;4R%W!n*qjuzP2J_j zfS-Or>z?u6!ht7^#qhko7+|8z!x70YsigWi0I{?4KryjLV1~NDAsGbn#+)pp8{}7~ zZ2-kuti*lw5nf4KA0Gy*w>dqiJZuS_27rd;*Q%%V8x49r72y?hvY0qIVdhoX_1yR#K67H?3{3roI29$*0mW_;uZ?qPV!LHJFIdd4W$2B+@itF~!{9nU?K)E8F z93P&qRfjLA+t9UR)l{k2C5Jnww0@E%{{U1tzMj=NQx|A87_ohG8vslw0ry2evUl2M zJ?Zk}&v_WB6|&AksYFI5h4@OMBRFAiQ10f*E3#ojbEsa!iFwLLZLq!iHC=iU4F9}@cDxX|2>jC2Eyoz%a0K9 zNYl{)b>*u`r9k&qC%XfFV*sit;Uzne#u6;n`678McMd`5xMxB{x!|HGIO;WT8xx)p z`%<4MU=d*ca^&jFaAjpQ074Q-p>_==Ku$~)Ore(Rx;oRt#Ry5UM72iq#I3rMHcgP1 zIT4c{22#AY0xOJ2?EGa7XpHc00Zd$bT;jFyDgFm{d|gd3k60pOF$-xlR>znhne~5* zq)Phxm};?Vo*yo-dCj+tB(t-p#@f98+*z*JuRX3y?%fXm%p=fDX@ok+C{+%Qcz(E6 zOZDw~Yai;JFmQ;^4(q#fpS}xHrIm#|K=&6)>c}rgO9Y5bbJ|0EP!VVo8)LBdY{s>jwZJk~@dzUT@P!7DelegdFqDiLt=z6{SEzo_4x~Ih(V=H5Sj%3StX1tB_2el#gxTm%`l0U+DOmGT{hn$#sTv`YBskT$iI% zz?htBo9!M}2TW)dd+7MAg)0&ddCCY7&S?1hwuKcyp!L))OiA}bm}Mu|{d(1dN@c2F zO5BLz>G)3-aqvN0#nhdyEw|hpgo}p3HD$PS!0W91#A-RZY;@8UVZ9{aI-b4l3O1j* z-Cm-R@b|+f!>TC=hp(l)tyGhAmD7Jp{{t?+lIvH)1$)40bwgzRq{J6~kK1kHFdKVN zbTmF3&OpgYUp5J6I&cuzDQX4tTumRw;S%7G^qafY6lmVb4Hg3L%Ie^fiKjQ_$0CEA z={GyxX}16Y^OiHi&Bh#$t2`)#^k4Fifj!~VLiR-$m_Y~({hwY;lAA+ccn$#Vgr4|8 z87eIE@h@5B2i)U58GPoS<4G5oq`3D7m-u!NO!_}H)u%B;&@)SM&o1loKQ}(1!_*yW z=CSP3oIi6ixFn>58nZXKq3*SL`s5 zA~GN{8;8XBzUcDVX=?RZ1vW5D-)+kY-+ytITJ1y0r_gectqK!yj`twP8u|ayEn`YK^jtWIARkiT?cXBXbE^Jh+slOZQQ8kuN-rBaxA) zwz)GCMTbdJM~6QJEWj58m$dgPEq#6gfyVe1Ubg{Nf3W(#DKZcx^@RnAWYs? zgn^TV;mt4V=5^VCZDH;S_AFT?#!%tt_&nqs-mCjSQSDNQ0mUZ z_-cj0sXjZ<;(AN|FW%ldD$2GE`yD`0N>S-jQW!#Mq(qSh=^DCY=#<7Fq@_c;83qs- zkRc^RItP#xlopVZ#(j;?^M3FC_TFo+?^|oH{hta>-1l`~ah%8bJ5qA1sgynQt#YZv z&m@SJhR}hY3tv|ikMv98>T$&`o3OB}H4*2gUD+;g0LpkmHfb}r#V5t6DtTgA8{}`Q z4p7SFn+`wD48W5k+hTM;r?rk6!a|Ar&#C~g3G`s{{rjvaOTWG+V6O4NfT}jz3L{t>7nXy$3b5Cgm55WV&`x99&TXrtfW5JVcGaaWZ!MOhrg_fe}OCu5-He{Wp05e z%+H`1g48hxC|`hDGgrgKbwkcbK!*5RD6P}fFua!*ujByQkw+mSQU3z2a|`bn%#qr2 z^X8nGS9EpaVRLqv(X6g<`!@loP2GDf0oZ9;N8)kUj=r#GIP{rypg_E^z?8N9As4r? z+T0;yL`bdPqHjs^L@&6#Ev;5R)UAHZ$P9hLkN%MsFUR~o0T`(47$A6huW+>JGKkZb ztP@?|%%O9uiF5dl?b(HTV^CllAOzBzy|QIspNn+Td?z#pGoFOCA}EqzBV-hHt$Y*q z04D$2OxM#ELcTglgRhp~N$aBmT$FQzij9k-;cT9dOZW1oFfh52ZgBd#=ZW%~`YlBI z6uEd<(D*B@z^E0beVDe?u$O~75mikr6OM1xX>nYxVS@+gbzTf+^;ywgBm))zhS|UA zF#g|L#Z{+jw1rV?at7m*`QK%!YtimmVVC<?J#%lURt>VpNc&%P1f8e9Cd&?zF^|%M^aI>r43H8Ql9FlP#opR zo7|h}d;PDAPu2y#$XPS?5JTs5Gm2P2gW(Gw;sSG}ts{@1H~lse>pTutN{xX=36f)U z?mpLx)!xRAYxl*I#8oR)T1g$G$p+F0-JUGEN06;QKd}cJgQZP=Ejg->5-*GLZ(Msc zmB<~@fegim1EJ|Z!;V^~;UR__R%!F^M#`GYC?3eu5i{QWZ6 zYrn;G_LG$auePX{6^bJWqP^8=J3>h!qiWDgAp?F>fbL1L zle=UY(sh%kstwn3)e1BE?^oag#Ek_W-y7+@efU?jrN_Ac$5(icM>Ww)o|2esw-Hj4 zZk>!n{Caw9_<-T?`PDICrP85QcX4A@`{dAy@ad^mYip35DlHseG1fF~*vjs9LBuK2 zc#J87rxXsYCQHY+DKQxPt(ty$KNhE-zp4j4)c%N6a6plpP2_Fu=FR&8mDXxW*KE}^ zC(g>%M^6Jmo5rrs>*$|1b?wxZDkL={(N)Jy7BP>CfMWS`)1mXfgQZ}9Jd zY1LJ$)!P-K=5yoF>ti}rq#H4{A30H1O1|030?(mfA$1Peu}=?x=p183X&;!ky~WgHz0rJ z`qAd$Fi&W(^IPXvea{aA5qDN5Hu>`lc|KayCtf4&!{0d1#5oV-k{Vq!ejW=vlo`V= z_~2H=6pjDfvP0<^%t>i*i}gY5%`vrt4>6+VGi3-A=%;i8=`=!}5a?@N;&+lJ0KIbO zehoPvTBpq}{WWY@k@okDojZxWWueM@uKYWL0pu0EIp20_wY5EBM`4`3e8G!l_%dKh z`MYE-cM3dm%9>aQD`q3e8~ohdrS4rhA@n>$k+s~vKxLZ~G-F-ZHdbM{;WTsxIMN^d z(rX_PkW5ug@uZax8;03_dy;y$0NHQOotZ2vAj0fi@@%3p6HH|-gR;&4U8y2c2aZa3 z4hkY#@r_HLCJNs27!kM`j8i@a37w;kSXQg5uo~u*By_uxa{7TH=0$%-nkfIXX*uhm zBFf=$(g;j72TK7AZ)@QF*I6T2hsM>qi5QZ`d%fY6>TKjZ+HCweQ}=WG<@m=8R*DxC zUT;kbjKNE=0(LWJL4>up%lvoV&nkJBca@7`#dmqhZk@W}wn ztbirWT&a$L#GQXv4T~DWA?tg}vE7PMmQ$|^<@X-hdr!zioIfz9v-MS1| z2spw7NPx&5Sfsic&8|)n4p}-gkD;H?I!tRA!CA^ME@8noT7c5xwiOc~R6w$A^b*6n zbcUzh>=(lyk<05NOTn@SPMz5z8bhNnV^GErw4%P}sXcAzxp*-V9P7eT7+5)RKuy#3 zi|(fpL9FvWV-YHTv#A4jZ2r>=*tj2k_GSeP)IH?C+ld6K9`N)v>Cg_)IUg#gPd$ofz}UbM;8j7yc?U=;fcTe{6B+%D;Fw1}b&K22Z8W3SCBmL>dL*(E!#oq^Lz zg%MWwP;etnJ+D|NgElWDeb7O_3?+J!eDgm?`jVL!f8@#01^P2 z|61a2KhSfK6d1Ugih@36;4dgu7hvL-%r1Zu5pt*-xfHQMibVNg=3kl?Uz_|@hpTQ{RQ5ygGOj$-5VWIw+ zIyRDs#B^$l?R5dMeA@GOQ`vR0s};C1M%*+X&G)mDdVq5HeFs_eY~;_TPat~1o>c*E zWbZ7nk**c@g}Aq*G*V$*V(7{sD(@3l`W4-|#6t#?xo*WfinKJ!>Y;B54UDsVH#ioo zbXQz6q9;BM=IuBe{FsTBS{HQs(jn3+?qkC|CXUr}SQ9LPMa#7RnZ$LzObtN`yS~pH zPL%&hXTe?(%Gt|j8xhZ?@qRco!cs2(N%ZfSiH5WUG>GW(WfVFwWtn_Ap)-pbuH`gG+yhNze zOi*zT)J{E?w~e012ne8_*OL4-VA)=?ExMwTRdI5Q{D`u`ANRlJD;%su_g6`T{3H4O zPiCjT($zn@Uq&q0$juu81aO6Jr7?LnT#_Sz=K{2d&9Vbx@#YEGm*iLP0*V=T^Up3w zOdPY>2LkA;gfyO(tZrTM|YAW(lcw_E=N)-OeH*6G#t)MBI8u)tO$qZC*qiUD;1dTFD` zLps5sZ==#1guyyZu4eo`0khj(i7~7WsrxXQSLpE{`(;j`(usVgY6E)Y-zxVuXkqGt z)MWr5A7qLjT&qlc7l(jLq!nbW*BB^*RTyGZ8mcz8M&9+k*i+XF80;S4}orh~C0&rj1PfJJI`0xeR>^2e8VEnPOi&GYN( zB`Ep*z^Z2pKm0&f@Ui+cMxgpdZcZRG#FoODq2`|s(hdOspaC2y_)h(>;`&U<%&=ra zzaBWI2#?rItDXbAaEpN}X#d`y(=_W#tn&j16@C(IqT`lR>xCCM`-e3QW{RC{sxOY@ z%iY8(zijhi;E!^v>f9Au)9}i}87!zta4v-fs8)YfJ2V(_3*4>edzXRh`m;b;(v}l| zYfWPHU*J&Tt_OK{XYKx2drS(TlFZ?$ogVF&Xolvdk~;pigWx>;r#JawaCCn19*|hT z3y1wxEi(bzL2fYVV(m(-QmDcm2MAxBI|QfyT;Xp4lMW?rX-P2p=}o*KuVBTjt*e#A3uF6_8qeXM}gJ(~n(R z%`j&ifVevy6RAu2T*uYrPKeDxTmM1++g2bym32R;b_U_JW6&BTVeBY+G={IEK;ZT& zuuXaXm0rP&JXZ!fpS|Whbxm9qGMpBHzvqB@9h?B;jxQ!ng0@;yjQw}JIvw$esYo63 z1v0{b#Pr$OnVf?Bo>vqQq$TXPP(ud{I^O{WJE~5Xm5)F|IH2-~1L>9%kx)lKlze;w zdNImbGuOXPp%Az!T~{d$<4(olDl=xM!x!UH+;a#l_gYs7uF&ZCP6!@g(g|MaXKe9- zHMysDTcg+3#&_L)$)M;&lsmwqZ_WaMtnR)<+3NWgJ(d=Hz5q;8Hcn=CXmsxY1#x0fzs={cQr!=V3t9K;AmM30ohfHB@3&x zvEh|WNM2wSK(u4s*UuS-7%#215Q05$Eat|5vgw1}Gv^0OU?i>Xe6Uvn>aT-`KmRvu z3S}37QZ#!XG}{~aI`xuamYYE6--(~&9B$bbW}3;NTjvRUsMOe!Fa^BLc>j~hneYIB zOCh&hY`#(WQC1?BMeCRS@H3dKDBwVyKD__|Y-Ll<9VEg4Rt;b~Z@aZWnSz?M@>A-M zExJ*L^AwXGT}M4_tfp*0&brFcZc&Dl;_T=C!h(@W1$=os0pqW>TTkwxiuk)4bsD{L z;dNX65Hf|CMTwMK(;#-<{&}OF0H5Q;S<4$A<8Z>zl9uRkkWJpo#F16ZKgcByDgg#l>Fa8*<3geDn|Eerh7H521=^c}J~KNOd~ zld4s!!0AV;PXWjTwvYi^Y{c+e!55xMFs1iV%I~YqA<}py6b~*Mzc59<;4h&RQ)MCs zDQ-mt);5^=pR78vloMz`(S&VB2KH6RbgONNK0}RhR(x!?;hL7E4$%9a4usgevm`Bd zEqKHhg5o8NfQU`P4`ZGHV?yK-4-INlV}Qi{W4qw3|!iCalcg~(Cy{x)NOf*v9(+G?^ zt7~U~;J`QXjib4f(+Us)FX~1U3)-jmaL%}lA1OYy8;8CH5s60TaJA#-S$`4RBL&sJ zn?r(X>u}2NXRc3k|M`ifM|{v;GcdkWCxXeS>!?Lg6!?xh(L^g}9JV|#Ge#WTSy57~ z_klq$Zni#1;t1F``@%0L890g5=>U}5JWgAH4@pyO_O1&`9a=2}=pwN{EO>M`&NUI9 zpm&eP>K1<06W%MotE>b@)%wyLDTN^*xGCPau2!d59A6EON=xjy^n*-CPU$HMe5_$& zZvi1hB^<W%APQQHE{l(7XKUQul`|# zT4aV#KqZZ>29d(M061^(u7D{h0&K4=%PCXXv9 zb?2gM!(Rl&5nA$v&8!(RaUW%v;CGgYPRO*Yc1dXx%QJ3^MHCA)E5Ce%MX!5{6>S^S zx-wf^lnyLv3@kc3^&=%Ke1SE#(*t?xb~RtlZm*ywsB%C40x1crzLycp$@-X8(dV#p zZwi^A1>&577r)IqLQ%&go(l%BGE|;XBu?TjCHuFOd=*}m@z4|nD`$A33{@L`&Pz(S z6%E*V%=NS1->J2kiF0l%!07aWvi`@0k-5;?$q_+g1*erFPZVH!xE_v%0N9)p!ld2tGFeIge>S9c3Th^&E;{8HK${Q0398b^|2T zjLj|^ti7{=qVH>Y@_|j4O-Eh;^;S~%6KUS&_^N0NIs2~16aa;nTxHv;HvlI~qaJi6 zH(LcougITaNKw~B+2KT;`g=3blZ#5DDHr7DaAZwtMrwmc z*5Fo`zU{qWdoiSY(~`0fk23S zi#M*6d;{qSRU{70IH~hnjtKiE82)o!9`yDx%kYGX!;|UIuKOJO152Rcaet`P?BT1vOWx-)X77}W$Fj=YY zb!tdn;|ts96$*wzxay#i?`jE^11czPZra}@lG1)UAjKio%8e!SS{r3402SZU(M3hS zRi9;RCHH5o{^v7uFyA%QPBkCzr% zB{t2+?htxPWG{!MZ=OVHUww&+Vl5Q}J$H^A_K@#*Z1HM+8IF}GGH{P1!FEAg&V`lZ zoI8zAf}c}Ly3{~_>`O_oynPyHMA21^`o!dAtUZ&{+^v1WfYu{F^-d(Wk_MGY{!~fc z*@QWyBT6*J%E7EY1YNiHle0Fk+7W>((EoF*A%qAq;~`4(uAE24s>s)-y>0I*g6!6`f4juU!M^-q2?cK=_62g8l9@ z#juH26*h^MXuwQPUE_~*txi?jWYAVl8KyIuVA6uWR|7>4SlGZ7{pG&VW3WPLj!2Z~ z-R~Gxp}IQ>GUIGT#|~j4VMP?Y4{XpAX18*@PgauPK2-Y* zrdDD99}e zTKhuKn~LNt6WO5JP$3oivJO&SBDOQlx}1lEd)MF4A8$nW_Csxxd(qy4C~+dt9u(jpSa;hFv$9EUiZT4Gp4 zw^PV_aOMR47iEzsn%>zZcjB_plvSB`izDK%4r!z?aa(6#lUdI=q?DxeL7mPa3Gi<}?t@q=v zz8^OfM;4%o={*oa&&H5d=ed_=*3O(1w%@{+JPw1Rxsc2LeIVAbfS-IyG!z!(AeGrA zJ`Z+_g_qV~O5z){rrwE6yNygt?1qG{C`Hpu4Cg+=gKrV?d_V67;-}6(UrGQkF&U?u zAMx7~QX|{_*2PU{;Qd`1u}FG#65(hND?9lRD%p7_+W>-%Usnif3z-}XRXs1rg)H!{CF-(9({S(o_f7&M#PR;kM%RRPl4^GF zT`lpZ)~bPv>mHu1pq9jVZG}wa46og|F|3{Nb>sJ`wTE3DwV^nPT5y%8bIn4uzN3aZ zLX$~+Z3SyvYKq$+>N2GlR)tgef?^>02gqu60KK!@HaRCzp&WR@GHX$;pDQX2IpifXc!Y0eC>uvUFMn z?gDp-5fZXn82B@ABa4Gn?EO>ex!?&jsk0e7+8In~d~lTnv)4sr-FDoM(Dh{^U&q;d z6USCiwN7do{@O>62K1&RCIslMXr^3`_vObkRWGjuN2X4|NxXs52P%(WT1_wT|Fd z!A_>-K}IqcXoq-*Gfs5tZgkP1t@K#2LVSnWFU8rq17HR;upH$RwlgYHh}2GTgkbV0 zE@NP9OK_2m!YFUMnMkVE2Yf<8WeU`F{c$8r3cl)l^OPz{w?4~GNz|nmC~(IJsdWvr z)a>qSu@y$KH|ajZ4 z?r$O>x2Hs8vVdR($yx+c3xdQY<$E@ES6%ymIw-*lD8^xD@ zIT41J;MS$e>?{lH?cYP@ulBczysd%Fy38i#5ZQ9yIWcxzJCtjAII4;!vpG z;bEwt@toLauXfHS&QaT}Dr)|a_N#;NH7wiN9d0K1jsq`_K^*sc6e?$O5sfTmzoJm9;K0?M#}o35;u z^;erV0Uc^{}@Xvm)rD^0$lk?stJuoQ?nAG@k+s zA9!6;NbXmkZ!fRS0;y&lD>XV{0o*_?0^n`*S6blXB zxdTL6slGh}>*0|kw>)6=KNKdzYSUP?uN&}YvC_k4D)8<2yqk7syZmYcEI>t(^O@LW zE^bgtbt)}PE;}|%2QKcWuYlE3M}oCG{`3ENgNHlUGSfiSGVcJCV7-s9C4Yx~tTmCl zewNR-9__KdbP3eD2uG}TC)`2I|3U(2ShIS64W@rzC>VTN6XZs-f6CBJeukBaC5Z+y#WQmWit)nAcO{?H{= zAtknAfUbvvuHbO2 ziYe-R5z2RfO+Y(URy=D44k1i8?mC*{|Llh}@fHLTau1Hc;SLS_UGtz9Of)bE#kNLA z?r#iIg+SNe`J=n8oww9+P(XT?o7@8$X_8wj>H_G_bo9cdoc+VL)-&5c?&9(o0@sio z;NFVYsIeC+Z3ap*bLI*9VBG$_0Ca-(T8WIkQ%ykCbOO4q3UOYReOc*wI9kB6d^Ii?#aEw#&4PTJiBw^n5<_` z5VT|8u$mosTI%dtN=Y3UE#RbtS5oWp`>V~F_fy-rPoN?08&+AIY;d=!2g29!dSF?a zaT?YoIYaL`uHNF7Z_^C?-yean*B5&lGX`Sv{xkxkp4q`yFbsCaDxmbuzK3N~#;uj^ zsP8);zsGEY&+2XBzbk{;`~%LH{?pSyVh#v_12XhJ(sKGS!tJ5M)I)Djv^whz{XHg# zO+dR8Ma;!At!8ur-TPa1F4_q}Ed_LP__2tTw$S&J*V~O)33bgqGb6xQ1sFrUmYg>N z)L31^=)HcC4`S6p39zR_it;tAiJgEvxABW8Y{-BU1am6TMW*=zbaZ)5=-Zq;{X(d~ z{}MX9GzhJ6hdlF!!!gvp6|<*%1OSGMORbOwuWOp9(`HlLj5W(kp2D^lHO zVh(7}cTWRA=Hwld7xGwc0!yosY->KQVXHfE(4M_gnnVtHl0Z|x zmq=k5a-4(ipw@XfSpwH?Ymm$a8}d1jrD$A(BMw53FCJB*H_FIAZFq45leLQ7kpVRp z!A9?RN4OcSi7_WOPo_4)#yf$i3scRkpQK3ecR<_EN&uqN^R6)(SU z&L+gEPlKdBzJYVVkzXFLrAsr`P9FWODL$X`a+r@&}18dYV}=jrILj;H4z!#>N+oKop_1 zNKTPwD1(`mS42FZgGS|p>1Rc5t6k+^AZjL@@B?@{ka_p`_6sQx1rvBE<>{772rU;6>$7a} zlmHF8rXJbx+q*#grk=yoCLVWVXRd5mA1AcJ4@}m#-kr<s}-n{$0SteR~VxK6Y06$EzNslktbZap%?U#E)-&a_J z(L6vNs6o`LYZWS8gG}y*!5~T3u++&*ba`HB6)DK}pt6M|`4oAYefg#rTG-BPi4_L3 z5g{y2vQNv;w7H`uB1$Ic&jLJEtUdQjPzu~IRQfHHx!#lanD!hhInEri@01jVI%_@Q zmbdE41i)dsVSy3MTn4~h`RM7@?0~w}EWaWKvDozqR7nzsP~MR<;r)17;u}Iv>Ko*S zX7Cv>=f6WBD!K4%t>xyjT*->H5eQS|uvGQ-4-x`D8_AlDv+E&9mOVN(*+i0A&9Nn7LMCi@ikB z2pzS6VsBQGuH9+pP}eZj9>_^+0NaJn^#TTKpRopg{F@B#;X%us=#__8WRkW)U8KIk z$pRY!#UH$zvnE1eP{fm8kHLrCtp%00t%W+}7}(5=rG0{O z;HZpzoB|+R=%3(V@~vJQu0Ko6nW=*ir_$jqyML*kgr~j4^;vBaLFlXz8Fahs2M5=u zJ%~18t>_KS9}s}m=MT15QLUvii@b>hrDwv#9>S#=n#?5H4+}icwE3C!pRDRv zr}7iw>Z(9gyVZx+881@yf=~ zt;-b{gAGQYM>Wcjm0HTE5`Cqk>Xr&Y0gk2Uq`-Iem6M5x{#5*=Qfb_+;! z1Bnb^vL6Z4d|2{p0Kt_=&3Qw?NPS}Ne(7hL?7J1|)aohKDsvirC;Igu4#U32 zHz-WhHC!sD+bh;<$UWedmHw<5sPKdlExJFm1I41N@`?iX40k*yjZ!wx1xKgM%`md>LM!<$cDe#a16 zO7nV(#>xV7=}tX*90`Apujr~`MrkOrV3-D=b}IY&$8dil_M_FzmfcJHd#vT?i3Bi;!a^ zOni(m(U&-v)?$mwHKKKo^OGF~LrC5uuWBRBq<*0aj#R{wdNk@JF_c^Cl?OpD+y!pEz#8}FEpQbFp=2LTg?c0O3vk< zGks5}qsZp1DqW@(#A?mqpc$W0TblfdSY=fbZ_K<&a~Rs1B(#j2BvD<`%=JwfDTfN? zHW9+FLPv^!yDXK%WRNzN2+#u~Nlb04miQOLN(4LWYQFAtEO!aCKP0h=smruqVidxu z;cI2ls)EW-FU^#zMT~)*X!hS~eVQRCtH>mcXfcKbG8!J*M72sB;_R>$A%wLpym=v1 z_C!DQZuZP@(a)-ro_N@mvbp`^0CgOjt0ibT%yJ2Q;B|i{dc2k;Gc%<^CFxZj*hFkx zhUTNjV6Nqy50ssOQpC27;*i%`mv3~Qz#w>F9ZPo-*eWS#=pA0u6}U{38DLoYu9T7w zZaAC~V8PlGwkV5UVgCtykfS(~pd z#MK$eeIg~MT=#9jT|Io$ezTHzqHrdQ5VV81RN?j%1zV83e3eP~sw z13YVVctFEC*P|-7K}yr8Qw0`rFfXCZJas$e2+E{%ik#-yg%AOwQKy8@RB5z}ol;5D z>W)wJh*d<8GSj|!5eEG3$#t#C<4``5DEah$p(t&rZ)-lheR!+%6`DU=Q zq*l$i^0lCqoGHidy@RB3!jjy6KVHdEe)78}H07=zeFY=ZqiCOCQbQ;5#k@!#EKVO| z%0v4;|IARyKO34zNb-T)G12-vJpS+0%7D5o>65yu=ubnL_7-ebAD}p&r6t+_aK*Dg z`KmO>2|g-CKh^HLAxGRzk~7>{YLD}lR#;)IzQA*bW}`a!NzEZ|hc>=L^ba7LbH_v3 zwI8P9#L%|+?s!wp6#5)jUpJ6Aq}|mPuHJ5d!N`bo`fh76`re>^`U(fGhr#<^K1mBP|&9((_gA*+w6l9#i2i~@U>IRI5m;4 zQO{lDgf%r83m?_i_Uj=LH`aW|9SbXlti#`x9t8?V6!f^lpBOn?Oxr&5M1mmox$8Xeg44W@A|t}+4E!uuqnYF08ve>S|v{W9wPTC?^CA}gfl zl6s{DaB9(yJs0*XV597bt0jf1M~xGH7~-7*2@u!~x_*IB_`lp$y;p$!?f+kzwWCPz ztDIYLwt;tZ*$(RsC3}{oIA69-@-2?BV|Hz%b+;4ySqPa_S)DNl_%6rc>P~CACj0;V zE1&H!=?*e|9-u|SZn)!J3+U0rlI%+E_>|({U2BwmfeNK+dzas`f1hiztVqcm7yAxn z%tI_Y1@l^hB|VxbT0APRYlsEdr%0Mlul}OhMp?m+$HSc#0DK$UG5@sWmH+?z*WoF9NLVb@GEiMtPJh#WlRRs>`}gzo#$lOz;#!UT z!6rBFuAd%Uyt?)l`+2pBC3nV#{K~v6AfD|P*NDAZFD|iRNN-5Xr1v!J)!>x)YAVTY zNO2MD*UL4JFSdW??E-)%7Zd-0;d0%GbFeXyQnbH5Nn=q#q);cwGWNQ|zA^n5R`)NY z4{LJ#`|8+M^S_rAY&id3x&J+C-9K4}|94_RZV{$3Kgj(-)33b7lNAGC#5BQXPk9}| zb|(L%{FZYK0&fajU9NY04}IsO#kM~hYbx`~H2Q^aU7U9dc=DEQ>~);}#D-Ptel7>{c8x4p6KJ8Z%bZ!mi?NVeYsGP;S`9%wWd zss|Zuji9(agiS$l0^U}**_8(k2O7kt^k@)xkq0+)_|OHiU_lB?{?>NW<~Hv%ptmFc z<|u(%;YQU4P<35klj={7^qVyFb6omBMkxY{M%oT%ASuQak}(U}pbi4*ipH(yqBP*< zVL!*CKOg2GS$^{;ZuL|0;OE&;y%e`s)` zNYHHE={@Bt=e;OH*`O+UQM<8g>~kpS4HCjW0ysc7H?UI#26fGNYjUHzTZc$ysyc?kZf-Ss&+1i-@Pi8un% z))U9bi$CWnt;xR|f1@`QH-mODlk4dFS^j)qfr5|#nmq5{S56yU64!eMe0^Cz3KCSG zd(Ak?uN#gPnz(|R%pn1^){}0xEh1l@3;czg_fQevF$`UARKTQUM$825pM6Vd$$-s-CswU zT$~E`^c263C#HIMPal|?h;|NRp@F(@BU)Cb;hK+I!1KU{G!d`IyD7>J0%5vg`ZFJe z1|{srOGYJbyI4$mfX3+J)%u_Zz@uHb#V%&>XDmBFA9Dea4D^Lt#sOQ0)yo$k;-}d2 zoc-E!kM}F+%QbI`f=|p`zU`sUB zlEi)Y=F-bGeCR4@x``Zn{@F;b*yaqkp)PByO08ighCu>dyXD<_bWsrW=W^tXna{2F z?fp7P|FBPZZS_4-kM zY}Qn7#F}(ZUL;RCO!s(H*rjt+1N?kzU+g-bR8Az{?k6*F$KhttQf*Pr13h;j19_i) zd_Kbu*G4wbAI#Bb7RxYqBnsvL@PmB?Ljk~%ui6*w$wPV!3AgGFi18U;@a;p63faht|B62Z7M5QhxQ19^CczmpZ+hO^i7`xd#ux zjf(8KZ&eAL z+U>~Z<0NX-bPn&$&m)36G4`$`dgNQeqN1S{KZPq^!#huHXXpZtZ&~5|`nsA0$H8Yr zOzZ^y38QFhuVRpH;W-!{Ia$7gCsi~26V$!dNvY|t(=#1?gAMu~=rzi85AC>DG*!#U zZA*J)LBgrb|6JU?)DwN2ng8jrsA+#H#n~B!bh$Z?GVhN%P%K4FeZD4D&-LN`xPkXR z`y`j1neAxv-QHmI&lXDmdkt!vH?B3dS$e+q4wJVj&(_N*dA+=yux2YZ2x=h7XwHwV z76BgIi6)ollq9=2<$o{Kc+IM4PuSgn*`>5a-$lt9yRpH+L!*-MYjL9XGv8LeNpglp zPzTm8P+RL3Lltn_o|6Q72<2`CGfd{Wf#}4f!2ASO0{%SL8z)^4$>3*BpeDxsZ5YK8 zhs)w|IW{DcFVh>x1@Q-_c?05)CEyxIK+pmbYgtkvCC~k?uMEUNh-Nu#5lQn`f#!)u%_(vITK6em%|A!Mt>K-2% zsZ`q=M|aSVBRka5+}Ppi^lDlhhjf@|D`*p0fAy$4e*Fd`TKZSZuMZBKkbdkJ!JYaj z`9}X+XxB_#7nBT-Z9|=Tei76wn`APB))wWauRtu0G&vxA&*&Q|=6R2@j)NVPAeJv? z16wacY4aw1I&aAdaXmGP2SYmJ6cXCvVU#U8L($qYEEG%~C;&=iHmBsV3H5M=T^!O@ z4ujZO{pQKoq)rLlepra%f^h5DL4G*+?B2H1LIVC;f@5}!h-MVdhPp@ zlJ>B%n`(BPkf=G;LdY6SNt)*4oL8YEwUwXT8pjCx?E$8Iq;8iJ&mMLG+8gYNBi!a~x_Dq9EqNAcSU*~2jLgM@g zwp6R$IClK2;(j~}0Yr=o!l#^!+QNpG;+FSM#@?8wH_w-5S_ADFL&_JmYxh2ghCt%Z zUmXhMNJ4H$M;wl*%nbvRM$S+MErupS*(?7cCr+E5%`=x*j?$vB!iJ|0+a2z+}w2!VR;Vh7$VfM5O!hd6KucA9M7mrq^xf~Zz+Z^-Tcw) zP2FY`XO z0O#Jj{OyyAG(2Tc*E1fz&&hf7UWaT&*XZ39iNL)d6y3xF;*emi^lK0Cb+$bnsy^X= zqE;cb6PVp6^*3vMH_4Ms!JKIGKoxS3txo*3>RE#hW?0L`=^4)i-(Z^d+Gk|JSt z3~f|;i(>1d8~n>!U)p;-V7x(JcE8`ZyrE#;zzWH|1zB7D_5Iw5`b}P^1>}ob)65C( z%L>o#SVb@9Cl}8K!62h3CmsJDcu&pb{5$_vn%_{x19Jw*+KnJ*VOzDYZ5eT0z0Ih~%XM)t}UCxtl>xxI&UW(tLF0zK@yV zUDdN+>z}o3{lUbtCBq7#Qe4?wrSA0Z&bGTk%HsPq6hkG1xCXfp4^6hE?!%)WAa`FW z;Ai|87!?>OAgo_kNShlqb=Sr>NGP@mXISN`MPQP+LDu)VquCiIeOC$yljQC5(xWOm zjg{jNv#%C)SA(pni~Rc<4Qot8>@c&lDdX2d)2SI&UWc3B{xge$XeOuP%{;zFp(i6#bzD1zbWL{@@md}gJg*i6B8KMRhqc>k{?YTv9fSozf7sf=w)T|&p-F9 zctFviwY(x~B|ms~9(pa<4ie0tNl9^ElyI^a%<$b-gNHpSfz6O`?Xdv^$~ztFpvLXz z!tM(?E5oqsSK{T_3T*s*oyt*B>d5dJjjkxA3m6Z09`eTorxnzP zEksGPhycjP6|hUF2Sh%s{}+LJ*yVYv2cN%S(C+u_E3tU}4bpyWE5BL7 zD07x?l%7Crlcj?DRECyrkc5TmL2=r$15WlSDDHFlZmU&2;i{1s{$QH>Ba(rWokMQ+ zKsYgyR^5;Tl1?Rhw9hpC@XiyGie)x|eF(+9Ad?ums^E;us#}ooUn5t3o}c2FLX;|6 zjld1gv)aY%tp<4_1CQ-OUq$Re!Jge#IzsQh^j-GEgp7P1XGrZg>a501`$aa*&wPsX zo?*;JklLfp>`B^5q6G}@CL&vD%-?1ozYRdxnIwuHch^R-P}xagdiFI(F;E3QB*bfqZndJ}JH6eCJieVT}p<~iS1+TGzWnKj_L^O6PZ z`%VZUlvftJLn^7;+cg#J6Ux^SEa1k1hnNr|_OXf!Ep2}MF(g!Gj*M21L(2>N1l)Bp zh?n_^dfPLugudwa@W9K~fZubvR&3b+hbx8i?L0^Gxr87;I?43P-Un33Zk%st+cV)L$h_j3?oEig$xxBvxH{Xg%>iv2_Um0(<{zkguC$$_Z-eM2FQDB+7CI#mbrG-3C7vKQzDm0^vebi~tfRR#qTmRKZ9O1b`m6Z`uxY*@>>UjsTo@d=CHAMTqAyxxVbi%uANu{K%=xKYpMF`QktBF*W1dDqZ}4aQ2pA zQFZa#=pIrUK?wl?1pxtRkVa7vkP=ZE1nKUEQKUpdkd|)g?vn1#VHl7G=@@Ee-i^=m z{NHn~b3VN1eDJykXHV?4*R1_p_wNo#137$|K-oI8DypdiAm1z`;5%WfTQW==JxfOjql@xZy-b1|J)>O~B!dAeYbAm@YT@~sK>(xG(A&6YJq#z*F+hBDmZ%zU;Sxsrk6cY1K0_G0z4TpxYu5TwCLtabTsJc zCj|QSN=AeKc+RKBRpNFcX{)bMpeX)mSXDYIpa3m92YQMsG!hENPL1T~-bhdX8|77pRksB@m) zYn%5Ut{0oVAm=fK)a`XMXi=)NbdHvChfAYoGRvvH;9g1GBKSn7dL3a>)G(< ze`uLvufOSwjQLjWlz@Cy7g^-=1?D7f8zCA{HSTqujP-=W1L%T<<4z@{=&fr}mXeu{t{= zF82PH+UDi{a_Uv(pOY!=xZX98$-2&REzu^dpP2S1m3mxvG}O>{%7N8NN(gl(1PO7f zg0G{4Pz?wSv-^+S7Szs%fZK0_cSAQcWiQbuc77@#%vZbN3p%;JytsD(B%U~ybBBd6 z_!I8#sTf10RX2Y4TpY_A)Lz3vD3MJC>lQgiFA2Sx<1xitOp54H6xHQ|)1FVZjWl{? zyz)sn90o=?C%sUavQ#R2uP&zPCJ7kJ=4bh9g7R7ab+-DQP(}=kyS3Q7=J}%8v*o+n zrRKq!Eg=Tz8`E?z%D*3>M!=~Dg+ZGP7u6Nm{nolLOtzLgz z=JYDb)l~_lRfJO22Q=kF0Yd;ROwq2}q zcav={KAAF+0z86@FN@0764f%pfKqI1CRvxO8n?ZL&HmnL@$YuYbwWAlcaJ$3%{9+_ zCNZb1#_S#!zdLj^@>sO$ zIBoy3ju4@WDb{O z2Ilfu#%zK@@BH_KE}F4lj3)Bb>Lw>W`vi!9ZBg57m-M$x?VhckAUWM@foKSurEYj1 zq{#Q*2CVW$Y?FoJyT0^Y2328&Hc!&^;rBmhC;7r)3_5sNn6)=CfGBgea9{)>k>fsu zoTwa@579M+5Klt5xaRTsA1~jvNxp1^{LYTm{)v+T#i1gbBNj6j7tSQ`Xi?FMrD=HE z7vSU2RO)h_+pBSM3-jdC#-Bv^Wl{9}eH7r*>D&Hr13z99p3a?NvomVEbL-wr>V@TM zztEosgfDCGHFBRHlk7BukDvdJea~{sS@Q3tw($9_S8kO~M#>O+s0W(ij@fKb+B89! zeD0roGkaOe;1V**ImhMywC`qUh2J0T?efX{ihLbG^fD@!G7T0k^zTx_Q(zjv1|&_C zJm?;8J`-QsuS(k$%<8b;P3x?}k4G(e7BoAxE4qh8&TlfnOrnf834_FUy+qIXvop(v zeo)^#HX40Q`zKIe<_=el?o*&g^5Ae}VqCe&qmhg8gVk=WMa4!`-b zZD<~Ton-jbe8q2cHdDiLG2Kg^j~Xg96+#-QNKZ^jL3KmhDD3Z4m}+a)GAiOhg9Wwm z&YN8#)QAM^uh3+E1KE$3v5XiWGPl@%Wv@0c?|25xe1t^ev2&sVg|4jENpb1Y7@P*O zHkwy5jp(j!>5>bCVs+=Sw8RiOqxBpw7x z0!T%i<|A7iB?0rBJDSzyfi+Lb-|k(0X9K#nIBd!!sine=pXhk=ek&L+wB9w3oMb4R zdU8ov4?BMS22)MPWU-`F6! zS?c^)oa4sQGX_sli(q?G;r?e-Gqa&)%}@C17(n>W_@>)he|zbxI$hnhk`+_TFcDA| z+;Q3&#Ca@1z-!3h`%uf&`;I+bhP^mfO?3FV=j0s*Eh~>MF^p$~j=Wyp?VkACorO9&ZX11Cl2(jSHHu9wvwQKRN-KmxXes##$pRp zKn*P}PV9V>`Y*qW0D->vIXiCNH!Fr@M`YMl`?pA^T4tKpls_jaiAMHckl)C^9wA`F z=K;>j+0@i(oPpHYBQ3oZeedmL9w%l8M3v_j|4yBr0J)xgS_n`Y4KT?9S}+P)o#Jnc zt6s<^q&ntFU|7hNli5dm0|_KcE4eA7WTIPP-+yZacnkQ#T~AFepH>v6QT^j-phq_9#i6$80%g=(<c8$^uFifAmu+fgoE_r>cicCD`gYMWW+Y;~&Rq+fi@dAd}Wl*!=DMF;eO^)&~v!1^;upD=`y4(%yx>4;#RgBDLdc<(IKW(~z|c{QE?s&0hQvay1cdjEN{D+60{$bnEJ6_G z+VwS5oEVszBdcNq9QE+VWAA@E9s7EVIg%eluU(AqdCtsd07%d6a_Lt}e*L2C?}$qI zq(@Zkzg*WOhN99E_r7`OI^VlpgeAbT{DLmV>!3H(q`TsCwibtsdB=RZ5qMAX0`FlB|ddASj1WSPQ9o zF|=1&x;R_5uJ5GOdGhUzbb5Kw|GwgamT&167)8$7DB4|L04zo$rzFpNW20lR^BwO% zpqfGt9q4)qQwr97`X~X}lZg}9AmN(>|HiwXXWvL6(34}?9ZAX??c>&RpNr_i7>?9L zfGh;38%dT-`DmHMmSbJkO4i}~&mE4rAnb4xh$4`%(zzFMMQ%4HG*e$lj4>?(f86Cc zu;u~F$e7ZxhqpyD`p2cyDJYB@Xdb6betJO<_S@ZM<)rJlFoVG5u;Y zwq)RwexK54H+Ax=JlN_O9P4~XPhvHN|51{83UoKVJTS2xhI+!aAdyQP+pQI*;ce^RB5)R4DF|zDft1HCmK@zFTCa^{ zBX#M9e{q$AlRXSiX5pPU@}?Ypg2!Fc;~Uv*7AintE~BL#Ac#@CLY1PwjSoj9nn4WN zQ`4pIe_6$L9)C8e9VdF%g?7n6>yaUu$)FJ{@CWJvls)XglCfs@|H5#%9LieB(w1ej z?3!|8Lr^vJ{7-@bvEw+=ho&FJ>Y`H2zU9i>*6s;U!;igZWBak=CpVpvg_EAV^*2vu zcFfhvkgYtirtI(0KMd--3DmjvAK#^WkUQ|QGBKtaO9Ud~z-16zW|h9=lpKy)^7rf) zm^z>Knty?nmYuhx)p1qME^^d=;*{j_0B}Y)WtbRK(YxivYf*z2KOGtNUXAEpt@r7l zjju0OZl4tScr>Ym;mA0H{ju1q+N-=bHS}CjQzXAE?0~`=MoSi;YtBx@uoElkC2q&% ztE5~0Y}CM}v~e+GF(%b&vMBcvos1bS2((tx2TZQX-Ug}#03(7WqIvok7V&95j<@U7 zyXs^ss#EX=Y--Q_uJ8-}37=Ef_dYpLYArXH2~_8D64N$uISSM`bgZxVc-C$lJ2H01 zBv9z=&ab(iIBFiI2d-AN1-Pw(d=|_-9o6jvd)jm!b#N`RrzH2rZ4T&S*#a{MM;Wc| zG=os2QVn>=zZe;Ga-qap4qbD73+|82-n+fU3&g1K>4zO|t=TmWrGOSRovA~r1w`k~AjXv>%dF-J?p#yx!X+GK%?3%O?}|mF*x{yj|#IniuBD zeTI68%)(38+85uBDd-Ow_#PF!Hd%=$=9{y7qdWb^CYI{b?~YjD`_tNFGt&`@QQ`L({r{&o0kFw%7 zdh!j>Kcc?B100|rgUtVy_nVv zM)ZbU-6cTb9VJA~yA!cWF2wiM^jo%81!CnyN{9lm5vEG&8jZrG95FF8x2H+W&z6Lg zF8Jo%1T>4KI=yLbs>j4)%WO%AQo}>&HyEwi5ufhMK9Q`NGTABl_!ur%b)d#6mlwupSbRqEuwkcrUsrcK~s4+`Z)aZdb zr2%}`y9X~<^A>Lj_DUEa6BN-BHy#Sx=8Rv$~;{ zspabD*IYQRh=8|S>ArBs+=5ywxNwI7tqR-Gc6?lM-xq*L zVF=TG{M6LbK(95up2XRLsrpwa2(jLBB+Sa=d}*%D`C zeMx^2*cUu*`8I{)q13pdgKhI6%<`$l!}>j^rJRor>k>s8g8SduWOXLjY%<5Qb&b`z zgtUn{d081r%!_)1Y}i9uaRXOwjx6f9!ZIXa%e5z8E<*Zo(BB%((mg!a+0=&3vG)~o zl=2=VtLg-&cfQm25ORqv5f0PP-&5B)#?E5vC5+rM@5^MgB%8fz)Pj5iNd{70m0GoC zlVgu2UdJtAUEJT|bIH2joQWmFL8CFySfYt3Z>}5=`O5P?CJDr(CvLpw6EVgXD0)K# zjRI7EVgZW1f!NJl!QTFB{x9dS|2;@6O>2t27lgXgzDMs%^J8AT+Fc1Zs)c@@xJLF? z)IXk-Off55gWH55KdN8l8E(3ft5sef50sL4&*9nD=&fA^WxaQBYQ8?`^16k&nWtuSZn zEpJBuK0^Tvl>lcTx+O>}!3jn2IC!rnsZ6`Iyh^4_~d*j4RVfr*%6cV*|& zmmRo#TNXbNWwyhvqb=)6RyT^-?p=J7V^ky+x7PLK2IEVW_>DS(S60-OZwe}24?9rm z1MGvLpI|`HhiEFb#$r%53ttHnL0FazZ;WPU!gxTYoXPMx_>I3;|D}Y$9Q0wkAfR8s zegh|O3sz%ye31iYpN8%j_$?2XPnUzD^zYRN{lB12A*``4{aQfqgxi}%1nxY(QN@&| z!;^hIfCK=H7=Z9$$AO`Rk3}~Y{iCljr{V_m#matr#7ioWm3SJp6xHQWt6z^G4m1pGLOd80 zs{*4bvv_IBTOqHl$3YrYel{l$W2?Zh7$@8gj6;<7Js&Lj1S@RV_1qNB{o!dj3p&-( zw-*%RpUw;g4S`~ZmYC-^l@bN>-;nxJSQUP{s^0op@Z#g7j0@OjWiJ9_mKfuPaCt8; zBOk;1{5D3?J^B95J7C5g=r9`uR(}?hgxdx&rrC%bMJYOA%S@NM?zl`>U7+B|1s)Xo znw?1nlogj1TTK`DMo3+9c`mg1yUEwU>@X;uGnP3%S_;=1Y4<-fVw!#rF<^3U=;LGX1DfR zcd8YUxSy^NG|j6bfokv*KH$Syf(xKOC3>Bt_j}Hv0 zmfQR5#tdlBt4q*(RSDw*x&c&`OPub)8zxb8vO~dIuWzK)t&H_Yxh?pVtW5v2egUOQ zfIXOvBA@=@cZYGGtyfoqSq_XJQ@o9@$pfI*YFZS7tY=dfDRnTT-KpO{v3c`;g`~k% zggk%uvMF9lqdO>BX;$lXt(LBlRcY5Ex3#smW0`fPX-~R}T%u?_^ zUxD=6u~3fdWeuyf3p?$3^Ii9mCnhyQ{c)+kStFi}nCdyFTh3KhjJtU4)|nOT7y~aO z3Abu z;PV^2bEV}WULYj*ccG&I){2we?$RHZ5n1#^GH+I|O!w0PWszEU?kILxH@ltCc=$kYpvK$_%dU~nm-dbOX?p=l44rG!($4qV}QjF z_1v889-a-k&3Z6-Do(vsd@CT^ z?DhmVRnwnvDMIgcFM1w3{=NGErRhLVrTN(mgz>&y_*YxAwwoJ8HHcmY;M?jb4AgXw zr)#05V^ziQpjk0x9h1I`!J8$1mtJ=Y+k~$>kOhc?&Wes1F!E0M!hqs&15D!dj51r- z{~6B_CY}CEtSNr#uM)p=rG3x%siC3uoJfeF-&J&K&c)_%^MoSjKNs|>xm)jshng{5hFn#jimE?M^c0LZESMZ=)^rUheB=V5ASK&C#G!N|2iJ?I+ zlVr5*Ta`nm`j+Tc+B|Gw@Mn4;=<_vIV(wn>Y`8J+ME^M)kzhQVtT@|bK&LINn5VCO z{kh0Knte48n=rn*V_QDlA{jMUNmB#RT=a7pk_ha8yM$6|)}f^pmvSPG>X ze7bk<F@s8QA~Z)HF*LDtZ72It=32$NMFRT-KpZ#rco+Am4<)ze@OA&Ab}Q5Y4<) zczMs|t2kL1Cziq*hzk_>;QUi00M-?s+StO*{R})#s?P6;fJMT7_X?=hQo@#=f4Oi< z9{bFjy;tOHZrd*F$pcT?e`nY3|7qFre^{OTci2DF0Pq&@cO?SvrvI`A{;PZbUyGa4 zWXQjV^~oh;0afOs8P7whxV0-+DsKGmzplv$;Q#&e%ZR+tl0AYISKR8dthy6`QJI+0L#1odE5W{OG@u! z8AktIWL~po_noRWl<5(qIaA9VMZ>=lY#?XNj* zy_%M6kqjDQ7jyT*vulB)hj;zS5+g2Adv1+~VoRTYSJ{+3@Ak>TXL!@t1$Qg)MHryV zIY5m@PF8-t7D(H`wBRS%yydE3jk8ujpVsstK@P)jUwFL`E9TNQK9B&C@OJ_l&D5n4jFx(E8MGwDYlwdI&z zj1!m>aNjOE^>YOyL%nsmR2hmIAE-Ri*FiKF`FR};=6nE!dl#rZ*xns7iBk8lhMl*l zX7QZ~U34hV!uP_`U!NdQ0aHN)h+V&}9-cN3VI|^zGrt}w+c!-n57f$#LdKyp{Z)g) zt3kI+hpZP;s0Hj=$-!~Yz5w=z{cIK9YUk(K`FXWLz@mn0K_G1fb2=a}IE~&maFYVA z;CqQBm>J`wDA4|>7L7sMq5a63ugYoHUPKgIr*amXKPoXx6L7sl0 z=?)_Fx-?JX(hldAALiZlr3VpCVFd;TpkiVcvJZDlD#5gqQ8&81Uu^x|#8dW6{V>As zO*86e!6O=w2!0EgB8GbF9h!6y`L}e4AU+fMmNb2VfxT*V(7QYgLVW$pxt=mQU)JrW zRhl$M76R&=lJ+nk@gFjxJNHyPgFK1#*5uiQSTkP; zv4ShB#G3Er?fwKuP7yA53~F#Vh;$<_GcoFNm&lL#-66g2apu|~Xk=v1OFs3bpx9EO z>#K!=E4+$B6gi&*R_$L}nvRqm5HLHtIM!X`vck?e0e= zr72-r1kx$e^iqk4PV{TYp!C?OTxo$;C2P$dro`hnZ-L%2N+5kfh?S>N)q5&^hclmY zo(MMY?R4bphS1ZMOD?sNUjF)9Y+mc>`p;@^CtTgvskAxSj}BAR)@i#6aRGsa$+X?6v;+5T9ot!cu|bU+G*+NapooZvOPg7C{da#vT%6%;x0d(qUs_6< zTx(yCvd{3H&I>dS9&dIc%3|M&6)s{iwLk9XVQk(7tuimI_$He7nhy@EF0mfTUXC*( z|Ii}bnobgLu2 zmcZbt5iDNHlk*~s1kh=t&;X>KahScCj(qYB(es9nl+Cq)k&{(()dM)Kb1%Q}V68#3 zEg|GHA$t8|iZ#RHvb6g*YyOlkp}2VimOF}3S4RbVXF;Ugpt0EN12WuDbXD`uF{X6w zl%`9mc~7gec&p;sMiRAS=0(Aphpig+Y=AY0tuK|vB`Pxz-Pl$U%|2f}Ei#5;lYA3e z7|*%Qt)w{*y<2caf1eDXmufsml8A8m>NzzNJz{U3Ii)kGdX!ZMrT(J(;Prs7foTHo z;`_2?x3Tp%;yAA=g;t-f*J9AmfsE03-gH_*d9_8IcJlR#!}U97W4;^dIV<7f+81_* zopBFxV}wcr!{RC8|B)V3>}@e{dj?Bl1ky2 z{wlOHp`H|_B*I->6H)vEFyx-z*;TO&w?x(mvbz%ZrKC$1I%`(B?`gJNY$^3p8@w@K zd&(ej67EL6U9ray+Dg3e7|HD9I3Tu!%(b*^}1<#3o* zHNb1ps=0WJDk^?;an35q5Bu!tTL{uW3q(@;U8WnPN8?YK+wotq&rueTz|K4bz?Daf z!CREE)pL$t%AFYJ%x(ia+7UtwkI0bl0bqy8Pc&!$QVfb1HGzuV`xB&QA;L8KUmT9gB`MgZW7O?v#_a6>uvELh*)GMt@f^T=}hx(X$_Is>ejO+KvP9$4UhdpHoWcLj5%N(>J~`06fd0xk+^(4 zT>wkja4=Tf~6cY>{O~VU|C26T85h2klY|BYc70f^Pg&X411w#ImABv+7 zBA#zEmG4}w0|0FQZu`r!E>yHiAKCa>8acL%l#DmxSL4=Gec&ZLd}o+E6C=@bl)UC+ zSI2reR~9Kq2oyB!dLp~;XlypooYhlxIJ#u$gB>z%B;I3CkP1~Htt}N375t>nzPdlWTz{1e73$@{jTpwWrb8k-g&fs36YlrTG`Fa(@ zP(2=q3zj&|qxBVWcztTe4(S1&kNUSX<>w$;~j@a;1v zGL2#3=yIHU30UvBb-mD{F?xhd*C7H9nXP?4S1P8H zJ<#>>Jxc1^zWzxR?X{L{ul*9!)jJc}eRGv0^AvFy%vhBMa%$6o5hV#RFIRUuM?BN# zIe{OvW(#m-irc2T1E0e4w2qMN3Dc;sV~*y%7%lpj(MyS|+y+JPxbJ&i}}$u`?-eNWGp%2Gt13_k2>`N#<~-J19e&8S;Q~*& zy+F``E{lR;7w>4v%zVUhmYk|1K@SId1OcLWcsTEI4kyUyuJ1b@B}L`1tThB5mE&rR z+>EDPu=#3T+p+fbgLy7RY7rOEanLefon=*OcuS|7I!lzD^7G9(9z5t8Im6{WS4tc( zXI_npc0&rkhLWi&2=`N@!2l!SgQr8M_j?_tJh&+y<3U+^A5pWbTIuCw2^i;b*#XY} zK1KxHvLj=&kVty-n0ma=Z;F*Ch@dBxCYmnur}q?vu}0aiCv6TlKrXFVey4W5Y{_6Q zN7Y{YEh=w)Hi;(Ob+1=9aK7HOIie9+>v#6i?OOi=VQSC2Y911sJ;EA4+czRFG;CGn z2KcStZ>kOy-lg<7{6mwj`(dr3JuU+hE8awI>K!OUbC}K7w*J}go!F%u7h(LZhh;ke z4_&znrJ7x%gU5CzZrK@N4*GO|(Soq!rPx07FLajJwU3ha{E4#n>&4j=t@o_^LX=NW z4O6&KEd;C`3_0Hdo~?vc;#^4J)1e1H)oNa!=w)-0Cgq?DPU=%Py8c|n-RDlYqie4}ipc<7KdLm>#9CLo;O^r@oBSJ>eFyd*x5V zz7L|m#f)XW23XXbxZHo8V4PY;NC-uh2RP=G7Po|FUbVj&GK+YxO|);H{IenjJM!ha z?eMQ*dpjBVz8|V-*!isUD?cZ(4DY(MnR2A56T8d-b*rxZlmJ|;4gUq#Ma1%4gOD_k zCeHPuvM_0zKlaabRpc50G`((U+oGRFqtuQ4GzF{Ll+}_97+6l;dG!HFg!w;ht8Qp%GTpLC#l;?dL9~GbO$KF$abLo3^_1?rCpAoQSvSWNQGvy1 z^|9cYE_s!efwc@lcr{hj@U*-2n6p5O&Qs$k)@};tM1NkjniH%vp}V^-OLR}mKUlTy z%Q_(OC3duZi0*}@vGRsJKhw%85_NWx5`mMcTJrvWQ5}=?4VRHdk;p%0%%v;mNmbUY z1lg4#U@hhoSjKJMImQC6-zQVJA`s!a&SnfM_9%=0Hr)`)R0x!{_X?S=R{SFDlnAGC z7{bTGoaPe$UN&w-R$A2Trup#Bld)C&Phd2_-Bg}-IXhvKKMk^{cKhq;G>uu2I&s84BG z_=EeNAbc79Th#mm-)(zsk5UN3H#muGc@dAX#O50V1Z~q3@Scip7!k;C?!(Wy`$hl6 zVawbxKkBVmdK-9yn3s#U({03*W?*q-ZHHB1b}^5)2 zvJDh3NFbtFBDR6?TCbq-HtGZzH5Y?X(l?{4TgV7woK3-TS^SlXq_iqkGJ9Tk=wjO% z#RlAg){h1`->7{Me-fblt8n;;2+;Pa7Q7o99ewG#jW;~uV$y>RSmgd;2pPoHwbC&K ztez>cYoOzg z3fq&)(RSyo7zJ(~Wly<%sUa?ND zDIFLEWd=**qd1X#ECDfGD-pMn?tBeQWf>us{~Rbr6Kj$~;78$xpruDV95Q&MVvu5V z){d`R5f60kXi;y(gS%MsgV6IFq1VLNe18VW{dA1w{Qf26NkAqVG!Dz3Mp9Jgp(DVt_ z2>~je(3c+`KU(4ZtI)cJ4JSgL^^qK6@p2Kn{wOShlpg&2hl(y2FIG-XJe?b?lT%=p=pnI4m{9<(mptN~d*?jy|LZ zP$|0%iSkT4TeJrzNA4mj)~S*+*pF)0PsfUC(D}|gxjznT^+R1peu$>VrL-My+7W^H zCxz#~n4pnq==p7c4AkK`gRxb@u)?3HuG>H)%5}!RT^S!L%ng<|M-vSS?|V{gig+u# z??#WKyiWhXEIvJWLJbHC>Rn>y7x*m~hto6U)_-E|? z9jR-~_MfM&^;Ul$w~~@T{mvED`Hf$wNn4#1bud9nsdqD1gjF_BkoEoxu-ou7 zDT-R39UY4+2|}mpjz@$4pll6)#=aBNjC?0%nEU=JdG327%GEs;X3Lp!*@XOp0fEG% zsO=Ivg%{!03SHqgbvu3-H}%6-Y^B~_HW5~Td=XZB#`*8_&g$xi%Zx!0r~(5a1Pp@$ zzd$NRkabvE1zW4Jx#{%b!g>&6^#XFYA@tIL=hWzj!wU!aK*Bk&s8U@2Fu`H*V{f4> zDM!)e%9vubylfy#gKfRV;h5-p_HGRLg|gN!}bE z_u+7JW9;)k*&B@i2EvAJ@EBd`_fPrD{V*T?oWg3vy2(t3m5W6Wdsced{Kw7YW?y$P z-X3D$B-QuF;9#^H^(B2<|d1y^YtZy*uj+ z5-}7WC^w4EI&`;3fdmKE%}Fbnv6{V+4`=)Nw{dUGyTVe5R-OIQeI)BjF^j*>-4tEn zCwVKMDR&jYBn*rtRx4-mnOgp<2(hieMah95=kFcQmfo>q1O+DU|=AZSwEYq*M68G87lv7azJ!mxB zK*>d=w~E9;8wg&ZskkFNw+2W=u6|agls90|m|H1JM*&{qY(By|HdXIDN#?!k)}J;l zKAzXvTY%*tyQ`dDfjBxLR3=r@eQ_gFHW9O9b-aMQn(}Nx zqe5FiagO?7zkx6-*pq8SJxCI?L!PfIfnvW{_|5>Gn|Nn79>3Gj}FjOSYL6f zz?p4NJI6@AS$Ehs>NBn5GP$y>_y{y#lIDh<^}*}2TS}@x;V2mq`5GE6jZ0JGMMl8h z==^8q7*hk9OHo~(8i4)gWF85-R`*PyY3t%6t0Ij#(*62YL=p4%H0mpS&f;!{qb@=zP&3wfourvyEgW7ni|d^K%=QQAB+OFq#pKzxkzCrwP?D(^9Bv(kPaAQV+l zeBm$%Xl_epRt)>{X?bqm7C?YqJ68s1Pah}p>u$r=&uuV5`OrZFaNo>MeE_e&jo7>W zPPYIUlD0ko*D|z9dedEMNjBBTu79#OF<`8UF!!mRT@!lqLYAzlaev-7p|Ec4MK%hI z2&TlJ@{2#-DAQW=(epmQZ{yF;9U6!~@U@V%ztb=b(rW}!@i!QfP-i{CdYARvr<~Bk zB&=3k2EYsX2wkI+nh~?J;FUypJ2QVjdxWA7%0cZ4R;^eaT@zM? zNl(E&%*FP5pm8NC7Fsi=Fi6!JA#M9mP@(h0s!$E5_j1op!F2E;w3}2(dHE*3OvTDh zvzL1MlO+>Ng;Q7whnDw&>5Z#il|*D`A3pDHz10yP>EpE8-JbhL_%d8Vw%v1PCzH|B z!_v}lQg^NTQYB9e81ejyPExGO^}Q%gqXJUe=vjf2Aw&SG>9Cm{eSphJLB$RP+@cTV zsW&I2u%ZgrAp?r5=N&hN9Ct458f-kTbRt9_B$W0)Vr6H62icLx%Kd3{A}}w#W2EPq z2ei1+ds#cmw3VA8gG`1I$OO<_W$z;*j$7uz6kn^6a@*5tb!MS3xcD?O)T*TD22eII zD|AHP?071RaT%7h5S>L|VFvt36?PLOL=zgj?{3yN=aWKy_r;2w;>zwk{t0OrA3$;UlX9KtSo zPUtg~o`2i%cZUw)eR)bkc5$RXM2 zs-}Y%)wj#ONkQ?T&Vf({rk8A++Rikt^fL`^y?twB0f(2*jk^R9n7Z|9;CA6V)6R=R z!{^5(AD0xw%&AQ+Au^Q{ze96n*6jRGD6Y}(*QGyEnY_mvq;RajtFB1n4f<{p2JJs@ zKrUiYKyko8p;-awuXfnQG_c-bZ$@YOr zW87pakd_58)gh3@`hvpOg+~GWm~)}&%9*uq(aH~Z{5D9%SupjNyKkvpa#DBjdfW$i zee4L^htoYNE2Koq7c_`u&HK57a@!NpuA1f6bYc_L0NBO#c3rR|x;-}-q`f2Vwi_1^ zv2ikPBRpr`od}dpd6@=J7g~!foFy&#&{}_`by5pO(7X`brrj5_nnG&t_-*B@d>?AM z-0hCVm0=o(-coH?jg_txdmuYm&9k_UAvM24ZU$KdLwUr>n1ZrQHW#MntUxkZpvf(o zjV4;$C$ld1v2eA$In{+3jHR+Vyx6X}6lYzDv zWW@x1m;g;>ciZ$3J)ZBliAODhWO_a`#@MWrh6-Z=v=`tSK=K9I0PEO5@7mKhYuUIA zgOpN@df$za<;+WdUGph+H_55IHL}gzj7#h)Q-?k*nZUBatw0SP!4FCv#bqxXaBvv= zW<+VHKwFkgFYVHt^X7mv;<>#uysn{-JbIh{J0r6s5Sc~6YCq&|lLB(_SMo;=-ydZ@ z2i$@H74WDPpecveU7Xe=)pV{8PhqD0Kt==Fjc?>$CF9~$RY4Q|dqCHHDQ6`}+PbOa zd|pr!|VB!R_h%$-2idaW2IMIpGBF z_KH!cOR~rvC-YFmjYi(mc1x;=GnBClu;8-y0cuk(rC7$o=IlHZiAc4JE zfCCRY0A0GI%GjwEFa0q2H72x|D~)&*yrL1}yF(jje|$z!yI?m}3%E&~Pi`eo`=r*i zl8o@P*mg0I9X5{dg~g~}{YqGC(5(4h+bVmYOLZjA5cguT!eu;n@Ajx{6Veh8}+O4SbY~g6z z^ISWfnaav06`$@-^H72f2h+D|j9X7He)p{f!cIyCu6qv=er6X7w{&mKpM(`&S5Rmx zEf{~HIqY}I)Jwp*ji|IWT{`FXTlRWk@+R0@lkP#T=(#)0C!25YUK zoFv4)L1*Q&EeC3$5GLfTH3y38h#qyZlS}~p!Df9h|L}$jbAlb)6JAiHa4*65ayeA< zco`wADOF+WBXTqsvI|bzMc@W+40aN09G9(PWU#c!+=7<~zE$nL^0>t?E`VN`%e&bY zUVcAR*7J0B3OH-pbFl`z{qz;c4dAhw85ftS>p^B8?{`zT7R*)Ad z4QIvdkf>4nZ(E!yT%A`=#iBd_@wrAUcI%5N@OB?eS~-6zJn^#i87KftZ?i<0FlyfM z7#6-F=5pDocP_AM`(+~gMGDYP>l#V#p2UUP^2#|)9B8$HpTg~PHIJSiaH3)A1R~e( z%-Myo)@yhhWSR0=We^p4Kn#0I_=x~A(GPDe!1QCSX=R*Bz#f7xCBm%D?8E!voIK4~hqIF_fc4BweOB^a-f#YZT;`qvi@Y0hrcVM?NmCC9jq1 zvGuIvzBAAh#-!VLX+cU0Agv`O4aLmB%-{90PWA`$s2XLY+A&0mhZ<TulzXfpdmx{EBP;>;XV}S3;_m5yIE`zc_mfs4Ba!-TU6OQeprS0!m0DDGj2e zf`W8PH%LnEElMcT-AF3kozfB;>F)0CIBWYn|M$G#cg7jtIo}u#2jaf>-D}M?uQ{*Z zxp3Ns2Ohc8v)$BE2;p!z)?MxGXgl3m0Gryg_dP`;-^VltnoVL=LRSFJ14+^`o&&x-5%6 z6bHlogx;r3CNd_v!rj$O(S+Y<%32VG;879ruvw&R-_VIf<8tD;Y)f&H8fx#pc>MGg zR5#K)G2cX=9Zf!(jCA1qd--|;2t>APRJrmK?uvkcj{=I(euQhzR#)LNPAKv?&u!)V zlH>RLJTHaahOiKsiDTT`>E^Om$ME?!6CBsM=8R_pDt{FD>!F#SkG|^Wt>0z&XniyM z7Wc~ut8#9=U&)J~-?jLd6uuxfi|Fi03Taj>9JqsN>4GbPR%6*t{G;@c94R-?IibG1 z?!=%mfZ5QroItMEc~k7k4(+Bi3l1$WhTGDQH>{rLuihEsGH0`N&TEqBsPWzeY8Br3 z7=Iv>!6dCoNz+UqPj?V5A{~Oy zgJg8-Uz^C&W{aytDv1o`ze(+R`N&&AvnlUlpE1?6(Ok5!UV=MUP}utY+C9@cV9Y+SYC z(eTz#dT}5o><$<4ft)5N;$-VDre?d|f!=;#QmBU`hZxTu9=f*(Yc}ceVY*Cf<_(C& zC->QdI0w|eMQRJ08`=AQ?Nqnkt1{uc$;})8`@p&^0FWWun3s#&-m^A*(hHKkEsp+0 zEP(Fak;ynmGOe!OO`<~OchfU;aV?1JV9VEfl6 z3+gj|-OX?Cp_GoWIHi_&M-}^6l7q=@;v8Bj9;&2DuYC+LmINm}yyn;Tjg6-W(7X#GoXG)XpQo)>Okk7$n7=IDlf`n9VthEOHPz$kyrWN zf3=?pCdL=DTQdvniJ-!{)xWHCvq3a<&02h`{>2#341U0z{qxv!Eats zj%LNuyP3U=@~f@E`Iz7IBIZZRy0OT)HBsk^2*NQa59Oq_3~7mYiKz-=G3&S`Hf|DI zO^CW-*((tLM*b5UvfP}XGk$L=XE)_M%SxB|*T_p^^55k`I0MlNiTJ=Cq7{0y$vvb~ zt^B&lz?*T0cyDQQGDUBjRIRXsDVVcRhf8LLIFKQ zGq)u7(U_cugq`VeaVZ#U<-Bp!#;38L_*Wy*xECg?>0j;dAQ6y04z=%)d2|G0F^dZN9tUz`d4J&PevFR&yxwwF1H2z28 zOaje^0{1AIssNZae*aJH+gP9GSMX=AF?-+o6Y8-ZG*U zPR<)N8eQo+Q`(Y}UFBu=fO-L}WL_cdjryvL!)`kP{Y!E#<0{Bj9J?V(mrW9Fyz2qI zk6uj2r)deu+lE4%3@ga`Ime%0*QW|fd#B5+O3m(t1%#QK8LeF4-P@iVcBzz~+|Iy<{Z&nsD+GKhn zuIpTE=>A?>f0BUv2S$A9pAYUD|Ad?_R=ZwyomThMm@X?OFsn^Nvc+1JD)OSPkumcy3ni56&$@{59cwmjvNoUJRinD zEZO^EA{%n=rmI7u7xcvsLkfNNv?kAfdDtqjcjM}rfs$#>Z7pbF3WRH3=zd>I-L1Qc zi`afH(h&=R8miAm{z9H?1CX-A9snTp)o?Sv2Lcdiz7g){x1U`9rBS?|Csi8FT%Nmi z+DZ;jpm*T?;PA-n3vsJrM;ER2S5nccyX&_l8Y0P zLe$d_VnBM^HIHGBKzc_)=f_m)JW!RyK1OPVZAWFn!h`qCgE8kr8YX)X5J%}s17GEu zAPAZ{g=vtbx1obsZRlwdEE$G}z{2CiFc-hKc+e)wOSfICD%4{GA3t->h;h3-Oc8xo zN>rOis^NLQsXrs7{P8~izzv2E{oOn}_ay3lhk=OO&H`1gZ0KsRZ#$3t=}7V&NSUgTPo=~(u*=IS^*t(yTf1hhgPCR6GAQ(xuf8evUba;us`)*-kaqnP} zk;Uoi?T1J#pVPqo4_gy=nvPFM%N!GaN{I;_ep^=U=7Q<@cl?+J3m+Wlu`*l6uO?2H z)pRR#gyQ+v)0q4u4w_eux5u&k^Ds@j0x-6vM}KYK_CHRSk9}~@e*u+Z?BjQZ4UO=M z<={IzVc@Em+`US}dt~tC9;yMr;7FXp^Fw05UGjtT6VlPf4mk$jqg9#;vBNN z`PO=H)dsLk32>D>Upg~D;m?XHUGK}{t3NILp#GK2NA$+n>q=z?MT|F2X>^KYq_E@# zoRy}a!a=PjbN(ewVI`a%j(UNMQ@@&4l5G-iM7R{LIIG0@5o@i|NyE>sERtTS(X%(x zOk^DjdX}D!C;P8}F0@AIM@UCB=y6WKTI+Ans+Go>Eq;;~NcvvZx8Mq;N>a*VR1C!8 zXsk{ABMf_~^^7`Co9aAg)V%(3;*w>W*2__l{^iD(8Iq;d?xt;f@$hs;#fK}Wcu;p` z*bmmXuf||98oe(vF5k~D-A!4LOdrDTGYw_~w)#i~`>3DamJC+&B`zl~&f~(~+qcr8 zOX5opt=H@HS%~Eu_BMVBy+lrn##}ayGJQW?QGlW!{q1>16T4gmZODIpMKKU({YfYh z74*K`fDSW7QPL^Uv!NfN|Mj8U(3%4L4AqJal=8nDT>TZCQHu1{0oX*Z8f^yXz>M8# zf%5!|yAx#XtmPDm5A5Ttj@E5WFhE;E|zdDU+qZ6D{dph=0I&VT}xN!1g%V`Lj28ka*Lz*{Zdu3G=|ui{+M0L{c8AQL?;MUMb_(^tq3FLp zo!}~?gy%zs|LD)4lHjk1Kad33Ucnlwx38R0>Z0PGTN>!jP5AXpx%EJNV_p&MC^17a zoNu|w7j@8A)1ovuPP>KGj;GQRS7>bl3$ z^wi^bICg05kwB&GR3l2BWB^cFCA&doQ37i?_**9bG+4qoVo2L{m7yb;CJYpkPnJSB z?CI+jBxP|=cb5*PQAzi{%e;bLv8$!WYdpy%Y(r1F5-&e36g1^M)*2S?XeHl{|MtK` zWp;#}7WkziixO}OeieeTH0EHd)@se|!`v6b45I`RNMxtsT25YIHRM3us%$hE7>W{g zL_g{8w^%4Q2l;}A!$kMJf0b1^BVOk%WXkxUl663ZN&lqtHFNGA!L1K!8pxmM;4ORQ zLztxT1_80%Q_7go&B`A*)^-+V;-CF|-go?i7^<23N)_?@;76)8&J_Cg?5wYD1Rljx z`rKu38LjOaF>TW7UnO11S8b=sl$Vc~^remW9da4hL|w%dC2`E2m53;kXhwF{_b-dM z9+VtRg0;(J|6Y3C)cdySl*Km+2|vs6%~z^b8mGgtGib4Uo^tRXN7(nnbZFX0^hCRmz8kYZ2JfBhBMJ0J2I-RV;@|5@v%w6 zPwCY zaGrX4-(zUSa16J<@A9{{Zt3}wauRs&8;ZoK!Bx}MP-rXYm!Frtb}HTZ<)1<6LJU1{ z90))$Rvt_wN%ybkoeP{9fl5bBtYZncZ4ZrX4|y=A9F*s2N6B1!tbC6mxvG6_mh@AJ zir`s~%W^H5Fd-S&QVQ|%_d6mh$uS)d{aJ`7JiYG?`8{J=ym8XpQ@T}kc{AZS&JjfA ze}z$DBm$P&-&3v#e-c0{g?c>0Ug zkWJyX>*X+W-JK|^Sgq^M^)MbjjpEaU5yRX*C&G(*Y(zN(G4W{N1R@g}<(RNW49I&#Qq@=Xe-aND3XbJ#S`K4haz z@|m>JTYX&Zq+Nx9=}@DlQm|oFF-wr{A@%Jk-A#lV<%GPK1^@NM@TXudlOB^*M`|yL zlK_hn$IOJIxBmMT2{#kShq~s2>IH%C@ST49VgNi=RbWl3dl6Mv03DA}o~)MXQ2bo)?ZC74Pl)#8QDIZ8%k^Dwo?G0Z~U* z0?*Dm2T?HIDf>@vS1#8p;-+pQuhECY7^cHSBzlaHPeAfgQ+QsGSLN(iDDF$Y0W`KOIvu~FG?WnCUe%yG2l4Qxq_CcnCLM$=Ul_WR2 zN=6u!Aipp>af3Grqu1;jc~0WQb<%mi2Xs3RCKp5LJOe}Tcl;DY5#Q;!>-@`uA-qSy z1@D3A)6y!Kk=id}ZTCM1W2$QQ-m%b5;&m0nWafeV-K!+GICtcNVNiz~ZD($o)^5Ve zIM*GBux??77=c?*MJ$$AIuN*7?09oR?ai^!dt}-=XG@W~=iy=)bA1J8^jt=y$9nGH zr|A{sw}N*m8BCKA&C^46RYJs+_V#ZJLtF4_rB!bWiI=cL*u8KkBlq^Ft3X=m)p$mpx+~w(C5rx+TdsN9M|b zLhLwmI4~1jZqt}`59)7C2@VQ*_X;kE7%TfOVTB92DJIA~ka)YX5u0FnaHod-6aF+= z7e|UZ5;3e^3}9&2N(vq+4qKDXqGc=)S`1biVvM!?;``u}`&niGNS*zcy2Dv?O3;B7SymUH$5t zPMlzlVO@m7(;@XaP2zD9IKz7QI>@JN-ogP|abOX^fy?k|DExO8=qI;7sQ{=t5GNgude79O;khHtWm2$361iC#dhk1BeMC{$y z^v4q}=l<%Y3g=e+Sr;dKk^Los$GPSIUd9?4_R0$?7_?cg;fZ`okzkdD0L z@t3-|dQwX8aJ&b8U2r!xok-4@Mfz(4{d9gQ1xj@xq?<0kwR;t<%%#FcUyR^}E6*D+Y+za?`G#EfF8UMo^YpGi;B8oQ7e65_ER->R)LL8C4X?z(zsf%rwHM(}F` znd7%asE({V9AW^$ZGkZm4LF8w&0#n5J|FTX^Q@Qnkv6;RpWvwWv#e^)Pqr3Z^*$IZ$4t{va(oq-3|ZoGeKh3WabQ3U%qqexj2(HEu#eG zSl=?-rhs+pQfp54wVj1DDS27z^L;BGbUoqWL4*F3e7ZLsi@yoh4NIZ++K8zy4Le2W z!#3NVV7H|{M@@F>=505Jx^p-=L?v@_54SXJJWy@m7FZ3z3QFl<=xC~MzCFqL=!wLy z`Yvp-EgBoh&@X$;qBt-LBG&Zfd7S-;hN)Nw>Z*c=;q%<)_#=%P*~aD)txoQ%70o?CSWcT_N zN=UjXkq_k%I%bko%v{BrLO*&8ge%rfaygIwc(mo>Dp)V&+_y!wlDqupo6b6Hpy6u0 z8d>sp9C1R&@=G*Q3voP|R~LR5%ZGuOtjblipR+x_L{G$VXdprMc)#EP$dCcqvLx~f zqB1D39iyS~Qycd2BkGI~^}gY?LGPO6qe(pK9jqNQ5_x~jZfksk_4+_JDyWY&>2Bhy zhu&U{k3!1WcZICc1r#~bohSFRnQb zE3C}=AvK@W$3s=pbRgPyPD5pB-33-MEuq*D=UWojjKgrv)a{r9rpOFTwW|Fd_;atP zzaVM-eOVt_8OxWK&xwD`)xizgbcW^xx)o){$l#Bo+mB^UL<^;7NFjpzb}wy3Z_7sE zrf?i?R!dc}t{U!TaUGV3OG5U@1svYuM3_owDmdiO<$b%)h*_{5R&y##@V(rRhnnC&1ZXJ7+$&Ypg2 ztV5YjEEfy1x#$i^zjP9I9bR$5&6-0D%@1U0>d-^y_Wn{awa;7$ zOiJ$FN9i?_$)8+-XmqL0Li+3Wj9q<1IKGHI@7q-dx-zo?%Mp%nY}6dPAYA<>xp4Mv zXz)0%$U-nxemwF)TPZ~7CCns)fls@qqkh{MUWSh@yNBt6Mk(#IN&hOJ7>WsLF}Cb* z4a&vWGxb>N3bM=QIxG`+sj)aAoI^us42)u-&kTyz3aFRJ71mL_KP38dpIv3U*p)eZ z?6se3d*p&d9u?KZdbYlqgA&*lfQeL z33;}aqf*b+9UGSejGi4X?|d^Qi zIYGo2{f47nx<}iim``WAHdlbHDv{MwUfuzVkTPCv3VSp@(fy?KNSSJ0XMqYkrN-HD z^M8b#3MyHZsA#spQ=gyvT3p8_#YxeNMHu+DrG!N_a7n;xAS@(z$sptZR(@wY&~Dm_cre zjRV5jsZ7YizoAKM3`97fk$K(y-Hq9`vjCRLs%IX%Em5)`|Gb(Pw?zn6){Zk)h4d^$ z8R&L$`M%Kaie3dva+v@t(r?#jx2%2J1TtXRC6*8)+}b!)aD2c;O!56%0bPnxBPy{| zWun)hNEq`X;GD&){}~-KSDVxJc)}zW=;Kn0x%8u0BE{l+;eRxdwS*=K{jlN!Sua*k z^n;62|H-0-SS$E7WiAHv(KLBPScF(>>DqA^=KFni+jZ?_t<~!X+Zt|Y)Otp%va(is z?^YsKhc!w*PK8?_o(FZuW|prP8Adrg(41*)V8?f2dg<@f5|n4^C?6Nd!b@VCJ8U#; z3?ofHdt2Z`bIzwCvCorZ#HJ^POnB97-1@loj`w3jG?qSrVyo>eSg@#%@nq$P!n9C< zR$+y5*H_+7upeeT}E&^{k^4!{cie@i35%Dif2?eohbgvnp! zuj1`>Vxx?WzI2&rC{*&SCEC>N4x9CcG^Uahy)5B~lui5+_pmjHt)=R7>DaZjczj&L z=bXo2ikQQ;xYcra`qR1sesK#XpNPBYS4vngds(nNT7TW11t#KH2GSO9xt*fJj758nl*lJD+;09%+*& zun;r5BT0w!CBMiXW3r6+R_b;x+Gk5O+|>I_rOr}m%QN@jzDkSho&9ACL)2y3J&k=b zUwiki1l6sRoZXyf_WNg7J|`S@TaqHfy>0%Y_Y%`TzN?!TN)$Y9-Vqk@vC=kKdy~6O z25G*OymV5AqK~PXqWh;46S34jqjBpOo6opOecs?_PY9DI#L_E0b{wUW`B}-EA>gEcsiS^MACBd-Fmm`HX}wj0Z`0dMIm$-(ob3l3JSew7LfxEksmnM}2iQmA-?C^* zxY{Xx8?(b;L|XYm67ABlU37^l(f0DQUZ};eK$Y5Xip}HwJK3PR8rAhB5Mi08}#}(0x8gf1pEl#}w#K7$lpk{El&0H;S zQ^j+sqb?jFP%7$y)18>~Uo8XV+<_87TtZUu*TKs?7|gyufRX{+y#8tY0{M58QyS`U z!3Y0wOZ!h69;J4mBJ;o6$KNfqf}voRRYQ5HA=8TG=oETml@;F5ML8xs98)oz3v36{mvyd5jWk_`6s z@tR!F1620;BNxF-o^$M623Y+fVL2^>sFNM%TsTojtDsH%2Df$QLbPU(%<%p>NH1ob z>slq#V?4=m1)z==*c6+G|45&0#8EM%I zG7j<6#FLpX9UvF-=))x6#hOo_BM8mnQjeWm%aPLMs9cz4PSRdOxWi>-etg{3`B;7) zt8kpi__2(Wi2m||U!@f7@zrr{4054WcRKoIm4{-{d0{n!2iBpCxXrZvF{|*MfA8_e z0`zqA)U1QRcjNV0c|Izc?tFFGqnGJ<fegnd>9_iwaQ`sq7_eZn##I!w!6Rn8eqHQ zBvZaxYqd?h4tq7U?J+jhK}V$<%2GKI+PHs5+~aRj82_N{w@G21KizyjIs3nlO#&sP zx?ZbsHa&QrlZe*8;Ksmku3G>%e^O*MG-jB)kO!X{Op&O+IFHKYXx{F0)MYE3p>*jE z0c{q{1G2&@pf3MveYqTshsEaT{A@fYN#l}!nu{N^Vo^mi?_m4~my|LF;`n;{5?nam zPb?}zRL|tEhgQKUf3+R9im?9ayE@UAQ zo+;!hyYm5Xe;T^3c3e8q#6I~_E{shl_ zy^v*e7iXwl;P{?s)k91guiF6JRKN`*HU9G(t=iM=m>J*1B%vQO4MYp*QTHgTFV;Gx zI$N%G_zX3jc>}Gx?>X+ndNF?n-^=ae=9qMIw0V~+5ieS%8}!Ow z{62acUYC$aNbMrTp<--&FW2xZxBJ>it^b_& z69|oRQNRY*oLV}~TVW)QBrUQuPtF-%av(N84i^E!Xw|XSzC7TMKrdz+;i$rhujG3{ zbXtsv5LTGr+CO0fxiqjxIS0*@r!1Zmy+y}`VAhKC3F{{0V237LlXA1M#N2$;CC-kd zZ2kV~_3M0M-cqjT(I12taa%eAWzk#q`Z?D7;&{9Ifk!R}amM~+On#$h;% z6%p<@1)07Xr>LGNHF$CF9}&Mn9uKj2u_KMJ97hR-=@?CsY@gHqIA1-AXW+m-a2cd|EI&hf*dVuB1=g^*Fu+6hEOafL)_b zOQLQWa(Aa#1ZSfX2UV5;93~ig(EXIzh#`H6Pih{|Jl(&$yRMcP9xE_f%|DYjw<4>N z;rj8y{iq9xr+qk|%@lj1IY6zIuMqP!aY|6Pc?XBB>DOwdB%#uljRzpnHGD%X;uFXI z?7SA2s5zEt-^K|42z^O@TppbQv@rH1t%nQ+5jmlhLr0HC8}>8X{5PsVG4zO;jk5}b z;0_1R4>_5A1dZYaxh>XVXwEp%*CzD0a4BxQNJkUK(nw=z1k?`6o41$pOCRgs7Ea8MxM9%h#-(W5IMzO3-9RqUiS-N|791mH#Ob+2^^hbBocMBGQ*txN zZ0rOdm!|0tFFLN7bE^(7FKZNCls2a`bnrcHd5u1l-s2lEZ-n9xC)LxZBQ-o3|1)X+ zfTRa9)muT)pwzN<>{?F2){Gp1^*vIrq&O>y&#ZNptHIks1x-=k490o0Z3^8TSf@& zkI3T?&7f2Gq+`QuF1)IA@QSv`sXSF^Xv8+4&oMOLrt9Dd=>PHgv%7kbPdQrelJ}D5 zKLJ|;DYVP;2yiDxB67SiarEhfqS?troSuIo6RIL=e2#0-(NwgQ;n(lD}fbfeqA049&-c4`!wY7`ri%K_z^Wkkm-TtCQQd!Kq5_-+t_RIC2p2j_*w`I6k?}K9W;>sAVHw&lO8yqa; za_I9t5t{2%4bNTV;U=zTPs{s6^#bf1J*da`w#!7PBjr1=+kM^Xvrm=KQEXvg9`YFK zLBhrG_V@KKJ7Y7t-A^Lb&0;Xia>#Zwv0nZgNRDGd-9=JlalO0?EZrF}Q-;Y|Fn?r}rlvj+96Vu#*323A2t1U#0qQ@iwRy`p-Ul6q!l>j(1}%8O_xh6{q5T%y(~#Q>}3MPH{dV#&zbGP#89^@8Pk2``#+lw5+Vwefme~e z)_}x6-q2Z85HN@S=X?Jyn^7P9UreCEFHx0U|92nz;rkaI{=d1dKP6TGxm$JbH*-FH zIpE#fb)-kpp=c6&L*v_b$Ev2Y-Tyfd!9X3?)kTy`i)<-?-a7wwTN$-a=o2?+>S9?oY8*3u1sDs`Jx}+$N&Bxu^lz{*WyL&kw}=Vb&G9t$q75m;P35ZOx!HQ1eZ#=7(ADuzq>bTAJZ% z6m_77%b>Ld*TJpge5*RD%ng)#T1&?`h41yO>-^pACjfS~X5--mJ{yI}sd$h+f78Pi zid7(;}x(vS{1$oQ}&xCp6x5%nVeyNoWk#GB0%z zLA(XRT5g+(>6<9O{!=n&ze*J~x@k2)J4x4P&U=}n*K~tP*L%bAgb3^)O7dDH057lu z+mT&X0ev4Z&nvP*C&TrZ!s<4)hZ<_fC}_w`;SR2r?xfrS04Kkc@2Er3O`4N*;%T_68D7yA4z@Ze) z2MVUQrHG$3QC;7iSnl6;=K~cvxQf8=MR>J}9e(A%uvTdw_9s<}AF z4UfhYcF&8jz9*NG8)LvG`SPfk9iEtX4lpLPN(usutHb%at{W1B!YnR}gTucgr+ukB z;t9S40M7cr_p9Vjgz_kN{k>0AR~%JAZdbbQhmKWSUl@{J9s#hx!IXS7XSzA`9KC!z zFJ*K3!+x$|Uz$t@TlGe)2=f}=6)%c=pkck(({x3m&Hc#nDzi9c>WvPH$zvV@B>p7$ zmA7IHbx!ORFZl5V;B6O&UJ^c~t~I_AJpalZI(>2E+yRE_apLo8m1)_|@#h{XI!O+D z9Ua!y_>2h_X9xbFC|Y;Q@)k`ugKR6Bp9?d#sz|VO0GUYrxB8m-%wpxX%hqjt?v{XJnwK)3BN9?b;*& zjbY}Zo(We{2+;WEx1%37az!D?9pB_{Gmb|oz?Fwl(#Iba;_aIQbT?5jgB zn-b`ci4SZRCJCVL4K5{2m{8TdF4A9tTsQdid^o>Sy8ZsbAlXSJhpPG`V?77nB&-!l zZk}XPEc9D-Vh*6F^g|^Q(b_w`6a+uB@3rZ4Ucz25Ao}h=tA1_+e8fAXsNjnCAd$md z8#*wMd@v)YZrfHXcvh)5_f_Bpf7SZRK^Cjcb8Wg50Vnu#NkxWd)|gu^ekB3?=hfSi zQ-`-9h}htKvvgQzbw2<$)6F;Cr|;(Tf!WMo1i-!>bnj3Wox2GyY7jvC=A9?hCky@C zC8T|lo*sceBg?Wvk9ImT6Pd_A@1K#|s5pv7oI!g;gzhapxb5IZ>MkC!y|vHpe!Y`w z*vVS{&05s-e6ydB92O4Q*1^PB(5*8on{Ug}j^mSsdtUZNSFuBplyG?6(u9?1#fM#& z_mh_}FYE{IkH<`lgnMR(PWK0E+aLOuJmnoWjQlQqH1fzQ7+}0r&Js4&eOoC$=&cI< zC5Mmb`% zUTU3|6on$E%h|vH4sE}5U0}T$GW<2Soaigi#I;-nuwaYC^?z>pDoULoy*w`O(jb1s z1=6ppzYe;gQ8*nW;;PTgoI*$^#)ph^HQI(2b#Fk%5q!NbVoqiXK(l{ofh4tFYx&Z` z4S>Uy%h9sPD^>Bgic~j_Ij95}ou%}kdn7pSP;=3|NSn}DmTPAz1++96`NVwoOhg48 zQCg-PQQ}JhCL4m%eR0F}Zhf8A%eOZXN7nW_W6mPfmowBp=9lilrFFQ26U?sLmxLPb zq>6!p8wCdbWsNy~>ZzQ-L#`j9)~$)2%eCA8RVCr<{_YGh=hPm(KRI2%tv6XXeP6&B zr)3jog63{{h&Twe-2FK`d`1JG&b1Sd>uu!^EqnV(jALE%`aqM@rzy_$XZL+TmmiTt zO#O8em0Tn@8O>IQr>I_6H1WCU{zh^7G{hkK0!FZJZ89UZP_@kG4+EWpqrJ)MzVm3* z2^}=P6l1a*%V7L_v-@u;j1yqx^%~oS+{F@`|HsrQ_UQN*p zsV%};U{DFJ`n0~Ea+f#bRAT^OHMH;oj+@b!McN>}9M?`BT$Me`&Kzqfy~0uNvU%(| zC5v;?VTrQK8KmMW8i7Xra2(2G+u~|E{N-WXpOKKTUj6zfA+_VcrLHz#d5|V5&SqONXE7EiVFIj7``SPIB`>+@fmyp&2D{G%W;`&nxb z>Z3Nefp@z5r$a;C?kZRpPomH%C%0@Y3zMQM5W|Lte)Q^?$A>Qk2k>#$hWMsb~vQf4*XxTSt>jd%#k` zdt3=~DO~^6)?T^=;GL)Sx1nzle6TxZ_>qG-vrflNze}&c!!kG|#}c!3OMmDa$JUBi zDvTq@E}&8N(HQ62n@3|CIb~TP5NUOiENG-%8!6ohtUPYUHq-Oo0giBF?bP8d?#YDeo`s&c#EUJ&C~fu$q+Y(0~rh8F)+l{73X+aBLSFRrb0-XnZGyJrQGO8Xx9ywa^(Pwh7r^-LqoNswgi*B zKXx11wJ4qbauHbCl(%jF$T$HALRL2sTfO)1pJ$H_ckg$EaNgiFGx z={+u@-Lc`r$Gwz2S(s3^RlMKVY$sRV=3tYRi!`NcdDkl&7{|CE3XGsGd4^OvKZ__ioBcU6`L~-7K4I656=mURKq)3Pr#jEewiLw+Aopf$ zPtl(2yeh_7C_@vgv$GN&V)UY83R!=y-Ej&i(hJWh_zNcp#whhu31(%*>ZC79R;UXF zydhh_C?6g~oI%puOhZz9juJ^C9$q3g)^9BybB+f5%0ZpmW+cz55R+r0t%(*O|JJOn zWorUHy0&O!1u0auZ4`@@;iVPb{)%uR@aDpsyeDdAon<-kgnGhO%Bc{?x+fE6gPp{j z+JL2|J7OGI>ULpbe0bYOun%Jo26dFICPiAazZ`mn~~< zj~_o&fDGFUZ<=f)Sj<=BhFeO)sRh%kMta-)9*n%_%X`j7)bO&kDpth*=KR zRyP%F`AO7nKchQdE5lzj&JF=ByZBI*{6yjG10TH!3e6?B#7%rYchPW;r{R-HX(<6{ z4Z+CU0g9Do-4LELX)-I+ODUUDNNAK^ZbzRT#8-EKi5=TG#zI0}G&k&m%x1|){F$YO8y1hltkwDK3PC7jRB)UUgQ zTi~gT6|r_I)>gQ#}4e1;CWB!~SrjR4k*{*)wQCr1^exhOAD7wjEhpr6r zvzZuT^@Vu&xjUtsPC3?PP873~@)12v(@8(Q^hGRPpkz1qJ!2z$#*mq+c&_T}dn1oQ z19|#8BV6$>#=P_ZnxC)7sGZ@{RWiR!oc;bNv^@iB`;Lkx zq&gB!E{%Lee0h0^AMkHS*tK59#W=f4vwmAdeq)Wnt|wKiST8+ytVq_k-oh-K z$&B#TmLOSdA%hK6(ymT5@$uP&_{0s^o;wLs<#73wXJ$*=2h-pDS~glq%e{BQP*F@b z#$1MK@~7tC&-Jx^UKA`;L_A>rTFuTVqqR;gaR+*Iju!S*uNohbWXnqk9e9+PwvV>@ zV8^Hq)nnz5(Q+@<`%?1eDQ6;8sfh{!A33Ac?)zr~+;wzuVu$dpE(`?8up&Ejn_n)? zTG|?$!r#f!*Kp@fns|ESLhLTp{{G4=yI*>5C>s|t%MIx;GQk{4Ccwov%I?^iC_$&x zc-rB9DfH=N>x3%+@_NobUJx5cT1yNa?2~FFH0_B=*|)^=ufD|D5?o%EvJW%TtRnjD zclkc!*kr$*9GZN~v838jyvRT0fvjZ>y=MYTrV~8QoNBU@j+rO%F$x+bzKAiJFr(UM z8fH;5%PwP)JNz3O(u>q-IpewG<=3ob^+`W}1l__X=Vi&AhVBk8D)8YnEd8C5{Z@3# zt!B~D8yJ|O!yYS%FIdFSZ$Qhq5N%`nIVSO)4k-y4ct`OI`4YQxgWt!?quuDxsn&-XTi7y3k>&_+}m!|ur0gpVwZr_tr=$@>{8(c_*DTk*5=Y&`QfC^uRC)D>G zw&+J^g}NR2mj4ECSpvzinAEJsDL_wFbXAI+_T`g6j9kY}O!PkeHr1O)Gp|cDmpx!> z)+N?cpb3KdlCeW;_nma#rXA!5vQ#E9`!}moB-#iIi54}inJUUmJB!}hXe!INnLg~R z=&MBRLt<3P62BCBsW5*YYyVi#*+fqc^}NNLCip3s7TOp9=I+`j>z~O8$dn!?J`0J+ zyPwE@_Byi%cXi3}H#vllx5Hz9`GM5jfwJ#3*2$NB5+hxWoK)W~H^B-MVSHnOc`)gG zBxBkCh3WDQ1fGX2^27^G<|^DR55ezjifo=p6tWQOq*Mfo9Lq;YbtRF}zxS3L9drWL z@>9R&KEFUx-sJT&D#Kp8M=V>nBD3yQ&wSY6{knWgRbz^tqUW;4Ph|*$ry?@0*Z02T z&~(&15zEXHvn4QAbLWN$!sTt_%6c7XI?%+L+aA?vTwUbn4F(bUyng*g2emRAPhn-w zbREl*9ha~#Z8%$7?&F>wt%2_vnyDXk{%xKeBW5lv<)6( zc5&awFq%2r-a7oTh0kb(h>!a-r9#KMZ-xL}*D3aC^mkPOy7I15_!cHE1AYnNyDedR zimjMUsN$%G-5DoWOL0c_aDDoM*Zafoo4(G&#|5{klO@`C5TgcTsV^aeyrko*vDNNp zE?X5;YnVjC6k)uN4(fP|v;Bc(Kz^MoBd82$%sZy6P3`?h_bLy6J`DJ3FEOEaV( zA)%-UGlX=fbThPygouQ+fP!>)cO$~k4bmaqzQ=f7|NDNQ5AVC~XFcor;u>K%=geb{ zTf^J(n<492wzvOvcMR`l)oDw)VP)jxUzDX}| z{F#wM>{Gg6=jS?%W%OV8nB`B<{YCU{P`H*EVo0UX_mi|ShI0ZfpW<_tXnI`b7T(Iq z4$vR+XTo&G>m|mc8Y6zW+e>n%_nEpQdn5j$p(TM2rechtUs36T*E_$z{dKpK11cl_Akbk%TKY80fTlg%!FU-lZ|NX!JX}aJ4ut4ztnIZUJ5r-g8@PF&||9K=LEh$9r30QL0 z3k6w*$Iqw#ra5BH(!balQ)>M8v||b_|ERG3Qu@D__@5Zae{nPh=Km`_!qEGF2=?C% zVr~`8b}*YQBZ0h6SHJyp_7kQ5-OPVn#{d2pv%P;S1DF^8mID6k1!mVo{Uk1r7Z%4% zlU0Cy@#W&dh^|H}$g5^cTTb?osGJALt+)@)F0$~RFA}tC3%adkeH%PfTVlc-OfF>S zPb8>7u4$H<0{?>qm{EgoUO4t zZkb0rsvYjN_(A?FJ#=w;uwDXD zx_=u07c5yDWZIh7YMR6uD;mE!&;ni#Sg2&r-N(E}9T9^LO`pXK+ukp(eoMAF_z;Bq zqpbP)@mBRV7^%ShQBYZowNrHM(w{^^p)HJ7%R*uF^5STw|6q>zwlI(Q;o*esOez~N zd*6f=@MRCWT$}RPu3f$IRQ~%BRznyGsv$`{tmPc)24@FY zmL-NdGA&#JJ`$`X)Bf807{k?ZVGtRu@C0{Z%XOl?pCF%I66$C_UdzsZwY#0YD3c&X zO4HiN8;bkvAD{S_PU`%En6Hp3k~$W^@73+9<>}n+2Fl)!I|GH1_wt8(rOM(#<#JN|1^}L& zAfx=lM(xowaIQ~Iau(k5rqFSGRz*KS#d`a73)yN_=SP-uIEl;?=SdhgUb=B$DMiRG zt;-}?O&Pf9xy0$tT9cTUq}$ud;qJd|TNnzI?{J+R%50r?PN)|`Y~%H(q7FiiT(4FJ0vlDc`IoFgb`y}6UM${GZ-YkJLB;6 zCu5Ss34ffseY$(2nmF zI#$^=U_boboOYj6t#H{7)pY;G*YrR2pbCaoYeP}^Y7lVO*zJo!`G0=TqtC$SG4o}- zqYZXsb3;qE1mj8MrFy--3b`AChk95`Iw}%jxG)@P@8sF-< zD;FbI>$7fbc^8}XUcZSMiox31^Y^&Yn_G=fb@b|gG#ET=G6*OQrWm8+A#*=k&BKnQnSl5!FIrN!>yAnFi+SzT9utw_5Hj45Ga%6 z+|+KS5DNWs|64+&U$j66LZ?uy>TDVmJTep{%V;D#T`fWz*&1poXLn`>1d#G?wy7e5 z3V5F-IpR%z{6urKh^<7s#**FH!9mJ%!Be#6~zE4vn@UXoMMojTlT%{%7FdH-=aIDRe28#+tTZQ z&Q{c^xnb+Ql0bPn#Rp=~;_J|;>W%cNeyGkD7lo5iYx?Nceb2ptGz=Bc^s3d8H#;F; z-9I@rcV)mYsNi}nC=WM2LBmC7EHtkI+hg9Sq^aS=i{z17$cCcAJSC{Kg_(~L`4M-9p0tDOf_<1?k7tDzN%_-0~Jj+iH<)4T6$ zvk%Ii;h{>%tYoIJqp}O#6~UxKuMax@6>l3&ja_`qQ=|8!4au`87*-d^OaPt0OD?2o z!|OxW%YQzDk%su{XhaW_l0I18j99|YegXuER#u`xssN(zX*uST?d0P@LX&pQ`$F*W z(Sr}mKXUF5W9g~;Y45SL-dP~_9eyEC^kk#rflsZ)9)#7!C|T#e<|*#Pj)Ov6^hP#& zybIShdqcMVtmn>Z6>b!E1A@xXtH`ul;UQ=lKW5lY^sQJQ0S@ZwT7O8V@U#xhGSRnkrjxpN*@S%!68<=mENkZ2Z=HP#d!}9m-dGw3&J^ri<6F}yf zc6Y-BR2^?d%NG(FZtv(~fw9^gAc+hD#^OTj`z`TCoJ<65VoB#P(=vB3sCS=gOe`yWALUfHg>PIXCDOIQrv z@!Bz>@s9|hsnnK%fv?$#&g1tn?!X(GV#P`IBtkYNuR*K6^@WUyZ1!R$0?U*Fa_iqX z2Tt*JQ?wRzOH>{j>(*)7P|v&3Xv~a45J#$R>!R&P_`vr^-V3_K5S4pde#iDPhkf6d z1vmlpna>MNYOburS*q507Wt(qhs|bL=czp6K4egsQrzCOB*|BIN>pM2Yp_Vh?D}kg zeK#KoLzbOq%scmWaFcc8O1V%DUM4$=q+U$!E>*EVR=$n7!>X6x5QS8e4Vf4_G4<|Y z0S}4m9wcmTTsXl2eo`Bh!%gD-w?YJYEgk-QpVKFCr2tjJh8PMK&J-#o1Y#C|d_r=9w53O+g|Qk>Aovp<8oP#Nx^LR)JmRT(YJKmVQUb zjIax2r>QyN2iXF>CMid&ii(3yz{ymgdxcl?Z2nLW)e4eUz{oRE3QsllS#xxe(Kc@}G zxX+GZH^A4Y@ymmxxdAySMRr(&x4pEKQvxz*EVhKI*mDhg@~zL1(&u7be201H3Asur z_EUrIzoWaac-^m!j73~0zGbc86 zy5P1k05;JJp-%)X1+TC>Jii~iP@!|9@8l9^r*0;esP$NPJ`_jldCsUUviJ@navpf- zyRVz2L8R+^=A~!FPJR1^TP&(m8VxA+Lu++>X)?~oATa@XBPHuT9 zST%ww0~X5h+SZWnFz z0JVk1Gw&LF+RHXz?M>Ku-BEtfqo)7xCK6hHg0#9*z<2JR`(aw|I%ofA zwWci%GiH@xje|P=8nH5b3(fll6iS@FU1f?S%GT_#Z3_zitz$shnsZG!@J6R`7SZvw z0|!rI7=v4Dj^S^rNv^n z+4Vu4i+b>UP}`D7x7T^bQ}!&hm|0Wq(QuVFFMsUTdy2Y1;QsFztOk>aJU1}kfd%yS z1ae-||A7~~2L`dx;GzzOeptYG_McR4lRy4AHKtafA*3T$>r{uXdTGNZJXnm-r0nV_ zm4aPEuP&suA@}QB#Tc16PMwuZ#?~Iix1V(ciygtvbCF zH!OkvDF^rgOpgYp$2?E)p~eRpH%i6ppbu7t!uBs755xup;S@m;3#WVXgR`SOI0?aG z>W8+^Eh}Wy9F4Xvt>gzatGVv1g#j@H=&1}VO{zo{N>y~)a>ApD2jL6>frB#?1N))` z99mJK)nP$G{DcT@sP1##n6N)n78@t)r3*(0QEYN|pBG^&splKWw7k(~H#p>(De#oz<}XjZTm z(^Z=Kjsq2vQa$?ZdBIN`#Vr#8u{eFOY#VQvCx=Y>UBC)2FYA5pGATilZ~WDYWICpmj?lk#lPmgK<%4p~5yTP9=s@;k;pd$$g_5^b**W++%!7oTV9 zOx8tn=n<0rdQB{GJ5v|gh*t>GqqR7^HxK%tv`4CY?+t$vsNa#u%)HV-j-_5WSZ?g* zj22Y<7oV+>qFIA7V3#?WPYGD@D+Php^dFk$bZ4x9Stg57iCLX31m0>bCFAj5zq0>e z&~m=Ev&=M1QfGLqc3ofGZnojGUk2cn|L`~X@jqRVDAHfvyG*p zMXXz?Ro`D42{*&g)!LZ(f@WeR8U>EW=m=z5oT*HkMg?s-6V@zPImf=z$}DdGG61xS zYCVnvuSSF&R|fW}%K>W}gzH7L?bMxZtrtLM{k6p~J@v$habhUSQoZ}$v6m2yMh8AVL6zqRX!+)utv6b z1X(xlaMM?m(b6je_EQP)YNjkyF^e?|6t+JpR^Kp%tqgG6cw{qSGmP6c6a73uu>EZ` z$Ax|$X#s`d;0!qkO#>oM?jA8T5L>GGHGtWZSfC)-Th$PddWkJ{eqn~=_JPiAkqk7- z;5B@F0>7_Q4>%B}t(t%kN&@&QW2R5?&-uGB(Au==FzvRCc_uV*Py}=k<{~xrg{ICf zgiA`?3eC^;nG2*)TtC?bv^V@Ch9-%uWu`>}%ybuswq(`XtFY*lYnW#2sZqaWxK-A>p5cxx5D6=>Zj zel$s*h`W9W5a?j3A*XTTiE>cF4-BnX9FQSV$+sRY&^MQV`F2ml&J9CtuiUl+*?P7! zH}}H;^~4a$KAZ*&ccw)f2>*#QP0FhNur#*&e%CJc2(|-ms>i`IuIOWKzUE_MLqB>t zWFUA5*kgU}NfH-5D9w-{eFM1`B+YzNj*Hwn%eD2&UW2dK6-TWGT)h$b&>t^jN$~`T zwKF<_Qu0=f&5>8%yF2Yf0oI=Dnzft0>}$B~bJJ!76_R<0hQPU}3blT1T|?LFV6mA* zGAC2wxjIfwVKVNEz_P3|F?L+3wGJxNgb!hLJ7F(ko{Ap~Dbr6|tVt`p`1VBQD4fWn zx_=ieripE2E=sJWy$28)z-s<4w_NqWD2cyrQ*6seXM8HN1ftrE3$uwJ68faF)RGLh zLnd(Du^QaCu_X*^9@Uh5;y2m~k;i@{PaaZ+-BsF3Xu9J21sMu*eK2`roFaIe zv}Ck$i<SYq2W~b);iKMQ?6t@aFLpmA!;I3iHQbW`hjDm4GwF$aCIEewea~&k zLHQF{{na0C#MXFT5^QhT5?KkHX;I%4Z3A-WNI?d~Y5~NFL3QpqSb0l>)>2P}=K{!4 za)u_l1F3yaQ zQOBNFVPMhN{LW7nJLC}%;whcofM)%vqlM1AeyRwm<&HV|#saM(lI6fRYkwosZFjDT5ZTSAKh;}6&~siXLpV&WslwvRat#=d#YCQaEl zu&rRJXE-q`am|W@p()qfMY7Aa|9r0+&mRob)vfNAn-Ve-_T1GQMMDP4TITh?iL1^) zzSVHXOh+D+qkrF2vTJI*8QeRffy-k5Tr9mgSrB#_!#;U2HiZN9o-8SJH7y83_Gp=Zuv~X zqn!*(-I`Rq&-Sl#br~VCrKlH*M6Mal`T)9`=<6N#%@FH_!ET{!m-YsgxN(C&$}>F_Oc}rzrF`%ariK zqFAg`>gjn*m*zCJ*Rx#yjvY-Q4I|OD43`ly%z(%xJ_LrT>QzLEMmf!y&OUJKIviy9 z@V&D9v-xUuDVJE(LXc-K@SMqcOpc`7W0678OgxBMC-xsLEFRp_BkRGEI-;g(TYCd3 zv{U;@-l#Jy``cJ8XL^0&ueo3)g9$zEZ6>h2hl^N=x-2W1J(0}?o;@SofqkS3u?2@1 zf|uB;G34FfWf?s4*}9$702mdHAH@l_OI@qa&q0b4x_d(W>}=>^u^gX+Xw#gjMYD z3hT7m^_t|=v((8QlCL(eFU8gpG1CUSSAC*qY}rFGtzN&6;UTrI0KWBcqV?6P>j}sT zjSB9q^GtF}T1uU0hBiJEhs-XYGV&034IAVZWo7Mn@JUj+WHK3%A@u`qeOaE%o;nC! zeFMcVVVlFQ{O$7obhA8gU?9rL0E$B*ti;hnu`gRGqV1$Qyy|QcQ)C1+prGiY1{*Ng ze(#X%F0}`bpSo!;{mqzQL}hG`Y0oCl9!`VB%<>h2P1TGK6^I<^?K<%gV5$Tk!9UaN z=0n?5J>*!ruF7}UY646S5?_|;E(M6bEj`(iulMEdALIDsedc%OS6P1?(dI$rui0Sp z=i-P2+-L!_X+$$^7HO#L-2dDfsPH%e=TazTLU?%a@A2dD4?!BrCdk?KAGT5_O?k{q z@*+?P5`Sm2vr2G;q~n)PS-!Vaf%bxY@C|G!3g;CCHgje3l){b^1InQstkfA!bJtP` z!F9r=9$=ryoY)5{vJt269$3BaPoufHh?TN#y02$Mx1l)Lph}!qO8okA)ca5wl%bA# z7G7NG0^GCj^Gp8jYx8G)2EG~cAv)}`@zxE$FD zo(PcZBg&LK|3Cq8l@2|BshjL{OfDQL zP-D((M*?HWy1g-atnqU2e#HPHR62S=5v=G{Z9E*BSQJ|5r`wB6mX_p)sE+|>*9e1Mmclh2*D?x(AR}@NZTpYnq$npSRx)pD zYeOac>ZJ|h5-o_d4<{MJT1kb@Kdq~~h9Bm&dLB%^IaD0aS2Uvkp4Xod8av>a4)j=DH0kW}B}0H*}(U_E==6apQ~${bIWWA519wM)=4g z5@CSV@>0un%YS12a&(S&69vw>CX*tA0`o|a6>IzLf{V=ghyqsNY-v`m7$kQ-`3h1| zAm5}s&5azo0j@`|lVS5@*=Ebz8~!ltA!OG(5E)jO%Cz^|9yTzQAB{831zl%=b}Cop zJDSPI`*(lpALNc;QDzsD3#&c8$=b+mMIfeeCNZw6nY7KmPfybtfRzsA+95m=Fu6(Wa}E_fF*V2$846$2QfU;Lz)w^ zS??T8*wzO@DMXvmG`ro`Jn?%U-ahjqfu;0bz3ullY#tlYN75gN7(6T30+O|pHAp8@H2jF#R*CN@;95c5?vhkH{qKaw{in?o)ejpp8l+SYPT{>7N- zq*;ev{N?^)Gp0g_?1cL7XIsFU(I^|~fAZ!#|8C-`ArNeSTY8DP=(QvE4%yY-HGk3P zrUvsJ`R@~9$eqtL2vZp}nl3KfzC+`q{;PHQV@iU=;_DEhEGKpfxxVt2EN008#omCf z!)>`gY&T4h0W(2We-y{J*Pi3}cBv1Wr3chOFrXqc-}M11J8MTVK}RDr4xCw!g&-{F zAt8(bEl}N-gTx)b0bOY8A+w%w9AGy)m2p|BUoFerYm zaY=R0=cam@Vjslr31ZhwvTD5RRyV^YT~l(owjOcOzA|PB4i!9s9P1S?VltV)xbsJ@ z#H#1oBJr*2=s>{G>vIQGzawuM@V$mS1-0ij&yLy3t&R&BL0rjVJJMXQ4;0?6E1=^k zazD61gv`isUkUqm zk~wQHE_ssTF1Y9%Bj!$F=_^aqEPt9&eN*US6*FBS*=N(+#j<_a)ZSdrgU1mu>0<~ig-Gdi3H<|#Af{)}TRK?~(Z}Vn^i!c)Chn~=UTEU{6E2y78y4_Icr|@f z$Wy>AT3skpvL{lHwm!MKXi~c&&#CLE+R;=Y#ox#^{D|0+Ny0MWW2!NBqy-F!UW%yn zv@Mwut3(~bEU5&L%kO1F=FHf&;5MEE6>@_){PSLI)J99h34HrziDG}2X7DJH_fraZ zDu2G!e>smm(ks+?7Vv4B<24~|@cC~rFXez1&(-DcKkXWqyO!y{Sjm)}>T6|nFHH=J zDC@94J@JmHV;!-Qag z?$q(-Hf|6?W??fn-=xyIB7!Dh0}-b(!UtFkJf=h@R$O{zh3B^S>g+k;0+wvT5IQMX z)aPE2kD&m+ZZjz~uHk`JHT3}IoY5v!3-waTXJW|Uv?^PXQjg+3ycu?(Kpf+RzI2pv zbD&wuRO#K7RM-vzt2bFxi! z)KGX{8GCi$?aBP`i=?HmehVkmi*Ylz8!5Ni3G668FR?y_96#P=vOf>Z8?K#+rSYeE zV_4_D<E5-oAB}?6{aqpK)1+`0T6A#G(}L5owNphFC}{9@*5-Is5@OfWji> z?G7L?@_cEK*e#0R0%tFO4MeUg71xC0N*e=)Bf0+|$bI6u`s{7u3e=(Ni_?55J1|na z2N4DPM6_hUd7@e4hkagUe^{KDL7mz0D4Cw&&WbZJu$_=?w3z?;2DB6fO;aB7RoIEr z!I@oteNbEvNdC#iPr~)t^)oT7NT;$S?H zWNh|kHvf+GhqO@lWGb$2p64VSdRU~d9Ttq4ecPpjU-tELE;lh}1xojegku(>_!Kxv zwImrsMB^o~Au_-dMxwip-iTH8tF|g3lY)0#G57Z8VFH)^=1`+walapKXt{412H@}K zh%Ei{Ool=oJmFp+qLtdl$#8k}SDU|We2}NhViS3-^+qo0ZW)9uy|1vMyrc1DFWYFG zC4NJkKn?yG;@68vz2gIKiY=&k5Ot09)LZG7cAu)6dY!;|T_$%z{OL!5GsWqH;d&Dx zB4yTg&C+?=6fr7`Y&6Nuko!w(r&47ZuEb&#N%ZJc_psKp=DpU_fYR`}Y0V@D@g?Nr zi*GgTq3<_4<`ci+pOH zJ^Unp7Scz0+;AErkQ;lFpilO^^6_)S3=nh=?FXswl=9&$!c~+K2?QyV2KhD+{Vg0G zjLBT_BqKrM-Mt?Gbp0!1?70O^ZS1`Gs{D-U$5q)yi=G&H3&}YTqf1qsUlGj_BwRrS zao2j!ZxvoHJ&4KuR}opj2DSXbGWEGrGDPOY6(>`Y9Q?$>XD;|xpFj0=iTHzio6&!z zmLTd12lYk|*M4MdgW&lxDOsjix&2<2;wDArBMClxe%>W|vLj_CImZXjj**wX7$OYV z?H(s1K)}w?@1!ErYd~oVqxc2v_a6fMe@O=V&!=F_oBkD>Vnn@|&-#~c|8=+dhcN%2 zNKQ9upySoaO2E4}zgId)e!BbkJFxJ>m___&tN)YNfS3RCHq5`zOHWt6XGcx|=w))- z8DYP>@}skLp^f<{!CrCqR}S*u4L9_q`MXSuAYD@fBPA^J#dOmf3(;*c!P?7alKMx9HBs>)2EpG1^`ruiPFWg-RS8O`ye75=l>! z?3u4mYQ+J)pU&c{Tzu&ps`k1Tg0eIK*?s{Yk%T`GDFOK{&zXn*_L7IkQ!Y<)sV~sF z^*^y@pUDK@D_4#ilom?1leQmjdD}^Kww-KMIqjZdt)Z(QxVVrFjD!_$!De#cUExM~*O#8V2$lhKgV^W;ZS4j}p_k#+qK?(e;p9e2=Jbx?s(Pz!OGyWZ=DR?R& z;k}(^zH;1S=NbF%!Na3O=g*KT8v*M0EVp>=`>JgSXOV*a9AmH%-FhltKgUD8kydi0 z>52_r%$Fjjl7m6uhgedM3yYl@n@>kQY+)&CLvs zGGU>(>;25sE*%;;CM3ibpT7t^NN`!pe3s!vlHl!L^yhGbW#VSiEd~t&$h&&B-FPCI zYUhVE;rf`keQwl|bKtUP$82L94C~&Phi?g&=!A4l6H7Lz43;NLfti(I|M?H|pPCn! zYs@j}#;*~no@W$6zpp-m)DivLEMd3fw${%iiip;?xwMO?&PpB_MkWePa2$yA7Ejmn zI+*NV=Ed>fpK2@5TYC9tKqU~~Tv$=wduK3`gOZnfU-#Dz#it>oOr@_ugFc0@4!bOO0U(&p6;{a$Q3LKZ_qgH=DD`Y?=n zpIv;E@G5(J?`d6OYh^_+5RnUs+kkYE$kLJNbXD{OGl)lzOmG}bY+Pp&4s=McYwBIC z2i?eHgAc$Cc1y>FDId=KdB51jF8OA9VSlxs#bZn4J}3|9L?(#~acWPL1zsE}hSQFd zxEAu(&ia`~X6IkteG)hmrW7W58MI%Xvzxn=#O`%yb3rYBx(Kqd#3K(z zwv#vN&W`uTN4fiXb4y+9%@9Dz~dY6`wz7Pp{`JJ)U2!f65m1cHPM5L@$AC84}Q36<1Ks!~_~ zastBjS3uY0$QtRRs|9(v%!GRED~!CTdn8|6yQyR+lXP%7*A)DCqw+nSFwYboPj~g@ z@4C%rsNbWdFYwYGLB6@=13dohLbm7h60t1w5YQ(U4yA$}1xjvp(!4GhLn3--uKgYm z#VRb05-?Y9*qf!MT@(!0iMv}R*zmdUKfd1pQeOp&t$_QuO@$=RCO7*SIGThHrT6%U_8PVOIF}}8cPEo(_nBD$>wRc^K* zufW;OuGLEQGi=`9yS9qax^*6~-MT3Q`jmce$-~k0=PU0vpPqoM+=<4b+yl%NZeW>h z<-1DjF=niB73)Q=v8H*g84j?UX#1`Hsxla|^M*-5kR%=5#-L91*JzwC2T#CypC9sj z0=Gt0J1ON7+4vK`N6L3Od)zt{KWo7L$w&w15#{>Byu*Mdvwu=ds25k6$)g?cspD{Y z6wf@I0{%*m49QY|$d(<2u3T=UZrVm&N0Y&Ok+`Z&-{(*3^oPHbL*+BB3;XBz_;az3 zm>f8rwe#8~xe|dh-y0>}9zSMW*QW3O#w6Y8n;}bVcql}o_M0`NFbnZ9Frs^MiuWKj ziXG~DzL)o@9afg?kL(<^j`j`2qUi^3cc*Noi?J7TY+4~Z#koeLxKc?z%pEQ`AYEG4nVWRQ=??p(%2n0l%P!t3o+` z8afBhNU`L?5+a>j$~dLwG=0}_8}|Br;Gt`dX(GPwK!BZS>HMdp;ppmb>jefu5b3%( zA0bDi^En8l`)m`u6l8sD4Uz*n5Z{9`$e$Iz!qP9x-&|>tYJU@wR4V0cnN?mbPg_W{)VBE+f#aaAxJJQ7Fg za#u(%F_DNO7g_M8Lif@}o|4A9X0zo6U#SF8`iSZ|F zsg{di`xRIe-jyv?2Gtf))_R!7VulT@LhWh@5L*H83a z2X3V_iOAiW9i0thY#4}OmZ`zR=Dw9IV zl277CB1Uv2FY*{?_>xkQMZWW}SrPRv`o%O@nx`3hajH-l@sj0UvqvZ!3|Lt&f;E1rB zRtc6>-}H?i%)URVXYBIdr2GmNwy4!czP=7-5{8uPdkcJ0X&eS477YQnMsOb#KYIOs zv<|XijcwreNHGdl5qv!Iq2;p&A#FdXki^E7*$vLLfC!BQk~}x`nLDgt{8V0qI(EK2 zP9QrNR^UTd{KY`0mub{!W7LFR%`?Y>o-0M@j()*gLKHS z**dO{Ig(`=!u~sI-eN50Cs0mW*ykHKQWAs)b&gviqkXj3@|Kgj#XT-VWg};<5RG&5 z=_b=ICpaW^WGG|ig4&SXin`XP1}^q1la{!sFU8Vji6^8#QllJjgxJ&8&o`X|Kw;TS zzL%yg<7XZoRC(`qzhU2w;|7ju%lQoW4xu&L`24#T*qqqm@k+LH%sPqM;{1GTP|Qmy-a1K8r{ zvbZZPh?1fPVx_O!*&4(V1`xi{!t(NVyy@RDEz8G~Kj6-58Mt-*g&&ZkV7Yt{g9d^I z3SOPa6x8*Qgv>_RLkgx^)Rn@sIXw%!cPA&QX2z~zLF}G4MGZ>65ul=sH-sUchk}K? zZJMPkUvw1FgQSoFQOFfHF^wu>p&cBAZCO(ozGhX^$lm)Ki*}D%jTe)ulRUVNHm24? zU+{(Qm_WQ682Y82vvG#lh=&GjJC5sJaU3Q|>U zQpAJbS~!%}$0IW%wdmN4qDX!ogpZD;&iLr9KKhCN^O56%PPoL6pG#1Lp+MF22yhG< zl3WYT^~rqyhi=;lA3Acv0$SNUt+zdj3(`8ucp->=aJlOI7&8g3{^6J)4@oD1A@D^l zsz@lHDO5NI>=EMH?+inHr=Kb=97KVj^#aX@wK17Oo7vpL$)iS@fJ|CjX1=Cw`(bIxP-$Da} zyzgIop0RyGMzD>=3~`yfd=R2tOREoBrqMNV_@1N1sgGRly|;kb#Sof>IW^P`=U%5u zsZhQ3jw@Gygn?X#2EA}{?CtQ#-vFt_Yq$9~$_ZC$#Qi3XH;`egpcwAU_iS@5hOb0( zds`seU6P*?LT-Juh0`N1{@@1`9^`*=W$rPBd7qPw38Aa@ znYii&w;w25^j8@#uH7+b2*}U^*)GgkP8@IENWBx=s+=r#S=Y!|8*?b0>?-*HxgL&% zYk1k3CyyJ0_nBfzox577q+31n^R_98AWm8qu3N0Rc@GH4aS)WpKVS>(3MEWr<%nTQ zO~)5qCAiRM-CMp4(FA!3R+NLd4a-cc;ubI|$-?|~-DNyN($a1_vGod;>LBmEJ6<}F z<55VXCh*Zo!ER?TP0Xl;Daf2ry$|}Ld!evl58}7VOlyTkg2iAvp6x!rE8oKxNftmE z49z`KUU(fjwmYY{&T*YDN-Ni?D$0LZwuTFd#!|p}-C18kYOH0>Yc7f`$XWqH{&#tYbG4BSPJ3u zNormXtBw4y?1w0L$0~iYiZ^Yjtwi5t_dxa0nm7j2%g8j6=d}0~_n9{e z1OIa$Gqahp??*Ks-LO+=UM4Rotu6;Uf+m_gq`&W+;*Ezde8>|uk|&Ew9m(%5bB-K; ztQoOS1M`59lWE+LhysbRG7una%#P2HWp4^e1+7T8GjtXpg{guP#Lp6EokQ^&1_n4+ zwF_1>^V&(F(;s8G!8^$oPm*6MG)A^#9xMd&W&)z;yH_496|{t1fdYrae7xsyT2w+x zSdS!q<1~2eYb;wb?_t_(k~f_G15#j+f|sa)0DIbr&=t)2*py@DW98XU%oBqv(!j0m zLXnbvMfu&X!Q5snvY9eNsL~_4G+q5Y;{Uf=)&TR znM+yMHKBrO_iatIjXf5>r;k$i$5<8!%NFloDd*CrPF8X}wkGs%QOLF<_!GX0lHoiH zwzGi4FZK+^MQ;*3OxP8Hw=00V##q~*-g6qmW?ye5S0d%RH7UV0y&dyPU-o4sz1L84JNC0a z^4p7e$H$daXzqzXRo2- zYMF*}$;-EbG;$rGs49b$(qA>^KL|St?ku>NMa(U`atKirSSIeizz=myxjw4@L>Gl^ z$@H@tW{b*$Jq8K|+uEnW;>*1}(o;sl( ze|3(hKcYXEkaJ8(rpJbjF%LVt9O*^{KjhrpQZtjqpD2_K4wCICB|VA$49ZQyQnK)_ zA5N?MSVPbKBL0NeIDj5_&(8eL-k<735L)zx!r{)oIA>Vzz_0fp&kGlYl6PoXDO1^6+MA$B?@o?s_)v7OC*u^4`LDN4;5RwBg&7LQ+HXVlf{Cx`1uog&b~Md!*f2 zyqvU2xrlRjeA0vu79AVcx)r+a=x`Mj^On{E!4*M}K?X4Uk275S{g2~Q#Vsog_q?&R znrlR4EP2MP8CR&;dvL=+sISEFrL_61nPXjUaZ_?-D%|N=&uHwY~{qd2%^U zL=@oiM8#jr14)ExQ2R|=O#!`zK{REKs`n59y9P&;O#@!E5=BtKovP@&4Su_hX{rBR zw2J%O7xp&X0xed~mC2!t@7c6#JmRE71i~b1NyM4D{D-8R6Vr{0sPuR7q~fRAz3?8j z?2#FZ(B7wUk^78jGS|L!?%pkK$Kk_eQr7HF^Z8oXlf)-gOXmgI84~(i@Y#W+F7O!FO>HPZUh*FPwKJ9kpV9fP1q7A;T1rGxp6 zs+!V43i9tiU7;*+sD2UofZupkMtfABva4@Zb8@nyA6Q7ewTF3YcL=^|Vp}B9{Y8X= zcw|;4eR9sJs+jd!z4FM(Je3*0P%F_z3kb=+r`LJM9I-1{Vb}jOkuStr09sit!N&Nj z?-J`uy12$C1mna*#)WG4K7stigXusX7YQT(7i$dLOj6UVP|2KqS37QF;4d#${aZ_w z(b!VOt_Dl{Gkg?WaoNKA2}ID;9539Ze6Pj+QG3md_qUkPSt1xill;4r=W+L&Y6amo zUnxU~$eeK?4(YZ8$7zH0oorkwcK_Tm>hUjDL^W>`TI~aIhg4#u@63zo1+I@9$24n7 z#S@qiW>nS1zxzVHbaE{fixJ7 zb0{I5Io7@%deou%r?;=-1pF>2pLhucyGidw5d9&G>mpqb_Kka}P>O}GM*So98|9OX znu4!Gk-Qn40j;5_YJTL>JDtTQ2od&WdgJaAqaNi(9zApqpWC$vyyphydedEuaj(S> z=n!ez$@`wF6N+M2k_h_qr;DH*w>sqy!KL|;%eO5SAG3CoQpi{!U!aEXz+Lt3u+JKK zlV84jB#y1ZsFz;zO}VnvYO6&v;3aW#|BWXVB3^jPw&Y558`vp-&Vkx!^ek@O}mh}``WcM&BADs7nFF)6SSCj+wMhYUB0vm)9fOYSOngVGnDMu~huIPex{ zqxdn^lj7UeyTpOfp1;JJHKfo1-4H{0RV!cGpJzD$LvDzb0MvX4VsQ%wgLFU{30$kc zt|tHKw)ksN4u1HzTjHNz{V%Wo-^H}&)9&7<`-_+|(DJ(Y9tu0sGF%*(l1w^$3@30q z!?ZzQDovofX_k*dJA$KTKsw9jvsmQ|r`uPyYaHCCde&0HO1w(s>%CX`D1n=8+{Bbu z*Zt04>p34eZpOu>fi*k}1wYS2zG8ob_!X&x4eB&n!LhrX3yfMez!n0xxn-I~k7Bqu(R_yOmND93 ztykiJ57B&k7&xZRx}YOC^EU_OZ&6d56c({M>dcMs(`KK+6vLh-`*??J+9bmTN*TtT z5!YrC#euU2W*7dcq$CnSzT(+hUL!g}Zl&*yZTA~|Gd9C1c^~~RZ@LOeR_t~eh2GLo z_R;eA^m5QAMwHx_L7ZTs=;{AM-Ft^M^?m8$!F-5Hu>w*QY#`D*N*4sA_W+@H5~N9! zjvydS6r}emE%eZ39sPXoZ{|C5pF1=6{^oh^Kag^A&e?mfz0O|m zTKj$X=i*e@U;WADfgP#jkT=TvTbn;LNXb%;l#}cduU7-g3i5Uaqbe!OvGvJ-3-W~Y z2TwX+l#a%XDp#>Op9?0VPo8uil(P`__au37=3XRy3K^>e@khT0QIVij@8?9IO%Wxe zHuVSTDELYMjokp;n*JXF_rVg_PS7zu@iaQw=$s6f4L0PCY%Z?uW9(yex!pgfP&!v- zE@sc9@!m@iHId{oS?sS2Ft3T;YFzztC%W3Qhs1C{jMwsAF)k*77f4n0WXmlHT%&*X zBy2bCy3g~vlliO4Pfqcxf!AVFdtz76ap9A$6F#|khy9-kB$rnvoTrTp0PPSSnCr%Xsg!5x0a4|BbGyzbH!+%vN2`e!cRWAAJD zPpFF9(#;GaRy@zYG4k%_?#PogFcF{bXeBNcE>~qzNp@0}h8&n@cs&o!XV7^ewX6J_ z;HNZ&=vSSj{A*F%{zVxiBI{&tF77Oyk5JuQEP@48&YO|1;Y>1ksr6nhMyyqT0d(J` z3s7q+Ncoyi04(OUqczd5WBk&w=_uHfu-?%{e6UnEX1dfYr>(wRN|JJWB^KeexifQ* zG94RX=OVmCNH#1P)HIDXqA`Q=_YZ=M$Ew^9x_P@UB-xErSe4#^8Lx9f{v;N}FAw)o zs#m;xO;EUc4?en&K8Y!7?f?_A|Qmi-@=9A79Sr$?j zrItlf3s3LS*7(;8 zqrPDLA=qXx)iYMe>G99pjr5D@{X|&vFhLa?;|cae!xc%T2H;K;cipR?wr z)DCu_cHM4DzPYUF3M3mkS!ldgiZ7i#yg?aD9w2;Mz0ASDdCVlA-?H94g?b-#Lx&7f zMqQgO|Mjb=DZ0$*7u~4y-ix!jRNO5+uX}t;5+9V^f}G=mKwepe=KLD_{!yWi)?{}l z5_dWwOzKb@vTyrieSKYZGNYza;>GN`UEBTjbwsvw7*)083)7sMYwsx#@)>OgzK74} z`;zRHm7{v>qD1Q#Cih)LwLM*S`Y#q{P6vUJ4NQJnqHd=`_0 z*u}%VGbt8{$Pb|fzKYi>ScFcSKG8@RL?dc6JC@xHHxYHt(DmU}Fk(CB1M#Y12bavg2B+Ut zg>{%Y`_cvIt4kjsRb@n)#PI_7Aj-+{-VG9g04Ax}%8krZ+pGt7XI|-s`MrKySu#7e zdfi*<8oysbyoE73jOYGHmtcywI>I`33n2ztoiHf;TC5J+6beMVDwm}P?U|dpt2BZECD!8_eq>E~3MBi((G)!)1hSy*GM-D>u9W1ey(7{L(;93FZ4LEI zCE2NtudHMo-fbqe|=j&k<0QF4#hjNlT?A=~tV3WzVa>G-lj%Dk^y!L<6m*2QN{ zt?8Xwk&Q+cHL2M&4eyQA72+~EeiX4*4o9tX`JKB(W=u!dB2TokTu^Qssbu|CO*#X9 zsf{du;`y$x>}A}GZ$8pLv{Nya$?-&*E3ak{_m=jf_l8hc$8)=Qy0YnwvL3S1v}Ai) zqB&z?pKL3=s>=xz@Iy9>w-mnebRV_azt^Qn&x*II^VYZ>ZP$+dmU^4ac=})5ZbD|6 zS$ECsPc~7TKne^Gi{ZeADg0*fr*dil|^QQys&f=Tr5duC|78X!vuWg5q0it>goVb$ zw3FkExW7;=@=~r-{bk3k4ElW|&U~btRzgctC}^Ii(n+)JT6LP1hhvtJ_f%{Kv4g}1 z3KpuGlFP|4#b&tE+?Ir&&H0ZDxcw|!Lizk$*QXjU=g6tEqLPXDexwhyEC+Rq+%I*r zr*zXE#w+spxkn~3vTF*Tojr5fR*BHghp|YXbzR*zI?w;qZ#y`Z=bfg5Oea*c&!WLllGEM)Gg&;4#xhDnCFj`-mB%$RwJ#3>om|r zmHf_Oe0~CBvVCkeg<8Xq0^+{c-jadNa|#;xPg4{Bvh(*(^` z^%bx=y;ee#@>E!*sp#&U9-YYTly!27R>xNsc$InB;={~ZxC!bM`rZhZY!k6_7zi|KVAiY#Qy6b445du%KX+>vMjsu_3~ zQKgf{sQ#cllfd_47pWt(>IozvoAHQZ)MEQC6%vBZQP2omq{(T#H0BgSE8(&<;bLJx zqCAx>VB+HJr~J3=S3iL+wi|V7ehmv}n0Q~wZuWi~`^0OC6Mus|<4ZIr|JY-sgh7KG z4mtbObFWk7&tsuufoOQbdk}JoS1U!N;(Pn%u1cOn-(Idkh$}|dMk84*%+*OA#n@4P z<(0VU!*NPBCkynQW!P&{>*nVhje38zYTH0uQUwI{5Ej;uP8Flx zhVYUuCt~`vkcS3JN6ql-rJ=X&oYPq}co7x&>d9Cd9;HXmGOLq^J>DWYSkT0)C9r26 z=3*5}q8j(3vuam{Gjm5|*cTWz(u*y4C9$*;9Y)j2SseHg84R<_E}5qOwPfPs!a2FA z7gP=+I*VIlHHKUc*lp{mFb=(Q=u6+L znJHbwhu~*AoWMLVZuYImttCuIL@Wx7G}=vkQld|}XLK~xzP!A4?fj#Dr`?Zi$A>3> z9O+eB2^tpGgWVFv8H&@Y?!zv<8`pJ-A5+#~p6KLc%NrReSgul7{k%A)YO$eRUeI!U z|Nc%Ak4v=2oooCb+*HlqnK451ki1V*g>DSVsLS(c7~Em{Tx^hdG}B6ox?j1ytQA1? zF61>WV-H#o=X*!kd+1icm8sJYr%VUC8*7uiz0|4iWyTP!ssk|9muW?If64C3v zog>~+jb^&dOYLnr@OI~q{hcRIN0{nOFeL+|tUK;|FX(ZE!PTC#iC^Qc5ts+8#( zq6Cdt*1r1X=V{7(B47X8Eto=va(&*=XvVE}(TwtIg(cOgTTuL9k;1H64;)tNaJhU$ zxijOd<{v2Ng=9YISk0^FMAF9BJRB*AA&XvLh&Xjk$YHOI(?l*e9dW`Z5GQ9+~3zDEi(W3)F0F>du$2R zJ!!ck&6SMBYyyhW@@~VPfvR6W{PtedEp;>!HeZD~O%6F+4iRLgIs8%JDMDB*UV@JO zg*a|LA5J-w_wXFQc4A#S-z^NV1O0c1Qy67GJ`Ak02p$kTb7D=$V^7@d>S`cv(K1R$ zPEEJK=U@$R6IR-h(@I9`UXW7-ehfG1e`Z8$P=w?foQ3{G^!L}`9wi7L|8Ku09Ay0a zClKg4!ka(8Yk{2k{ROw*pU=o{68?i8A{^sK^yxqMHQ~2^&InFHc*EsK`0MvyyXAjs z@K!eAT>tWnpw)zr{xs`9+!OzF+JElH|L=_d{T)Ru@qgC;|M)eb4gYU<6v6cWo&NvZ ztp2N$;Gc$`VEX@#q5f@F|J6zGk3sl*3K3@OzcSQ6&H7Kzt$#Z0KW65?=_u=G(1X@s zsQ|!p9Q>XbT>H&ccNX`;AVI&6!I5M>hjZGg)ZkMI<)8UK(X`W$*GJD3xn{RHpPLeH z^dXJF)0%BKxjiHY(1XI#$Z+BBVc>JsJ6q~f;)i_99}8nlA+nK&pHoWp3llj)&J)^~ z7cLUr5bdFXO=nWU^1=EyF2I{H{@3{ZiEq8UBzcZeAysZVKiqBxcx1x+Tf@%@{uR6; zxVm%T7(#IJ|I1r~uO^%sgwBKu{rhk8vS?e>j9#AyJQFltzrOc>o7xuxo*Mk_ew0;| zTU0Pg2zt<#H_(b>@cI<+`vm$czWu)LmRxE<`1-dG zSydk>^WPmraBhTV5S}}Kx(ZBz-#79BJP3YY_dj%q2;bjlA)NpBL+;N>QKtCgu98+j zK0>MQHnrRObs?Eq#;axRu0q@06^Zi=zQ;=o z-xkeYpSO%R2{JA!`;5v7VM=5kGwoszFiG=)Z|WFD&|kgodhop!@MY5|KKTB!6)-?w zFKXyy`M&Se!|(Py(sj(Fy`XnHO_QmI0`Wt!RRU!F8lIQW-h zyU~i0iCyW!8+F2q!}-xeK&>&cX6k6Agu!mV|Kr8DsI#<;z7#HK&>uvPm5>l@rodX| zP!*RAAOtV8S<@ix0mQnLYyjvlZu{KCV3q9X555uJdycxb6Nv#bYkv{=T^xSh3O0sJ zJQ>v=5^k{ah?Se@dAOke-L-nsL$6-IPuhU>ckd0+v@rM_-;W3MMS9f2ZO3i4xDR2R zwIkxb6WWH}Xsjy~CPHPGwLZfsJNtB1i}rLC^Cb(R%t^Y`lkjqdPzbKL`P$6a7B%KLg=ccp@s2K%R7-ok0b0MNw<8B ze}@)Av@L?uUaSuee`+Kj?KM7J<$n4moy&=xSW!5 z)-i9o6$1qf2VsnU4!#Ldwl`+hXM8vpcQF=F#uyW})34X=H&M0M<5E2X=+82&R_Xc# zQu^CgPjEcn86ZkveX!R2bv~)S6O<>9K7-!1Yg}^`oUIxZ9Xiaf*TQjv3hY+b33~>8 z*TcD1;f*G}O?thyTzJjL$Oj)%0N-=pM)>5bK3NzbtFm}rEaVewl}9Dn9Hu>*+gAb_ zx}O9H$S*bz`CSo?JBbuge?@fsD=YG&nGE?S%0`dC8E>9djs345@wl_W^sYLktL0rV zR&>L&Qosv+Rz+;rxozg~B$y!pD0tp~@T&!C;AOthTSzRsyGk?ZIpbX%$ZAW0Db_;D z8#aNI+GJEZ#zbyP@{w*+-YSJ70yNE) zR?mi%ybTbg&F>RY1rGISAY6FtwRrDifxI4Itdgpk(ohlCcz*ILZCin}`AU7ygjCSW ziDcha;_sx2BR1@}*>3{p_)9!rwOX=TA&#T}pgyTgX*sx2cqZA{|GcTM5tI5iLg|YxO0)dbzA?^!9+&zIDaE;cMm!++!Cr8Zh06t2|KDXf}5bT6RqVB>W%oRnwMq z`?V}>m92MnUl9$HzVzN-O<(Z8^IC*w=Cv*yUx1g(F6@Jr{REGR1+|0=QODy5@sopM zO6jQtpRo8|Y4qizQ$UA*t*D~6u2@n_Kgl-h#pOP7AF(q3iu+o_jRiLP1d&wontt~@ zi+djAsQj&J4Vy^C!Wm-L8=k9> zFIO9dMrBR#k)qJ|mseL%5DUAV5`@Rj^{joR!Q-HTAI%4YUF?G|imd=2j~jBpch9L$ zRHYEElVfr^j+Gw;99!@{i6x*HbYBi-3m4jrGqyD30Ry!|K~iSNdH7=-6LQx0L|Z5__)k!PA3R z#z2_YzAU2dStpmDz_?amgZJrXzY2ol!1C^AFT7Gs&$k65>wzm-@bGLB<-ugP6XWwV z}JB9l>ANZU+}+fR204u|U4 zoaA94a60e;ApstP#>CJ(ovNA#_nH|?XHwi^EFrjQFNH#HZ0CISulyvTx(NGJ*RK|% z!zAmN(V17GvRWvgF8_#FE#gIOhm&30R=uEwb5yZoA~M%;N@oC%A4x(fjgbpZj?D@l zk3`CF`xSs4!sl7(`>S-Hbuj9Axoxvo2hHSLu+wT-ao*pHO5e$_Q}q^e_!j-WiDzM) zqi(}}A&mj>-%l%F1L?Nhm6%%iN)A(Fth4WrDvd59K8^}SXgtvNp}aF%SCP97K_0|&WFj4&z(8ehf#E(+*mp zkURC1F)+&N{hsQX7{i)|)04C8gX%ju8Enw_cU9%IEr>1IMl$2nKj!p~`WdKXP5D0M_%n0!~(*Q$}*+4(xh>)a6nict)~=2I;L@`$N% z$L2=Bj#ah7VH`n$9-(GV9cUW5;v%9y@IrBy$4?H)T1ZsH=sVm6nO7nuJfPW-6!y9}985JpY_>|R)qaBc zl6bzqLZar^>?Pr+dKi{v-ZlzL-6-|~Q0p!tpv<~djW6!6jQuPhAi=j)iKtM!2-OMW zev^RSYqI$kJY(S5UDgf*s~-2+J=&kDYqT}XKEqgml0vZoWNvJ7it8VbS9KE=5i9k)rd`#d7OG`{7&=-?7GoaE#3IX0=FlQ^xT7*3mO zl08c#XXL{_-u7n6vyDbZwpsxt-AfByq`PI40Az=~1DtwA`^c$}Hs7axyu1tA|1U00 z6+=Z>4C(m20IE*H>ZC5wb;@+Dkb)@XdIlfCXr}X3Az@h>MeiIV#qm#{hs72YU46t# z-zj*fdS;+xidv$%t8B1<8EZWpXH;7wCtjt+?yAcaID+UonT(WYaGc=JB6ReV6d{+; zo|&d&cMcnFKZ_jV-&l!G0FfqZjCh*v=dAR@R!*yI6}XMCB4$+HuMQh z<1!l$-9k36?1C&~YQn5;!z(Wk_8w#vE3y z2+fmg^xnQvZ5muRj&Btda4dz#Y~J&rKWxhzLrQf+mS<{gGY5HWTqm{Q2K=sc^fX`HSooRx`+$*NYoA78jJ%qAek;|MK3mDWR*v zN|J@uP8c$jLGR+-!3bkW4!OWs3tF^@L~k+QK|H^Y8)?68nfo5Sbclfk<}oTL46HToixqeE*w;q!87SwBePDxe6+V6JngCNBe5G=F zP^U~@O2hSy`&#gPTD^?l5$C;=zrM@AAJ=BrM)eHxj`-2w3|F959lSnc0ZN8wJ7aWL zp)Xjr#=-aH-6b_Xj&bu5Rh>4%Hkoh8)NkPDj(1GcsXv0X?A@n<93LSgQR0>8(?%w9 zc+(r?P)pQe0jFbM?I31e?$101rt8Vt!%Wb6XP#x82Oj&{cri$1j0Suc1!E+7fFPWASWWALZAmK(T$U4C{7y=YFW_7$$qn7PjG zVvx@&Xm?m7kCs3L=opwR@8Q78SV35uyy&g2Drq*07>%{o@C{5<^mpv8%~uJRRx2f| zW%+lP2Y59Ei^HX-<vr3Cw#+hmRJP-H335q)~&BbwxiAsY-|tDVqzp zl^FrklQ$3H9#|j8E&)rm5gRl=Si1g)V$%OoWJ?HJ{}<6b0Yv*9-U0yUPt;FHd;WP9 zss`e609ZhnVgCy}D3t16pg%hx19nI0Xiuu{}$SY$W}4;|00}_oqEML(W2$KLZZRpPi|IEcXg@OpV-lp*KZOa|Fl&Cw3J5I9IEhXIZ*!{Mt)Z7a^0~0brwL-e-67!-2w!} zM({=k>b@t3R?9wMqi5-a>s*ZX1p>8fD2zbkOL76Q(WZOuuNS`=`gWB#%@DvK98{eP zV2c__?}Hy??+qJ0auQW1l+h}m{fMBGR*jzfc4hc$MqZcgO6=q!l)ZsKQ}PP~z+LFS zRy`wD0|d+vpB5JNiveY=ah!px<7j~sJo#sz`03=b*YS_{l;!LzX5ib%e4Z2+Z#oI5V#dkKV5AA0xh+J zFYD|!088;Vz#8ck_z860h7S&CPoDER-fV|YuzprqK+AUxwgL_ESutTCKcsMq&$cRb zCP*dKcn+cU1l_{f*rR=qH-kN?z)(Gp=Xj?q4oIIR$_txpwLm*wXGkI2O7O&GY(#k2ymTkedP@i`G%khdsInE-UX3DmBcb@CI7)pWO% z=Fq%en(Iamt;Flet8Ot&nvv!pa;SGP0NlfNrJXE==0361Ev}}Jm`$b>=fTiBf)*DD zM6T6SSZ$*e6og=a#$oJL)|9M^HoXrQ$Ot-hRJeSJ@(ufj&Cl?Kbf*-nRQJjK?LKke zFv&alAGBa)W+)uk@5{931=n|M`vz#VFHZZO;;E)4nuaZkyOW%~lwL%A0;aiCrHjmo zG3EWKCVPWY1hlmEordz)WjCyneV+`BaVa&`YpVle@ycz6oXW^+^V1K&bKKAhB^>)S%dI|FKmhDClLqFFUFFH`Ft#h}6=SAh{5#wGX=qxO*Ny0XaGunhd_$YafE=Y%dFB}ixLuIn3kr)#02}d- z-mfxVD>G;5pWmER*;ip|YZgQ;VXd&v7T6=)fTulD3QYnwmnu5|YTJj=DB@(2Pm83% z{rJJ{st*Xt+I2jb84K$bH;k4t48d~8My>G84JqP=>7UpuIkCDq4BlcOkkhjreVLI8B0Ik^rO4a!6M=AE1)ik~)7#D6 ze*JqBKq?e#(zc4%+khv%>Qhp#lC}oiLNDLqY1EwKlq`L>H#c3@DopdyYkWk2 z1Hx3%HCDC#lBBh9A*eJ)Sm_PgmKV^oLH4V$Q?#FMt_FPWl(W!USD7iv>=Uzu5}yfbY)TuG<~a(_5vQ7+!{9;_m2$OxvQF8Uc`WCr8btJ;^(zA*afG^L3-9A z0I9DHkDq{93!qTfvo)j4>CT_wF?vkfh0u+A+l*~1?6Y{>1W1YD?IVp`X7sk0tJ0q! z^X{NC(F>194*`3)K+krySGIRnbeG;iRCw))R-6~b+*R-DZk{ea#l%iMt3|J;zHRHW zdWX(w&W)}o%c&f*x~7ncd?L*=>Typ8ll|l+O>c zOqRN163Lga%z8fPoV9U?H<9j2_~V#d{H+{15;b~xyD!4^?-xF ziUU?UZliW$0Nm%)0*dH~q|+dFtLRw%&V2zT^t-Bv+2K${GhNmdo~>%FY%n2=XCJZw zie!^6+W~O)3Vx_Hk_kmci$BB}%ndxSvbnGAopB_Cb{K#WCt+^)CRb}Ec4}BLGYue? z1{KkU@E>)3+ad~N#=`u5lCAS{PG?x8#`Q`Y0~u)~7*&aJECRPLP)dNuqfyPqy)>^Y z^(p?-=$L*I9W9?_pJFV8MMvmDb5e_cPF8$b%yFz=Ca4}gWf3g_I31In8KoA2@v?N# z=epM{Jrh=CQp>SyosfCF_vv(dTR83VvmpTj*>+eTd#^H#ll;bnwoNh#O)-VTUHd~LUX7$7vEWt?KB$p@$prqpL-gkmVdWD zFZO2JcdVqInD3fd*}_0bIVDF{A2!rtGw?)I{bQh#(;guB=LbdsdcnD6PfOd0w$Ad# zjEb9kDq$|sNwiTg_MEp)P;i7f+PfmTrI*#=Om#n_6#N_a##z0R(B=@V$Ku(Mf-NmK zYYe4bZ1;S#1yf3-jCl+aG88nYC*iJ7Y-atJ2?o}$XckK{YWhZVk;($HebVH+L2%*) z8;w&HfXC!Pcw=aEtV;Pz2d!B`I|S~@?lZ0#nB>YH`+hi33r+OIQ@P;f+I4#GodL-q zosrJE@Z+^RyqUV^>}uzzuCW%xY5Hnq^MEo)D;roTppoYvy=IF)X79o6#&`s>*{SET zYWk+Rjw8{CC5jC=d4#@|HDCD}4zSFR>=JChjEI72XT9(IVte|b3}+9dAV&G)R+gp8 z;6!=z6*=|!O+Ci72x$#&V@MdUpN1lL;Dju9LQJVuM(khBbV89t-8h{4MkC&bUtI+L zm0-1HR7a@nmQ56EL?vIMCX(Xq=kak6(`s?|3+Q}_L!jAw&}5*}_iG~2FmJaFWMcVn zLR6DFY8Rqg*g#A938+zCyD-l6)WOX8=3`z^O~hE7eW|dVFe)i@Ej15`C~;Rtr9p+N zR_jtk7f-o=6u)Q)%rS5GF%yTvyqZRJ#C6`Bgd`b3zY&+wC$N5*u{E$JqpZdVt}aq= zx`U3I>9c{LyA+|1o*EX*caBHERiM@}8O~s#W>t3~;zN;aj@n~do32g-w0G4hqF7UG z#40p!q>?3O%gXT2jZXqz@$pX(s?B2yn5_p}(glUltY%xkAaXHHk&-}$uhwHIZD!O@ zp^qw&a!cnyKC-9-f}*AJRhF<2NjhbrwSQv{*_E+;u`6JlJ>H!)gSk&i5xrOy9lnh+gv__HyYZ}RJb!r zL-M}d8y|RSw*Qrl3k}Wyq+Q93Gl_PRda!ejKwqXR9>*C*r0+Z+J!KV|B>!PXkYoG0 z`_H%Ezv#40=J5~8ICZ@FOm1M$3eA(y!|4w#ead)?+!GiFoxYwh%Q_^}%JO=s?pdZ& z@Eo_FyRUc&QKhp0So&7eic+tg8TQ70%PBI5-sSW2aOBO(ti?w4L)aP>mk@(Y-kgIF zg54C9kGx~m9jUEqJ!e4;8dZfRH&*L2+U7tozrn|vx_R?mOcN8|{B(6nBvm)=0lJ!~ zTf<6cH4Dua{j$?E>2*&Ugbwt+BER1WaP7~Jnx~rv6_f2DU|F?1{Cyjhs-0tvlet%k zU1XsP&y;&j-q@zof|(V`9HOa=A<`tWO)Gr%T1w;Vm_UR%gnum@&Gu#wXDPI!p9yu` z0yos0HVQ%A)>Y7mGxR{NHhCPDzJZAb%RD98ssF^6qM@!3Gn10XXLJ#&3Jj{Sb3C$I zK2f+YEsd|Y<^aaE-i8(Qlbe%GwVD`#mF6v!U>(`+KG~I=oVQjjIZ;zMSLb?1rs7QR@M9p5(5}y!IAKZ~jq;IdvcgdG0GkyV6z1TTz zJrwle9*sm&hJM8mj`xS2TaZ!%o#5;yAbdU#Ex;x-*v1T;?{E|c%&{+4Q0Z$|DqAqLER#+9UV2=a#OzBc^mFJ*&4qP}fyR9|r zhgMyBpTCz_M+x95VWrA2)q^a1eC=sDNQ{Z=%vSQ#$Bfz5-lmLi^w=c*te1^c1oa+->=wd6Gl3HpecByOYO#nhvts zoy;E~^N0A`Wa(sS=x1i?aixu~D%;c@Fot1Usm;oTv+fowY&YZ)RV=nYy=h=K?Fj~f zn8L@FuoU$bLa?DodKWMWos2C6Z@{j)bkch9=s_$bJ!9oZe3bQ_U+>XO|!G_?C2G zuC{0;gUSH;Q_jp*SC`dJCEz97g+7MMULZ+R8)uf|=^GlqNITC$cij09WC!0+@MOV7 z>IEHHwTHK!0_dI!EQc+-cNQNw9zbEciomkw^Lfd73NnPSOt%H|-%0}k66w#NxML-h zNlB|UZ{5r#=W8VoJN>6-4HR=#$spNg&r6=jS?1_i7aQlwgWXeUz4UYAiv&z-AR#a%6aG^@0ndGbbIWDy&2!rZ{Vh#(m+MgOv2s<0C8(h zff~?wBhlRy$;HP1AURD7OFvD|0 zFA}%9@>a*AiT(l;2@KfSJWTa;{FE|DGX&_e-|ub?$L?|rO43#sBSr&-kvXL8u20ps?E$Dw zx~8#?kzZ&xBbfdf%oU9pA*q`2!F>Z9P}Y}avz%(z>sI`Mbb6aXVXv-Z6hQc$3b!{S z(*)w@fexMP1dxv=XBPvh@`D_tH(0(e>l@Ij}V(*Z)(TX?0YVp0G=rKWA3Hv1dhynTwRu5bia zpsuN5G-VXRlrv;4L@nl3Ga<7td*}?xQAmMaRQWehmG=a1>s?}Y!{^|;$r0QK2Q>fG z_vs!!Gk55`|NbukuO)O9{)SIMeHJnJonG5a_#KX!rEwrE^;eu-z01n{x>GFt2gpX= zs{u$!z?9pJsE!L(Yf4m&xf5XM2q%vc?WV$9vhJvRdFih-B8)pGPz-08{}LN&(adipnb0wfaDs#29QQnaqw>MmYY=?fwq3 zH5*m+N6Up8rRz4ha!Wqtw>t zJ^<4qfS{Tvyb$trc)z$ zYzIX}0sLswb!nrCjt!LBg|w%Dt}|fTRbz~;!~?GZ-xS2ZxT8iWphB;s4K)GEsdCV1C*KL(esgaY24=sOY^w<8W&3+k0--ip*B%Og&WaQpU-nF>1c?JyOt;2i^bVUve4L(LZ25c~nU_PmXEjp}hWh;U^uKguO;-g0xFt)+CrL{Xpd$-NrZ)g(9unKvuV4nUO%{915#~MN#zzINPx|!X(*t4WGREzL}9oq(oJ>-y7kUCzDRte{;06h0js4=?0vN3xbXB& z)9wZk3c9rZ9`{~y3gEwU{Z=T-qL;-=69v+(d)njuRvtswPH{7*$%p-Jb$d0{&dm@Z z0PySCW(nHiPQWbh@}9DwlhAqs`UxG4c>T^w^Zajsm)j*WbFr3nYCJ3y!50%WOq;o5 zieoX5W%VqaosNoNayBQ)47qqFvg5zDIwAv^P6%?&=9?bQC;5OH8pYfo=>o{ zQ-dG%4I0K5dV^dFOu!F%_5#_=&FH%Er>WIo-f^tL0ce9VgwJ9ZP(iPM_(3l?%oLs( zNh*&_+(mC`4OJ@osWO$%XvEpRV}q$KNo4b_Rn@ksM{hxYK%UCYi1M zcJmD>uFnABz{+tW;?gEP%LEIO#`SWtbQ*5TpK7bbGJ!=iN9dh=RpLU`OyrZ9G*Cepox zi8O=C1ZTkIh4%ItK$6*Erly#&@$K0Da_Zp3t412IG=Z13gS^NOgz`(o5rBnH(Swoa z0fJM|A{W|G23Mohk(2pUCy5W&JAX<8^hjeuCYIKQtLne`lP;qm*g4}FSu?XDi$_b+ zOG@Y)1D(S%=)!W=t-3Bgzqoev7kDHNaLn1~BlN{6T4fL!EPuAu^4EgX6P zGR$r3D{fa&-yU6u=P3ZrWsC0sa1W13)gCQ2xLU178ds%u$q}x(I6-HU!@=k2sX62; zN}k@^WvYUuTsA9XW7#RP`5>s`;aIlb1M=}D{VN<@UnF%-I^NtIpbg^0}*S#0IIwQOMS32H-^9 z&m8RUet>1D<8Hk9#GE^!XSn^At5p)O_OpxvyilNulF^oy+U0)N^ZQb$?6;;N$MZk$ zLh}Tz#9NGrHOKRsK^;;@`XO3TZXrvp0f2awinjI@%OrB9pq{)0>{xsh4PdvGndvVp zNC@6@;k`D7WQDiw^LZt+>}JY_8@9x1lj;Mb2C+nn!tb*`Orxj%RKe&Cv zX}xyA?s9f9&Ix3F>+Bx5Sk3c8ke}H&j1D;UViZ$4=_lY8>X;Z8(Jcdvh4Ez=mrCL< za^t}#<1)S{9=hd6-3;#aVC_-Y#}}$)Da)RWGXGUyjgC<^kp&a5d{C1fY7G^ncyG{0 z$Sz)iGP7}wrCsfh)cX}-2xbjyN+LFkIE8QE@l}jY$lVTyLv+*#&y@&hD`fs3u(H7| z0<3&y$TzDvn5fd0BFLD%W#m}~33j7OEiTt2Ac=2I<#+pvavZ8x@?|1Lww}~9o2I_A zn|+<7!$Phohob3IM`|W<7PUW;UzX$_p0nRHr2W~?9OIJ8Q+f^>e^2QEAT$fJ(GNOM3wWKG9Z!l0iHF>V#5A( z;J)Fq3B;n|sXTF#q)DXco`dg1Iz4HFc6YQ(Ba%;Vl7vxO-|Y^KMBy;Sj=htgR#a|F zNTx^$kqK%^JF()eH`Qpil~$y@)SWV0qlg`4slLY8&aCc#X{JT|chfJYHd_+^`k2V} zQZjc^RiRpJ=$w8=yfGdfJAgv|1zijdIk0$XS>11?YiZpAaa9GogLRG{5@~Is-kDD_ z*MoLZ(U6K&5#7Pka^Q=5405_xN`#^+%O$huBwW_`6NxJG?^fC~QdDHx?&>ewLIRme zc1!x|kjLIdHrjm}SAWR_B!o4rgO;N*6cSnPU8G&j4jquGM7=Kc(4-B3k&}Rhje-<= zbk!PIt<7ADaREO2??F*@tlR}?pQtbSr_xf`)E(0En`tpFf)nGD0_^dM*1TZn`@rXz z%cz!)D|?x-YNEa!9+O;tH$Fj*rYsZpq_6rMIh|T?`-O4TS+@x?`_4T0n8W00;B zfJ!LM^`IH7xz97+2|+o$@Gc&S&bA}5i9p?jTJI~eiz4q3Q+_lzkWVbCXD3TnBF%^; z=ame#-x~0;Jks9|L>5!5BjJ^0hF!KU+mk1OD8>w3-r3G`Vcwc02xkvk2EFjsG*?pS*bB0B@q6j? z*(W6%iDV_fiR!5uYa-o<39 z_ccJ^JWN;K;})}ri!IwFAlP7wzT@ZVeu|4!SJIs`eD^`HFlLo~W^mp%Jn2Wts}(z7 z5_UXYbbo`}A?0>*Hfxszq7YpoOeXt!jZobM|1LeGPGC;w10m*~X1lf_q_C3K5SVV$ zgjH)^rBW*20D!i?ER@7OD*VVs&+DPIM`pVl38KM@TpNyhw(1xu^Vb+nbBe}(-RBCG z;i?a<({KR~y~RL$=1?ct+}jRuy$NMDqcmV)vO9VQZm8SLiCNkzd^Dh{L+*zRB~mk1 zsi|8ax|srMK5xarcW2#8>H!q)tFLu|<(sYi z#f)_a8~m#(zp;gJ6^##%7X~%jOs>wu6VW>k4oKTTuT4nh1qctd!*rq!vBS!2VLl;$siw+%v$!M!I}l~6y%*e#A}+_$v)t`~)^WSoCjyz?O! zN1-i~hwV3N*B)h&DuOY9oe>9;1B5{GF-%oy1@6blf9<^zG;5awU)$C_eE$-58gX2$ zqBTrwZt8oFJh`F8@ z#+*-@e-1bW<-Q)4N?>XvJ#`r8VgN!1u@Jvms9l%g^$Y6Ng_<9qnVOf>WR;&pF%ytg0Go%!hVjLYFBtKtL?W77RF`B%(vE63r4Q)IWP23n-wx| zPy@zv{62Y;3J8-zQUBlj(-)2Z?`$L|fP4QF1eMU+0)gybAA>JmB!tf2fQtK%AaDQx zqz+D(2C`(iK*8T%3hWrokI6#-qFe2iqvbI_SNkzbui9?CNm1GwhJ3GgzZ#>@{5Fs>NPj8(4vZcoql5ZCDkms^-0%g%%1IM8+tzLH}!_d z?s)DHm@19~Y?n(Iaz*bKT;6b;E*I+(4cb~42QAmR3c$Z`-t&Yy(ZUV5jtQ~$6Hu={ z{d+YD>Mzo8KA9m*Bx1+EP6t;2Di}euDv{S^|?c+fOtLAPQx8Ki|y(d{TEqn1`HUCqN>}CjN<}$?r$Nwj4gwSUrfK7Zq|%0>IIfw=W1snOqkP0P1L$1jcd#kKb%( zsBgv_pMdRrQ!bZ_!RFA`t12Sj#pt+<{U(atHl~4slNgRoB<-tZQqTXW?#;ug-21-& zC8eFHU7-xoM241mN|6W=Wm<-1jLcIqg$xZUgba(2dA6)YSmq%`$~==XWXM7?XZ(Fm zdtcXc-OqhL$8#LdabNdw{Qldvy_a>K=lA>$@6YS~{;)S7T;kSj=~R5+_V%8F1<&Xy za*EXf2=pnkg?8v?y8XomI)(0e{} z?5B2lF88A=QJ_EzuaE5RoE&uNHQ+S>I@O~Fnu4&r1)5@Bcc$E0ZKM62OOrSVM}Z4# z39w=8vwMEzG?TrlBSyDl3SeP|`8ANQHF3G)t3i>n0YdalX2b`kFfxxwxXrW777f_f zm_->(#>+8*`sH#T1grfDERN3_gJ z&=A)I(CT#U%u(UcK*S41#stFBhj9&0a zLWaD1bS;`SA730g5!VV&_@w77;ApMUx#HH6xjAcuS7gAA8kEx{3v$kTGz$8bX@j_P z=b>$MVP=;4MB$#?_7SK~-1-1%mZ#HV1RvJtSbzG&+K6pIvwoTeEvUMW2iyQCeYI_f zdv@BWRrm;_D)VPk@KttLycPHoliR5rWDq`|k$w^&%`B6UwD$b-@~>W2a$ug6#g}X| z=-vzchTzDJ`3S$Zv>klKp-$wYLGGfR9;AS6=dV6O#;`qeCC%n%Ve2#3`<ncX=Q2WS})U2&6qB@%3*{Pvk0Ya!b}$ z(jnMu4Un38y_+Evwht&Xp9#YimmjPGS8{F9zIFdGP!#P+LBsL0o|TvzLT`uDxAsHq z>EQzii)cH#3PgDMtMj_oE8p)s{47BdY`kc1J+zUltr?btnkFo~mObKFO=z`)|Y z^!ex_L0>^$pjR~>>Pvp)6g&~GBC2co7ISkLaOIW~Vo|^KXqB}9x3$p-irb59Bxw|_ zK@v@P(7;8+G#2TC@SAPjy+Rwms7W_+pS!Y_G&}GUZ$^k&X0+hXpCp4gWu;0V2WgHk zN+UUg3=20of4oua5)=XUqx`3cN;`tR4}!otuj?|`-|ba3og7GYLYe>iSt?aNONpZ- z{;zJpv642G(f8V&vqN*B5MkZPBu!$C{?!li^;0;we@#0!ba3};=G*MFoRITm$rdaT zcrAilevF5#%R6l9+$kPnNwUpKr&rhESrGMEyfbRTrDBLp4cpP?F<(e5hM?#Y4@wi< zotgv`N^%Wsj;*m#_8l=n5q#AiXPeuwk*KlB9o5#igOkM`>_Lfz4fmB6vQOc}bIa!? z)}DuxCeqdQpHN$R<%*ShZ*Pz`44WsQ@>M-xzS6Co`vs-ca8oVbYxQd_L;Te#+(Z@5 zWr)Niogg1T(Iu&ogm0}s?KarQU{7B*W6~}vXq(NFGD24AYiTTFTbd^`OGB97d@QG6 zgw>?TA(yX^nKgoxoMt@ne_k?DDE|SfNqwHn*W5qyQ(KijT|gUI2>6N?r*e;R&aCEB zYxRC(MzC`p;r_B+NAnLp9PYG=@Bx60Yv3{V_SMa5hQviTQuY7_z zlgT@ylr4quC_5HYKjYavn%QG5Yf!PFA9NX!eP%Dm{(fci^*roonWd|_bo~43hwpWf zcs?fe1cNC6Une^Az@Ot%PLKsnY74-vI#Wr>+kx7N?F(u@Nf?NmG${4-HPI9{Z z0H%}PcE~ilE1B<)4gDW$h(fxn{V2B;!O)7{OdD#2=aTQD!pFk9I!p%E9pk+xHlS*8 zakv1ZZ9q>62EgT@AkudL;b8Zc%je5f}<8Z=u@#&&&~Y{fEnBw?Ak*oMpK63(&+m^AcepRXoKq zPn%LrHi*M_>cok#DdkPR&{dac2V9+tA#PqTx_8JB?!OY@)=l(vEBdOsAJY|`suFn& z`|E5bhI)O1aq%Hf=I!+Ae&3q_3(BDc+%k^@wo`n@us$wPe z=eL;r-_)ZvaLIy&b?DkJRPQYBnUSa#z?znueWuCt?@ME)NgO6_Yq2N_xG3rjhDCl; zDv#=k;pCd<`&m^*q1?zOlcHfa0G1H5s*8fMs}CkaSfO2q!N<+TX0eeHhGVpk7Ro*E(NakN5HdAM`aE=IHF}=emvEr$3($vF#SjvEq5=cR!Q)j-~Zsn|I6O z(=Z|C(;B031qVLcyw+se**W!o25>FOJ4}b59eY5*E9NH6JMc*(5Wm_ze68+Bf0gKI zH4^8n0(wZ46D{$<077~J6S_2WE(T^`gL7>xx+Z(N6pyQ{<)O1A2F}SZV^3`FsXN=B zzxL5<=l7H!v$Rk~2W*+xS_~r60oToT1{AV_d#G42w;YPx7-_*rNby1Mf+!TO`?i~C ztoRioJ-I43=gUjiR%ngW>XHehQ0809IV{wI+90&fG(>#O<3AV9^k=e@NKYp!y<0)I;|-g+ zY6L|EczhnD9rN+&{^B9Op{$|&bp@-;50B_n;Pc?kr-yTxKi_%HV4MB;JmeZgZdS|F zrJITS6soIHwTT^e?9~5$_KtkZzYe(v03vhF^$E}uUpq_U%BVW$<6!`HWmGVUbAEV`TrKJ$5Td%soY0FbVR^I3sef4BH=Tsi-I#j`CiBCyPNewyBxn0d zDeuyZnj6^%lX>12X5QPi+wR%!t@2?2J%{R z^ACvG;f~q(*TI>>RL%Bz9aGkoo4eLBci5PpCDJ4(%`0|t(^;W#cgOO0tqHELmwU$D zqB+p+m{baw9CYXP;>YnQ?E{>;G&-K5zTPo7y7S{H{w-+fjgDJo;Fk2#QTk;{~3^uW^OaV`&i2KW3icd0bj@8WtS*3dmeZ? zs*Bwp^nC_3gX+37&w;ES9P|q^L7DB$Eu{+fie2+AwK(5MFB?zyFwE=ZbA@C?W+F|DUW-5N;GF}o$;D`Gr!jp3U&tmuW-kJUM}>oV?6#7J>S zxI4qJZF-L7k4TDmx9#2*@zB=X2a|6dQ|zRMe?F`P4#!XTpYP__WKTAKc5mTn^lEf^ zL@tU-2jun0U6fxn)6K%oFRPfO+~~D!-g`rQHX?yVZzsNrLG5WHox$MNh=)1TmyD?? zK1S`st4(%ip6&aP(syq@@~4QOvMv=r+9=8l<)FYkuR!{cBIB=K8rr!XZ$qd~{2o2k z&XvQBTj`EC?YJgx<8_bnbQ+Z*%Y6=wfWq=Q+#)F`%Hy~6;q}Q27Uap`vk@qp1n**>mBDi;!_u1$mPWE z>muqKAdr7BrS?=YXUTCQ6obRCJON7d#Z;Fyu?ea}u{$w|f*eY9~$q_raADx%`*ETNM zANpjS_r-#}`PWG~`sjq8;XNJb52*ABvLJ|W=hGUe`?FVlDx0#IySTqj?~r1+(~b#^ zDB4hn!5(g8$9<-Pp6cFO78oG!@;DX_7GP48t+~P(H9b~;It|{Oy=3OagoAPR0P~!u zj983qw#yP`(rvdtB5M1jiXTqraFwKx!PBxw&8pdJ*C$^2 zsCeJ9iiCs2EQ(6?P~&mqj?}CGbis>^c@k7*hozU(i9MHiq{pZaVA2ISR?TNlqO2dk zTk(gAlg-}o3*JLbsO@~hbPVdKbp_!c-&u8aQ0Kv8WjnC1@k2191Qd7NG-ft7QfGu;eoRmP zckS;%)~GrCZ5NAX7P6VqSz6KjtHi<1svV}js)#DsxX<)CHDG%(LR~}fT-qW7ehqxr z_{i+a=?#;eml{#jK{t%daF`GNu_}TI*`DKAdHS`?8q3vlKSKWKX`-;cu6e8Yn%t}1 zu&9Y0Q`8k-3R`o{FWGgserZ}0wVMDk*e}SFu5aqD1u;p>`sFtz zHr;p5rs0$_lJ^wfvNBF~I#YBqpGhIwDorI&1Wz@j?PA3(ddFanR4Y{^!mY4!JdvR~ zRfjCt{;Y+&6~mhODC96Hfc&FvyT>U|s4U>_Balq2<8AUPL1ptT3%!R*V(HpQ`c2!t z5mj^}y6obLa@Rz!q1w7E8vO!7DFLuEM#Z+E`nP)u867PRMaWXKUkfbCD^FUhHAqac z{Kej#dY}G@DwnHB-HBk;BJ2|WWxv&Jjld9fasu1E5yLiH3hY7bt@BtG2hWPz2(xL7 zI(wsLJMN0xZ3Db+XCkL7L2|5>Hd}i4T+~b8!+>8rlfu|u@mO6%gYLSN@Ph31ZEUoh zO^5YND!6;fLW_D0+zhNA85g8{$rJHw1QBOGy`1828WdKr|EILf|BWU5pAHKAALL8_ zn{E`Mtp3lM?UBFu?+;2%l>PNziNsX=!H9Kg&(9C}7*)!f`T%2&N*Q^r&}VTT1Y*$c zAs=9RhW0n*Jpc!t|EhiqUAKK9_t}3EjPEC0Tl{=}v~yNG1nO_;3b>~B*ahs0Tfl<$5Yak*N?J@!|MmZeM#fs_C6WKA=+=5^8AVz5|qgAOKXFo zj}-(vPWf&tVr~WtFHA!;XM|}5wUtf?>Yb8C;86Y)ia`+0oEBG5kdgT1jr!RLxU#E(l*6u3F&$X7lqSlkR~)}O8_Kcv1^fdG0va1JzB*R@iU*jljjKY?>% zX$ieS?tDgB(W7`kjlKbh_+YAX*n@lk5fK+)?^qWf0+Jw?KafaVSE~_%biOqiOZmq6 z+IWlGdtZv0Ll@tEo5vK}4-IZVf>R6k&MMrz@fN+u+cv~f^ZOuBmsNzXcBGDYLIMTC zUk(ki8ThQt4?P8)udLfC_c=BgT7e%e*+g8*rPV+dnnq>dhOZ!kFpT8+%gAwy-e(tR z(EC58VH_My*o1oNiAT%r3iNB3sClr5GR*Th74{l>9so(&=FK&3Nxd|_P1~y9lTKD9 zzv@mNz2*s^@1QF4kRhVlHy z3~a+VBF9%)6f}#*mQVE$OTmzw60{2!v*Wz;LkB6StbZlvR?mN+1C2ILYmJ>O*)#20 zezE}%Z%r&-+u2)AY8PG)feN-1g^=5l#o$vG60N45@K}Yq(agyD?jvAa@KW0Jbgne){d*Svbx_+(7GM{C5MDd)H#I38zELH{3oyQ} zz5xOLM5}>1$D%t7r>8(G_IVY5J{MTh#4xeg$ai$Dda;4$V{7NW0i4>(@Be7=*Y7g( z0iC^M4kOMUxAf&=!r;u?*>waTACqJQJ@(-%Bm#lhn#_Pa^z9{_TKJ)$D^YtIbh-G> zTJ`P$Ags0cL6yB|sG#qcxKH!(WOr)Tr7jQs@>K{KX=Y4?!jXjQNLG3bw@9!$$6uKM zc4-3_?qMfmY=~WgGMy!w9z}xVR=p1N_tUPQaVN@68ol##+~i_aOV4DW)VUFZF1X5D z{wO=`sy9p#>cx^!4;Mln#I%{thzeA`=6@o(U>%BGgh|sg1jiO}alGYv!CAmglk=v2 zW>kV8A-Y=P?amtIeNX9P^u6P2+j1ujpvwgnP@0Rn=FxRtMUWnF07>G&0DARswax6D zTfbGtH}Kj&=oGT_{j&dr^0%taYHNQ;mzz;h-L(few?+Slifpg(2oi~CFY)pVN9-l> zv6ttcAo6MDJKg7D$mySA~ZhilhshY z!P5oGB4cYZ1W*-Q9QG6k{8Inc8|-1KXJM_T_X;M}@AIaKU0@(sl8L!Cj3 z!L-u+U1f!jYb(;Erma-37x&;c55J7r2IqPUdKO#Eu&HN^t zxdGJdHuB@EoLXR+!#N~XKx-fq*IBi;BtVt-m^M*$)cWY{<`rGq#4^qtIhjKkf4+cW zx`@!iW*|;A-u;lslGc2j^g#@1ch6#<;*`gG>e^jA`TEEm@G_vQG@_nJX@3Y|=E`jN zL_IjIm;9O{->JYxn;bQC!bMFkcAx-44RIJP$AOIspaRi?NyB+5nO8nm^*Zr2H+{l1Za z$9g5FSB0I`XvCcsBGf5zU|~FDK)~V@wrihly)v0wyAEutTCwJ2HP$EtsR?w*5)**4 zA88UR&mf6NBHgX_%ZcRt2Q^Sdq2)Bi51^6pGrL?kGWbDv}>Lv=27>P zJ+7RZqHfvpnn+sxF90*j#RTk9&KLx4zV!5LwMMPD#y#_v9dMrO7jb0fxtTJV25R%C z0?tkp5-;RmPdcS@V38RXXsbGzzBawW5vCNG_QlXeKNBDBiJ(j0FB2K1(_NFo`M!I|?tG$%pep(mNtNtKFd=tkY1EB~fAggr zEE42zUrsf<&^hlnIbPsY(DM_@x-Hx2B~3KAtFQJZZ$@dl%D+>6fraD+t0LA3$FCC_ z!;9j%$P4p`GV@Jc1r`4sBL}Ws?yAo%J;BB2W4|F_z*6`2wim1%Bx^}bh3WaH6v_g= zGQVUu3?HXbZz=x;cWx@<f`#4>krcUdt zH+5MZN;H^4Sz;u$L38MwRSFe!1KOM(W)JG?Ha=J>oT_p@{06#Sgfer==n$=V-uTyL zuEZ>`GQYpHWEFWA75H$6Tg=vjEw-iJ(A@T0g2{*( z3q4Pky=T%?nq7XA8qm1Ll$={!w>7_9V3bz5ZxwE>B_nXQUu%g+>QpnyJofu_5b#sd#hEfQ^g)rs;LX;noZcN}a_q5hOPj`l=_M<& z3uom98HcP=*Qy*fE<{WFCIk9@X#^$Dg8hhf>GYUEln-<_-6^ zy+BqoS5Y(-V6|8&b-I>%m#^$By?ZPfvo)AEZ;ty7BE1%#LLZ11(CparU!@m6J|A*b zP}ET`EyuX8P)#G|eGir%Qv=5Jt}fP9-G04560w$E+}cl#C6aAzicK3YBn)#==y1%~ znL|FQrV1jyGaH2sH_^cF#qZG3?Y%W71P-PHJRifJ zO->a|ss5)6{mZx=aJTR==c-;n;Bx!bmmB){5zF8k+eW`Bp*#%l`pI+^b6Y1qxf8`j z?=Z(Zj_1(pP#gE^tHJ-ft)&vQ@k;iDZ@*~!t7Ijm#wTAZtac(edbU%P-Y4*66KE5g zn{t-|@bB-Ta+s6OLlJdA_PkU$_WTyn#GpJc>r|KD#!9bI{d`7fu&Az057&uB7EtM^ z$v0wHT5Hx zAic(jCn+mUbBuftOF#ODe$X4C@I+o+mymVK_ph;R`L~5kzhAa@Ruo7(>oa6rx6COy z@P}!gH2aWG8ZG1H*d3W^eY!LD^}R7kQq(hRQNKEVGAdmZOmlRyfLCqFFtGBJPU+~K zE<7v6$X55i+=6Xh{h*$n?al&!BBg;D!WYt0`?HM={vg?e!ZId_mKihD$zrqX%{M8kdl{_1x0W+=r$Uao?G3g_wZYHjAt`i@f9B zU@A*l#7$Vz+q?3VQ}2`GtFN)Yov&^(rAxauAkQb?459=zC8y?}znA#f+3j6kSfTG$ zpHm-2Xza;lBz@pIVTMS0$mg>^CbG7ZIS8w?#dT=8m{6ZNx7Ab0$bsfPH&zUF3d^ z%imfXGd;7N)U+#98uT0}b7a%Y30CWRB zEe1j^WuJgM9QL2?8Mr^cKI_M}3)0V_5T9Z9DUmwK-vC;EbV9aJSDFf}&C3u=Ya;+^ z@g*t=QeICGMEk<3n3^%GNMdGv{f+deN?9=sgb1+=d5(Ja;{ zyy6LxY#9yn8&}SspbO5aD+lh`uI*w1KD1mW=8Zto=395@>Yy>u4S(?eLU_U-MfAS8 zVn~8oe9a_obd*W>^Mn<`bz-6p1u0=S@XpO+kQe5C-54lOfDxZf`+ zY|nRza6UaFxwY_-P-S%2kA84v_P@qE8(!`Oc=kO8f^-{N1Sk9gzjrq82_~Fr@a0c& zOH4L7?K9ABQs05{jVsYkP7k+&JU@_GVB958%yy&&ZhC_gG24de6H4@;Zj-7)#UvyL zHFzM;oAPFoFU6%n6cUR$zllgndk$~pH*ewq?>x8X((ZCeZGU!Da{0AQk>P(#)Kq^2 zFIWwTnJ1xV1aD0PPcF-z&l^$J}K%cz`*6xc>;2EO_e?C1bb${RyoQ+5SQnTX! z376WeZ0@CO5?3!p$P)o*`Ub)rHxeYL^|N9r_*US6U9mwP2sKoodDz%vS zif!}&E?Ugjdtwu!DXAbrKxMr+_g~%C*OafSHABuJuiB<Bg8Rq+XRHsHRGxQ_e0>X{v`YA5wJLOJV=Q_E%3YVEUk>oF5- zFSxl6uR~aQC$ZJGa2j;r5tIAx!IsU)yg={_cQ#5xps6|sys9pc*(Zvx&19xLNUOmn z;JEGR7x!{D`(FtiT-7Txf|ND)Jdg#SZC(Pcs}y-q5z$JX=DG^Yk!C2DTo@e*3w?rC zY8tqUr@QlWl@q*jsog=IR37vJ3Dk)%ty@(K`Y}t5FOtTZ!-#jR`ff7qADdE)z8zhJ zZD>WNV6y*!c5m{hX9(-My$!t1cO{>{?zB~PjwBlhs2Q;QeUuUmV)`7a#lQmo?$Oom z$dyy?kC>xY%rkt7L52H!E$Be=XKF-#^yg1OzrG2Pd(SM+Khbq7QdEVy!}{ zRGWXFxGkQvX%A@t&JJ!!W)W}M^tq@}L{eQF0w!^G`2HC27UBF~0H;GN0&v=p3dghm z)HsZlq)9Y7_E}ls7Y|2tX-Q9WOWc+6pKdVR7lcN@JK4>bcoJ)w^bHg`fAp-&5$-{D zp3IXv#*Y^Yki^X`+GtxzPob;a`d!>SAK&#`tNIO!?1q2hH7N)Im*xLT2*Esr6qjJOZu zGmP?I!h@}mDzehZhW2lnNlij?#@h!$Z zI56c1{a3Rhvk)=ZF2%zXX}x1#@k@R!r_6P3M#>0M%$^?Nc#{b8+e(a|M~pC5+&WcTN@Qua|mXg+s<=Xv$Dmv%zX_=xJ`b6T5~Pr3GV zUe}t1JL$~fcxdNPkv%;o_ywT_=kfbE=F2WH_H%*?XWNX{CTYcU-)|~3eDtf1PzC*$ zE)TkarWU>_)*qLlg|+cp6v|{oRyz`|3)vjM~Zj=h5 zqs%PiFimX5ed=!3z9+GVJleH2A-3t6t$UoEO*WNFE|JU8k-0o|AHg_B`mV^RPbP)7 z2gesMitdUnGQH2~)hEAWhTOW2wL*&&23wocuWTGSV14N0J~o3sbEHzYPt?&*Z<)5w z2j5_dT1mG`$f%6V?C2KdzBf+1 z)GT3Nh!_0%>q-EHCN?4~pUWz2GNLg&cySi!*2>yX(bqnD$P^lg7}S`3CoBCZV5Q27 zT-2aFRJ03|MqJ4*Xxjl4IdF)W9Kfz8Pcu$`%~CiDt8$LcZ*G*t5!y3(c9%|F4xov# zTY~k1!32e7Rr_?C@K_O1jCd&(i{g9?W?XN|7*O`hA5g30ZUtlTg`6(>Ci~1rg9M(B zdSXOwAvV$jZ13|B2UK{IG?-!qq}!MLlRfRwq0|+*qO@9@Ia>jh>VFoHlGh3JS~U&A zkk4ICSpDL;6>N;^##j&8&m2+4FD#{|T;1Ggeb=$1)>dh^xjr6JY*j^!kOCOhhU*$V zFI`Yd&_|yy^(b>OUnuNEd0u}vEKv8*B5wBtazWh3HfmB7Q=GSD3OFe({SxFwCQ6Bj z!8yAL<2rHKr1s@~-{(!FcYBUry6_7cco`##4sVdfMC7CR7ZKxc?NzF_F%<^Ghok)F z7jE}ZUywUE8SyJ;%lYDo2v>X2hl*!u+l70wG%^ByltqpgyMcf7Of`Ldhr@CA4xp3) zWsJB+6LgzoNAEBg`MXSgBj*K0PTE%2?-{4c+Ki-VYJOi*9g2IfhHW}yfhRUpc1^@i z_zE(>7O0TIsB1#jK9H4o*q#d}Zy@-c_Qf>L|>LpSuAw`JCbv7&TB5%*9ob8^h@ zxzgX9bJ?%^HlJbIJ-!CrmF*3^KeKRW<*5AHo-3 zgaj#fp9w8$>cw?ffJlU%$e?}IaVAT6E1!*0$Ln<3hM?7jJSuta7D0Rd6UaB?hf+z4 zBUKwT%4QE0Ed%*PY7XB-9-*v@WrX5r=BDy_I={(XCG1KKG*stJwuEHKH%}JqhBK9v zX7afgb#>hm_JSrQauJ3SbD$hH8L6%pdjK;sM&X|0rVbuqIaPG?h6N?(xziH}p@%Dj zPy(A?M+i?N?TrA)L+hVjPAz#Li!MC%e%aG@Xx7Rlq9fY;d)psd(-BqyRx7f{5%~7G zpzn;yOCeu;PQH@(wltGRK_o@krIPY?nAlzwgr;$)UV1;oW@+q*D|())@}(2tMNP`g zQc{4ZulWsbmmd*0s_=N+F3VW@Naiz4UW|NFhZAvP9UAFa*Os!8vkFb?HDh=M|N5HQ zoSkhE9Jqb6WLz#!S}T}@MEUQekUCY1#i{tWS@ApgqG0u_)z^G)zKcZI(;?c#Cow$q z`(rfFEhy~lt1{DM4XJfYsY_&!0OtK2z!>VheT9uK%=X{O?WTPNKAjpBbQ1Awko;S4 zWekouI%z|QaCe&7QZpCo@}Z#T7_$ueo5>Dwu)++TjP*WG+$TbJG^N|l*&d5KV{;&O z4f*2oJR)gdVcC~_r5K>~{_k;`Nq?fF?GJ+it+h<_l1l-T^pGdC_w71AnlTb=i9+)6 z7p``Du)gRhEqjo%rt{Pvh=O)&zi@_6lOsJ2Lq2o(smI76V+h6l{1f%QW&=7ow5!(L z8vtmY=%2zq;Q7&Pc>X9UDDo+HHVXfO;wqRHJ}wny$tO=X?;Ekhq0nh`3b4AbT?mM@ z%0HyXSGn8);ozADPTs!>%)n(Q%?s%HowdI#GwL?6am&#x%Xo>!=s*d#G*_9@ZBJp} z_I&A->w!uN?yEs9ly8K`A5;1Ez4dB1Y8RIa1Y$rjK8ixqrnFK#i&@-W`U7IVHu+PQ z5jKM{%yp=StpWE>xYG7d$97oE(G-M!3iYrMvFI;8$GCtCBUp~L3gEeFmt|7j1xbZ*993F>Jg$6y(hQo-IHjDD zzDxNe;z-wNdrDE^lc|fTh7Sw(X)UvoV`i(kf;gLhTk?mp1s{w1kgcv80#6$j2TY!P z?_8JOJG5Mi7#(R@_W(20azvI*8J9n0?!!DLnlrIia?x9HgZbZ2C6&qGOKscsLasqg zl^LTn?Sq?oZ0b0I!)L;k+kPdxy76h>ti7~mTrt`)rxl(n`o+?R6|rE1x6P4R{aH=HiprWU^=k?jID8rFy39^c&~4+|I%&I-{^ewJ1HEs+aEvEX?u8T%eO%0x3F zz+uhmF8I8LU7lj`_Ja}&q||Dq-ocwN-UhGTi7QUOoWGe0@-RRk1dMP1;6#N4%YPXXGBLTB0sJ!}V_T-K=<6>_B zu?K}rg4QU%$$^4#H*yc5%~^8}D1XfgocumM*iNEXamUo$!{|b~8Ia2?G(07FQAiG& zK|PnRgLsKAJ%8M-dycQ`-u2ox(A>CHJ_)98S0cmIRII6AeCB*X=!D~%&gO=V@uvC) zK!kWxA0Zofl(th;dGVYa*Q52(-iq%uajF$hX|lNaT&k}RBw2_*TrfWAY;-HnMK^P? zH!xtVg3dhAxmUUV;%WM7hb|P8wL8F>?qM!%$GhSkAc}5iOvs1n%{0r)Ilr7wYD0NS zu}q4F=(1eE7PA9=G_^g^??O(~gZv_Wh2slK<}zo?oh9b%6+SzEL6Z->$>mTqeK$}6#kspD?ZE0dFjtwEcD&sAhs=k+@(KBU=a}nqbZsZ# z)O8vTr#!q;zmcdnXj^bqZ1X8;=XXl!z~LCuhmh9Jk-z%uLQhT+rmfymr>QPdj0kOj zNpJu8BIhKPqjF6Wu+;s5YNIm0A#~`bq7b9>FUxN)sJ5-l7zm2^tZ-yQO(m}n>0nvE z9ybS1Mt6P22JP#$H2mwkARyXbVA!6p^snO4f6-NV84-N;#GoGlFR_aVqppT8_Su)u z4SFF~(%6}by*NL;6I1X%Q|0|xaJK+wD#}!kT2yYh3uhOXH5YKH+GQ{G)Rtc2JPLQL z*0#_TnCYJS2v8aB+CxsP_~aW?eGeVeAd!bJ|5CZ66%f5^??&u7n<;gO6pw%xdjj*# z#~%m+arlt}99i9-0FBgk;49)9wQpZRD5!PV8FI(Vk~XEl&NHuXU-pAzZ4Iat7Jb;~ z*T4;Dah@N%+y^I$A(?UH2s*#H1oFuKDE$YDdEnXG59x5X?}Ji71;>P(&3V|zyG=QQ z-|pi4?tcQSm>;zv?MMF6NTk+l*4qcp>Z4N#t+rmuptcKpx+fHrRQrK{c%o-niCCli zB&PCndG^|UOb?Y8d$LO8BI?J#w)_Ylnu6QzRt>P)owDi|N7-0eWn2HZB)U1Z6#3F6 zq<_X!@H%xfN*W9RMMW*->;5yYV-r4+bruq)=UH5Wl&TRs-I$a|iv)4r|4u>bArKCY z!x^EO>cjJI0JIufgWN681t9f`)(y=UkoF> zvEbF^+Yf0cQkMS-;|_F6R!`&63?*K*)X_B9C~Ize6)aBa}NLjU&aVDS06ZB7ND1`3|jY8<<9yf*4E}DogS!!{zI9I+V7|ClZ zUg<~_FD=>Th_Osg)Xp_5g|KkXi%zbv8Kr^*K>OJpFd@6%hk9Z8h<}*yAE}HTAZS9j zdzx>7d{w7n@O})~&!mPMYWTRl-a_SCF;!lhRG>)Skbe{8IVlH7GX5f z1f$AhN6j7%-EBHnBa*9qA4&UoR5;^)RDCvvk!>r&`2O7d5O~Vz=BwcemNS3~TaFe- z*q!YQBCL7Vk`U_B>D(+tkRbV}&$GZW?+Zj)n@_+In zm3dy(dIW0g z_hSM6OSk^##X&fQz>OY{w17qUKx|ZxpMnqi@j=a<0KqAl+Gyhg?DA zM!T*JjqffP6R_?&Zk~qyfd9Z=7YG|n7{wz{1x?m4fsuA8;u5mx`c-#qR5f-#bT5SO zk6oILZUU;XCGS(x$rrcdB>d2s-ZZuh|Ga_=R15HOAJ((#GQ-h1Bl`!foIF|*#5Nsu zUtIwwU77Qal_lzl3*KxL9^cW{IhgsBhkCfXEz>L=&1b5DT_@zgDJ}QGzTBGTTaeiB zn}^D@ye|!%j`d;=F*4H{E0&p)W@e&wd34@VbS>SMdFSIwE66Snq~wqV=z$qRYKolb zR*<1Fkbu5+n~$%kdhE~6HsezRT9kayDm3T~2eQ(r7^CP5(&j}r^$5oh90y$#M-!r~ z8+K{l8XS8qmEiSs@y6xZi(s~N7s_YG%8q*>_QpP?cI=1zOJe4ZudNxgKY=1}CcuP- z)U3oq(42O`JXKDl`f~_qRQt9U@+sIs(-;cna*G*;qHQ+l!?56FBLZ@0Gk1Ix_DlBO zfH1jQa8)enq4q#eh(WUnidj+x1!O&Q7X%cUuKK8aIsT&TQm4Gfr!U+gaIB|NO;0*5 z>Y)}uZU}w=xaW(3T>w3^2C!*N1iFkjCe&-CO&09J1}|u}1PbEnP*sp;iovYP>1#7| z+3^)5)?9A4$n3ct=&3B|%S59|peP(sB72Ami>Csrx;Fg#ha_)g&lIRV)CUXJQ_>0` zv_a(rtbFgO#C!$MQlHbdeI5BW-*>a*a&6bpz0K1gh>z;uv+CgNtAH=Zf2){ClVk9L zyH`mcda{g`X5l4hNlKqE0itK_g4CF^?kVZ9e1D(;6884#*qIsCx?sS9NBqM_HbtR( zF0++R!`ev@TgKf12UU}8Lw4bM0}^y4sqFmhFyI67eb%N8qx8TkSjW-OtoQuht%`k* z+Mo|k56pXf2AV$U;EBdTCe8g`bnLCj9?(Xe9U-QR2_|py6a8P#4N@Ipc~eFR3Vx*( z5OYI2foCW0xIwwA%K$H&ozj@zpCj_nsvNtA))qXhm_h_eOjJU=QKFP52M|Hzn=Bm^ z!o)=VKgv z^gt@c`r{;J*VY5wwqyL7iN$yLWWDoL1s=`wXV;v~=1-9Bv#QfDS7uM`y!8UO zAir~Oc~OLeq-OSqyf3d(piA;qoV*bSX?=aD@{Z(+=2>`N_aP-$i6wKaeiu`4?j?!I znza@VUwG)-6EBN@eE}1It*q4&Qxp=`;VYT1ruhP6noV<#~Ku#T^PP2jb+YOF2`#WI*f zz=NH@i|Da34#?KMpY~^vOre!HohDJ_zFj}<969&wTZ@tDe9X+o($pbM790l&_pW1& zC%57OX6*+3J4SKz(+ms;Y{+>mH0fK@Nmh2>?bXvVyOn3Rg!lCrMd_e@cDOm)d-C8< z!?%9MQNF4WzL{>gtId+(M^_uP+H8v2K1sdl<#WzTg>5_*y3fL@ow3xOI^&f}Ew^lBL z*fl_n=#{i|&2abi2+N87b_BgfEnFtuLnu>JPsbGPxLeg`4Mka|ad$PJ7CCJ_SJ>Y0?g%|MKQazI0UA+}(SJ>J_NZ?4q=vz=Jk1~LnT>bo@!WjX z$JH92n8X*p)jUp`wV_fq(8yjV?bmhgKNci|Xxe({QVgwxn9GpW#_?#SxNxlW?JIM_ zz2~fOi_pC-<{^!Xsm-53MoBX|)+{N!y0eiuUDY_#0nnV6-%brXX8dkR}u5!{yr|6rBZ!bKSFLM*D zz5_)2jC9g!*xvn`>qGSfic{)bK(|_XqS+en?3udSX$pJEW5bRHdxr&M`;E1qY)3A%ONS#tH+46G(oPA7!`Jao z23(Ulx|X@Ub(P~~d&i#lGOE3ARD4ckK&jz9VLVp&;N6rC!`wj6dKU^<4+bv7p(#oa z#L}O`X*(?tDEo})}E6Z(8w+mm4>7RfNx$Dw-QJ%S#vJyA_lSr8!PEh~B+w*@t zX8j{`{{L_a`^T@5&;4f_6Y|49LY`nvy|#Yea$#*`ccBpZ#e;Kq*d4k-mR(;6MT{a1 zCn(|He)hkLtH69@ey?T}d`SM$&Vf5L@NdstggS}aaP}x|qOeKr=WpS66Ml6eA7XvO z(0ck}0+rcAk~+<|X@QZF6OlHUPIiIE$Zv6>7GZAc4%tjy-?L(1Jszr=Db`v@md`u$ z3>umy-TNZ+r{@EOLucPS))H&ooJo|Tp)BnaFss22ReDYn?vAG;f*rT4g?KxGvbM_v}S<#OeLw z-w6nkHjTbrk0EX=W0a^VwJORjV~p9rXJEcsC;Nvq zlOD&F(9icuy>X(9Nl1A7LtjF#ou5hXdYoo~#bq#6UnqvzKVHp_M{}rR&G~m`Oqw5x zE$|A4%7m4xoETr5;ZU{Dvk-;cTCPh9g4^EPVAA_Lxtw8tmxB4|&MLft{w}}?=)ZW_ zLgqhOt|pZZ@py}STnEoh`%`)}+AOFaq9na=vCYU0^&w5gW(1DUvS9qsv2Ccv__iZf!=|}kbuXFp^i|>7X;ci-6>4tCeRrK+{ zA^}PKW-EZXZBU-Avh!?2Cv*ROjx&&)+dv1mOSviN-Ccl@GdqhW@<;`sF!39CYKH_lmChJ=%A;zT{0n5MFm z&1&WvhYQU6w~{KIeoCs)=Dm+U{wdvcWv=S}%q3#^XZ47L)|W!bVlh{G%fL9E(ev-t zVjej9e?4H5FzlG}Gv6S`-O}5VJmt{sn3n8@_q$e49SIzx^!LP!+FcY+4F3Q=lh|7CR=d74U zh`^mB1^7seLnD1{_lOnJOnC!!!J3t^ZN~`;JT|Mdk+q+vm)p{wnGQ@55To`I=Pl~) z=h8?klkLgEFu&?KOro^>@%!{YeSexDRIhUA(NdIOnPoY)KNcc;`RaNE|tbqg_+EE$1CD3Yv7aZz-8QoMrh3A1(k#;_78!pvl{1M zTYn}-?YaE7q~w1Rtw(&vf-5U&HR!1NpWU@D&yO0E&$p#fq*b;r^=NIleJV}WJiHLd zA?)*-mO3EX8ZG zi?YkdgJ#CSoQpqwex$E%eRoH=nKOu-9Qbq{#8Gev+ydnC;Z|2Dgyh9t-(5(4X!W-rBj8fPuS@=1}U-sC2`(0tX@4 zgFi_I**6x{>l2I?TyTA+PyS^)_RtYoXP@RrI?CIdyYI~5MZV;+HighRuFcOSxfJ=L zA07Bbu_j&lV!X;T&@H9Lq!)MId|<}s(gsbmBVIi+i6-jbgv6VoOP>#mtULwL8rV=Q zlb-N78K_iV)pwSnKfNL7*dDoWu{HR5-X znl+{MYKcvp+U$sD`fDicssTOM1+G8Iv_82dSW~Epsgrj8A{Z$C20AT^E7shqGb%F{ z#`izyLyG($z$3xK8R2G!@~U6bGmMX|%$Igu^d@!^qjom`325q|z&VTGhC^#J!UmXS^6oc#AIMWFvOLJ75_6DP56v7Ty09Mn~u z$$Za}PTy47`XkmDblCsfAo(!mwF0S*JTmz;N{;6XXZItv8ua3jH-o z99kb`Wlr}F580+u@4y#FhUx=`%UuMjUK#r8xbqwkyAkaf{ycS-7C?qw|+)G_>lEl@}t@Tp{^r?P7j-x~A2T1Gu zB;`}U1iUl3$4#t*Cka>T5mZcR#$#X};9`6DPilE~trj(IB@r88P$Ey5g0BT*HTl3w zzIL159QH0C>p-kKCZ5p6l8*LQ-uh$bJ?e`~RP>!qXqT+*xUw<*ku#RLBjI98-NtNQ zb^v*5YLnb0FRbVzH5NiE7%H*T&~MxB(GX1(uny`O@#)iEEGhRGBLox}aTGb$bYydj#!&N9C)O0d#koKRr6Zhxx2r% zXyf6$@KTT#_7E~0d9 z{a_dqOUe`%aD{21TMCO8=NfueUJ1h@j32Je^tIh3mUbz7Zz+Xt1rf)J>Q-LVVt#*r zrwxooJDi=n!*48DpoES=!a8B3x``Cx#_Al5s{QfC%MKRaD|?4CCfhGG`Vb~scvXDH z3~)DTm%$J^E&WFAL5-x8Q+h)JWrj-?5?bkR)!jC}TuR*7qLKWp5bKli1_Y1nM%X?2 z#wuo6d2^`+L(*=KJC7WL)l2s8zd^Gqwo#jYI2#DoYhvnG)CD;KEB_2Ky@y`mJ2y~8 zO6%~@Q5>V)FM9AP?K`c0fL=rzmLChUOAT7NMYPhM@)IARx=^NjFpUD|&3WP^`gFHI>mIY`%At=Jy-Nbf z4%Ah!36i(BXkB{*WxlPaY@B0cY5`m8M5N=#xGX`)pne-Tr=}*o4EUoQB;3p<@(oCd zFaMO>HTq@a-v0AuGM;z|BlHPhgFvA)8WzDCy9ep@<4gt~C7dZr|1&rVQc|^kFS@C5 zk=5v3tB*IhiDQZ?C5qU(rRLq7p{+RU&{2gPTbknU*Xk*vKeVjR(yQ{8gFyzvQhDCA zIGr560#3=YU=E-yRKn&?H;D^Es~V5DJa@rFK|b#_Tz66ks&6~8W?B5`8al_fo7WAb z2Pu=IHNM_fLUOJNWKuA76u0gdFKLVM+suFImAB$YlPL|_VY6S`2sY$xSO0C%bBMH2Q}nu_f)?ToI5!lS`0-11Kr zbwgQCr+|_EvmD(Q8tKd3)-N~a?uzpU9z}7a)0y@n_FL{f14>f9eZS&DHnIv zq|kK=qdkA*wAQS~P4P4EMx2HBOLCHCe%&S*D<=FqySCEJ)%Y?^2g-OEKJR_gwm`;X zWN?_IdBwSV)$}>tG)r;Vy|wuv%*C6uC54r5Vxu_2d+&B}@yeY;MJ9$Au1@6eNyoAd zdcynfXk3r3jeG9mJChY(L%TecVAo-wt2CK%A@=6!gduy01C;m(dlSg8X{Di3v(o2^ z#Awj(HyRzwZK9+)E3lTCEa_X9d(@5a7KnxNJMBh_zv(}Nz_mUM+?jb|S@`x`C}j9O zoO&z(l%B~K?OHF-J*X0)38O$|NH(d_v@$xL&c{r0{Dl9*GOorU{Ci|#*ss)~v%{sR zek!QQH`VQQzvn)QEG>Cxc97DrmLUQBfhMv1TApk8T5>Mw)geV6)S0`VGD~A#95}0p zG^A*xG>`=>ecq5a9<~WPf)5WKf{beJw`4T9Y+!&dY_Fp&)?yUO@iUETZLzZ+I_NRl zwVOn+>bNz(3qxbEAioUZ^%><+qUfDUpH7*nBoKHvQm0|g+tWRw<`UKY9*;skE(8~n z(~wM3Jw)B(OnTI+t-LW-HgkIR40&1}Q)mE2fHM1J$|QxQ#elF7eHh9TfkG%I=7ZJ; z*Xk)PYcn}%H{9|X9o)JVsUzO+HjXS0+f4tos&u!ca;RGiZhOU^8w?(l*cF9_E%1Is z+qyoiYtVuxizo%MikK@dB)C^k9&|L1y+Q{Iai@J%YPZB2O{&=$pF#UTRg_t8lqP+# znkeEYY;c%u#w}wyqB~bURP#~Wkua@i#W!;@LmTh z%j{#9vYNTBI3`TL^8vCIMF$SD)0t-KO+Z0}v;Nsm;N{W@p&m3%riNgeVmrme zKHr)DDXbu;!VAoQb}(y!__Bvh{w`+ht(P=_1$GK4;3=mWXUtXetju(*+@vO0iGkA~n1ejp(gU zAc{1K4fHf&x56A)($B{xT(Z|3N1T;$MuPO>iAWl{(rxCpDYQo-aZljoJYl;Kp0Ko_ zmFKmj^mMyBoNztJ@Jwzn9c0FPMysQ6a2r9T#qxI%nOjY3K6|UdoAQW2EBlh-(mw)=I zjR`#aOB5S+$)2m2dnKx(Y|fJY_}yp@I`3XajD#jyK8{@q7RQUfvhk1GVDB7G%$V*H=;iI37g^UJN|3d)GptnJ8J$u|jgAkqIHuJh1uVXYAb@4-I@X&<|vroU)5zhv_Fi z73i63*A`Y<-i5QOdX!W8a}Df7;sv*I6!%0com6r7`V)ER zsV!b^F6N2W=2YfJeT+s;+8N|n?0sgN{4fWY)t^QdwMJ^d8K{-!)?IpPnwJb#dUj`} zv*~&!vR6O#bs-IpdSDI(-4&ZZWd--RL@&788b2)c!eZ4`c7=-@$X_OejEp$&LUQ!4@Sm^KdaHX} z1Vx(N1=f~InWWxG$d9VXjc?$krg9*ZvyNMyH~;R~KvpHlEymMV;zi{7eQP|S?{ddd z?*AR>0ymRh<9UUBP(8NBw()kw^XIKf(Ul~v(NM-AX2I+wM+mnQ%yJj68%!+U&g@FX?+*A4@rw zAL(8Pq4=8p2Oplt!e#l@&R4RlzC2-rP;I@6omXS(=2_U6*Yf5o&zX;7ky=|*Culp? z`M_gW7Ai&=VeF?Vei z^7C<|OO~@W&9lTP)z;}tAWfNYv9X`CxuLK(>Zp&fYwleTgn5+_ykBAQ6^e3L$O$hr zTjXReo>?JdB?FJM!u@$x5om^!h=owLZ}<{*aqw%LyTjD%ST{&#U?S-vd)F19S(s~{ zlwEAyu+{4=$cdyDTlIDJdM+uYz}=uqhbn&x`PUH#C_&EA4gR6~ot{Ld>55`i1SciTh6Eu-Hh931ejj zRSx-tJZ?yqC||?;_{AM281V&Ty8rC!LDK8BiG{s!n4QGQKa-ZY5(t$^M^48u$JTJr zAKlOUZonO;)|Gaxjj8{=huUAY`eWX?xx_m`hPh9J!(uO36B1`WD{t-( zqIK(<);(NY83MNoN7*>+Bwa6`S!%(js10`VmGzOVs-F6wiV;gN#)Y1N)gSa*32AfQ3 z+*hagdT;^Dk2imd(!WINxS{sw1QvM7M(Xp|7{?!Tz?l+0*;P8P2}ey`!F5|Xlbu{t zLGrYms`8v&m2R6ScnJ|RcNnE_qr_Wp&?>$mthu_yh=KA`^NQf>_so zj*W1uieF8>VqsN4PM~<8#4h}<(G~X=%fYhCa=WJ0L@Cv)swH;Jvr2R$|5?i0*`RE$ zR)PZT0JBVC;?!C>FNA;4WPTh}4Os|vT=SyFPfIsZH>t9pQclJK8KPn&$AQ&5vgrDO zB)N_V;{7S+ftaew$mHhu#bf4zxpTj{Cv(|V%S)GeTJ{-sW=~Yip`O5=fr)I+3w9dv z&Z;nx;QW-K&8y7K=Z5QPnyo1N%&s~rAgJC6tIEez2d59MK5p?{$wBiI5291IMUHy-uwRk#_gdkRkH)XWJ3&1eY2=ZgYXbSWMT7L z%|%LhoGVm@MM$hKZB0v@o;j9{7=|VIqM7tmQsoXk;XXOPuxr0@R?bT|8mz$}(AhJJQW_NSy zwPV^W?0NfK^;$+pA~c`(M`(D<%|<%wrb$2LuJ_1qov=k^YO2`S_QA4VTz!KHS5*Fz z^iupn#z_t|x__OEE1Ju5qmFPaSiN-W=Yu$tHU#T!N#GkdCL8LtKJ_~z1e1%R)rM;?Q| z*(*&k*|7r6?R(k?2mF`Z_d-YISydT$?Ov#FSJ>K5!2unk`af>5$Oswm9R{ceu-cA^ zK^;YB4QxX&A}2f!jXkB6FdjYXgujKRbm7(c7|<{S&SjE{`M|#Im=+B0Sl5-cc;lB3 zW1z(Fan2 z7JORz{|H023AypE#pNv}MrCWzXKtV~QD3u^b6)#hHVXs>NcMzAsvdqkV~Bb^0f5DQ z)YbaLtlRO5@4nyzuF@AP$3mv6iK)_{N*Kz+w10WdKZ>vipz$q_u?jbHNAu2x;!}ft zr1-vhw>0?+qqHXSo?T%If{noF^-ufS|aT)+z$-DQ~sq1x; zyegZX#LYr0TaR=pyA79RQj3NJ$_g-(sW!Te);jOvRYAOPL788ktlRKi&CwV`?mPyHg-7^vkn-i$t?>XQNip$1zH43EpX-ZykX6O`e~j zwm(=|Ar@HHR(M;F0#sprg%H_c<(=vX7QRV<9ZsG~_BiSDN~Y1NFI#)mR~C1gX>S;` zOF;-?+7%XLtAEvqPf-QTqZ~j&{W^T(0o0n>rGr%5$2bm9dS)8}XIL$K;nIbMKOZJi z6ud`pCWRI=4O?9*+n2E^V?pGX0W056X#-rc(>~tPK_r-RC&$F~%GM@Xx34iYl-#Y( zn+STYi3iV{C4fc3cO=VSn1Y`*&X?*^rsY5A&3sO_d-$16AVJ8Zu7@&*>l$**R-jY* zkmQfE;r>i|D75wh1OV^FZeNFv1Y4`%RinPT0B>)AC?@j=D<%NwSS};=%ZzLC9?@XR z8*ijX&CE%v$b+$ldUBHd$cE_SnhX8v8#Qx<(!R6(&k?%QTRqBS0YoIqzNRsPN7&iD ze$|*Ll51XBSiSP&EOKIr5dXb6XRIp<^BDj=4u$n=W_{^uEaZLz-NX{RHpTY-Qj0ch zj&524ZtJBy0rb-IOEF%B+SJ9-&dgiy-fq<;Zc66Rsy9Qg4NWNi84pL&G{@9v!@#T$ zmA?!rQl`yIlmAS_Bu8Cn7_{*J`4m&adq}EjraaA@M4#WVBKDIgNwO{@)P6Bi+!oT4f7`y}2Vuy6c4p`Cv9E~6GYCk^(j4p=edTTX+oweyoALkcZ zc#dc`=-9EZJv*AJYo@uS;pT z7=$7!$&~jsU@x$XgvLr3T@97$9g;h+|9%Um^wqKH)IR`9=zNfajO$n0H*m{#VYpn! zZmHPrb>R4^_S6uSWq_?d4Kc}VHXve<$ZeI0Xldr~T*0pbk`|XeX^+`wZX+ z=O3H&Q8C$D6M4@v96;5_Rya1d6`hct&72u?b1@fJ2RdI;L*T(h-Yb5?0}0=FmH!-d zu4WDZAQ^IU_GV7#DMY9ADwvJ%&mnQ3?a=xDtcm2(q5i0lp-=XQgHxH9q`E+Z8&|S5 zJP@-PDH<|e_UNotT@`KOQs~wuirOFVnijnFFm!~XXEZZX;inPP>VH%M5CJc+mxxc&Xz zsZ+t7rDq{4ukYdxpnv5TwDg$+Nqn(2y%Iw8J(sAc3w%uK#{ zt%sm>USK5+vDSphXqD64pzUCp9aid1#Gv%65R27qAOqI<&fa8LXkL?ccHg~njy}j;`nPPYX5G(-=s3VcdSAUtC5ce1h{U%h3M`l5uK&d(C}k6 z*^4V5oxO$P>b1Fgl^DY=Wh%C9iO8TS{dy*r;!BCo7Kr7UUVSTmyEPwOF239O_QW>d zEJx2)y8oT;Z6IVU9>I-&4wnuoq?n+n7i!Ycg0V-~=&}V9M&C0BYC(5JeN27g)ewEC zLSn|XmQnCfuj#2SE2lJTjwrAH<|on%8#ZRkSZv_+X@yA5`7-PBIWD{3-`+e@yG1Qi z@`w}(bQ%{`mfIr?3=&#t@_eF2%Fu#Xs)!{q6bs0wZauzdUw{R zA;;!YHjx!haVHRaB(VLWtQCRfcS{}4Sd!;?!ff5Rjhvlvcg#DrQcoR)roKam`Wsq4 zIP;l{Pkybq-Xn1QV1mNi-418!vyTU2Rg2coEgR|`twMrb{{rq$Rxz{u$RFn3^H zhQI}@BUFvnd-%4&#vgq{a9xfj!^P+6VIMGZ64(-~H46t%GuTR7qwCJb7 zhY;a!MgG8PrY~oo3Z~3%TMah7dXmtEA^GZT z=^*Yn^20)$3(U$>wsG{mE)|(6Tw#iBwkScody$IsrQp;sD1peFPCYiEvEWhmDzG`A zWFg-$&<5|vI^#yplskC!Iyq7pZh8$-2YL?JD@#o*Iw))fYe{V)}WP=Ph# z6xLx2_8`nImf)fNd2N9@>`kWBH>pZ+8tCULP7pbFg#}1LtBT$ z#TTbmO9UI?OYcX1AACo`W!)C=qxpMZ!;>fK;RKhW$Oq>PUp#@O88D@Wo-%q zbVH*ELCo;O#9t58-wVhFiOM>^mo|=za4l9EcDZzvR zCU3x~3Y^Ba`{0)mEAesoC}>M6n6uabm%z`|t+PQLa~pY9%Y zlSv8F^Z0TtuVXW_)GdTFEJQ}N(62*Qwik0B>gcEC;?hQMgcg5kUQ1YI7x&-@^Y>0b z|Hc>QWkh|FhO&2d>cZah=!mGc>jIX)^YcoEz1nv+>c|qTK;`ZHpudC>E~Wo@NAH_> zW*fLt7cl1wEaQM4_^Yn4BB;ax+a0bOdd9g!iT)ZjtQz|D_RHg<5pIVhWs5y(T*n$l z3yh;=OCtqfW#N9~PTXSmsCKv6!u4R%biLV9m*^HSsd-F#6Qmilwj>?h&|CPXBH9Tg zlwe7!3|w{gOE%?|@nznHo-!ye8f`GjGrl->TN*YP?2q{1r~zs1Y|Y`Wtln)?C8<@I zP2Q}`&4=#Q)KW46Y0%iGM$>y49a3uK^6~Tgg<>VOmV)2qP{MPDK>)lJE!h5wceQbw ze!TbAGO!4wlGs2CUZk<1aar-`{0u?`N%DoWH~EC*d>&;w!%5`AmFdJp)aqC2HN?b+#yZ$Du6-6B9f5$9alywzT zs{R#qtX?z2mE-NiE12Z3wu?wNU!8@EfL9oDYfOxQmO#Q@5+}Le4()?hMc_YFjOsU7 zA{1G2pB(M6mGN4kQ(hOVU8lZjb1beMmz#PNcT|{D-l0m`gm+f)`U0Cup zP=5p7T=$3L-kr0yc)q)<@x_`7kGF=6IKvxma$VXI<)rJm*z~0*UcR(^y-&c>TYW>+ zpYV{=s37BF@4e3J`Bv{X&f-K*uiBv+4;uY={oSpeNssKB{a7<`|IzstPhH@d8*EF9 zP(Et)ci!3SHl|UBa}`a(`Q}n_3Wm7}n%8`a@Dnw^UYupFH1THcOt&FwmP=f5N+~HO zRDouv^m6sRjIf-C{f1l)EO+z{>B;799il{>6pjkH-He`MjPv=}lXfP(g4e1`2RC8t<#V%<8CrD|q*tn}&Z>5E7e1C9SsJ~lrmu#ky(9zW! zh6sLoI_l*>s;Zl!%yePME*YpyMA8rWOLQEw*08I$NCGA88GjftzKPCQfE^_X+! z4R8PX6jYeLpNtB5!@Pz*9dP*hLEJ(XoE^6RPMle>XUX?h`Elo&JQr%XF-&L6(bI3` z9)Y9K@*M|#xV{^jtN(rOiWWpM=Ex(My%fNPvjH~dz7`{J^v5gbF{Oh$dWMVCTRXCl z{~t6S|B3eGp$B(Zo^g@%?f60|?+}PcbfI^y(`onPOj&RB{ zgbH+FX6Rk+IWVX1%w$CihX6y4aFGt7Tw~{0(%q`QT~`P9)lz{pcTPS24^NeW?}2Xu zn*U#!3d8OhfB&b4qZlHJ|E1Wb3a`$q)Up4Zsni)jwoD_rKidou0c;GCh#z2W^I3r} z-h?_LnTnmU&e^Jum~Y)Jw5Yc5y~x3{(QyP+Ca+8^9)7h#h};VRpki$s{a2JQ|KBeG zmg0|b@*190)dnAV*tYNQGqW~b3-2n&SvoS9(Kzko%HMNPf=QS9xk}g3DG_SL0&Lem zOkW43O>>LT;MBSVz-|m!y>ee;hA~($){$Pi^Lr~Z*^~rx-rL~7-lN`v zeh26^oi#!mcGxNYe8S%Wc+DRxjJnI`f>u{?I!=3rt<*fQv$77&U5yD`2P9YvKjHw^ z6K^ckR6!jTC}}Jn-vAj?&D?=A`X`nc>K8zvwuM~1utxist{uCXaW&(Hdek6p_W_Cf z8@zvHWFTic;QL+P4(+(uc3J!xAQZkDq#g!rQ=kG-z+3tBT%T%U;gtdT)5Ca|;QEu; zI1gQ9BnY6b46@)a(>xQE5sQ%Z$!y~SvwcK0@$eGn@jDvAlba@LrfEI3TB-2i2idMe zpD@b00KIiYhVv?%xF;NYD4QQTMVC{!7pmT{d1=YJ(%Cl>a1xx?AF2V3ijBzbFi<>S zBBohi$VT6zxNi>;t*@~@jT8;|;yPL}YN^Z+d?*e|nxK}ACj(j1M*t4lQT(%Ibn_@@vT&uP7m)$QFw#X%1R^f>3bLzf}LuFM08CAQ^!P0 zENuIPe(Zm7z<*(dPh7J~O#y4w#FbQXwM3K6Xwn_G{^woDW))*~rBrxWCWIYzjT$8; zKeYq+vZ5RQkdWS;(J}#aA`67a71TJ^5JgYDSG+6}D!h?~16W`1&;WcH6i=}huU~@nonmhN4J83rkbuzQfaZIXG8{lIp%6tKH zqj@J>6R#O}Zl>^~j@Xv(K%u$l!{|n>P1ynnRS_X^tE_z^Wb@V+IN|MGBQ|o&V}^3; z$|2~0^M1p7xe`O^vttao06F-^OTmT0Ipoz&Aqcy5!Ikz-S2-Ytt?7POxOHqDx3FA? z4+9*o@pZ}hF*v4n(ioawpGtm2QyLFrxq5qV7CKt`Ff=KPvl2QKxN24N3ZB^Lc#+{7 zq|)HbGZcMCKXc!~XXS-g-^iz&vo5(L0nM6vsY6;>{LeI}`}xgU8dzfwp$a%KNYx2i+%5Q8+Ia*|(-^p(jt9bl9%H)A579b{irJnv{>KTS}e;kFs7m~Y+ zw!=_eC}*2a@BD3ok3l<1=h&=pKH*D%I7sB_R{f6M(H8^*BSiP_=uw^;e10&+)0w)@ zW4?}^Tk=`bSveq#wBum!jH=CDanMP*$j>@=M=uF`PSI(FW=$6Xd&Yt5JFbb-&yC zSNy1RRctkR3g*2qYq~}uS{Hl1S@)XO%dz}`{=85XKuFJD3l&|ZU;e;#`NH6*$gVqfy7zc^`)C-O;#w*%XB6!e)YUu1*65V@>M}cL-D@R$I(fTmDoH30EDwB<+d4-{E<$%BgmaLSLP37cn<%utFl^rxj5#r856 z93}|(|7<@JLB~lEP|A_r;=2!?b7Ck3j?{Vrp0wr}=+&W%&GbE>Ei@?vuA~Z$AXvtM z4x$4zK0JQJop%WV&)MV)Ul_J$H25kh1sX9T3hjR0ov#fJ>l14b(@TMLc1CqrUO{nT7?mAfi91Oul6Q0<;i0cf?8n z|2zY20n%~y%{Rw&UORWEtM%gZ>~{U@;Av=UW3I?OW)QYmC6)!<0um%p1KEghg#q!- zD#hV0s0X}^#RDE=MMg0ep>v+c}_Z5|y~ z4yux_DjU%DY22Cb4r!*P#aa@a#iq!rzLzit`gR>|m7`O8N>+fFBWb2DC;39-X0MC~ zVI&}iU+41YXh3*%hQ*#hD^>$62vZe4n{df@*3g?FYQPKo_TR~1S^}+Kxz#zGUmfUc zY6GPq5_kLkX))XVfoHl}4%cT|bbt|Z&tUb)BCWcY8FGJ26Ena-AtL?`A?wGNjd8xxon)23of({g2X$|HQG)|sBN?#~*{{+yg zTW)z6A)tLpI(*qPT_^=}h1}7-iv2jy5a0Y>&!)f8yxjTvU*jB4-4!OmX86ni#o#@x z1BC_uu+GA!jLeUEDq(IDZ%hJ)B3I0vK0Q>LQ;Gp1h5ZLqW0W_hGl#LDgU|2@3GC<% z?9xdtIl<;h5U-=Ff!`q`yHR}Vcm;L!hQSPdg8#(JrUl8mrK^qsw6%p%oH1zdQ&wJ< zBa7YGrT6vAltsmz3EI&W0?Ld%v|rkx!!z*LaM;I33DzLv%84&*olI6jR2&9+2kGpz zDei&p^FRUQ@kO}?zAy`4IiwWm^X1Y@4iw)F?$Qsb^;Z3IdTx8m#{kXX`Z;T$XnTMw zM3QUd_b?3;y9y%Ti4U4WX4 z$S&L{@s%72yPzJi=i$}&nk+`w^T!8(FU@f_wcBtTYf$n8N_86Mh}XAc7=)Ag(;iT~ z_V)uBd-P%HR!iMSlvW`RpBN4A!zz?+b%&MT-!UuHvCy%@p2LzVi&YaTYK2Di`EEuV zPVqC|YoNY6!=&x_&$cZEu-#j!)m|*cE$M}}_#;7L7fi~l?r1LGS0)zr%j#85VMO4; z#LJKlL)~&oZ?&;4A#xrBQ1g$>9Qmku)W{5l%N#7W4L3MnFv;a;W|H-6g9_YtCt%or zsKAzFmHuNr>;HRv=0A!@e<7ZKujOPYFTv|y*biBf5lhyWT6lK|3?QX`P*^=B=nZP` zL|K=C-?I~`%E2`OKwPg41W#I#Ji=OlNYYu-CgL(sXqmh~q60)ZDOCxP1iJX2M*y#4 z3eX`g0kza^Cp?HJ3Pf7yHZ3gxL?DJU>!v9)R$~g(dOzOmUIUDi1VTL`8I;34`%mjN`2u+V)`BCT1WbYa z`BLR5JQ+y;k{N*$XNBnG%p*(;JiISI7EDD}|BMhiPM`vU5O^w;?ae;Uuy{-O-7jlE zv-br4HL^A__Rjl_&NLMjA4{Xp1Yexx8IB_G?=DESBxOIm-75u$7-4zFx`R7U zFf9RlmS_Ce0?~OOHGNk55`7y8Sx-39!8IqpLnwV+-}}?py!fFS-?KZEFGc_dtoujX zAiR;3`*{_9?>%)$ycy^VkZyp6^X3$bjgA__l7M3a#8i@=$Dy936W`Nc9RrjlrN5T| z?eVirOR*+a&v%K@X;fWj#LKg|BJ0L0qL6IGUuGHOHpig~r=H`-qk#Zda%OzLOwfH67j}w?Y!8&1R=$sYXNa3lv#>OXJ!(|VqfF9L%Er&iEyx(=6sCOzpCoN?7Fj+7B zq%|N^=$zWO3XcO^7HJ~VFI53}0c{Y{8PU6sD~vqVDP7dCfv*1ZD+=jt1j3g$*bOkF zdD~4et2#>!Age&?n+o3sy;hWq%ma3AGYH{PHGUhz~1s(d?y<6=MiHMvo>w+ zh3MgYZCt$1djTiUfWbCH=^e{?qNi5i0#Ki-M}aXwJ9NBw*#Fz>V^a*->p)NXSFR)A zk-VGJm6Yob9)u1!$zUu2)kVxIoftdWi&6|&iLF8 z^2QN+t~-R{T)oV0ls$uWHS7UWg^z)!X+Wa$q4muE*@O=~=i!Oj%49Oo=vKGi1|huM zA}fPHmv;miX@XKa#d%&Py&4yFy7%zGh^>dClgks$kPOkHV^dHu;R`vU`a;{*FVYtPT~xyU8w3eP`3bKV(xp(!s05RWtRr&%d>^e z&po}B9@a#Ea1&=SfxIUdMxkktW?)Bi*_)6szZ(S~;SpQtfTyY+vaZQ;ZXYTPBKb)0 zE&V|tcd3XclpGD$8hq}k-Ci_1wV_hcG2gsW@|Wyt2lqV&%?NkrwC)LLL&e4PmK4L20Uv!|q6)Zo zMW*j~u?i3!INkCj?y~XtzFK0JPzd_7gjxmv9D~!Z8ZCW5RhBzBuy7cM710wGTycR6 zIdl9PXJh9z)Vuv-M%Si|U^i(%)|@6%j*J*wu4th|&VU&sFVwTE(N6yLvZ8FNJ%AaB z%Fs@d_izVM`$$#8aHg!=@c&@%%>$|I+qL1#SScECld+OSG7p)RN(m{JAsM2~^R$dn znJPo2WGs?tnF*N{(O}FnE*2#-3mKN#dtSPqXMcO|_xbjIhyT9spSo{Z*Sdz^^*hh= zIFI8v@e|Eiz31y8^*Sc&m7$l*9gbm7}d7@h(&Ll6$yN$Pn7Eog}rW9D{j0LXY z#poq+?qyb4g(+3!(1w>BHA?lAGR;y6@z-*sZ<(>@hWmME-);BXosmP1o`C zd}=&VW--tX&1CbZk~ZjBg4V$?MP&y84Fx8ZNQKw5hk-aQZZWrnXb9_Dh9!eU@Y!b z!e08`lw^zh_xWMv0X=+|GW`9gJ&C3j{|aZ>NjCrUKck=h54orL8!uPMUAdzq4W?%9 zEc@yHve=I#y~gK+_R8{Qj^kpDqVO3o1kpg`K>@r2e*h0SeohMBv5KPb1Tc(fh!{zW zcW_zufT#sueBvFk-dkvwb9X?Q5RwaP7791< zQK;^vcX9jXXBrfxSr3#KqZSk$52V_W9&p0wcynQIBlzJV_(>kkf*l6R({wVgr&+bX84cx$aB3L@ zXy=^Lw|`_wnld9y+SR^ZP!6rfq(sPmh1MGLD3FVfT-v!*R}+Lo&Lf+#a9Z|mXQmmX zGka)i(FA#bG=LqXS2%IHXvz;@18dIK*_v&xatG8_!u_W^W&3ZisgQS5qI8SF-@&zo-4i564Mw5u5=@|0} z=Z3b&EQq9HGW~fv#arm6(;^EswrP(#9}I!Tqm^@2QU$;-WFINdk1yFyH`*GmzZGNMkF&rAFb51oC8iN=VuGo5%fR z-ycCNE6Y2V-?29UG6FG3TfEPK9{8vTBH)?m_Wg3p6wZvE?dBR(JkBcJaJyKgkw;K@ z$>p(}(rvQqd&h6{n(ms%YuFP!8zT6iy`@hv7a>P-dI|Oome*!8=d5261n#s$bSAqm zi7ltJYC}eExeA-r=Ta7Q)x;Ph>KI4FcNU!3y8R*8w2^f@+hrwf@Rv>^3_w#I$W!~V zQ3*yR_df6s3}5C&gl@iXJME1Aglh1r{ff@Vba!9~%aYw+FmQq0)F>`1mrg;KT?i_C ztLiFPiPW`=lu0-P$BLPfK%J1lB%}wZ@ne$3rH?-Wr}?LYlIv*Gd+6s3;18eshJRSs zih>q`a$q{bV|h=1KlC!r4Z6bO9EHgL=&(9KB?2qfgXQRAS4Px<=< zX`mYtYKvEJ^;&2;Rcp#@%gVac(^>fQ(_=YTT0^`;F67@Wg;1jHx?7?X$p?bQ60hZ@ z`QgTNHw~RmTf$~0i!)k0LPlqy_Wa}zQaqXvLkM670hz<4hI>@IPC(1!-baU&mV?ny z0n6sS08PIgq2#n#yc>EztGc)6GPgYsomJ`K08rpwqb@-4maK<&s#yw=Zt7Yn++^}l z8hIMH&FqQ2#GL<0S3%nPd%d4V;`PP2lBFop{99FF z+Ie_D6ki}sL5N})D8=QbtH+vwt3*jN z3pe1cM~nS)r6}{UBYp`U_#=H`V+6mCv!rSe^`bF2XUATX^u1)~4rB~JlB5pP5*~tX zyXqok*O_}B70?%wSk&JSrVzLQcr9Uj;zPVcY}?xe&sy~rqn3dNV^EYo(vSXpvljLm z*DmX>>{yxkdd9?UbX`()YmhxFDV$d3e(a%9*4Xx_rPy^QZ%Y5c3Y0D>!Nu)Nj?0qt zCX9dSOi;r+1rH2Eq1AI(Mk3`CN`#NL7BVRwEJ{2MH!#`_(c#-eXlNnvbyb#6a75C^ zl<-DO1|@(1EY7}Or~=xGJfkFxq2ddD8w02)5)4!W)ud;n);5R~dD|<)`}vq~yWSb4 zgWAQ{=g-AJ9jajn&Dege)DjzTH7XX@eO;m0iKEL6K2-OU# zheoPL3juR+rb=o!UAg%E%D_n6U!;E5R`J>5vkTl{u&*VEy2= znmmBNGT1~QV7JC%Aa27=1aVN1T9-upg*L4d#kSoH)A>)W5T+7)lb)s{v9esrM=dLP z9ZwsUgs~$*eaCHtZW&&mz$9LWErf;Dq1buF=QDMhq`%Bn( z+AUCP)`;FFTguLB-V;CUiJ}}(FJjN>i)Bb?+3&#wWeJRyxel9L!7u`7u#Sp5q#-+a zlyR=4F{KR`!9y1ahx-rl6mAz9wv^$o|Lri{%Z{)J>YG9pJHzIfOMq_t#q1iWQNlRC z!HVNq&XI9kIE3nfpnfWzg3U3;GQtm#1&j7K7jn@JJ%U5^1c`#Pf?OmB_r^pPy=ZT6 z(0RnKl@yS5|B7IQ{O`}9OS|^5J}EFqYs~s;0F~m>9Zm$%&(3p0J?Ayra~1q=Ld^%? zS!?ec?p`>%^u_5EXbo(9hl>PwAx8c&i?9@+fHk(Tqo7SF^m~A5;EL#A%E&z^n)#<; zgvRkI1q8SG3$$&cvM#?a{p068CdkcFhs0Iz3r%R@DLajvaJ73#U8|#CbGPcS(p_*0 zK>IHf_E7(tLK|W<@D)(pH1RF`EoH zQkuIR)PE9|ue{P^Q1g>6)K_w$9Bs4|ks$E%5Z9qj-+wyU2DT4;nJ|FEnRHeVv zo^4V1?=BPoOTH)Bj+}A+d0rdP4iuok4#3;iw@4b;*|Di>fhx`%gI{jm9wMW@Tql<1 z9O3!b7sfl3^Utja=;d-05TEmFf0r%U@z7dZ7;D9LX@DtNjHr3j(GZS9*w^4jdK+H? zxR5k#36A~tQ~1o`zEG-bok;+WYg0I)AT5GbgswNuw1 zzl#Np-1!%ZUC@Ozxflrtou_|t8Wmf|)2H+!d_D2EI@2ov! z{HLBT5=AD@P8p3lo=Q7_1=){k_5wVg;~R5&>x#23{_EAyVm$T6tx1mRe0gIuNkjyi zdJ!k>b@;nrqh>CsQae;d$g01Z$WagH!YRs-Oqs$mGiWHLn|vZ3qmO)W-VP)-dMu*Gvpx`ci;@PJ>osL z#$A54<6)+KJhlpDi2pz`g13ny;J+17p`LmRb})~Znc_jxOmBVcCTNv|F3*a&+w3`q zX%(0$YM2_RuqQ|@pxv)Tp~`hVjH@h#mIC&{oL)*+pq4L~K_1M@TDZho?m%>}!VDCU z?m?1rQBZpcdjQ}*9t6T6g-9$iF8ty*W7nSZD$XmQ1q**U2!^6Tx~?a_Qw(LKL_G4` zPw4%y-B$YHxOQW-1G4z?Rc52JfYq63Rc=3g<|_=piN45HaFJS|P3Ed3E^+y9IFBts zihkOnGneIsMKGqbv3wU^^izePmDFFNSklcu4<~9*K;|+fC@ovH18HCNQ3MK+vQT#@qFVw<_n@b#DySV_b416Uq`>lLueH!d%L=>tDadD? z&Kby8ojv*#8Q*V))@B_~RXXo27XxSRf?d=@^DEMbK(^=0%;TpIZ={+O!jCl@pFz@s zpSYJb6rXuWnSP5SuqGwsVDK|+a{e^j~O}T@eDjYyM z_tdU?_Z<0LaLMg}DLrD>-5%q;wd}sdz!iI@#EmM6HfC9@T1WmyqzJAtx)%Ycthc0EE3p$YL1>&GXnKJ=;UtTJXI(pPhb4X*P`OtTrwcU1YU~ z#VyVYo-!(Tt6#ixEQ2NAo6q)ZseWA^b&cd%qPw9OcuoN<>#rA zD4!~Y>UVxP66zM&%#Cy&=8Xl*mr1B=WNZYLK-o>q{`r;bIVFLsLHW~n^%&tU!M9%1wO&^AW}E?ORhyD1G8MHC+iy+_)SlR_2Kg|!H)M3w%D z2#tGJTz{+)hB8w^IU9wD%57`%TjXojJs?_Uk(`P17Vx>!upu65#qbmDNTZ$Z!~1$` zOkPC58CHp>TJ@DA-HA*5^jM8z)0{#eY~t0^Ez`6Ed0Z7>G4X?&uAw?4Lex%|<)7z7 zN6(XT2zX%Hn#pGZ9i=-UmaZSKp|#2Ns`F)N zcV`B8uFu^jj_yEPkk|Fl&Ov(ud*ydE5DWuL!16SNAKEHK&48l6o)X?ct05ETY6v?# zOj`@WcF|<}wdI*9hmH!YBf3E0b}d{-HlY4&Lc3JdZ&6E0z`w*vQs8Y+P;?h|?q;~} zRNb+1*jz>?Zm(YlcU)Le!zo_~mlm)OC9fO3vwEsc#}9>PYv>(Fh&^QEH-NFzBD&rS zRtc+sOR7Vvo={7M94!u7nXPCk?SO2+U2FoWdJ}k*n!`pf11U7SD}VrTC`+YsxzE-D z#7fSsUr_qW@GBYDG#}%}NN&e+_o-3pDM(Uf*SqKI%^-KTfDTm}G_7{pYZ1d>Vk(LH z1h{S;0%ZWYafUtq7<;;X3fg{6?w~fceZ<87Gds(4Yz!&~5vW+7bV#+4I;QUJ;u@ze zK7x;}&nBDQ`(TW){?a|FzXG_Pyu^{djxL`hCJO{ zq|$l?ZO$%1(Kr%V3qY8hlhO|984^b-vgoakf$tj&AbT2H(?p3B3clP}-WO4S38)FMXXX)$_k##0DxkpylA^!v_&N%>?} zUL5px%fB%wu9&6=7T(=lbNG@bDTqkf^|Tonzq7iw!(F(i^+R`i08se;nMkO6GUg`s z2cXaw+KVl17qxmVB|$ilaa~mj1!^lIDD4wv-PKW#Nobo|Yl7l8wDo(6>i+7oozq^- z0G|i;`%J$+o&jNf|FcS{4du*w!7KQOpmys|P$FNjudrxlL(_K4M3hy{>wAj=y!X7u zV)q}7M^5_A{wH_5tP4e0rv|$&FOmYR>PVVPaW3!k};sFuZ33Xl&0sPZ`8uSshxiY z@K~zuYZK4ux#@h3@yi-{&~^RcJa`3@bVHAm=Og71D6`E-DvA8l<#hK8E`izD+ZlA? zM3y5s)+dJOqvCyoSumhipU`iJ;AAgiZAU^YwGOox%oea z0f>F5pC;vhOS>jhJapz^)~iA`vd}@a;s!(OhN+^d2DVqc#>mb0PRWLa)&wq(@wN}X z!2278I?6*fE~DI_%31s%V$TJ#=U4CNn@{lXCV_eAhu1UZRJ8jp z$skbRe53cEE5CIci*NuBY2C{kJfzDN&@CH2?_8-}$3MLR>8+-F&Xy6(s%Xm`lrRsW zKS3AP%ZXGy&>M8Bqvxkl#&{8qTE{^>5I0J|#`lG*BlI-g{mhHBwPYF#zT$@-8adGXePI3@ie*T5G@AI?6AkZ+)P zF_LRW*V$4JMizuF7oFNin>+_R8PN5>(J4e0Jg;<5H!+^ou32plV*=QdvDA&Xe_TR|AHOQakM3I ziX)3M2N!KWaVyQ6B7~+E2!s`>Pj_)R1&B{Qq?`c2G2!SfW3Lfr%Vj2S3Mw=p717H{ zCSZ8)6!d-GgJH=UNb;{N2dF_+{e^`FB=Gv)R5zc{<+G^@3nG(#UtbDy7ldOSZpqmv za#o1Q`B3=Cy$$4iO#5V~c?w6PfmI9F^66Y>1z0jTjZG}=+To-2*3`tE=>=EGA=Jxv zIjQ(BfZJmoG|V?XvG3AKb=<189h0~V^7Mpf@24H8PBP`YGu&^9kGQHm+)n%FVP;)> zn1nM2aK=^~@E1$L3P5lzzWHS0P;!D81l4MBEB78Jp@Im^!X8_1Nepi!5WOajKVw82 zjT4su<(rK`>6C){`2mhQ-7PpUx^mG!|F42-?;6B&#*_6`~?7&Mlv5OnK$f%T;|?xsMl{+ zGmE~T#AUr{>4kd!$!tWp4;8w^h2hPK-=^SWCjE5&cDnSuJpe*g^4NK=&x}YJggxNy zVGteWZrI2fm!9}Qhs4Z*46k+^O1`&;>|hoZTm32SMwg`mqzBxz@hT+fu0)nK1J3)V zgdc-@{x?HtCuO2Eb=V&Oy`g>Cv|V+=VWZ9QsyTVxzmLiP+7r+ZJYoRegb>I_YSO^s z=-U2r6rph1goj0|%O1%pdTi8ZAGcyZ$_uuZ^Bj$}j6>nq{=4flqrk*)@pcGC4aGZP z2EcCS8&%*N)QZ{zq2?p^)>lw$2dp;|S^)-OiG^mzchsVxMN}hERx&xHQjrYZw`Rz^ zZgF{!A5H(Y`0R?1D8QJKXnIu!Sz9yQZJRan?5xhyMl&$8zxLX?IZm>r5cE)SD9H?x zuXtK|witp#MYC5cz$`%|;V3BHKgWq%Moa+P(lrt2{xso^hue#Lm?X zlya;1Afg5u5G_lOy1$$Rw}Xf9jNl1)xv<7Slm7VRSv_d~)w%-;dZ5?=Qq6PRbKXgS ze@xs<4eJ62fq2xoWTy$W4h+)^IlzS-llul88gm>VVAaMj^eAHnOm)TsL-WbGTFK|m z?T6gcUvboO&KuDC7?^P)kon{{3IG8RBPnw88`>E}c`Hu-vGOH4P&GzY*_@f%M%-0U9K%Md^t~;^Tai@ zE?oF-y>~_)zWCTjSB4=|hVT;!Z*V*C1$8EuV_SO#J=QD}@LDGJW%#G(XKnY`U|E@7iFI~ppEbY`xBT3vdqk6;yvhGD1`YeiH?9&a#?X8D z0B3-9GisA^pIFH(_n4upVq*gIuRZ(fw>(lFau8ls!(Ij3S=Jb(uJEO8syt}r zI9MA2yqtpjb|3eHNpNG`8XZLdWlBnzo)~i$<0ZlSeb~&Dv*r7}if?uJ=1*2-U(eLm zl=+nTX7M$Frj5Z?E?v!Y^5&X^STME8DOOwpS>UGbl;Vd3MC%pf%y*cY|O;Za+C++h1zGJZ= z8<3VVo}p3`1ZL@3UMn_5KDo%#9Tao#Iy4{O(Bmy_VR0O7%D7|W^RfwM5|Jt{a~gUK zz!nL+e-RkUx}Httv587+8}V1L>sL@X4o3m-=<+Ef0!WcI>@OtJ)}H9a*TehuX?jHq zt%F+VCcubf^wZveSj7_cU9~6<>-3p5+2j7!9o!)X74u_j-FlrKVvW)NSeJ?j-4fT5 z(jq8LzGrY%vAJ9bUwE*a?)c>GHzAJ4a2@AlDV#psr#XCjWDlJ{+!{Hcv*0L3hmR=q^?!xHatN!1b6sN zt_qZMJPl%aC!sAr`=0!xbAAu{9>^#423C8^)sJ!1J8U{%lHtlRl|WGmz3FyW6zHh(AmL(tP28>|--&iO@^eJmFZi6fJII-&WhT_2dxK?Zs8R_>G>`M^F$9 zDR99XX9pgmMtbyjQUrY6o7!ad*+h=-PcLWL=&0fE$z*Z`Ma3x8$4;ZM3^sKc#Foqi zf;#cfRZCNdWMI?u==C}FD^yB8aT7>X22&^0vMY=w=Ii=8_isAtTT{3W_3TyKB00oj z4c%cMW)Odzt)HwvB=sW6;`bZ_>#L@+=D)XAUq&QoltAyZ+h%U$JlMiN5@$Bhq*k7X zXd;(-xqx_On6bgl| z&ZuLM6SRRwINk{-$Y?*F_rwJfp7Sp*Wd>?AF2Jrna)}*XCLjvz#6dKN)<>eHJDpk} z@N>U%c>Q{sOuhuX5H#)|ELuG)rtn6$T zij;2CRXJ{NZK8oA@k4<2g{ljk6sTAV#WwDVC;wt9`_Y46cKZJIa*O-Y)sE;UMf}rC z_IsFDBp6ahX_s5BB(l%aBglVy^3uP^F$4auKxe6K;?%26AOd? zPkA;ujY`&S1#9V$94~T*6rgK{pc0$3IkWcr(uC&4sb1T@WxXA3gZ{Y2<+x_ zz&wZEk2DP()9ytGV&W$IxH!uFz&mhY0bgLwS8a#NIBWY^kSyJtzt}uJ3W6(WZg~vV zEWRVtZig*&^FqQ8^FNqrMPnc_5Fe{`s^r7+05 z>aY33`%xMhl*J2bFNIJ(oG5^jc6hJxwja(rz7-TAj=O4Y^D0{G`rpaq#!ESV!BWiS z*WoJGGqg)d+llM$*QT1{Yic=Mn?w&Db!tiYY+D3#Ldo*>gz5*v>^p*Q&`JK)ZStB= z*rJ@mY3qK_!Q@<%ZHnZn2u`wjeK|}RI%;wftTe!KmmNu0PqZ+e+$aPjn7s*7-PR8E3(%y?sCXtrun!+^IWRT-0)@HhTUrdxm>8H+pr*Ybk)VNm7cy`8l>LWTQuSa%6 z+d8O(T^>jVP5aFoF50hOuGu2}zZ*a>3j<{!Fk-v=a?J%hEFjJCn5^!%ZbBdX5ZrCC zcB$w)-=gW?-?EH_{EF8tzNkf!06s7Gg{9H^>eNbIdjbXz9lQty-w5^57ewnbOzYmz z>s8;TcpXfuoMV!z#yqy&*`@in(L!U_t-Y97v(T78Y`hnX1JReiv$XX>dd2?Nb9DkagmBg{RxnGn2cBN|)PCw|KdKi@_s8TLW6KXUDBbA(A z0_=V&-?HFb;pw9~0SO!HOx3@3-oaq13aMygd=om0}E*Ou6+gWYy!j#|89yp;Y@wt|4GyI6T- zgkJNTUUnEbHAeUUg;d#OFgNe}Ipdk!HhG#x{WyTNZacaFIT%5w;=>tId?oBorR~m~ z&f`cL$Ih6~P!H#VuEa&cuh3WJ9{uGB3;{OUSoe;!mY4_E?MXlFU5CS^FHq-#%ASt{ zsD^a}9({$o=9om=veE~QGo_`EvKrKXUD;VgO)zc7d9%{I`%~On6Z;~*L}+{|L4abB zwlFKVT9&lNHZ7B_=K@1IpPi$(ftKiT=f&|^^J={T@m9BP?zsu&>dKu5lK}QW-Pz%+ zW5QkUtk|CS=5~X=!)|W?y03j78v>QCb7}W9*It&>5oKGDDl?0oSAS!V0QbJI<8!f{ zS5d`X5JsERPNVZS=f5SZtUlX$%ZvDswYn(T`_$o4W5S~A%Y>(g=>v$H+-_}WFZ%~a zDowCB`vM^5J?`lrN6c}X_?|pW3ZhZomhqg-OlOoW;r3^nbx4WTy-%CgrGA3w@o;DU z=AQ-YN8vP4IMR}Rn5cO$?wf9B-2=t-{(g78snDSmiWhabU~T$<$!k-7`-86M48L|i z-hSj%r;46ErKCl&_nPAOT%+^+Y5gFBYrZytMb4oOF|@?@$S~AfpqU} zZ%c!A-w$-{pkK-nXDJ}F;iN@OoX}m@w1ieUGgeOG@uf;)CUA6zs2kLGDTi~8&j>!9 zzFF(C5S^nr+k4)p4_B{2(NyyqXs^&th$4LXOCvMX{U#wHcP4svlv025>fin|C&4ZE({pkGBA38c>QdTLEq5=}f5TVo1_6IOj(*EnqNjFZ(p@7$*Enm#2R`p2<3G@G<~6O*%Y{ku?bpWX2zaBXk1}G zjcerg?}rRWZWOe^;^2oM0y>)T!=*@bglX0J;Tyk|VUHEwe^dKF@wtA?ka3I+q z^=d-lGTcf%jhz0{x{8UfWL_K!|r9Oot-# zAOVp3=nByzPx$rqvh_try#OEH)Bu%z6KuFIzOSR!p8X&OwSW$H_^Kk>1oeV1-*X?H zF4A}2<@NhEpCHPB9!1+c`}RObRhB~J z0>0#T02RY-`Me8{m_$*L1iya1>5vP}3UoxJlF6%ZGf-y>DzY|ChhH0T&^Ge5;%$I9 z-|O$3FnEy8e1`XxWjtPgDe9;TqXk`K)?uqT~24nFF)&a4|L!X@QSFChky32&evUE+M(eE(m3GapB$B% zOrFUr2W{)!CVPAoq2eyu*hGhMIV^x_*oB~46sdmibwL0q z!wK#UfWChO9RsX84Qmrzv`%Lp)?|`--@_lmn~<8{_=w5A(Q1-P0I40o&A>7(cy-R` zO~$+SiWvjT#83Y`3hLrO7huB}BLF#-X7$OV*VCV)koIA!tBGQ6n$Hf8i7-P`mf4wP z3?k*XB{k52I95_KQ$nEZ_JMeEtPAvN58oUznk@m&W~8|0QS^le(NL{h@Cqs|Mh*6- zP-e_~W00U|0Ef{?+P;sexCQV7p03NPOP=8&xH?RD&e8+#8eF3toKRv5D_e?i$4zKk zADm5ZVf~U6d!v#7((93XQtILP|f0x&CEVGIE%vye0&K`=jwfq6U5hmgAm%Y1qzSd zH?O|du4~fAPWL>W^I4qe;QOfn^VdY~Uf2O9yMZ$|3lkXIGHwBs|Ldt;&hLJ3eC~Q5 z2#mnTlfF;KYrlahUTcpGI=?gV2llPS_N9{N=!n`&Hi8X0b6Cnfdt?8csp3BMwmB}T zA*D~7qQY(jJy1|g{Z71GpEB4fVTue}d$fCak%x5yn>eII;0>d6vU>JbZBqzfi zW0b&-Q|{bTuXLv$+Dfn6$y(`$X16+{&O}kLqUZX47npBRID(+0?U|6mc&DNUuNvDa zA;$2nBHI&Bz@Xs#yFu+QuljOmk`GygIZ$y_|*f?L3W6=EC zw^}{vuqoc6!^gODS-6w<^Uno{F(;@!S$uN!?W8u<1>2-s;R@-!ig>SM($ux!nkSqD*$1Xy=wLSPeVnrR%;lx% z4Bj_sOxhLYo@YgX3jCpY@Ifh5I-;dz6KV0sy1J3ZFG(ei#2K_YQn z|G}Nb{*5w;yLmh7RVj=uy=J;wr_)Z$=bbur?NOEBGrW!-+_+p_)hC`-X;JFo!s8hG zBSqq#fT4F>OTAlC?+PqtpI_d#X-wPewhZRzxeggKAypYvm$l+Q07I2$7}ycFCc~!( zQ~`ivWQYJSV&E&qogP~PQpn>t-tz+cszG(H`C{(Xudk=_!p=lIV37T6EdYmt$i9~< ziQZz%=GF^J3o*pzk;KwP4fh_#=83NtvdK437!CqD#X!&KaML;3Fe`WSVtNNJp|3x zp`%iNSXjhJ()LoC7T;gR1&h0KP?`;fl=#G?oh6$yZFEQ}lYEXjEE zI&DPcyl;01DVdK*%!E8g4!%}dMGL~WHJIQ{`dJaBYjN%8ZN={9I4JNnYG z0k<;`SA-f|UawK`*)Y?^8yRaw_(l{=#T zbGG&xOuH6${#pNa`A6PQy^ecsS!s|!L5EvpM?;rswutR(Yvair;*K#uPm6z-GR2Z$^et<8>Bl0w@f8w^J>(t&P+*+=he&@v$8$Tg}{65$JIoM``&RU4k5*@uti_Y)~mU@ z`F>#^-y?rzs~5r6CtrH5qhsn*TJ*}PL}&YoPnqqzfWfBsRf|4tol)9?&Us^EyUGK* zb;6c4?Xv{72>3$ift`qJK5AuG0hpYed3z@Pt8)>Yb9$YraV{E|=Qh%yQceX+&)*-_ zmVw4d4X2>x|r47A+%S^iG@g;_#q2)UVPF>)^Qi;b+l^Joki~QmX40rkSK&q&Oe*cVHhgfhDC@kw{T{}deefuSEh;r3dBf6@1VVvLiE${*A&Nl(O`R;=W;{@?dwj;z!y={u zUeFyvcY%Z>s6!qc>j<-ej?=lM*YJUEetOV8t#Xy^h8#i!bT`saG^MZKfNxGT*IJVJ zb0Jh{C5BqPj-tWhM%v^cB;JCqVBh1A9TDc_Co8t`^W}7lqLDQwa6GrZi2{`Vz0!tEsf<)=}na zDeln!zP5J6p6U!Fr3+BjmE+2F*T~nGKvM9=yNpbrN5r0SK88IB2L^Ul z6dWub<+%Xf)XOAvvu97pEea=Kqosk#>L_@!xSOm4OE_W91D;A8%98yE8t)i%XvUmh zC&M*BH@r`RiIp{}dfj1+6@L~MGrD6@NRS3m-@3)ErIaJ-&lE6UXlayb-a(0WrpiO| zdDw--Gfa!9orbah=F&+Z6?1zE3i#<@3RwsjuVKExLD0+gor6?Fpc`^pC8yQo5H1@q zhDysoGECDVcm#O+OY9Bt9(;*z*L7NdHpffLC900LzUE#r2G8P$Y`-rY)mFiymUsQB za5Pv)Ou!&;KNl@)i0bb57|{jex-b|L)UGKo*3k&w(L{zLKqkw|k_`z3b&o8e8mI-D z!aq^dJjsc^qeOA-~>bBOXh4335( zaNj?k4OQ`g_En?ecEfTv>xShD0P){8%xgQEzCav$^6$wp!d3lCrrMuP;9uIf|3`-X z4zUqH8p{xIX z{Ofbh&T1b)1pR+AQqWYdxgpVQ%gpGS0_rd~hA!hkxxE4;`oOp!eUS@TlY&iU6jQ7hj;@1%Xm zejzsal-U}ERM^4Z@LbCMp{#-OgXoio zHcU6=P;?HV36+vwEAIx(n5r970p{ZJB4z{J4Pm@HYllKan5I@!*gaym8yFU|x^4nC zEH~9_kM49k4C0l#yMGja_Fw-1)4_uT$!atMy+k@raeSm;OJMrn$HH1`!?8R1^*GuWmzdUmSP zRllz~z-Dii1!rufvEmn5y73`gcY6|mB8YC$+t^&oc^a_h1;gAyWCaMV7vD{2Gdmt5 zY)Y+SEe)rjLC6z*HBo9H0qFC|iI?zoGhYHxsOq71{Jqrs43{-$6@76N2=sfq~aPL@;vr-(8=r7U~f}64k zNM#;-8XdjH8}tR(NY}l|*8s<}jEC$(_QQ9>!~y@>bnqbs2rS%ceWwc#lTMf^w2pqJ zeGQ#MxtYzGp0aOf9x-6qiR(N@`63!SMN~MJ;XctP`2$%&J=X(^QP1_m6>UPVYfO{1 zIj8B1iIb+#eR9J4GpluW7^J>7Z-@}L?amq73(n!Nc4}Z66lK@XwJGr%sW+i)5x3Nw zbI#&SGP-JippyZt6?8fsmnJJB$q?rD_Lo|mnrFB@0OslUD6~M_@Jh-bUA4+Eu|&$T z{o}wOh@)A{U#aziBxX2Q&TeH63^mR+6M{u_oqQlT4!BR@bJ*FC&WC}*RPYLdOD$ah z%(1_GF)IL)L>;XEY&Ah{v^?(j=?u0rf{1sPf1Nj%PY7;4`ZsiAFozfJ0QL{}1w%1+ zZx^>)UE7Bcj%PZmkw9Yk(peIZnh6eUfEa!kI z?5yMJqZjw=k=0|c(H%m_UGDX{36oi$Iz}$3iywWeqG>$RcZ%_zSCA%fH`01skadn@)!C-S?`9-lv=fh*g8)z{O+W{Or}x6njwI z&FZV0i8gRwWMBb^5uziV`F7{w9$nj@$)Au#dL|xB7>x^Xc=Woq)TGHgXIL zoq|rMc+Sl?J6*GbMGrGJlW}nvg>0#iN%f!pv-!ANJ7>P*VC;fgsTX9cbmvAby4#s%T+cL# z2e}p6gRaO!n|-3LAs9^kq@bA3azgFQPa5SiyH&b$x9^%`qs2h+ZgF#+mkl}a=W$Rg zN7{5tyZpko;2qffuVUWgNS$tWUr4qv*g;dS5^~JX>KpFY>-(!FaKr7+6DvC{E_Axc z|K=!>zoYSg{Pa%H`q$wX5)ybg=sSJqPly&b2gNszzK5LgTO)xA>6c{-hdD4&Dyc44c>Gx3S~fIiICI3a z;t+4xM6Y-iveFG67g&>(g3QvQk8!y2&5iXu(N+aZ^&cNU5dIR3VfI|&`a%t^(QsJ2lu7lBVH7$+$P(+JM^2^D?N4J%d8CH0i7FI9h+4Q7H|1Xm+!aE z27Sl|4!1Va9oUJhzDhU5H}aD{-h8|-1MdzvV47kwl^hG z3I+{U|A6OAT`NI3w6@gXHvPUL@G>TBDR#b#2L2S)S>xqK?gkE* zOI=fIv(vrpvq~Ozx+3ogeC!Cb$V>^_%T|-G>CfJ4Uv0jTE4tp5-CJeXmNY;hdYbD> zzGr#SGT_=ua@QG11V#7bStq9fi+$%}Z0YojSa6UyCcZ)<}N)xw)!yK57U6?rW*a6fxau^hCpP;)Ff{d?-#2Av>0X9;Kvloh z%%cS#60d%Xen?ZaU$Mu?rr681%eF7w7<{-+%>^d6@b2P@@kMkVn(6b$y*4Nci!d!;Os$0kJ)K5KpPlkyHl|M!EoI0ahsM^KD+HJxMFMbE8x} zHk+7ctf}OOm6HnkAW~&d#9L_f9LhbR@sr!JF8IqXWk)TwlIPRkgdf!D9e{VlSWh9= zoTgTNx_iA$ClRfMsB7QCRFp(z37$}Us*EF}7m`JK`A4eP1Z)in&Tlp1R~nOAjsn(7 zpKdm&ZGSlGY~82h->(fLv+%aeVS$nA$jQ$hds6j%I{RA zO&YA<$kHtsRMj5tCASwe(8043{v+vouL{mjpJ|&Vl5LvIJ{1~o4{qNt?ObtVOX@M{ zOXvS-w~Nu8Y0tUgW$Vcjokj}$bGN=+UoUgrJO<;&65;1W>nVq7nJLNQx&`dr`MY=N zQ&X0NYUEuEdd>t)kY4^#PWJPlZo&h}DxDwBo>k>FjJs3Euy8C*vsqxGkYHmKl|Pr7 zRBHB#1f8M_!8HKCkK&6t_3_4lObx+);wgT_nmaibxXviZyMNUq?_hV}^;JtrWhvsHV14+t37f4>uzbVnjf6`=0 zH;{u7%Xkq{wsFty-0bZ%u)}KL0>{IFPF&aZ)WT6jx0YT7(@0mfi{n6ddfm$ecoIV>J_Smt|7&|dRaHjz_($0O7kI_L_-D9aG&-Yy{==q#we~XKVURDqzwn4v zyChpwmE%^^$V>KxiS!SscAhL{;`*_9lxG_>@~WJr=eo z^RQpJ8?wLk#@Hsgt~*w=E=JEpGR@1?yhUjc!fPQe13P_bTOK-tqDB>LXpnZFV(WNk z-L=JX`cX|z#MIw`Hz3;;UsWL*bt07o!On<{7PW?XZ8)0?Rrkc~6_x;Le-Z9isRKRH zVrwINVdd+o3X^#G-k7eOaO<|(nAz&#EBn!FR~JLNaubWU=%vqBbAds1_ViRoTF@+c znNZY~smALVV18PXojWlNm0RVa+m8ahfQ?1##p{?rt|QKRioKn<(o%V>h?E0 z7kE*8^T+Q7_V9_$Z!y@xX4$Ks9^Eu%d0$=3N2 zQ%ZcKi;0CfDm3Cb>7o>yKZNC|hV)Ek7!uEd4f3Osi{aVsEeg_Qty^FCDk3$8f3IFy z)%l2>%ry8WX)zclS@Dvd?VXPy&AUW7o>ENapaOZ?cx-h>LDshmd1Xt-NO7CrrVMay_P75N#ItHMooN9mWN$`}dFkL&S zz+(JDV@mxHdQVW05^}ZlhRAgEpN@OF&S7M%ls67GwncflZBNIR$cL*nm#3)-&{=N$ zSpFy_4>7K6+qwEi`vz~yM?k#oH?p_uRV01Oe+Tg%^Qg-!-|c^WD@Inr$<*TzDH&my z2`)G_qIAIGr38V${`ceo>yAegV_EM;W==}O-azcvqS2W!#qRGu;G0}{lIEo%-zOcB ziaK&K55;e+pFH$ynNA_Y{Pu3yVC8`|Vue&c zI6h7!iwy}~AWTx8`i^=}1wuLU%xlk5I?Y0`-$a7OcWtQN&7>lQcP`qg%Cwksqt@}1 z!(hO#uUnYqdrHCKpGeQK89K+mY-2$loth>8b5`G7LdyFeI)V#2Aj{hDif)Eb(EPBa zrQ~$kl(jtf!=svU~Q`-!k$&w550?5nn$c zxIGb!@K+@J6QA0n7*{tYU?>GOzmjv*Tb9$;bZj48C2n*X@ia`&?GvI{XB?0WnB&{| zH5(Za!=vuWVYt09HJ{TGo{O(At8z6e${8Mf1!DXkn;+h>Z3Kv^UwDaJH6Ii{Sz^ca zA)mjp7SxV^mT6q0GX;T4u3Fk+XDM(6w9AhJOc!>7-#2!9vh7O}s>Tx5eJdPaJ5R8` ztgp(2zz@3pAM10rF3)0wK&Dt^Jz?%^&jL!`u>;~xxfPsxvR5*c-De+y|H5XmXxi2H z^TN(47o%gprCyKuyP0c9A_fJ?;_AxxlI1s2y*v%IJ057qux1?-M92#A2KBAhSK8~^ zTY9&A9GPBlT@`D*c?r>zuDs7vmf&!le7&}R%h#$iA^+1!u~Q}B|8Qmbp^GK2Az*bhW*gqR*~UJD&Q}KVmJKF~WznrGoVWxeuTnFH|3SyuZ1(#-7+`4JPPzz zS8`pRVvU${&$i={|3=~_3a1-L@0N-&`4C|TkgVBwR83TOaFZ0!t?qs z<|sa&Qq-W=|B#!hUGHuG?#n)*S>BKm2h1VBjp zP4ZSUe2dY^hgCKD(@&Qd>e~OnP~0Irz3wsng1Du`QMqF{6D?cVgbgzf6l}1 z`$q=5?olGUnfw|Q;bB&?J#Kr#Hd}@XF)TE8vg=7|4@D16WQxFygPcK7~#;dUccdrE_nKvLpI#nt!5z-+{aVJ(KS}wAjXZ63y&Aj}+Jq<^5V2;~@ zHgUBp+8rD^tJCMdJ&TR0SyW*%rN72*_wMoGT31j`936mpkmqo_agkYoS0LOg9p8Mm zGR*_MCTdS?#Q{)^wU9f6ItYn^GE21saJ{d&QBv;j?Pp+Y?S+mc?+=?Gzw&u! z!ok8SP(JCxL^;A^0-^?PHW-=)RMd^b03gVvob=iT2_Bv&9_=DbR3xZU6ty4nd4`P9sh`OKR7sURA&Xa8W& zH+T^8!46V-T+Rij+_a6U@a8fO%P}wZad@UI0^VqO}7SQS(JT512&9CO?!LiF$1V@sy}gck`X-mh@h=59sqh z?Om+S<_nPF7E%WiG3~ z`=lHgvN~sJr7XJo`7R8f9^nTPd?+c~{*O;LxGP!Y!2bRxND_XWtb^g%iRw>*2R%HO z({zcRd`odlKm&Hp#ct=9^+K+K5lWH$;ayCa@os|wuo}vpB zKL}x6?DdD>*#g@JdL#vgW32}oz`tG#e>o>EjA140-rfN@N=kxp1Kd8{`y8Os(;~G3 z5;%AZe=KE__Nr+q<;_HW6-*1)*OT>9UMtHhtU?dI%PDs zXQK3ZXgUr|&Z8yALC(TaQUs%es}NW?e{!%S{YH09_bk8J%j)glmf`xbN9-UHRxdIm ztYqcYCPbxu2`N&_HSp+(-e5U}ECMlJ>q7eD>c59B3*w-hsh!pNwl!d4-yPa3>uHD} zA*Pc58S$ysrLOKue?;z~%1-^-*@AOx#8fpCx3-fkTf*x)9|@Y;xz>Cgi16rp%iZhJ z1M$2PUK~fmu50FD^Cem1J_`j?Ptj%lpHNp9ZDt z`#uHif&z(@?ReHwd%E&X3DUW@d7EWCA^fuIo+6~=1c;&#($|xI=bb9{nW*t`?ceir zg&pZn=z3LHoDmpaAFFm~p_czE89BRUs>(~nUU}rk@!;@bNGh}*jg^-w@*CN%K+~1? zp7h9hnKuBVb8HY|ccxwyPXBxro_lVg^o-v+nJlB*#gsFdFcb42S=qQ`VA5D@X`{!V z1n7Ux{NG7b3+B?478|!!4sGs}Ir9pksC7B8QHi;FhKU|N;on4Hsgc|5sOhi%odHNl zU35A-@Z_U#MS!luc(Y2>(Q^;?*eV0p9~u-*aLy09Q8QP!fE`uUI2vc{m*11U5w?Q0 z&@w*=dk+x47I7K5+I0nI$y$xQ#&?Klrmn)A?P9ci)rsH>BVcSnX4ap}Hs@(!RO9H; z`n#e>vc)v;-Ox3f{x^5`=9T&UB2z_7y$m4f}N+Z&75qhnw2P5fvO zKa?K03nWkFo6FU^8wS_6h)T1M!6g0&`r}$2TU%6%z`^KPijhZXr+3zj-}}EE-v}u%sfszAuoO6nX+ITyC>nB{PxeZaRH@nB-pET*ru|Oz zn5FQadz%Wkz_y{xrU+(MOlQ1@9NvmB$h_PhoNWL8n99w~cByf|^10*qA(jCkToM=N zDL!2|OXi&H($dgf^x#$$$pa9xv7SLXz`tkAG)wXEh1fm0-131#i;qn)!Vd;9fA|1V z2PPri{Ah5f?>*1Cwfl6EVtO5>UKKGUY=c+)T&_a;a8rv3g8+kCMNHs8obuX+K@8Kk zFRMKb)D^deB>i>j1M8b~bldo-16RAMv{KG3tzW9v$Rry&^mbaPL{Gmm_c6HYYS|C5 z?V9+8=e)fMhBkk9*qNU&;j<30qlp}RR-t&C{BdLAcSuX{8$ZPO{heZ-k;aaw9q;?F zf}$1d?$Y+imkDcPyY(N@UWI)*=k{_~2J_l_#JU?F&FPGl|KIiipzJV*Rk32ShdZqtoE_-GF;-I+O;^H)r zEUvHr^NHf<@)X1%?AU%-G@jzO`cA1y{A5?^nF&GIUZoO7Z@m&T{5fk*Ap!ZtLrJ>c zP#=8yeQO*TwQi@;tAT=G@1Et_uS4>?B)|8;f@e)t;!cr)wbFkd73$R|$uEY8>mZhE zoX=-9ya5P(VpeR@%zuQ(Femi6JkT2K{0#dOWcLmKTQ2Ww{ljg+x^u)!N>kzP%;UX%+?dpnT#+C2)Qsxl?rWOmKpjU z^iJyBpGOug^Zq|`X#Oc0(aQ55#oxQ4|DO#upLv5*RTpTe?{D0i8z^uhKE#?>m1WMl73lsZ5qwF-CT?H{%=fL_60dN(IAyfC88~!~Z{S7a&okr6-~*14k7utQ5AA$+iO&<>E;_iKQ1 z24%iN0)#op1gF$c>g;&|ku@sbJhcw?<}x3ByIV3Gf-3ZGQ~w=rI_?{{6W%=F%V6GhpGWdyfF4 zF$Joq#$Wreae$d!GRnCH6R&=sZ?d4r%L?4zvjgD(m`Fhm&b!A_qEnmfqIMd6+o+U9 z2BPq^W`m%*eGRgkX5hl|gs#W%}s^<{s5Zt3GgdT0a;1QC@9#w#e3_)9k4iJ*NJW0r>Ocf+3aTH zo*#4zGNI`G03si%3^4LP@zMo+X}dt>1qCcf(Ne>EfnTw-_XbVA?5_2_&AQK+}9fWeR(iR4Ut#kZ_l28 zD*Rj?OMe`V2|3xj@AL~IV6YR~Y!T&S;9X}a;X3+_{dV_0s6pn#X7vtOfYRVkQgq0T zG5K?Y)382zHpgu~{@vr3wHRfiR$m@7uUM1^r2=@_9XbDxoxiUTg;^u?`!egJpk~mC^NEtw1{ItdAVqwiZE;+ z#VGU+TqTt@SD@-l2CdfEt`}%tY3HKz55@&t==o$hOvJ}I~lEbTR}Z+<{^RcV!9>EjQg~q#Wz8S=cvba

w>aCe3djqLmB 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
%L$dsU9*yy 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 diff --git a/Libraries/Components/TextInput/TextInput.ios.js b/Libraries/Components/TextInput/TextInput.ios.js index 2653421be..02fec4d5a 100644 --- a/Libraries/Components/TextInput/TextInput.ios.js +++ b/Libraries/Components/TextInput/TextInput.ios.js @@ -39,7 +39,9 @@ var RCTTextViewAttributes = merge(ReactIOSViewAttributes.UIView, { autoCapitalize: true, color: true, editable: true, + fontFamily: true, fontSize: true, + fontStyle: true, fontWeight: true, keyboardType: true, mostRecentEventCounter: true, diff --git a/Libraries/Components/TextInput/TextInputState.js b/Libraries/Components/TextInput/TextInputState.js index 7c5af440e..f22ac7927 100644 --- a/Libraries/Components/TextInput/TextInputState.js +++ b/Libraries/Components/TextInput/TextInputState.js @@ -37,7 +37,7 @@ var TextInputState = { * noop if the text field was already focused */ focusTextInput: function(textFieldID: string) { - if (this._currentlyFocusedID != textFieldID && textFieldID != null) { + if (this._currentlyFocusedID !== textFieldID && textFieldID !== null) { this._currentlyFocusedID = textFieldID; RCTUIManager.focus(textFieldID); } @@ -49,7 +49,7 @@ var TextInputState = { * noop if it wasn't focused */ blurTextInput: function(textFieldID: string) { - if (this._currentlyFocusedID == textFieldID && textFieldID != null) { + if (this._currentlyFocusedID === textFieldID && textFieldID !== null) { this._currentlyFocusedID = null; RCTUIManager.blur(textFieldID); } diff --git a/Libraries/CustomComponents/ReactNavigator/ReactNavigator.js b/Libraries/CustomComponents/Navigator/Navigator.js similarity index 79% rename from Libraries/CustomComponents/ReactNavigator/ReactNavigator.js rename to Libraries/CustomComponents/Navigator/Navigator.js index 004908d57..a8809ad55 100644 --- a/Libraries/CustomComponents/ReactNavigator/ReactNavigator.js +++ b/Libraries/CustomComponents/Navigator/Navigator.js @@ -1,16 +1,38 @@ /** - * Copyright 2004-present Facebook. All Rights Reserved. + * Copyright (c) 2015, Facebook, Inc. All rights reserved. * - * @providesModule ReactNavigator + * Facebook, Inc. (“Facebook”) owns all right, title and interest, including + * all intellectual property and other proprietary rights, in and to the React + * Native CustomComponents software (the “Software”). Subject to your + * compliance with these terms, you are hereby granted a non-exclusive, + * worldwide, royalty-free copyright license to (1) use and copy the Software; + * and (2) reproduce and distribute the Software as part of your own software + * (“Your Software”). Facebook reserves all rights not expressly granted to + * you in this license agreement. + * + * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED. + * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR + * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * @providesModule Navigator */ - -"use strict" +'use strict'; var AnimationsDebugModule = require('NativeModules').AnimationsDebugModule; var Backstack = require('Backstack'); var Dimensions = require('Dimensions'); var InteractionMixin = require('InteractionMixin'); -var ReactNavigatorSceneConfigs = require('ReactNavigatorSceneConfigs'); +var NavigatorSceneConfigs = require('NavigatorSceneConfigs'); +var NavigatorNavigationBar = require('NavigatorNavigationBar'); +var NavigatorBreadcrumbNavigationBar = require('NavigatorBreadcrumbNavigationBar'); var PanResponder = require('PanResponder'); var React = require('React'); var StaticContainer = require('StaticContainer.react'); @@ -72,27 +94,151 @@ var styles = StyleSheet.create({ } }); -var ReactNavigator = React.createClass({ +/** + * Use `ReactNavigator` to transition between different scenes in your app. To + * accomplish this, provide route objects to the navigator to identify each + * scene, and also a `renderScene` function that the navigator can use to + * render the scene for a given route. + * + * To change the animation or gesture properties of the scene, provide a + * `configureScene` prop to get the config object for a given route. See + * `ReactNavigator.SceneConfigs` for default animations and more info on + * scene config options. + * + * ### Basic Usage + * + * ``` + * + * { + * var nextIndex = route.index + 1; + * navigator.push({ + * name: 'Scene ' + nextIndex, + * index: nextIndex, + * }); + * }} + * onBack={() => { + * if (route.index > 0) { + * navigator.pop(); + * } + * }} + * /> + * } + * /> + * ``` + * + * ### Navigation Methods + * + * `ReactNavigator` can be told to navigate in two ways. If you have a ref to + * the element, you can invoke several methods on it to trigger navigation: + * + * - `jumpBack()` - Jump backward without unmounting the current scene + * - `jumpForward()` - Jump forward to the next scene in the route stack + * - `jumpTo(route)` - Transition to an existing scene without unmounting + * - `push(route)` - Navigate forward to a new scene, squashing any scenes + * that you could `jumpForward` to + * - `pop()` - Transition back and unmount the current scene + * - `replace(route)` - Replace the current scene with a new route + * - `replaceAtIndex(route, index)` - Replace a scene as specified by an index + * - `replacePrevious(route)` - Replace the previous scene + * - `immediatelyResetRouteStack(routeStack)` - Reset every scene with an + * array of routes + * - `popToRoute(route)` - Pop to a particular scene, as specified by it's + * route. All scenes after it will be unmounted + * - `popToTop()` - Pop to the first scene in the stack, unmounting every + * other scene + * + * ### Navigator Object + * + * The navigator object is made available to scenes through the `renderScene` + * function. The object has all of the navigation methods on it, as well as a + * few utilities: + * + * - `parentNavigator` - a refrence to the parent navigator object that was + * passed in through props.navigator + * - `onWillFocus` - used to pass a navigation focus event up to the parent + * navigator + * - `onDidFocus` - used to pass a navigation focus event up to the parent + * navigator + * + */ +var Navigator = React.createClass({ propTypes: { + /** + * Optional function that allows configuration about scene animations and + * gestures. Will be invoked with the route and should return a scene + * configuration object + * + * ``` + * (route) => ReactNavigator.SceneConfigs.FloatFromRight + * ``` + */ configureScene: PropTypes.func, - // Returns the rendered scene to display when invoked with (route, navigator) + + /** + * Required function which renders the scene for a given route. Will be + * invoked with the route, the navigator object, and a ref handler that + * will allow a ref to your scene to be provided by props.onItemRef + * + * ``` + * (route, navigator, onRef) => + * + * ``` + */ renderScene: PropTypes.func.isRequired, + + /** + * Provide a single "route" to start on. A route is an arbitrary object + * that the navigator will use to identify each scene before rendering. + * Either initialRoute or initialRouteStack is required. + */ initialRoute: PropTypes.object, + + /** + * Provide a set of routes to initially mount the scenes for. Required if no + * initialRoute is provided + */ initialRouteStack: PropTypes.arrayOf(PropTypes.object), - // Will emit the target route on mounting and before each nav transition, - // overriding the handler in this.props.navigator + + /** + * Will emit the target route upon mounting and before each nav transition, + * overriding the handler in this.props.navigator. This overrides the onDidFocus + * handler that would be found in this.props.navigator + */ onWillFocus: PropTypes.func, - // Will emit the new route after mounting and after each nav transition, - // overriding the handler in this.props.navigator + + /** + * Will be called with the new route of each scene after the transition is + * complete or after the initial mounting. This overrides the onDidFocus + * handler that would be found in this.props.navigator + */ onDidFocus: PropTypes.func, - // Will be called with (ref, indexInStack) when an item ref resolves + + /** + * Will be called with (ref, indexInStack) when the scene ref changes + */ onItemRef: PropTypes.func, - // Define the component to use for the nav bar, which will get navState and navigator props + + /** + * Optionally provide a navigation bar that persists across scene + * transitions + */ navigationBar: PropTypes.node, - // The navigator object from a parent ReactNavigator + + /** + * Optionally provide the navigator object from a parent ReactNavigator + */ navigator: PropTypes.object, + /** + * Styles to apply to the container of each scene + */ + sceneStyle: View.propTypes.style, + /** * Should the backstack back button "jump" back instead of pop? Set to true * if a jump forward might happen after the android back button is pressed, @@ -102,14 +248,16 @@ var ReactNavigator = React.createClass({ }, statics: { - SceneConfigs: ReactNavigatorSceneConfigs, + BreadcrumbNavigationBar: NavigatorBreadcrumbNavigationBar, + NavigationBar: NavigatorNavigationBar, + SceneConfigs: NavigatorSceneConfigs, }, mixins: [TimerMixin, InteractionMixin, Subscribable.Mixin], getDefaultProps: function() { return { - configureScene: () => ReactNavigatorSceneConfigs.PushFromRight, + configureScene: () => NavigatorSceneConfigs.PushFromRight, sceneStyle: styles.defaultSceneStyle, }; }, @@ -128,7 +276,7 @@ var ReactNavigator = React.createClass({ } else { invariant( routeStack.length >= 1, - 'ReactNavigator requires props.initialRoute or props.initialRouteStack.' + 'Navigator requires props.initialRoute or props.initialRouteStack.' ); } return { @@ -151,7 +299,7 @@ var ReactNavigator = React.createClass({ }, componentWillMount: function() { - this.memoizedNavigationOperations = { + this.navigatorActions = { jumpBack: this.jumpBack, jumpForward: this.jumpForward, jumpTo: this.jumpTo, @@ -166,8 +314,9 @@ var ReactNavigator = React.createClass({ popToRoute: this.popToRoute, popToTop: this.popToTop, parentNavigator: this.props.navigator, - // We want to bubble focused routes to the top navigation stack. If we are - // a child, this will allow us to call this.props.navigator.on*Focus + // We want to bubble focused routes to the top navigation stack. If we + // are a child navigator, this allows us to call props.navigator.on*Focus + // of the topmost ReactNavigator onWillFocus: this.props.onWillFocus, onDidFocus: this.props.onDidFocus, }; @@ -798,7 +947,7 @@ var ReactNavigator = React.createClass({ i <= this.state.updatingRangeStart + this.state.updatingRangeLength; var child = this.props.renderScene( route, - this.memoizedNavigationOperations, + this.navigatorActions, this._onItemRef.bind(null, this.state.idStack[i]) ); @@ -842,7 +991,7 @@ var ReactNavigator = React.createClass({ } return React.cloneElement(this.props.navigationBar, { ref: NAVIGATION_BAR_REF, - navigator: this.memoizedNavigationOperations, + navigator: this.navigatorActions, navState: this.state, }); }, @@ -857,4 +1006,4 @@ var ReactNavigator = React.createClass({ }, }); -module.exports = ReactNavigator; +module.exports = Navigator; diff --git a/Libraries/CustomComponents/ReactNavigator/BreadcrumbNavigationBar.js b/Libraries/CustomComponents/Navigator/NavigatorBreadcrumbNavigationBar.js similarity index 89% rename from Libraries/CustomComponents/ReactNavigator/BreadcrumbNavigationBar.js rename to Libraries/CustomComponents/Navigator/NavigatorBreadcrumbNavigationBar.js index 3f16e44cd..3a20e0533 100644 --- a/Libraries/CustomComponents/ReactNavigator/BreadcrumbNavigationBar.js +++ b/Libraries/CustomComponents/Navigator/NavigatorBreadcrumbNavigationBar.js @@ -1,19 +1,18 @@ /** * Copyright 2004-present Facebook. All Rights Reserved. * - * @providesModule BreadcrumbNavigationBar + * @providesModule NavigatorBreadcrumbNavigationBar */ 'use strict'; -var BreadcrumbNavigationBarStyles = require('BreadcrumbNavigationBarStyles'); -var PixelRatio = require('PixelRatio'); +var NavigatorBreadcrumbNavigationBarStyles = require('NavigatorBreadcrumbNavigationBarStyles'); +var NavigatorNavigationBarStyles = require('NavigatorNavigationBarStyles'); var React = require('React'); -var NavigationBarStyles = require('NavigationBarStyles'); var StaticContainer = require('StaticContainer.react'); var StyleSheet = require('StyleSheet'); var View = require('View'); -var Interpolators = BreadcrumbNavigationBarStyles.Interpolators; +var Interpolators = NavigatorBreadcrumbNavigationBarStyles.Interpolators; var PropTypes = React.PropTypes; /** @@ -46,12 +45,12 @@ var navStatePresentedIndex = function(navState) { * @return {object} Style config for initial rendering of index. */ var initStyle = function(index, presentedIndex) { - return index === presentedIndex ? BreadcrumbNavigationBarStyles.Center[index] : - index < presentedIndex ? BreadcrumbNavigationBarStyles.Left[index] : - BreadcrumbNavigationBarStyles.Right[index]; + return index === presentedIndex ? NavigatorBreadcrumbNavigationBarStyles.Center[index] : + index < presentedIndex ? NavigatorBreadcrumbNavigationBarStyles.Left[index] : + NavigatorBreadcrumbNavigationBarStyles.Right[index]; }; -var BreadcrumbNavigationBar = React.createClass({ +var NavigatorBreadcrumbNavigationBar = React.createClass({ propTypes: { navigator: PropTypes.shape({ push: PropTypes.func, @@ -68,6 +67,10 @@ var BreadcrumbNavigationBar = React.createClass({ navigationBarStyles: PropTypes.number, }, + statics: { + Styles: NavigatorBreadcrumbNavigationBarStyles, + }, + _updateIndexProgress: function(progress, index, fromIndex, toIndex) { var amount = toIndex > fromIndex ? progress : (1 - progress); var oldDistToCenter = index - fromIndex; @@ -231,11 +234,11 @@ var styles = StyleSheet.create({ breadCrumbContainer: { overflow: 'hidden', position: 'absolute', - height: NavigationBarStyles.General.TotalNavHeight, + height: NavigatorNavigationBarStyles.General.TotalNavHeight, top: 0, left: 0, - width: NavigationBarStyles.General.ScreenWidth, + width: NavigatorNavigationBarStyles.General.ScreenWidth, }, }); -module.exports = BreadcrumbNavigationBar; +module.exports = NavigatorBreadcrumbNavigationBar; diff --git a/Libraries/CustomComponents/ReactNavigator/BreadcrumbNavigationBarStyles.ios.js b/Libraries/CustomComponents/Navigator/NavigatorBreadcrumbNavigationBarStyles.ios.js similarity index 73% rename from Libraries/CustomComponents/ReactNavigator/BreadcrumbNavigationBarStyles.ios.js rename to Libraries/CustomComponents/Navigator/NavigatorBreadcrumbNavigationBarStyles.ios.js index c71772c23..7bc78ee92 100644 --- a/Libraries/CustomComponents/ReactNavigator/BreadcrumbNavigationBarStyles.ios.js +++ b/Libraries/CustomComponents/Navigator/NavigatorBreadcrumbNavigationBarStyles.ios.js @@ -1,18 +1,39 @@ /** - * Copyright 2004-present Facebook. All Rights Reserved. + * Copyright (c) 2015, Facebook, Inc. All rights reserved. * - * @providesModule BreadcrumbNavigationBarStyles + * Facebook, Inc. (“Facebook”) owns all right, title and interest, including + * all intellectual property and other proprietary rights, in and to the React + * Native CustomComponents software (the “Software”). Subject to your + * compliance with these terms, you are hereby granted a non-exclusive, + * worldwide, royalty-free copyright license to (1) use and copy the Software; + * and (2) reproduce and distribute the Software as part of your own software + * (“Your Software”). Facebook reserves all rights not expressly granted to + * you in this license agreement. + * + * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED. + * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR + * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * @providesModule NavigatorBreadcrumbNavigationBarStyles */ 'use strict'; -var NavigationBarStyles = require('NavigationBarStyles'); +var NavigatorNavigationBarStyles = require('NavigatorNavigationBarStyles'); var buildStyleInterpolator = require('buildStyleInterpolator'); var merge = require('merge'); -var SCREEN_WIDTH = NavigationBarStyles.General.ScreenWidth; -var STATUS_BAR_HEIGHT = NavigationBarStyles.General.StatusBarHeight; -var NAV_BAR_HEIGHT = NavigationBarStyles.General.NavBarHeight; +var SCREEN_WIDTH = NavigatorNavigationBarStyles.General.ScreenWidth; +var STATUS_BAR_HEIGHT = NavigatorNavigationBarStyles.General.StatusBarHeight; +var NAV_BAR_HEIGHT = NavigatorNavigationBarStyles.General.NavBarHeight; var SPACING = 4; var ICON_WIDTH = 40; diff --git a/Libraries/CustomComponents/ReactNavigator/NavigationBar.js b/Libraries/CustomComponents/Navigator/NavigatorNavigationBar.js similarity index 63% rename from Libraries/CustomComponents/ReactNavigator/NavigationBar.js rename to Libraries/CustomComponents/Navigator/NavigatorNavigationBar.js index e1e27b3df..4e6c7c330 100644 --- a/Libraries/CustomComponents/ReactNavigator/NavigationBar.js +++ b/Libraries/CustomComponents/Navigator/NavigatorNavigationBar.js @@ -1,15 +1,36 @@ /** - * @providesModule NavigationBar - * @typechecks + * Copyright (c) 2015, Facebook, Inc. All rights reserved. + * + * Facebook, Inc. (“Facebook”) owns all right, title and interest, including + * all intellectual property and other proprietary rights, in and to the React + * Native CustomComponents software (the “Software”). Subject to your + * compliance with these terms, you are hereby granted a non-exclusive, + * worldwide, royalty-free copyright license to (1) use and copy the Software; + * and (2) reproduce and distribute the Software as part of your own software + * (“Your Software”). Facebook reserves all rights not expressly granted to + * you in this license agreement. + * + * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED. + * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR + * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * @providesModule NavigatorNavigationBar */ 'use strict'; var React = require('React'); -var NavigationBarStyles = require('NavigationBarStyles'); +var NavigatorNavigationBarStyles = require('NavigatorNavigationBarStyles'); var StaticContainer = require('StaticContainer.react'); var StyleSheet = require('StyleSheet'); var View = require('View'); -var Text = require('Text'); var COMPONENT_NAMES = ['Title', 'LeftButton', 'RightButton']; @@ -24,7 +45,11 @@ var navStatePresentedIndex = function(navState) { } }; -var NavigationBar = React.createClass({ +var NavigatorNavigationBar = React.createClass({ + + statics: { + Styles: NavigatorNavigationBarStyles, + }, _getReusableProps: function( /*string*/componentName, @@ -32,7 +57,7 @@ var NavigationBar = React.createClass({ ) /*object*/ { if (!this._reusableProps) { this._reusableProps = {}; - }; + } var propStack = this._reusableProps[componentName]; if (!propStack) { propStack = this._reusableProps[componentName] = []; @@ -56,14 +81,14 @@ var NavigationBar = React.createClass({ var interpolate; if (oldDistToCenter > 0 && newDistToCenter === 0 || newDistToCenter > 0 && oldDistToCenter === 0) { - interpolate = NavigationBarStyles.Interpolators.RightToCenter; + interpolate = NavigatorNavigationBarStyles.Interpolators.RightToCenter; } else if (oldDistToCenter < 0 && newDistToCenter === 0 || newDistToCenter < 0 && oldDistToCenter === 0) { - interpolate = NavigationBarStyles.Interpolators.CenterToLeft; + interpolate = NavigatorNavigationBarStyles.Interpolators.CenterToLeft; } else if (oldDistToCenter === newDistToCenter) { - interpolate = NavigationBarStyles.Interpolators.RightToCenter; + interpolate = NavigatorNavigationBarStyles.Interpolators.RightToCenter; } else { - interpolate = NavigationBarStyles.Interpolators.RightToLeft; + interpolate = NavigatorNavigationBarStyles.Interpolators.RightToLeft; } COMPONENT_NAMES.forEach(function (componentName) { @@ -134,7 +159,7 @@ var NavigationBar = React.createClass({ } var initialStage = index === navStatePresentedIndex(this.props.navState) ? - NavigationBarStyles.Stages.Center : NavigationBarStyles.Stages.Left; + NavigatorNavigationBarStyles.Stages.Center : NavigatorNavigationBarStyles.Stages.Left; return ( component using this module. - DESC - spec.homepage = 'https://facebook.github.io/react-native/' - spec.license = { :type => 'BSD' } - spec.author = 'Facebook' - spec.platform = :ios, '7.0' - spec.requires_arc = true - spec.source_files = '**/*.{h,m,c}' - spec.dependency "ReactKit", "~> 0.0.1" - - # ――― Project Linking ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # - # - # Link your library with frameworks, or libraries. Libraries do not include - # the lib prefix of their name. - # - - # s.framework = "SomeFramework" - # s.frameworks = "SomeFramework", "AnotherFramework" - - # s.library = "iconv" - #spec.libraries = "RCTNetworkImage", "ReactKit" - -end diff --git a/Libraries/Image/RCTNetworkImageViewManager.m b/Libraries/Image/RCTNetworkImageViewManager.m index 33e55ffba..22268e8c0 100644 --- a/Libraries/Image/RCTNetworkImageViewManager.m +++ b/Libraries/Image/RCTNetworkImageViewManager.m @@ -25,8 +25,8 @@ return view; } -RCT_REMAP_VIEW_PROPERTY(defaultImageSrc, defaultImage) -RCT_REMAP_VIEW_PROPERTY(src, imageURL) -RCT_REMAP_VIEW_PROPERTY(resizeMode, contentMode) +RCT_REMAP_VIEW_PROPERTY(defaultImageSrc, defaultImage, UIImage) +RCT_REMAP_VIEW_PROPERTY(src, imageURL, NSURL) +RCT_REMAP_VIEW_PROPERTY(resizeMode, contentMode, UIViewContentMode) @end diff --git a/Libraries/Image/RCTStaticImageManager.m b/Libraries/Image/RCTStaticImageManager.m index 586961832..7668613bd 100644 --- a/Libraries/Image/RCTStaticImageManager.m +++ b/Libraries/Image/RCTStaticImageManager.m @@ -23,9 +23,9 @@ return [[RCTStaticImage alloc] init]; } -RCT_EXPORT_VIEW_PROPERTY(capInsets) -RCT_REMAP_VIEW_PROPERTY(resizeMode, contentMode) -RCT_CUSTOM_VIEW_PROPERTY(src, RCTStaticImage) +RCT_EXPORT_VIEW_PROPERTY(capInsets, UIEdgeInsets) +RCT_REMAP_VIEW_PROPERTY(resizeMode, contentMode, UIViewContentMode) +RCT_CUSTOM_VIEW_PROPERTY(src, NSURL, RCTStaticImage) { if (json) { if ([[[json description] pathExtension] caseInsensitiveCompare:@"gif"] == NSOrderedSame) { @@ -37,7 +37,7 @@ RCT_CUSTOM_VIEW_PROPERTY(src, RCTStaticImage) view.image = defaultView.image; } } -RCT_CUSTOM_VIEW_PROPERTY(tintColor, RCTStaticImage) +RCT_CUSTOM_VIEW_PROPERTY(tintColor, UIColor, RCTStaticImage) { if (json) { view.renderingMode = UIImageRenderingModeAlwaysTemplate; @@ -47,15 +47,14 @@ RCT_CUSTOM_VIEW_PROPERTY(tintColor, RCTStaticImage) view.tintColor = defaultView.tintColor; } } -RCT_CUSTOM_VIEW_PROPERTY(imageTag, RCTStaticImage) +RCT_CUSTOM_VIEW_PROPERTY(imageTag, NSString, RCTStaticImage) { if (json) { [RCTImageLoader loadImageWithTag:[RCTConvert NSString:json] callback:^(NSError *error, UIImage *image) { if (error) { RCTLogWarn(@"%@", error.localizedDescription); - } else { - view.image = image; } + view.image = image; }]; } else { view.image = defaultView.image; diff --git a/Libraries/LinkingIOS/RCTLinking.xcodeproj/project.pbxproj b/Libraries/LinkingIOS/RCTLinking.xcodeproj/project.pbxproj index 0d9e593d2..a9a8f3f42 100644 --- a/Libraries/LinkingIOS/RCTLinking.xcodeproj/project.pbxproj +++ b/Libraries/LinkingIOS/RCTLinking.xcodeproj/project.pbxproj @@ -199,12 +199,9 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "/Users/nicklockwood/fbobjc-hg/Libraries/FBReactKit/js/react-native-github/ReactKit/build/Debug-iphoneos", + "$(SRCROOT)/../../React/**", ); + LIBRARY_SEARCH_PATHS = "$(inherited)"; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = RCTLinking; SKIP_INSTALL = YES; @@ -217,12 +214,9 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "/Users/nicklockwood/fbobjc-hg/Libraries/FBReactKit/js/react-native-github/ReactKit/build/Debug-iphoneos", + "$(SRCROOT)/../../React/**", ); + LIBRARY_SEARCH_PATHS = "$(inherited)"; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = RCTLinking; SKIP_INSTALL = YES; diff --git a/Libraries/Network/RCTDataManager.podspec b/Libraries/Network/RCTDataManager.podspec deleted file mode 100644 index 84df787b8..000000000 --- a/Libraries/Network/RCTDataManager.podspec +++ /dev/null @@ -1,28 +0,0 @@ -Pod::Spec.new do |spec| - spec.name = 'RCTDataManager' - spec.version = '0.0.1' - spec.summary = 'Provides basic networking capabilities in ReactNative apps.' - spec.description = <<-DESC - Use XMLHttpRequest to fetch data over the network. - DESC - spec.homepage = 'https://facebook.github.io/react-native/' - spec.license = { :type => 'BSD' } - spec.author = 'Facebook' - spec.platform = :ios, '7.0' - spec.requires_arc = true - spec.source_files = '**/*.{h,m,c}' - spec.dependency "ReactKit", "~> 0.0.1" - - # ――― Project Linking ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # - # - # Link your library with frameworks, or libraries. Libraries do not include - # the lib prefix of their name. - # - - # s.framework = "SomeFramework" - # s.frameworks = "SomeFramework", "AnotherFramework" - - # s.library = "iconv" - #spec.libraries = "RCTDataManager", "ReactKit" - -end diff --git a/Libraries/Network/RCTNetwork.xcodeproj/project.pbxproj b/Libraries/Network/RCTNetwork.xcodeproj/project.pbxproj index f2f3f6a33..9aa64ad23 100644 --- a/Libraries/Network/RCTNetwork.xcodeproj/project.pbxproj +++ b/Libraries/Network/RCTNetwork.xcodeproj/project.pbxproj @@ -205,12 +205,9 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "/Users/nicklockwood/fbobjc-hg/Libraries/FBReactKit/js/react-native-github/ReactKit/build/Debug-iphoneos", + "$(SRCROOT)/../../React/**", ); + LIBRARY_SEARCH_PATHS = "$(inherited)"; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = RCTNetwork; SKIP_INSTALL = YES; @@ -223,12 +220,9 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "/Users/nicklockwood/fbobjc-hg/Libraries/FBReactKit/js/react-native-github/ReactKit/build/Debug-iphoneos", + "$(SRCROOT)/../../React/**", ); + LIBRARY_SEARCH_PATHS = "$(inherited)"; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = RCTNetwork; SKIP_INSTALL = YES; diff --git a/Libraries/PushNotificationIOS/RCTPushNotification.xcodeproj/project.pbxproj b/Libraries/PushNotificationIOS/RCTPushNotification.xcodeproj/project.pbxproj index 507f47aa0..9521a4dfc 100644 --- a/Libraries/PushNotificationIOS/RCTPushNotification.xcodeproj/project.pbxproj +++ b/Libraries/PushNotificationIOS/RCTPushNotification.xcodeproj/project.pbxproj @@ -199,12 +199,9 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "/Users/nicklockwood/fbobjc-hg/Libraries/FBReactKit/js/react-native-github/ReactKit/build/Debug-iphoneos", + "$(SRCROOT)/../../React/**", ); + LIBRARY_SEARCH_PATHS = "$(inherited)"; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = RCTPushNotification; SKIP_INSTALL = YES; @@ -217,12 +214,9 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "/Users/nicklockwood/fbobjc-hg/Libraries/FBReactKit/js/react-native-github/ReactKit/build/Debug-iphoneos", + "$(SRCROOT)/../../React/**", ); + LIBRARY_SEARCH_PATHS = "$(inherited)"; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = RCTPushNotification; SKIP_INSTALL = YES; diff --git a/Libraries/RCTTest/RCTTest.xcodeproj/project.pbxproj b/Libraries/RCTTest/RCTTest.xcodeproj/project.pbxproj index bb4457b1f..a710b09e9 100644 --- a/Libraries/RCTTest/RCTTest.xcodeproj/project.pbxproj +++ b/Libraries/RCTTest/RCTTest.xcodeproj/project.pbxproj @@ -193,7 +193,7 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", + "$(SRCROOT)/../../React/**", ); IPHONEOS_DEPLOYMENT_TARGET = 8.1; MTL_ENABLE_DEBUG_INFO = YES; @@ -232,7 +232,7 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", + "$(SRCROOT)/../../React/**", ); IPHONEOS_DEPLOYMENT_TARGET = 8.1; MTL_ENABLE_DEBUG_INFO = NO; @@ -244,6 +244,11 @@ 580C37841AB104AF0015E709 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../React/**", + ); OTHER_LDFLAGS = ( "-ObjC", "-framework", @@ -257,6 +262,11 @@ 580C37851AB104AF0015E709 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../React/**", + ); OTHER_LDFLAGS = ( "-ObjC", "-framework", diff --git a/Libraries/RCTWebSocketDebugger/RCTWebSocketDebugger.xcodeproj/project.pbxproj b/Libraries/RCTWebSocketDebugger/RCTWebSocketDebugger.xcodeproj/project.pbxproj index 07d24eb36..082ba27b2 100644 --- a/Libraries/RCTWebSocketDebugger/RCTWebSocketDebugger.xcodeproj/project.pbxproj +++ b/Libraries/RCTWebSocketDebugger/RCTWebSocketDebugger.xcodeproj/project.pbxproj @@ -161,7 +161,7 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", + "$(SRCROOT)/../../React/**", ); IPHONEOS_DEPLOYMENT_TARGET = 8.2; MTL_ENABLE_DEBUG_INFO = YES; @@ -200,7 +200,7 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", + "$(SRCROOT)/../../React/**", ); IPHONEOS_DEPLOYMENT_TARGET = 8.2; MTL_ENABLE_DEBUG_INFO = NO; @@ -212,6 +212,11 @@ 832C81951AAF6DF0007FA2F7 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../React/**", + ); OTHER_LDFLAGS = ( "-ObjC", "-llibicucore", @@ -224,6 +229,11 @@ 832C81961AAF6DF0007FA2F7 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../React/**", + ); OTHER_LDFLAGS = ( "-ObjC", "-llibicucore", diff --git a/Libraries/Text/RCTRawTextManager.m b/Libraries/Text/RCTRawTextManager.m index 93535be2f..3215b36c1 100644 --- a/Libraries/Text/RCTRawTextManager.m +++ b/Libraries/Text/RCTRawTextManager.m @@ -23,5 +23,7 @@ return [[RCTShadowRawText alloc] init]; } +RCT_EXPORT_SHADOW_PROPERTY(text, NSString) + @end diff --git a/Libraries/Text/RCTShadowText.h b/Libraries/Text/RCTShadowText.h index b14a623c8..82ea2b632 100644 --- a/Libraries/Text/RCTShadowText.h +++ b/Libraries/Text/RCTShadowText.h @@ -17,7 +17,6 @@ extern NSString *const RCTReactTagAttributeName; @property (nonatomic, assign) NSWritingDirection writingDirection; @property (nonatomic, strong) UIColor *textBackgroundColor; @property (nonatomic, strong) UIColor *color; -@property (nonatomic, strong) UIFont *font; @property (nonatomic, copy) NSString *fontFamily; @property (nonatomic, assign) CGFloat fontSize; @property (nonatomic, copy) NSString *fontWeight; @@ -27,6 +26,9 @@ extern NSString *const RCTReactTagAttributeName; @property (nonatomic, assign) NSInteger maxNumberOfLines; @property (nonatomic, assign) CGSize shadowOffset; @property (nonatomic, assign) NSTextAlignment textAlign; + +// Not exposed to JS +@property (nonatomic, strong) UIFont *font; @property (nonatomic, assign) NSLineBreakMode truncationMode; - (NSAttributedString *)attributedString; diff --git a/Libraries/Text/RCTShadowText.m b/Libraries/Text/RCTShadowText.m index f00350205..03d327898 100644 --- a/Libraries/Text/RCTShadowText.m +++ b/Libraries/Text/RCTShadowText.m @@ -11,7 +11,6 @@ #import "RCTConvert.h" #import "RCTLog.h" - #import "RCTShadowRawText.h" #import "RCTUtils.h" @@ -154,7 +153,7 @@ static css_dim_t RCTMeasure(void *context, float width) } }]; - // TODO: umm, these can'e be null, so we're mapping left to natural - is that right? + // TODO: umm, these can't be null, so we're mapping left to natural - is that right? self.textAlign = _textAlign ?: NSTextAlignmentNatural; self.writingDirection = _writingDirection ?: NSWritingDirectionNatural; diff --git a/Libraries/Text/RCTText.m b/Libraries/Text/RCTText.m index e5af69be8..457079bcb 100644 --- a/Libraries/Text/RCTText.m +++ b/Libraries/Text/RCTText.m @@ -11,7 +11,7 @@ #import "RCTShadowText.h" #import "RCTUtils.h" -#import "UIView+ReactKit.h" +#import "UIView+React.h" @implementation RCTText { diff --git a/Libraries/Text/RCTText.podspec b/Libraries/Text/RCTText.podspec deleted file mode 100644 index 656e0ee74..000000000 --- a/Libraries/Text/RCTText.podspec +++ /dev/null @@ -1,28 +0,0 @@ -Pod::Spec.new do |spec| - spec.name = 'RCTText' - spec.version = '0.0.1' - spec.summary = 'Provides basic Text capabilities in ReactNative apps.' - spec.description = <<-DESC - Text can be rendered in ReactNative apps with the component using this module. - DESC - spec.homepage = 'https://facebook.github.io/react-native/' - spec.license = { :type => 'BSD' } - spec.author = 'Facebook' - spec.platform = :ios, '7.0' - spec.requires_arc = true - spec.source_files = '**/*.{h,m,c}' - spec.dependency "ReactKit", "~> 0.0.1" - - # ――― Project Linking ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # - # - # Link your library with frameworks, or libraries. Libraries do not include - # the lib prefix of their name. - # - - # s.framework = "SomeFramework" - # s.frameworks = "SomeFramework", "AnotherFramework" - - # s.library = "iconv" - #spec.libraries = "RCTText", "ReactKit" - -end diff --git a/Libraries/Text/RCTText.xcodeproj/project.pbxproj b/Libraries/Text/RCTText.xcodeproj/project.pbxproj index 22eafac25..7f34de484 100644 --- a/Libraries/Text/RCTText.xcodeproj/project.pbxproj +++ b/Libraries/Text/RCTText.xcodeproj/project.pbxproj @@ -223,7 +223,7 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", + "$(SRCROOT)/../../React/**", ); OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -237,7 +237,7 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", + "$(SRCROOT)/../../React/**", ); OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/Libraries/Text/RCTTextManager.m b/Libraries/Text/RCTTextManager.m index 1c085f693..70cbd9ab5 100644 --- a/Libraries/Text/RCTTextManager.m +++ b/Libraries/Text/RCTTextManager.m @@ -16,7 +16,7 @@ #import "RCTShadowText.h" #import "RCTSparseArray.h" #import "RCTText.h" -#import "UIView+ReactKit.h" +#import "UIView+React.h" @implementation RCTTextManager @@ -32,8 +32,8 @@ #pragma mark - View properties -RCT_REMAP_VIEW_PROPERTY(containerBackgroundColor, backgroundColor) -RCT_CUSTOM_VIEW_PROPERTY(numberOfLines, RCTText) +RCT_REMAP_VIEW_PROPERTY(containerBackgroundColor, backgroundColor, UIColor) +RCT_CUSTOM_VIEW_PROPERTY(numberOfLines, NSInteger, RCTText) { NSLineBreakMode truncationMode = NSLineBreakByClipping; view.numberOfLines = json ? [RCTConvert NSInteger:json] : defaultView.numberOfLines; @@ -45,16 +45,24 @@ RCT_CUSTOM_VIEW_PROPERTY(numberOfLines, RCTText) #pragma mark - Shadow properties -RCT_CUSTOM_SHADOW_PROPERTY(backgroundColor, RCTShadowText) -{ - view.textBackgroundColor = json ? [RCTConvert UIColor:json] : defaultView.textBackgroundColor; -} -RCT_CUSTOM_SHADOW_PROPERTY(containerBackgroundColor, RCTShadowText) +RCT_EXPORT_SHADOW_PROPERTY(writingDirection, NSWritingDirection) +RCT_EXPORT_SHADOW_PROPERTY(color, UIColor) +RCT_EXPORT_SHADOW_PROPERTY(fontFamily, NSString) +RCT_EXPORT_SHADOW_PROPERTY(fontSize, CGFloat) +RCT_EXPORT_SHADOW_PROPERTY(fontWeight, NSString) +RCT_EXPORT_SHADOW_PROPERTY(fontStyle, NSString) +RCT_EXPORT_SHADOW_PROPERTY(isHighlighted, BOOL) +RCT_EXPORT_SHADOW_PROPERTY(lineHeight, CGFloat) +RCT_EXPORT_SHADOW_PROPERTY(maxNumberOfLines, NSInteger) +RCT_EXPORT_SHADOW_PROPERTY(shadowOffset, CGSize) +RCT_EXPORT_SHADOW_PROPERTY(textAlign, NSTextAlignment) +RCT_REMAP_SHADOW_PROPERTY(backgroundColor, textBackgroundColor, UIColor) +RCT_CUSTOM_SHADOW_PROPERTY(containerBackgroundColor, UIColor, RCTShadowText) { view.backgroundColor = json ? [RCTConvert UIColor:json] : defaultView.backgroundColor; view.isBGColorExplicitlySet = json ? YES : defaultView.isBGColorExplicitlySet; } -RCT_CUSTOM_SHADOW_PROPERTY(numberOfLines, RCTShadowText) +RCT_CUSTOM_SHADOW_PROPERTY(numberOfLines, NSInteger, RCTShadowText) { NSLineBreakMode truncationMode = NSLineBreakByClipping; view.maxNumberOfLines = json ? [RCTConvert NSInteger:json] : defaultView.maxNumberOfLines; @@ -63,10 +71,6 @@ RCT_CUSTOM_SHADOW_PROPERTY(numberOfLines, RCTShadowText) } view.truncationMode = truncationMode; } -RCT_CUSTOM_SHADOW_PROPERTY(textAlign, RCTShadowText) -{ - view.textAlign = json ? [RCTConvert NSTextAlignment:json] : defaultView.textAlign; -} - (RCTViewManagerUIBlock)uiBlockToAmendWithShadowView:(RCTShadowText *)shadowView { diff --git a/Libraries/Vibration/RCTVibration.xcodeproj/project.pbxproj b/Libraries/Vibration/RCTVibration.xcodeproj/project.pbxproj index 8de930901..c8d628bbe 100644 --- a/Libraries/Vibration/RCTVibration.xcodeproj/project.pbxproj +++ b/Libraries/Vibration/RCTVibration.xcodeproj/project.pbxproj @@ -155,7 +155,7 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", + "$(SRCROOT)/../../React/**", ); IPHONEOS_DEPLOYMENT_TARGET = 7.0; MTL_ENABLE_DEBUG_INFO = YES; @@ -194,7 +194,7 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../ReactKit/**", + "$(SRCROOT)/../../React/**", ); IPHONEOS_DEPLOYMENT_TARGET = 7.0; MTL_ENABLE_DEBUG_INFO = NO; @@ -206,6 +206,11 @@ 832C81951AAF6DF0007FA2F7 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../React/**", + ); OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -215,6 +220,11 @@ 832C81961AAF6DF0007FA2F7 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../React/**", + ); OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; diff --git a/Libraries/react-native/react-native.js b/Libraries/react-native/react-native.js index 557f4f3f2..c0bb989f4 100644 --- a/Libraries/react-native/react-native.js +++ b/Libraries/react-native/react-native.js @@ -26,7 +26,7 @@ var ReactNative = Object.assign(Object.create(require('React')), { MapView: require('MapView'), NavigatorIOS: require('NavigatorIOS'), PickerIOS: require('PickerIOS'), - ReactNavigator: require('ReactNavigator'), + Navigator: require('Navigator'), ScrollView: require('ScrollView'), SliderIOS: require('SliderIOS'), SwitchIOS: require('SwitchIOS'), diff --git a/Libraries/vendor/react/browser/eventPlugins/PanResponder.js b/Libraries/vendor/react/browser/eventPlugins/PanResponder.js index 22bcaeffe..b6c11c9bc 100644 --- a/Libraries/vendor/react/browser/eventPlugins/PanResponder.js +++ b/Libraries/vendor/react/browser/eventPlugins/PanResponder.js @@ -18,66 +18,143 @@ var currentCentroidX = TouchHistoryMath.currentCentroidX; var currentCentroidY = TouchHistoryMath.currentCentroidY; /** + * `PanResponder` reconciles several touches into a single gesture. It makes + * single-touch gestures resilient to extra touches, and can be used to + * recognize simple multi-touch gestures. * - * +----------------------------+ +--------------------------------+ - * | ResponderTouchHistoryStore | |TouchHistoryMath | - * +----------------------------+ +----------+---------------------+ - * |Global store of touchHistory| |Allocation-less math util | - * |including activeness, start | |on touch history (centroids | - * |position, prev/cur position.| |and multitouch movement etc) | - * | | | | - * +----^-----------------------+ +----^---------------------------+ - * | | - * | (records relevant history | - * | of touches relevant for | - * | implementing higher level | - * | gestures) | - * | | - * +----+-----------------------+ +----|---------------------------+ - * | ResponderEventPlugin | | | Your App/Component | - * +----------------------------+ +----|---------------------------+ - * |Negotiates which view gets | Low level | | High level | - * |onResponderMove events. | events w/ | +-+-------+ events w/ | - * |Also records history into | touchHistory| | Pan | multitouch + | - * |ResponderTouchHistoryStore. +---------------->Responder+-----> accumulative| - * +----------------------------+ attached to | | | distance and | - * each event | +---------+ velocity. | - * | | - * | | - * +--------------------------------+ + * It provides a predictable wrapper of the responder handlers provided by the + * [gesture responder system](/react-native/docs/gesture-responder-system.html). + * For each handler, it provides a new `gestureState` object alongside the + * normal event. * + * A `gestureState` object has the following: * + * - `stateID` - ID of the gestureState- persisted as long as there at least + * one touch on screen + * - `moveX` - the latest screen coordinates of the recently-moved touch + * - `moveY` - the latest screen coordinates of the recently-moved touch + * - `x0` - the screen coordinates of the responder grant + * - `y0` - the screen coordinates of the responder grant + * - `dx` - accumulated distance of the gesture since the touch started + * - `dy` - accumulated distance of the gesture since the touch started + * - `vx` - current velocity of the gesture + * - `vy` - current velocity of the gesture + * - `numberActiveTouches` - Number of touches currently on screeen * - * Gesture that calculates cumulative movement over time in a way that just - * "does the right thing" for multiple touches. The "right thing" is very - * nuanced. When moving two touches in opposite directions, the cumulative - * distance is zero in each dimension. When two touches move in parallel five - * pixels in the same direction, the cumulative distance is five, not ten. If - * two touches start, one moves five in a direction, then stops and the other - * touch moves fives in the same direction, the cumulative distance is ten. + * ### Basic Usage * - * This logic requires a kind of processing of time "clusters" of touch events - * so that two touch moves that essentially occur in parallel but move every - * other frame respectively, are considered part of the same movement. + * ``` + * componentWillMount: function() { + * this._panGesture = PanResponder.create({ + * // Ask to be the responder: + * onStartShouldSetPanResponder: (evt, gestureState) => true, + * onStartShouldSetPanResponderCapture: (evt, gestureState) => true, + * onMoveShouldSetPanResponder: (evt, gestureState) => true, + * onMoveShouldSetPanResponderCapture: (evt, gestureState) => true, * - * Explanation of some of the non-obvious fields: + * onPanResponderGrant: (evt, gestureState) => { + * // The guesture has started. Show visual feedback so the user knows + * // what is happening! * - * - moveX/moveY: If no move event has been observed, then `(moveX, moveY)` is - * invalid. If a move event has been observed, `(moveX, moveY)` is the - * centroid of the most recently moved "cluster" of active touches. - * (Currently all move have the same timeStamp, but later we should add some - * threshold for what is considered to be "moving"). If a palm is - * accidentally counted as a touch, but a finger is moving greatly, the palm - * will move slightly, but we only want to count the single moving touch. - * - x0/y0: Centroid location (non-cumulative) at the time of becoming - * responder. - * - dx/dy: Cumulative touch distance - not the same thing as sum of each touch - * distance. Accounts for touch moves that are clustered together in time, - * moving the same direction. Only valid when currently responder (otherwise, - * it only represents the drag distance below the threshold). - * - vx/vy: Velocity. + * // gestureState.{x,y}0 will be set to zero now + * }, + * onPanResponderMove: (evt, gestureState) => { + * // The most recent move distance is gestureState.move{X,Y} + * + * // The accumulated gesture distance since becoming responder is + * // gestureState.d{x,y} + * }, + * onResponderTerminationRequest: (evt, gestureState) => true, + * onPanResponderRelease: (evt, gestureState) => { + * // The user has released all touches while this view is the + * // responder. This typically means a gesture has succeeded + * }, + * onPanResponderTerminate: (evt, gestureState) => { + * // Another component has become the responder, so this gesture + * // should be cancelled + * }, + * }); + * }, + * + * render: function() { + * return ( + * + * ); + * }, + * + * ``` + * + * ### Working Example + * + * To see it in action, try the + * [PanResponder example in UIExplorer](https://github.com/facebook/react-native/blob/master/Examples/UIExplorer/ResponderExample.js) */ + var PanResponder = { + + /** + * + * A graphical explanation of the touch data flow: + * + * +----------------------------+ +--------------------------------+ + * | ResponderTouchHistoryStore | |TouchHistoryMath | + * +----------------------------+ +----------+---------------------+ + * |Global store of touchHistory| |Allocation-less math util | + * |including activeness, start | |on touch history (centroids | + * |position, prev/cur position.| |and multitouch movement etc) | + * | | | | + * +----^-----------------------+ +----^---------------------------+ + * | | + * | (records relevant history | + * | of touches relevant for | + * | implementing higher level | + * | gestures) | + * | | + * +----+-----------------------+ +----|---------------------------+ + * | ResponderEventPlugin | | | Your App/Component | + * +----------------------------+ +----|---------------------------+ + * |Negotiates which view gets | Low level | | High level | + * |onResponderMove events. | events w/ | +-+-------+ events w/ | + * |Also records history into | touchHistory| | Pan | multitouch + | + * |ResponderTouchHistoryStore. +---------------->Responder+-----> accumulative| + * +----------------------------+ attached to | | | distance and | + * each event | +---------+ velocity. | + * | | + * | | + * +--------------------------------+ + * + * + * + * Gesture that calculates cumulative movement over time in a way that just + * "does the right thing" for multiple touches. The "right thing" is very + * nuanced. When moving two touches in opposite directions, the cumulative + * distance is zero in each dimension. When two touches move in parallel five + * pixels in the same direction, the cumulative distance is five, not ten. If + * two touches start, one moves five in a direction, then stops and the other + * touch moves fives in the same direction, the cumulative distance is ten. + * + * This logic requires a kind of processing of time "clusters" of touch events + * so that two touch moves that essentially occur in parallel but move every + * other frame respectively, are considered part of the same movement. + * + * Explanation of some of the non-obvious fields: + * + * - moveX/moveY: If no move event has been observed, then `(moveX, moveY)` is + * invalid. If a move event has been observed, `(moveX, moveY)` is the + * centroid of the most recently moved "cluster" of active touches. + * (Currently all move have the same timeStamp, but later we should add some + * threshold for what is considered to be "moving"). If a palm is + * accidentally counted as a touch, but a finger is moving greatly, the palm + * will move slightly, but we only want to count the single moving touch. + * - x0/y0: Centroid location (non-cumulative) at the time of becoming + * responder. + * - dx/dy: Cumulative touch distance - not the same thing as sum of each touch + * distance. Accounts for touch moves that are clustered together in time, + * moving the same direction. Only valid when currently responder (otherwise, + * it only represents the drag distance below the threshold). + * - vx/vy: Velocity. + */ + _initializeGestureState: function(gestureState) { gestureState.moveX = 0; gestureState.moveY = 0; @@ -147,29 +224,29 @@ var PanResponder = { /** * @param {object} config Enhanced versions of all of the responder callbacks - * that accept not only the typical `ResponderSyntheticEvent`, but also the + * that provide not only the typical `ResponderSyntheticEvent`, but also the * `PanResponder` gesture state. Simply replace the word `Responder` with * `PanResponder` in each of the typical `onResponder*` callbacks. For * example, the `config` object would look like: * - * - onMoveShouldSetPanResponder: (e, gestureState) => {...} - * - onMoveShouldSetPanResponderCapture: (e, gestureState) => {...} - * - onStartShouldSetPanResponder: (e, gestureState) => {...} - * - onStartShouldSetPanResponderCapture: (e, gestureState) => {...} - * - onPanResponderReject: (e, gestureState) => {...} - * - onPanResponderGrant: (e, gestureState) => {...} - * - onPanResponderStart: (e, gestureState) => {...} - * - onPanResponderEnd: (e, gestureState) => {...} - * - onPanResponderRelease: (e, gestureState) => {...} - * - onPanResponderMove: (e, gestureState) => {...} - * - onPanResponderTerminate: (e, gestureState) => {...} - * - onPanResponderTerminationRequest: (e, gestureState) => {...} + * - `onMoveShouldSetPanResponder: (e, gestureState) => {...}` + * - `onMoveShouldSetPanResponderCapture: (e, gestureState) => {...}` + * - `onStartShouldSetPanResponder: (e, gestureState) => {...}` + * - `onStartShouldSetPanResponderCapture: (e, gestureState) => {...}` + * - `onPanResponderReject: (e, gestureState) => {...}` + * - `onPanResponderGrant: (e, gestureState) => {...}` + * - `onPanResponderStart: (e, gestureState) => {...}` + * - `onPanResponderEnd: (e, gestureState) => {...}` + * - `onPanResponderRelease: (e, gestureState) => {...}` + * - `onPanResponderMove: (e, gestureState) => {...}` + * - `onPanResponderTerminate: (e, gestureState) => {...}` + * - `onPanResponderTerminationRequest: (e, gestureState) => {...}` * - * - In general, for events that have capture equivalents, we update the + * In general, for events that have capture equivalents, we update the * gestureState once in the capture phase and can use it in the bubble phase * as well. * - * - Be careful with onStartShould* callbacks. They only reflect updated + * Be careful with onStartShould* callbacks. They only reflect updated * `gestureState` for start/end events that bubble/capture to the Node. * Once the node is the responder, you can rely on every start/end event * being processed by the gesture and `gestureState` being updated diff --git a/React.podspec b/React.podspec new file mode 100644 index 000000000..e8403caab --- /dev/null +++ b/React.podspec @@ -0,0 +1,79 @@ +Pod::Spec.new do |s| + s.name = "React" + s.version = "0.1.0" + s.summary = "Build high quality mobile apps using React." + s.description= <<-DESC + React Native apps are built using the React JS framework, + and render directly to native UIKit elements using a fully + asynchronous architecture. There is no browser and no HTML. + We have picked what we think is the best set of features from + these and other technologies to build what we hope to become + the best product development framework available, with an + emphasis on iteration speed, developer delight, continuity + of technology, and absolutely beautiful and fast products + with no compromises in quality or capability. + DESC + s.homepage = "http://facebook.github.io/react-native/" + s.license = "BSD" + s.author = "Facebook" + s.platform = :ios, "7.0" + s.source = { :git => "https://github.com/facebook/react-native.git", :tag => "v#{s.version}" } + s.source_files = "React/**/*.{c,h,m}" + s.resources = "Resources/*.png" + s.preserve_paths = "cli.js", "Libraries/**/*.js", "lint", "linter.js", "node_modules", "package.json", "packager", "PATENTS", "react-native-cli" + s.exclude_files = "**/__tests__/*", "IntegrationTests/*" + s.frameworks = "JavaScriptCore" + s.requires_arc = true + s.prepare_command = 'npm install' + s.libraries = 'libicucore' + s.xcconfig = { 'OTHER_LDFLAGS' => '-lObjC' } + + s.subspec 'RCTActionSheet' do |ss| + ss.source_files = "Libraries/ActionSheetIOS/*.{h,m}" + ss.preserve_paths = "Libraries/ActionSheetIOS/*.js" + end + + s.subspec 'RCTAdSupport' do |ss| + ss.source_files = "Libraries/RCTAdSupport/*.{h,m}" + ss.preserve_paths = "Libraries/RCTAdSupport/*.js" + end + + s.subspec 'RCTAnimation' do |ss| + ss.source_files = "Libraries/Animation/*.{h,m}" + ss.preserve_paths = "Libraries/Animation/*.js" + end + + s.subspec 'RCTGeolocation' do |ss| + ss.source_files = "Libraries/Geolocation/*.{h,m}" + ss.preserve_paths = "Libraries/Geolocation/*.js" + end + + s.subspec 'RCTImage' do |ss| + ss.source_files = "Libraries/Image/*.{h,m}" + ss.preserve_paths = "Libraries/Image/*.js" + end + + s.subspec 'RCTNetwork' do |ss| + ss.source_files = "Libraries/Network/*.{h,m}" + ss.preserve_paths = "Libraries/Network/*.js" + end + + s.subspec 'RCTPushNotification' do |ss| + ss.source_files = "Libraries/PushNotificationIOS/*.{h,m}" + ss.preserve_paths = "Libraries/PushNotificationIOS/*.js" + end + + s.subspec 'RCTWebSocketDebugger' do |ss| + ss.source_files = "Libraries/RCTWebSocketDebugger/*.{h,m}" + end + + s.subspec 'RCTText' do |ss| + ss.source_files = "Libraries/Text/*.{h,m}" + ss.preserve_paths = "Libraries/Text/*.js" + end + + s.subspec 'RCTVibration' do |ss| + ss.source_files = "Libraries/Vibration/*.{h,m}" + ss.preserve_paths = "Libraries/Vibration/*.js" + end +end diff --git a/ReactKit/Base/RCTAssert.h b/React/Base/RCTAssert.h similarity index 100% rename from ReactKit/Base/RCTAssert.h rename to React/Base/RCTAssert.h diff --git a/ReactKit/Base/RCTAssert.m b/React/Base/RCTAssert.m similarity index 100% rename from ReactKit/Base/RCTAssert.m rename to React/Base/RCTAssert.m diff --git a/ReactKit/Base/RCTBridge.h b/React/Base/RCTBridge.h similarity index 100% rename from ReactKit/Base/RCTBridge.h rename to React/Base/RCTBridge.h diff --git a/ReactKit/Base/RCTBridge.m b/React/Base/RCTBridge.m similarity index 99% rename from ReactKit/Base/RCTBridge.m rename to React/Base/RCTBridge.m index fe13a1bfd..8a81a2327 100644 --- a/ReactKit/Base/RCTBridge.m +++ b/React/Base/RCTBridge.m @@ -508,7 +508,7 @@ static id _latestJSExecutor; { if ((self = [super init])) { _eventDispatcher = [[RCTEventDispatcher alloc] initWithBridge:self]; - _shadowQueue = dispatch_queue_create("com.facebook.ReactKit.ShadowQueue", DISPATCH_QUEUE_SERIAL); + _shadowQueue = dispatch_queue_create("com.facebook.React.ShadowQueue", DISPATCH_QUEUE_SERIAL); _moduleProvider = block; _launchOptions = launchOptions; } diff --git a/ReactKit/Base/RCTBridgeModule.h b/React/Base/RCTBridgeModule.h similarity index 100% rename from ReactKit/Base/RCTBridgeModule.h rename to React/Base/RCTBridgeModule.h diff --git a/ReactKit/Base/RCTCache.h b/React/Base/RCTCache.h similarity index 100% rename from ReactKit/Base/RCTCache.h rename to React/Base/RCTCache.h diff --git a/ReactKit/Base/RCTCache.m b/React/Base/RCTCache.m similarity index 97% rename from ReactKit/Base/RCTCache.m rename to React/Base/RCTCache.m index efc68ae37..6297771d2 100644 --- a/ReactKit/Base/RCTCache.m +++ b/React/Base/RCTCache.m @@ -12,8 +12,8 @@ #import #import -static NSString *const RCTCacheSubdirectoryName = @"ReactKit"; -static NSString *const RCTKeyExtendedAttributeName = @"com.facebook.ReactKit.RCTCacheManager.Key"; +static NSString *const RCTCacheSubdirectoryName = @"React"; +static NSString *const RCTKeyExtendedAttributeName = @"com.facebook.React.RCTCacheManager.Key"; static NSMapTable *RCTLivingCachesByName; static NSError *RCTPOSIXError(int errorNumber) @@ -88,7 +88,7 @@ static BOOL RCTSetExtendedAttribute(NSURL *fileURL, NSString *key, NSString *val { dispatch_queue_t queue = _queue; if (!queue) { - NSString *queueName = [NSString stringWithFormat:@"com.facebook.ReactKit.RCTCache.%@", _UUID.UUIDString]; + NSString *queueName = [NSString stringWithFormat:@"com.facebook.React.RCTCache.%@", _UUID.UUIDString]; queue = dispatch_queue_create(queueName.UTF8String, DISPATCH_QUEUE_SERIAL); _queue = queue; } diff --git a/ReactKit/Base/RCTConvert.h b/React/Base/RCTConvert.h similarity index 95% rename from ReactKit/Base/RCTConvert.h rename to React/Base/RCTConvert.h index fb4f51883..c8d6ecada 100644 --- a/ReactKit/Base/RCTConvert.h +++ b/React/Base/RCTConvert.h @@ -48,8 +48,13 @@ + (NSTextAlignment)NSTextAlignment:(id)json; + (NSWritingDirection)NSWritingDirection:(id)json; + (UITextAutocapitalizationType)UITextAutocapitalizationType:(id)json; ++ (UITextFieldViewMode)UITextFieldViewMode:(id)json; ++ (UIScrollViewKeyboardDismissMode)UIScrollViewKeyboardDismissMode:(id)json; + (UIKeyboardType)UIKeyboardType:(id)json; ++ (UIViewContentMode)UIViewContentMode:(id)json; ++ (UIBarStyle)UIBarStyle:(id)json; + + (CGFloat)CGFloat:(id)json; + (CGPoint)CGPoint:(id)json; + (CGSize)CGSize:(id)json; @@ -72,13 +77,11 @@ + (UIFont *)UIFont:(UIFont *)font withWeight:(id)json; + (UIFont *)UIFont:(UIFont *)font withStyle:(id)json; + (UIFont *)UIFont:(UIFont *)font withFamily:(id)json; -+ (UIFont *)UIFont:(UIFont *)font - withFamily:(id)family - size:(id)size - weight:(id)weight - style:(id)style; ++ (UIFont *)UIFont:(UIFont *)font withFamily:(id)family + size:(id)size weight:(id)weight style:(id)style; + (NSArray *)NSStringArray:(id)json; ++ (NSArray *)NSDictionaryArray:(id)json; + (NSArray *)NSURLArray:(id)json; + (NSArray *)NSNumberArray:(id)json; + (NSArray *)UIColorArray:(id)json; @@ -106,20 +109,14 @@ extern "C" { * applying an appropriate conversion method. If the property does not * exist, or the type cannot be inferred, the function will return NO. */ -BOOL RCTSetProperty(id target, NSString *keypath, id json); +BOOL RCTSetProperty(id target, NSString *keyPath, SEL type, id json); /** * This function attempts to copy a property from the source object to the * destination object using KVC. If the property does not exist, or cannot * be set, it will do nothing and return NO. */ -BOOL RCTCopyProperty(id target, id source, NSString *keypath); - -/** - * This function attempts to convert a JSON value to an object that can be used - * in KVC with the specific target and key path. - */ -id RCTConvertValue(id target, NSString *keypath, id json); +BOOL RCTCopyProperty(id target, id source, NSString *keyPath); #ifdef __cplusplus } diff --git a/ReactKit/Base/RCTConvert.m b/React/Base/RCTConvert.m similarity index 69% rename from ReactKit/Base/RCTConvert.m rename to React/Base/RCTConvert.m index 01300e306..9bf7104c9 100644 --- a/ReactKit/Base/RCTConvert.m +++ b/React/Base/RCTConvert.m @@ -102,11 +102,45 @@ RCT_ENUM_CONVERTER(UITextAutocapitalizationType, (@{ @"characters": @(UITextAutocapitalizationTypeAllCharacters) }), UITextAutocapitalizationTypeSentences, integerValue) +RCT_ENUM_CONVERTER(UITextFieldViewMode, (@{ + @"never": @(UITextFieldViewModeNever), + @"while-editing": @(UITextFieldViewModeWhileEditing), + @"unless-editing": @(UITextFieldViewModeUnlessEditing), + @"always": @(UITextFieldViewModeAlways), +}), UITextFieldViewModeNever, integerValue) + +RCT_ENUM_CONVERTER(UIScrollViewKeyboardDismissMode, (@{ + @"none": @(UIScrollViewKeyboardDismissModeNone), + @"on-drag": @(UIScrollViewKeyboardDismissModeOnDrag), + @"interactive": @(UIScrollViewKeyboardDismissModeInteractive), +}), UIScrollViewKeyboardDismissModeNone, integerValue) + RCT_ENUM_CONVERTER(UIKeyboardType, (@{ @"numeric": @(UIKeyboardTypeDecimalPad), @"default": @(UIKeyboardTypeDefault), }), UIKeyboardTypeDefault, integerValue) +RCT_ENUM_CONVERTER(UIViewContentMode, (@{ + @"scale-to-fill": @(UIViewContentModeScaleToFill), + @"scale-aspect-fit": @(UIViewContentModeScaleAspectFit), + @"scale-aspect-fill": @(UIViewContentModeScaleAspectFill), + @"redraw": @(UIViewContentModeRedraw), + @"center": @(UIViewContentModeCenter), + @"top": @(UIViewContentModeTop), + @"bottom": @(UIViewContentModeBottom), + @"left": @(UIViewContentModeLeft), + @"right": @(UIViewContentModeRight), + @"top-left": @(UIViewContentModeTopLeft), + @"top-right": @(UIViewContentModeTopRight), + @"bottom-left": @(UIViewContentModeBottomLeft), + @"bottom-right": @(UIViewContentModeBottomRight), +}), UIViewContentModeScaleToFill, integerValue) + +RCT_ENUM_CONVERTER(UIBarStyle, (@{ + @"default": @(UIBarStyleDefault), + @"black": @(UIBarStyleBlack), +}), UIBarStyleDefault, integerValue) + // TODO: normalise the use of w/width so we can do away with the alias values (#6566645) RCT_CONVERTER_CUSTOM(CGFloat, CGFloat, [self double:json]) RCT_CGSTRUCT_CONVERTER(CGPoint, (@[@"x", @"y"]), nil) @@ -424,7 +458,7 @@ RCT_CGSTRUCT_CONVERTER(CGAffineTransform, (@[ // These constants are defined in iPhone SDK 8.2 // They'll work fine in earlier iOS versions, but the app cannot be built with // an SDK version < 8.2 unless we redefine them here. This will be removed -// in a future version of ReactKit, once 8.2 is more widely adopted. +// in a future version of React, once 8.2 is more widely adopted. static const CGFloat UIFontWeightUltraLight = -0.8; static const CGFloat UIFontWeightThin = -0.6; @@ -500,11 +534,8 @@ static BOOL RCTFontIsCondensed(UIFont *font) return [self UIFont:font withFamily:json size:nil weight:nil style:nil]; } -+ (UIFont *)UIFont:(UIFont *)font - withFamily:(id)family - size:(id)size - weight:(id)weight - style:(id)style ++ (UIFont *)UIFont:(UIFont *)font withFamily:(id)family + size:(id)size weight:(id)weight style:(id)style { // Defaults NSString *const RCTDefaultFontFamily = @"Helvetica Neue"; @@ -579,6 +610,7 @@ static BOOL RCTFontIsCondensed(UIFont *font) } RCT_ARRAY_CONVERTER(NSString) +RCT_ARRAY_CONVERTER(NSDictionary) RCT_ARRAY_CONVERTER(NSURL) RCT_ARRAY_CONVERTER(NSNumber) RCT_ARRAY_CONVERTER(UIColor) @@ -648,229 +680,10 @@ RCT_ENUM_CONVERTER(RCTAnimationType, (@{ @end -static NSString *RCTGuessTypeEncoding(id target, NSString *key, id value, NSString *encoding) -{ - /** - * NOTE: the property names below may seem weird, but it's - * because they are tested as case-sensitive suffixes, so - * "ffset" will match any of the following - * - * - offset - * - contentOffset - */ - - // TODO (#5906496): handle more cases - if ([key hasSuffix:@"olor"]) { - if ([target isKindOfClass:[CALayer class]]) { - return @(@encode(CGColorRef)); - } else { - return @"@\"UIColor\""; - } - } else if ([key hasSuffix:@"Inset"] || [key hasSuffix:@"Insets"]) { - return @(@encode(UIEdgeInsets)); - } else if ([key hasSuffix:@"rame"] || [key hasSuffix:@"ounds"]) { - return @(@encode(CGRect)); - } else if ([key hasSuffix:@"ffset"] || [key hasSuffix:@"osition"]) { - return @(@encode(CGPoint)); - } else if ([key hasSuffix:@"ize"]) { - return @(@encode(CGSize)); - } - return nil; -} - -static id RCTConvertValueWithEncoding(id value, NSString *encoding) -{ - static NSDictionary *converters = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - - id (^numberConvert)(id) = ^(id val){ - return [RCTConvert NSNumber:val]; - }; - - id (^boolConvert)(id) = ^(id val){ - return @([RCTConvert BOOL:val]); - }; - - // TODO (#5906496): add the rest of RCTConvert here - converters = - @{ - @(@encode(char)): boolConvert, - @(@encode(int)): numberConvert, - @(@encode(short)): numberConvert, - @(@encode(long)): numberConvert, - @(@encode(long long)): numberConvert, - @(@encode(unsigned char)): numberConvert, - @(@encode(unsigned int)): numberConvert, - @(@encode(unsigned short)): numberConvert, - @(@encode(unsigned long)): numberConvert, - @(@encode(unsigned long long)): numberConvert, - @(@encode(float)): numberConvert, - @(@encode(double)): numberConvert, - @(@encode(bool)): boolConvert, - @(@encode(UIEdgeInsets)): ^(id val) { - return [NSValue valueWithUIEdgeInsets:[RCTConvert UIEdgeInsets:val]]; - }, - @(@encode(CGPoint)): ^(id val) { - return [NSValue valueWithCGPoint:[RCTConvert CGPoint:val]]; - }, - @(@encode(CGSize)): ^(id val) { - return [NSValue valueWithCGSize:[RCTConvert CGSize:val]]; - }, - @(@encode(CGRect)): ^(id val) { - return [NSValue valueWithCGRect:[RCTConvert CGRect:val]]; - }, - @(@encode(CGColorRef)): ^(id val) { - return (id)[RCTConvert CGColor:val]; - }, - @(@encode(CGAffineTransform)): ^(id val) { - return [NSValue valueWithCGAffineTransform:[RCTConvert CGAffineTransform:val]]; - }, - @(@encode(CATransform3D)): ^(id val) { - return [NSValue valueWithCATransform3D:[RCTConvert CATransform3D:val]]; - }, - @"@\"NSString\"": ^(id val) { - return [RCTConvert NSString:val]; - }, - @"@\"NSURL\"": ^(id val) { - return [RCTConvert NSURL:val]; - }, - @"@\"UIColor\"": ^(id val) { - return [RCTConvert UIColor:val]; - }, - @"@\"UIImage\"": ^(id val) { - return [RCTConvert UIImage:val]; - }, - @"@\"NSDate\"": ^(id val) { - return [RCTConvert NSDate:val]; - }, - @"@\"NSTimeZone\"": ^(id val) { - return [RCTConvert NSTimeZone:val]; - }, - }; - }); - - // Handle null values - if (value == [NSNull null] && ![encoding isEqualToString:@"@\"NSNull\""]) { - return nil; - } - - // Convert value - id (^converter)(id) = converters[encoding]; - return converter ? converter(value) : value; -} - -static NSString *RCTPropertyEncoding(id target, NSString *key, id value) -{ - // Check target class for property definition - NSString *encoding = nil; - objc_property_t property = class_getProperty([target class], [key UTF8String]); - if (property) { - - // Get type info - char *typeEncoding = property_copyAttributeValue(property, "T"); - encoding = @(typeEncoding); - free(typeEncoding); - - } else { - - // Check if setter exists - SEL setter = NSSelectorFromString([NSString stringWithFormat:@"set%@%@:", - [[key substringToIndex:1] uppercaseString], - [key substringFromIndex:1]]); - - if (![target respondsToSelector:setter]) { - return nil; - } - - // Get type of first method argument - Method method = class_getInstanceMethod([target class], setter); - char *typeEncoding = method_copyArgumentType(method, 2); - if (typeEncoding) { - encoding = @(typeEncoding); - free(typeEncoding); - } - - if (encoding.length == 0 || [encoding isEqualToString:@(@encode(id))]) { - // Not enough info about the type encoding to be useful, so - // try to guess the type from the value and property name - encoding = RCTGuessTypeEncoding(target, key, value, encoding); - } - - } - - // id encoding means unknown, as opposed to nil which means no setter exists. - return encoding ?: @(@encode(id)); -} - -static id RCTConvertValueWithExplicitEncoding(id target, NSString *key, id json, NSString *encoding) -{ - // Special case for numeric encodings, which may be enums - if ([json isKindOfClass:[NSString class]] && - ([encoding isEqualToString:@(@encode(id))] || - [@"iIsSlLqQ" rangeOfString:[encoding substringToIndex:1]].length)) { - - /** - * NOTE: the property names below may seem weird, but it's - * because they are tested as case-sensitive suffixes, so - * "apitalizationType" will match any of the following - * - * - capitalizationType - * - autocapitalizationType - * - autoCapitalizationType - * - titleCapitalizationType - * - etc. - */ - static NSDictionary *converters = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - converters = - @{ - @"apitalizationType": ^(id val) { - return [RCTConvert UITextAutocapitalizationType:val]; - }, - @"eyboardType": ^(id val) { - return [RCTConvert UIKeyboardType:val]; - }, - @"extAlignment": ^(id val) { - return [RCTConvert NSTextAlignment:val]; - }, - @"ritingDirection": ^(id val) { - return [RCTConvert NSWritingDirection:val]; - }, - @"Cap": ^(id val) { - return [RCTConvert CGLineCap:val]; - }, - @"Join": ^(id val) { - return [RCTConvert CGLineJoin:val]; - }, - @"ointerEvents": ^(id val) { - return [RCTConvert RCTPointerEvents:val]; - }, - }; - }); - for (NSString *subkey in converters) { - if ([key hasSuffix:subkey]) { - NSInteger (^converter)(NSString *) = converters[subkey]; - json = @(converter(json)); - break; - } - } - } - - return RCTConvertValueWithEncoding(json, encoding); -} - -id RCTConvertValue(id target, NSString *key, id json) -{ - NSString *encoding = RCTPropertyEncoding(target, key, json); - return RCTConvertValueWithExplicitEncoding(target, key, json, encoding); -} - -BOOL RCTSetProperty(id target, NSString *keypath, id value) +BOOL RCTSetProperty(id target, NSString *keyPath, SEL type, id json) { // Split keypath - NSArray *parts = [keypath componentsSeparatedByString:@"."]; + NSArray *parts = [keyPath componentsSeparatedByString:@"."]; NSString *key = [parts lastObject]; for (NSUInteger i = 0; i < parts.count - 1; i++) { target = [target valueForKey:parts[i]]; @@ -879,48 +692,41 @@ BOOL RCTSetProperty(id target, NSString *keypath, id value) } } - // Get encoding - NSString *encoding = RCTPropertyEncoding(target, key, value); - if (!encoding) { + // Get property setter + SEL setter = NSSelectorFromString([NSString stringWithFormat:@"set%@%@:", + [[key substringToIndex:1] uppercaseString], + [key substringFromIndex:1]]); + + // Fail early + if (![target respondsToSelector:setter]) { return NO; } - // Convert value - value = RCTConvertValueWithExplicitEncoding(target, keypath, value, encoding); - - // Another nasty special case - if ([target isKindOfClass:[UITextField class]]) { - static NSDictionary *specialCases = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - specialCases = @{ - @"autocapitalizationType": ^(UITextField *f, NSInteger v){ f.autocapitalizationType = v; }, - @"autocorrectionType": ^(UITextField *f, NSInteger v){ f.autocorrectionType = v; }, - @"spellCheckingType": ^(UITextField *f, NSInteger v){ f.spellCheckingType = v; }, - @"keyboardType": ^(UITextField *f, NSInteger v){ f.keyboardType = v; }, - @"keyboardAppearance": ^(UITextField *f, NSInteger v){ f.keyboardAppearance = v; }, - @"returnKeyType": ^(UITextField *f, NSInteger v){ f.returnKeyType = v; }, - @"enablesReturnKeyAutomatically": ^(UITextField *f, NSInteger v){ f.enablesReturnKeyAutomatically = !!v; }, - @"secureTextEntry": ^(UITextField *f, NSInteger v){ f.secureTextEntry = !!v; }}; - }); - - void (^block)(UITextField *f, NSInteger v) = specialCases[key]; - if (block) { - block(target, [value integerValue]); - return YES; - } - } + // Get converted value + NSMethodSignature *signature = [RCTConvert methodSignatureForSelector:type]; + NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature]; + [invocation setArgument:&type atIndex:1]; + [invocation setArgument:&json atIndex:2]; + [invocation invokeWithTarget:[RCTConvert class]]; + NSUInteger length = [signature methodReturnLength]; + void *value = malloc(length); + [invocation getReturnValue:value]; // Set converted value - [target setValue:value forKey:key]; + signature = [target methodSignatureForSelector:setter]; + invocation = [NSInvocation invocationWithMethodSignature:signature]; + [invocation setArgument:&setter atIndex:1]; + [invocation setArgument:value atIndex:2]; + [invocation invokeWithTarget:target]; + free(value); return YES; } -BOOL RCTCopyProperty(id target, id source, NSString *keypath) +BOOL RCTCopyProperty(id target, id source, NSString *keyPath) { // Split keypath - NSArray *parts = [keypath componentsSeparatedByString:@"."]; + NSArray *parts = [keyPath componentsSeparatedByString:@"."]; NSString *key = [parts lastObject]; for (NSUInteger i = 0; i < parts.count - 1; i++) { source = [source valueForKey:parts[i]]; @@ -930,19 +736,35 @@ BOOL RCTCopyProperty(id target, id source, NSString *keypath) } } - // Check class for property definition - if (!class_getProperty([source class], [key UTF8String])) { - // Check if setter exists - SEL setter = NSSelectorFromString([NSString stringWithFormat:@"set%@%@:", - [[key substringToIndex:1] uppercaseString], - [key substringFromIndex:1]]); + // Get property getter + SEL getter = NSSelectorFromString(key); - if (![source respondsToSelector:setter] - || ![target respondsToSelector:setter]) { - return NO; - } + // Get property setter + SEL setter = NSSelectorFromString([NSString stringWithFormat:@"set%@%@:", + [[key substringToIndex:1] uppercaseString], + [key substringFromIndex:1]]); + + // Fail early + if (![source respondsToSelector:getter] || ![target respondsToSelector:setter]) { + return NO; } - [target setValue:[source valueForKey:key] forKey:key]; + // Get converted value + NSMethodSignature *signature = [source methodSignatureForSelector:getter]; + NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature]; + [invocation setArgument:&getter atIndex:1]; + [invocation invokeWithTarget:source]; + NSUInteger length = [signature methodReturnLength]; + void *value = malloc(length); + [invocation getReturnValue:value]; + + // Set converted value + signature = [target methodSignatureForSelector:setter]; + invocation = [NSInvocation invocationWithMethodSignature:signature]; + [invocation setArgument:&setter atIndex:1]; + [invocation setArgument:value atIndex:2]; + [invocation invokeWithTarget:target]; + free(value); + return YES; } diff --git a/ReactKit/Base/RCTDevMenu.h b/React/Base/RCTDevMenu.h similarity index 100% rename from ReactKit/Base/RCTDevMenu.h rename to React/Base/RCTDevMenu.h diff --git a/ReactKit/Base/RCTDevMenu.m b/React/Base/RCTDevMenu.m similarity index 100% rename from ReactKit/Base/RCTDevMenu.m rename to React/Base/RCTDevMenu.m diff --git a/ReactKit/Base/RCTEventDispatcher.h b/React/Base/RCTEventDispatcher.h similarity index 100% rename from ReactKit/Base/RCTEventDispatcher.h rename to React/Base/RCTEventDispatcher.h diff --git a/ReactKit/Base/RCTEventDispatcher.m b/React/Base/RCTEventDispatcher.m similarity index 100% rename from ReactKit/Base/RCTEventDispatcher.m rename to React/Base/RCTEventDispatcher.m diff --git a/ReactKit/Base/RCTInvalidating.h b/React/Base/RCTInvalidating.h similarity index 100% rename from ReactKit/Base/RCTInvalidating.h rename to React/Base/RCTInvalidating.h diff --git a/ReactKit/Base/RCTJSMethodRegistrar.h b/React/Base/RCTJSMethodRegistrar.h similarity index 100% rename from ReactKit/Base/RCTJSMethodRegistrar.h rename to React/Base/RCTJSMethodRegistrar.h diff --git a/ReactKit/Base/RCTJavaScriptExecutor.h b/React/Base/RCTJavaScriptExecutor.h similarity index 100% rename from ReactKit/Base/RCTJavaScriptExecutor.h rename to React/Base/RCTJavaScriptExecutor.h diff --git a/ReactKit/Base/RCTKeyCommands.h b/React/Base/RCTKeyCommands.h similarity index 100% rename from ReactKit/Base/RCTKeyCommands.h rename to React/Base/RCTKeyCommands.h diff --git a/ReactKit/Base/RCTKeyCommands.m b/React/Base/RCTKeyCommands.m similarity index 100% rename from ReactKit/Base/RCTKeyCommands.m rename to React/Base/RCTKeyCommands.m diff --git a/ReactKit/Base/RCTLog.h b/React/Base/RCTLog.h similarity index 100% rename from ReactKit/Base/RCTLog.h rename to React/Base/RCTLog.h diff --git a/ReactKit/Base/RCTLog.m b/React/Base/RCTLog.m similarity index 100% rename from ReactKit/Base/RCTLog.m rename to React/Base/RCTLog.m diff --git a/ReactKit/Base/RCTRedBox.h b/React/Base/RCTRedBox.h similarity index 100% rename from ReactKit/Base/RCTRedBox.h rename to React/Base/RCTRedBox.h diff --git a/ReactKit/Base/RCTRedBox.m b/React/Base/RCTRedBox.m similarity index 100% rename from ReactKit/Base/RCTRedBox.m rename to React/Base/RCTRedBox.m diff --git a/ReactKit/Base/RCTRootView.h b/React/Base/RCTRootView.h similarity index 100% rename from ReactKit/Base/RCTRootView.h rename to React/Base/RCTRootView.h diff --git a/ReactKit/Base/RCTRootView.m b/React/Base/RCTRootView.m similarity index 99% rename from ReactKit/Base/RCTRootView.m rename to React/Base/RCTRootView.m index 7f60598c3..ac39a9aed 100644 --- a/ReactKit/Base/RCTRootView.m +++ b/React/Base/RCTRootView.m @@ -21,7 +21,7 @@ #import "RCTUIManager.h" #import "RCTUtils.h" #import "RCTWebViewExecutor.h" -#import "UIView+ReactKit.h" +#import "UIView+React.h" NSString *const RCTReloadNotification = @"RCTReloadNotification"; @@ -244,7 +244,7 @@ static Class _globalExecutorClass; if (error) { if ([[error domain] isEqualToString:NSURLErrorDomain]) { NSDictionary *userInfo = @{ - NSLocalizedDescriptionKey: @"Could not connect to development server. Ensure node server is running - run 'npm start' from ReactKit root", + NSLocalizedDescriptionKey: @"Could not connect to development server. Ensure node server is running - run 'npm start' from React root", NSLocalizedFailureReasonErrorKey: [error localizedDescription], NSUnderlyingErrorKey: error, }; diff --git a/ReactKit/Base/RCTSparseArray.h b/React/Base/RCTSparseArray.h similarity index 100% rename from ReactKit/Base/RCTSparseArray.h rename to React/Base/RCTSparseArray.h diff --git a/ReactKit/Base/RCTSparseArray.m b/React/Base/RCTSparseArray.m similarity index 100% rename from ReactKit/Base/RCTSparseArray.m rename to React/Base/RCTSparseArray.m diff --git a/ReactKit/Base/RCTTouchHandler.h b/React/Base/RCTTouchHandler.h similarity index 100% rename from ReactKit/Base/RCTTouchHandler.h rename to React/Base/RCTTouchHandler.h diff --git a/ReactKit/Base/RCTTouchHandler.m b/React/Base/RCTTouchHandler.m similarity index 99% rename from ReactKit/Base/RCTTouchHandler.m rename to React/Base/RCTTouchHandler.m index 108e43cce..b5d3b1e72 100644 --- a/ReactKit/Base/RCTTouchHandler.m +++ b/React/Base/RCTTouchHandler.m @@ -16,7 +16,7 @@ #import "RCTLog.h" #import "RCTUIManager.h" #import "RCTUtils.h" -#import "UIView+ReactKit.h" +#import "UIView+React.h" // TODO: this class behaves a lot like a module, and could be implemented as a // module if we were to assume that modules and RootViews had a 1:1 relationship diff --git a/ReactKit/Base/RCTUtils.h b/React/Base/RCTUtils.h similarity index 100% rename from ReactKit/Base/RCTUtils.h rename to React/Base/RCTUtils.h diff --git a/ReactKit/Base/RCTUtils.m b/React/Base/RCTUtils.m similarity index 100% rename from ReactKit/Base/RCTUtils.m rename to React/Base/RCTUtils.m diff --git a/ReactKit/Executors/RCTContextExecutor.h b/React/Executors/RCTContextExecutor.h similarity index 100% rename from ReactKit/Executors/RCTContextExecutor.h rename to React/Executors/RCTContextExecutor.h diff --git a/ReactKit/Executors/RCTContextExecutor.m b/React/Executors/RCTContextExecutor.m similarity index 99% rename from ReactKit/Executors/RCTContextExecutor.m rename to React/Executors/RCTContextExecutor.m index e13f296e7..4370bd7bd 100644 --- a/ReactKit/Executors/RCTContextExecutor.m +++ b/React/Executors/RCTContextExecutor.m @@ -121,7 +121,7 @@ static NSError *RCTNSErrorFromJSError(JSContextRef context, JSValueRef jsError) dispatch_once(&onceToken, ^{ // All JS is single threaded, so a serial queue is our only option. javaScriptThread = [[NSThread alloc] initWithTarget:[self class] selector:@selector(runRunLoopThread) object:nil]; - [javaScriptThread setName:@"com.facebook.ReactKit.JavaScript"]; + [javaScriptThread setName:@"com.facebook.React.JavaScript"]; [javaScriptThread setThreadPriority:[[NSThread mainThread] threadPriority]]; [javaScriptThread start]; }); diff --git a/ReactKit/Executors/RCTWebViewExecutor.h b/React/Executors/RCTWebViewExecutor.h similarity index 100% rename from ReactKit/Executors/RCTWebViewExecutor.h rename to React/Executors/RCTWebViewExecutor.h diff --git a/ReactKit/Executors/RCTWebViewExecutor.m b/React/Executors/RCTWebViewExecutor.m similarity index 100% rename from ReactKit/Executors/RCTWebViewExecutor.m rename to React/Executors/RCTWebViewExecutor.m diff --git a/ReactKit/Layout/Layout.c b/React/Layout/Layout.c similarity index 100% rename from ReactKit/Layout/Layout.c rename to React/Layout/Layout.c diff --git a/ReactKit/Layout/Layout.h b/React/Layout/Layout.h similarity index 100% rename from ReactKit/Layout/Layout.h rename to React/Layout/Layout.h diff --git a/ReactKit/Modules/RCTAlertManager.h b/React/Modules/RCTAlertManager.h similarity index 100% rename from ReactKit/Modules/RCTAlertManager.h rename to React/Modules/RCTAlertManager.h diff --git a/ReactKit/Modules/RCTAlertManager.m b/React/Modules/RCTAlertManager.m similarity index 100% rename from ReactKit/Modules/RCTAlertManager.m rename to React/Modules/RCTAlertManager.m diff --git a/ReactKit/Modules/RCTAppState.h b/React/Modules/RCTAppState.h similarity index 100% rename from ReactKit/Modules/RCTAppState.h rename to React/Modules/RCTAppState.h diff --git a/ReactKit/Modules/RCTAppState.m b/React/Modules/RCTAppState.m similarity index 100% rename from ReactKit/Modules/RCTAppState.m rename to React/Modules/RCTAppState.m diff --git a/ReactKit/Modules/RCTAsyncLocalStorage.h b/React/Modules/RCTAsyncLocalStorage.h similarity index 100% rename from ReactKit/Modules/RCTAsyncLocalStorage.h rename to React/Modules/RCTAsyncLocalStorage.h diff --git a/ReactKit/Modules/RCTAsyncLocalStorage.m b/React/Modules/RCTAsyncLocalStorage.m similarity index 100% rename from ReactKit/Modules/RCTAsyncLocalStorage.m rename to React/Modules/RCTAsyncLocalStorage.m diff --git a/ReactKit/Modules/RCTExceptionsManager.h b/React/Modules/RCTExceptionsManager.h similarity index 100% rename from ReactKit/Modules/RCTExceptionsManager.h rename to React/Modules/RCTExceptionsManager.h diff --git a/ReactKit/Modules/RCTExceptionsManager.m b/React/Modules/RCTExceptionsManager.m similarity index 100% rename from ReactKit/Modules/RCTExceptionsManager.m rename to React/Modules/RCTExceptionsManager.m diff --git a/ReactKit/Modules/RCTSourceCode.h b/React/Modules/RCTSourceCode.h similarity index 100% rename from ReactKit/Modules/RCTSourceCode.h rename to React/Modules/RCTSourceCode.h diff --git a/ReactKit/Modules/RCTSourceCode.m b/React/Modules/RCTSourceCode.m similarity index 100% rename from ReactKit/Modules/RCTSourceCode.m rename to React/Modules/RCTSourceCode.m diff --git a/ReactKit/Modules/RCTStatusBarManager.h b/React/Modules/RCTStatusBarManager.h similarity index 100% rename from ReactKit/Modules/RCTStatusBarManager.h rename to React/Modules/RCTStatusBarManager.h diff --git a/ReactKit/Modules/RCTStatusBarManager.m b/React/Modules/RCTStatusBarManager.m similarity index 100% rename from ReactKit/Modules/RCTStatusBarManager.m rename to React/Modules/RCTStatusBarManager.m diff --git a/ReactKit/Modules/RCTTiming.h b/React/Modules/RCTTiming.h similarity index 100% rename from ReactKit/Modules/RCTTiming.h rename to React/Modules/RCTTiming.h diff --git a/ReactKit/Modules/RCTTiming.m b/React/Modules/RCTTiming.m similarity index 100% rename from ReactKit/Modules/RCTTiming.m rename to React/Modules/RCTTiming.m diff --git a/ReactKit/Modules/RCTUIManager.h b/React/Modules/RCTUIManager.h similarity index 100% rename from ReactKit/Modules/RCTUIManager.h rename to React/Modules/RCTUIManager.h diff --git a/ReactKit/Modules/RCTUIManager.m b/React/Modules/RCTUIManager.m similarity index 98% rename from ReactKit/Modules/RCTUIManager.m rename to React/Modules/RCTUIManager.m index 73c6929a7..e6a540db2 100644 --- a/ReactKit/Modules/RCTUIManager.m +++ b/React/Modules/RCTUIManager.m @@ -27,7 +27,7 @@ #import "RCTView.h" #import "RCTViewManager.h" #import "RCTViewNodeProtocol.h" -#import "UIView+ReactKit.h" +#import "UIView+React.h" typedef void (^react_view_node_block_t)(id); @@ -437,9 +437,6 @@ static NSString *RCTViewNameForModuleName(NSString *moduleName) completion(YES); } - // TODO: deprecate this - [view reactSetBorders]; - // Animate view creation BOOL shouldAnimateCreation = isNew && ![parentsAreNew[ii] boolValue]; RCTAnimation *createAnimation = _layoutAnimation.createAnimation; @@ -683,10 +680,8 @@ static void RCTSetViewProps(NSDictionary *props, UIView *view, [props enumerateKeysAndObjectsUsingBlock:^(NSString *key, id obj, BOOL *stop) { SEL setter = NSSelectorFromString([NSString stringWithFormat:@"set_%@:forView:withDefaultView:", key]); - - // For regular views we don't attempt to set properties - // unless the view property has been explicitly exported. RCTCallPropertySetter(setter, obj, view, defaultView, manager); + }]; } @@ -696,20 +691,8 @@ static void RCTSetShadowViewProps(NSDictionary *props, RCTShadowView *shadowView [props enumerateKeysAndObjectsUsingBlock:^(NSString *key, id obj, BOOL *stop) { SEL setter = NSSelectorFromString([NSString stringWithFormat:@"set_%@:forShadowView:withDefaultView:", key]); + RCTCallPropertySetter(setter, obj, shadowView, defaultView, manager); - // For shadow views we call any custom setter methods by default, - // but if none is specified, we attempt to set property anyway. - if (!RCTCallPropertySetter(setter, obj, shadowView, defaultView, manager)) { - - if (obj == [NSNull null]) { - // Copy property from default view to current - // Note: not just doing `[defaultView valueForKey:key]`, the - // key may not exist, in which case we'd get an exception. - RCTCopyProperty(shadowView, defaultView, key); - } else { - RCTSetProperty(shadowView, key, obj); - } - } }]; // Update layout diff --git a/ReactKit/ReactKit.xcodeproj/project.pbxproj b/React/React.xcodeproj/project.pbxproj similarity index 97% rename from ReactKit/ReactKit.xcodeproj/project.pbxproj rename to React/React.xcodeproj/project.pbxproj index b7c68ccd5..ba6ec3aab 100644 --- a/ReactKit/ReactKit.xcodeproj/project.pbxproj +++ b/React/React.xcodeproj/project.pbxproj @@ -38,7 +38,7 @@ 13E067551A70F44B002CDEE1 /* RCTShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = 13E0674C1A70F44B002CDEE1 /* RCTShadowView.m */; }; 13E067561A70F44B002CDEE1 /* RCTViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 13E0674E1A70F44B002CDEE1 /* RCTViewManager.m */; }; 13E067571A70F44B002CDEE1 /* RCTView.m in Sources */ = {isa = PBXBuildFile; fileRef = 13E067501A70F44B002CDEE1 /* RCTView.m */; }; - 13E067591A70F44B002CDEE1 /* UIView+ReactKit.m in Sources */ = {isa = PBXBuildFile; fileRef = 13E067541A70F44B002CDEE1 /* UIView+ReactKit.m */; }; + 13E067591A70F44B002CDEE1 /* UIView+React.m in Sources */ = {isa = PBXBuildFile; fileRef = 13E067541A70F44B002CDEE1 /* UIView+React.m */; }; 14435CE51AAC4AE100FC20F4 /* RCTMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 14435CE21AAC4AE100FC20F4 /* RCTMap.m */; }; 14435CE61AAC4AE100FC20F4 /* RCTMapManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 14435CE41AAC4AE100FC20F4 /* RCTMapManager.m */; }; 14F3620D1AABD06A001CE568 /* RCTSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = 14F362081AABD06A001CE568 /* RCTSwitch.m */; }; @@ -143,8 +143,8 @@ 13E0674E1A70F44B002CDEE1 /* RCTViewManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTViewManager.m; sourceTree = ""; }; 13E0674F1A70F44B002CDEE1 /* RCTView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTView.h; sourceTree = ""; }; 13E067501A70F44B002CDEE1 /* RCTView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTView.m; sourceTree = ""; }; - 13E067531A70F44B002CDEE1 /* UIView+ReactKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+ReactKit.h"; sourceTree = ""; }; - 13E067541A70F44B002CDEE1 /* UIView+ReactKit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+ReactKit.m"; sourceTree = ""; }; + 13E067531A70F44B002CDEE1 /* UIView+React.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+React.h"; sourceTree = ""; }; + 13E067541A70F44B002CDEE1 /* UIView+React.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+React.m"; sourceTree = ""; }; 13EFFCCF1A98E6FE002607DC /* RCTJSMethodRegistrar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTJSMethodRegistrar.h; sourceTree = ""; }; 14435CE11AAC4AE100FC20F4 /* RCTMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTMap.h; sourceTree = ""; }; 14435CE21AAC4AE100FC20F4 /* RCTMap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTMap.m; sourceTree = ""; }; @@ -171,7 +171,7 @@ 830BA4541A8E3BDA00D53203 /* RCTCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTCache.m; sourceTree = ""; }; 83BEE46C1A6D19BC00B5863B /* RCTSparseArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTSparseArray.h; sourceTree = ""; }; 83BEE46D1A6D19BC00B5863B /* RCTSparseArray.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTSparseArray.m; sourceTree = ""; }; - 83CBBA2E1A601D0E00E9B192 /* libReactKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libReactKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 83CBBA2E1A601D0E00E9B192 /* libReact.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libReact.a; sourceTree = BUILT_PRODUCTS_DIR; }; 83CBBA4A1A601E3B00E9B192 /* RCTAssert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTAssert.h; sourceTree = ""; }; 83CBBA4B1A601E3B00E9B192 /* RCTAssert.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTAssert.m; sourceTree = ""; }; 83CBBA4C1A601E3B00E9B192 /* RCTInvalidating.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTInvalidating.h; sourceTree = ""; }; @@ -309,8 +309,8 @@ 13C156041AB1A2840079392D /* RCTWebViewManager.m */, 13B080231A694A8400A75B9A /* RCTWrapperViewController.h */, 13B080241A694A8400A75B9A /* RCTWrapperViewController.m */, - 13E067531A70F44B002CDEE1 /* UIView+ReactKit.h */, - 13E067541A70F44B002CDEE1 /* UIView+ReactKit.m */, + 13E067531A70F44B002CDEE1 /* UIView+React.h */, + 13E067541A70F44B002CDEE1 /* UIView+React.m */, ); path = Views; sourceTree = ""; @@ -318,7 +318,7 @@ 83CBB9F61A601CBA00E9B192 = { isa = PBXGroup; children = ( - 83CBBA2F1A601D0F00E9B192 /* ReactKit */, + 83CBBA2F1A601D0F00E9B192 /* React */, 83CBBA001A601CBA00E9B192 /* Products */, ); sourceTree = ""; @@ -326,12 +326,12 @@ 83CBBA001A601CBA00E9B192 /* Products */ = { isa = PBXGroup; children = ( - 83CBBA2E1A601D0E00E9B192 /* libReactKit.a */, + 83CBBA2E1A601D0E00E9B192 /* libReact.a */, ); name = Products; sourceTree = ""; }; - 83CBBA2F1A601D0F00E9B192 /* ReactKit */ = { + 83CBBA2F1A601D0F00E9B192 /* React */ = { isa = PBXGroup; children = ( 83CBBA491A601E3B00E9B192 /* Base */, @@ -340,7 +340,7 @@ 13B07FE01A69315300A75B9A /* Modules */, 13B07FF31A6947C200A75B9A /* Views */, ); - name = ReactKit; + name = React; sourceTree = ""; }; 83CBBA491A601E3B00E9B192 /* Base */ = { @@ -383,9 +383,9 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 83CBBA2D1A601D0E00E9B192 /* ReactKit */ = { + 83CBBA2D1A601D0E00E9B192 /* React */ = { isa = PBXNativeTarget; - buildConfigurationList = 83CBBA3F1A601D0F00E9B192 /* Build configuration list for PBXNativeTarget "ReactKit" */; + buildConfigurationList = 83CBBA3F1A601D0F00E9B192 /* Build configuration list for PBXNativeTarget "React" */; buildPhases = ( 006B79A01A781F38006873D1 /* ShellScript */, 83CBBA2A1A601D0E00E9B192 /* Sources */, @@ -396,9 +396,9 @@ ); dependencies = ( ); - name = ReactKit; - productName = ReactKit; - productReference = 83CBBA2E1A601D0E00E9B192 /* libReactKit.a */; + name = React; + productName = React; + productReference = 83CBBA2E1A601D0E00E9B192 /* libReact.a */; productType = "com.apple.product-type.library.static"; }; /* End PBXNativeTarget section */ @@ -415,7 +415,7 @@ }; }; }; - buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "ReactKit" */; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "React" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 0; @@ -428,7 +428,7 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 83CBBA2D1A601D0E00E9B192 /* ReactKit */, + 83CBBA2D1A601D0E00E9B192 /* React */, ); }; /* End PBXProject section */ @@ -478,7 +478,7 @@ 1372B70A1AB030C200659ED6 /* RCTAppState.m in Sources */, 13B0801F1A69489C00A75B9A /* RCTTextFieldManager.m in Sources */, 134FCB3D1A6E7F0800051CC8 /* RCTContextExecutor.m in Sources */, - 13E067591A70F44B002CDEE1 /* UIView+ReactKit.m in Sources */, + 13E067591A70F44B002CDEE1 /* UIView+React.m in Sources */, 14F484561AABFCE100FDF6B9 /* RCTSliderManager.m in Sources */, 83CBBA981A6020BB00E9B192 /* RCTTouchHandler.m in Sources */, 83CBBA521A601E3B00E9B192 /* RCTLog.m in Sources */, @@ -623,7 +623,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "ReactKit" */ = { + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "React" */ = { isa = XCConfigurationList; buildConfigurations = ( 83CBBA201A601CBA00E9B192 /* Debug */, @@ -632,7 +632,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 83CBBA3F1A601D0F00E9B192 /* Build configuration list for PBXNativeTarget "ReactKit" */ = { + 83CBBA3F1A601D0F00E9B192 /* Build configuration list for PBXNativeTarget "React" */ = { isa = XCConfigurationList; buildConfigurations = ( 83CBBA401A601D0F00E9B192 /* Debug */, diff --git a/ReactKit/Views/RCTAnimationType.h b/React/Views/RCTAnimationType.h similarity index 100% rename from ReactKit/Views/RCTAnimationType.h rename to React/Views/RCTAnimationType.h diff --git a/ReactKit/Views/RCTAutoInsetsProtocol.h b/React/Views/RCTAutoInsetsProtocol.h similarity index 100% rename from ReactKit/Views/RCTAutoInsetsProtocol.h rename to React/Views/RCTAutoInsetsProtocol.h diff --git a/ReactKit/Views/RCTDatePickerManager.h b/React/Views/RCTDatePickerManager.h similarity index 100% rename from ReactKit/Views/RCTDatePickerManager.h rename to React/Views/RCTDatePickerManager.h diff --git a/ReactKit/Views/RCTDatePickerManager.m b/React/Views/RCTDatePickerManager.m similarity index 66% rename from ReactKit/Views/RCTDatePickerManager.m rename to React/Views/RCTDatePickerManager.m index 2a2b6bc48..4029998c2 100644 --- a/ReactKit/Views/RCTDatePickerManager.m +++ b/React/Views/RCTDatePickerManager.m @@ -12,7 +12,18 @@ #import "RCTBridge.h" #import "RCTConvert.h" #import "RCTEventDispatcher.h" -#import "UIView+ReactKit.h" +#import "UIView+React.h" + +@implementation RCTConvert(UIDatePicker) + +RCT_ENUM_CONVERTER(UIDatePickerMode, (@{ + @"time": @(UIDatePickerModeTime), + @"date": @(UIDatePickerModeDate), + @"datetime": @(UIDatePickerModeDateAndTime), + //@"countdown": @(UIDatePickerModeCountDownTimer) // not supported yet +}), UIDatePickerModeTime, integerValue) + +@end @implementation RCTDatePickerManager @@ -25,12 +36,12 @@ return picker; } -RCT_EXPORT_VIEW_PROPERTY(date) -RCT_EXPORT_VIEW_PROPERTY(minimumDate) -RCT_EXPORT_VIEW_PROPERTY(maximumDate) -RCT_EXPORT_VIEW_PROPERTY(minuteInterval) -RCT_REMAP_VIEW_PROPERTY(mode, datePickerMode) -RCT_REMAP_VIEW_PROPERTY(timeZoneOffsetInMinutes, timeZone) +RCT_EXPORT_VIEW_PROPERTY(date, NSDate) +RCT_EXPORT_VIEW_PROPERTY(minimumDate, NSDate) +RCT_EXPORT_VIEW_PROPERTY(maximumDate, NSDate) +RCT_EXPORT_VIEW_PROPERTY(minuteInterval, NSInteger) +RCT_REMAP_VIEW_PROPERTY(mode, datePickerMode, UIDatePickerMode) +RCT_REMAP_VIEW_PROPERTY(timeZoneOffsetInMinutes, timeZone, NSTimeZone) - (void)onChange:(UIDatePicker *)sender { diff --git a/ReactKit/Views/RCTMap.h b/React/Views/RCTMap.h similarity index 88% rename from ReactKit/Views/RCTMap.h rename to React/Views/RCTMap.h index 95927d2a7..3850378e9 100644 --- a/ReactKit/Views/RCTMap.h +++ b/React/Views/RCTMap.h @@ -19,13 +19,9 @@ extern const CGFloat RCTMapZoomBoundBuffer; @interface RCTMap: MKMapView @property (nonatomic, assign) BOOL followUserLocation; -@property (nonatomic, copy) NSDictionary *JSONRegion; @property (nonatomic, assign) CGFloat minDelta; @property (nonatomic, assign) CGFloat maxDelta; @property (nonatomic, assign) UIEdgeInsets legalLabelInsets; @property (nonatomic, strong) NSTimer *regionChangeObserveTimer; @end - -#define FLUSH_NAN(value) \ - (isnan(value) ? 0 : value) diff --git a/ReactKit/Views/RCTMap.m b/React/Views/RCTMap.m similarity index 67% rename from ReactKit/Views/RCTMap.m rename to React/Views/RCTMap.m index a133e69ef..72c0db5eb 100644 --- a/ReactKit/Views/RCTMap.m +++ b/React/Views/RCTMap.m @@ -18,19 +18,15 @@ const CLLocationDegrees RCTMapDefaultSpan = 0.005; const NSTimeInterval RCTMapRegionChangeObserveInterval = 0.1; const CGFloat RCTMapZoomBoundBuffer = 0.01; -@interface RCTMap() - -@property (nonatomic, strong) UIView *legalLabel; -@property (nonatomic, strong) CLLocationManager *locationManager; - -@end - @implementation RCTMap +{ + UIView *_legalLabel; + CLLocationManager *_locationManager; +} - (instancetype)init { - self = [super init]; - if (self) { + if ((self = [super init])) { // Find Apple link label for (UIView *subview in self.subviews) { if ([NSStringFromClass(subview.class) isEqualToString:@"MKAttributionLabel"]) { @@ -45,7 +41,7 @@ const CGFloat RCTMapZoomBoundBuffer = 0.01; - (void)dealloc { - [self.regionChangeObserveTimer invalidate]; + [_regionChangeObserveTimer invalidate]; } - (void)layoutSubviews @@ -94,36 +90,23 @@ const CGFloat RCTMapZoomBoundBuffer = 0.01; } } -- (void)setJSONRegion:(NSDictionary *)region +- (void)setRegion:(MKCoordinateRegion)region { - if (region) { - MKCoordinateRegion coordinateRegion = self.region; - coordinateRegion.center.latitude = [RCTConvert double:region[@"latitude"]]; - coordinateRegion.center.longitude = [RCTConvert double:region[@"longitude"]]; - - if ([region[@"latitudeDelta"] isKindOfClass:[NSNumber class]]) { - coordinateRegion.span.latitudeDelta = [region[@"latitudeDelta"] doubleValue]; - } - if ([region[@"longitudeDelta"] isKindOfClass:[NSNumber class]]) { - coordinateRegion.span.longitudeDelta = [region[@"longitudeDelta"] doubleValue]; - } - - [self setRegion:coordinateRegion animated:YES]; - } -} - -- (NSDictionary *)JSONRegion -{ - MKCoordinateRegion region = self.region; + // If location is invalid, abort if (!CLLocationCoordinate2DIsValid(region.center)) { - return nil; + return; } - return @{ - @"latitude": @(FLUSH_NAN(region.center.latitude)), - @"longitude": @(FLUSH_NAN(region.center.longitude)), - @"latitudeDelta": @(FLUSH_NAN(region.span.latitudeDelta)), - @"longitudeDelta": @(FLUSH_NAN(region.span.longitudeDelta)), - }; + + // If new span values are nil, use old values instead + if (!region.span.latitudeDelta) { + region.span.latitudeDelta = self.region.span.latitudeDelta; + } + if (!region.span.longitudeDelta) { + region.span.longitudeDelta = self.region.span.longitudeDelta; + } + + // Animate to new position + [super setRegion:region animated:YES]; } @end diff --git a/ReactKit/Views/RCTMapManager.h b/React/Views/RCTMapManager.h similarity index 100% rename from ReactKit/Views/RCTMapManager.h rename to React/Views/RCTMapManager.h diff --git a/ReactKit/Views/RCTMapManager.m b/React/Views/RCTMapManager.m similarity index 66% rename from ReactKit/Views/RCTMapManager.m rename to React/Views/RCTMapManager.m index 07d43ec80..9bd0f7eab 100644 --- a/ReactKit/Views/RCTMapManager.m +++ b/React/Views/RCTMapManager.m @@ -12,7 +12,41 @@ #import "RCTBridge.h" #import "RCTEventDispatcher.h" #import "RCTMap.h" -#import "UIView+ReactKit.h" +#import "UIView+React.h" + +@implementation RCTConvert(CoreLocation) + ++ (CLLocationCoordinate2D)CLLocationCoordinate2D:(id)json +{ + json = [self NSDictionary:json]; + return (CLLocationCoordinate2D){ + [self double:json[@"latitude"]], + [self double:json[@"longitude"]] + }; +} + +@end + +@implementation RCTConvert(MapKit) + ++ (MKCoordinateSpan)MKCoordinateSpan:(id)json +{ + json = [self NSDictionary:json]; + return (MKCoordinateSpan){ + [self double:json[@"latitudeDelta"]], + [self double:json[@"longitudeDelta"]] + }; +} + ++ (MKCoordinateRegion)MKCoordinateRegion:(id)json +{ + return (MKCoordinateRegion){ + [self CLLocationCoordinate2D:json], + [self MKCoordinateSpan:json] + }; +} + +@end @interface RCTMapManager() @@ -27,15 +61,15 @@ return map; } -RCT_EXPORT_VIEW_PROPERTY(showsUserLocation); -RCT_EXPORT_VIEW_PROPERTY(zoomEnabled); -RCT_EXPORT_VIEW_PROPERTY(rotateEnabled); -RCT_EXPORT_VIEW_PROPERTY(pitchEnabled); -RCT_EXPORT_VIEW_PROPERTY(scrollEnabled); -RCT_EXPORT_VIEW_PROPERTY(maxDelta); -RCT_EXPORT_VIEW_PROPERTY(minDelta); -RCT_EXPORT_VIEW_PROPERTY(legalLabelInsets); -RCT_REMAP_VIEW_PROPERTY(region, JSONRegion) +RCT_EXPORT_VIEW_PROPERTY(showsUserLocation, BOOL) +RCT_EXPORT_VIEW_PROPERTY(zoomEnabled, BOOL) +RCT_EXPORT_VIEW_PROPERTY(rotateEnabled, BOOL) +RCT_EXPORT_VIEW_PROPERTY(pitchEnabled, BOOL) +RCT_EXPORT_VIEW_PROPERTY(scrollEnabled, BOOL) +RCT_EXPORT_VIEW_PROPERTY(maxDelta, CGFloat) +RCT_EXPORT_VIEW_PROPERTY(minDelta, CGFloat) +RCT_EXPORT_VIEW_PROPERTY(legalLabelInsets, UIEdgeInsets) +RCT_EXPORT_VIEW_PROPERTY(region, MKCoordinateRegion) #pragma mark MKMapViewDelegate @@ -112,15 +146,24 @@ RCT_REMAP_VIEW_PROPERTY(region, JSONRegion) - (void)_emitRegionChangeEvent:(RCTMap *)mapView continuous:(BOOL)continuous { - NSDictionary *region = mapView.JSONRegion; - if (region) { - NSDictionary *event = @{ - @"target": [mapView reactTag], - @"continuous": @(continuous), - @"region": mapView.JSONRegion, - }; - [self.bridge.eventDispatcher sendInputEventWithName:@"topChange" body:event]; + MKCoordinateRegion region = mapView.region; + if (!CLLocationCoordinate2DIsValid(region.center)) { + return; } + +#define FLUSH_NAN(value) (isnan(value) ? 0 : value) + + NSDictionary *event = @{ + @"target": [mapView reactTag], + @"continuous": @(continuous), + @"region": @{ + @"latitude": @(FLUSH_NAN(region.center.latitude)), + @"longitude": @(FLUSH_NAN(region.center.longitude)), + @"latitudeDelta": @(FLUSH_NAN(region.span.latitudeDelta)), + @"longitudeDelta": @(FLUSH_NAN(region.span.longitudeDelta)), + } + }; + [self.bridge.eventDispatcher sendInputEventWithName:@"topChange" body:event]; } @end diff --git a/ReactKit/Views/RCTNavItem.h b/React/Views/RCTNavItem.h similarity index 100% rename from ReactKit/Views/RCTNavItem.h rename to React/Views/RCTNavItem.h diff --git a/ReactKit/Views/RCTNavItem.m b/React/Views/RCTNavItem.m similarity index 100% rename from ReactKit/Views/RCTNavItem.m rename to React/Views/RCTNavItem.m diff --git a/ReactKit/Views/RCTNavItemManager.h b/React/Views/RCTNavItemManager.h similarity index 100% rename from ReactKit/Views/RCTNavItemManager.h rename to React/Views/RCTNavItemManager.h diff --git a/ReactKit/Views/RCTNavItemManager.m b/React/Views/RCTNavItemManager.m similarity index 62% rename from ReactKit/Views/RCTNavItemManager.m rename to React/Views/RCTNavItemManager.m index 1c574cbd1..549859ae0 100644 --- a/ReactKit/Views/RCTNavItemManager.m +++ b/React/Views/RCTNavItemManager.m @@ -19,12 +19,11 @@ return [[RCTNavItem alloc] init]; } -RCT_EXPORT_VIEW_PROPERTY(title) -RCT_EXPORT_VIEW_PROPERTY(rightButtonTitle); -RCT_EXPORT_VIEW_PROPERTY(backButtonTitle); -RCT_EXPORT_VIEW_PROPERTY(tintColor); -RCT_EXPORT_VIEW_PROPERTY(barTintColor); -RCT_EXPORT_VIEW_PROPERTY(titleTextColor); +RCT_EXPORT_VIEW_PROPERTY(title, NSString) +RCT_EXPORT_VIEW_PROPERTY(rightButtonTitle, NSString); +RCT_EXPORT_VIEW_PROPERTY(backButtonTitle, NSString); +RCT_EXPORT_VIEW_PROPERTY(tintColor, UIColor); +RCT_EXPORT_VIEW_PROPERTY(barTintColor, UIColor); +RCT_EXPORT_VIEW_PROPERTY(titleTextColor, UIColor); @end - diff --git a/ReactKit/Views/RCTNavigator.h b/React/Views/RCTNavigator.h similarity index 100% rename from ReactKit/Views/RCTNavigator.h rename to React/Views/RCTNavigator.h diff --git a/ReactKit/Views/RCTNavigator.m b/React/Views/RCTNavigator.m similarity index 99% rename from ReactKit/Views/RCTNavigator.m rename to React/Views/RCTNavigator.m index e3ee09a5a..373313b93 100644 --- a/ReactKit/Views/RCTNavigator.m +++ b/React/Views/RCTNavigator.m @@ -17,7 +17,7 @@ #import "RCTUtils.h" #import "RCTView.h" #import "RCTWrapperViewController.h" -#import "UIView+ReactKit.h" +#import "UIView+React.h" typedef NS_ENUM(NSUInteger, RCTNavigationLock) { RCTNavigationLockNone, diff --git a/ReactKit/Views/RCTNavigatorManager.h b/React/Views/RCTNavigatorManager.h similarity index 100% rename from ReactKit/Views/RCTNavigatorManager.h rename to React/Views/RCTNavigatorManager.h diff --git a/ReactKit/Views/RCTNavigatorManager.m b/React/Views/RCTNavigatorManager.m similarity index 96% rename from ReactKit/Views/RCTNavigatorManager.m rename to React/Views/RCTNavigatorManager.m index 5954465e0..7df00c764 100644 --- a/ReactKit/Views/RCTNavigatorManager.m +++ b/React/Views/RCTNavigatorManager.m @@ -22,7 +22,7 @@ return [[RCTNavigator alloc] initWithEventDispatcher:self.bridge.eventDispatcher]; } -RCT_EXPORT_VIEW_PROPERTY(requestedTopOfStack) +RCT_EXPORT_VIEW_PROPERTY(requestedTopOfStack, NSInteger) - (NSDictionary *)customDirectEventTypes { diff --git a/ReactKit/Views/RCTPicker.h b/React/Views/RCTPicker.h similarity index 100% rename from ReactKit/Views/RCTPicker.h rename to React/Views/RCTPicker.h diff --git a/ReactKit/Views/RCTPicker.m b/React/Views/RCTPicker.m similarity index 95% rename from ReactKit/Views/RCTPicker.m rename to React/Views/RCTPicker.m index 25b3a3186..dd2bcdb8a 100644 --- a/ReactKit/Views/RCTPicker.m +++ b/React/Views/RCTPicker.m @@ -12,19 +12,20 @@ #import "RCTConvert.h" #import "RCTEventDispatcher.h" #import "RCTUtils.h" -#import "UIView+ReactKit.h" +#import "UIView+React.h" const NSInteger UNINITIALIZED_INDEX = -1; @interface RCTPicker() + +@end + +@implementation RCTPicker { RCTEventDispatcher *_eventDispatcher; NSArray *_items; NSInteger _selectedIndex; } -@end - -@implementation RCTPicker - (id)initWithEventDispatcher:(RCTEventDispatcher *)eventDispatcher { @@ -64,14 +65,14 @@ const NSInteger UNINITIALIZED_INDEX = -1; - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { - return [_items count]; + return _items.count; } #pragma mark - UIPickerViewDelegate methods - (NSDictionary *)itemForRow:(NSInteger)row { - return (NSDictionary*)[_items objectAtIndex:row]; + return _items[row]; } - (id)valueForRow:(NSInteger)row diff --git a/ReactKit/Views/RCTPickerManager.h b/React/Views/RCTPickerManager.h similarity index 100% rename from ReactKit/Views/RCTPickerManager.h rename to React/Views/RCTPickerManager.h diff --git a/ReactKit/Views/RCTPickerManager.m b/React/Views/RCTPickerManager.m similarity index 88% rename from ReactKit/Views/RCTPickerManager.m rename to React/Views/RCTPickerManager.m index fb92c05db..cffacca68 100644 --- a/ReactKit/Views/RCTPickerManager.m +++ b/React/Views/RCTPickerManager.m @@ -20,8 +20,8 @@ return [[RCTPicker alloc] initWithEventDispatcher:self.bridge.eventDispatcher]; } -RCT_EXPORT_VIEW_PROPERTY(items) -RCT_EXPORT_VIEW_PROPERTY(selectedIndex) +RCT_EXPORT_VIEW_PROPERTY(items, NSDictionaryArray) +RCT_EXPORT_VIEW_PROPERTY(selectedIndex, NSInteger) - (NSDictionary *)constantsToExport { diff --git a/ReactKit/Views/RCTPointerEvents.h b/React/Views/RCTPointerEvents.h similarity index 100% rename from ReactKit/Views/RCTPointerEvents.h rename to React/Views/RCTPointerEvents.h diff --git a/ReactKit/Views/RCTScrollView.h b/React/Views/RCTScrollView.h similarity index 100% rename from ReactKit/Views/RCTScrollView.h rename to React/Views/RCTScrollView.h diff --git a/ReactKit/Views/RCTScrollView.m b/React/Views/RCTScrollView.m similarity index 99% rename from ReactKit/Views/RCTScrollView.m rename to React/Views/RCTScrollView.m index 8c3db22be..e3e1c2f79 100644 --- a/ReactKit/Views/RCTScrollView.m +++ b/React/Views/RCTScrollView.m @@ -16,7 +16,7 @@ #import "RCTLog.h" #import "RCTUIManager.h" #import "RCTUtils.h" -#import "UIView+ReactKit.h" +#import "UIView+React.h" CGFloat const ZINDEX_DEFAULT = 0; CGFloat const ZINDEX_STICKY_HEADER = 50; diff --git a/ReactKit/Views/RCTScrollViewManager.h b/React/Views/RCTScrollViewManager.h similarity index 100% rename from ReactKit/Views/RCTScrollViewManager.h rename to React/Views/RCTScrollViewManager.h diff --git a/ReactKit/Views/RCTScrollViewManager.m b/React/Views/RCTScrollViewManager.m similarity index 55% rename from ReactKit/Views/RCTScrollViewManager.m rename to React/Views/RCTScrollViewManager.m index dc68de214..8001947d1 100644 --- a/ReactKit/Views/RCTScrollViewManager.m +++ b/React/Views/RCTScrollViewManager.m @@ -22,29 +22,29 @@ return [[RCTScrollView alloc] initWithEventDispatcher:self.bridge.eventDispatcher]; } -RCT_EXPORT_VIEW_PROPERTY(alwaysBounceHorizontal) -RCT_EXPORT_VIEW_PROPERTY(alwaysBounceVertical) -RCT_EXPORT_VIEW_PROPERTY(bounces) -RCT_EXPORT_VIEW_PROPERTY(bouncesZoom) -RCT_EXPORT_VIEW_PROPERTY(canCancelContentTouches) -RCT_EXPORT_VIEW_PROPERTY(centerContent) -RCT_EXPORT_VIEW_PROPERTY(automaticallyAdjustContentInsets) -RCT_EXPORT_VIEW_PROPERTY(decelerationRate) -RCT_EXPORT_VIEW_PROPERTY(directionalLockEnabled) -RCT_EXPORT_VIEW_PROPERTY(keyboardDismissMode) -RCT_EXPORT_VIEW_PROPERTY(maximumZoomScale) -RCT_EXPORT_VIEW_PROPERTY(minimumZoomScale) -RCT_EXPORT_VIEW_PROPERTY(pagingEnabled) -RCT_EXPORT_VIEW_PROPERTY(scrollEnabled) -RCT_EXPORT_VIEW_PROPERTY(scrollsToTop) -RCT_EXPORT_VIEW_PROPERTY(showsHorizontalScrollIndicator) -RCT_EXPORT_VIEW_PROPERTY(showsVerticalScrollIndicator) -RCT_EXPORT_VIEW_PROPERTY(stickyHeaderIndices); -RCT_EXPORT_VIEW_PROPERTY(throttleScrollCallbackMS); -RCT_EXPORT_VIEW_PROPERTY(zoomScale); -RCT_EXPORT_VIEW_PROPERTY(contentInset); -RCT_EXPORT_VIEW_PROPERTY(scrollIndicatorInsets); -RCT_REMAP_VIEW_PROPERTY(contentOffset, scrollView.contentOffset); +RCT_EXPORT_VIEW_PROPERTY(alwaysBounceHorizontal, BOOL) +RCT_EXPORT_VIEW_PROPERTY(alwaysBounceVertical, BOOL) +RCT_EXPORT_VIEW_PROPERTY(bounces, BOOL) +RCT_EXPORT_VIEW_PROPERTY(bouncesZoom, BOOL) +RCT_EXPORT_VIEW_PROPERTY(canCancelContentTouches, BOOL) +RCT_EXPORT_VIEW_PROPERTY(centerContent, BOOL) +RCT_EXPORT_VIEW_PROPERTY(automaticallyAdjustContentInsets, BOOL) +RCT_EXPORT_VIEW_PROPERTY(decelerationRate, CGFloat) +RCT_EXPORT_VIEW_PROPERTY(directionalLockEnabled, BOOL) +RCT_EXPORT_VIEW_PROPERTY(keyboardDismissMode, UIScrollViewKeyboardDismissMode) +RCT_EXPORT_VIEW_PROPERTY(maximumZoomScale, CGFloat) +RCT_EXPORT_VIEW_PROPERTY(minimumZoomScale, CGFloat) +RCT_EXPORT_VIEW_PROPERTY(pagingEnabled, BOOL) +RCT_EXPORT_VIEW_PROPERTY(scrollEnabled, BOOL) +RCT_EXPORT_VIEW_PROPERTY(scrollsToTop, BOOL) +RCT_EXPORT_VIEW_PROPERTY(showsHorizontalScrollIndicator, BOOL) +RCT_EXPORT_VIEW_PROPERTY(showsVerticalScrollIndicator, BOOL) +RCT_EXPORT_VIEW_PROPERTY(stickyHeaderIndices, NSNumberArray); +RCT_EXPORT_VIEW_PROPERTY(throttleScrollCallbackMS, double); +RCT_EXPORT_VIEW_PROPERTY(zoomScale, CGFloat); +RCT_EXPORT_VIEW_PROPERTY(contentInset, UIEdgeInsets); +RCT_EXPORT_VIEW_PROPERTY(scrollIndicatorInsets, UIEdgeInsets); +RCT_REMAP_VIEW_PROPERTY(contentOffset, scrollView.contentOffset, CGPoint); - (NSDictionary *)constantsToExport { diff --git a/ReactKit/Views/RCTScrollableProtocol.h b/React/Views/RCTScrollableProtocol.h similarity index 100% rename from ReactKit/Views/RCTScrollableProtocol.h rename to React/Views/RCTScrollableProtocol.h diff --git a/ReactKit/Views/RCTShadowView.h b/React/Views/RCTShadowView.h similarity index 96% rename from ReactKit/Views/RCTShadowView.h rename to React/Views/RCTShadowView.h index be1b2465e..8d68855f7 100644 --- a/ReactKit/Views/RCTShadowView.h +++ b/React/Views/RCTShadowView.h @@ -68,10 +68,10 @@ typedef void (^RCTApplierBlock)(RCTSparseArray *); /** * Border. Defaults to { 0, 0, 0, 0 }. */ -@property (nonatomic, assign) CGFloat borderTop; -@property (nonatomic, assign) CGFloat borderLeft; -@property (nonatomic, assign) CGFloat borderBottom; -@property (nonatomic, assign) CGFloat borderRight; +@property (nonatomic, assign) CGFloat borderTopWidth; +@property (nonatomic, assign) CGFloat borderLeftWidth; +@property (nonatomic, assign) CGFloat borderBottomWidth; +@property (nonatomic, assign) CGFloat borderRightWidth; - (void)setBorderWidth:(CGFloat)value; diff --git a/ReactKit/Views/RCTShadowView.m b/React/Views/RCTShadowView.m similarity index 99% rename from ReactKit/Views/RCTShadowView.m rename to React/Views/RCTShadowView.m index f43f9cd28..e5975dff2 100644 --- a/ReactKit/Views/RCTShadowView.m +++ b/React/Views/RCTShadowView.m @@ -411,12 +411,12 @@ RCT_PADDING_PROPERTY(Right, RIGHT) // Border #define RCT_BORDER_PROPERTY(prop, metaProp) \ -- (void)setBorder##prop:(CGFloat)value \ +- (void)setBorder##prop##Width:(CGFloat)value \ { \ _cssNode->style.border[CSS_##metaProp] = value; \ [self dirtyLayout]; \ } \ -- (CGFloat)border##prop \ +- (CGFloat)border##prop##Width \ { \ return _cssNode->style.border[META_PROP_##metaProp]; \ } diff --git a/ReactKit/Views/RCTSliderManager.h b/React/Views/RCTSliderManager.h similarity index 100% rename from ReactKit/Views/RCTSliderManager.h rename to React/Views/RCTSliderManager.h diff --git a/ReactKit/Views/RCTSliderManager.m b/React/Views/RCTSliderManager.m similarity index 88% rename from ReactKit/Views/RCTSliderManager.m rename to React/Views/RCTSliderManager.m index 133905e9b..0228eab68 100644 --- a/ReactKit/Views/RCTSliderManager.m +++ b/React/Views/RCTSliderManager.m @@ -11,7 +11,7 @@ #import "RCTBridge.h" #import "RCTEventDispatcher.h" -#import "UIView+ReactKit.h" +#import "UIView+React.h" @implementation RCTSliderManager @@ -45,6 +45,8 @@ [self.bridge.eventDispatcher sendInputEventWithName:@"topChange" body:event]; } -RCT_EXPORT_VIEW_PROPERTY(value); +RCT_EXPORT_VIEW_PROPERTY(value, float); +RCT_EXPORT_VIEW_PROPERTY(minimumValue, float); +RCT_EXPORT_VIEW_PROPERTY(maximumValue, float); @end diff --git a/ReactKit/Views/RCTSwitch.h b/React/Views/RCTSwitch.h similarity index 100% rename from ReactKit/Views/RCTSwitch.h rename to React/Views/RCTSwitch.h diff --git a/ReactKit/Views/RCTSwitch.m b/React/Views/RCTSwitch.m similarity index 94% rename from ReactKit/Views/RCTSwitch.m rename to React/Views/RCTSwitch.m index 94ee6b905..6c4e28564 100644 --- a/ReactKit/Views/RCTSwitch.m +++ b/React/Views/RCTSwitch.m @@ -10,7 +10,7 @@ #import "RCTSwitch.h" #import "RCTEventDispatcher.h" -#import "UIView+ReactKit.h" +#import "UIView+React.h" @implementation RCTSwitch diff --git a/ReactKit/Views/RCTSwitchManager.h b/React/Views/RCTSwitchManager.h similarity index 100% rename from ReactKit/Views/RCTSwitchManager.h rename to React/Views/RCTSwitchManager.h diff --git a/ReactKit/Views/RCTSwitchManager.m b/React/Views/RCTSwitchManager.m similarity index 79% rename from ReactKit/Views/RCTSwitchManager.m rename to React/Views/RCTSwitchManager.m index ca5cb2c16..e2118023d 100644 --- a/ReactKit/Views/RCTSwitchManager.m +++ b/React/Views/RCTSwitchManager.m @@ -12,7 +12,7 @@ #import "RCTBridge.h" #import "RCTEventDispatcher.h" #import "RCTSwitch.h" -#import "UIView+ReactKit.h" +#import "UIView+React.h" @implementation RCTSwitchManager @@ -37,10 +37,10 @@ } } -RCT_EXPORT_VIEW_PROPERTY(onTintColor); -RCT_EXPORT_VIEW_PROPERTY(tintColor); -RCT_EXPORT_VIEW_PROPERTY(thumbTintColor); -RCT_EXPORT_VIEW_PROPERTY(on); -RCT_EXPORT_VIEW_PROPERTY(enabled); +RCT_EXPORT_VIEW_PROPERTY(onTintColor, UIColor); +RCT_EXPORT_VIEW_PROPERTY(tintColor, UIColor); +RCT_EXPORT_VIEW_PROPERTY(thumbTintColor, UIColor); +RCT_EXPORT_VIEW_PROPERTY(on, BOOL); +RCT_EXPORT_VIEW_PROPERTY(enabled, BOOL); @end diff --git a/ReactKit/Views/RCTTabBar.h b/React/Views/RCTTabBar.h similarity index 100% rename from ReactKit/Views/RCTTabBar.h rename to React/Views/RCTTabBar.h diff --git a/ReactKit/Views/RCTTabBar.m b/React/Views/RCTTabBar.m similarity index 99% rename from ReactKit/Views/RCTTabBar.m rename to React/Views/RCTTabBar.m index 86e609df9..11ad47e32 100644 --- a/ReactKit/Views/RCTTabBar.m +++ b/React/Views/RCTTabBar.m @@ -16,7 +16,7 @@ #import "RCTView.h" #import "RCTViewControllerProtocol.h" #import "RCTWrapperViewController.h" -#import "UIView+ReactKit.h" +#import "UIView+React.h" @interface RKCustomTabBarController : UITabBarController diff --git a/ReactKit/Views/RCTTabBarItem.h b/React/Views/RCTTabBarItem.h similarity index 100% rename from ReactKit/Views/RCTTabBarItem.h rename to React/Views/RCTTabBarItem.h diff --git a/ReactKit/Views/RCTTabBarItem.m b/React/Views/RCTTabBarItem.m similarity index 98% rename from ReactKit/Views/RCTTabBarItem.m rename to React/Views/RCTTabBarItem.m index 9de3ac929..530fef893 100644 --- a/ReactKit/Views/RCTTabBarItem.m +++ b/React/Views/RCTTabBarItem.m @@ -11,7 +11,7 @@ #import "RCTConvert.h" #import "RCTLog.h" -#import "UIView+ReactKit.h" +#import "UIView+React.h" @implementation RCTTabBarItem diff --git a/ReactKit/Views/RCTTabBarItemManager.h b/React/Views/RCTTabBarItemManager.h similarity index 100% rename from ReactKit/Views/RCTTabBarItemManager.h rename to React/Views/RCTTabBarItemManager.h diff --git a/ReactKit/Views/RCTTabBarItemManager.m b/React/Views/RCTTabBarItemManager.m similarity index 71% rename from ReactKit/Views/RCTTabBarItemManager.m rename to React/Views/RCTTabBarItemManager.m index 4dc0a65eb..7f4ce9642 100644 --- a/ReactKit/Views/RCTTabBarItemManager.m +++ b/React/Views/RCTTabBarItemManager.m @@ -19,11 +19,11 @@ return [[RCTTabBarItem alloc] init]; } -RCT_EXPORT_VIEW_PROPERTY(selected); -RCT_EXPORT_VIEW_PROPERTY(icon); -RCT_REMAP_VIEW_PROPERTY(selectedIcon, barItem.selectedImage); -RCT_REMAP_VIEW_PROPERTY(badgeValue, barItem.badgeValue); -RCT_CUSTOM_VIEW_PROPERTY(title, RCTTabBarItem) +RCT_EXPORT_VIEW_PROPERTY(selected, BOOL); +RCT_EXPORT_VIEW_PROPERTY(icon, NSString); +RCT_REMAP_VIEW_PROPERTY(selectedIcon, barItem.selectedImage, UIImage); +RCT_REMAP_VIEW_PROPERTY(badgeValue, barItem.badgeValue, NSString); +RCT_CUSTOM_VIEW_PROPERTY(title, NSString, RCTTabBarItem) { view.barItem.title = json ? [RCTConvert NSString:json] : defaultView.barItem.title; view.barItem.imageInsets = [view.barItem.title length] ? UIEdgeInsetsZero : (UIEdgeInsets){6, 0, -6, 0}; diff --git a/ReactKit/Views/RCTTabBarManager.h b/React/Views/RCTTabBarManager.h similarity index 100% rename from ReactKit/Views/RCTTabBarManager.h rename to React/Views/RCTTabBarManager.h diff --git a/ReactKit/Views/RCTTabBarManager.m b/React/Views/RCTTabBarManager.m similarity index 100% rename from ReactKit/Views/RCTTabBarManager.m rename to React/Views/RCTTabBarManager.m diff --git a/ReactKit/Views/RCTTextField.h b/React/Views/RCTTextField.h similarity index 100% rename from ReactKit/Views/RCTTextField.h rename to React/Views/RCTTextField.h diff --git a/ReactKit/Views/RCTTextField.m b/React/Views/RCTTextField.m similarity index 99% rename from ReactKit/Views/RCTTextField.m rename to React/Views/RCTTextField.m index 4901be411..1ccf17d7f 100644 --- a/ReactKit/Views/RCTTextField.m +++ b/React/Views/RCTTextField.m @@ -12,7 +12,7 @@ #import "RCTConvert.h" #import "RCTEventDispatcher.h" #import "RCTUtils.h" -#import "UIView+ReactKit.h" +#import "UIView+React.h" @implementation RCTTextField { diff --git a/ReactKit/Views/RCTTextFieldManager.h b/React/Views/RCTTextFieldManager.h similarity index 100% rename from ReactKit/Views/RCTTextFieldManager.h rename to React/Views/RCTTextFieldManager.h diff --git a/ReactKit/Views/RCTTextFieldManager.m b/React/Views/RCTTextFieldManager.m similarity index 64% rename from ReactKit/Views/RCTTextFieldManager.m rename to React/Views/RCTTextFieldManager.m index 8418c8858..087dc5b26 100644 --- a/ReactKit/Views/RCTTextFieldManager.m +++ b/React/Views/RCTTextFieldManager.m @@ -22,32 +22,28 @@ return [[RCTTextField alloc] initWithEventDispatcher:self.bridge.eventDispatcher]; } -RCT_EXPORT_VIEW_PROPERTY(caretHidden) -RCT_EXPORT_VIEW_PROPERTY(autoCorrect) -RCT_EXPORT_VIEW_PROPERTY(enabled) -RCT_EXPORT_VIEW_PROPERTY(placeholder) -RCT_EXPORT_VIEW_PROPERTY(text) -RCT_EXPORT_VIEW_PROPERTY(clearButtonMode) -RCT_EXPORT_VIEW_PROPERTY(keyboardType) -RCT_REMAP_VIEW_PROPERTY(color, textColor) -RCT_CUSTOM_VIEW_PROPERTY(autoCapitalize, RCTTextField) -{ - view.autocapitalizationType = json ? [RCTConvert UITextAutocapitalizationType:json] - : defaultView.autocapitalizationType; -} -RCT_CUSTOM_VIEW_PROPERTY(fontSize, RCTTextField) +RCT_EXPORT_VIEW_PROPERTY(caretHidden, BOOL) +RCT_EXPORT_VIEW_PROPERTY(autoCorrect, BOOL) +RCT_EXPORT_VIEW_PROPERTY(enabled, BOOL) +RCT_EXPORT_VIEW_PROPERTY(placeholder, NSString) +RCT_EXPORT_VIEW_PROPERTY(text, NSString) +RCT_EXPORT_VIEW_PROPERTY(clearButtonMode, UITextFieldViewMode) +RCT_EXPORT_VIEW_PROPERTY(keyboardType, UIKeyboardType) +RCT_REMAP_VIEW_PROPERTY(color, textColor, UIColor) +RCT_REMAP_VIEW_PROPERTY(autoCapitalize, autocapitalizationType, UITextAutocapitalizationType) +RCT_CUSTOM_VIEW_PROPERTY(fontSize, CGFloat, RCTTextField) { view.font = [RCTConvert UIFont:view.font withSize:json ?: @(defaultView.font.pointSize)]; } -RCT_CUSTOM_VIEW_PROPERTY(fontWeight, RCTTextField) +RCT_CUSTOM_VIEW_PROPERTY(fontWeight, NSString, RCTTextField) { view.font = [RCTConvert UIFont:view.font withWeight:json]; // defaults to normal } -RCT_CUSTOM_VIEW_PROPERTY(fontStyle, RCTTextField) +RCT_CUSTOM_VIEW_PROPERTY(fontStyle, NSString, RCTTextField) { view.font = [RCTConvert UIFont:view.font withStyle:json]; // defaults to normal } -RCT_CUSTOM_VIEW_PROPERTY(fontFamily, RCTTextField) +RCT_CUSTOM_VIEW_PROPERTY(fontFamily, NSString, RCTTextField) { view.font = [RCTConvert UIFont:view.font withFamily:json ?: defaultView.font.familyName]; } diff --git a/ReactKit/Views/RCTUIActivityIndicatorViewManager.h b/React/Views/RCTUIActivityIndicatorViewManager.h similarity index 100% rename from ReactKit/Views/RCTUIActivityIndicatorViewManager.h rename to React/Views/RCTUIActivityIndicatorViewManager.h diff --git a/ReactKit/Views/RCTUIActivityIndicatorViewManager.m b/React/Views/RCTUIActivityIndicatorViewManager.m similarity index 62% rename from ReactKit/Views/RCTUIActivityIndicatorViewManager.m rename to React/Views/RCTUIActivityIndicatorViewManager.m index 409012f11..09a5cb6f9 100644 --- a/ReactKit/Views/RCTUIActivityIndicatorViewManager.m +++ b/React/Views/RCTUIActivityIndicatorViewManager.m @@ -11,6 +11,17 @@ #import "RCTConvert.h" +@implementation RCTConvert (UIActivityIndicatorView) + +RCT_ENUM_CONVERTER(UIActivityIndicatorViewStyle, (@{ + @"white-large": @(UIActivityIndicatorViewStyleWhiteLarge), + @"large-white": @(UIActivityIndicatorViewStyleWhiteLarge), + @"white": @(UIActivityIndicatorViewStyleWhite), + @"gray": @(UIActivityIndicatorViewStyleGray), +}), UIActivityIndicatorViewStyleWhiteLarge, integerValue) + +@end + @implementation RCTUIActivityIndicatorViewManager - (UIView *)view @@ -18,9 +29,9 @@ return [[UIActivityIndicatorView alloc] init]; } -RCT_EXPORT_VIEW_PROPERTY(activityIndicatorViewStyle) -RCT_EXPORT_VIEW_PROPERTY(color) -RCT_CUSTOM_VIEW_PROPERTY(animating, UIActivityIndicatorView) +RCT_EXPORT_VIEW_PROPERTY(activityIndicatorViewStyle, UIActivityIndicatorViewStyle) +RCT_EXPORT_VIEW_PROPERTY(color, UIColor) +RCT_CUSTOM_VIEW_PROPERTY(animating, BOOL, UIActivityIndicatorView) { BOOL animating = json ? [json boolValue] : [defaultView isAnimating]; if (animating != [view isAnimating]) { diff --git a/ReactKit/Views/RCTView.h b/React/Views/RCTView.h similarity index 67% rename from ReactKit/Views/RCTView.h rename to React/Views/RCTView.h index 4d99c876f..73fe2c7cb 100644 --- a/ReactKit/Views/RCTView.h +++ b/React/Views/RCTView.h @@ -13,6 +13,13 @@ #import "RCTPointerEvents.h" +typedef NS_ENUM(NSInteger, RCTBorderSide) { + RCTBorderSideTop, + RCTBorderSideRight, + RCTBorderSideBottom, + RCTBorderSideLeft +}; + @protocol RCTAutoInsetsProtocol; @interface RCTView : UIView @@ -48,4 +55,22 @@ */ - (void)updateClippedSubviews; +/** + * Border colors. + */ +@property (nonatomic, assign) CGColorRef borderTopColor; +@property (nonatomic, assign) CGColorRef borderRightColor; +@property (nonatomic, assign) CGColorRef borderBottomColor; +@property (nonatomic, assign) CGColorRef borderLeftColor; +@property (nonatomic, assign) CGColorRef borderColor; + +/** + * Border widths. + */ +@property (nonatomic, assign) CGFloat borderTopWidth; +@property (nonatomic, assign) CGFloat borderRightWidth; +@property (nonatomic, assign) CGFloat borderBottomWidth; +@property (nonatomic, assign) CGFloat borderLeftWidth; +@property (nonatomic, assign) CGFloat borderWidth; + @end diff --git a/ReactKit/Views/RCTView.m b/React/Views/RCTView.m similarity index 66% rename from ReactKit/Views/RCTView.m rename to React/Views/RCTView.m index 5bb13ab86..febf56703 100644 --- a/ReactKit/Views/RCTView.m +++ b/React/Views/RCTView.m @@ -12,7 +12,9 @@ #import "RCTAutoInsetsProtocol.h" #import "RCTConvert.h" #import "RCTLog.h" -#import "UIView+ReactKit.h" +#import "UIView+React.h" + +static const RCTBorderSide RCTBorderSideCount = 4; @implementation UIView (RCTViewUnmounting) @@ -91,6 +93,8 @@ static NSString *RCTRecursiveAccessibilityLabel(UIView *view) @implementation RCTView { NSMutableArray *_reactSubviews; + CAShapeLayer *_borderLayers[RCTBorderSideCount]; + CGFloat _borderWidths[RCTBorderSideCount]; } - (NSString *)accessibilityLabel @@ -106,7 +110,7 @@ static NSString *RCTRecursiveAccessibilityLabel(UIView *view) _pointerEvents = pointerEvents; self.userInteractionEnabled = (pointerEvents != RCTPointerEventsNone); if (pointerEvents == RCTPointerEventsBoxNone) { - self.accessibilityViewIsModal = NO; // TODO: find out what this is for + self.accessibilityViewIsModal = NO; } } @@ -368,9 +372,193 @@ static NSString *RCTRecursiveAccessibilityLabel(UIView *view) // to updateClippedSubviews manually after loading [super layoutSubviews]; + if (_reactSubviews) { [self updateClippedSubviews]; } + + for (RCTBorderSide side = 0; side < RCTBorderSideCount; side++) { + if (_borderLayers[side]) [self updatePathForShapeLayerForSide:side]; + } +} + +- (void)layoutSublayersOfLayer:(CALayer *)layer +{ + [super layoutSublayersOfLayer:layer]; + + const CGRect bounds = layer.bounds; + for (RCTBorderSide side = 0; side < RCTBorderSideCount; side++) { + _borderLayers[side].frame = bounds; + } +} + +- (BOOL)getTrapezoidPoints:(CGPoint[4])outPoints forSide:(RCTBorderSide)side +{ + const CGRect bounds = self.layer.bounds; + const CGFloat minX = CGRectGetMinX(bounds); + const CGFloat maxX = CGRectGetMaxX(bounds); + const CGFloat minY = CGRectGetMinY(bounds); + const CGFloat maxY = CGRectGetMaxY(bounds); + +#define BW(SIDE) [self borderWidthForSide:RCTBorderSide##SIDE] + + switch (side) { + case RCTBorderSideRight: + outPoints[0] = CGPointMake(maxX - BW(Right), maxY - BW(Bottom)); + outPoints[1] = CGPointMake(maxX - BW(Right), minY + BW(Top)); + outPoints[2] = CGPointMake(maxX, minY); + outPoints[3] = CGPointMake(maxX, maxY); + break; + case RCTBorderSideBottom: + outPoints[0] = CGPointMake(minX + BW(Left), maxY - BW(Bottom)); + outPoints[1] = CGPointMake(maxX - BW(Right), maxY - BW(Bottom)); + outPoints[2] = CGPointMake(maxX, maxY); + outPoints[3] = CGPointMake(minX, maxY); + break; + case RCTBorderSideLeft: + outPoints[0] = CGPointMake(minX + BW(Left), minY + BW(Top)); + outPoints[1] = CGPointMake(minX + BW(Left), maxY - BW(Bottom)); + outPoints[2] = CGPointMake(minX, maxY); + outPoints[3] = CGPointMake(minX, minY); + break; + case RCTBorderSideTop: + outPoints[0] = CGPointMake(maxX - BW(Right), minY + BW(Top)); + outPoints[1] = CGPointMake(minX + BW(Left), minY + BW(Top)); + outPoints[2] = CGPointMake(minX, minY); + outPoints[3] = CGPointMake(maxX, minY); + break; + } + + return YES; +} + +- (CAShapeLayer *)createShapeLayerIfNotExistsForSide:(RCTBorderSide)side +{ + CAShapeLayer *borderLayer = _borderLayers[side]; + if (!borderLayer) { + borderLayer = [CAShapeLayer layer]; + borderLayer.fillColor = self.layer.borderColor; + [self.layer addSublayer:borderLayer]; + _borderLayers[side] = borderLayer; + } + return borderLayer; +} + +- (void)updatePathForShapeLayerForSide:(RCTBorderSide)side +{ + CAShapeLayer *borderLayer = [self createShapeLayerIfNotExistsForSide:side]; + + CGPoint trapezoidPoints[4]; + [self getTrapezoidPoints:trapezoidPoints forSide:side]; + + CGMutablePathRef path = CGPathCreateMutable(); + CGPathAddLines(path, NULL, trapezoidPoints, 4); + CGPathCloseSubpath(path); + borderLayer.path = path; + CGPathRelease(path); +} + +- (void)updateBorderLayers +{ + BOOL widthsAndColorsSame = YES; + CGFloat width = _borderWidths[0]; + CGColorRef color = _borderLayers[0].fillColor; + for (RCTBorderSide side = 1; side < RCTBorderSideCount; side++) { + CAShapeLayer *layer = _borderLayers[side]; + if (_borderWidths[side] != width || (layer && !CGColorEqualToColor(layer.fillColor, color))) { + widthsAndColorsSame = NO; + break; + } + } + if (widthsAndColorsSame) { + + // Set main layer border + if (width) { + _borderWidth = self.layer.borderWidth = width; + } + if (color) { + self.layer.borderColor = color; + } + + // Remove border layers + for (RCTBorderSide side = 0; side < RCTBorderSideCount; side++) { + [_borderLayers[side] removeFromSuperlayer]; + _borderLayers[side] = nil; + } + + } else { + + // Clear main layer border + self.layer.borderWidth = 0; + + // Set up border layers + for (RCTBorderSide side = 0; side < RCTBorderSideCount; side++) { + [self updatePathForShapeLayerForSide:side]; + } + } +} + +- (CGFloat)borderWidthForSide:(RCTBorderSide)side +{ + return _borderWidths[side] ?: _borderWidth; +} + +- (void)setBorderWidth:(CGFloat)width forSide:(RCTBorderSide)side +{ + _borderWidths[side] = width; + [self updateBorderLayers]; +} + +#define BORDER_WIDTH(SIDE) \ +- (CGFloat)border##SIDE##Width { return [self borderWidthForSide:RCTBorderSide##SIDE]; } \ +- (void)setBorder##SIDE##Width:(CGFloat)width { [self setBorderWidth:width forSide:RCTBorderSide##SIDE]; } + +BORDER_WIDTH(Top) +BORDER_WIDTH(Right) +BORDER_WIDTH(Bottom) +BORDER_WIDTH(Left) + +- (CGColorRef)borderColorForSide:(RCTBorderSide)side +{ + return _borderLayers[side].fillColor ?: self.layer.borderColor; +} + +- (void)setBorderColor:(CGColorRef)color forSide:(RCTBorderSide)side +{ + [self createShapeLayerIfNotExistsForSide:side].fillColor = color; + [self updateBorderLayers]; +} + +#define BORDER_COLOR(SIDE) \ +- (CGColorRef)border##SIDE##Color { return [self borderColorForSide:RCTBorderSide##SIDE]; } \ +- (void)setBorder##SIDE##Color:(CGColorRef)color { [self setBorderColor:color forSide:RCTBorderSide##SIDE]; } + +BORDER_COLOR(Top) +BORDER_COLOR(Right) +BORDER_COLOR(Bottom) +BORDER_COLOR(Left) + +- (void)setBorderWidth:(CGFloat)borderWidth +{ + _borderWidth = borderWidth; + for (RCTBorderSide side = 0; side < RCTBorderSideCount; side++) { + _borderWidths[side] = borderWidth; + } + [self updateBorderLayers]; +} + +- (void)setBorderColor:(CGColorRef)borderColor +{ + self.layer.borderColor = borderColor; + for (RCTBorderSide side = 0; side < RCTBorderSideCount; side++) { + _borderLayers[side].fillColor = borderColor; + } + [self updateBorderLayers]; +} + +- (CGColorRef)borderColor +{ + return self.layer.borderColor; } @end diff --git a/ReactKit/Views/RCTViewControllerProtocol.h b/React/Views/RCTViewControllerProtocol.h similarity index 100% rename from ReactKit/Views/RCTViewControllerProtocol.h rename to React/Views/RCTViewControllerProtocol.h diff --git a/ReactKit/Views/RCTViewManager.h b/React/Views/RCTViewManager.h similarity index 83% rename from ReactKit/Views/RCTViewManager.h rename to React/Views/RCTViewManager.h index 719a970ab..6f2188d3d 100644 --- a/ReactKit/Views/RCTViewManager.h +++ b/React/Views/RCTViewManager.h @@ -106,20 +106,28 @@ typedef void (^RCTViewManagerUIBlock)(RCTUIManager *uiManager, RCTSparseArray *v - (RCTViewManagerUIBlock)uiBlockToAmendWithShadowViewRegistry:(RCTSparseArray *)shadowViewRegistry; /** - * This handles the simple case, where JS and native property names match - * And the type can be automatically inferred. + * This handles the simple case, where JS and native property names match. */ -#define RCT_EXPORT_VIEW_PROPERTY(name) \ -RCT_REMAP_VIEW_PROPERTY(name, name) +#define RCT_EXPORT_VIEW_PROPERTY(name, type) RCT_REMAP_VIEW_PROPERTY(name, name, type) + +#define RCT_EXPORT_SHADOW_PROPERTY(name, type) RCT_REMAP_SHADOW_PROPERTY(name, name, type) /** * This macro maps a named property on the module to an arbitrary key path - * within the view. + * within the view or shadowView. */ -#define RCT_REMAP_VIEW_PROPERTY(name, keypath) \ +#define RCT_REMAP_VIEW_PROPERTY(name, keyPath, type) \ - (void)set_##name:(id)json forView:(id)view withDefaultView:(id)defaultView { \ - if ((json && !RCTSetProperty(view, @#keypath, json)) || \ - (!json && !RCTCopyProperty(view, defaultView, @#keypath))) { \ + if ((json && !RCTSetProperty(view, @#keyPath, @selector(type:), json)) || \ + (!json && !RCTCopyProperty(view, defaultView, @#keyPath))) { \ + RCTLogError(@"%@ does not have setter for `%s` property", [view class], #name); \ + } \ +} + +#define RCT_REMAP_SHADOW_PROPERTY(name, keyPath, type) \ +- (void)set_##name:(id)json forShadowView:(id)view withDefaultView:(id)defaultView { \ + if ((json && !RCTSetProperty(view, @#keyPath, @selector(type:), json)) || \ + (!json && !RCTCopyProperty(view, defaultView, @#keyPath))) { \ RCTLogError(@"%@ does not have setter for `%s` property", [view class], #name); \ } \ } @@ -129,10 +137,10 @@ RCT_REMAP_VIEW_PROPERTY(name, name) * view properties. The macro should be followed by a method body, which can * refer to "json", "view" and "defaultView" to implement the required logic. */ -#define RCT_CUSTOM_VIEW_PROPERTY(name, viewClass) \ +#define RCT_CUSTOM_VIEW_PROPERTY(name, type, viewClass) \ - (void)set_##name:(id)json forView:(viewClass *)view withDefaultView:(viewClass *)defaultView -#define RCT_CUSTOM_SHADOW_PROPERTY(name, viewClass) \ +#define RCT_CUSTOM_SHADOW_PROPERTY(name, type, viewClass) \ - (void)set_##name:(id)json forShadowView:(viewClass *)view withDefaultView:(viewClass *)defaultView /** diff --git a/React/Views/RCTViewManager.m b/React/Views/RCTViewManager.m new file mode 100644 index 000000000..fa9975ac8 --- /dev/null +++ b/React/Views/RCTViewManager.m @@ -0,0 +1,205 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "RCTViewManager.h" + +#import "RCTBridge.h" +#import "RCTConvert.h" +#import "RCTEventDispatcher.h" +#import "RCTLog.h" +#import "RCTShadowView.h" +#import "RCTUtils.h" +#import "RCTView.h" + +@implementation RCTViewManager + +@synthesize bridge = _bridge; + ++ (NSString *)moduleName +{ + // Default implementation, works in most cases + NSString *name = NSStringFromClass(self); + if ([name hasPrefix:@"RK"]) { + name = [name stringByReplacingCharactersInRange:(NSRange){0,@"RK".length} withString:@"RCT"]; + } + if ([name hasPrefix:@"RCTUI"]) { + name = [name substringFromIndex:@"RCT".length]; + } + return name; +} + +- (UIView *)view +{ + return [[RCTView alloc] init]; +} + +- (RCTShadowView *)shadowView +{ + return [[RCTShadowView alloc] init]; +} + +- (NSDictionary *)customBubblingEventTypes +{ + return nil; +} + +- (NSDictionary *)customDirectEventTypes +{ + return nil; +} + +- (NSDictionary *)constantsToExport +{ + return nil; +} + +- (RCTViewManagerUIBlock)uiBlockToAmendWithShadowView:(RCTShadowView *)shadowView +{ + return nil; +} + +- (RCTViewManagerUIBlock)uiBlockToAmendWithShadowViewRegistry:(RCTSparseArray *)shadowViewRegistry +{ + return nil; +} + +#pragma mark - View properties + +RCT_EXPORT_VIEW_PROPERTY(accessibilityLabel, NSString) +RCT_EXPORT_VIEW_PROPERTY(hidden, BOOL) +RCT_EXPORT_VIEW_PROPERTY(backgroundColor, UIColor) +RCT_REMAP_VIEW_PROPERTY(accessible, isAccessibilityElement, BOOL) +RCT_REMAP_VIEW_PROPERTY(testID, accessibilityIdentifier, NSString) +RCT_REMAP_VIEW_PROPERTY(opacity, alpha, CGFloat) +RCT_REMAP_VIEW_PROPERTY(shadowColor, layer.shadowColor, CGColor); +RCT_REMAP_VIEW_PROPERTY(shadowOffset, layer.shadowOffset, CGSize); +RCT_REMAP_VIEW_PROPERTY(shadowOpacity, layer.shadowOpacity, CGFloat) +RCT_REMAP_VIEW_PROPERTY(shadowRadius, layer.shadowRadius, CGFloat) +RCT_REMAP_VIEW_PROPERTY(transformMatrix, layer.transform, CATransform3D) +RCT_CUSTOM_VIEW_PROPERTY(overflow, css_overflow, RCTView) +{ + view.clipsToBounds = json ? ![RCTConvert css_overflow:json] : defaultView.clipsToBounds; +} +RCT_CUSTOM_VIEW_PROPERTY(pointerEvents, RCTPointerEvents, RCTView) +{ + if ([view respondsToSelector:@selector(setPointerEvents:)]) { + view.pointerEvents = json ? [RCTConvert RCTPointerEvents:json] : defaultView.pointerEvents; + return; + } + + if (!json) { + view.userInteractionEnabled = defaultView.userInteractionEnabled; + return; + } + + switch ([RCTConvert RCTPointerEvents:json]) { + case RCTPointerEventsUnspecified: + // Pointer events "unspecified" acts as if a stylesheet had not specified, + // which is different than "auto" in CSS (which cannot and will not be + // supported in `React`. "auto" may override a parent's "none". + // Unspecified values do not. + // This wouldn't override a container view's `userInteractionEnabled = NO` + view.userInteractionEnabled = YES; + case RCTPointerEventsNone: + view.userInteractionEnabled = NO; + break; + default: + RCTLogError(@"UIView base class does not support pointerEvent value: %@", json); + } +} +RCT_CUSTOM_VIEW_PROPERTY(removeClippedSubviews, BOOL, RCTView) +{ + if ([view respondsToSelector:@selector(setRemoveClippedSubviews:)]) { + view.removeClippedSubviews = json ? [RCTConvert BOOL:json] : defaultView.removeClippedSubviews; + } +} +RCT_REMAP_VIEW_PROPERTY(borderRadius, layer.cornerRadius, CGFloat) +RCT_CUSTOM_VIEW_PROPERTY(borderColor, CGColor, RCTView) +{ + if ([view respondsToSelector:@selector(setBorderColor:)]) { + view.borderColor = json ? [RCTConvert CGColor:json] : defaultView.borderColor; + } else { + view.layer.borderColor = json ? [RCTConvert CGColor:json] : defaultView.layer.borderColor; + } +} +RCT_CUSTOM_VIEW_PROPERTY(borderWidth, CGFloat, RCTView) +{ + if ([view respondsToSelector:@selector(setBorderWidth:)]) { + view.borderWidth = json ? [RCTConvert CGFloat:json] : defaultView.borderWidth; + } else { + view.layer.borderWidth = json ? [RCTConvert CGFloat:json] : defaultView.layer.borderWidth; + } +} + +#define RCT_VIEW_BORDER_PROPERTY(SIDE) \ +RCT_CUSTOM_VIEW_PROPERTY(border##SIDE##Width, CGFloat, RCTView) \ +{ \ + if ([view respondsToSelector:@selector(setBorder##SIDE##Width:)]) { \ + view.border##SIDE##Width = json ? [RCTConvert CGFloat:json] : defaultView.border##SIDE##Width; \ + } \ +} \ +RCT_CUSTOM_VIEW_PROPERTY(border##SIDE##Color, UIColor, RCTView) \ +{ \ + if ([view respondsToSelector:@selector(setBorder##SIDE##Color:)]) { \ + view.border##SIDE##Color = json ? [RCTConvert CGColor:json] : defaultView.border##SIDE##Color; \ + } \ +} + +RCT_VIEW_BORDER_PROPERTY(Top) +RCT_VIEW_BORDER_PROPERTY(Right) +RCT_VIEW_BORDER_PROPERTY(Bottom) +RCT_VIEW_BORDER_PROPERTY(Left) + +#pragma mark - ShadowView properties + +RCT_EXPORT_SHADOW_PROPERTY(top, CGFloat); +RCT_EXPORT_SHADOW_PROPERTY(right, CGFloat); +RCT_EXPORT_SHADOW_PROPERTY(bottom, CGFloat); +RCT_EXPORT_SHADOW_PROPERTY(left, CGFloat); + +RCT_EXPORT_SHADOW_PROPERTY(width, CGFloat); +RCT_EXPORT_SHADOW_PROPERTY(height, CGFloat); + +RCT_EXPORT_SHADOW_PROPERTY(borderTopWidth, CGFloat); +RCT_EXPORT_SHADOW_PROPERTY(borderRightWidth, CGFloat); +RCT_EXPORT_SHADOW_PROPERTY(borderBottomWidth, CGFloat); +RCT_EXPORT_SHADOW_PROPERTY(borderLeftWidth, CGFloat); +RCT_EXPORT_SHADOW_PROPERTY(borderWidth, CGFloat); + +RCT_EXPORT_SHADOW_PROPERTY(marginTop, CGFloat); +RCT_EXPORT_SHADOW_PROPERTY(marginRight, CGFloat); +RCT_EXPORT_SHADOW_PROPERTY(marginBottom, CGFloat); +RCT_EXPORT_SHADOW_PROPERTY(marginLeft, CGFloat); +RCT_EXPORT_SHADOW_PROPERTY(marginVertical, CGFloat); +RCT_EXPORT_SHADOW_PROPERTY(marginHorizontal, CGFloat); +RCT_EXPORT_SHADOW_PROPERTY(margin, CGFloat); + +RCT_EXPORT_SHADOW_PROPERTY(paddingTop, CGFloat); +RCT_EXPORT_SHADOW_PROPERTY(paddingRight, CGFloat); +RCT_EXPORT_SHADOW_PROPERTY(paddingBottom, CGFloat); +RCT_EXPORT_SHADOW_PROPERTY(paddingLeft, CGFloat); +RCT_EXPORT_SHADOW_PROPERTY(paddingVertical, CGFloat); +RCT_EXPORT_SHADOW_PROPERTY(paddingHorizontal, CGFloat); +RCT_EXPORT_SHADOW_PROPERTY(padding, CGFloat); + +RCT_EXPORT_SHADOW_PROPERTY(flex, CGFloat) +RCT_EXPORT_SHADOW_PROPERTY(flexDirection, css_flex_direction_t) +RCT_EXPORT_SHADOW_PROPERTY(flexWrap, css_wrap_type_t) +RCT_EXPORT_SHADOW_PROPERTY(justifyContent, css_justify_t) +RCT_EXPORT_SHADOW_PROPERTY(alignItems, css_align_t) +RCT_EXPORT_SHADOW_PROPERTY(alignSelf, css_align_t) +RCT_REMAP_SHADOW_PROPERTY(position, positionType, css_position_type_t) + +RCT_CUSTOM_SHADOW_PROPERTY(backgroundColor, UIColor, RCTShadowView) +{ + view.backgroundColor = json ? [RCTConvert UIColor:json] : defaultView.backgroundColor; + view.isBGColorExplicitlySet = json ? YES : defaultView.isBGColorExplicitlySet; +} + +@end diff --git a/ReactKit/Views/RCTViewNodeProtocol.h b/React/Views/RCTViewNodeProtocol.h similarity index 94% rename from ReactKit/Views/RCTViewNodeProtocol.h rename to React/Views/RCTViewNodeProtocol.h index 998c53bce..691aaaba1 100644 --- a/ReactKit/Views/RCTViewNodeProtocol.h +++ b/React/Views/RCTViewNodeProtocol.h @@ -9,7 +9,7 @@ /** * Logical node in a tree of application components. Both `ShadowView`s and - * `UIView+ReactKit`s conform to this. Allows us to write utilities that + * `UIView+React`s conform to this. Allows us to write utilities that * reason about trees generally. */ @protocol RCTViewNodeProtocol diff --git a/ReactKit/Views/RCTWebView.h b/React/Views/RCTWebView.h similarity index 100% rename from ReactKit/Views/RCTWebView.h rename to React/Views/RCTWebView.h diff --git a/ReactKit/Views/RCTWebView.m b/React/Views/RCTWebView.m similarity index 99% rename from ReactKit/Views/RCTWebView.m rename to React/Views/RCTWebView.m index feb9669d8..86dae0172 100644 --- a/ReactKit/Views/RCTWebView.m +++ b/React/Views/RCTWebView.m @@ -16,7 +16,7 @@ #import "RCTLog.h" #import "RCTUtils.h" #import "RCTView.h" -#import "UIView+ReactKit.h" +#import "UIView+React.h" @interface RCTWebView () diff --git a/ReactKit/Views/RCTWebViewManager.h b/React/Views/RCTWebViewManager.h similarity index 100% rename from ReactKit/Views/RCTWebViewManager.h rename to React/Views/RCTWebViewManager.h diff --git a/ReactKit/Views/RCTWebViewManager.m b/React/Views/RCTWebViewManager.m similarity index 90% rename from ReactKit/Views/RCTWebViewManager.m rename to React/Views/RCTWebViewManager.m index b11426342..4b02f6c0a 100644 --- a/ReactKit/Views/RCTWebViewManager.m +++ b/React/Views/RCTWebViewManager.m @@ -21,10 +21,10 @@ return [[RCTWebView alloc] initWithEventDispatcher:self.bridge.eventDispatcher]; } -RCT_REMAP_VIEW_PROPERTY(url, URL); -RCT_EXPORT_VIEW_PROPERTY(contentInset); -RCT_EXPORT_VIEW_PROPERTY(automaticallyAdjustContentInsets); -RCT_EXPORT_VIEW_PROPERTY(shouldInjectAJAXHandler); +RCT_REMAP_VIEW_PROPERTY(url, URL, NSURL); +RCT_EXPORT_VIEW_PROPERTY(contentInset, UIEdgeInsets); +RCT_EXPORT_VIEW_PROPERTY(automaticallyAdjustContentInsets, UIEdgeInsets); +RCT_EXPORT_VIEW_PROPERTY(shouldInjectAJAXHandler, BOOL); - (NSDictionary *)constantsToExport { diff --git a/ReactKit/Views/RCTWrapperViewController.h b/React/Views/RCTWrapperViewController.h similarity index 100% rename from ReactKit/Views/RCTWrapperViewController.h rename to React/Views/RCTWrapperViewController.h diff --git a/ReactKit/Views/RCTWrapperViewController.m b/React/Views/RCTWrapperViewController.m similarity index 99% rename from ReactKit/Views/RCTWrapperViewController.m rename to React/Views/RCTWrapperViewController.m index e9b9d5c77..2008c1f83 100644 --- a/ReactKit/Views/RCTWrapperViewController.m +++ b/React/Views/RCTWrapperViewController.m @@ -15,7 +15,7 @@ #import "RCTNavItem.h" #import "RCTUtils.h" #import "RCTViewControllerProtocol.h" -#import "UIView+ReactKit.h" +#import "UIView+React.h" @implementation RCTWrapperViewController { diff --git a/ReactKit/Views/UIView+ReactKit.h b/React/Views/UIView+React.h similarity index 85% rename from ReactKit/Views/UIView+ReactKit.h rename to React/Views/UIView+React.h index b2ba2ca9a..28bca9db9 100644 --- a/ReactKit/Views/UIView+ReactKit.h +++ b/React/Views/UIView+React.h @@ -13,7 +13,7 @@ //TODO: let's try to eliminate this category if possible -@interface UIView (ReactKit) +@interface UIView (React) /** * Used by the UIIManager to set the view frame. @@ -42,12 +42,3 @@ - (BOOL)reactRespondsToTouch:(UITouch *)touch; @end - -@interface UIView (ReactKitBorders) - -/** - * Borders stuff - pay no attention to this, it's going away (#6548297) - */ -- (void)reactSetBorders; - -@end diff --git a/React/Views/UIView+React.m b/React/Views/UIView+React.m new file mode 100644 index 000000000..6e4a8c45c --- /dev/null +++ b/React/Views/UIView+React.m @@ -0,0 +1,121 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "UIView+React.h" + +#import + +#import "RCTAssert.h" +#import "RCTLog.h" +#import "RCTWrapperViewController.h" + +@implementation UIView (React) + +- (NSNumber *)reactTag +{ + return objc_getAssociatedObject(self, _cmd); +} + +- (void)setReactTag:(NSNumber *)reactTag +{ + objc_setAssociatedObject(self, @selector(reactTag), reactTag, OBJC_ASSOCIATION_COPY_NONATOMIC); +} + +- (BOOL)isReactRootView +{ + return RCTIsReactRootView(self.reactTag); +} + +- (NSNumber *)reactTagAtPoint:(CGPoint)point +{ + UIView *view = [self hitTest:point withEvent:nil]; + while (view && !view.reactTag) { + view = view.superview; + } + return view.reactTag; +} + +- (void)insertReactSubview:(UIView *)subview atIndex:(NSInteger)atIndex +{ + [self insertSubview:subview atIndex:atIndex]; +} + +- (void)removeReactSubview:(UIView *)subview +{ + RCTAssert(subview.superview == self, @"%@ is a not a subview of %@", subview, self); + [subview removeFromSuperview]; +} + +- (NSArray *)reactSubviews +{ + return self.subviews; +} + +- (UIView *)reactSuperview +{ + return self.superview; +} + +- (void)reactSetFrame:(CGRect)frame +{ + // These frames are in terms of anchorPoint = topLeft, but internally the + // views are anchorPoint = center for easier scale and rotation animations. + // Convert the frame so it works with anchorPoint = center. + CGPoint position = {CGRectGetMidX(frame), CGRectGetMidY(frame)}; + CGRect bounds = {CGPointZero, frame.size}; + + // Avoid crashes due to nan coords + if (isnan(position.x) || isnan(position.y) || + isnan(bounds.origin.x) || isnan(bounds.origin.y) || + isnan(bounds.size.width) || isnan(bounds.size.height)) { + RCTLogError(@"Invalid layout for (%@)%@. position: %@. bounds: %@", + self.reactTag, self, NSStringFromCGPoint(position), NSStringFromCGRect(bounds)); + return; + } + + self.layer.position = position; + self.layer.bounds = bounds; +} + +- (UIViewController *)backingViewController +{ + id responder = [self nextResponder]; + if ([responder isKindOfClass:[RCTWrapperViewController class]]) { + return responder; + } + return nil; +} + +- (void)addControllerToClosestParent:(UIViewController *)controller +{ + if (!controller.parentViewController) { + UIView *parentView = (UIView *)self.reactSuperview; + while (parentView) { + if (parentView.backingViewController) { + [parentView.backingViewController addChildViewController:controller]; + [controller didMoveToParentViewController:parentView.backingViewController]; + break; + } + parentView = (UIView *)parentView.reactSuperview; + } + return; + } +} + +/** + * Responder overrides - to be deprecated. + */ +- (void)reactWillMakeFirstResponder {}; +- (void)reactDidMakeFirstResponder {}; +- (BOOL)reactRespondsToTouch:(UITouch *)touch +{ + return YES; +} + +@end diff --git a/ReactKit/ReactKit.podspec b/ReactKit/ReactKit.podspec deleted file mode 100644 index 3e1a8a6e2..000000000 --- a/ReactKit/ReactKit.podspec +++ /dev/null @@ -1,16 +0,0 @@ -Pod::Spec.new do |spec| - spec.name = 'ReactKit' - spec.version = '0.0.1' - spec.summary = 'An implementation of React that targets UIKit for iOS' - spec.description = <<-DESC - Our first React Native implementation is ReactKit, targeting iOS. We are also working on an Android implementation which we will release later. ReactKit apps are built using the React JS framework, and render directly to native UIKit elements using a fully asynchronous architecture. There is no browser and no HTML. We have picked what we think is the best set of features from these and other technologies to build what we hope to become the best product development framework available, with an emphasis on iteration speed, developer delight, continuity of technology, and absolutely beautiful and fast products with no compromises in quality or capability. - DESC - spec.homepage = 'https://facebook.github.io/react-native/' - spec.license = { :type => 'BSD' } - spec.author = 'Facebook' - spec.platform = :ios, '7.0' - spec.requires_arc = true - spec.source_files = '**/*.{h,m,c}' - spec.public_header_files = "**/*.h" - #spec.library = "ReactKit" -end diff --git a/ReactKit/Views/RCTViewManager.m b/ReactKit/Views/RCTViewManager.m deleted file mode 100644 index 2f3ed2d47..000000000 --- a/ReactKit/Views/RCTViewManager.m +++ /dev/null @@ -1,169 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -#import "RCTViewManager.h" - -#import "RCTBridge.h" -#import "RCTConvert.h" -#import "RCTEventDispatcher.h" -#import "RCTLog.h" -#import "RCTShadowView.h" -#import "RCTUtils.h" -#import "RCTView.h" - -@implementation RCTViewManager - -@synthesize bridge = _bridge; - -+ (NSString *)moduleName -{ - // Default implementation, works in most cases - NSString *name = NSStringFromClass(self); - if ([name hasPrefix:@"RK"]) { - name = [name stringByReplacingCharactersInRange:(NSRange){0,@"RK".length} withString:@"RCT"]; - } - if ([name hasPrefix:@"RCTUI"]) { - name = [name substringFromIndex:@"RCT".length]; - } - return name; -} - -- (UIView *)view -{ - return [[RCTView alloc] init]; -} - -- (RCTShadowView *)shadowView -{ - return [[RCTShadowView alloc] init]; -} - -- (NSDictionary *)customBubblingEventTypes -{ - return nil; -} - -- (NSDictionary *)customDirectEventTypes -{ - return nil; -} - -- (NSDictionary *)constantsToExport -{ - return nil; -} - -- (RCTViewManagerUIBlock)uiBlockToAmendWithShadowView:(RCTShadowView *)shadowView -{ - return nil; -} - -- (RCTViewManagerUIBlock)uiBlockToAmendWithShadowViewRegistry:(RCTSparseArray *)shadowViewRegistry -{ - return nil; -} - -#pragma mark - View properties - -RCT_EXPORT_VIEW_PROPERTY(accessibilityLabel) -RCT_EXPORT_VIEW_PROPERTY(hidden) -RCT_EXPORT_VIEW_PROPERTY(backgroundColor) -RCT_REMAP_VIEW_PROPERTY(accessible, isAccessibilityElement) -RCT_REMAP_VIEW_PROPERTY(testID, accessibilityIdentifier) -RCT_REMAP_VIEW_PROPERTY(opacity, alpha) -RCT_REMAP_VIEW_PROPERTY(shadowColor, layer.shadowColor); -RCT_REMAP_VIEW_PROPERTY(shadowOffset, layer.shadowOffset); -RCT_REMAP_VIEW_PROPERTY(shadowOpacity, layer.shadowOpacity) -RCT_REMAP_VIEW_PROPERTY(shadowRadius, layer.shadowRadius) -RCT_REMAP_VIEW_PROPERTY(borderColor, layer.borderColor); -RCT_REMAP_VIEW_PROPERTY(borderRadius, layer.cornerRadius) -RCT_REMAP_VIEW_PROPERTY(borderWidth, layer.borderWidth) -RCT_REMAP_VIEW_PROPERTY(transformMatrix, layer.transform) -RCT_CUSTOM_VIEW_PROPERTY(overflow, UIView) -{ - view.clipsToBounds = json ? ![RCTConvert css_overflow:json] : defaultView.clipsToBounds; -} -RCT_CUSTOM_VIEW_PROPERTY(pointerEvents, RCTView) -{ - if ([view respondsToSelector:@selector(setPointerEvents:)]) { - view.pointerEvents = json ? [RCTConvert RCTPointerEvents:json] : defaultView.pointerEvents; - return; - } - - if (!json) { - view.userInteractionEnabled = defaultView.userInteractionEnabled; - return; - } - - switch ([RCTConvert RCTPointerEvents:json]) { - case RCTPointerEventsUnspecified: - // Pointer events "unspecified" acts as if a stylesheet had not specified, - // which is different than "auto" in CSS (which cannot and will not be - // supported in `ReactKit`. "auto" may override a parent's "none". - // Unspecified values do not. - // This wouldn't override a container view's `userInteractionEnabled = NO` - view.userInteractionEnabled = YES; - case RCTPointerEventsNone: - view.userInteractionEnabled = NO; - break; - default: - RCTLogError(@"UIView base class does not support pointerEvent value: %@", json); - } -} -RCT_CUSTOM_VIEW_PROPERTY(removeClippedSubviews, RCTView) -{ - if ([view respondsToSelector:@selector(setRemoveClippedSubviews:)]) { - view.removeClippedSubviews = json ? [RCTConvert BOOL:json] : defaultView.removeClippedSubviews; - } -} - -#pragma mark - ShadowView properties - -RCT_CUSTOM_SHADOW_PROPERTY(backgroundColor, RCTShadowView) -{ - view.backgroundColor = json ? [RCTConvert UIColor:json] : defaultView.backgroundColor; - view.isBGColorExplicitlySet = json ? YES : defaultView.isBGColorExplicitlySet; -} -RCT_CUSTOM_SHADOW_PROPERTY(flexDirection, RCTShadowView) -{ - view.flexDirection = json? [RCTConvert css_flex_direction_t:json] : defaultView.flexDirection; -} -RCT_CUSTOM_SHADOW_PROPERTY(flexWrap, RCTShadowView) -{ - view.flexWrap = json ? [RCTConvert css_wrap_type_t:json] : defaultView.flexWrap; -} -RCT_CUSTOM_SHADOW_PROPERTY(justifyContent, RCTShadowView) -{ - view.justifyContent = json ? [RCTConvert css_justify_t:json] : defaultView.justifyContent; -} -RCT_CUSTOM_SHADOW_PROPERTY(alignItems, RCTShadowView) -{ - view.alignItems = json ? [RCTConvert css_align_t:json] : defaultView.alignItems; -} -RCT_CUSTOM_SHADOW_PROPERTY(alignSelf, RCTShadowView) -{ - view.alignSelf = json ? [RCTConvert css_align_t:json] : defaultView.alignSelf; -} -RCT_CUSTOM_SHADOW_PROPERTY(position, RCTShadowView) -{ - view.positionType = json ? [RCTConvert css_position_type_t:json] : defaultView.positionType; -} - -// Border properties - to be deprecated - -RCT_REMAP_VIEW_PROPERTY(borderTopWidth, reactBorderTop.width); -RCT_REMAP_VIEW_PROPERTY(borderRightWidth, reactBorderRight.width); -RCT_REMAP_VIEW_PROPERTY(borderBottomWidth, reactBorderBottom.width); -RCT_REMAP_VIEW_PROPERTY(borderLeftWidth, reactBorderLeft.width); -RCT_REMAP_VIEW_PROPERTY(borderTopColor, reactBorderTop.color); -RCT_REMAP_VIEW_PROPERTY(borderRightColor, reactBorderRight.color); -RCT_REMAP_VIEW_PROPERTY(borderBottomColor, reactBorderBottom.color); -RCT_REMAP_VIEW_PROPERTY(borderLeftColor, reactBorderLeft.color); - -@end diff --git a/ReactKit/Views/UIView+ReactKit.m b/ReactKit/Views/UIView+ReactKit.m deleted file mode 100644 index 2ef2ce31b..000000000 --- a/ReactKit/Views/UIView+ReactKit.m +++ /dev/null @@ -1,274 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -#import "UIView+ReactKit.h" - -#import - -#import "RCTAssert.h" -#import "RCTLog.h" -#import "RCTWrapperViewController.h" - -@implementation UIView (ReactKit) - -- (NSNumber *)reactTag -{ - return objc_getAssociatedObject(self, _cmd); -} - -- (void)setReactTag:(NSNumber *)reactTag -{ - objc_setAssociatedObject(self, @selector(reactTag), reactTag, OBJC_ASSOCIATION_COPY_NONATOMIC); -} - -- (BOOL)isReactRootView -{ - return RCTIsReactRootView(self.reactTag); -} - -- (NSNumber *)reactTagAtPoint:(CGPoint)point -{ - UIView *view = [self hitTest:point withEvent:nil]; - while (view && !view.reactTag) { - view = view.superview; - } - return view.reactTag; -} - -- (void)insertReactSubview:(UIView *)subview atIndex:(NSInteger)atIndex -{ - [self insertSubview:subview atIndex:atIndex]; -} - -- (void)removeReactSubview:(UIView *)subview -{ - RCTAssert(subview.superview == self, @"%@ is a not a subview of %@", subview, self); - [subview removeFromSuperview]; -} - -- (NSArray *)reactSubviews -{ - return self.subviews; -} - -- (UIView *)reactSuperview -{ - return self.superview; -} - -- (void)reactSetFrame:(CGRect)frame -{ - // These frames are in terms of anchorPoint = topLeft, but internally the - // views are anchorPoint = center for easier scale and rotation animations. - // Convert the frame so it works with anchorPoint = center. - CGPoint position = {CGRectGetMidX(frame), CGRectGetMidY(frame)}; - CGRect bounds = {CGPointZero, frame.size}; - - // Avoid crashes due to nan coords - if (isnan(position.x) || isnan(position.y) || - isnan(bounds.origin.x) || isnan(bounds.origin.y) || - isnan(bounds.size.width) || isnan(bounds.size.height)) { - RCTLogError(@"Invalid layout for (%@)%@. position: %@. bounds: %@", - self.reactTag, self, NSStringFromCGPoint(position), NSStringFromCGRect(bounds)); - return; - } - - self.layer.position = position; - self.layer.bounds = bounds; -} - -- (UIViewController *)backingViewController -{ - id responder = [self nextResponder]; - if ([responder isKindOfClass:[RCTWrapperViewController class]]) { - return responder; - } - return nil; -} - -- (void)addControllerToClosestParent:(UIViewController *)controller -{ - if (!controller.parentViewController) { - UIView *parentView = (UIView *)self.reactSuperview; - while (parentView) { - if (parentView.backingViewController) { - [parentView.backingViewController addChildViewController:controller]; - [controller didMoveToParentViewController:parentView.backingViewController]; - break; - } - parentView = (UIView *)parentView.reactSuperview; - } - return; - } -} - -/** - * Responder overrides - to be deprecated. - */ -- (void)reactWillMakeFirstResponder {}; -- (void)reactDidMakeFirstResponder {}; -- (BOOL)reactRespondsToTouch:(UITouch *)touch -{ - return YES; -} - -@end - -#pragma mark - Borders - -// Note: the value of this enum determines their relative zPosition -typedef NS_ENUM(NSUInteger, RCTBorderSide) { - RCTBorderSideTop = 0, - RCTBorderSideRight = 1, - RCTBorderSideBottom = 2, - RCTBorderSideLeft = 3 -}; - -@interface RCTSingleSidedBorder : NSObject - -@property (nonatomic, readwrite, assign) CGFloat width; -@property (nonatomic, readwrite, strong) UIColor *color; -@property (nonatomic, readonly, assign) RCTBorderSide side; - -- (instancetype)initWithSide:(RCTBorderSide)side superlayer:(CALayer *)superlayer; - -- (void)superLayerBoundsDidChange; - -@end - -@implementation RCTSingleSidedBorder -{ - CALayer *_borderLayer; -} - -- (instancetype)initWithSide:(RCTBorderSide)side superlayer:(CALayer *)superlayer -{ - if (self = [super init]) { - _side = side; - - _borderLayer = [CALayer layer]; - _borderLayer.delegate = self; - _borderLayer.zPosition = INT_MAX - _side; - - [superlayer insertSublayer:_borderLayer atIndex:0]; - } - return self; -} - -- (void)dealloc -{ - _borderLayer.delegate = nil; -} - -- (void)setWidth:(CGFloat)width -{ - _width = width; - [_borderLayer setNeedsLayout]; -} - -- (void)setColor:(UIColor *)color -{ - _color = color; - _borderLayer.backgroundColor = _color.CGColor; - [_borderLayer setNeedsLayout]; -} - -- (void)superLayerBoundsDidChange -{ - [_borderLayer setNeedsLayout]; -} - -#pragma mark - CALayerDelegate - -- (void)layoutSublayersOfLayer:(CALayer *)layer -{ - CGSize superlayerSize = layer.superlayer.frame.size; - - CGFloat xPosition = 0.0f; - CGFloat yPosition = 0.0f; - - // Note: we ensure side layers are below top & bottom for snapshot test consistency - - switch (self.side) { - case RCTBorderSideTop: - layer.frame = CGRectMake(xPosition, yPosition, superlayerSize.width, self.width); - break; - case RCTBorderSideRight: - xPosition = superlayerSize.width - self.width; - layer.frame = CGRectMake(xPosition, yPosition, self.width, superlayerSize.height); - [layer.superlayer insertSublayer:layer atIndex:0]; - break; - case RCTBorderSideBottom: - yPosition = superlayerSize.height - self.width; - layer.frame = CGRectMake(xPosition, yPosition, superlayerSize.width, self.width); - break; - case RCTBorderSideLeft: - layer.frame = CGRectMake(xPosition, yPosition, self.width, superlayerSize.height); - [layer.superlayer insertSublayer:layer atIndex:0]; - break; - } -} - -// Disable animations for layer -- (id)actionForLayer:(CALayer *)layer forKey:(NSString *)event -{ - return (id)[NSNull null]; -} - -@end - -@implementation UIView (ReactKitBorders) - -- (void)reactSetBorders -{ - NSMutableDictionary *borders = objc_getAssociatedObject(self, @selector(_createOrGetBorderWithSide:)); - if (borders) { - for (RCTSingleSidedBorder *border in [borders allValues]) { - [border superLayerBoundsDidChange]; - } - } -} - -- (RCTSingleSidedBorder *)reactBorderTop -{ - return [self _createOrGetBorderWithSide:RCTBorderSideTop]; -} - -- (RCTSingleSidedBorder *)reactBorderRight -{ - return [self _createOrGetBorderWithSide:RCTBorderSideRight]; -} - -- (RCTSingleSidedBorder *)reactBorderBottom -{ - return [self _createOrGetBorderWithSide:RCTBorderSideBottom]; -} - -- (RCTSingleSidedBorder *)reactBorderLeft -{ - return [self _createOrGetBorderWithSide:RCTBorderSideLeft]; -} - -- (RCTSingleSidedBorder *)_createOrGetBorderWithSide:(RCTBorderSide)side -{ - NSMutableDictionary *borders = objc_getAssociatedObject(self, _cmd); - if (!borders) { - borders = [[NSMutableDictionary alloc] init]; - objc_setAssociatedObject(self, _cmd, borders, OBJC_ASSOCIATION_RETAIN_NONATOMIC); - } - - RCTSingleSidedBorder *border = [borders objectForKey:@(side)]; - if (!border) { - border = [[RCTSingleSidedBorder alloc] initWithSide:side superlayer:self.layer]; - [borders setObject:border forKey:@(side)]; - } - return border; -} - -@end diff --git a/package.json b/package.json index 3cc2ae49c..c9a561ba4 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ }, "main": "Libraries/react-native/react-native.js", "files": [ - "ReactKit", + "React", "Examples/SampleApp", "Libraries", "packager", diff --git a/packager/packager.js b/packager/packager.js index 12ef9ddde..119336edc 100644 --- a/packager/packager.js +++ b/packager/packager.js @@ -36,6 +36,9 @@ var options = parseCommandLine([{ }, { command: 'root', description: 'add another root(s) to be used by the packager in this project', +}, { + command: 'assetRoots', + description: 'specify the root directories of app assets' }]); if (options.projectRoots) { @@ -61,7 +64,11 @@ if (options.root) { } } -if (!options.assetRoots) { +if (options.assetRoots) { + if (!Array.isArray(options.assetRoots)) { + options.assetRoots = options.assetRoots.split(','); + } +} else { options.assetRoots = [path.resolve(__dirname, '..')]; }