<pre style='margin:0'>
Ryan Schmidt (ryandesign) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/85fa8cae213cd1eeffae59635dc87c36802c1332">https://github.com/macports/macports-ports/commit/85fa8cae213cd1eeffae59635dc87c36802c1332</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 85fa8cae213 cliclick: Update to 4.0.1 for 10.6 & support 10.5
</span>85fa8cae213 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 85fa8cae213cd1eeffae59635dc87c36802c1332
</span>Author: Ryan Schmidt <ryandesign@macports.org>
AuthorDate: Fri Jul 10 04:19:53 2020 -0500

<span style='display:block; white-space:pre;color:#404040;'>    cliclick: Update to 4.0.1 for 10.6 & support 10.5
</span>---
 sysutils/cliclick/Portfile                 |  40 +-
 sysutils/cliclick/files/32-bit.patch       |  16 +
 sysutils/cliclick/files/fix-comments.patch |  40 ++
 sysutils/cliclick/files/legacy.patch       | 850 +++++++++++++++++++++++++++++
 4 files changed, 929 insertions(+), 17 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/cliclick/Portfile b/sysutils/cliclick/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index cb5c886011b..ed4ed61f7e8 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/sysutils/cliclick/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/cliclick/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -4,40 +4,46 @@ PortSystem                  1.0
</span> PortGroup                   github 1.0
 PortGroup                   xcode 1.0
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-if {${os.major} >= 11} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    github.setup            BlueM cliclick 4.0.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    revision                0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    checksums               rmd160  c79e26f413cb829c49e92cf45a5cab2042bd99dd \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup                BlueM cliclick 4.0.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision                    1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums                   rmd160  c79e26f413cb829c49e92cf45a5cab2042bd99dd \
</span>                             sha256  c218b3356a804d768d5f074fc64eb1ff6842083bf476a80b363d95211deff59f \
                             size    35710
<span style='display:block; white-space:pre;background:#ffe0e0;'>-} else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    github.setup            BlueM cliclick 3.3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    revision                0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    checksums               rmd160  162ca21c43efe6dd2a1c7001d9e5929d0e150fb3 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            sha256  01073a7d9793aaffb586e505d725dc1ecaf2dd1c57ab3c6364a67405d5aab12f \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            size    29991
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span> 
 categories                  sysutils
 maintainers                 {ryandesign @ryandesign}
 license                     BSD
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-description                 a command-line utility for simulating mouse clicks
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description                 a utility for simulating mouse and keyboard events
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-long_description            ${name} emulates mouse clicks or series of mouse \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            clicks (including double-clicks and Control-clicks) \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            at arbitrary screen coordinates
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description            ${name}, short for \"Command-Line Interface \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            Click\", is a tiny shell/Terminal application that \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            emulates mouse clicks (including double-clicks and \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            Control-clicks) at arbitrary screen coordinates. \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            It also lets you move the mouse, get the current \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            mouse coordinates, press modifier keys, enter \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            text, and more.
</span> 
 homepage                    https://www.bluem.net/en/projects/cliclick/
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-if {${os.major} < 10} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${os.major} < 9} {
</span>     known_fail              yes
     pre-fetch {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        ui_error "${name} @${version} requires Mac OS X 10.6 or greater."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_error "${name} @${version} requires Mac OS X 10.5 or greater."
</span>         return -code error "incompatible Mac OS X version"
     }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+} elseif {${os.major} < 13} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # https://github.com/BlueM/cliclick/issues/81
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    notes-append "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+${name} @${version} officially supports OS X 10.9 and later. Support\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+for earlier systems is provided by MacPorts.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+"
</span> }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append           32-bit.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            fix-comments.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            legacy.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> xcode.configuration         Release
 
 destroot {
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/cliclick/files/32-bit.patch b/sysutils/cliclick/files/32-bit.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..05db7970576
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/cliclick/files/32-bit.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,16 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Fix build failure on 32-bit macOS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+On 64-bit macOS NSPoint is typedef'd to CGPoint, but on 32-bit macOS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+they are distinct types.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Actions/MouseBaseAction.m.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Actions/MouseBaseAction.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -157,7 +157,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     uint32_t eventConstant = [self getMoveEventConstant];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     float startX = currentLocation.x;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     float startY = currentLocation.y;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    float distance = [self distanceBetweenPoint:currentLocation andPoint:NSMakePoint(endX, endY)];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    float distance = [self distanceBetweenPoint:NSPointFromCGPoint(currentLocation) andPoint:NSMakePoint(endX, endY)];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     unsigned steps = ((int)(distance * easing / 100)) + 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     float xDiff = (endX - startX);
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/cliclick/files/fix-comments.patch b/sysutils/cliclick/files/fix-comments.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..f25f9891875
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/cliclick/files/fix-comments.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,40 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Fix comments.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://github.com/BlueM/cliclick/commit/d9671884971b36d9eda60139633c0e61c6644948
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- KeycodeInformer.m.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ KeycodeInformer.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -193,7 +193,7 @@ - (NSDictionary *)getReplacementMapForKeyboardLayoutNamed:(NSString *)layoutName
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         // #SUPPORTED German: ÄËÏÖÜŸäëïöüÿÁÉÍÓÚáéíóúÀÈÌÒÙàèìòùÂÊÎÔÛâêîôûÃÕÑãõñ
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         // #KNOWN_UNSUPPORTED German: ŃńǸǹŇňŘřŠšŮů
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return @{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            // U:lauts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            // Umlauts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             @"Ë": @"¨E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             @"Ÿ": @"¨Y",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             @"ë": @"¨e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -224,7 +224,7 @@ - (NSDictionary *)getReplacementMapForKeyboardLayoutNamed:(NSString *)layoutName
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             @"ò": @"`o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             @"ù": @"`u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            // C:rcumflex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            // Circumflex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             @"Â": @"^A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             @"Ê": @"^E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             @"Î": @"^I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -335,7 +335,7 @@ - (NSDictionary *)getReplacementMapForKeyboardLayoutNamed:(NSString *)layoutName
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         // #SUPPORTED Polish: ÄÖÜäöüÁÉÍÓÚáéíóúŃńŇňŘřŠš
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         // #KNOWN_UNSUPPORTED Polish: ËÏŸëïÿÀÈÌÒÙàèìòùǸǹÂÊÎÔÛâêîôûÃÕÑãõñŒœÅåØøÆæ
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return @{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            // U:lauts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            // Umlauts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             @"Ä": @"¨A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             @"Ö": @"¨O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             @"Ü": @"¨U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -435,7 +435,7 @@ - (NSDictionary *)getReplacementMapForKeyboardLayoutNamed:(NSString *)layoutName
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             @"ì": @"`i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             @"ò": @"`o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            // C:rcumflex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            // Circumflex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             @"Â": @"^A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             @"Ê": @"^E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             @"Î": @"^I",
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/cliclick/files/legacy.patch b/sysutils/cliclick/files/legacy.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..37ce9490737
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/cliclick/files/legacy.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,850 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Reinstate support for 10.6.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Add support for 10.5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://github.com/ryandesign/cliclick/tree/legacy
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Actions/KeyBaseAction.m.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Actions/KeyBaseAction.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -29,6 +29,18 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #import "KeyBaseAction.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #import "ExecutionOptions.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// Compatibility code for 10.5 and earlier
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MAX_ALLOWED < 1060 || MAC_OS_X_VERSION_MIN_REQUIRED < 1060
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++@interface NSString (Support)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++- (NSComparisonResult)numericCompare:(NSString *)otherString;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++@end
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++@implementation NSString (Support)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++- (NSComparisonResult)numericCompare:(NSString *)otherString {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return [self compare:otherString options:NSNumericSearch];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++@end
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @implementation KeyBaseAction
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ + (NSDictionary *)getSupportedKeycodes {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -39,9 +51,26 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ + (NSString *)getSupportedKeysIndentedWith:(NSString *)indent {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    NSArray *sortedkeyNames = [[[[self class] getSupportedKeycodes] allKeys] sortedArrayUsingComparator:^(id obj1, id obj2) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return [obj1 compare:obj2 options:NSNumericSearch];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    }];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    NSArray *allKeys = [[[self class] getSupportedKeycodes] allKeys];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    NSArray *sortedkeyNames;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1060
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if ([allKeys respondsToSelector:@selector(sortedArrayUsingComparator:)])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        sortedkeyNames = [allKeys sortedArrayUsingComparator:^(id obj1, id obj2) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            return [obj1 compare:obj2 options:NSNumericSearch];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MAX_ALLOWED < 1060 || MAC_OS_X_VERSION_MIN_REQUIRED < 1060
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        sortedkeyNames = [allKeys sortedArrayUsingSelector:@selector(numericCompare:)];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return [NSString stringWithFormat:@"%@%@", indent, [sortedkeyNames componentsJoinedByString:[@"\n" stringByAppendingString:indent]]];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- KeycodeInformer.m.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ KeycodeInformer.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -64,13 +64,14 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         map = [[NSMutableDictionary alloc] initWithCapacity:256];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        NSArray *keyCodes = [NSArray arrayWithObjects: @0,   @1,  @2, @3,   @4,  @5,  @6,  @7,  @8,  @9,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                                       @10, @11, @12, @13, @14, @15, @16, @17, @18, @19,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                                       @20, @21, @22, @23, @24, @25, @26, @27, @28, @29,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                                       @30, @31, @32, @33, @34, @35,      @37, @38, @39,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                                       @40, @41, @42, @43, @44, @45, @46, @47,      @49,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                                       @50, nil];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        // The N(123) macro is equivalent to @123, but is used for 10.6 compatibility
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        NSArray *keyCodes = [NSArray arrayWithObjects: N(0),   N(1),  N(2), N(3),   N(4),  N(5),  N(6),  N(7),  N(8),  N(9), 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                                       N(10), N(11), N(12), N(13), N(14), N(15), N(16), N(17), N(18), N(19),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                                       N(20), N(21), N(22), N(23), N(24), N(25), N(26), N(27), N(28), N(29),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                                       N(30), N(31), N(32), N(33), N(34), N(35), N(37), N(38), N(39),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                                       N(40), N(41), N(42), N(43), N(44), N(45), N(46), N(47), N(49),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                                       N(50),   nil];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                                                                                                                                                                                                                                                                                 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         for (NSNumber *keyCode in keyCodes) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             NSString *string1 = [self stringForKeyCode:(CGKeyCode)[keyCode intValue] andModifiers:0];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             [map setObject:[NSArray arrayWithObjects:keyCode, [NSNumber numberWithInt:0], nil]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -188,62 +189,64 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // be typed by a combination of keys, but require consecutive key presses. Many
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // characters are missing, as I did not yet find a way to auto-generate the map.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // Note: The D(...) macro is equivalent to @{...}, but is used for 10.6 compatibility
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ([@"German" isEqualToString:layoutName]) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         #pragma mark - German replacement map
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         // #SUPPORTED German: ÄËÏÖÜŸäëïöüÿÁÉÍÓÚáéíóúÀÈÌÒÙàèìòùÂÊÎÔÛâêîôûÃÕÑãõñ
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         // #KNOWN_UNSUPPORTED German: ŃńǸǹŇňŘřŠšŮů
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return @{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return D(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Umlauts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ë": @"¨E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ÿ": @"¨Y",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ë": @"¨e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ï": @"¨i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ÿ": @"¨y",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ë", @"¨E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ÿ", @"¨Y",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ë", @"¨e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ï", @"¨i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ÿ", @"¨y",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Acute
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Á": @"´A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"É": @"´E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Í": @"´I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ó": @"´O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ú": @"´U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"á": @"´a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"é": @"´e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"í": @"´i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ó": @"´o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ú": @"´u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Á", @"´A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"É", @"´E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Í", @"´I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ó", @"´O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ú", @"´U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"á", @"´a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"é", @"´e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"í", @"´i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ó", @"´o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ú", @"´u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Agrave
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"À": @"`A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"È": @"`E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ì": @"`I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ò": @"`O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ù": @"`U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"à": @"`a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"è": @"`e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ì": @"`i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ò": @"`o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ù": @"`u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"À", @"`A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"È", @"`E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ì", @"`I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ò", @"`O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ù", @"`U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"à", @"`a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"è", @"`e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ì", @"`i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ò", @"`o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ù", @"`u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Circumflex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Â": @"^A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ê": @"^E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Î": @"^I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ô": @"^O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Û": @"^U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"â": @"^a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ê": @"^e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"î": @"^i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ô": @"^o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"û": @"^u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Â", @"^A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ê", @"^E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Î", @"^I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ô", @"^O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Û", @"^U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"â", @"^a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ê", @"^e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"î", @"^i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ô", @"^o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"û", @"^u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Tilde
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ã": @"~A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ñ": @"~N",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Õ": @"~O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ã": @"~a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ñ": @"~n",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"õ": @"~o"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ã", @"~A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ñ", @"~N",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Õ", @"~O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ã", @"~a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ñ", @"~n",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"õ", @"~o"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ([@"U.S. Extended" isEqualToString:layoutName]) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -251,363 +254,363 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         // #SUPPORTED U.S. Extended: ÄËÏÖÜŸäëïöüÿÁÉÍÓÚáéíóúÀÈÌÒÙàèìòùÂÊÎÔÛâêîôûÃÕÑãõñŃńǸǹŇňŘřŠšÅåŮů
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         // #KNOWN_UNSUPPORTED U.S. Extended:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         // See http://symbolcodes.tlt.psu.edu/accents/codemacext.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return @{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return D(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Umlauts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ä": @"¨A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ë": @"¨E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ï": @"¨I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ö": @"¨O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ü": @"¨U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ÿ": @"¨Y",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ä": @"¨a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ë": @"¨e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ï": @"¨i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ö": @"¨o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ü": @"¨u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ÿ": @"¨y",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ä", @"¨A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ë", @"¨E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ï", @"¨I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ö", @"¨O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ü", @"¨U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ÿ", @"¨Y",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ä", @"¨a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ë", @"¨e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ï", @"¨i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ö", @"¨o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ü", @"¨u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ÿ", @"¨y",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Acute
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Á": @"´A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"É": @"´E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Í": @"´I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ń": @"´N",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ó": @"´O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ú": @"´U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"á": @"´a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"é": @"´e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"í": @"´i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ń": @"´n",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ó": @"´o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ú": @"´u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Á", @"´A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"É", @"´E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Í", @"´I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ń", @"´N",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ó", @"´O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ú", @"´U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"á", @"´a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"é", @"´e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"í", @"´i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ń", @"´n",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ó", @"´o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ú", @"´u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Agrave
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"À": @"`A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"È": @"`E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ì": @"`I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ǹ": @"`N",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ò": @"`O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ù": @"`U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"à": @"`a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"è": @"`e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ì": @"`i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ò": @"`o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ù": @"`u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ǹ": @"`n",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"À", @"`A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"È", @"`E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ì", @"`I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ǹ", @"`N",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ò", @"`O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ù", @"`U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"à", @"`a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"è", @"`e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ì", @"`i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ò", @"`o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ù", @"`u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ǹ", @"`n",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Circumflex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Â": @"ˆA",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ê": @"ˆE",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Î": @"ˆI",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ô": @"ˆO",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Û": @"ˆU",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"â": @"ˆa",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ê": @"ˆe",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"î": @"ˆi",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ô": @"ˆo",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"û": @"ˆu",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Â", @"ˆA",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ê", @"ˆE",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Î", @"ˆI",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ô", @"ˆO",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Û", @"ˆU",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"â", @"ˆa",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ê", @"ˆe",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"î", @"ˆi",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ô", @"ˆo",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"û", @"ˆu",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Tilde
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ã": @"˜A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ñ": @"˜N",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Õ": @"˜O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ã": @"˜a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ñ": @"˜n",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"õ": @"˜o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ã", @"˜A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ñ", @"˜N",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Õ", @"˜O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ã", @"˜a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ñ", @"˜n",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"õ", @"˜o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Caron
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ň": @"ˇN",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ř": @"ˇR",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Š": @"ˇS",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ň": @"ˇn",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ř": @"ˇr",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"š": @"ˇs",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ň", @"ˇN",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ř", @"ˇR",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Š", @"ˇS",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ň", @"ˇn",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ř", @"ˇr",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"š", @"ˇs",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // A ring
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Å": @"˚A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"å": @"˚a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ů": @"˚U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ů": @"˚u"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Å", @"˚A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"å", @"˚a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ů", @"˚U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ů", @"˚u"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ([@"Polish" isEqualToString:layoutName]) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         #pragma mark - Polish replacement map
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         // #SUPPORTED Polish: ÄÖÜäöüÁÉÍÓÚáéíóúŃńŇňŘřŠš
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         // #KNOWN_UNSUPPORTED Polish: ËÏŸëïÿÀÈÌÒÙàèìòùǸǹÂÊÎÔÛâêîôûÃÕÑãõñŒœÅåØøÆæ
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return @{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return D(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Umlauts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ä": @"¨A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ö": @"¨O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ü": @"¨U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ä": @"¨a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ö": @"¨o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ü": @"¨u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ä", @"¨A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ö", @"¨O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ü", @"¨U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ä", @"¨a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ö", @"¨o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ü", @"¨u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Acute
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Á": @"´A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"É": @"´E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Í": @"´I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ú": @"´U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"á": @"´a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"é": @"´e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"í": @"´i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ú": @"´u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            // Caron
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ň": @"ˇN",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ř": @"ˇR",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Š": @"ˇS",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ň": @"ˇn",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ř": @"ˇr",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"š": @"ˇs"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Á", @"´A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"É", @"´E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Í", @"´I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ú", @"´U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"á", @"´a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"é", @"´e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"í", @"´i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ú", @"´u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            // Caron            
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ň", @"ˇN",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ř", @"ˇR",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Š", @"ˇS",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ň", @"ˇn",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ř", @"ˇr",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"š", @"ˇs"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ([@"French" isEqualToString:layoutName]) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         #pragma mark - French replacement map
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         // #SUPPORTED French: ÄËÏÖÜŸäëïöüÿÁÉÍÓÚáéíóúÀÈÌÒÙàèìòùÂÊÎÔÛâêîôû
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         // #KNOWN_UNSUPPORTED French: ÃÑÕãñõŃńǸǹŇňŘřŠšŮů
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return @{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return D(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Umlauts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ä": @"¨A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ë": @"¨E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ö": @"¨O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ü": @"¨U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ä": @"¨a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ë": @"¨e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ö": @"¨o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ü": @"¨u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ÿ": @"¨y",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ä", @"¨A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ë", @"¨E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ö", @"¨O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ü", @"¨U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ä", @"¨a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ë", @"¨e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ö", @"¨o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ü", @"¨u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ÿ", @"¨y",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Acute
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"É": @"´E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"á": @"´a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"í": @"´i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ó": @"´o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ú": @"´u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"É", @"´E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"á", @"´a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"í", @"´i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ó", @"´o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ú", @"´u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Agrave
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"À": @"`A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ì": @"`i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ò": @"`o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"À", @"`A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ì", @"`i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ò", @"`o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Circumflex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"â": @"^A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"û": @"^U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ǹ": @"`N",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ǹ": @"`n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-         };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"â", @"^A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"û", @"^U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ǹ", @"`N",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ǹ", @"`n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ([@"Canadian French - CSA" isEqualToString:layoutName]) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         #pragma mark - Canadian French replacement map
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         // #SUPPORTED Canadian French - CSA: ÄËÏÖÜŸäëïöüÿÁÉÍÓÚáéíóúÀÈÌÒÙàèìòùÂÊÎÔÛâêîôûÃÑÕãñõ
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         // #KNOWN_UNSUPPORTED Canadian French - CSA: ŇŘŠňřšǸǹŃńÅåŮů
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return @{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return D(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Umlauts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ä": @"¨A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ë": @"¨E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ï": @"¨I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ö": @"¨O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ü": @"¨U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ÿ": @"¨Y",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ä": @"¨a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ë": @"¨e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ï": @"¨i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ö": @"¨o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ü": @"¨u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ÿ": @"¨y",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ä", @"¨A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ë", @"¨E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ï", @"¨I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ö", @"¨O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ü", @"¨U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ÿ", @"¨Y",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ä", @"¨a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ë", @"¨e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ï", @"¨i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ö", @"¨o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ü", @"¨u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ÿ", @"¨y",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Acute
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Á": @"´A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"É": @"´E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Í": @"´I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ó": @"´O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ú": @"´U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"á": @"´a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"í": @"´i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ó": @"´o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ú": @"´u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Á", @"´A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"É", @"´E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Í", @"´I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ó", @"´O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ú", @"´U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"á", @"´a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"í", @"´i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ó", @"´o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ú", @"´u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Agrave
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ì": @"`I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ò": @"`O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ì": @"`i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ò": @"`o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ì", @"`I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ò", @"`O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ì", @"`i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ò", @"`o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Circumflex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Â": @"^A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ê": @"^E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Î": @"^I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ô": @"^O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Û": @"^U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"â": @"^a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ê": @"^e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"î": @"^i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ô": @"^o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"û": @"^u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Â", @"^A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ê", @"^E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Î", @"^I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ô", @"^O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Û", @"^U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"â", @"^a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ê", @"^e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"î", @"^i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ô", @"^o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"û", @"^u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Tilde
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ã": @"~A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ñ": @"~N",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Õ": @"~O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ã": @"~a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ñ": @"~n",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"õ": @"~o"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ã", @"~A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ñ", @"~N",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Õ", @"~O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ã", @"~a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ñ", @"~n",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"õ", @"~o"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ([@"Spanish" isEqualToString:layoutName]) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         #pragma mark - Spanish replacement map
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         // #SUPPORTED Spanish: ÄËÏÖÜŸäëïöüÿÁÉÍÓÚáéíóúÀÈÌÒÙàèìòùÂÊÎÔÛâêîôûÑñ
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         // #KNOWN_UNSUPPORTED Spanish: ÃÕãõŇŘŠňřšǸǹŃńŮů
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return @{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return D(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Umlauts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ä": @"¨A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ë": @"¨E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ö": @"¨O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ü": @"¨U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ä": @"¨a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ë": @"¨e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ï": @"¨i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ö": @"¨o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ü": @"¨u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ÿ": @"¨y",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ä", @"¨A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ë", @"¨E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ö", @"¨O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ü", @"¨U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ä", @"¨a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ë", @"¨e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ï", @"¨i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ö", @"¨o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ü", @"¨u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ÿ", @"¨y",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Acute
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"É": @"´E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"í": @"´i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"á": @"´a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"é": @"´e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ó": @"´o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ú": @"´u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"É", @"´E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"í", @"´i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"á", @"´a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"é", @"´e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ó", @"´o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ú", @"´u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Agrave
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"À": @"`A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"à": @"`a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"è": @"`e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ì": @"`i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ò": @"`o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ù": @"`u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"À", @"`A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"à", @"`a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"è", @"`e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ì", @"`i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ò", @"`o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ù", @"`u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Circumflex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"â": @"^a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ê": @"^e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"î": @"^i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ô": @"^o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"û": @"^u"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-         };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"â", @"^a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ê", @"^e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"î", @"^i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ô", @"^o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"û", @"^u"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ([@"Portuguese" isEqualToString:layoutName]) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         #pragma mark - Portuguese replacement map
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         // #SUPPORTED Portuguese: ÄËÏÖÜäëïöüÿÁÉÍÓÚáéíóúÀÈÌÒÙàèìòùÂÊÎÔÛâêîôûÑñÃÕãõ
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         // #KNOWN_UNSUPPORTED Portuguese: ŸŇŘŠňřšǸǹŃńŮů
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return @{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return D(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Umlauts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ä": @"¨A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ë": @"¨E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ï": @"¨I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ö": @"¨O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ü": @"¨U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ä": @"¨a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ë": @"¨e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ï": @"¨i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ö": @"¨o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ü": @"¨u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ÿ": @"¨y",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ä", @"¨A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ë", @"¨E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ï", @"¨I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ö", @"¨O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ü", @"¨U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ä", @"¨a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ë", @"¨e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ï", @"¨i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ö", @"¨o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ü", @"¨u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ÿ", @"¨y",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Acute
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Á": @"´A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"É": @"´E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Í": @"´I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ó": @"´O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ú": @"´U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"á": @"´a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"é": @"´e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"í": @"´i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ó": @"´o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ú": @"´u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Á", @"´A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"É", @"´E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Í", @"´I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ó", @"´O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ú", @"´U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"á", @"´a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"é", @"´e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"í", @"´i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ó", @"´o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ú", @"´u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Agrave
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"À": @"`A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"È": @"`E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ì": @"`I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ò": @"`O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ù": @"`U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"à": @"`a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"è": @"`e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ì": @"`i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ò": @"`o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ù": @"`u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"À", @"`A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"È", @"`E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ì", @"`I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ò", @"`O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ù", @"`U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"à", @"`a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"è", @"`e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ì", @"`i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ò", @"`o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ù", @"`u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Circumflex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Â": @"^A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ê": @"^E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Î": @"^I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ô": @"^O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Û": @"^U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"â": @"^a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ê": @"^e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"î": @"^i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ô": @"^o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"û": @"^u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Â", @"^A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ê", @"^E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Î", @"^I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ô", @"^O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Û", @"^U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"â", @"^a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ê", @"^e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"î", @"^i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ô", @"^o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"û", @"^u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Tilde
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ã": @"˜A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Õ": @"˜O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ñ": @"˜N",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ã": @"˜a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"õ": @"˜o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ñ": @"˜n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-         };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ã", @"˜A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Õ", @"˜O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ñ", @"˜N",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ã", @"˜a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"õ", @"˜o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ñ", @"˜n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ([@"Italian" isEqualToString:layoutName]) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         #pragma mark - Italian replacement map
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         // #SUPPORTED Italian: ÄËÏÖÜŸäëïöüÿÁÉÍÓÚáéíóúÀÈÌÒÙàèìòùÂÊÎÔÛâêîôûÑñÃÕãõ
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         // #KNOWN_UNSUPPORTED Italian: ŸŇŘŠňřšǸǹŃńŮů
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return @{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return D(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Umlauts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ä": @"¨A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ë": @"¨E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ï": @"¨I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ö": @"¨O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ü": @"¨U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ÿ": @"¨Y",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ä": @"¨a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ë": @"¨e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ï": @"¨i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ö": @"¨o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ü": @"¨u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ÿ": @"¨y",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ä", @"¨A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ë", @"¨E",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ï", @"¨I",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ö", @"¨O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ü", @"¨U",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ÿ", @"¨Y",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ä", @"¨a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ë", @"¨e",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ï", @"¨i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ö", @"¨o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ü", @"¨u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ÿ", @"¨y",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Acute
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"á": @"´a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"í": @"´i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ó": @"´o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ú": @"´u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"á", @"´a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"í", @"´i",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ó", @"´o",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ú", @"´u",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Circumflex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Â": @"ˆA",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ê": @"ˆE",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Î": @"ˆI",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ô": @"ˆO",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Û": @"ˆU",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"â": @"ˆa",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ê": @"ˆe",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"î": @"ˆi",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ô": @"ˆo",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"û": @"ˆu",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Â", @"ˆA",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ê", @"ˆE",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Î", @"ˆI",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ô", @"ˆO",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Û", @"ˆU",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"â", @"ˆa",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ê", @"ˆe",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"î", @"ˆi",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ô", @"ˆo",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"û", @"ˆu",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Tilde
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ã": @"˜A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Ñ": @"˜N",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"Õ": @"˜O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ã": @"˜a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"ñ": @"˜n",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            @"õ": @"˜o"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-         };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ã", @"˜A",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Ñ", @"˜N",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"Õ", @"˜O",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ã", @"˜a",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"ñ", @"˜n",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            @"õ", @"˜o"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ([@"Canadian English" isEqualToString:layoutName]) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- README.markdown.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ README.markdown
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,7 +1,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cliclick Overview
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ =========================
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-cliclick (short for “Command Line Interface Click”) is a tool for executing mouse- and keyboard-related actions from the shell/Terminal. It is written in Objective-C and runs on OS X 10.9 or later.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++cliclick (short for “Command Line Interface Click”) is a tool for executing mouse- and keyboard-related actions from the shell/Terminal. It is written in Objective-C and runs on Mac OS X 10.5 or later.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ For more information or for downloading a compiled binary, please take a look at [cliclick’s homepage](https://www.bluem.net/jump/cliclick/)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -205,7 +205,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -----------------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Either build in Xcode, as usual, or build from the shell by `cd`ing into the project directory and then invoking either `xcodebuild` or `make` (whatever you prefer). In either case, cliclick will not be installed, but you will simply get an executable called “cliclick” in the project directory which you can then move wherever you want to have it. (You can put it anywhere you like.) To install it to `/usr/local/bin`, you can also simply invoke `sudo make install`, which will do this for you.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-Please note that while the code will run on OS X 10.9 and later, Base SDK and architectures selected in the Xcode project are set to the current SDK. Therefore, if you want to build for an older system, be sure to change these settings accordingly. If you have problems when building and get a message complaining about undefined symbols, chances are that this can be fixed by disabling “Implicitly link Objective-C Runtime Support” in the build settings.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Please note that while the code will run on Mac OS X 10.5 and later, Base SDK and architectures selected in the Xcode project are set to the current SDK. Therefore, if you want to build for an older system, be sure to change these settings accordingly. If you have problems when building and get a message complaining about undefined symbols, chances are that this can be fixed by disabling “Implicitly link Objective-C Runtime Support” in the build settings.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Contributing
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ------------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- cliclick_Prefix.pch.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ cliclick_Prefix.pch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -7,6 +7,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     #import <Cocoa/Cocoa.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// Compatibility macros for 10.6, which knows neither @123 nor @{@"Foo": @"Bar"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define N(x) [NSNumber numberWithInt: x]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define D(...) [NSDictionary dictionaryWithObjectsAndKeys:__VA_ARGS__, nil]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Version or branch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define VERSION @"4.0.1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span></pre><pre style='margin:0'>

</pre>