From decab379cfa3ddfbcb836fb8e724b104a50a9389 Mon Sep 17 00:00:00 2001 From: Pieter Degroote Date: Mon, 30 Dec 2019 11:22:19 +0100 Subject: [PATCH 1/1] Add files via upload MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The letters 'ȥ' and 'Ȥ' (z/Z with hook) have been added under AltGr+Shift+". --- UltimateKEYS - 2019-12-30.ahk | 998 ++++++++++++++++++++++++++++++++++ UltimateKEYS - 2019-12-30.klc | Bin 0 -> 55288 bytes 2 files changed, 998 insertions(+) create mode 100644 UltimateKEYS - 2019-12-30.ahk create mode 100644 UltimateKEYS - 2019-12-30.klc diff --git a/UltimateKEYS - 2019-12-30.ahk b/UltimateKEYS - 2019-12-30.ahk new file mode 100644 index 0000000..e107ede --- /dev/null +++ b/UltimateKEYS - 2019-12-30.ahk @@ -0,0 +1,998 @@ +; UltimateKEYS - 2019-12-30.ahk + +; Author : Pieter Degroote + +; License : GNU General Public License Version 3 + +; Website : https://github.com/pieter-degroote/UltimateKEYS + + +; Requirements : + +; Keyboard layout (on Windows OS) : US-QWERTY + +; AutoHotkey v1.1 (https://www.autohotkey.com/) + + + +; Dead Key : Circumflex Accent + +dkCircumflex := ComObjCreate("Scripting.Dictionary") +dkCircumflex.item("a") := "â" ; a with circumflex +dkCircumflex.item("A") := "Â" ; A with circumflex +dkCircumflex.item("c") := "ĉ" ; c with circumflex +dkCircumflex.item("C") := "Ĉ" ; C with circumflex +dkCircumflex.item("e") := "ê" ; e with circumflex +dkCircumflex.item("E") := "Ê" ; E with circumflex +dkCircumflex.item("g") := "ĝ" ; g with circumflex +dkCircumflex.item("G") := "Ĝ" ; G with circumflex +dkCircumflex.item("h") := "ĥ" ; h with circumflex +dkCircumflex.item("H") := "Ĥ" ; H with circumflex +dkCircumflex.item("i") := "î" ; i with circumflex +dkCircumflex.item("I") := "Î" ; I with circumflex +dkCircumflex.item("j") := "ĵ" ; j with circumflex +dkCircumflex.item("J") := "Ĵ" ; J with circumflex +dkCircumflex.item("o") := "ô" ; o with circumflex +dkCircumflex.item("O") := "Ô" ; O with circumflex +dkCircumflex.item("s") := "ŝ" ; s with circumflex +dkCircumflex.item("S") := "Ŝ" ; S with circumflex +dkCircumflex.item("u") := "û" ; u with circumflex +dkCircumflex.item("U") := "Û" ; U with circumflex +dkCircumflex.item("w") := "ŵ" ; w with circumflex +dkCircumflex.item("W") := "Ŵ" ; W with circumflex +dkCircumflex.item("y") := "ŷ" ; y with circumflex +dkCircumflex.item("Y") := "Ŷ" ; Y with circumflex +dkCircumflex.item("z") := "ẑ" ; z with circumflex +dkCircumflex.item("Z") := "Ẑ" ; Z with circumflex +dkCircumflex.item("^") := "{^}" ; circumflex accent +dkCircumflex.item(" ") := "{^}" ; circumflex accent + + +; Dead Key : Caron + +dkCaron := ComObjCreate("Scripting.Dictionary") +dkCaron.item("a") := "ǎ" ; a with caron +dkCaron.item("A") := "Ǎ" ; A with caron +dkCaron.item("c") := "č" ; c with caron +dkCaron.item("C") := "Č" ; C with caron +dkCaron.item("d") := "ď" ; d with caron +dkCaron.item("D") := "Ď" ; D with caron +dkCaron.item("e") := "ě" ; e with caron +dkCaron.item("E") := "Ě" ; E with caron +dkCaron.item("g") := "ǧ" ; g with caron +dkCaron.item("G") := "Ǧ" ; G with caron +dkCaron.item("h") := "ȟ" ; h with caron +dkCaron.item("H") := "Ȟ" ; H with caron +dkCaron.item("i") := "ǐ" ; i with caron +dkCaron.item("I") := "Ǐ" ; I with caron +dkCaron.item("j") := "ǰ" ; j with caron +dkCaron.item("k") := "ǩ" ; k with caron +dkCaron.item("K") := "Ǩ" ; K with caron +dkCaron.item("l") := "ľ" ; l with caron +dkCaron.item("L") := "Ľ" ; L with caron +dkCaron.item("n") := "ň" ; n with caron +dkCaron.item("N") := "Ň" ; N with caron +dkCaron.item("o") := "ǒ" ; o with caron +dkCaron.item("O") := "Ǒ" ; O with caron +dkCaron.item("r") := "ř" ; r with caron +dkCaron.item("R") := "Ř" ; R with caron +dkCaron.item("s") := "š" ; s with caron +dkCaron.item("S") := "Š" ; S with caron +dkCaron.item("t") := "ť" ; t with caron +dkCaron.item("T") := "Ť" ; T with caron +dkCaron.item("u") := "ǔ" ; u with caron +dkCaron.item("U") := "Ǔ" ; U with caron +dkCaron.item("z") := "ž" ; z with caron +dkCaron.item("Z") := "Ž" ; Z with caron +dkCaron.item(" ") := "ˇ" ; caron + + +; Dead Key : Ring/Dot Above + +dkRingDotAbove := ComObjCreate("Scripting.Dictionary") +dkRingDotAbove.item("a") := "å" ; a with ring above +dkRingDotAbove.item("A") := "Å" ; A with ring above +dkRingDotAbove.item("ä") := "ȧ" ; a with dot above +dkRingDotAbove.item("Ä") := "Ȧ" ; a with dot above +dkRingDotAbove.item("b") := "ḃ" ; b with dot above +dkRingDotAbove.item("B") := "Ḃ" ; B with dot above +dkRingDotAbove.item("c") := "ċ" ; c with dot above +dkRingDotAbove.item("C") := "Ċ" ; C with dot above +dkRingDotAbove.item("d") := "ḋ" ; d with dot above +dkRingDotAbove.item("D") := "Ḋ" ; D with dot above +dkRingDotAbove.item("e") := "ė" ; e with dot above +dkRingDotAbove.item("E") := "Ė" ; E with dot above +dkRingDotAbove.item("f") := "ḟ" ; f with dot above +dkRingDotAbove.item("F") := "Ḟ" ; F with dot above +dkRingDotAbove.item("g") := "ġ" ; g with dot above +dkRingDotAbove.item("G") := "Ġ" ; G with dot above +dkRingDotAbove.item("h") := "ḣ" ; h with dot above +dkRingDotAbove.item("H") := "Ḣ" ; H with dot above +dkRingDotAbove.item("i") := "ı" ; dotless i (Turkish, Azerbaijani) +dkRingDotAbove.item("I") := "İ" ; I with dot above (Turkish, Azerbaijani) +dkRingDotAbove.item("j") := "ȷ" ; dotless j +dkRingDotAbove.item("l") := "ŀ" ; l with middle dot +dkRingDotAbove.item("L") := "Ŀ" ; L with middle dot +dkRingDotAbove.item("m") := "ṁ" ; m with dot above +dkRingDotAbove.item("M") := "Ṁ" ; M with dot above +dkRingDotAbove.item("n") := "ṅ" ; n with dot above +dkRingDotAbove.item("N") := "Ṅ" ; N with dot above +dkRingDotAbove.item("o") := "ȯ" ; o with dot above +dkRingDotAbove.item("O") := "Ȯ" ; O with dot above +dkRingDotAbove.item("p") := "ṗ" ; p with dot above +dkRingDotAbove.item("P") := "Ṗ" ; P with dot above +dkRingDotAbove.item("r") := "ṙ" ; r with dot above +dkRingDotAbove.item("R") := "Ṙ" ; R with dot above +dkRingDotAbove.item("s") := "ṡ" ; s with dot above +dkRingDotAbove.item("S") := "Ṡ" ; S with dot above +dkRingDotAbove.item("t") := "ṫ" ; t with dot above +dkRingDotAbove.item("T") := "Ṫ" ; T with dot above +dkRingDotAbove.item("u") := "ů" ; u with ring above +dkRingDotAbove.item("U") := "Ů" ; U with ring above +dkRingDotAbove.item("w") := "ẘ" ; w with ring above +dkRingDotAbove.item("å") := "ẇ" ; w with dot above +dkRingDotAbove.item("Å") := "Ẇ" ; W with dot above +dkRingDotAbove.item("x") := "ẋ" ; x with dot above +dkRingDotAbove.item("X") := "Ẋ" ; X with dot above +dkRingDotAbove.item("y") := "ẙ" ; y with ring above +dkRingDotAbove.item("ÿ") := "ẏ" ; y with dot above +dkRingDotAbove.item("Ÿ") := "Ẏ" ; Y with dot above +dkRingDotAbove.item("z") := "ż" ; z with dot above +dkRingDotAbove.item("Z") := "Ż" ; Z with dot above +dkRingDotAbove.item(" ") := "˙" ; dot above + + +; Dead Key : Macron + +dkMacron := ComObjCreate("Scripting.Dictionary") +dkMacron.item("a") := "ā" ; a with macron +dkMacron.item("A") := "Ā" ; A with macron +dkMacron.item("æ") := "ǣ" ; ae with macron +dkMacron.item("Æ") := "Ǣ" ; AE with macron +dkMacron.item("b") := "ƀ" ; b with stroke +dkMacron.item("B") := "Ƀ" ; B with stroke +dkMacron.item("d") := "đ" ; d with stroke +dkMacron.item("D") := "Đ" ; D with stroke +dkMacron.item("e") := "ē" ; e with macron +dkMacron.item("E") := "Ē" ; E with macron +dkMacron.item("g") := "ḡ" ; g with macron +dkMacron.item("G") := "Ḡ" ; G with macron +dkMacron.item("h") := "ħ" ; h with stroke +dkMacron.item("H") := "Ħ" ; H with stroke +dkMacron.item("i") := "ī" ; i with macron +dkMacron.item("I") := "Ī" ; I with macron +dkMacron.item("l") := "ł" ; l with stroke +dkMacron.item("L") := "Ł" ; L with stroke +dkMacron.item("ø") := "ḻ" ; l with line below +dkMacron.item("Ø") := "Ḻ" ; L with line below +dkMacron.item("o") := "ō" ; o with macron +dkMacron.item("O") := "Ō" ; O with macron +dkMacron.item("t") := "ŧ" ; t with stroke +dkMacron.item("T") := "Ŧ" ; T with stroke +dkMacron.item("u") := "ū" ; u with macron +dkMacron.item("U") := "Ū" ; U with macron +dkMacron.item("y") := "ȳ" ; y with macron +dkMacron.item("Y") := "Ȳ" ; Y with macron +dkMacron.item("z") := "ƶ" ; z with stroke +dkMacron.item("Z") := "Ƶ" ; Z with stroke +dkMacron.item(" ") := "¯" ; macron + + +; Dead Key : Cedilla/Ogonek + +dkCedillaOgonek := ComObjCreate("Scripting.Dictionary") +dkCedillaOgonek.item("a") := "ą" ; a with ogonek +dkCedillaOgonek.item("A") := "Ą" ; A with ogonek +dkCedillaOgonek.item("c") := "ç" ; c with cedilla +dkCedillaOgonek.item("C") := "Ç" ; C with cedilla +dkCedillaOgonek.item("d") := "ḑ" ; d with cedilla +dkCedillaOgonek.item("D") := "Ḑ" ; D with cedilla +dkCedillaOgonek.item("e") := "ę" ; e with ogonek +dkCedillaOgonek.item("E") := "Ę" ; E with ogonek +dkCedillaOgonek.item("ë") := "ȩ" ; e with cedilla +dkCedillaOgonek.item("Ë") := "Ȩ" ; E with cedilla +dkCedillaOgonek.item("g") := "ģ" ; g with cedilla +dkCedillaOgonek.item("G") := "Ģ" ; G with cedilla +dkCedillaOgonek.item("h") := "ḩ" ; h with cedilla +dkCedillaOgonek.item("H") := "Ḩ" ; H with cedilla +dkCedillaOgonek.item("i") := "į" ; i with ogonek +dkCedillaOgonek.item("I") := "Į" ; I with ogonek +dkCedillaOgonek.item("k") := "ķ" ; k with cedilla +dkCedillaOgonek.item("K") := "Ķ" ; K with cedilla +dkCedillaOgonek.item("l") := "ļ" ; l with cedilla +dkCedillaOgonek.item("L") := "Ļ" ; L with cedilla +dkCedillaOgonek.item("n") := "ņ" ; n with cedilla +dkCedillaOgonek.item("N") := "Ņ" ; N with cedilla +dkCedillaOgonek.item("o") := "ǫ" ; o with ogonek +dkCedillaOgonek.item("O") := "Ǫ" ; O with ogonek +dkCedillaOgonek.item("ö") := "ǭ" ; o with ogonek and macron +dkCedillaOgonek.item("Ö") := "Ǭ" ; O with ogonek and macron +dkCedillaOgonek.item("r") := "ŗ" ; r with cedilla +dkCedillaOgonek.item("R") := "Ŗ" ; R with cedilla +dkCedillaOgonek.item("s") := "ş" ; s with cedilla +dkCedillaOgonek.item("S") := "Ş" ; S with cedilla +dkCedillaOgonek.item("t") := "ţ" ; t with cedilla +dkCedillaOgonek.item("T") := "Ţ" ; T with cedilla +dkCedillaOgonek.item("u") := "ų" ; u with ogonek +dkCedillaOgonek.item("U") := "Ų" ; U with ogonek +dkCedillaOgonek.item(".") := "˛" ; ogonek +dkCedillaOgonek.item(" ") := "¸" ; cedilla + + +; Dead Key : Breve/Special + +dkBreveSpecial := ComObjCreate("Scripting.Dictionary") +dkBreveSpecial.item("a") := "ă" ; a with breve +dkBreveSpecial.item("A") := "Ă" ; A with breve +dkBreveSpecial.item("d") := "ɖ" ; small letter d with tail +dkBreveSpecial.item("D") := "Ɖ" ; capital letter African D +dkBreveSpecial.item("e") := "ĕ" ; e with breve +dkBreveSpecial.item("E") := "Ĕ" ; E with breve +dkBreveSpecial.item("ë") := "ǝ" ; small turned e +dkBreveSpecial.item("Ë") := "Ǝ" ; capital reversed E +dkBreveSpecial.item("f") := "ə" ; small letter schwa (Azerbaijani) +dkBreveSpecial.item("F") := "Ə" ; capital letter schwa (Azerbaijani) +dkBreveSpecial.item("g") := "ğ" ; g with breve +dkBreveSpecial.item("G") := "Ğ" ; G with breve +dkBreveSpecial.item("é") := "ɣ" ; latin small gamma +dkBreveSpecial.item("É") := "Ɣ" ; latin capital gamma +dkBreveSpecial.item("i") := "ĭ" ; i with breve +dkBreveSpecial.item("I") := "Ĭ" ; I with breve +dkBreveSpecial.item("j") := "ij" ; ligature ij +dkBreveSpecial.item("J") := "IJ" ; ligature IJ +dkBreveSpecial.item("k") := "ĸ" ; small letter kra +dkBreveSpecial.item("n") := "ŋ" ; small letter eng(ma) +dkBreveSpecial.item("N") := "Ŋ" ; capital letter eng(ma) +dkBreveSpecial.item("o") := "ŏ" ; o with breve +dkBreveSpecial.item("O") := "Ŏ" ; O with breve +dkBreveSpecial.item("ö") := "ɔ" ; small open o +dkBreveSpecial.item("Ö") := "Ɔ" ; capital open O +dkBreveSpecial.item("s") := "ș" ; s with comma below (Romanian) +dkBreveSpecial.item("S") := "Ș" ; S with comma below (Romanian) +dkBreveSpecial.item("ß") := "ʃ" ; small letter esh +dkBreveSpecial.item("ẞ") := "Ʃ" ; capital letter esh +dkBreveSpecial.item("t") := "ț" ; t with comma below (Romanian) +dkBreveSpecial.item("T") := "Ț" ; T with comma below (Romanian) +dkBreveSpecial.item("u") := "ŭ" ; u with breve +dkBreveSpecial.item("U") := "Ŭ" ; U with breve +dkBreveSpecial.item("w") := "ƿ" ; small letter wynn +dkBreveSpecial.item("W") := "Ƿ" ; capital letter wynn +dkBreveSpecial.item("y") := "ȝ" ; small letter yogh +dkBreveSpecial.item("Y") := "Ȝ" ; capital letter yogh +dkBreveSpecial.item("z") := "ʒ" ; small letter ezh +dkBreveSpecial.item("Z") := "Ʒ" ; capital letter ezh +dkBreveSpecial.item("à") := "ǯ" ; small letter ezh with caron +dkBreveSpecial.item("À") := "Ǯ" ; capital letter ezh with caron +dkBreveSpecial.item(" ") := "˘" ; breve + + +; Dead Key : Acute Accent + +dkAcuteAccent := ComObjCreate("Scripting.Dictionary") +dkAcuteAccent.item("a") := "á" ; a with acute +dkAcuteAccent.item("A") := "Á" ; A with acute +dkAcuteAccent.item("c") := "ć" ; c with acute +dkAcuteAccent.item("C") := "Ć" ; C with acute +dkAcuteAccent.item("ç") := "ḉ" ; c with cedilla and acute +dkAcuteAccent.item("Ç") := "Ḉ" ; C with cedilla and acute +dkAcuteAccent.item("e") := "é" ; e with acute +dkAcuteAccent.item("E") := "É" ; E with acute +dkAcuteAccent.item("g") := "ǵ" ; g with acute +dkAcuteAccent.item("G") := "Ǵ" ; G with acute +dkAcuteAccent.item("i") := "í" ; i with acute +dkAcuteAccent.item("I") := "Í" ; I with acute +dkAcuteAccent.item("j") := "ij" ; ligature ij +dkAcuteAccent.item("J") := "IJ" ; ligature IJ +dkAcuteAccent.item("k") := "ḱ" ; k with acute +dkAcuteAccent.item("K") := "Ḱ" ; K with acute +dkAcuteAccent.item("l") := "ĺ" ; l with acute +dkAcuteAccent.item("L") := "Ĺ" ; L with acute +dkAcuteAccent.item("m") := "ḿ" ; m with acute +dkAcuteAccent.item("M") := "Ḿ" ; M with acute +dkAcuteAccent.item("n") := "ń" ; n with acute +dkAcuteAccent.item("N") := "Ń" ; N with acute +dkAcuteAccent.item("o") := "ó" ; o with acute +dkAcuteAccent.item("O") := "Ó" ; O with acute +dkAcuteAccent.item("ö") := "ő" ; o with double acute +dkAcuteAccent.item("Ö") := "Ő" ; O with double acute +dkAcuteAccent.item("p") := "ṕ" ; p with acute +dkAcuteAccent.item("P") := "Ṕ" ; P with acute +dkAcuteAccent.item("r") := "ŕ" ; r with acute +dkAcuteAccent.item("R") := "Ŕ" ; R with acute +dkAcuteAccent.item("s") := "ś" ; s with acute +dkAcuteAccent.item("S") := "Ś" ; S with acute +dkAcuteAccent.item("u") := "ú" ; u with acute +dkAcuteAccent.item("U") := "Ú" ; U with acute +dkAcuteAccent.item("ü") := "ű" ; u with double acute +dkAcuteAccent.item("Ü") := "Ű" ; U with double acute +dkAcuteAccent.item("w") := "ẃ" ; w with acute +dkAcuteAccent.item("W") := "Ẃ" ; W with acute +dkAcuteAccent.item("y") := "ý" ; y with acute +dkAcuteAccent.item("Y") := "Ý" ; Y with acute +dkAcuteAccent.item("z") := "ź" ; z with acute +dkAcuteAccent.item("Z") := "Ź" ; Z with acute +dkAcuteAccent.item("å") := "ǻ" ; a with ring above and acute +dkAcuteAccent.item("Å") := "Ǻ" ; A with ring above and acute +dkAcuteAccent.item("æ") := "ǽ" ; ae with acute +dkAcuteAccent.item("Æ") := "Ǽ" ; AE with acute +dkAcuteAccent.item("ø") := "ǿ" ; o with stroke and acute +dkAcuteAccent.item("Ø") := "Ǿ" ; O with stroke and acute +dkAcuteAccent.item("'") := "´" ; acute accent +dkAcuteAccent.item(" ") := "´" ; acute accent + + +; Dead Key : Diaeresis and Hook + +dkDiaeresis := ComObjCreate("Scripting.Dictionary") +dkDiaeresis.item("a") := "ä" ; a with diaeresis +dkDiaeresis.item("A") := "Ä" ; A with diaeresis +dkDiaeresis.item("b") := "ɓ" ; b with hook +dkDiaeresis.item("B") := "Ɓ" ; B with hook +dkDiaeresis.item("c") := "ƈ" ; c with hook +dkDiaeresis.item("C") := "Ƈ" ; C with hook +dkDiaeresis.item("d") := "ɗ" ; d with hook +dkDiaeresis.item("D") := "Ɗ" ; D with hook +dkDiaeresis.item("e") := "ë" ; e with diaeresis +dkDiaeresis.item("E") := "Ë" ; E with diaeresis +dkDiaeresis.item("ë") := "ɛ" ; small open e (latin small epsilon) +dkDiaeresis.item("Ë") := "Ɛ" ; capital open E (latin capital epsilon) +dkDiaeresis.item("f") := "ƒ" ; f with hook +dkDiaeresis.item("F") := "Ƒ" ; F with hook +dkDiaeresis.item("g") := "ɠ" ; g with hook +dkDiaeresis.item("G") := "Ɠ" ; G with hook +dkDiaeresis.item("h") := "ḧ" ; h with diaeresis +dkDiaeresis.item("H") := "Ḧ" ; H with diaeresis +dkDiaeresis.item("i") := "ï" ; i with diaeresis +dkDiaeresis.item("I") := "Ï" ; I with diaeresis +dkDiaeresis.item("k") := "ƙ" ; k with hook +dkDiaeresis.item("K") := "Ƙ" ; K with hook +dkDiaeresis.item("o") := "ö" ; o with diaeresis +dkDiaeresis.item("O") := "Ö" ; O with diaeresis +dkDiaeresis.item("ö") := "ơ" ; o with horn +dkDiaeresis.item("Ö") := "Ơ" ; O with horn +dkDiaeresis.item("p") := "ƥ" ; p with hook +dkDiaeresis.item("P") := "Ƥ" ; P with hook +dkDiaeresis.item("s") := "ſ" ; small long s +dkDiaeresis.item("t") := "ẗ" ; t with diaeresis +dkDiaeresis.item("þ") := "ƭ" ; t with hook +dkDiaeresis.item("Þ") := "Ƭ" ; T with hook +dkDiaeresis.item("u") := "ü" ; u with diaeresis +dkDiaeresis.item("U") := "Ü" ; U with diaeresis +dkDiaeresis.item("ü") := "ư" ; u with horn +dkDiaeresis.item("Ü") := "Ư" ; U with horn +dkDiaeresis.item("v") := "ʋ" ; v with hook +dkDiaeresis.item("V") := "Ʋ" ; V with hook +dkDiaeresis.item("w") := "ẅ" ; w with diaeresis +dkDiaeresis.item("W") := "Ẅ" ; W with diaeresis +dkDiaeresis.item("x") := "ẍ" ; x with diaeresis +dkDiaeresis.item("X") := "Ẍ" ; X with diaeresis +dkDiaeresis.item("y") := "ÿ" ; y with diaeresis +dkDiaeresis.item("Y") := "Ÿ" ; Y with diaeresis +dkDiaeresis.item("ÿ") := "ƴ" ; y with hook +dkDiaeresis.item("Ÿ") := "Ƴ" ; Y with hook +dkDiaeresis.item("z") := "ȥ" ; z with hook +dkDiaeresis.item("Z") := "Ȥ" ; Z with hook +dkDiaeresis.item("""") := "¨" ; diaeresis +dkDiaeresis.item(" ") := "¨" ; diaeresis + + +; Dead Key : Grave Accent + +dkGraveAccent := ComObjCreate("Scripting.Dictionary") +dkGraveAccent.item("a") := "à" ; a with grave +dkGraveAccent.item("A") := "À" ; A with grave +dkGraveAccent.item("e") := "è" ; e with grave +dkGraveAccent.item("E") := "È" ; E with grave +dkGraveAccent.item("i") := "ì" ; i with grave +dkGraveAccent.item("I") := "Ì" ; I with grave +dkGraveAccent.item("n") := "ǹ" ; n with grave +dkGraveAccent.item("N") := "Ǹ" ; N with grave +dkGraveAccent.item("o") := "ò" ; o with grave +dkGraveAccent.item("O") := "Ò" ; O with grave +dkGraveAccent.item("u") := "ù" ; u with grave +dkGraveAccent.item("U") := "Ù" ; U with grave +dkGraveAccent.item("w") := "ẁ" ; w with grave +dkGraveAccent.item("W") := "Ẁ" ; W with grave +dkGraveAccent.item("y") := "ỳ" ; y with grave +dkGraveAccent.item("Y") := "Ỳ" ; Y with grave +dkGraveAccent.item("``") := "``" ; grave accent +dkGraveAccent.item(" ") := "``" ; grave accent + + +; Dead Key : Tilde + +dkTilde := ComObjCreate("Scripting.Dictionary") +dkTilde.item("a") := "ã" ; a with tilde +dkTilde.item("A") := "Ã" ; A with tilde +dkTilde.item("e") := "ẽ" ; e with tilde +dkTilde.item("E") := "Ẽ" ; E with tilde +dkTilde.item("i") := "ĩ" ; i with tilde +dkTilde.item("I") := "Ĩ" ; I with tilde +dkTilde.item("n") := "ñ" ; n with tilde +dkTilde.item("N") := "Ñ" ; N with tilde +dkTilde.item("o") := "õ" ; o with tilde +dkTilde.item("O") := "Õ" ; O with tilde +dkTilde.item("u") := "ũ" ; u with tilde +dkTilde.item("U") := "Ũ" ; U with tilde +dkTilde.item("v") := "ṽ" ; v with tilde +dkTilde.item("V") := "Ṽ" ; V with tilde +dkTilde.item("y") := "ỹ" ; y with tilde +dkTilde.item("Y") := "Ỹ" ; Y with tilde +dkTilde.item("~") := "~" ; tilde +dkTilde.item(" ") := "~" ; tilde + + +; Dead Key : Greek Alphabet + +dkGreekAlphabet := ComObjCreate("Scripting.Dictionary") +dkGreekAlphabet.item("a") := "α" ; small alpha +dkGreekAlphabet.item("A") := "Α" ; capital alpha +dkGreekAlphabet.item("b") := "β" ; small beta +dkGreekAlphabet.item("B") := "Β" ; capital beta +dkGreekAlphabet.item("v") := "β" ; small beta +dkGreekAlphabet.item("V") := "Β" ; capital beta +dkGreekAlphabet.item("g") := "γ" ; small gamma +dkGreekAlphabet.item("G") := "Γ" ; capital gamma +dkGreekAlphabet.item("d") := "δ" ; small delta +dkGreekAlphabet.item("D") := "Δ" ; capital delta +dkGreekAlphabet.item("e") := "ε" ; small epsilon +dkGreekAlphabet.item("E") := "Ε" ; capital epsilon +dkGreekAlphabet.item("z") := "ζ" ; small zeta +dkGreekAlphabet.item("Z") := "Ζ" ; capital zeta +dkGreekAlphabet.item("i") := "η" ; small eta +dkGreekAlphabet.item("I") := "Η" ; capital eta +dkGreekAlphabet.item("h") := "θ" ; small theta +dkGreekAlphabet.item("H") := "Θ" ; capital theta +dkGreekAlphabet.item("j") := "ι" ; small iota +dkGreekAlphabet.item("J") := "Ι" ; capital iota +dkGreekAlphabet.item("k") := "κ" ; small kappa +dkGreekAlphabet.item("K") := "Κ" ; capital kappa +dkGreekAlphabet.item("l") := "λ" ; small lambda +dkGreekAlphabet.item("L") := "Λ" ; capital lambda +dkGreekAlphabet.item("m") := "μ" ; small mu +dkGreekAlphabet.item("M") := "Μ" ; capital mu +dkGreekAlphabet.item("n") := "ν" ; small nu +dkGreekAlphabet.item("N") := "Ν" ; capital nu +dkGreekAlphabet.item("x") := "ξ" ; small xi +dkGreekAlphabet.item("X") := "Ξ" ; capital xi +dkGreekAlphabet.item("o") := "ο" ; small omikron +dkGreekAlphabet.item("O") := "Ο" ; capital omikron +dkGreekAlphabet.item("p") := "π" ; small pi +dkGreekAlphabet.item("P") := "Π" ; capital pi +dkGreekAlphabet.item("r") := "ρ" ; small rho +dkGreekAlphabet.item("R") := "Ρ" ; capital rho +dkGreekAlphabet.item("s") := "σ" ; small sigma +dkGreekAlphabet.item("S") := "Σ" ; capital sigma +dkGreekAlphabet.item("ß") := "ς" ; small sigma, in word-final position +dkGreekAlphabet.item("ẞ") := "Σ" ; capital sigma +dkGreekAlphabet.item("t") := "τ" ; small tau +dkGreekAlphabet.item("T") := "Τ" ; capital tau +dkGreekAlphabet.item("y") := "υ" ; small upsilon +dkGreekAlphabet.item("Y") := "Υ" ; capital upsilon +dkGreekAlphabet.item("f") := "φ" ; small phi +dkGreekAlphabet.item("F") := "Φ" ; capital phi +dkGreekAlphabet.item("c") := "χ" ; small chi +dkGreekAlphabet.item("C") := "Χ" ; capital chi +dkGreekAlphabet.item("w") := "ψ" ; small psi +dkGreekAlphabet.item("W") := "Ψ" ; capital psi +dkGreekAlphabet.item("q") := "ω" ; small omega +dkGreekAlphabet.item("Q") := "Ω" ; capital omega +dkGreekAlphabet.item("u") := "ω" ; small omega +dkGreekAlphabet.item("U") := "Ω" ; capital omega +dkGreekAlphabet.item(" ") := "μ" ; small mu + + +; Dead Key : Symbols + +dkSymbols := ComObjCreate("Scripting.Dictionary") +dkSymbols.item("a") := "ª" ; feminine ordinal indicator (Spanish, Portuguese, Italian, Galician) +dkSymbols.item("A") := "ª" ; feminine ordinal indicator (Spanish, Portuguese, Italian, Galician) +dkSymbols.item("b") := "•" ; bullet +dkSymbols.item("B") := "¦" ; broken bar +dkSymbols.item("c") := "©" ; copyright sign +dkSymbols.item("C") := "¤" ; currency sign +dkSymbols.item("d") := "†" ; dagger +dkSymbols.item("D") := "‡" ; double dagger +dkSymbols.item("e") := "℮" ; estimated symbol +dkSymbols.item("E") := "…" ; ellipsis +dkSymbols.item("f") := "♀" ; Venus symbol (female) +dkSymbols.item("F") := "♀" ; Venus symbol (female) +dkSymbols.item("h") := "⁃" ; hyphen bullet +dkSymbols.item("H") := "⁃" ; hyphen bullet +dkSymbols.item("i") := "∞" ; infinity symbol +dkSymbols.item("I") := "∞" ; infinity symbol +dkSymbols.item("l") := "ℓ" ; script small l +dkSymbols.item("L") := "ℓ" ; script small l +dkSymbols.item("m") := "♂" ; Mars symbol (male) +dkSymbols.item("M") := "♂" ; Mars symbol (male) +dkSymbols.item("n") := "ⁿ" ; superscript n +dkSymbols.item("N") := "¬" ; not sign +dkSymbols.item("o") := "º" ; masculine ordinal indicator (Spanish, Portuguese, Italian, Galician) +dkSymbols.item("O") := "º" ; masculine ordinal indicator (Spanish, Portuguese, Italian, Galician) +dkSymbols.item("p") := "¶" ; pilcrow sign +dkSymbols.item("P") := "¶" ; pilcrow sign +dkSymbols.item("r") := "®" ; registered sign +dkSymbols.item("R") := "®" ; registered sign +dkSymbols.item("s") := "§" ; section sign +dkSymbols.item("S") := "§" ; section sign +dkSymbols.item("t") := "™" ; trademark symbol +dkSymbols.item("T") := "™" ; trademark symbol +dkSymbols.item("v") := "→" ; rightwards arrow +dkSymbols.item("V") := "⇒" ; rightwards double arrow +dkSymbols.item("x") := "✗" ; ballot x +dkSymbols.item("X") := "✗" ; ballot x +dkSymbols.item("y") := "✓" ; check mark +dkSymbols.item("Y") := "✓" ; check mark +dkSymbols.item("z") := "←" ; leftwards arrow +dkSymbols.item("Z") := "⇐" ; leftwards double arrow +dkSymbols.item("1") := "≠" ; not equal to +dkSymbols.item("!") := "≠" ; not equal to +dkSymbols.item("2") := "√" ; square root +dkSymbols.item("@") := "√" ; square root +dkSymbols.item("3") := "∛" ; cube root +dkSymbols.item("#") := "∛" ; cube root +dkSymbols.item("4") := "∜" ; fourth root +dkSymbols.item("$") := "∜" ; fourth root +dkSymbols.item("5") := "‰" ; per mille sign +dkSymbols.item("%") := "‰" ; per mille sign +dkSymbols.item("6") := "ƒ" ; f with hook +dkSymbols.item("^") := "ƒ" ; f with hook +dkSymbols.item("7") := "№" ; numero sign +dkSymbols.item("&") := "№" ; numero sign +dkSymbols.item("8") := "·" ; middle dot +dkSymbols.item("*") := "·" ; middle dot +dkSymbols.item("``") := "≈" ; almost equal to +dkSymbols.item("~") := "≈" ; almost equal to +dkSymbols.item("=") := "↔" ; left right arrow +dkSymbols.item("+") := "⇔" ; left right double arrow +dkSymbols.item(",") := "≤" ; less-than or equal to +dkSymbols.item("<") := "≤" ; less-than or equal to +dkSymbols.item(".") := "≥" ; greater-than or equal to +dkSymbols.item(">") := "≥" ; greater-than or equal to +dkSymbols.item("-") := "±" ; plus-minus sign +dkSymbols.item("_") := "±" ; plus-minus sign +dkSymbols.item("\") := "⁞" ; vertical four dots +dkSymbols.item("|") := "⁞" ; vertical four dots +dkSymbols.item(" ") := "·" ; middle dot + + +; Configuration : AltGr modifiers for US-QWERTY + +>!+a:: + if GetKeyState("CapsLock", "T") + Send ä ; a with diaeresis + else + Send Ä ; A with diaeresis +return +>!a:: + if GetKeyState("CapsLock", "T") + Send Ä ; A with diaeresis + else + Send ä ; a with diaeresis +return + +>!+z:: + if GetKeyState("CapsLock", "T") + Send à ; a with grave + else + Send À ; A with grave +return +>!z:: + if GetKeyState("CapsLock", "T") + Send À ; A with grave + else + Send à ; a with grave +return + +>!+x:: + if GetKeyState("CapsLock", "T") + Send á ; a with acute + else + Send Á ; A with acute +return +>!x:: + if GetKeyState("CapsLock", "T") + Send Á ; A with acute + else + Send á ; a with acute +return + +>!+q:: + if GetKeyState("CapsLock", "T") + Send æ ; letter ae + else + Send Æ ; letter AE +return +>!q:: + if GetKeyState("CapsLock", "T") + Send Æ ; letter AE + else + Send æ ; letter ae +return + +>!+w:: + if GetKeyState("CapsLock", "T") + Send å ; a with ring above + else + Send Å ; A with ring above +return +>!w:: + if GetKeyState("CapsLock", "T") + Send Å ; A with ring above + else + Send å ; a with ring above +return + +>!+c:: + if GetKeyState("CapsLock", "T") + Send ç ; c with cedilla + else + Send Ç ; C with cedilla +return +>!c:: + if GetKeyState("CapsLock", "T") + Send Ç ; C with cedilla + else + Send ç ; c with cedilla +return + +>!+d:: + if GetKeyState("CapsLock", "T") + Send ð ; small letter eth + else + Send Ð ; capital letter eth +return +>!d:: + if GetKeyState("CapsLock", "T") + Send Ð ; capital letter eth + else + Send ð ; small letter eth +return + +>!+e:: + if GetKeyState("CapsLock", "T") + Send ë ; e with diaeresis + else + Send Ë ; E with diaeresis +return +>!e:: + if GetKeyState("CapsLock", "T") + Send Ë ; E with diaeresis + else + Send ë ; e with diaeresis +return + +>!+f:: + if GetKeyState("CapsLock", "T") + Send è ; e with grave + else + Send È ; E with grave +return +>!f:: + if GetKeyState("CapsLock", "T") + Send È ; E with grave + else + Send è ; e with grave +return + +>!+g:: + if GetKeyState("CapsLock", "T") + Send é ; e with acute + else + Send É ; E with acute +return +>!g:: + if GetKeyState("CapsLock", "T") + Send É ; E with acute + else + Send é ; e with acute +return + +>!+i:: + if GetKeyState("CapsLock", "T") + Send ï ; i with diaeresis + else + Send Ï ; I with diaeresis +return +>!i:: + if GetKeyState("CapsLock", "T") + Send Ï ; I with diaeresis + else + Send ï ; i with diaeresis +return + +>!+v:: + if GetKeyState("CapsLock", "T") + Send ì ; i with grave + else + Send Ì ; I with grave +return +>!v:: + if GetKeyState("CapsLock", "T") + Send Ì ; I with grave + else + Send ì ; i with grave +return + +>!+b:: + if GetKeyState("CapsLock", "T") + Send í ; i with acute + else + Send Í ; I with acute +return +>!b:: + if GetKeyState("CapsLock", "T") + Send Í ; I with acute + else + Send í ; i with acute +return + +>!+o:: + if GetKeyState("CapsLock", "T") + Send ö ; o with diaeresis + else + Send Ö ; O with diaeresis +return +>!o:: + if GetKeyState("CapsLock", "T") + Send Ö ; O with diaeresis + else + Send ö ; o with diaeresis +return + +>!<:: + if GetKeyState("CapsLock", "T") + Send ò ; o with grave + else + Send Ò ; O with grave +return +>!,:: + if GetKeyState("CapsLock", "T") + Send Ò ; O with grave + else + Send ò ; o with grave +return + +>!>:: + if GetKeyState("CapsLock", "T") + Send ó ; o with acute + else + Send Ó ; O with acute +return +>!.:: + if GetKeyState("CapsLock", "T") + Send Ó ; O with acute + else + Send ó ; o with acute +return + +>!+l:: + if GetKeyState("CapsLock", "T") + Send ø ; o with stroke + else + Send Ø ; O with stroke +return +>!l:: + if GetKeyState("CapsLock", "T") + Send Ø ; O with stroke + else + Send ø ; o with stroke +return + +>!+p:: + if GetKeyState("CapsLock", "T") + Send œ ; ligature oe + else + Send Œ ; ligature OE +return +>!p:: + if GetKeyState("CapsLock", "T") + Send Œ ; ligature OE + else + Send œ ; ligature oe +return + +>!+n:: + if GetKeyState("CapsLock", "T") + Send ñ ; n with tilde + else + Send Ñ ; N with tilde +return +>!n:: + if GetKeyState("CapsLock", "T") + Send Ñ ; N with tilde + else + Send ñ ; n with tilde +return + +>!+s:: + if GetKeyState("CapsLock", "T") + Send ß ; small sharp s (Eszett) + else + Send ẞ ; capital sharp S (capital Eszett) +return +>!s:: + if GetKeyState("CapsLock", "T") + Send ẞ ; capital sharp S (capital Eszett) + else + Send ß ; small sharp s (Eszett) +return + +>!+t:: + if GetKeyState("CapsLock", "T") + Send þ ; small letter thorn + else + Send Þ ; capital letter thorn +return +>!t:: + if GetKeyState("CapsLock", "T") + Send Þ ; capital letter thorn + else + Send þ ; small letter thorn +return + +>!+u:: + if GetKeyState("CapsLock", "T") + Send ü ; u with diaeresis + else + Send Ü ; U with diaeresis +return +>!u:: + if GetKeyState("CapsLock", "T") + Send Ü ; U with diaeresis + else + Send ü ; u with diaeresis +return + +>!+h:: + if GetKeyState("CapsLock", "T") + Send ù ; u with grave + else + Send Ù ; U with grave +return +>!h:: + if GetKeyState("CapsLock", "T") + Send Ù ; U with grave + else + Send ù ; u with grave +return + +>!+j:: + if GetKeyState("CapsLock", "T") + Send ú ; u with acute + else + Send Ú ; U with acute +return +>!j:: + if GetKeyState("CapsLock", "T") + Send Ú ; U with acute + else + Send ú ; u with acute +return + +>!+y:: + if GetKeyState("CapsLock", "T") + Send ÿ ; y with diaeresis + else + Send Ÿ ; Y with diaeresis +return +>!y:: + if GetKeyState("CapsLock", "T") + Send Ÿ ; Y with diaeresis + else + Send ÿ ; y with diaeresis +return + +>!+r:: + if GetKeyState("CapsLock", "T") + Send ý ; y with acute + else + Send Ý ; Y with acute +return +>!r:: + if GetKeyState("CapsLock", "T") + Send Ý ; Y with acute + else + Send ý ; y with acute +return + +>!k::Send † ; dagger +>!+k::Send ‡ ; double dagger + +>!/::Send ¿ ; inverted question mark +>!?::Send § ; section sign + +>!1::Send ¡ ; inverted exclamation mark +>!+1::Send ¹ ; superscript 1 + +>!2::Send © ; copyright sign +>!+2::Send ² ; superscript 2 + +>!3::Send ± ; plus-minus sign +>!+3::Send ³ ; superscript 3 + +>!4::Send £ ; pound sign +>!+4::Send ¥ ; yen sign + +>!5::Send € ; euro sign +>!+5::Send ¢ ; cent sign (dollar) + +>!8::Send „ ; double low-9 quotation mark +>!+8::Send ‚ ; single low-9 quotation mark + +>!9::Send “ ; left double quotation mark +>!+9::Send ‘ ; left single quotation mark + +>!0::Send ” ; right double quotation mark +>!+0::Send ’ ; right single quotation mark + +>!=::Send × ; multiplication sign +>!+=::Send ÷ ; division sign + +>![::Send « ; left-pointing double angle quotation mark +>!{::Send ‹ ; left-pointing single angle quotation mark + +>!]::Send » ; right-pointing double angle quotation mark +>!}::Send › ; right-pointing single angle quotation mark + +>!;::Send ° ; degree sign +>!+;::Send ¶ ; pilcrow sign + +>!\::Send ¬ ; not sign +>!|::Send ¦ ; broken bar + +>!6:: + Input, key, L1, {delete}{esc}{home}{end} + Send % dkCircumflex.item(key) +return +>!+6:: + Input, key, L1, {delete}{esc}{home}{end} + Send % dkCaron.item(key) +return + +>!7:: + Input, key, L1, {delete}{esc}{home}{end} + Send % dkRingDotAbove.item(key) +return +>!+7:: + Input, key, L1, {delete}{esc}{home}{end} + Send % dkMacron.item(key) +return + +>!-:: + Input, key, L1, {delete}{esc}{home}{end} + Send % dkCedillaOgonek.item(key) +return +>!_:: + Input, key, L1, {delete}{esc}{home}{end} + Send % dkBreveSpecial.item(key) +return + +>!':: + Input, key, L1, {delete}{esc}{home}{end} + Send % dkAcuteAccent.item(key) +return +>!":: + Input, key, L1, {delete}{esc}{home}{end} + Send % dkDiaeresis.item(key) +return + +>!`:: + Input, key, L1, {delete}{esc}{home}{end} + Send % dkGraveAccent.item(key) +return +>!~:: + Input, key, L1, {delete}{esc}{home}{end} + Send % dkTilde.item(key) +return + +>!m:: + Input, key, L1, {delete}{esc}{home}{end} + Send % dkGreekAlphabet.item(key) +return +>!+m:: + Input, key, L1, {delete}{esc}{home}{end} + Send % dkSymbols.item(key) +return + +>!space::Send   ; no-break space diff --git a/UltimateKEYS - 2019-12-30.klc b/UltimateKEYS - 2019-12-30.klc new file mode 100644 index 0000000000000000000000000000000000000000..2c94b14fb64fafdaea3589a3287055aec5d15e26 GIT binary patch literal 55288 zcmd6Q36x&hQQnW81(}e|35#vUZP}j1wnkESt6Q?oFs<&E)T7p7wWJvh#GYOyjn+|1 zvp8l?Ab|vI#|d^80w-p14haE_O$Y=7HpX$-jFST)Bm^+Vm?dFJY!*B9-S5Bk)qPvP zzegN={?pQX_kZtuRduWCR@J@l{-6BB(ZRvN++fGx*5LBs=HSv`eel#^)6RDe&ZL%$ zgDZn&`(}M`bTB_SH&_~s4R+bz_+Zaq@8EzP@3rGyg9$s|Irz-Mv(n$};KbmhU43e> zFgQFoGB}+O7Y7#ytA=#dp0I8hFSoxj`~J8+3;*Mr^}!8$-eo&KX*8|a5$+iqRPQ~T zuH3Y5ui0H=_Wbhc$L#(YLq2Cu1~)T?c5`sSuD)Sc^T{Xe?)AhQ+UD%|ynTDkKHyh) zy9c}N`v?y0yRDuG(z~`2Iqo{a&N|n#pgseXl3&8mv{Gw7XT- zS)Pj~&spPP(fZ)H{eR5<2Un2TF1vdvP#dpZNPWB0`X+xS?dU+b`m7pX}@Ea>BA2D;|KTXc+{gz$)5BaJWo%C zK8+_D-~rIS$7st(E2d+(nwB${yugCVYAk8l{NQDFG(ULA_<01R<|$4jYT*TsC0jjZoGuubi$*c5sEN0_&m2p33IB-e+qmHK$i<{l3r@%d zj@VB)5*I7Z&&u%XdOw{u%Rgl@V_(5TAG47HzM`b6+CwLeNBE;%c0GCv$K@UEeB>vR zmwiSv_#rPiA}=@+FUyGoe6u{j9ZfxQC|T;MB*i&9UQAlIH7Bs|<4MclA9FvPGbtPo zJds*hA)gP8!4av&5vj$9xojf>zgce8pF{R6=s5bET05Jb23l}D~?F(vK>i3_9po=w!$|}+B|R1WK0DOnK7M! zF9an^EnX8kf5zxTZy=I7VIFFid9ty=tE~Nm-4CDCqW~-dN8}j1 zM~-0;~Hr5w8MBkwDT+uYmW zpS(i~k@q#{osz2a{;+WdJwjhAnjVGwc-LtB$2&)r0DAR=(SFP#7mWnee#!#8<7l7R zWR?ofSIkbb&siHDXFE7zQP)Wunb7NTgn@LZ*Z3bgOKqvzD|`^55sm=3>tNC$*e!bw zRAsvJSSG3`%$wxCL?34_v&Y)A|JfM&B=+TevN4SO)p0PRm;Sm+@iDW|#blkhe!;v- zv{m#<9+$w^S^Gm9{El$J*|RZB z%95JwGAsQNpIn{N^dJPN)Or1i6j+R?zQ2Wq_^Sm*V;DX zFJ=h+{R*$&p7c;-xP7{}6&j_7{OF`h@A~j8OK-2mYOHqQ2ocI?x_5F!-Q)HBrH3dT z5e+Idh!c=uY#lE*-9>32x6WA##z%B&RCmRxb@%CsTB zGAqsbdebxdqEfzyTeEysC4*G=d3-kQM|=HfCCE3{Z^}#>T(Nf1B)NEPw~P_-qqcb} z)+akM#-1=LNf4#JIw!N$)LJ}Gf8G6T>-sXOGl%PE36v# zAC;S{%<=wq9R{aIM$}{8LrI`Aa>ykCjlr2Dv7Yh?T3D>q_M`65h?MdA?O9lvi61s? zneobeq_#WrYD1y45Mvy6X`LUQMQI^op|o%`n%*29QChtIc1UZxd3-4?p-@_g&5k4~ zz;L>_@cowCF@sBEn5XD@KzR*CF)x8qMn#=F9^f zwhyX{;Ju8n;k)Bs+;Jq;+cJIqyLHVgU0Xgbi2 zLy4g_kt25YGDdbtXu`9fi4-?ViYxXluURQFZp6=+v%-oD%qp>FSDsa+F=zL{8(_tR zW?sM}=0Fw=3w%Eqz9ZeN3UHnbJb)h3H10D><0+$!bWesEZO)cut;U?o35)e8XU>&@ zimfuKDnGKa`s{skb!|L(?%W6P_~K>CxtdP#rFg+Nob5x#x?arA%e&TTK(@1Jc0@g@ zQs3`R_CU<_U~Qs$U#bB@ho=2#uOG#=9Ly1!aX<&SMhSWZU4Ry0B_7topfC6>I6wrl zXf1Kha+Ittu53AO&#A5vL0(R4!|dI`6giV?)Hxqc+=A!V4$sst>)vCl=_u=0^n~rP z=))sgH?ObuV!vmV8IXD&l8y-7(Ow%0rG>oUA(z&Z!?P$Y_#9};YFb-0nzXobra!H` z{&q-9R{nIPB@{{vx%#Y23z~+rC@pw8N{c>klw5swMBU=`+mqI;>5#JP`s#uHeb$9U zsUhP!Yk$nqA0M7YsX>yI8jeQOv9lvejn{8aYGplqyB67o0%>8j`401ESz7SnIE&JP z%~D!88ckXUN0b(?za7$&EsbW8rL=@XX~8>TbvJeE>hMg`+VB;jYuoT&qt0pa`t3;z zQkke^R%tV?w$#Gj=vyAF$uBc+|Cv9mW9c4-Ev8o|t1uI)i zN7>4RLM_H@0M-PfLWR0-86j8s>LesYlGnUZ6vo26{%;9%-;X$bHelyfb>s}yyCv%-a6E6v;D!9K zvH;GSj+Xs89*Mh*1^ElPeujvCSDIU!x2My}WwC6XpaQ>U= z{0EWp9iNuzL|Z@1$$*Kf3NaCPlg>|fOtkgGoH83?U!iw0=DK74h8^*PwtkqCj=35z zF(#AF|Kylx>xVg&{3lj@aW0y?pLfj9bKcR`4|6hLV*Dp2=Icr4^Bfax{V=D7b4Yk+ z6p|(81;>1`W1_7e=48Ocs7y?(i6xyca!j=K!<_Q@h;_5FjCs*9f7_1uL0dn}Nymic zW=zEGr1K{o6K(x4r;-Mt-zS1RA9c)q&O6%rVNM22$@2lnoODdI^~0P>BR@RUMv9!+ zN7o$l_w9%uwDrTBbj-DYi718g{Gel^tsmyJ`w*`4Af0$qlbC2)9ynyQgxej-g3-8vLk-b)(>-^W3B~E%)OA#UvNyc^~0QYA3};r=M#>3 z%XvpzKg@jrQ~HU@I_bRWm}u*VIX$#ZteQndigaQWCgu~4iMD>2`vNBF!^FgDDPlhE zm}u*VIh|~i>oky?67#i=`Gz}kzoV@m=DvW5$d;H7JLc;h6K(x46%WT42egs*SKARk zO_2xQnXbn-^#}@4n|iA~f?7^*^#z$487!?U=)ur~Cj)b<@6IG-b3(4oqI?`WqB(!xQO${?$L~6*^$Q|BbXHWhW zM?zZ{(qurA#PJR{k^ZtHp{)xkM`eh1Q28TGiprkrNY$vUE+@u!KvI0CSnN5DRE@=| zNQ%JLgH9>}`>-QbBd{ux;x4|CMeY=L{hA|H%MNNT2UWXzN0nN?HW&s9B`xsv{k7B(!xQO$H>51;-ufup^(daMy+Z=j!c21QCgAd&p1*wGOZ#_CrThEMiZn7yVXz&&N&j= zy13)2cp^!kurioP4>=Orx{wqjv)VwK6eBM?QZ+`da;M0c>jQ|S$oLUQsz%0Dq-h^p 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 i$1L3$Yr$L-=M$Igh>`N