From d6f160510a50d4c4eaa48c9c69a5ddda0d50052c Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Mon, 5 Apr 2010 16:54:22 -0700 Subject: [PATCH 1/4] XQuartz: Blacklist some oddball legacy Mac keycodes that break wine http://xquartz.macosforge.org/trac/ticket/295 Signed-off-by: Jeremy Huddleston Reviewed-by: Kevin Van Vechten --- hw/xquartz/quartzKeyboard.c | 61 +++++++++++++++++++++++++------------ 1 file changed, 41 insertions(+), 20 deletions(-) diff --git a/hw/xquartz/quartzKeyboard.c b/hw/xquartz/quartzKeyboard.c index a4a0b08bd..db4df891e 100644 --- a/hw/xquartz/quartzKeyboard.c +++ b/hw/xquartz/quartzKeyboard.c @@ -39,6 +39,7 @@ #define HACK_MISSING 1 #define HACK_KEYPAD 1 +#define HACK_BLACKLIST 1 #include #include @@ -83,6 +84,7 @@ enum { #define UKEYSYM(u) ((u) | 0x01000000) +#if HACK_MISSING /* Table of keycode->keysym mappings we use to fallback on for important keys that are often not in the Unicode mapping. */ @@ -117,7 +119,9 @@ const static struct { {107, XK_F14}, {113, XK_F15}, }; +#endif +#if HACK_KEYPAD /* Table of keycode->old,new-keysym mappings we use to fixup the numeric keypad entries. */ @@ -143,6 +147,17 @@ const static struct { {91, XK_8, XK_KP_8}, {92, XK_9, XK_KP_9}, }; +#endif + +#if HACK_BLACKLIST +/* wine notepad produces wrong characters on shift+arrow + * http://xquartz.macosforge.org/trac/ticket/295 + * http://developer.apple.com/legacy/mac/library/documentation/mac/Text/Text-579.html + * + * legacy Mac keycodes for arrow keys that shift-modify to math symbols + */ +const static unsigned short keycode_blacklist[] = {66, 70, 72, 77}; +#endif /* Table mapping normal keysyms to their dead equivalents. FIXME: all the unicode keysyms (apart from circumflex) were guessed. */ @@ -772,32 +787,38 @@ Bool QuartzReadSystemKeymap(darwinKeyboardInfo *info) { if (k[3] == k[2]) k[3] = NoSymbol; if (k[1] == k[0]) k[1] = NoSymbol; if (k[0] == k[2] && k[1] == k[3]) k[2] = k[3] = NoSymbol; + if (k[3] == k[0] && k[2] == k[1] && k[2] == NoSymbol) k[3] = NoSymbol; } +#if HACK_MISSING /* Fix up some things that are normally missing.. */ - - if (HACK_MISSING) { - for (i = 0; i < sizeof (known_keys) / sizeof (known_keys[0]); i++) { - k = info->keyMap + known_keys[i].keycode * GLYPHS_PER_KEY; - - if (k[0] == NoSymbol && k[1] == NoSymbol - && k[2] == NoSymbol && k[3] == NoSymbol) - k[0] = known_keys[i].keysym; - } + + for (i = 0; i < sizeof (known_keys) / sizeof (known_keys[0]); i++) { + k = info->keyMap + known_keys[i].keycode * GLYPHS_PER_KEY; + + if ( k[0] == NoSymbol && k[1] == NoSymbol + && k[2] == NoSymbol && k[3] == NoSymbol) + k[0] = known_keys[i].keysym; } - +#endif + +#if HACK_KEYPAD /* And some more things. We find the right symbols for the numeric - keypad, but not the KP_ keysyms. So try to convert known keycodes. */ - - if (HACK_KEYPAD) { - for (i = 0; i < sizeof (known_numeric_keys) - / sizeof (known_numeric_keys[0]); i++) { - k = info->keyMap + known_numeric_keys[i].keycode * GLYPHS_PER_KEY; - - if (k[0] == known_numeric_keys[i].normal) - k[0] = known_numeric_keys[i].keypad; - } + keypad, but not the KP_ keysyms. So try to convert known keycodes. */ + for (i = 0; i < sizeof (known_numeric_keys) / sizeof (known_numeric_keys[0]); i++) { + k = info->keyMap + known_numeric_keys[i].keycode * GLYPHS_PER_KEY; + + if (k[0] == known_numeric_keys[i].normal) + k[0] = known_numeric_keys[i].keypad; } +#endif + +#if HACK_BLACKLIST + for (i = 0; i < sizeof (keycode_blacklist) / sizeof (keycode_blacklist[0]); i++) { + k = info->keyMap + keycode_blacklist[i] * GLYPHS_PER_KEY; + k[0] = k[1] = k[2] = k[3] = NoSymbol; + } +#endif DarwinBuildModifierMaps(info); From 840d12c7a6ac6a974da185045215ce944a61fab6 Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Fri, 9 Apr 2010 13:29:34 -0700 Subject: [PATCH 2/4] XQuartz: Add a defaults option to toggle Alt / Mode_switch See option_sends_alt in Xquartz(1) Signed-off-by: Jeremy Huddleston Reviewed-by: Kevin Van Vechten --- hw/xquartz/X11Application.h | 1 + hw/xquartz/X11Application.m | 19 +++---- hw/xquartz/X11Controller.h | 1 + hw/xquartz/X11Controller.m | 96 +++++++++++++++++++++------------- hw/xquartz/doc/Xquartz.man.pre | 3 ++ hw/xquartz/quartz.c | 1 + hw/xquartz/quartzCommon.h | 1 + hw/xquartz/quartzKeyboard.c | 30 +++++++++-- hw/xquartz/quartzKeyboard.h | 10 +--- 9 files changed, 101 insertions(+), 61 deletions(-) diff --git a/hw/xquartz/X11Application.h b/hw/xquartz/X11Application.h index d7e9a5fa5..ce19e034a 100644 --- a/hw/xquartz/X11Application.h +++ b/hw/xquartz/X11Application.h @@ -90,6 +90,7 @@ extern int quartzHasRoot, quartzEnableRootless, quartzFullscreenMenu; #define PREFS_NO_TCP "nolisten_tcp" #define PREFS_DONE_XINIT_CHECK "done_xinit_check" #define PREFS_NO_QUIT_ALERT "no_quit_alert" +#define PREFS_OPTION_SENDS_ALT "option_sends_alt" #define PREFS_FAKE_BUTTON2 "fake_button2" #define PREFS_FAKE_BUTTON3 "fake_button3" #define PREFS_APPKIT_MODIFIERS "appkit_modifiers" diff --git a/hw/xquartz/X11Application.m b/hw/xquartz/X11Application.m index 54066404e..c9a0d669f 100644 --- a/hw/xquartz/X11Application.m +++ b/hw/xquartz/X11Application.m @@ -712,10 +712,13 @@ static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) { default:quartzEnableRootless]; quartzFullscreenMenu = [self prefs_get_boolean:@PREFS_FULLSCREEN_MENU default:quartzFullscreenMenu]; - quartzFullscreenDisableHotkeys = ![self prefs_get_boolean: - @PREFS_FULLSCREEN_HOTKEYS default:!quartzFullscreenDisableHotkeys]; + quartzFullscreenDisableHotkeys = ![self prefs_get_boolean:@PREFS_FULLSCREEN_HOTKEYS + default:!quartzFullscreenDisableHotkeys]; darwinFakeButtons = [self prefs_get_boolean:@PREFS_FAKEBUTTONS default:darwinFakeButtons]; + quartzOptionSendsAlt = [self prefs_get_boolean:@PREFS_OPTION_SENDS_ALT + default:quartzOptionSendsAlt]; + if (darwinFakeButtons) { const char *fake2, *fake3; @@ -969,8 +972,7 @@ void X11ApplicationMain (int argc, char **argv, char **envp) { fprintf(stderr, "X11ApplicationMain: Unable to determine KLGetCurrentKeyboardLayout() at startup.\n"); #endif - memset(keyInfo.keyMap, 0, sizeof(keyInfo.keyMap)); - if (!QuartzReadSystemKeymap(&keyInfo)) { + if (!QuartsResyncKeymap(FALSE)) { fprintf(stderr, "X11ApplicationMain: Could not build a valid keymap.\n"); } @@ -1229,17 +1231,10 @@ static inline int ensure_flag(int flags, int device_independent, int device_depe if(key_layout != last_key_layout) { last_key_layout = key_layout; #endif - /* Update keyInfo */ - pthread_mutex_lock(&keyInfo_mutex); - memset(keyInfo.keyMap, 0, sizeof(keyInfo.keyMap)); - if (!QuartzReadSystemKeymap(&keyInfo)) { + if (!QuartsResyncKeymap(TRUE)) { fprintf(stderr, "sendX11NSEvent: Could not build a valid keymap.\n"); } - pthread_mutex_unlock(&keyInfo_mutex); - - /* Tell server thread to deal with new keyInfo */ - DarwinSendDDXEvent(kXquartzReloadKeymap, 0); } } diff --git a/hw/xquartz/X11Controller.h b/hw/xquartz/X11Controller.h index 9e16f75ce..a2024dfac 100644 --- a/hw/xquartz/X11Controller.h +++ b/hw/xquartz/X11Controller.h @@ -69,6 +69,7 @@ typedef unsigned int NSUInteger; IBOutlet NSButton *use_sysbeep; IBOutlet NSButton *enable_keyequivs; IBOutlet NSButton *sync_keymap; + IBOutlet NSButton *option_sends_alt; IBOutlet NSButton *click_through; IBOutlet NSButton *focus_follows_mouse; IBOutlet NSButton *focus_on_new_window; diff --git a/hw/xquartz/X11Controller.m b/hw/xquartz/X11Controller.m index b28f4d303..d66d039b0 100644 --- a/hw/xquartz/X11Controller.m +++ b/hw/xquartz/X11Controller.m @@ -43,6 +43,7 @@ #include "darwin.h" #include "darwinEvents.h" #include "quartz.h" +#include "quartzKeyboard.h" #include #include "applewmExt.h" @@ -630,49 +631,69 @@ objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row - (IBAction)prefs_changed:sender { - BOOL pbproxy_active; + if(!sender) + return; + + if(sender == fake_buttons) { + darwinFakeButtons = [fake_buttons intValue]; + [NSApp prefs_set_boolean:@PREFS_FAKEBUTTONS value:darwinFakeButtons]; + } else if(sender == use_sysbeep) { + quartzUseSysBeep = [use_sysbeep intValue]; + [NSApp prefs_set_boolean:@PREFS_SYSBEEP value:quartzUseSysBeep]; + } else if(sender == enable_keyequivs) { + X11EnableKeyEquivalents = [enable_keyequivs intValue]; + [NSApp prefs_set_boolean:@PREFS_KEYEQUIVS value:X11EnableKeyEquivalents]; + } else if(sender == sync_keymap) { + darwinSyncKeymap = [sync_keymap intValue]; + [NSApp prefs_set_boolean:@PREFS_SYNC_KEYMAP value:darwinSyncKeymap]; + } else if(sender == enable_fullscreen_menu) { + quartzFullscreenMenu = [enable_fullscreen_menu intValue]; + [NSApp prefs_set_boolean:@PREFS_FULLSCREEN_MENU value:quartzFullscreenMenu]; + } else if(sender == option_sends_alt) { + BOOL prev_opt_sends_alt = quartzOptionSendsAlt; + + quartzOptionSendsAlt = [option_sends_alt intValue]; + [NSApp prefs_set_boolean:@PREFS_OPTION_SENDS_ALT value:quartzOptionSendsAlt]; - darwinFakeButtons = [fake_buttons intValue]; - quartzUseSysBeep = [use_sysbeep intValue]; - X11EnableKeyEquivalents = [enable_keyequivs intValue]; - darwinSyncKeymap = [sync_keymap intValue]; - quartzFullscreenMenu = [enable_fullscreen_menu intValue]; + if(prev_opt_sends_alt != quartzOptionSendsAlt) + QuartsResyncKeymap(TRUE); + } else if(sender == click_through) { + [NSApp prefs_set_boolean:@PREFS_CLICK_THROUGH value:[click_through intValue]]; + } else if(sender == focus_follows_mouse) { + [NSApp prefs_set_boolean:@PREFS_FFM value:[focus_follows_mouse intValue]]; + } else if(sender == focus_on_new_window) { + [NSApp prefs_set_boolean:@PREFS_FOCUS_ON_NEW_WINDOW value:[focus_on_new_window intValue]]; + } else if(sender == enable_auth) { + [NSApp prefs_set_boolean:@PREFS_NO_AUTH value:![enable_auth intValue]]; + } else if(sender == enable_tcp) { + [NSApp prefs_set_boolean:@PREFS_NO_TCP value:![enable_tcp intValue]]; + } else if(sender == depth) { + [NSApp prefs_set_integer:@PREFS_DEPTH value:[depth selectedTag]]; + } else if(sender == sync_pasteboard) { + BOOL pbproxy_active = [sync_pasteboard intValue]; + [NSApp prefs_set_boolean:@PREFS_SYNC_PB value:pbproxy_active]; - /* after adding prefs here, also add to [X11Application read_defaults] - and prefs_show */ + [sync_pasteboard_to_clipboard setEnabled:pbproxy_active]; + [sync_pasteboard_to_primary setEnabled:pbproxy_active]; + [sync_clipboard_to_pasteboard setEnabled:pbproxy_active]; + [sync_primary_immediately setEnabled:pbproxy_active]; - [NSApp prefs_set_boolean:@PREFS_FAKEBUTTONS value:darwinFakeButtons]; - [NSApp prefs_set_boolean:@PREFS_SYSBEEP value:quartzUseSysBeep]; - [NSApp prefs_set_boolean:@PREFS_KEYEQUIVS value:X11EnableKeyEquivalents]; - [NSApp prefs_set_boolean:@PREFS_SYNC_KEYMAP value:darwinSyncKeymap]; - [NSApp prefs_set_boolean:@PREFS_FULLSCREEN_MENU value:quartzFullscreenMenu]; - [NSApp prefs_set_boolean:@PREFS_CLICK_THROUGH value:[click_through intValue]]; - [NSApp prefs_set_boolean:@PREFS_FFM value:[focus_follows_mouse intValue]]; - [NSApp prefs_set_boolean:@PREFS_FOCUS_ON_NEW_WINDOW value:[focus_on_new_window intValue]]; - [NSApp prefs_set_boolean:@PREFS_NO_AUTH value:![enable_auth intValue]]; - [NSApp prefs_set_boolean:@PREFS_NO_TCP value:![enable_tcp intValue]]; - [NSApp prefs_set_integer:@PREFS_DEPTH value:[depth selectedTag]]; - - pbproxy_active = [sync_pasteboard intValue]; - - [NSApp prefs_set_boolean:@PREFS_SYNC_PB value:pbproxy_active]; - [NSApp prefs_set_boolean:@PREFS_SYNC_PB_TO_CLIPBOARD value:[sync_pasteboard_to_clipboard intValue]]; - [NSApp prefs_set_boolean:@PREFS_SYNC_PB_TO_PRIMARY value:[sync_pasteboard_to_primary intValue]]; - [NSApp prefs_set_boolean:@PREFS_SYNC_CLIPBOARD_TO_PB value:[sync_clipboard_to_pasteboard intValue]]; - [NSApp prefs_set_boolean:@PREFS_SYNC_PRIMARY_ON_SELECT value:[sync_primary_immediately intValue]]; + // setEnabled doesn't do this... + [sync_text1 setTextColor:pbproxy_active ? [NSColor controlTextColor] : [NSColor disabledControlTextColor]]; + [sync_text2 setTextColor:pbproxy_active ? [NSColor controlTextColor] : [NSColor disabledControlTextColor]]; + } else if(sender == sync_pasteboard_to_clipboard) { + [NSApp prefs_set_boolean:@PREFS_SYNC_PB_TO_CLIPBOARD value:[sync_pasteboard_to_clipboard intValue]]; + } else if(sender == sync_pasteboard_to_primary) { + [NSApp prefs_set_boolean:@PREFS_SYNC_PB_TO_PRIMARY value:[sync_pasteboard_to_primary intValue]]; + } else if(sender == sync_clipboard_to_pasteboard) { + [NSApp prefs_set_boolean:@PREFS_SYNC_CLIPBOARD_TO_PB value:[sync_clipboard_to_pasteboard intValue]]; + } else if(sender == sync_primary_immediately) { + [NSApp prefs_set_boolean:@PREFS_SYNC_PRIMARY_ON_SELECT value:[sync_primary_immediately intValue]]; + } [NSApp prefs_synchronize]; - - [sync_pasteboard_to_clipboard setEnabled:pbproxy_active]; - [sync_pasteboard_to_primary setEnabled:pbproxy_active]; - [sync_clipboard_to_pasteboard setEnabled:pbproxy_active]; - [sync_primary_immediately setEnabled:pbproxy_active]; - // setEnabled doesn't do this... - [sync_text1 setTextColor:pbproxy_active ? [NSColor controlTextColor] : [NSColor disabledControlTextColor]]; - [sync_text2 setTextColor:pbproxy_active ? [NSColor controlTextColor] : [NSColor disabledControlTextColor]]; - - DarwinSendDDXEvent(kXquartzReloadPreferences, 0); + DarwinSendDDXEvent(kXquartzReloadPreferences, 0); } - (IBAction) prefs_show:sender @@ -683,6 +704,7 @@ objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row [use_sysbeep setIntValue:quartzUseSysBeep]; [enable_keyequivs setIntValue:X11EnableKeyEquivalents]; [sync_keymap setIntValue:darwinSyncKeymap]; + [option_sends_alt setIntValue:quartzOptionSendsAlt]; [click_through setIntValue:[NSApp prefs_get_boolean:@PREFS_CLICK_THROUGH default:NO]]; [focus_follows_mouse setIntValue:[NSApp prefs_get_boolean:@PREFS_FFM default:NO]]; [focus_on_new_window setIntValue:[NSApp prefs_get_boolean:@PREFS_FOCUS_ON_NEW_WINDOW default:YES]]; diff --git a/hw/xquartz/doc/Xquartz.man.pre b/hw/xquartz/doc/Xquartz.man.pre index 04bbee30c..e54be9601 100644 --- a/hw/xquartz/doc/Xquartz.man.pre +++ b/hw/xquartz/doc/Xquartz.man.pre @@ -63,6 +63,9 @@ defaults to the depth of the main display. .B defaults write org.x.X11 sync_keymap -boolean true Keep the X11 keymap up to date with the OSX system keymap. .TP 8 +.B defaults write org.x.X11 option_sends_alt -boolean true +The Option key will send Alt_L and Alt_R instead of Mode_switch. +.TP 8 .B defaults write org.x.X11 sync_pasteboard -boolean true Enable syncing between the OSX pasteboard and clipboard/primary selection buffers in X11. This option needs to be true for any of the other pasteboard sync options to have an effect. .TP 8 diff --git a/hw/xquartz/quartz.c b/hw/xquartz/quartz.c index a611854e7..a8c0d4b47 100644 --- a/hw/xquartz/quartz.c +++ b/hw/xquartz/quartz.c @@ -79,6 +79,7 @@ int aquaMenuBarHeight = 0; QuartzModeProcsPtr quartzProcs = NULL; const char *quartzOpenGLBundle = NULL; int quartzFullscreenDisableHotkeys = TRUE; +int quartzOptionSendsAlt = FALSE; #if defined(RANDR) && !defined(FAKE_RANDR) Bool QuartzRandRGetInfo (ScreenPtr pScreen, Rotation *rotations) { diff --git a/hw/xquartz/quartzCommon.h b/hw/xquartz/quartzCommon.h index 1c0eeba9c..8ab70f22a 100644 --- a/hw/xquartz/quartzCommon.h +++ b/hw/xquartz/quartzCommon.h @@ -60,6 +60,7 @@ extern int focusOnNewWindow; extern int quartzUseAGL; extern int quartzEnableKeyEquivalents; extern int quartzFullscreenDisableHotkeys; +extern int quartzOptionSendsAlt; // Other shared data extern int quartzServerVisible; diff --git a/hw/xquartz/quartzKeyboard.c b/hw/xquartz/quartzKeyboard.c index db4df891e..745333f03 100644 --- a/hw/xquartz/quartzKeyboard.c +++ b/hw/xquartz/quartzKeyboard.c @@ -50,6 +50,7 @@ #include "quartzCommon.h" #include "darwin.h" +#include "darwinEvents.h" #include "quartzKeyboard.h" #include "quartzAudio.h" @@ -191,6 +192,12 @@ const static struct { {UKEYSYM (0x31b), XK_dead_horn}, /* COMBINING HORN */ }; +typedef struct darwinKeyboardInfo_struct { + CARD8 modMap[MAP_LENGTH]; + KeySym keyMap[MAP_LENGTH * GLYPHS_PER_KEY]; + unsigned char modifierKeycodes[32][2]; +} darwinKeyboardInfo; + darwinKeyboardInfo keyInfo; pthread_mutex_t keyInfo_mutex = PTHREAD_MUTEX_INITIALIZER; @@ -255,7 +262,8 @@ static void DarwinBuildModifierMaps(darwinKeyboardInfo *info) { case XK_Alt_L: info->modifierKeycodes[NX_MODIFIERKEY_ALTERNATE][0] = i; info->modMap[MIN_KEYCODE + i] = Mod1Mask; - *k = XK_Mode_switch; // Yes, this is ugly. This needs to be cleaned up when we integrate quartzKeyboard with this code and refactor. + if(!quartzOptionSendsAlt) + *k = XK_Mode_switch; // Yes, this is ugly. This needs to be cleaned up when we integrate quartzKeyboard with this code and refactor. break; case XK_Alt_R: @@ -264,7 +272,8 @@ static void DarwinBuildModifierMaps(darwinKeyboardInfo *info) { #else info->modifierKeycodes[NX_MODIFIERKEY_ALTERNATE][0] = i; #endif - *k = XK_Mode_switch; // Yes, this is ugly. This needs to be cleaned up when we integrate quartzKeyboard with this code and refactor. + if(!quartzOptionSendsAlt) + *k = XK_Mode_switch; // Yes, this is ugly. This needs to be cleaned up when we integrate quartzKeyboard with this code and refactor. info->modMap[MIN_KEYCODE + i] = Mod1Mask; break; @@ -647,7 +656,7 @@ static KeySym make_dead_key(KeySym in) { return in; } -Bool QuartzReadSystemKeymap(darwinKeyboardInfo *info) { +static Bool QuartzReadSystemKeymap(darwinKeyboardInfo *info) { #if !defined(__LP64__) || MAC_OS_X_VERSION_MIN_REQUIRED < 1050 KeyboardLayoutRef key_layout; int is_uchr = 1; @@ -824,3 +833,18 @@ Bool QuartzReadSystemKeymap(darwinKeyboardInfo *info) { return TRUE; } + +Bool QuartsResyncKeymap(Bool sendDDXEvent) { + Bool retval; + /* Update keyInfo */ + pthread_mutex_lock(&keyInfo_mutex); + memset(keyInfo.keyMap, 0, sizeof(keyInfo.keyMap)); + retval = QuartzReadSystemKeymap(&keyInfo); + pthread_mutex_unlock(&keyInfo_mutex); + + /* Tell server thread to deal with new keyInfo */ + if(sendDDXEvent) + DarwinSendDDXEvent(kXquartzReloadKeymap, 0); + + return retval; +} diff --git a/hw/xquartz/quartzKeyboard.h b/hw/xquartz/quartzKeyboard.h index 1aaec6ef2..1151a0035 100644 --- a/hw/xquartz/quartzKeyboard.h +++ b/hw/xquartz/quartzKeyboard.h @@ -41,18 +41,10 @@ #define MIN_KEYCODE XkbMinLegalKeyCode // unfortunately, this isn't 0... #define MAX_KEYCODE NUM_KEYCODES + MIN_KEYCODE - 1 -typedef struct darwinKeyboardInfo_struct { - CARD8 modMap[MAP_LENGTH]; - KeySym keyMap[MAP_LENGTH * GLYPHS_PER_KEY]; - unsigned char modifierKeycodes[32][2]; -} darwinKeyboardInfo; - /* These functions need to be implemented by Xquartz, XDarwin, etc. */ -Bool QuartzReadSystemKeymap(darwinKeyboardInfo *info); +Bool QuartsResyncKeymap(Bool sendDDXEvent); /* Provided for darwinEvents.c */ -extern darwinKeyboardInfo keyInfo; -extern pthread_mutex_t keyInfo_mutex; void DarwinKeyboardReloadHandler(void); int DarwinModifierNXKeycodeToNXKey(unsigned char keycode, int *outSide); int DarwinModifierNXKeyToNXKeycode(int key, int side); From 5600f7f001529b3afdee95546aec212a70d6a5b2 Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Fri, 9 Apr 2010 13:33:06 -0700 Subject: [PATCH 3/4] XQuartz: Customize the NSDefaults id in the man file. Signed-off-by: Jeremy Huddleston Reviewed-by: Kevin Van Vechten --- hw/xquartz/doc/Makefile.am | 2 ++ hw/xquartz/doc/Xquartz.man.pre | 38 +++++++++++++++++----------------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/hw/xquartz/doc/Makefile.am b/hw/xquartz/doc/Makefile.am index 7310de353..6c68c845e 100644 --- a/hw/xquartz/doc/Makefile.am +++ b/hw/xquartz/doc/Makefile.am @@ -7,6 +7,8 @@ CLEANFILES = $(appman_PROCESSED) $(appman_DATA) include $(top_srcdir)/cpprules.in +MANDEFS += -D__laucnd_id_prefix__=$(LAUNCHD_ID_PREFIX) + .man.$(APP_MAN_SUFFIX): $(AM_V_at)cp $< $@ diff --git a/hw/xquartz/doc/Xquartz.man.pre b/hw/xquartz/doc/Xquartz.man.pre index e54be9601..447194740 100644 --- a/hw/xquartz/doc/Xquartz.man.pre +++ b/hw/xquartz/doc/Xquartz.man.pre @@ -16,72 +16,72 @@ OS X handles the desktop background. .SH CUSTOMIZATION \fIXquartz\fP can be customized using the defaults(1) command. The available options are: .TP 8 -.B defaults write org.x.X11 enable_fake_buttons -boolean true +.B defaults write __laucnd_id_prefix__.X11 enable_fake_buttons -boolean true Emulates a 3 button mouse using modifier keys. By default, the Command modifier is used to emulate button 2 and Option is used for button 3. Thus, clicking the first mouse button while holding down Command will act like clicking button 2. Holding down Option will simulate button 3. .TP 8 -.B defaults write org.x.X11 fake_button2 \fImodifiers\fP +.B defaults write __laucnd_id_prefix__.X11 fake_button2 \fImodifiers\fP Change the modifier keys used to emulate the second mouse button. By default, Command is used to emulate the second button. Any combination of the following modifier names may be used: {l,r,}shift, {l,r,}option, {l,r,}control, {l,r,}command, fn .TP 8 -.B defaults write org.x.X11 fake_button3 \fImodifiers\fP +.B defaults write __laucnd_id_prefix__.X11 fake_button3 \fImodifiers\fP Change the modifier keys used to emulate the second mouse button. By default, Command is used to emulate the second button. Any combination of the following modifier names may be used: {l,r,}shift, {l,r,}option, {l,r,}control, {l,r,}command, fn .TP 8 -.B defaults write org.x.X11 fullscreen_hotkeys -boolean true +.B defaults write __laucnd_id_prefix__.X11 fullscreen_hotkeys -boolean true Enable OSX hotkeys while in fullscreen .TP 8 -.B defaults write org.x.X11 fullscreen_menu -boolean true +.B defaults write __laucnd_id_prefix__.X11 fullscreen_menu -boolean true Show the OSX menu while in fullscreen .TP 8 -.B defaults write org.x.X11 no_quit_alert -boolean true +.B defaults write __laucnd_id_prefix__.X11 no_quit_alert -boolean true Disables the alert dialog displayed when attempting to quit X11. .TP 8 -.B defaults write org.x.X11 no_auth -boolean true +.B defaults write __laucnd_id_prefix__.X11 no_auth -boolean true Stops the X server requiring that clients authenticate themselves when connecting. See Xsecurity(__miscmansuffix__). .TP 8 -.B defaults write org.x.X11 nolisten_tcp -boolean false +.B defaults write __laucnd_id_prefix__.X11 nolisten_tcp -boolean false This will tell the server to listen and accept TCP connections. Doing this without enabling xauth is a possible security concern. See Xsecurity(__miscmansuffix__). .TP 8 -.B defaults write org.x.X11 enable_system_beep -boolean false +.B defaults write __laucnd_id_prefix__.X11 enable_system_beep -boolean false Don't use the standard system beep effect for X11 alerts. .TP 8 -.B defaults write org.x.X11 enable_key_equivalents -boolean false +.B defaults write __laucnd_id_prefix__.X11 enable_key_equivalents -boolean false Disable menu keyboard equivalents while X11 windows are focused. .TP 8 -.B defaults write org.x.X11 depth \fIdepth\fP +.B defaults write __laucnd_id_prefix__.X11 depth \fIdepth\fP Specifies the color bit depth to use. Currently only 15, and 24 color bits per pixel are supported. If not specified, or a value of -1 is specified, defaults to the depth of the main display. .TP 8 -.B defaults write org.x.X11 sync_keymap -boolean true +.B defaults write __laucnd_id_prefix__.X11 sync_keymap -boolean true Keep the X11 keymap up to date with the OSX system keymap. .TP 8 -.B defaults write org.x.X11 option_sends_alt -boolean true +.B defaults write __laucnd_id_prefix__.X11 option_sends_alt -boolean true The Option key will send Alt_L and Alt_R instead of Mode_switch. .TP 8 -.B defaults write org.x.X11 sync_pasteboard -boolean true +.B defaults write __laucnd_id_prefix__.X11 sync_pasteboard -boolean true Enable syncing between the OSX pasteboard and clipboard/primary selection buffers in X11. This option needs to be true for any of the other pasteboard sync options to have an effect. .TP 8 -.B defaults write org.x.X11 sync_pasteboard_to_clipboard -boolean true +.B defaults write __laucnd_id_prefix__.X11 sync_pasteboard_to_clipboard -boolean true Update the X11 CLIPBOARD when the OSX NSPasteboard is updated. .TP 8 -.B defaults write org.x.X11 sync_pasteboard_to_primary -boolean true +.B defaults write __laucnd_id_prefix__.X11 sync_pasteboard_to_primary -boolean true Update the the X11 PRIMARY buffer when the OSX NSPasteboard is updated. .TP 8 -.B defaults write org.x.X11 sync_clipboard_to_pasteboard -boolean true +.B defaults write __laucnd_id_prefix__.X11 sync_clipboard_to_pasteboard -boolean true Update the the OSX NSPasteboard when the X11 CLIPBOARD is updated. Note that enabling this option causes the clipboard synchronization to act as a clipboard manager in X11. This makes it impossible to use xclipboard, klipper, or any other such clipboard managers. If you want to use any of these programs, you must disable this option. .TP 8 -.B defaults write org.x.X11 sync_primary_on_select -boolean true +.B defaults write __laucnd_id_prefix__.X11 sync_primary_on_select -boolean true This option defaults to false and is provided only "for experts." It updates the NSPasteboard whenever a new X11 selection is made (rather than requiring you to hit cmd-c to copy the selection to the NSPasteboard). Since the X11 protocol does not require applications to send notification when they change selection, this might not work in all cases (if you run into this problem, try selecting text in another application first, then selecting the text you want). .TP 8 -.B defaults write org.x.X11 enable_test_extensions -boolean true +.B defaults write __laucnd_id_prefix__.X11 enable_test_extensions -boolean true This option defaults to false and is only accessible through the command line. Enable this option to turn on the DEC-XTRAP, RECORD, and XTEST extensions in the server. .SH OPTIONS .PP From 59edde7c28db2d3174a5813a0af334e4ead2082f Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Fri, 9 Apr 2010 16:19:43 -0700 Subject: [PATCH 4/4] XQuartz: Add a GUI preference for the Alt / Mode_switch toggle Signed-off-by: Jeremy Huddleston Reviewed-by: Kevin Van Vechten --- hw/xquartz/X11Controller.h | 5 +- .../English.lproj/main.nib/designable.nib | 1791 +++++++---------- .../English.lproj/main.nib/keyedobjects.nib | Bin 41440 -> 45258 bytes 3 files changed, 712 insertions(+), 1084 deletions(-) diff --git a/hw/xquartz/X11Controller.h b/hw/xquartz/X11Controller.h index a2024dfac..65a09b8d5 100644 --- a/hw/xquartz/X11Controller.h +++ b/hw/xquartz/X11Controller.h @@ -55,10 +55,9 @@ typedef unsigned int NSUInteger; #endif #endif -#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 -@interface X11Controller : NSObject -#else @interface X11Controller : NSObject +#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 + #endif { IBOutlet NSPanel *prefs_panel; diff --git a/hw/xquartz/bundle/Resources/English.lproj/main.nib/designable.nib b/hw/xquartz/bundle/Resources/English.lproj/main.nib/designable.nib index 94d01047c..7609393ba 100644 --- a/hw/xquartz/bundle/Resources/English.lproj/main.nib/designable.nib +++ b/hw/xquartz/bundle/Resources/English.lproj/main.nib/designable.nib @@ -1,29 +1,21 @@ - + - 1050 - 9L29 - 677 - 949.54 - 353.00 - - YES + 1040 + 10D573 + 761 + 1038.29 + 460.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 761 - - YES + + com.apple.InterfaceBuilder.CocoaPlugin - - - YES - - YES - - - YES - - - - YES + + + NSApplication @@ -37,8 +29,7 @@ MainMenu - - YES + X11 @@ -56,8 +47,7 @@ submenuAction: X11 - - YES + About X11 @@ -99,9 +89,7 @@ Services - - YES - + _NSServicesMenu @@ -185,7 +173,7 @@ - + _NSAppleMenu @@ -200,8 +188,7 @@ submenuAction: Applications - - YES + YES @@ -222,7 +209,7 @@ - + @@ -236,8 +223,7 @@ submenuAction: Edit - - YES + Copy @@ -247,7 +233,7 @@ - + @@ -263,8 +249,7 @@ Window - - YES + Close @@ -341,7 +326,7 @@ - + _NSWindowsMenu @@ -356,8 +341,7 @@ submenuAction: Help - - YES + X11 Help @@ -367,10 +351,10 @@ - + - + _NSMainMenu @@ -386,20 +370,19 @@ View - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {320, 240} - + 256 - - YES + 256 {{13, 10}, {458, 292}} - - YES + + 1 @@ -407,13 +390,13 @@ 256 - - YES + 256 {{18, 210}, {402, 18}} + YES 67239424 @@ -421,7 +404,7 @@ Emulate three button mouse LucidaGrande - 1.300000e+01 + 13 1044 @@ -441,6 +424,7 @@ 256 {{36, 60}, {385, 31}} + YES 67239424 @@ -448,7 +432,7 @@ When enabled, menu bar key equivalents may interfere with X11 applications that use the Meta modifier. LucidaGrande - 1.100000e+01 + 11 3100 @@ -458,7 +442,7 @@ controlColor 3 - MC42NjY2NjY2OQA + MC42NjY2NjY2NjY3AA @@ -477,6 +461,7 @@ 256 {{36, 162}, {385, 42}} + YES 67239424 @@ -494,6 +479,7 @@ IG9yIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCg 256 {{18, 97}, {402, 18}} + YES 67239424 @@ -515,6 +501,7 @@ IG9yIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCg 256 {{36, 126}, {385, 14}} + YES 67239424 @@ -531,6 +518,7 @@ IG9yIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCg 256 {{18, 146}, {402, 18}} + YES 67239424 @@ -547,9 +535,49 @@ IG9yIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCg 25 - + + + 256 + {{36, -1}, {385, 31}} + + + YES + + 67239424 + 4194304 + When enabled, the option keys send Alt_L and Alt_R X11 key symbols instead of Mode_switch. + + + + + + + + + 256 + {{18, 36}, {402, 18}} + + + YES + + 67239424 + 0 + Option keys send Alt_L and Alt_R + + + 1211912703 + 2 + + + + 200 + 25 + + + {{10, 33}, {438, 246}} + Input @@ -562,8 +590,7 @@ IG9yIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCg 256 - - YES + 256 @@ -616,7 +643,7 @@ IG9yIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCg 1 LucidaGrande - 1.300000e+01 + 13 16 @@ -645,8 +672,7 @@ IG9yIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCg OtherViews - - YES + @@ -684,7 +710,7 @@ IG9yIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCg 24 - + 3 YES @@ -701,7 +727,7 @@ IG9yIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCg 67239424 4194304 - Q29sb3JzOgo + Colors: @@ -782,7 +808,7 @@ IG9yIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCg - + {{10, 33}, {438, 246}} Output @@ -796,8 +822,7 @@ IG9yIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCg 256 - - YES + 256 @@ -828,9 +853,7 @@ IG9yIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCg 67239424 4194304 - RW5hYmxlcyB0aGUgImNvcHkiIG1lbnUgaXRlbSBhbmQgYWxsb3dzIGZvciBzeW5jaW5nIGJldHdlZW4g -dGhlIE9TWCBQYXN0ZWJvYXJkIGFuZCB0aGUgWDExIENMSVBCT0FSRCBhbmQgUFJJTUFSWSBidWZmZXJz -Lg + Enables the "copy" menu item and allows for syncing between the OSX Pasteboard and the X11 CLIPBOARD and PRIMARY buffers. @@ -953,7 +976,7 @@ Lg - + {{10, 33}, {438, 246}} Pasteboard @@ -967,8 +990,7 @@ Lg 256 - - YES + 256 @@ -1080,7 +1102,7 @@ Lg - + {{10, 33}, {438, 246}} Windows @@ -1091,8 +1113,7 @@ Lg 256 - - YES + 256 @@ -1144,9 +1165,7 @@ Lg 67239424 4194304 - TGF1bmNoaW5nIFgxMSB3aWxsIGNyZWF0ZSBYYXV0aG9yaXR5IGFjY2Vzcy1jb250cm9sIGtleXMuIElm -IHRoZSBzeXN0ZW0ncyBJUCBhZGRyZXNzIGNoYW5nZXMsIHRoZXNlIGtleXMgYmVjb21lIGludmFsaWQg -d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 + Launching X11 will create Xauthority access-control keys. If the system's IP address changes, these keys become invalid which may prevent X11 applications from launching. @@ -1185,30 +1204,31 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - + {{10, 33}, {438, 246}} Security - + 0 YES YES - - YES + - + - + {484, 308} + + {{0, 0}, {1280, 938}} {320, 262} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} x11_prefs @@ -1221,13 +1241,12 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 View - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {320, 240} 256 - - YES + 265 @@ -1244,7 +1263,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 1 Helvetica - 1.300000e+01 + 13 16 @@ -1285,13 +1304,11 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 274 - - YES + 2304 - - YES + 256 @@ -1311,15 +1328,14 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 {{302, 0}, {16, 17}} - - YES + - 1.217310e+02 - 6.273100e+01 - 1.000000e+03 + 121.73099999999999 + 62.731000000000002 + 1000 - 75628032 - 0 + 75628096 + 2048 Name @@ -1351,12 +1367,12 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - 9.900000e+01 - 4.000000e+01 - 1.000000e+03 + 99 + 40 + 1000 - 75628032 - 0 + 75628096 + 2048 Command @@ -1377,12 +1393,12 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - 7.100000e+01 - 1.000000e+01 - 1.000000e+03 + 71 + 10 + 1000 - 67239424 - 0 + 75628096 + 2048 Shortcut @@ -1399,7 +1415,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 Text Cell LucidaGrande - 1.200000e+01 + 12 16 @@ -1417,9 +1433,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 YES - - 3.000000e+00 - 2.000000e+00 + + 3 + 2 6 @@ -1430,14 +1446,17 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 MC41AA - 1.700000e+01 + 17 1379958784 + + 1 -1 0 YES + 0 - + {{1, 17}, {301, 198}} @@ -1452,7 +1471,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 _doScroller: - 9.949238e-01 + 0.99492380000000002 @@ -1462,15 +1481,14 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 1 _doScroller: - 6.885246e-01 + 0.68852460000000004 2304 - - YES + - + {{1, 0}, {301, 17}} @@ -1479,7 +1497,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 4 - + {{20, 20}, {318, 231}} @@ -1488,7 +1506,6 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - QSAAAEEgAABBmAAAQZgAAA @@ -1516,18 +1533,17 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 25 - + {454, 271} {{0, 0}, {1280, 938}} {320, 262} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} x11_apps Menu - - YES + YES @@ -1550,8 +1566,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 submenuAction: Applications - - YES + YES @@ -1565,23 +1580,22 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - Q3VzdG9taXpl4oCmA + Customize… 1048576 2147483647 - + - + - + - - YES + copy: @@ -2126,64 +2140,74 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 300475 - + + + prefs_changed: + + + + 300480 + + + + option_sends_alt + + + + 300481 + + - - YES + 0 - - YES - + -2 - - RmlsZSdzIE93bmVyA + + File's Owner -1 - + First Responder -3 - + Application 29 - - YES + - - + + MainMenu 19 - - YES + - + 24 - - YES + @@ -2192,7 +2216,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - + @@ -2238,17 +2262,15 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 56 - - YES + - + 57 - - YES + @@ -2261,7 +2283,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - + @@ -2277,10 +2299,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 131 - - YES + - + @@ -2336,19 +2357,17 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 163 - - YES + - + 169 - - YES + - + @@ -2359,20 +2378,18 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 269 - - YES + - + 270 - - YES + - + @@ -2388,19 +2405,17 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 419 - - YES + - + 420 - - YES + - + @@ -2411,132 +2426,121 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 196 - + X11Controller 244 - - YES + - - + + PrefsPanel 245 - - YES + - + 348 - - YES + - + 349 - - YES + - + 351 - - YES + - + + + 363 - - YES + - + 364 - - YES + - + 365 - - YES + - + 368 - - YES + - + 369 - - YES + - + 370 - - YES + - + 352 - - YES + - + 350 - - YES + @@ -2545,170 +2549,153 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - + 371 - - YES + - + 372 - - YES + - + 382 - - YES + - + 385 - - YES + - + 386 - - YES + - + 541 - - YES + - + 543 - - YES + - + 353 - - YES + - + 354 - - YES + - + 374 - - YES + - + 375 - - YES + - + 376 - - YES + - + 377 - - YES + - + 379 - - YES + - + 285 - - YES + - - + + EditPrograms 286 - - YES + - + 423 - - YES + - - + + DockMenu @@ -2719,20 +2706,18 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 526 - - YES + - + 527 - - YES + - + @@ -2788,10 +2773,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 100382 - - YES + - + @@ -2842,13 +2826,12 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 380 - - YES + - + @@ -2874,13 +2857,12 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 295 - - YES + - + @@ -2901,21 +2883,19 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 296 - - YES + - + 535 - - YES + - + @@ -2926,10 +2906,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 298 - - YES + - + @@ -2940,10 +2919,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 297 - - YES + - + @@ -2954,10 +2932,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 310 - - YES + - + @@ -2968,10 +2945,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 292 - - YES + - + @@ -2982,10 +2958,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 293 - - YES + - + @@ -2996,42 +2971,38 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 300337 - - YES + - + 300338 - - YES + - + 300358 - - YES + - + 300359 - - YES + - + @@ -3047,10 +3018,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 300362 - - YES + - + @@ -3061,10 +3031,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 300364 - - YES + - + @@ -3075,10 +3044,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 300368 - - YES + - + @@ -3089,10 +3057,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 300370 - - YES + - + @@ -3103,17 +3070,15 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 300421 - - YES + - + 300422 - - YES + @@ -3122,25 +3087,23 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - + 300423 - - YES + - + 300424 - - YES + - + @@ -3156,10 +3119,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 300447 - - YES + - + @@ -3170,10 +3132,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 300451 - - YES + - + @@ -3184,10 +3145,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 300453 - - YES + - + @@ -3198,10 +3158,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 300455 - - YES + - + @@ -3212,10 +3171,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 300457 - - YES + - + @@ -3226,10 +3184,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 300459 - - YES + - + @@ -3240,10 +3197,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 300472 - - YES + - + @@ -3251,610 +3207,333 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - - - - YES - - YES - -1.IBPluginDependency - -2.IBPluginDependency - -3.IBPluginDependency - -3.ImportedFromIB2 - 100292.IBPluginDependency - 100293.IBPluginDependency - 100295.IBPluginDependency - 100295.IBShouldRemoveOnLegacySave - 100310.IBPluginDependency - 100363.IBPluginDependency - 100364.IBPluginDependency - 100365.IBPluginDependency - 100368.IBPluginDependency - 100369.IBPluginDependency - 100370.IBPluginDependency - 100371.IBPluginDependency - 100372.IBPluginDependency - 100374.IBPluginDependency - 100375.IBPluginDependency - 100376.IBPluginDependency - 100377.IBPluginDependency - 100379.IBPluginDependency - 100382.IBPluginDependency - 100385.IBPluginDependency - 100386.IBPluginDependency - 100541.IBPluginDependency - 100543.IBPluginDependency - 129.IBPluginDependency - 129.ImportedFromIB2 - 130.IBPluginDependency - 130.ImportedFromIB2 - 131.IBPluginDependency - 131.ImportedFromIB2 - 134.IBPluginDependency - 134.ImportedFromIB2 - 136.IBPluginDependency - 136.ImportedFromIB2 - 143.IBPluginDependency - 143.ImportedFromIB2 - 144.IBPluginDependency - 144.ImportedFromIB2 - 145.IBPluginDependency - 145.ImportedFromIB2 - 149.IBPluginDependency - 149.ImportedFromIB2 - 150.IBPluginDependency - 150.ImportedFromIB2 - 157.IBPluginDependency - 157.ImportedFromIB2 - 163.IBPluginDependency - 163.ImportedFromIB2 - 169.IBEditorWindowLastContentRect - 169.IBPluginDependency - 169.ImportedFromIB2 - 169.editorWindowContentRectSynchronizationRect - 19.IBPluginDependency - 19.ImportedFromIB2 - 196.IBPluginDependency - 196.ImportedFromIB2 - 200295.IBPluginDependency - 200295.IBShouldRemoveOnLegacySave - 203.IBPluginDependency - 203.ImportedFromIB2 - 204.IBPluginDependency - 204.ImportedFromIB2 - 23.IBPluginDependency - 23.ImportedFromIB2 - 24.IBEditorWindowLastContentRect - 24.IBPluginDependency - 24.ImportedFromIB2 - 24.editorWindowContentRectSynchronizationRect - 244.IBEditorWindowLastContentRect - 244.IBWindowTemplateEditedContentRect - 244.ImportedFromIB2 - 244.editorWindowContentRectSynchronizationRect - 244.windowTemplate.hasMaxSize - 244.windowTemplate.hasMinSize - 244.windowTemplate.maxSize - 244.windowTemplate.minSize - 245.IBPluginDependency - 245.ImportedFromIB2 - 269.IBPluginDependency - 269.ImportedFromIB2 - 270.IBEditorWindowLastContentRect - 270.IBPluginDependency - 270.ImportedFromIB2 - 270.editorWindowContentRectSynchronizationRect - 272.IBPluginDependency - 272.ImportedFromIB2 - 285.IBEditorWindowLastContentRect - 285.IBViewEditorWindowController.showingBoundsRectangles - 285.IBViewEditorWindowController.showingLayoutRectangles - 285.IBWindowTemplateEditedContentRect - 285.ImportedFromIB2 - 285.editorWindowContentRectSynchronizationRect - 285.windowTemplate.hasMaxSize - 285.windowTemplate.hasMinSize - 285.windowTemplate.maxSize - 285.windowTemplate.minSize - 286.IBPluginDependency - 286.ImportedFromIB2 - 29.IBEditorWindowLastContentRect - 29.IBPluginDependency - 29.ImportedFromIB2 - 29.editorWindowContentRectSynchronizationRect - 292.IBPluginDependency - 292.ImportedFromIB2 - 293.IBPluginDependency - 293.ImportedFromIB2 - 295.IBPluginDependency - 295.ImportedFromIB2 - 296.IBPluginDependency - 296.ImportedFromIB2 - 297.IBPluginDependency - 297.ImportedFromIB2 - 298.IBPluginDependency - 298.ImportedFromIB2 - 300295.IBPluginDependency - 300295.IBShouldRemoveOnLegacySave - 300337.IBPluginDependency - 300337.ImportedFromIB2 - 300338.IBPluginDependency - 300338.ImportedFromIB2 - 300358.IBPluginDependency - 300358.ImportedFromIB2 - 300359.IBPluginDependency - 300359.ImportedFromIB2 - 300360.IBPluginDependency - 300361.IBPluginDependency - 300362.IBPluginDependency - 300362.ImportedFromIB2 - 300363.IBPluginDependency - 300364.IBPluginDependency - 300364.ImportedFromIB2 - 300365.IBPluginDependency - 300368.IBPluginDependency - 300368.ImportedFromIB2 - 300369.IBPluginDependency - 300370.IBPluginDependency - 300370.ImportedFromIB2 - 300371.IBPluginDependency - 300421.IBPluginDependency - 300421.ImportedFromIB2 - 300422.IBPluginDependency - 300422.ImportedFromIB2 - 300423.IBPluginDependency - 300423.ImportedFromIB2 - 300424.IBPluginDependency - 300424.ImportedFromIB2 - 300440.IBPluginDependency - 300441.IBPluginDependency - 300447.IBPluginDependency - 300447.ImportedFromIB2 - 300450.IBPluginDependency - 300451.IBPluginDependency - 300451.ImportedFromIB2 - 300452.IBPluginDependency - 300453.IBPluginDependency - 300453.ImportedFromIB2 - 300454.IBPluginDependency - 300455.IBPluginDependency - 300455.ImportedFromIB2 - 300456.IBPluginDependency - 300457.IBPluginDependency - 300457.ImportedFromIB2 - 300458.IBPluginDependency - 300459.IBPluginDependency - 300459.ImportedFromIB2 - 300460.IBPluginDependency - 300472.IBPluginDependency - 300472.ImportedFromIB2 - 300473.IBPluginDependency - 305.IBPluginDependency - 305.ImportedFromIB2 - 310.IBPluginDependency - 310.ImportedFromIB2 - 348.IBPluginDependency - 348.ImportedFromIB2 - 349.IBPluginDependency - 349.ImportedFromIB2 - 350.IBPluginDependency - 350.ImportedFromIB2 - 351.IBPluginDependency - 351.ImportedFromIB2 - 352.IBPluginDependency - 352.ImportedFromIB2 - 353.IBPluginDependency - 353.ImportedFromIB2 - 354.IBPluginDependency - 354.ImportedFromIB2 - 363.IBPluginDependency - 363.ImportedFromIB2 - 364.IBPluginDependency - 364.ImportedFromIB2 - 365.IBPluginDependency - 365.ImportedFromIB2 - 368.IBPluginDependency - 368.ImportedFromIB2 - 369.IBPluginDependency - 369.ImportedFromIB2 - 370.IBPluginDependency - 370.ImportedFromIB2 - 371.IBPluginDependency - 371.ImportedFromIB2 - 372.IBPluginDependency - 372.ImportedFromIB2 - 374.IBPluginDependency - 374.ImportedFromIB2 - 375.IBPluginDependency - 375.ImportedFromIB2 - 376.IBPluginDependency - 376.ImportedFromIB2 - 377.IBPluginDependency - 377.ImportedFromIB2 - 379.IBPluginDependency - 379.ImportedFromIB2 - 380.IBPluginDependency - 380.ImportedFromIB2 - 381.IBPluginDependency - 381.ImportedFromIB2 - 382.IBPluginDependency - 382.ImportedFromIB2 - 383.IBPluginDependency - 383.ImportedFromIB2 - 384.IBPluginDependency - 384.ImportedFromIB2 - 385.IBPluginDependency - 385.ImportedFromIB2 - 386.IBPluginDependency - 386.ImportedFromIB2 - 419.IBPluginDependency - 419.ImportedFromIB2 - 420.IBPluginDependency - 420.ImportedFromIB2 - 421.IBPluginDependency - 421.ImportedFromIB2 - 423.IBPluginDependency - 423.ImportedFromIB2 - 435.IBPluginDependency - 435.ImportedFromIB2 - 5.IBPluginDependency - 5.ImportedFromIB2 - 524.IBPluginDependency - 524.ImportedFromIB2 - 526.IBPluginDependency - 526.ImportedFromIB2 - 527.IBPluginDependency - 527.ImportedFromIB2 - 532.IBPluginDependency - 532.ImportedFromIB2 - 533.IBPluginDependency - 533.ImportedFromIB2 - 535.IBPluginDependency - 535.ImportedFromIB2 - 536.IBPluginDependency - 536.ImportedFromIB2 - 537.IBPluginDependency - 537.ImportedFromIB2 - 538.IBPluginDependency - 538.ImportedFromIB2 - 541.IBPluginDependency - 541.ImportedFromIB2 - 543.IBPluginDependency - 543.ImportedFromIB2 - 544.IBPluginDependency - 544.ImportedFromIB2 - 545.IBPluginDependency - 545.ImportedFromIB2 - 56.IBPluginDependency - 56.ImportedFromIB2 - 57.IBEditorWindowLastContentRect - 57.IBPluginDependency - 57.ImportedFromIB2 - 57.editorWindowContentRectSynchronizationRect - 573.IBPluginDependency - 573.ImportedFromIB2 - 574.IBPluginDependency - 574.ImportedFromIB2 - 575.IBPluginDependency - 575.ImportedFromIB2 - 58.IBPluginDependency - 58.ImportedFromIB2 - 92.IBPluginDependency - 92.ImportedFromIB2 - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{168, 821}, {113, 23}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{202, 626}, {154, 153}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{349, 868}, {315, 143}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{271, 666}, {301, 153}} - {{437, 749}, {484, 308}} - {{437, 749}, {484, 308}} - - {{184, 290}, {481, 345}} - - - {3.40282e+38, 3.40282e+38} - {320, 240} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{58, 803}, {155, 33}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{100, 746}, {155, 33}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{68, 585}, {454, 271}} - - - {{68, 585}, {454, 271}} - - {{433, 406}, {486, 327}} - - - {3.40282e+38, 3.40282e+38} - {320, 240} - com.apple.InterfaceBuilder.CocoaPlugin - - {{145, 1011}, {336, 20}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{67, 819}, {336, 20}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{20, 641}, {218, 203}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{79, 616}, {218, 203}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - - - - YES - - YES - - - YES - + + 300476 + + + + + + + + 300477 + + + + + + + + 300478 + + + + + 300479 + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{168, 821}, {113, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{202, 626}, {154, 153}} + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{349, 868}, {315, 143}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{271, 666}, {301, 153}} + {{507, 565}, {484, 308}} + com.apple.InterfaceBuilder.CocoaPlugin + {{507, 565}, {484, 308}} + + {{184, 290}, {481, 345}} + + + {3.40282e+38, 3.40282e+38} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{58, 803}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{100, 746}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{68, 585}, {454, 271}} + com.apple.InterfaceBuilder.CocoaPlugin + + + {{68, 585}, {454, 271}} + + {{433, 406}, {486, 327}} + + + {3.40282e+38, 3.40282e+38} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 1011}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{67, 819}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{20, 641}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{79, 616}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + - - YES - - YES - - - YES - - + - 300475 + 300481 - - YES + FirstResponder NSObject @@ -3879,131 +3558,81 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4 - - - YES + + X11Controller NSObject - - YES - - YES - apps_table_delete: - apps_table_done: - apps_table_duplicate: - apps_table_new: - apps_table_show: - bring_to_front: - close_window: - enable_fullscreen_changed: - minimize_window: - next_window: - prefs_changed: - prefs_show: - previous_window: - quit: - toggle_fullscreen: - x11_help: - zoom_window: - - - YES - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - - - - YES - - YES - apps_separator - apps_table - click_through - copy_menu_item - depth - dock_apps_menu - dock_menu - dock_window_separator - enable_auth - enable_fullscreen - enable_fullscreen_menu - enable_keyequivs - enable_tcp - fake_buttons - focus_follows_mouse - focus_on_new_window - prefs_panel - sync_clipboard_to_pasteboard - sync_keymap - sync_pasteboard - sync_pasteboard_to_clipboard - sync_pasteboard_to_primary - sync_primary_immediately - sync_text1 - sync_text2 - toggle_fullscreen_item - use_sysbeep - window_separator - x11_about_item - - - YES - NSMenuItem - NSTableView - NSButton - NSMenuItem - NSPopUpButton - NSMenu - NSMenu - NSMenuItem - NSButton - NSButton - NSButton - NSButton - NSButton - NSButton - NSButton - NSButton - NSPanel - NSButton - NSButton - NSButton - NSButton - NSButton - NSButton - NSTextField - NSTextField - NSMenuItem - NSButton - NSMenuItem - NSMenuItem - - + + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + + + NSMenuItem + NSTableView + NSButton + NSMenuItem + NSPopUpButton + NSMenu + NSMenu + NSMenuItem + NSButton + NSButton + NSButton + NSButton + NSButton + NSButton + NSButton + NSButton + NSButton + NSPanel + NSButton + NSButton + NSButton + NSButton + NSButton + NSButton + NSTextField + NSTextField + NSMenuItem + NSButton + NSMenuItem + NSMenuItem + IBDocumentRelativeSource ../../../X11Controller.h - + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES ../X11.xcodeproj 3 + + {9, 8} + {7, 2} + diff --git a/hw/xquartz/bundle/Resources/English.lproj/main.nib/keyedobjects.nib b/hw/xquartz/bundle/Resources/English.lproj/main.nib/keyedobjects.nib index fee8f1ce92ee490db5abf22339c574c4e9205fb4..888424dfca546c65d2eb01232818b617bbac860f 100644 GIT binary patch literal 45258 zcmdRX2Ygh;_VAsVTX%2U^pLgzM7ktED53Y>LT_P7HU*Mw%qA2OxuaAYq9Te7DHa5K z$A+TVzz!myV#9*Hqr!LQ-rZz3S>EHl|Np)3`{0+|yZ25x=ggVY=FHr=)fMHz+D@I` z;Sh&8!ttEIiDq}R$JCY!{58SyK-JWifw}YiMYX|cEqygbW#w>tV$0e$n@Zo4A{~Te!{K9o)U#ecZ#`OWe!ce(rVd4eo93 zAom`3nEQhJlKYDLmivi2g(M^+6&c7xiKrP$LoHB8bRO!2x}rg76dH{tqbX=ADneB# zfT~d)T7;IM3(+cc6LdF@MK(w=ivFc7T4hgcp0`Z#h2st z_&U4+Z^m2jR(vPkfgi??;79Re_$mA}eja~|PZN&FB#y+BRFXwHlP;t?=|jeo*`$z^ zkWw;_1V{~8LM|jriA7eCb>wQYfovqVl1*eQxr5wK9w$$b=gB_uE;&FBlOyCfIYE9P zKayX_N%AKrkyAY3d0ye;_!K^s@4$EDbNSAE9-q(m;rsG~_`&=LegZ$0pT<}7b^IcJ z3BQ`ZoWFvU?1YKw*qzUOlw$MgsE942?gziFbVW=>clZ0`?OktKVTPPCd3l+j5 zVX<(5uuNDjtP$1=*9jYhn}n^xHsOBZ0pUU6G2vNZx3EvxFT5_iBODbz5WW(=7ETC1 zh?=O2hG>fMVuF|`W{BBhu9zqG7e|OA#fjo1ak@A|oGq4$W#ai_jkrX-P+TFd6xWJZ zi8qNii?@q+i1&&2iw}qoi4TiUiF?IY#8<`F#RK9Y@l)}H_>K67cv8X=kyJ^O5~U<5 zOY%ysr8ZKo)LF`xdP#$&A<|H3m^4o3vTl zF5N9XDm^AWEA5u{N&BS((n0AH=~L;1^o{hZ^qX{A=43^7$!=MdeBbUk5^7--w@)G$HdAWRre5HJyyg}Y1-zIOCx5#&J zl6#pxs$8tBP*y8zlq;3B%C*W(%FW7lxAnU*RQUVu0LIWxlX$|x8XM39(RH}(VgT@cBi;g z-Obz??o7AW{e(J6{a*b+{Zai%{aO7*{Z;)<{ayV-J*obw{-yq{o>EV1oQ5>45slXb zP1Gb!))dX9xiwYOG+i?^Q}bwXTD+E^C2C1pvX-KyYR$AXEnUmdGPNwtt7U7=wH8`S z?HsL@cCOZ1YooQ*+G*{z4q8X;Jgt+KqvdLywJus$El=yFb=P`mJ+*wTm)2YBqxIGL zY5lbU+CXiPHdq^?4b_He!?h9GNNtohS{tK{)y8S#wFz2*Hc^|TP1dGpQ?+T@bZv$< zQ=6sD)(W*bnopan6=}tqUn|i{wKA<-o2Sj!Dzr+iN(*S!+WA_I7Sw9BI&FcrP+O!e z)-KSNXcuZrwTrZ6nx#?gV(k)bxwb-Esjbm2*DH-N##m#VG2WP96c`hYNycPjiZRug zW=uC`7&DDo#%!a|m}B^ixkiyuZ1{~5qtqxf%8hx(e51msG^&h%QEi-W)EGgd)~GWU z7z>R>#$w|FV~KI0vDCQ8SY}uTH7+(TF_s%EjFrYJW3{oyxYW4JxZJqHxYAf_TxF~? zt~RbQt~J&h*BKj(>x~2)V#-qk##^c5l#xCPY<0<25;~C>wW4G~~@w~Cec)@tl z*lWCGyllK;ylT8=>@)TouN!X|ZyIkIZyWCz?-~b;gT{NtA>)1HuyMpVYJ6aPXnbTG zGd?yxF+MduGd?$t8($b-8ebV-8z+o!jBkzajPH#fj314kjGv8Pj9-o4jNgqvjFZNn z#$U$Y#wp{p$(hK+CNX(aFhx@`Wm7R-rrT6a&D2f9G)<2gXU3ZeW}=y7CYvc{s@cp; zGtE`dwrlDK3pg-hj{acNvSm%(LnS)7;4=9+UYxR%^GTr2Ket~J+& zYs<1a01-l>ardFB zfg0A%kU&-KXkV4D)L#R?>{?D6lss%n6sJ-Awk3iEKpvs^EsEczzVo!P=Vgs#1%G?)q1Q{Z-^+ zSiHsMaoxD?T#xAv-c?X_s&nagFdSW1>w|$Pu&Zx@qCL6%sbdP9-*Dkjz-gy9*Jn1s zP#3HXR66%JbG^BI7|`JZ1_p`(zWPC8p!Mela07w79RtqLTJk2RnZeu;7?W_v{@N|v zU~VXvKM8vE*E%(ab0e&l_nJevk=!V5G&hDD%Z=m4a}&4%ZX!2{o6Jq&rgGD`>D&x% zCO3bdKUcz)a%EgOH;+on(q#6sr{L6q^)#D2}5zp5g?G6DdxjIGN%Uic{Z#VY!;ShP#$q z&t1oD;Jj1D6pZrC^;ZDb4DttS%d2dzVdEdDt10qZx}{le3x`?oMqoR2*3_IFVD{RY zKt+YWW@@p&!e8pE^*dvGE4Qi8OaPWIpF6g$w!&XqKP|R!w{o{}`M^N%tp08!L|eIS zoEN%mWtkR!hr1Jiy^Gt<-OcUbc5?Rs_mB2h)eW!pR|Y`_ut@;WPb`N{tT^i&E5Y(i zWCg+u^nlfJGxs3(kQHyGzt26wJ<2`CJq}Gi!R_Ln2~e| z?nCaQdMbVfG(8U7)87`MK%|1Yxs}j}mFXay6-L=XIMvFS86m8Kvx81?r+Uw~Z5G(h zeGLq7-15R0XM_j$dp5W~a6ekvR`W9r?k@mX!{GkK?F^GWs}b4Xi{K3htJC4Ci07V0 zViB6ar&CNr zdWfGkBMroEaiC~Eqj|)nKyfJEo)i~Zts^D{O5%2)6qIVU1*$By+DskoE3aZzLj*z@ zR?BTD6J;SU%0|ttcGehck~Pa(5OWk!OLPuu1s&PsLhS(O4ps*T>yFTG6yEI%VE#86 zsrt!^asaN*Q2RW9YqZrq3{E$zWBKH0cfDr$;!35T6tD) ztB=*+8ek2!hFZg|5eK7L4Ydk^HypqlX?2W-DrZ{%xq-S`FTmDhIMEoVE}DP}pzfqF zVhpV=;o)|lukHQPqA!k{o{ z1E&rvFZMH58ei5Fxx4FIx(`};T78h`#w z;2b8d{SMp2PzUHBdJi3{7bG7rbzqHk8XnhJkYqIC>5#ZbpV;DlJn(Z^+@mi*+@mki zSJnip;7o-01|4b;_vq&aLX7)o;vW4Lu8RHwLYxZ28zuH8&U932`2~KE4l$=TMi^rf z#vaSu)7WKAaax<&82iZ+2N##u#wG#QxgAh-8jxUeX!7ECtL1Gt!J6J=7;zFN3~}5H zr$LVy;r1^57i7~1UlhP+#UD8J#jwng?r;ZxUW@Ym00E0e5=9=ST$C# zDYpG_3me3EMehCH*bQHFCR8tpLiN&r1=TCURq@pT*|jn03{il%0nG1Z64F~6@D8Z~ z$7D9hsSwI%lvMb7d;{KC&-1rJ7q?l9oK6-u=J|yahxse28*zL{T;XlN@3&bO0Jkp; zbM|&NSMRo#G$r>=ywMR-_yOqgp>TgulIFsxpn1Hk#~FY~*sz;e8EqKiC(xJN2Jn_F z5Q^^EzUt~=VKD4_L>Q3xS-jgW_lR||<^Ir2!h7%w_(i-Izl2}LuW)hrRs0&>hxg;x z@f-L}{1$#2zk}b!2k=4s9zKNM$A|F|d=!5Ge;?wH@G<-`{se!DKf|BHuP=aszk=r{ zxIN(*O##dsZ~+z!sqmFThylVR0|OOxl~w)gz$x+v%P)Z8DyUst0qzyJFf0lKUP^VK zs@PvsXl8*QTH`A%Wo2y7hxuGX0ySd-Rp2-IDr}c*fUjtNDR6dGF|-_jS}mA12RCbS zxqo4}dW1V`_Xh6Fppd5up4l+J5Bg)}3(XX8sj6!I;Oqws%)~HC>1P1ah7cMb7^tao8iyZ)e6>CY6=-f~O}PUzG&i`)_6+SfS>yhvlo!{Q zLHUBZYG$eV7lJooW9X0)$QlQ#xS|3=XA>7!`wIZEqFQUY2Z21WE-^Xl7VBZ_A!|j8 zew_2KMZX;9B5p!Ii;D+u)Bb0zfl~J?E&9pMQ|l7z3gvzL9sVBwfPch40e2h#ZrO`} z#=qd*@c(!G2R@1a#DBrxDL`VtP@cUx+EXe5Co+AL>x z*1$AdNfJpWDJ=8_A%aE^!KGukGwum9_PY(FB+W<~^q+zMv@WwQ2dn||OON93i5LGw zvK@kx=6Ek@L0aOU$vOB4IhVAC&$gr;X-_)9Cn23k4#|Z{7PKcBP@lzP{8hD~ekX%5 zZ3ky;|K0(6U`2T~dkie;Jndgu%i^lT!exPPaw%?OT|#kNiaz#07z<~^g|%|5Y4-PW zoc(t_e8V5b85Exbk)9<$u-x|EPD|T+m*nKZsC8Q!B3)OKHw)xf!(`Y>x;aFPz8w;p zq^H$#3&|(FNN?*(Ym0Tq`=l@FM-UfB`jY`fyE&7d}wXUq@zHF1g~;i{4$wB zrjlu7I+;Ocl374$29Z5p&`JGuF2E8RJT@8=VHVjl3g!?@{^~$YZ5&Te_4CM_b(OWz zy3Sf>T|1G5gP4fFi_9TDGM5yQV&Vt33yIzmyBF&k>*^N$TG{Y&9yNXDsJf!^V&Bjj zABb9qyUR#9)MByf&7{l@5Rv($f>e?*q>2H_q$`t%HYLi+YyH;xk)1krX8&?~^x&LE zs>%64D7)-tQqASROM*axT4q zv~HMOus8@oCr}S%wv?`?2?Vg};ag^{AJ8cT0VNkVo`;OS+sGwkIaxtgHl3#Iv8{es z+e6Cz6~*ihpzK7R*bg8K`+CnARI<8$Sl5tC$z{NUSCA{oTKqw1^1*y#vnwtk2L_Ah zteb#iZnJK+Znkcj#yat`#-hh;J-N;qqqdmeT>8}j|+b@E0C@^|VXzbgd!cIK$p)E3p% zHXgAI~D7m zXx{pYeC_a7YX>dUYz)?Sz)0WQVBKroS7;`M7^$Hb8^%b6{MlMRx>Luz@V{6x2{UZEZROgs znV}n6$>2p^;+Q4;ob{OHJ_y$9PrNH^HgJ1*mDhNkH+Yk0(N;DO73&FWm-RSPy}PZ) z9p!9WIea{yz$bF;_+*N%r)VH60n0j<0ezM%$?4kOo12r%G+h^_^K!Z`U3!#nMkerS zq<~N7Gx$t0(H0bw`7GYcXY$Zn2j1|C?Yup;9RD+pU;g;yJV6`=5K1z%sTVPzoPI+(n^#h~LN zn$9&-<9Kw6iyPK!Jghmu|EH`cfpX7UH=8e+xX{c5Q=w>nhuV>4#OJ^m*&W)86VF&rgFRBPu)MaY%$6>E7rtwu30OE?+a(=4cr)LHgGEhPnB=?h z-9bD#CD_1hg*!cXSb;pF(BgaXy`dwg$~O2FVwhP)4CulT(2?BHA1Bz{vB#PYeo_&H zK?<2GRS4>=GP2xIewbbE1M9_DTr`Rw&5z;7^5gh1iuIE9vbC2n$5CrNNq`%D7% znL?4Tfqh2V?9;6auumtOeR6WU!*$-$r5~E{d^3J}6br59XYez*#|UGhS^R9i5a{jY z=a4bHkDtpI@x{EKFX4yrWx(3=fT1evD8gYrfDhaJ;e@ek{KbQdOPMjmTwu0{Q)o78 z_`xhwa2fhnl$TZkHJBegreG4Rx3iMqL|3v}z>+p=1?`0)yKz{&2rL{I2$r+OWpkwM zNG$Jvs$ZOValg|{@4afhX1xLw+^1Okt(!gQDn+r5M9C&T$k#^cJ=0_+AOx*>2wIN| zUta*%M>vQv@)trt7nbh$rBLb#Sh#~_C;lRS8Th52@$aVrla9r&D5LtPdt+jOeJNdgJ`nebSx!-!v>Bnf= z&%tRE%K~*l(7^vvHxKiV@Q+4x^AvRRjCI)QCZ%aN??Z&GqQc3tXo`#@8=mL)*vfAl z8-xZCaXbG!{{o1K7x}&RVse*%fzV*a7I>)~QOP{RV$FQ*Jo@SS8T;zRNgl0uPg@tH0gy!r*3+=p@ zm;oF9BmS6O;cM&jSc2#?{&W5~{{^VC~Fq(3`O!4z-%iL2&+KArwl|3%S7>e!Mq43 z*39tRk&i+jJddEcfCXaX{e$&Q47>$Nkohr!3-AU3{H^t!BY<~Xd+U+P>C(ed&OHFZ z&i_z33x;3{o-k5EqCgl@LTXH;z6XFpNSSP{szcCTtMXO`idl|82%Qpm;yj2%DpSa^ zk^0U0DHc*KgqDC*D+j5ctzROLN(9%sTYGQ!&S#BNJE6VMp&q9kA`*H_~$uktc{qA^Wsf~l=ZBhl?CCX-X2c}dDZnR0F0T`~^Un7#_WD_7 zh;4`ky%3J{*RVxHu*pJ%f+BW_U?hp=2tGz4iUf*KES~TSCH!%r%%0#BVTwro6mMYl z&LOt==XR)2DO3r8dOU-I&&G3MEIcXV8Bq0%!6J;2Q`cL(mL=kO!Q_JZ9h@G* zwzjA`63+{Tr4F8Milo@gK!uBe4VF91pim@Jq(pE*J+}XXv=S~AE)y=V$Mz~=sg3Qm zv9WbA&_dWY8(dje!9*33wH>2)?>Fr*l1&SUu^7522=>U_#uI! zx}bLmgasjJ>>bU}0`t6t-7PF}?iSj}Mvmdb!XplT;17ZJYKq?z!Y;t?sSth%6eY&M zuhZGj$>)UUg+2B7y(Bzh83`i7BxT2nT^l57jeiGm6rpm^37LI_I7BD1In>Bpj>9@-yKr8_O?aW0}q% z3t{OUTg?n_CVPV3puegZ*1c*AM|r_sv#%zA>$vltqPaFSYZaLz60=N=jUO7MPj6Cq!A=t{|k+u(LhyIzG3HlcJnZHV{{l1r?`zUHf(LEHkq-ZBa_fvFE+_*&$0!Pg$Y5{i6k|nu$5c%$$*TrUl z?%?Nj?gX&`aG2OaUPM|ExF_R$RsM>QA0ftB{6q#up_#rUr(?Gs-ST?)+d*BB2@$`R z!h%R{CopNcbXt0_enn;vQ;d9qm@K9UL&RqA2aEz*aR*bPpc3z9ALoXA6EVwbd7Cf- zwB=E;x!3~#B(@9(Nbu`IAMqSmX*epj63-P|leI9|?ZoyXkB7|hHqa#p3nzgSi#izVB`V=qoktf{MF)?cxmV;ZDr2t|V_8f4uJG_|$&cDS(q z0@2t;34_{&fjYoC8UEcJ(gcL1Voxz&$QOHyeZ;;3q{>PZwWBE4`h%i8ih5Gi2c}63 zgF_rB4iW~4L&TxX;DCts z^Fr*TjM)!f@HE2t+dLDficOY!uQHr-nm%6m_!hn+Ya2 z3!2$ZqwP|OGex!zQ6KZ(Ce93pPhwGSj_3o*71dL&GeupZDF;C@M!B3kJE~!mu1jt# z(v^$z#Q9==EYfvlqsSuV4(TQh3se+`#ay5UTwXgK>|Iz^4hao*kO!tUTk5x?QjWg% zdn?O}i{Uv`s9`I&j@l0C@L)$*Ec9x{IzVq>J$l_J>K+?Ch}1yL&qgn&ODy!3iWiB? z#NM&c>jC^3fnFbH(H2I%8j=-lbGxX_S5@kVfev^BkYlm1rrfqc0NJ`4$VRktub9BE z^i_9^g~w`f4d8KEy?)B4s8^JJVxdbWQo5YAf)dw>SBuw#6_mI^?86k4cw=k@)f?tt zSV3ht28K6iFX1q-=LUQ=#a;-gKz3#<@NX420r;EihoLV;{i26~IYPi?9c(M!SO#3)RUo}X-HIa>3~iq)Q&Z2krpSI!Mo1YrbWk;+%>4U~W}1%6=A z4t;iXtU8d^Ap^ZLbGCukJ}q;>#94K4;Q!#+8n!cum{~8a+bRZx;7+`O&wU0`V3< zMtnys2zN8r+Dp;Mh;H74ZgRs29tOcK9ubf7!^988j|3uQiJwq3nxgU6ixf?wXd3w4 zu=Qb96SGtNTs#gveQCSR6pf*1Y_#Ld_&x8eJtXm4@jLPRdUpR=JYuu^@3Gl^9KaZ6 z_hbl}hIt*_z?xdGzoY~#l%^2>CH@T%pB9Hg^n#)Z6cyMIGbIE8j1Y_G+VKmU#dE=c zXrh87UJ@ixJQ|C|Co;M<$k9@!Nap(e)j`lJkQ)`&Ai-L&71@jo%}^Wa_FiAmTkJ0> zuksf&*Pl%Yh}DBpIoL)AY)xlAS2v_cd#jlx)3FJrk|9BaMv4nzI+>y=jWErDs77w5 zu1uzOWlJiZVquyrrAVpbhc>2bqm}JcU=ABoup-Wb1w&X!4)$ycM{}tKz;R9pj_DN5 zh=e1ox}5Mz=N`NS!9KL>eiLl14YklGPOXDJpIdCenB&Od^7w60E*Ru=*mw>dUHz zpl3-)-bm9y-bgc~nbIt2wp1w1k$lozib^R0Yd=5{n5PRVT0+q>iY{r&PJXEb0D`ED zGzung8Aas)5VN&+!?z>#nFP-btq=b55TsNoRY~=687U~uU{XgqLtJJaK<%T(HI;d9~+C19b200-$*yAV7&o4dvqO!bcQfkt)A1?JC&xpCmA z;o}C3?LT3V-OjiP!$LP*q7 zR2K`0ZlS=@Ss<}P+9};rkHiDgY#WJ3Vk5BtWt|27Cgm3Mb+8u0Dyp1E;&IY3= zq+Ng!M2c*#Ttw00SQv$E)U&|oIq7++K2#*VBo*2iogq|o0Zi^NM%}^~HSk+`Wu?Ek z9LB0*v4asri@dcgZ3iTFFy#0)9i=yn z`eFJ&nqwpNaqMBb2*gzwsW7ia428{X4ZL?oUi(}+4p@8{k{1?5)WIS`UUUJ`mXm9% z?0;aLd@Fq?eJ}Z9$%~6YtVYO-!qC1*nB)yAv%JI$PJ(x#4}2a_Da>M71YA~ai-h*x z`EUu@utWT#ma6l8CDjU2mdm41=4Hj%nzO+H5%83#7 zxtwCPyq%ZiX2M1}U3f&!v>v1AatJ9?bQJ_%DY~}Fgpjl4=Fme+uw7WV`wEJ#w8O#7 z%6;6{k-5y_>DItVF(WN<8@a9APHq;9$ZG+H2qLeD_T=j00}vziRROs}sVj~#<5U%>$eZayF zB?JRC9lfw41m;^ASo;n~6+4?c9H%9QGL?tQ!vK#FAw1SobX_DKFlpF;cC$ULGYbZJ ztUOL0FK5O=V*~I}1R9q#8qXTPJ#(0s?Splvg|-#lbTk3^ju16tBU1@M6!y)~25ZCb zY!vXej_}uqfN2Xt0xGokPW0DQ0-IDgzx=gD9owAIg`YCTIj!Q|u=DM>-tsK|c*C5! z%Q_yKP>>TM&jlx*KPLEOzg!}hTAx#dD7uNFO%!cyI(_EJ^ZDa)B~be~OdoJ>Zn0PX z*z`GWLv>csHn~O)%C)jT7P)VQ-XqApeU$BuFgAAh2RuaxvooV*DqEfpKrm`CFgrWN zqeCd3XdC_=y~9gv5<8CJxk2ynacqLrKtXRv(=f^A2O$nolOPy-MNEd3SHW^=c`*y; z6_tUwUJP;&b{2)ATv35fd#Ta!mH@sOb8M-65m3ttQR_B}Hb+t`+69nj{Q5N)7ctqt1k950o43~GNK%w{%J%g!J#%^~5%+ z;?#3W7Dkxck+lv;q0ES9nYHMiZr5Q}cur)gBhp-_?dO=i6;UcTved_@w^M2l94Y_+ zB-Pq`%?lf{bQ&js%3p{_oGK7~91WxgGocWsD+{7Uw)`#X?i70o4lZ!dX3XMaM-N1| zC;ue>%x%CB&3=`lSKtg4$fq;rvaO1YWFXtBYGJQFW3NBtllJYNi1d&)m#UltV64#fN&Ay7sHO?SVZj%1$)}< zd2#Nbil4yR)^xbK0OfXT>sdSCTSA znW@aOz)n5hqF-o>i)l`SeXR@pEGaOw^q}|}l75w9xQ599$}U)Fr}-Bahg*&soHC## zM8trWKQdaLXiCdUr3$E69irto6nz^(%Lqa_zWG@Zs!my;EL0XLiN|kYA=Kmvpv@P+?kjuMMOhw!`YIdsxJc9??$BsnTn4l7D;w{hf!7LP zx<{06G8xwam4N&}rN0=Jer-yn>y!;Zr5i$2`i-LBV^S#>vMIq)IV&pNqTH%%Qf^Z= zD_ej{+mvf;D&57XFrx@zeY)4T$mT7U5qRza8qShag@)BARA+I3ZO5E82RWu5HfeOM_2?Pm)Iss8SD^`0tvW-`_Zn?xTASw z{ZF8NFT1`1k1A#|J1mxvf-U8^w_VN+laz2*j3V;qf|i^qi$X`9$vTC4O`@=ReE1@OI5_j<$xl16Zr?6D$k9t9d!3c=x zTqETP2T@<#Lz;#9!$#c>!dud8)I;>~Wzs0|BYq4zBp$&;+~f+1k3+ckr0mBD@;bS> zuuI62FXFaIbHz`@CvkUJ^PMLZ!j9~Gu_qdc`wBAm5ceaB$B^D54->wFrIs1|=jcoR zm{J7?SoN0PluLvG5D_)=bA($_3BO)y;d&0Yz;`pQDS$m85bGWbDYkZmJ z>cmn}Yv34?c-R`1&C&s*##vk&5uY+Z4$ zHIA8~Qz0FKVn|vVVMokYF#mlzxN{I%W6733F|XGILl~CyAT7WuVynRWnbEz%n$MDw zMp!{el~1>t!?pDXxN4Dp=mN1IE`f9oG&vO8;T!C{(hno^seCZm*~r zRuAiKSb(KC56%`@0@KuHTyD7QCD=2gkvMHt?wO3E+P1H zwlzH)+Jt@nYr-WCS}kwGyDiuN3=Tg#HNeg_tv^7(NxN_zb{%2+tRYU!QX;mx4m%#? zd)yJ&E4bA4K{y%C^`Yw{{HN<<`1{oL8U7PoOxQ_R1n~)qTTtBGy0k^#?+(lhd^C55 zy>p-9me!@V%W3a|cRFYL1li#QOJ^1q2Ow+F-ihxR`>wBCUjrcFo7-Gpg%hw2aYxt* z0MWqU!>(@ul<(p1M+S}!L@Nfw=W_8=-#yVi5(o$X+#Dz1VV|JTwLY7~^*f`}F>3{+ zW7>3blHKf55P7swuyYKZ`z(JVm&Imn7sd6r>y(p#38**({M#WQINn{s@y>;XsDGME z>PBwtCT^azbBk`tEsL_-#kY6E54Yxqb1OSg3}UPc#V~0;rnoc3ohXJWaX-a5^$C~w zJd=5oVCJ$Nm|Y+v66}(C7yyq17RTz};3GiFoO381WVyKG|K)s3n=t>gaKcpELj;SK zu`Hb9>Q1)=in~E7O$3-Wosrv}wV9m~XfwB~gS&Z1tV4GxQnzCKM~$St#Auz6nyT6b_TF3F`u6&J^@K9kE1N8;|0~>6-L0q`CR@u zCUPk(3_QY*kxMwQGz#{xjKD2mf8=Os6r2pwLKwi>gZ(_)U>}v2{gyMK+zcpr3>|{# z<~)G26|8O@7hCZ<>5X?geG4NH{D!|V(06Y*lCZg)4i=;i*`FUuJ}B7^#glx1euOkr z7y$VHDUA{~A_gh+gR=2PUbpjytkxhrDGRm+nMec42eRd3CbuP!KyzTX*5e?uPlBTe z;wB4(ZEFx-Aka6m=qwYrAA=YMvAN$mZjFPjGSFOWPy}0`WJjp>2WtsrX)8M$3(A7< zO@$|*{r&KDv2`iy6)u?=+z%3wB|?pWGZ^<;lb9~Sb`}<-8(aeIgNWa1udKwgQk&RA zKf7uTaPGBUX1^|l%ag2q&?zPWj@fS(Ift^Ptib00<#8rGTeCiwuMcf&?Eqq2Nw(Mg`8iRR%&PGTP`B`OxVcMj=1jNsz}XPJ_N@S&Oa5 z!#w(=&7;?!jp>2mAfmA8LE3R2$))&D{;(1}ygL?>!k4V#FhE#I4rU%~0Ob>p8V|qxYI7rTv7;iT*J%Be$gj*pYY5l)x ze8AC7k;ccz7O3#8z!oshpyqG+C&mX1CD-Re4`A8yf7SQ^tAiOIha!v*usp#20Lz1(+4ulwqCrCOy1)N1v7wMGr9wQ8NZ zKwYRVQWvWis7urf)url1>N3?*sd}+`iMm`}p{`U{sjJmB>ZR&s>gDPc>XqtR^(u9p zdbN6udab%%y-wYrUa#JuZd7knZ&GhoZ&7bmH>tO&o7FAqR&|?tyLyLur+SyVUAf`DY>Mr$3^(pmf^%?b9b+`JQ`nn#pZ>#U9@2UsXgX(+gA@zOruzEy2s(zq;sD7j# zQ$JQeQ9o5bQ$JUat6!*Js$Z#Jt0&ZN)Nj@ADEN}#CgMI60-PA^)BY3>pm-p~gD4(M z@eqoKQap^};S`UccqGN6C>~Am7@!LtOYu00$5T9k;sS~%Qap*`$rQs_Or>}l#nUMU zOK~Q}vnZZTaUsQXDE3i2m*OIdiz)U~Ttaav#bp$OjX96v`4m@BTuE^i#Q}<|DL$X# z8j6DygXLC7@dAn$QoM-b#S~va@e+zJqH_fw`RG6%?%#Wz@ODBei%jTGNR z@y!(9Lh-E>Z=(1%iZ@fdh2pIgZ=?8jitnKKPKxiMcss>+Q@n%XofO|g@x2t^M={tv z4^aFd#Sc;ZFvX8h{3ykbQT#Z?Pf)yz;wLG7isGj!eum;_Dc()-a}+;M@g9m_p!h|K z_fq^4#V=F*3dOHd{2ImkDBe%;>lD91@tcL_Vzw2)YoC8(pHJg$&8(;YLe?m(v1Y?& zZ11FMud}l|)ICI^>o?#-8Iu`rb`;3l8sdi4aO<3?@+>(qw4xT7ehcNgM3u9%?whWy zHQLAs)dogY3nvPNa?Z{!^$A)T#SS4TFM`EoAaCpcS;{{&mlq4DhQywQEW31E{c2Kp z`4uWAM^&s3(y}Mx>Vjoq+P98;k{Chr`XiO0M(e1y&b(K$&5ZgJ&^y3Z*zAbrVxAq@ zW?FsuLbI)Xnz?sCV3D^qcx(UQ6q3kpx)+*dQ526(B4C*S|6A$(K!}!*6c1ZXm>=YA z&Gxdj59h|V_lC~^YBMvmea$WgzG)PAp_FB4D=vaM&hlcL>Gmx)5!=j;Y=jZh8JpG- zenYSgyFVbR`G0367GTL9U@rziX0qd+hA?cvw#{UQbBEkQb5&G-gCo+1|Esy50Q8eh zB-sBy84Un_PD@B7`D$$hucYx`~r~+=i7l&akdk}1J7jGt^>=E_Q~^hhz?jcqU*E3 ztA9lCf7euK7D1bF4ZCaLh;e|iw8;?vM|MX-Pmwb{$_R60K1{F1I;J6S_iVSig!BjK zt9VDpH4-T;BFT9M!)}IClbz5BP**ge&wo(!&t#pBs|l3Ci>M%(gE3a50CYqE05v#j zj)(c8!90sdemQflIkXdKg4};Jp%{96EK05af2BwxJq32sJzz7W3H|;}!)Qa3hN8I) zGNq~kVI;gDtfbuo?Xg|pS}&7&AK*7+Gg#k-pz|Nm?jBtSbqii7{t^Q9)L zxBrs%O=%=|BCHEfgf6jPfB+P!i-PgL=iYl9z3Uvm9P)w&MhbXmYgB~WdbV=W!LoJ3 z`FoKT8aO8`ldZw|j-INO;q$E;n|uGmlNf-|kw#AVl__vLGh$4dzNr8TL>d553XwT> znbA|U(TQAb0%j678eVr-#no|MZaBP&$`5a%^1@3PW4xJ)gU;GSK=TjZ=)lTGjMhK1 zRM$6=647+GbIRG)iT`FEf1BydpbFZ#j6mlIbV4>i%P)n5Ou#igiq1_Qw~Bgvrqu69 zKI{x}f`|^!SOxeds%?KM#VH{!MbOX?W1X`9Rf`-bhxvam^fv@gP9M?n0_C|v%-8{?qANI?~T z4;b8L4n2gm!j4jXBnyO4_~f4kzt{2kZRa+=dtZv@w$!K6rz5JI*)Xp8b-n^{p2 z;gF>t3j2<0LfZdfR5c<>*)5tT;gd;$CX<`=$`t5AdlwLFE@B6&{TsWipy8ybNnh{T z7n&2InBjk^x6~$RG(;d5HF*|2oBo3ub6pg!(cS*vQ5c2h`Ax|2Uzm_lVV-&oU_?w4 zCt&gqQJw4r^@Z)E`m_OxUcECE1`U;NfLW2oY)D{Rk5z zE+9kvFxUcj0c?+miW9{MQ8f_Haq63@*_lJ&1S{AmH+CVs90)dp*u&d8LIP(;2?a-Z zI)+#1yhea0mQ(w0L}EY!MQ~Tc(b8>ZM3|tn90)_}6464ENv4o!&T1m@qk#@3ifFKy z+I>^_2P~*I{D4JO$X@*b@>6R#%3VtC;QFv6gAB-kh%)8>w@rp=cQ;Mc>#`(>Hy~}&*LV@>D)NTp8ZO0#vj8y zlqz_m^ku>>ZY&3z4*AiL7yFj9i~9j}C;4D@&w}jMi7W|=yIfo&`yqv?KO|iBfh4Ft zkUG^%JkHI71gYK9Hq;!lZF@m7*Dl;!@^LGDUU1WM)Skq z?bJm|U%>}CwRMn4btUq0g*@czi}~_8c&GJDd<<`dU1omK$Neak;JXRDRTbW5Jz4Gw zrzy3&A6||yi}Rtraw!@BFRC5SU4i?ep5ou)QQm`P>CUe{KdhN4Z8Q5iW-8-u2uV;Sr%FynVYGWlJr<R7_n$Bo z;O*m(_q*86xqXTy6E|mxHcKFF4bpp0Tc6pvGf-^^q~@}`F~j=Meg}CgJ45baYXD0s z8V;`_w;+um2{MPfLXI@#)3Fq}cneY*czDzKbhfJ>@{AYSImrho2GTrlL52+^L;r34 zZNCKlK|9fzKn^v_7<=1V#!`rXu|9!UoLi782Z{F|z>CdU64MGu4F&|>4+#c6;K%~K zT0dW}(Sv%eUZ*e67wU`j#rg&M68%DbseX~ZOos!M^^5gO^yT^reWkuiU#+jvFV!#8 zFW0ZouhiG-SLy5YtMzO2YxVW|b@~SVdi@4{qkf})lYX;)i+-!VNxx0stZ&h`>f7|& z^*i)C^}F=#`rY~teW!kpey@I?e!u>J{-FMl{;>Xt{;2+#{pBVKd-rn|oBCV&+xk2DyZQnBp#GkINPk~H ztRK;j>L2JI>L2OH^pEvV^iTEA^w0I<`WO0_`d9kb`U(9T{agJz{d@ff{YU*L{b&6b z{a5`r{dfHj{iOb<{+Ir@eo8-Wa0W84K@8py4AGDb*-#9Z;Wku5Gjzi+Ov7Wu8SzGf zk!U0t$wrEiYBV#_jC3Qz$TYGHuaRvuH(D4ijdP4v#<@moqm9wlXlJxHIv5>|^NdbL zj*)A0Ho6#HjXa~9(cS1_^fdB~UPf=DkI~oYXY@A)7z2$##$aQJG1M4l3^zs?BaKnU zXo`U;4pI#A0Os%e6d$Je2*pP!{(#~SDTaA@jN*?e{)FOBDgKP&&nZ4m@fQ?-N%2<{ ze@!t=bKvoBDTcZIJ;gsz{3FFbQT#K-zfk-u#lKPfJH;SXPEwW^{TIc5Q+$fz)0A+O zAWASLgc6<-ffA7ti4vI-g%TGfZc0>2G)iH72C5e3@dk{*=wq$Hn`UX=8vqz@&1Dd|T^e@X^WGLVu%lnkb1 z2qi-)8Ai!)N=8sJl9ExBjHYA^C1WWWN6C0fCQwp9$wW#fQ8Jm5DU?j5WEv&YDVagZ zOiE@^GMkb@O6E}Fqhu~6MU)g%;-{p9l2S^_C@H689wqZBsi35ik}669lvGo4J|#7j z1SzSdq>hpWlq{rV5haT$xqy--lw3&3Qc5nOWEmwEC6tnjDY=A_<&>xrUN!DOpd+b(CzNQc2aT=CHGQtA0_uw@&F|d z#&P`mp&oRv2i?vt@Au$79(0EXCwq{|Zou1QiC$`U_n$k9v6&{>rZ*PP5EB+nFq1CDfK_@{ETFM^#&2{YS zPWCavgU&ZE@!;kjw9ZU1_n0$1aI`QyxZQ&mv#L+AAEh2-c~FH1?ew7KCN=M3H%mOI zlLx1>%a!coSr0nbgEH9VE)TlGTtp$DyCH%GCLG7oC$K{@Pl zhzBh&lUd0Z*w07VhfS*S9@N2u)_Txf)qS@1f+M4^=y?Lxas)rpu z4DSu**FVQT;O(Ypb({ymTUGh>x#o53>oE_`HhXw*iU-X$uVMw_J*dA20qU*U^Q|7V z#e*_EIMuYV$?@Q3>^=-qOZI&etCG#GZeSm~*~ez~F~Ng;?E4Y+@eC^kAN=}z*+)kY zy2yjNvCDhl$*Mgbw9tceR>H@TRmvC z2|TsLT<<{u5x@RM_VIuzm}^6L=s_O#XdL@^+=JuUcPA6R(CX&q zeh)g&gAI0XhY6+Em=D`ZnHz3)v|5HOcQYr#ayPp;KVTcXnP+xmFJc@pcJ4el0F%9e zakH7n-n<7#a*u@fAQbnnDJp~4NY%V)_B8Wn4Ij`kV3&jw(tH-;WGktD@hhcDHEi6yP`OmOM!7|~LwQ_zR(V-@OF683 zrF`eYF1IVmmEuZuHFuro%5(K{4R#H69dNzpdf#=#^?~an*T=9W=yTT>u!ZM@>s#0N zup{SZ*Ke+quD{(JY-@LcXD@j=ec{hd%63% z2e=2jhq*_($GFG4C%UJ&r@Lpl=eUd9CGK)}g*)J`ao4#QxtF*va#Qzm_bT_L?kn6^ zxvz0w=f1(c-Ti?3S@+BCSKa&Eue;xLzwbWc{=j|0{fqmQny99$?bKdsAGM!4Kpmt` zf(+&|$WyL?9OVU&pS%?EkXJ+Y@mk0{egZOr4?}+M3H3Kk(Bd?&)?7PRYooQ(I%wx< zowOV+PwTGr(1vJ}v?$K~%E!sBi4(%@ON$myg4eed+lrHHWJzh`I zo9XF#rta07>*wli^mcl8eW*TBpR7;Sr|U(!U!SK}=v82e-2nF2Ca}G>hU~7LU~Rnt zR?4%SXN)%rj7i26W12C~s4%LGYNN(jVk|dS z8taT}jP=F_;|AkKV~_Eo@v5=Uc-?r@c-wf_c;7f;d|-TR{9s~}H$_u6U1q$QXm&I^ znYm^cVB7A%kG;%3W(&Mt@TEv|b*E6nHoIkEKt|G1~t~#zJt~RbNZb96VxTSHMx9(Qlt{c#V* zJskIF+>>!n$2}YOa@?zNC*ppH`zh|1xZmRbh&vU}#p8HAzH@xn_@42-;`_w+iysg_ zG=6ye$oPrzOXHWtFOOdtzdHWX_{-z3h`%!an)vnckHqhae=7c&_}%f($G;T+O8jf_ z@5UdD|1?2MFcK0Hk`hu9nkA$sWG1voI49xUguH}-34;@cCJaxQkT5Y}TEdKkSqUo> zRwrDMur^^`!Ziu&6Ru0xkZ@DNEeX#g>`8br;iZIE5?)JqGvV!ocN0ENbSG+wafu0u zNr@?m%@WfSvlCk+o|D)%u}9*N#9@ge5=SLYN}Q57J#l8@(!`4smnW`FT%CAn;@ZS@ ziPt1vpSUsc`NS6zUrBr|aev|)iEkyolXxicaN^O#PZNJi;*-QAImwlzCM6~%CuJs` zo75($XHu`EK1uzO1|$ti8j>_DX++Zer0S%aq}rqfNsE$}CM`>%Nvo39ByCT+H|hSQ z2a_I7dNk?Dq^FafO?o-$)ua^h?rjNq;1rO6HPrvXtB@IXAgma*yQv3wLGqI1rOC^ZHzePX{6z9I$-9%EPkteJZ}Mx&`;*^D z{yzD~l(dwLl;$ZdQ(C38PHCIcE~R}+PD%wJNnbwI-FOUY&Yv>UF8tr*2IBr5S4GYSyY*_h!?Z zRW-Y|*{#iXG~3(k?Pf=t{gtMqC8ae_Yo9hGZ90Q$E(tD)mr}s%8o<29dD!n?rCcQ3wVfy0qCFxt!Z%@B7eS7-O^!w5uNPjr}(ex+M z_oVMjKbHPg`l$>d!;{e}qjg5xjP@DlW#nX(WCSvnW~|A$DdVn;hch0{cs%3DjHfep zXY9$?oAFAbnQ~@QW>#j0%)HF*nSC?+XAaC9oLQB*G;?+4`piw4 zcV|A4xi|Cm%r`RM%6upDK<0ay$1=alJdycL=C4`tSy@@_v$|ys%o?3FA!}0Bl&oo4 zGqPr76=oG@)n#3nwIXX()|#xVv({&A&bmA6fviWf_GG=8btvm_*72%7~%k9zlbU-h2wp7fs1#@T$fm@Q|! zvej%oJ0-hKcDw8j*?HMLvWH|3%O06MCwp#oadt^|S@x3b<=IzcZ_K_edwcd{*-vGE zo_##~%j~bSzsdgY|I~Eee@z`=7gyX`9CdG-MfM^DLPAK$AR$2ZAU8m+_i_UwG89Fe zh}=u>bnk&$cimcNt=77=YTeaZ_g-~Tt>g9czMuE`;haC>oacMK`vDB;-Rw^rl1+j`*rK~bmIjfR2l2y$b!)jtJW36DVWUXecWo>2cW$j}fX5D5z zU_E9%Wj$xTWW8d&VSQqM%kIJM#qPuI$L6se>_Rroj z*)!O)*lXGA*&EoK*jv~q*q7N?*$>zs*`GNrIB}fToX(v7oPit`N5o0yWN>mhAr8bD z#Tm`1;nZ@*bLMlJILkOII4e1;IqNt-ayD`fagK0~b53!7=bYm_<__knxEb6KcNlj9 zm*FnqHgQ*S*KvR3Zscy}Zsl(0{>0tI-NW6-{fm2_`-=O9`;PmC*Pb_s$L5K78eRs^ z$qVobdBwbuygJ?t-Yni6-aOs{-df%s-ag)b-T~gPyuW!jdAE6YdG~pbcu#oG65#3uM(OQJ|uih_{?v?kK?!Ix8b+rci?}+ zkLP#hcjbS_XY;vyDPPXl@U?s$-@?!2+xTPob$pyp@~87>@@Mns^5^px@|*a}`9JWt z@VD`I@OScm<6q(5;@{yv=Qs1;3*rQ=1#JcG1sw&+0*yc~FbFaPW`R{;6J!aT0=K{` zC=gT$mI{^$RteS!)(L(TY!qx3Y!&Pj>=x`592Q&^wiUJ)#tXX$y9v7sdkT9C`w9mM zhX`3hkuY6o6Gnt3!Wv&9MJ1wAQJJV*R3#cE8Z9D3v}n3$mS~P>zG$oHf#{Lw zx#+d%t*BY_Ui6>nljw`MrMQ)NkXR_ziqpjDVx!n3j*3AsBrX!i#KXkH#UsR+c%OK` z_>lOR_=NbB_;>MH@gL#~;!ENy;wR!SlCF|(B|Rj)Bz+`F615~nk}A9GOezk@;moS)Qy)wpzAUwo$fCwnMg4wp+GO_KWPG?2zoR?78f{yrcXZ zc^CP&@*eUexmvD~>*RX5QErl3!t(q=qCc z2~V1tG&^Zt(!!*(Ne`2nlRm3^tNW=3s)wjqYOb2E7OACbxmuxCsgu-twLxuCThzH~ zml{;V>X>?%dbqk=U8Sy8*Qn>K7pNDjo7BtIE7fb%>(oE0e^cL6KUTj`zf!+dH>=;P z|5JZXjwO#zo|rs2xjwlec}DWWXY%#rzmsn#-%Y-s{3T^b3O7ZV zB1w^_C{t7^>J&}N^pveB+fsf?*`2aCWq-=SltU?pQ*NYu(X`fd(0rrmqUomTuIZ`i zqsi0MYQ||MYU(ug8dTG$!8N32rRGn~bQ|G46PhFV0B=tXS5A8rLN1LX#YHeDtHlWSZ zMzn?6q1tiU1}&+buU({Fs$H)ALAzSJPPgRYaV zv#y)2pKgF|kS;+d(533qbOv39&Z4vFvUJ%xr*62eOjn^BsjJr2=xTN2b+dHGbtiRa zbr*G)bys!QbT@Rjba!<3bPv*6rVUCPoW@GyrX{2a(pSSb(Ra~z)A!K#*7wyb^d5asAJG@;hw5QHqA%8$>PPCQ>8I;w>F4U_ z>lf*l>X+&F=&$K->hI|v>YwPJ>0jvo(Z5L-rQ6c&>DlSdba%QhJ(!-CUX?yGeO~(F z^rrL`=_}J$r>{-_(a_x>HY6Id4Nil{;5UQ}fT6$;Gn5!g4U-M^2GsDqfiTd9xrX_M zb%qUw&4z7;pA5SV`wYJrel`4UxM{d!xNmr5cxrfV_{Z4Mm~J#0twx72$LKV=jXq=0 zm}dlx`NrYK?~S;TGEOtjG|n;3H!d>nFkUiVGu|}bG2S;mG(I*yHNMCw&1lT{K7-6) zGG=7V&X}9AAY*IBgN#QR&of?Uyv=CNc%Shx7eO1(-G4#(+P8&d9ZninQi8o1!l2XYF3!-=85LX<_0rv zCe5^Ynt7&qj(MJWfq9YnlKHjyjk($U!Tib6!V+g`V;N-eTKtxEqg3KTMk$bS&mqaTTWT-S=(AWS-V=hTYFjiSo>KASO;6{tV^s*t;?+| zt!u37tsAXdtjDd7tuL%^tj*RB){oZDnJqF~WkQ+bGqKF3%oUldGS_CV&)k@~C38>a zzRdlZM>CISUdp_Zc`frs=B>=TnGbBOZEbArZJliKwyw7Bww^Yr&1v)5@@x@Xp$)V_ zwjx`x?WH~5-r3&G-oxI@-q$|BKFFSI583nWL+wTOV*4=raQg^*rG1zEqWzNns{OkC zhW(cPuKm9KbJpN2PL?1`oF&UrWF=-LWu;{8&$^uTch;M%=By7{pR&F<;vAhE@s2)@ zevW~TAr7{K=P)_Uj!Z|EBirG0cpN@QnS*xBbj))sbS!Z+IhH$qaIDVuWmjfbWmjj{ zWY=a-$ex@%C3`{k-s}U}hqI4mpUgg;eJ1-{_Jy2^94d#-nVvH%XHL%ioJBcHa(3oi z$@weicFw(=hdGaPp5{Ey`6rj3Ys}5c_2%a1BDod0<8o)^F3sJado1@{?%mu+xo@3q zo$Z~SoSmIroieAvnc=iJZO$xbz!`IvIEOpSot4gd=Pc(O=X~cP=Mv}7&flG9o#&mG zoL8K0U2R?MU7cK=U0q!wm(Hbk8C_%8m$aUCt&UM>$*Y&{l$o0ha!QIK-+1<_E-QClj;Fh~>Zl}AzUGA=OSG&i!$GS=P zVt12!g?puYwfm_1iu;=ThWn=bw)?sJizm+0#?#Kz!PCVv#KZRRJbaJPljN~_?4E2- zuE*sm@zi=IcqV(Mc&2(5d)9e2cs6^sdUkn^dro=Ic+Ppwdv1ANdER>d^?dMr^mg#} z^A7Y5@v^*JZ-&?8wR-K|Y_HSn_WHaf-r?SIZ>4vXcZ_$s_lWnH_q6wt_nP;H_m=mr z_ks7Z_o?@}_oerPuahs{*VWh8*WbtWNqusk!k6mP`O_F8^!N7n^$+n2{35^DpX5*Wr}%UH z1%A*E`w@S!f1IE6GyWO=S^l~H?fxD9UH-lP{r-dgL;fTFn}MEz-hm+jK|mT%1XO|K zKx!Z@kRC7wOo8lxKM)Lr0$>0Nz=6>LEPw~7027!ISQgkC*b&$j*b~?nI2||}I3Kte zxDt32cp7*S_$Tlt*e2LM*eMtv>=GOjWCwXceoz$D1=E8WL37X=3-^Gfon z@~XqD!fV6p!yCez!`s3?g?ESdg?|bE8vZSOG<-aKGJHCGCVVb@A$%!(C44P>BYZP_ zJA5zvApAJ|Ec_z;D*Pt=F8n_HU-(n_3lImi2HFDcfsQ~t&;{rQ^ZxDKG-407e3% zfw90iU?MOXs0SJV48Q>rpn++?3}6;82bc#e1eO5HfFFR>z*=BEumRW%Yz4LhJApmG zKHwMNAaDpc0vrQQ0H=X7z#qT`;1X~JxCZ;a13pDs zL|R4KM%qU@MLI{iMY>0NM*2khM+Qa)M_3V2L=sU)G!b1yA2CLDXKi@+sd6Sx9g39bg$fg8Y0;8t)4xC`6^{tW&C9t018N5JFY zN$@my2K)oO2wn!Sg4e+t;7#y0co%#IzJ%Bi58^{YNCL^BL`V&3ARUwr86h)dg=|n3 zlnv!VZpaJyp%4T>`ClorY#=m7L9^c!>(Iu4zJ&Om=a7ojWA zHRvzsCUgh72R(ouL(ia>&}--&^e^-u^a*YO$HA@Pc5nx{6C4kBfxE%o;hu0GxIa7y z{to8AJeUs)VF@gQ6|f3UhBdGb*24za1Y6)tI1A2(ov<7B!hSdehv5iZ2oHse;9|HG z9syUvqu|kS4O|OPfG5NCa0A>36EFoc@C5lY5`Xc?2LCALq2T4GLhy;-%iHI7}AUY%+ z$v`ZK4RIj3h#T=CK_raiBT)oG5Tpbdj+7%+NHtP}j6)_Ob;wi%LvVybrXe$tImmou z5wa9nj;uu1AnTEh$QEQfvJ=^Z{EQqx4k1U7#`rN&Od3bSDINGC>>F{t@Lu~jp4;*31#VJqso}FBW1VB{u?12VH*(}F>=JB5vNC7E$>}! zDKGfCqj9|=zJgPst*EN_zG8XBPZjqn1(nvy&6OuB|ETI+HK_*H`fsFZ zgg^)3T;#4Ny~FGp^><*bZZbV>8DVkDWXA z(AXEXSnZ73O|`$*HjisHPB_ju&Nr@l+{W>t@rC2xPUty7G-2U{trJd7csAkv!~ql4 z6U`G{6IV>!H1Wu!!IM%ZQIpnA=6vl)iR(;t{<`YAALk^j zLKH+Hvc75It`tH&PL~<3(>{sQgk`G5?zh1 zMc1Pn(aq>KbO*W%-GlB!e?fmm52MG>6X278#CBu*u>IIU>=1SYJBFRWPGe`W z^Vmh~GWI8S9lL?u!tP-Au}9cb>;?7;dxJG&AFz+um&UlpHjV8YJ2iH0?ArKkW6#Fk zjeQ#jG!AO~u94H2&?smWH%c4jjfsuA#`Nz$<1O*lcssl!9*=j$yW_p^zW4xqFwVlc zI3E|`Qe1(n@MJs{Ps0tk3Af^QJR5i79^8+IZ~!mBK^(?o_%OT-ufRv*qw%r$czhB* z1#iF`aRR6D>G&*sF1`R?j5pyc@KyL){6~Bfz7^kr@51-u`|*SLZ}?IC1b!Mni=W3Y z;aBnN_}}<#{2u-ge}X^9|H0qj&G-lW6VZZbMYJV45Z@48h;NCWL?5C*F^Kq%;1CIf zkdP2^B9TxN8bU{;6B&esun`U-mv9q4B1nXZd?HFf1VWS$!-;aDil`=Ph;hV3qK=qK zU<6K3#57_iF^8B>EFzW?%ZZi58e%=Mk=R0PCw3Bhh@XiA#3AAcahy0soFV=oE)rLW zYs3xW7IBw&Ks+X%5ig0?#5>|W@sapK#*uBv_GBlrGue&oLG~v5kpsygB%9=s0#Z!M zNF|v>rjS}vPZ~)xnMr1mIi!p9k^wT0jF5%oP_l?DCQHc?WF=s4W){xVycX)qN=GHY63NxnnE>DIK@!2sJYYvYAN*twVGN-ZKAeP+o|2ue(Df) zj5Sx&D00#6CFplqraiM&^_p0bbopfJ%nb{Jep5S zXgQrot7$E*r;W6kw$ctdm-f;D8laCk^a^?v zy`J7kZ=-k6yXd|20s0Vqj6Ol1p)b&v>Fe|@`ab=Leop^GzoDDy5A-J{j%mZRXF4)n zm>x`TrZ3Z<8N#p`F2iSpjD%4#$&7~4G6u%PSQs1QU~(BR<7dK5gaH|ti7~^NGNyv5 zW@?xT%w(p4X=Es71~Z$P$1G%;n3c>LW&^W{+0OjL>}K{c2bn|65#|_kjyca$&1v`*6oPGe1zxA@67q{r>OkM=p1JvorHN^UPDfvp1=(y3*B< zlk*P3h#(H}NI(W;LgrBk(;W4#N@s0RLW8qzbV5meX+CFn zM8@&`x@YMZ%SswbR9tNJ8&ufeG1F02;J#^>joW}EWI?&81L}hEQ4iD;^+f~F9cUeT z0PR5!qrK>H^aOemJ%gS{FQAvvtLPwl4ZVrpL7$+r=u6CF0b8()tvC<|;ZPij<8VAq z!s)mj?u0wzA-D*Sz@zYFJOx+bYV5?*unO-eUIeeV;Z^Xu8n46a@jZA8-io*5hwvW! z1bz}fg`dL*@ay;u{2qQEAH~PZ+#}qh+&=CxX!jiVGWRBT6yANn9p^sgzTnPsUvlT+^N-w5Jm!tOi8u2$ z-k%TP!}$n4fzRMG`7FL8--++c7x3Nr{$vh6fFHsa@niXM{CIu>U&>G6t9TdRz&G;O z^RsxBr~J+Qe0~wXlwZxS;WzU4@b~iD_#OO%{2u;s{t5nh{ssOe{uTZJ|2qE;|1N)= zKf#~mPxEI5K?oFrgh(M#ND@+oETMP6}s)&xLP=?}Q7& zPr@bPHv={hgJ@6;eufZ3s3FRbU`RA%8nO)S4S9wxhI~VTp`YP8Lw~~%!$`v@!$d=g zVX~pzP;GD-8VolWW*g=jsNqJ#Er#0+%M8m6s|{-m>kW4sHXF7W?l){V>@w^%JZ^Zx zu;1{k;U&Y%hSv;-3`Y!a8Qw={4JQm|44)gmFnn$J#&F*7qv2P>MZ;y07fqsB^b^y? z3^7y85_83NVtcW(c#U|SI7l2RP7sU5$zr)!D>}t#;&gG2I9Hr6-Xbm#7mAC-JH)%h z4dO;|v$$P+P<%|>FFq^2A|4Rm6c3BOxyKdOb?iL zpw6aUriaXZ%qOHqX__=$njy`Uu9s#>H%POkInrE7m8f*1G*7xox>=ep-6AcJZj}~F zi=^A6+oi?Q5^1TlOj<78A+3;BN~@&R(i&;4bf>gVx=UIw-7Rg9HcIzMo21Rs7HO+= zue43NPr6^)E0xQF^oaDRv`>0WdR%%!dQy5ydRlr$+AlpT zJtsXcy&%0Py(GOXy&@fuUX>0?uStib*QGb4H>JbU5$P@IZRs89UFkjPed(z5f%Ktt zO!`R7k&a6zq?6Jq>0{{==~L;n^qF)<`ds=#IxBrCos+(jzLvg`zLma{zL$QG&PzW^ z7o?x0pQT@*{!ad0{y{!3|0rLOf0BQef02KcFUptX-{jxr zKjg~_Qm{f4PT>_nF({&9R7{Flkray}D~jT$SQVS%uLLN8N{|w)geaj(m=dl;D3MB( z60O82b|qGcQ{t5bB~eLIl9d!CRY_CQl?)|Q$x^bF93@w2r?gk{lnzQqrIXTG>7rbv zT&-NAbXBfZx+(cefzn;+q4ZRGDZQ0GN?)a)a-Gs&8K4YQ1}TG;A<9r?m{O<|DZ`Z! z%1C9DGFlmBJpc0{Gh_Yx>*Oi?a~Z*4|d(*8c|Z+=zuF>g9-~uOC2s(<)q5$%7&SPE6d#9!M#14 zwYA_AfVbcpJE(9_NsYtB`hoYo>*2$6XMGiGrT56b83W@%2kb3;q1|w$f!uvN>sia* z&f127CAB5xj{0J&bx`4mN|;ZzV`OD*nRB{6Z#NyD?n2s_Hyd^|4C|QD0J9jU&qcpM zC6v3H5(_2IQf|F!q9k24P_mzr=P1db+&UGhA|+{*yUQQ(E1#z1`L|#}+M)I+56IO> zWaOxV%CRpxqE4tYjFshTsIROoS9u_!pbng_(h|n5x6oDSYIF_iI!a#$hii=frWX3x zjJl$0Q8#Th1~xX70HK9iFQWz(Hoeiw)%z(x-8Z4`sM`dXNTaL4S)+dmoa)!ThqKgK z(zF_EYQ0cz)CU&A?Yp^D<3_!ke(1W*=sMINbpzIT26i+Ihfy63`ke#OAhlqZwI>>k zhM=Kn7%D_XXgC^yMxs$@G#Z1(qH$(3T%;n3Zbb9YP3UGcAKii$pj**GvJ92G>h0T30Fb(6YHJ+J<%UQ&No zFH?*t7AO`eHc@P&IE3O*in~+Xlj7bK_osLu#e*pxO7RGa$5K3=;!=t$D4s%bJ;g4H z8z`Pe@eGQur}zen=TJPCVwK_>DZYu~`4lgpcp=40DPB(T3W`@zyqe-Q6yHe+2$Yc$ z^E|8kgN1w4x!gKqu0?JY&t=}i^@svdz!Qu(5PQ! z3e#Edm4UpwqyM!p2GL1`zly6z`?@VT$jC_r=!WS+jCGXV}~2=FHBp z&&tbbmtoKCJbU(WbPlHd75W-|gT6)Iq3_WT=sfxnT|hsfpV2QMqZiR7^c(#B16@W( zFvbLPOmV`bwFwtn13*JoH#q8H7dROA9JLLg+5HC<4sq01I?F0c`@yyPX(iRb%I=K~ z4bEEa#&+7$Hr?r!8IQP^R6|cdlBZ8#4KSq6S>FH~!M#i)fL4vUp0Rp5s!L|VhG?2! zJ80}Psy~naKx&ezSi`JDjaL;lMzyOE)&o}L-}joKmy508y=oe(ffRc~MZLpepQO#$ zUgKYx8QIb0W!!ef!>NS0zMRI)}DRP+eYE&tvDLTU^|XQ-C!`iHSpNOS!S#q z(_vaoGCOW^NtL5mXNXJhCIKgI#)dNxk8jw;=1PkixozsUnU6ssH(1o(zG1*aH z?@`L}Y8iIme2|EulKOH-1H92?2i%FGl5)^n+EmpnurPVBeVAQouXfO;&Zf_F_+8Av z;0jy`wxpxlX&j^0-m}tG2YVB2TydSVZg?GIgWfafVr|a2R^`VGZm4k7Gsy!9V?NJ7 zJXI~&0_)+z4Y(0F(OJD(z4q7@=wZ~%Y(~u-JXf1*m!`R1Wi^gz*P)}mhqKyQ@A|Wz zZfe%kt$3l<(=|;!b+!79E~)^{0NeXdJ6h7LqZN3i)={^nj`FRcqXt%1S2KrP-&kw# z+Rb<^zEg7!-98-%SjkLS0PU~d>@Kuv6ZjL|^iOx=4fo;=c%w%NX#T_y#%!-H0440P zmtJkK32(j^Z}#c~5KEuihL<_&8Y+A&AKnH#`F_~RePAc|Z?%)rNBBX!vuP(Mt9{je zu#>^U&YIP}Q--~Bd))+efsNY!ADAG#4>smD-2^ceuBq?qV0-i_wk8!cHaIg~70&5) z*pQ9(NhS66%3Awm2*NU5rJ%@bL4}vWCJc6H=Czo8qkmD%ZtzkEz8&6=pVgeVf$Ff9 z)IAT>y@+4ZsC!-=1a^6_I>e+7YN@AQ!-tym)K?Ur)GcraW`Q+5_0KIZejCW&--7(1 zK>omDYjh8YP^vP)WH}qlEA0JhOF-XGbJ*R1)`U9HM6Tk}ijvxLN7+@)i9O~fwx~6+ zCxF;f_+yRO6Y6jvc7!_8qz-RM?C1E4CSs3K{Fc7dpp?6G{Fh7pEzo+b1+Ali)}mr- z%J4eKTRZGM2J{=!eQ?3Bp7!Y#u)IS`Tn&y%&XW2vyH2OeOXgvG0ao>Akk~OGv6U^? z^aQ?$FX7*s$gEJus^fr6ZO!t)p5(Uc!02e-nXMmqO-Gs6M6laix1?!5FR5){J~;Rw_8Fzsm311O8TKl83oc@Y-C1uhshw$eGUaIp&)446 z$X=s|-&w#7kMlxgY$krpSxIVgRxFX=zY-hqCjlgo1d(78LPALxs2gp<%%x)bvaqhC zl!Xi02j;6VUks`U)y{Iwb179PSq*B5I&nndOjwVaaizKsuC)i-0R2aiAl#3{K+hv9 zDjOVXY5$z8j{1LHkfz8;EU|4OHq@>8loDV{i6l%dRVS+sbt3qW?#`Ro>N`N1TG~Cw z-CqXD+(I&S&q%Y(?2g`*j_R@|9Z0fC&Q_A+@rc}urL`I3nps;~+yJ-a`iKNoB4&x)W}Z|q&Qy{q>I`+}-{s8sX5=@*ZKScK zmxDHwJkrI73FFCZEtHtV^geV@1&gKoF^%f=6I_kjb+>0Sim`*u(!20rAILm%lg5bI z>iibEgv>`Dkp<*dvJjmj^VK<^GUuwQ4Vz5r99?Td)J7IVX74ky44ov)LC~~7ki`+Y zTT22ci7U2-fU(TW0eu5DlKHhc@V@a!S7$H!y1Rb8lg4DP5kH?PaTvm@k5 z;K7a-c4QHdz5oQccPr;0ytQ-Cmd%VIFOV037@{s#m$$X&ULgm_tM1)<2t;hDKO}sS zx=h=pOMLgko8&M#0{dZy`ii=9Y~RW@Sf&c+62D2lC7&U(m4XxSa`>}$)wfNI|kDXDc- z`;2v%d#i?GI@wOHf3V2#%>x3IbzTtcuDo_x0*(myr!T1Nv*ax*i@(iLOe z>)udW*KDJ6gyw@I7t@Z}c$-oT8b7gX8pE7i{yaEM|(*xr|xv(bJBw5{}ZuPh(T0*Ct+nxNU-ZU47F2l%LLZ``_z8BcGd4isSvNN*> zIWzBE4|6FfhGQZ8eIWZk_{cGr$z^fbKBHF+t^jzu1onuortec9ECkVY8xF3QTCjs0<@#`axqjSr zTz_r=H;}x*4d#Y$L)8`PE_ILku=<4hr234yA2#fB>I>?NZ7pUI+R6?0*|fXWhxGkA zVTcyTJ8Gev0&6!k@tm-493RxNuM)&1- z9XFM$2afMkA6Fl9t7NW5kNP2O=BBF!8$l-*L%{C7o2|&doO)aQx``a%Zua5VQ|i+? zzaZ05oX?hey zr0sh*G~+hA_jwPmM-{RN5|qZjoNQZs+6{8`kPn|;QeW2jG-_yLrKW_3P8|o!#B{vF zy+&=hF`U`gjp0(bXJO_Wo1B;X)K@(_;stP}xEDF1zNT*Yn}lfU%PXrJ;kGvCa0IGk zO_d9n!}~CYH`UjhcIF#Jy~-*Zn$#cn7WWaz=Qms8$yiE3Dn=U13XG z110gve2UKmKZOz!HmaxfSwd9bV`eFA>mqlW!JS?HTR{$wxlJ^5Zbe&d#7ei+CxU#NcD7U?6rUGqJmPPW)=rTXCg+uT&I0Qd} zlh_-|XrLKgT2ODVa?I2-Es)R!M{=wdAj8F)5+DERFxdfw%mhLf03jD4CDO{f_H`}# zL*u#7_(^E|8&K1rnGoMR9V82C*otTsSnd?hVz49XAHz#QIruoLEP6`E5Pm)Ic5!pwQp~G%m`Jg;gFB-& zWLUp}1;a+$Q)(*9%Bmfi;GLFMrT&fd7C8!}Z3X77P=hHpOqcUSLM6m@T zU2pW7+ePEp--%vXy^()Pk6!s_`2E1K-Foz@CQ+=YP^tH$SY|vkkM7y1V=|zs)>gd( zRFzLKTIOl&L)~HiAn@#vno6-hBQUrHbr=%8{9*oxCJkDmm*N1510mI`Z#75-=5}z4 z!$00?9|Ca)TZ%&vBh4Qwe7&8ejV`;s(1C$p=?leLWq*%^01(i=uVbym+> zNB9c;Vg3xz`30j>TgU=d7kiig5-I#S{wsp{ulaBIZ~5=|@3p+d2mBBGdGsOwBY%Pa z2^0Qj{ulmN{vtZX|Hl80^Z7r}N&YfAC1C8}e-b!>FSf=23ZlNGyc|LWy&B123%#B7 zgPgShQz)s1WJ{4=+=k3mUq=ZS0=V<|>+5=O}bkLq$zXGuGF7T7*EVixrPc zp>D}Ck1)i@%CZIsjl;AQWMfS&%lp?mT$R_e;TvW$5JhO~yZSmR%PSfn*V3oHQqRT~ zTO+S9Z*9_0CMjasSjbz#APgBb%sE}}h2n6E^ZkeAvvf@)#aVz!vB&2d^;Bv+q;s|Z zD2{+Hx@xTx;`4L$s~_s+Ou>L443nN-LKGB^R0%Gq^_V<`!tB-qMR5@a*Myuv8Hnq9_WV`jC_$pu;M(s{NH z9AN3E4~1YMLUF)(2}O!!xA!oPYZ5km>w z3VhMWj~wkDzte0jw<{zIDO-dTz3!}~$+eNaa^XoB0JZ`6k}hPxBtiQCDe)A?!J8B4 zT_GEG{d+&zJs zK0*(tXEV6{4xyh~uvxfH=r0VQIFaHUit|1c1|dZlEDRBb3d4j#p-31m1j8O3DU1?E z3uACUVXQC?cJLVx>V7V$U4x^^R=a6CvLrZ5$Fr>kfQz1x&u5pQxz-qVmK%u#ZmOrz zz>*o-Tj->pi~0PlM-cdIij(5=C)6Hz79o(sjQIS) zK%qdW(F+9>r?Epam$-WcoWyEgQ{-v9sHKXFLb$5xIIjLQn;|Nua132$VLUu4S&gjyDVQ zgQOLmN2&|sMq zUj>V5Qp>=L@+8HDCjk5dN%8pn6rB(?w%L?e@l4pS3E(7(uVDfh>@HP#2hgV1>^9*= zxa}pKl5P}Vt41a11< z2EoJDVXfH8qCbP#AThQgE&8Llkm4dO{(}&OC4{?l(nFMg>XRA*(PbFB1y_eNt_~}< z+TA%}2=eR>22a({c`iE?xAls1Gg=K19vVirqJcTq2D>5F*RdW&@#tobb7ko<4KAu$6XJ3w6=HS6hjqjMsXFzQ(G)7i+~MIL!EB~TupIJ^9Wd1bALAi zHcZnaV8aZ{N)E`Z8Ziuz;M1-c{`!0EKyewYYJ;P>@&=jFf<-2> z%~K>$O4Gy0HNIaQ=1#$KF9l6^gfXLW0!zAR5P=pchQo$I&~O#o3}vk4^sy{@g}l)u zhr=g1#1!K1hP$*C_=Mt_<7ztnc2>uVRq zv&ZUarxu_D7!k5tI%z-plE%I`=;4OH?>C3>exT(sAbKDpg@V?GgiNs;W#tv8!-fcG z_Y9+XBx^XYDOv|0DC{pcT|PH(0dT{M(D7#0{$_AcTPPZDTd47J0}Tf?7VM|^mf@@@ z?6a7M0fio8I1GIS!(kYF>nOI|<-j3t7l#e+z;N%e`7L7OEomvoP`ovKXgJ2Us$RUM z_%@1fhw|;;#)lg|1!;Y!<(6E`WOWg!6A04*q{Yw!fZXya$BuR91WVw1?}Qo6gAHG4 zG(Si2GVq@oYZ={;FDUSy#&P+wfm8yGKL8tMFcR;843Gw8(bHPRZP;XnQdwj81@35M zcdQ((wQrt`WjgL1k8CXRl@0g?u!y=if&b$>_ch!_(Wpt|M-;Dx92-cimfdeH--ksD zS|ciKW!AwYh;Y*CCt8sr+C+abKnxUv#9%Q*3>Cw~a4|xR6r;pwF-EkDv0|JUFD8hI zVv?9Frl3o>pO`A9K{Tc(zgd6^T=RT%hpiB_F`S7W-~uLc7-&V1RW}5MrBYla(;RMC zm)?*l`qnH7e1?f7JxK6w{xVo2UF$qVK$^x z+A(BKUe4?mm>v

0&3A7y@|uW{NMn!*=m1C>Nm9a1!Gq7ORR~`E%$!I0nFyK)cb0 z;m#QEUK0^E2?j-W!tGtJ8T4BzyTIL zi{>bUsM2!>;~V~i;zucdgzd(yCb$Cs_Iai@fK3gYNzdmYYQeqeh&W6vGzj8wexe#d z@ivMd06&o8UFwf5lm|M7FN$Ntv24by8?}Ps`zXHOsZTa> zy+XinpY<%Wsh>}AA69W?ncJe|dU2L7CA%qps2L@2Xu^YW&CRk!@ZR3VU+A* zlw7MPb72AM09(ZLs0WD4W)Hqf{q%Y$M`+V8ZG>YHfN5pBQLh_ifnY-b!$5AjQ^+=5 zJ8+Bj%$Rs9wr}<%4OzqXzOn5toX~L^#d2k79^u4^w=c z;&0xA-M0eU#g%|BT_vs(S3^v7n(*Q}mdGk&CW?sys37+iqWB4lA5$TpxrNE(<7^N( zUm@PD@FIX|^xMuu z$u6i)8wQCF;S}**#c%p}w029Y)M zz%%S6E_<0{a%HWfjN$TGLns#1mf3r0t~rDrdS#KhZm@S5)W%-N5NItorAFFoB7p0? zq`g4#iyqQ);ebKA91X7BfuXf?t}MxbrxzdglJ*kQj?b%QqqNM7>#CNUNE`W>_>u3( zuTXrz160)1fqu53eHRve|H&r$6u7$AJM^oJt1mOI<`wy%zZ>AZmCGHx=)oG}ImBtz zC7}8%fR!cXfV66pMdw5fi|1MW*C;;JY@+%pguhhD=V7Azyc2z$P4pm}Xqlc6VEWXd zZR2`4oeq+~4t8hRSp>$uaBH(nUB6`(u+8p*GnrNJwG$LNsA>SNm)WZw;CE=JHS8|$ zX^pHAaGDG@Sj$ax37^n5(PeED9Z`q7H_=Bvo5;O|j64H)1Q-qY7{A!i5z#o#UgJ$=+M6u;kc3&EiPqt$5BR-2uDfGzY6#qTy{u$c1i+__0*{>iZbV<<5g z4PGX`$C&swW8zF-CdRRlDo$6NtZb_>ri7Ka)w^1W45QX=)RQu9YL8OI}?Qcj?Ajd_~5oKOe3#pUZZ#H9;3KX||KYW|?H zt0BVJO@)Kyr=TiJF*t7{DgL6Rm^=@R>tXDvi3uwcgP43w@h6^aRy$^=I(biz{E7Qx z><^r~+RM358Rt$h&fVPH{b_Ov;DAU8oDuOH_R%+=u8m7ebbSoIj#eqwJqfnyAgReV zt$t7lK5PDv`&Qs=Ng32~*wGXC%I$G5p{s0YB{GciLZhDFaZ~;o#b=sP4uaC;Q$UgH z3f_@%EKuInOZn%F^3#m+o=h^_lhf+ouoLth!NeTA2$!=y%MO4fkeCWEF}hro>A)gA z>(g4+*~CkYWxh*xmf|n9i9-^VEmd2A$Q#K&p@cKJ|(`H*?8f*o1t$QE*?$MPq!ErLYLq0R!V4Q87!;%H? z{Dbc({*mIAI3#iwn0TXc9%G`GG61>%p5h-MWpJfMz7?2tgO^$78MD4)%-TLcGiOZ9 z^yLO`0*nB2bw{zhfD_!tnIMepX(pNOI*MjUvh4jPYYftzhh&$%-w-CifCq4Sd{3rM z9AJ%@;Q`fI$`nUsEu^n2%b1T{S^)>7W`gnoFq+#R^;Ii6T3k1`Fu#_2K;yzP<8ogv zT%Z{6SP=Fz$PgHb&fd-cCjo+SEpTVHmpeZ*?)=EOvleJzT^EB*a+I~n zjC+ime3=2LfQuS4z-4D4b7rm^oW|-uSN4yL_X9WPc)4+japM=p4e*cHYU;=1K#zfk z)Ru$9vWZPzQWoH+b-FcA-MCv^xkX&52NPpv<$1CLS^xrb)XVZ+*mQGqJAtM1g!>Tc zX_YfAy{LEfsBzyW<39JpEcE?W-Sk}llLfEJD)y<gpT4@;!|9na2;;hi0>=BNORb+>uBcPBw0UrM%cZ7T< zE(4@{7{0*uh4WMSVn2QbIf^s5p^#}(E+*B#t!<;uixb_+gd_fdumbH5%$w%!M1LE~Z3gYP220g5X0CW2ulR zNd)llE;zApwfY=$mmxv}9|Epts9!KY|1-6p`ZdHXPz`~k?S1M`>ISBabJT^ff{YgZ7Qm981n`>X$Q-658O#*a5LC##w^v81M?htP?gl6c9LuOxA)Jb3 z-th;JApj!)TUhN3*H&szn91z)X7yTdjG3o2Or4{CseuK-Rr*A& zf_Phnf-?lFXTZQhW_BIm1DU%He>brZ_B#z0Qv=5{Bq(D-)<}zP@n2>^$$T-!RAzFR zCY#Dx7SvQ}nqsO#mrT{B8dEJp+W->EMoBy+NtF1pBq8yqM4=?nDp8U^iB(GzYB-!c z$m4;RlGg#0QaeC+LYgp;8KMGj+6WRw`bk9=`a_P;Z81%a@N5E*r741$%+u%wl4Dg* zCc<)c26HSLH>;g{)A~JgF&^l;%5_TOHY897MO0` zVuCCPdtL{7DvBGdbQHad*|QzqLr3u#^r2}HfTql*#ik|bq-iOp%0$R(2al?n?0_$%;|wY>CenDtun3NYFga{ zIPid_9Q7Y~rXu9Dn9N-`-#wiTK9c~rls<_w#JHeT`6zFX`s5$W4;CNF2K0ywV`Ed65G{2Y}5|?OWpN48)Hj07Z_5{ul2H+HO zR_q63?dLkd%(g>y3j!b%gP(_j<#wSzKE@pZ2k!>{4D_DI`okwc@eU_vjdSoIZ~)J8 z9mHiI(uc@AE(QLM$InC0gTOSv%#BCkuKD{u*N3SWP$y+j4w=7^v~b+iv%Vzhkecg zkjR^wPYj-M7z|dW^$z2M;@!n=|AkSs2+lx)iiDJ7EPOwkQ5Fk@ra>?eeEYUW7Lnoh zIjsLvOp|Vb69_Pg(=3K)WJ=!*SxYv%bwC*O8_QHSkftT#w=rVfqG;}?iQ)>6B{v!X zUU5SF$YaTcj<`>AOK!Ycx8%5?xg{6+LuL&uIfww^%MC@sak7W(5UYGGxwwpc_E(nN zXc0cWk|hTb0b6dEV(jL%<-!2tyw0~BT z3z;E*u$e7qmVC|MwB;aAV9x)6*Pw&!sDOfzc^mQ6S4xRo{cNa-nEO3fdeKQVu5K5hQYe8&8_ z`3v(|^Oxpx=C90Oo4+xCYyQssz4-_8dGn9v3+A89KbwCs|7yNyzGVK*{JZ%N^JNK1 zSRxXK4se+gIA@YkGD&7hk}Q%eDUzRLm28r~6d(mkK~k_3B85s}Qn(Z$MM_apv=k%R zrC2FWikA|kL@7y1mQtitDNRb3GNeo?OUjmVq+F?;)LzPyI!GO*PEu#7i*%KAwRDZt zRk~K{Cgn>7Qg^9`)Klsu^_KcbeWiZVby9z6fHY7VBn_5^NJFJzQlV5N4VOkpBc)N& zXlaZzRvIUbmnKNX(nP65nk1Dq#GsqloU|Xosu4u z^rWO0CA}%>LrGssKvi5vNq^qDVab?F(nfzDWPN%C8d;W&*+gwUiN+=~aQgE!uO_bbB z$$Uy~p=1Fiw^Fi@l0}r(*HZ$%;08)IQgRO^n<&{#$rehsQgSaP+bFq@65z&mN*oK{-X9Q1$&BiATSktN}p?< zBe`%nNqat`y}NUUJ>|-eo`Z%1*n_t!OCi+*v2Du#tk?$K-O{YP|FuLk%p^{KI+cc) zwx_g((St@Q%^LkFqk3x`>dhYS;_ma`6jfl%sjWKt4?m*^#tiY1673kX{y2!#aSUTW zq~2K$59ozj|J6m#Iy;mo?aYI=Yz_4KHKT-aHfoHZFm<{${C_BQ~em?wwQ5oMfv_5-s z92^R=r!b&Q>e!|S^JI1az^KnXJ}?t_Y(VN5?W+{Mr#qVMz82YHhB9N>(Eo0JALwhQ zqTDCp;c|Vm$^MsCzMYR=WXPnyez+UVG{}ejO;6^7>!r;o_>Vv?V3def!m3?hCqaD0 zq+_wQd$alcOZAlML+qa(riQ8IHB+B|lb>UCiDd_tp^M<=!tXBa!WZGK$o5pwQ%5lM zl$qCDxA;B?1#VAoHnl%JXbi0ro3&|a9eb< z?pr<~2pUBC^xMYQ<*j(}pAxnnJ`-t8pbujE$}n$Vq3i?)K78a!&t>~IfJX)Sss}*m zX_&@Tw~#RN1ndcEvPlfBW>0a~px~Qk`}uD@l?QIpRd9-ryA;`MfplHuDUHJoHO)5G zf7)F8=ze&daqy5vSB2d@zm$S9{b5?EPHQk42oF=Qg{Q6AQ9slG?`z;)N?XrgLqJ2c z2gT<#@H#U!D-R8NG~oVwMX{Z?$P zYDV;b6vqHl>G&5UT~T>8Hk;;u&rynMrS!aZFB3#579J*RA71C#8q6MopYQWfU?6&1 zv$_92Tk~}94^W2DKH9SNVv1ld3933 zA5($hmNi@8=88kB_A}7Qe-j_U*yO{xHXlO+ZT?iaK@Qs7tzOqc+pJz*d0+|9vG206 z=NrML2U=~U|93ZnZtDS~?1_dvr*nahr&`hR{}05Y#mZ=YjgOu0?DM`o+i2S369I~; zSIOM*xb7-5I|ALc;fnqp`Ea&k;(yxk3~4pu|2WH(;G<-&1YQ9awUx5@=Qt1OD5;s^ z`;!q{MqvMHv;bXe`=~z`%purEt9TzY4`0}HvCyA3p-D<}H_P+bI@U*XIy}B)^FXS_ zxCvgV({mFU9{epNf80msp=;k1MYA3)w+#$^rk5{zyOiueTEUD?zj?9ho-4&qR zM!-pHIN#};QH}t|zp=^hZ|U+s)@-f*zw!_Qn{mnQ;NcAjAo1DSw2!gvK%eA}TY*p(+MKgrClHp_w`m5fvGi3jaPrJ0oX|foCLHa{Nx`%D*#ln)B})&U-Z-9kqj6Kzu)JBi_`#- zYCSw%!;6R1k&saJH2?%sJ*fhc(Vrn}e%FAIA#N<>Xzk|%r??T3YN3XS1QbOm1MUDc z@dh^z5~(4EQ)hLn?g6g{ z56Qm6g8&_`fk1C(IHjKOgNz3N_5{C=2tVJr8GdUKpdz;bP6Xg0BN^oLyb62*B&dnu zL;%#Np*@!~z$bhD86c(@Is{OE-PPVI@EY)*(jd{;*t@k&I;`b22XrvOyMQqimAR zvLst%Syp5}*(%#)e>p%7l!N48IYbVX!{l%|LXMQ9|MN=+@a(2qaQZ9~i@svxT zTq5O?D3?sR6w0Mi4t|<8opSI~wV9O5qFgrRawwNexptImPq{qGb)Z~F%5|b#XUcV< z+*OpjnsV1rt}ErPrCc}47_H8{WZw>UW(DSK07Xe}osru@{M5 z9Lip9VK4Wwm&rC9Wy31_dOv#!wBa=C>ox*6@GE=U@LcOE_U#r) z4ew%qpJvy#vUjo#FSB8*HNb|avx~XxMf=U+ZPq0=+|fp$^YPXNHe78Z!R*WJHhhB( zZ)0!oWiJn~Zr~?AXWDR{4d2Qx^|v0fVUfMNj=kJ$eZ=!Sd%xT8LUw7G4JWd{kJ|8U zHk@rE*RoHWtn1mIhgpwdHWFgPnKqovE^V-3Xn_|**zm(PJj;d^c2%^_hl{toXCvCj z0XBRSyPU;d*4l7_4cFQ5X7;nA! zHNWy98+Nh3o2{=|=dm|C*-M3WnLpx`avL6JBQTo>t(~potkl}YMq+GuxeeFYNLL#P zWo;j~;VrDYSoQ)8PPM|SO|oH)$5U8~2W=#Z{ViuN_uB}x*S!>|~|HoVwI?Ckr#He7GRx3jlTSr6K9fsKS&-(;hQ zS~uI^5vzEob)^kI#2SFG;RQDKZnq6jV;{8DZD%71Hj-$=AQ&k&3?gtdYqNm8?6Tq6 zHWJU?_Oan;_IC(->1TtUa3>qK*>H{xgIw_|2SSgxfXwkL=i5kt^+)#c6&s$x{=Q^g zYQwkKuqHlFz;Ac4(P3F&G5M8y*~=p~yht;vXrQtVeh|WKVijEbbXbdtY!ztLI z#_`5V<8(L|xYW4A_=NFw<4NPMCeCCv`I~}Fp{58^w8?IYHzk@1tEHsfTHRX_RSTQ*uY zS+-lAvbBfOa8Z)MJ?R84#xQUrrh@Tb2Bv)_nDw<_oDax{ z<@e=N@|W^Y@-Om5`8W9w1uI11l_(`eNmsIzTqRHGqzr-Iv|pxdQ=U>@Q%)$~DVO{N zzW~2Pzjl84e!cwq`1SMa?>EqIu-{O>LcigDBmGAEjrE)8H`{Nq-%7u`{WkjD@ArV; zPQNGpUi5p_@37woexLb$?swMj2fs^JWDT~)SW~PWtlh2sts~&5O{KNYdV}>=>vHQ_ z>u&3F))%ZVSzocfYCU89!uqB4E9*DbZ>`_k3^t=pvMDy3EzLI5w#s&&?FrkPw&S)l zw$E*6ZRc!X+rG7ZZ#!?hVEftjtL>8QH{0*?*8|=RI1=!7z`FtO2Ye9lNx->)9|GZ7;eq~vA%XV5%)o-cA%UX< zCkHkJULUw9@bZCx_@?0b!Rvz82X74C9DHx^Gr{MBF9iP_ z{A=)~;NOEUhv1Nmkgg%!LJC59g!BrT6jBy4Iiwu2qoG%Y_75ExIwEvb=-AM@&>5jOhb{}<5PDDO=FqL7+d}UT-5vUL=)usp zLf;8J6?!)Gn=md+2ou9hVNzIhSbA7ySWZ}%uD8Xg`V86F+pExaJSM|iLB zKH>es`-e{qcZRFsH-_I7K0kax_`2{N;XA{3hwlmB8~#%GE8(w(zZU*__*>z}!jFf4 z5`H@TOoU&AEg~QyFd{f2BqA&#A|fiHcf^p0VG%_UBO*pcjENW*F(G1Ngfn7B#H|sF zB5sdZ60s~|XTesAk<%h)L|z|xQ{?TDOCr}q-Wjcyycqu!7DAnI7u@u;&==c4)Opy-h3u;_^BsOYPruZg}kIzPI5bkFGC(LWt#(WfW zBIZ=g?=hF{*v{DnyTNX>$J$5ON7={N$Jr;?C)y|3%j_=uP4@Zr1@?vZ+wAM@8|?Sk zH`}+`ciQ*aAGg0~f7yP(e$al%{)YW$`>*y(_TTN7V{t4OE5wSiQfy#saBOyLZfyJ5 z4zZnLyTo1{+cmaZY(Z>~*j}-HVk=^$`F#@5Bw$2P>yi@iB^XYB6SJ+TkRJ`($A z>|?P{#6A`KS?uSrXJgOBejWR5?Dw(fV=u)15$6|YiwlSgiVKOe$Hm2^$7RN4#pTCU z##P1D#MQ>t#Z8TK#WluFk6ROWXWU(JcgJmv+Z4AY?(w)M<4(t&iTfh%Y}~oHuj0Om z`!4Q>_>lOp_=xzZ_?Y*hvMIje?R_of}G%&U`q%{2ucV^2up}ah)PIGNJ+>{ z$WF*j7?UtAVM0Q2LP^4;gtCOm2^9&;67EP?nXo!xZNj>Q^$8mi?n$^e;o*cw680rL zp74CaiwUnJyqfT3!dD63Bz%|fL&A>Icq8)>k`)|Zb-Z*aa-d3i3bx8CBBh( zIPtB-cM{)AJel}$5=r8d3`xc$bCM-VNeW21Ch6Lw{G@`U9!WiudMEWwx-O|IsV2#p z)Q~hSX-3lZNjD^|NLrP&FX{25CzGB{dOqpJq?eNpBz=+eWpY4rP;y9eXmWURL~>Me zOmb{;PV(sFvB~3;i<3)|OOqYR<;j)FwaK%RXD821rpXJFZ%ba1yexT7^4{b}lOIcd zBKfK0XOdq@emnVS^4a8b$zLaboBVx>l44EqPYFy3P6G}ol~R-9OqrVE zN@+}4nQ~9co|L^QkET49@S8AWs>rw}#R;E^^)}+>@x>6fbr=>1VeIfOw)K^kpO?@r(jnu=bZ>LFVk!jIs z_O!UP#I(G$UTJ;O`la?itH69?p0=<6y?g zjIS~cnQ@t2Gy7#$WKPeVmpMQ4*38A3%Q9DFuFPDMc~9o{%m*`fWg=R%$MQ7Qw;&~q8SsSx9 zXWg51f7XtyU0Hjwp2~VD>y4~WvVP9GnDu)$%I31K$?lsyG`lQ&YWD2xMcKD!FU`Iq zdsX(D>~-09XWx^(H+x_9Bjbj=x%Gdiav zr#fd=&itHZId|u5$k~*$HD_neLpe|6ypZ!^&MP^mbI#^`mGf=R4>>>P{G9V!t|?c_ z4av>O&C1QmZ4W==(Il@(EwRSl6)Vw@ z#F)tT-PvB)UA8f^Ku;h$vPx zOk@;UL^hE_*+)CU}++RFM94j6w9x3*V$BD;_Cx{Eglf_fSCE}oXhIp2Ep?I-)lek*ERlGyI zQ(P~;BW@Hw5dS4^62FqPlC+U@ko1%cmJFAuC0dDIVw6}U9?59Q7)gdCQ!-8xl6)_j zE154@C|NA|S@Mfyx1>h0SF%rXKyp>uMcPf;L)uH)M;ap?ARR1qNNH)RbhLDgbgVQY z{Xx1&x=F%FfF!%C5++%C5^^$cM{E$iJ4y%f)h; zTp`Egggjk7R-P@-k>|;$%a_Sl$SdTP@+$cO`62mX`7!xP`6+q5{GOt}VxVHMB33a} z5vTZE@uebD!71h`7AO`fmME4fb}4>U)F}2U4k!*P>J-7%8BnGxCo7AUB}%9aDVHf%D1TH|Dyx)hls_pCC|@dHE8i;LtD37mQngmK zQ*}}GRmG@=syX`MepRL_Ta}~ARZUQ_Do!P+%2d--i&Q_U)~hzDs#V)m zwW@m68Pz$}@2X3xyQ&weSE@Ivx2g|Vdn^VUfDOWiU_-Hym;p0k7R-v-F$$xxR4ffk z$0lRNSP2%yzQJZ-%dv87CAJD%gVkWCuzKtab`HCM-N#;I|6%X259$``w(7p>81(@4 zAa$&IxLU2&stszBIzgST9;?n$=cx146V&#FOa>#ggj8=xDk`$VVJCFzoNX}WY>wysP!M^~j=t6Q(zq}!s~t=prk z)$P|k(>K@m(~I;{y+V)awR*kYq&MrWdYj&%_vr(AQlFyF&}Zrk^+oy;J=BNvoL5S>T>4NF9 z>9*;PsnPVr^wiwK+{)b6+}_;L+{N6@+{4`4EHTT>3NvQbnssJ_nKTE@$Q&|rX2JZe zd7Al|rL(20rMsn{T(n%aT(jIr=$Rl&kR-?wlnLqtO@b~VIiWNGCVZ0+PT&*D5~e0JCH!mcWbJD0 zVeMt@YmKoEw8mLKw~DM1tHo-yCR&|VkCm|ct-wlIr&vp^&>FIGR^A%1uCUfx_gN2E z>#Rqt$E_!AHrrTRmTjCZ*EZ3XZ<}PBZrfnnWUIDqv+c0`V%u%+YaeRY*!6ak-D0=d z6YVa0z@BVRv!~nh?UU?9_7Xd^hwPla++Ja?v{%`GvahpmuphGDwcoQpu>WOmvOl%| zlL!+RCoWA~p7>*8W#X#Ds>IsFn~Ap)|4eL5yr1|e@v%eVz#U$P-;wM{anO!bN3mm( zV~Jy#quf#9Smmg44tI*3HmAesawa(mr{9_C9PJ$MoZ!rN7CMWarOt)U#m=S970wFh zO6Mx)A?IP|QRfNgDQAQ8tc!Imca^&;T&rAbTx(tHT>D+OU3XlKt_QA1t|r&t?wRg& z?hWou?k(=^?j7!(?t1s%?q}}j?w9V@?zisu9;rv`v3im`DW1t5*7Kcbo@bF~y=SNA zi07E+r02BfjOUK$U(ZX=8_!$MhotsNF-ZfG1}DWP4NEd7xssCbQXJyn;4IGLW%yKl zIz9{k9-oUZz!%|5@a6cAcqP6XUyHB9H{hG_YJ4lc1K)}7#%u7s_qXu&?^N#`?>z4^Z@G7+ceQtox7xeaTjSm9 zJ>aeL9`&B^p7&nxUiMz|KKH)!wf1%OiF|6G&S&&ld^VrM=k@_#zV92~x4yZ)<-YyC zL%t)v=qZvt-v??E%r0<;2cL3_{vbOK#KchC#;0sX)LFbE6*pMYT?4tx%VgArgP5CI90 z0R>P2HP8VgFas;F0|#&e9C(2rBm)Z2U=&CL=^zU5f*g2AI=79xZAy^ESf)$_wRDvq77OV#w!Dg@(>;OB#F7PY(4eSN`!9h?5j)LRh zB&Y{xz&Y?cxCE|%>) z@8o`@g|w1((m}dOob-_ak|a||h8#_%lbK{TIi8$A=97hF5jlk{B@r1SIZ`0Y$Z6yZ zauzvmfS}kBjI7nbd4*E;XN8NG+k3Q{~i3YBjZn z`ia^=ZKk$TJE-5NeJPJpno^#oJWqL<@+RdS-HdKYx2D_C9q7( zbR7K!J%S!di)k6Hq}8;JHqsW_MmuOXjnh6lKqu2FbSj-jXV6)64xLBm(}i>~T}mUG zrFpuHo<`50XVY`(1@t0%DZPTOpjXjr=ymi)x|-fb|4i?q_t3TUe)?$&mEszlKVsM%G_Of&b<7*IeEwOu1%Oe zVRh8bES|_uoIP>d#0U8)`J3~9FBn*0EtpwQS+J*|zM!$-!=!$b43knPZJ*Rom|9p= z7%40-JW+UKa>vOdCm)}Dd-A)YHbn!AeKy5C^t~?cm3-BkT;j!Je=;>P{5sxBhDw>XFqS70bTo7#bUJh^hfB=P-Eyp=&#U|(6i9Lp;w{* zLhsq;>_==HwmsXC?ZS3vd$E1l{_G$&mL0}^#tvt{V&ho}D`!=#hSjqsHi5OXPS(Q` zte;J0Q`l5Cjm==Q*c>*G&1VbQVz!h;EX(q289R-g!OmvqvJ2Qn>{50GTfwek*Rbo@ zjchf$js2P3#qMEi+5PMx_6U2NJ;gS#=hzGEW%e3-lfBK}W$&|(*e3QV`<#8rzG2^m zn}u73TZh|4VW7_8ZqX)hpKwfgV0cJ)XgDsqWEl}28QlxX!pg8Ztc!+zEn!>O5jA@7 zDE0%Q^CBiZI-DNP43CTEwkL)sMR}f*FpSbYTsRV)zf2F$3eO484=;?4a+XK^m&z#B z_EU7lvpHIj-w_S8{~9f$?~5*K4u_9LNtXKX*=U>kQuu1L{(LKZCt5^)7=?fSj!tJ@ zgkOi>hCf8%i&k7)?qjYK*OlwR_2&9<1GvH5C)}spaPBKEo|ADHr{^qOBIn@<&d*WY zC~gdw!DVr|+(fQ`E9Oc$#BrR!P2*;8bGRS4rQ8axf~(}Jxb<8$w}acs?dEE@z1)88 z5O;(-$<=dbxr^L2?iP24yT?7`o^VgO=iF=VJ>QIP$9Len@;&&ze1CorAIrz_pYvbw zVqV58c{Oj~&Agp=@*bYx0Z;O&d>Wt0kK-rsg?uqz$|IiRBmB4gcl=ELdwv1GgfHh; z@~ikNem!5!@8EyoYxr7zA795G=TGuy`1AZl{tADMzrp{(-{$Y~_xVSB6aSQd!N2C; z3oV7#LR;Zup_9;E=p)1kgN0$jXTk{KYaw0`3kpFa=meu+6%qxPkR*78fItegFiIFB zWC=M!o-j$6EKCuC0uneu5WW?@6J`jrh55o_VTDj3R0->aO~MvoyRcK(Ez}76g~P%z z;iPazI4@ilZV0!8JHkETq3~FECcG5h3LhfPBdsItBAp^#BHbgsA~BJHkxwF@Muta5 rM#K?yL>tjXY!OGq8SzJwBV=SuBrD3CMPG{+|GS;4{&)ZXj}-qOd)(0e