summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoman Zolotarev <hi@romanzolotarev.com>2016-03-16 00:43:45 +0800
committerRoman Zolotarev <hi@romanzolotarev.com>2016-03-18 12:14:03 +0800
commitbbe553dba34b6d04fbd54d71dbc58cb85dcb8bff (patch)
treeee31e2f33ba08af047af4f0a2a7d2d675247361c
parent35393fa9dc3d14ea80ce72f27c13b1759600b245 (diff)
Add Roman's Layout
Four layers BASE (Norman), SYMB, PLVR (optimized for Plover), ARRW.
-rw-r--r--keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/arrw.json27
-rw-r--r--keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/arrw.pngbin0 -> 96737 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/base.json26
-rw-r--r--keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/base.pngbin0 -> 129028 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/plvr.json26
-rw-r--r--keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/plvr.pngbin0 -> 102077 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/symb.json27
-rw-r--r--keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/symb.pngbin0 -> 105763 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keymap.c145
-rw-r--r--keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/readme.md51
-rw-r--r--keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/romanzolotarev-norman-plover-osx.hex1132
11 files changed, 1434 insertions, 0 deletions
diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/arrw.json b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/arrw.json
new file mode 100644
index 0000000000..814e1cc2aa
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/arrw.json
@@ -0,0 +1,27 @@
+[{x:3.5,c:"#eeeeee",a:7},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.875,x:5.5},"","",{x:4.5},"",""],
+[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
+[{y:-0.375,x:3.5,a:5,fa:[0,2,0,0,0,0,2]},"\nmouse\n\n\n\n\nUP",{x:10.5,a:7,fa:[2]},"UP"],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.875,x:5.5},"",{h:1.5},"",{x:4.5,h:1.5},"",""],
+[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
+[{y:-0.375,x:3.5,a:5,fa:[2,2,0,0,0,0,2]},"\nmouse\n\n\n\n\nDOWN",{x:10.5,a:7},"DOWN"],
+[{y:-0.875,x:2.5,a:5,fa:[2,1,0,0,0,0,2]},"\nmouse\n\n\n\n\nLEFT",{x:1,fa:[2,2,0,0,0,0,2]},"\nmouse\n\n\n\n\nRIGHT",{x:8.5,a:7},"LEFT",{x:1},"RIGHT"],
+[{y:-0.875,x:5.5},"",{x:6.5},""],
+[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
+[{y:-0.625,x:6.5,h:1.5},"",{x:4.5,h:1.5},""],
+[{y:-0.75,x:3.5},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.875,x:5.5},"",{x:6.5},""],
+[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
+[{y:-0.375,x:3.5,a:5,fa:[2,1,0,0,0,0,2]},"\nclick\n\n\n\n\nLEFT",{x:10.5,a:7},""],
+[{y:-0.875,x:2.5},"",{x:1,a:5},"\nclick\n\n\n\n\nRIGHT",{x:8.5,a:7},"",{x:1},""],
+[{y:-0.75,x:0.5},"","",{x:14.5},"",""],
+[{r:30,rx:6.5,ry:4.25,y:-1,x:1},"",""],
+[{h:2},"",{h:2},"",""],
+[{x:2},""],
+[{r:-30,rx:13,y:-1,x:-3},"",""],
+[{x:-3},"",{h:2},"",{h:2},""],
+[{x:-3},""]
+
diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/arrw.png b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/arrw.png
new file mode 100644
index 0000000000..e2e5779b5a
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/arrw.png
Binary files differ
diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/base.json b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/base.json
new file mode 100644
index 0000000000..9e6fc37338
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/base.json
@@ -0,0 +1,26 @@
+[{x:3.5,c:"#eeeeee",a:5,fa:[5,7,0,0,0,0,0]},"#\n3",{x:10.5},"*\n8"],
+[{y:-0.875,x:2.5},"@\n2",{x:1},"$\n4",{x:8.5},"&\n7",{x:1},"(\n9"],
+[{y:-0.875,x:5.5},"%\n5",{a:7},"",{x:4.5},"",{a:5},"^\n6"],
+[{y:-0.875,w:1.5},"~\n`","!\n1",{x:14.5},")\n0",{w:1.5},"+\n="],
+[{y:-0.375,x:3.5,c:"#cccccc",a:7,fa:[7]},"D",{x:10.5},"R"],
+[{y:-0.875,x:2.5,c:"#eeeeee"},"W",{x:1,c:"#cccccc"},"F",{x:8.5,c:"#eeeeee"},"U",{x:1,c:"#cccccc"},"L"],
+[{y:-0.875,x:5.5},"K",{c:"#eeeeee",a:5,fa:[5,0,0,0,0,0,7],h:1.5},"|\n\n\n\n\n\n\\",{x:4.5,h:1.5},"?\n\n\n\n\n\n/",{c:"#cccccc",a:7,fa:[7]},"J"],
+[{y:-0.875,c:"#eeeeee",fa:[2],w:1.5},"TAB",{fa:[7]},"Q",{x:14.5,c:"#cccccc",a:5,fa:[5,7,0,0,0,0,0]},":\n;",{c:"#eeeeee",w:1.5},"_\n-"],
+[{y:-0.375,x:3.5,c:"#cccccc",a:7,fa:[7]},"E",{x:10.5},"I"],
+[{y:-0.875,x:2.5,c:"#eeeeee"},"S",{x:1,c:"#cccccc"},"T",{x:8.5},"N",{x:1},"O"],
+[{y:-0.875,x:5.5,c:"#eeeeee"},"G",{x:6.5,c:"#cccccc"},"Y"],
+[{y:-0.875,c:"#eeeeee",a:5,fa:[7,2,0,0,0,0,2],w:1.5},"\nESC\n\n\n\n\nCTRL",{a:7},"A",{x:14.5,c:"#cccccc"},"H",{c:"#eeeeee",fa:[2],w:1.5},"ENTER"],
+[{y:-0.625,x:6.5,a:5,fa:[5,0,0,0,0,0,7],h:1.5},"{\n\n\n\n\n\n[",{x:4.5,h:1.5},"}\n\n\n\n\n\n]"],
+[{y:-0.75,x:3.5,a:7,fa:[7]},"C",{x:10.5,a:5,fa:[5,7,0,0,0,0,0]},"<\n,"],
+[{y:-0.875,x:2.5,a:7,fa:[7]},"X",{x:1},"V",{x:8.5},"M",{x:1,a:5,fa:[5,7,0,0,0,0,0]},">\n."],
+[{y:-0.875,x:5.5,a:7,fa:[7]},"B",{x:6.5,c:"#cccccc"},"P"],
+[{y:-0.875,c:"#eeeeee",fa:[2],w:1.5},"SHIFT",{fa:[7]},"Z",{x:14.5,a:5,fa:[5,7,0,0,0,0,0]},"?\n/",{a:7,fa:[2],w:1.5},"SHIFT"],
+[{y:-0.375,x:3.5},"ALT",{x:10.5},"ALT"],
+[{y:-0.875,x:2.5},"",{x:1},"CMD",{x:8.5},"CTRL",{x:1},""],
+[{y:-0.75,x:0.5,f:3},"L2","",{x:14.5},"",""],
+[{r:30,rx:6.5,ry:4.25,y:-1,x:1},"VOL-","MUTE"],
+[{h:2},"BS",{h:2},"ESC","VOL+"],
+[{x:2},"~L1"],
+[{r:-30,rx:13,y:-1,x:-3},"PLAY","NEXT"],
+[{x:-3},"PREV",{a:5,fa:[5,0,0,0,0,0,7],h:2},"\"\n\n\n\n\n\n'",{a:7,fa:[2],h:2},"SPACE"],
+[{x:-3},"~L3"]
diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/base.png b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/base.png
new file mode 100644
index 0000000000..0b8539cfac
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/base.png
Binary files differ
diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/plvr.json b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/plvr.json
new file mode 100644
index 0000000000..5c3f0b8a20
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/plvr.json
@@ -0,0 +1,26 @@
+[{x:3.5,c:"#eeeeee",a:7},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.875,x:5.5},"","",{x:4.5},"",""],
+[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
+[{y:-0.375,x:3.5,fa:[7]},"3",{x:10.5},"8"],
+[{y:-0.875,x:2.5},"2",{x:1},"4",{x:8.5},"7",{x:1},"9"],
+[{y:-0.875,x:5.5},"5",{h:1.5},"",{x:4.5,h:1.5},"","6"],
+[{y:-0.875,w:1.5},"","1",{x:14.5},"0",{w:1.5},""],
+[{y:-0.375,x:3.5},"E",{x:10.5},"I"],
+[{y:-0.875,x:2.5},"W",{x:1},"R",{x:8.5},"U",{x:1},"O"],
+[{y:-0.875,x:5.5},"T",{x:6.5},"Y"],
+[{y:-0.875,w:1.5},"","Q",{x:14.5},"P",{w:1.5},"["],
+[{y:-0.625,x:6.5,h:1.5},"",{x:4.5,h:1.5},""],
+[{y:-0.75,x:3.5},"D",{x:10.5},"K"],
+[{y:-0.875,x:2.5},"S",{x:1},"F",{x:8.5},"J",{x:1},"L"],
+[{y:-0.875,x:5.5},"G",{x:6.5},"H"],
+[{y:-0.875,w:1.5},"","A",{x:14.5},";",{w:1.5},"'"],
+[{y:-0.375,x:3.5},"",{x:10.5},""],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
+[{y:-0.75,x:0.5},"","",{x:14.5},"",""],
+[{r:30,rx:6.5,ry:4.25,y:-1,x:1},"",""],
+[{h:2},"C",{h:2},"V",""],
+[{x:2},""],
+[{r:-30,rx:13,y:-1,x:-3},"",""],
+[{x:-3},"",{h:2},"N",{h:2},"M"],
+[{x:-3},""]
diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/plvr.png b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/plvr.png
new file mode 100644
index 0000000000..f8d38204fc
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/plvr.png
Binary files differ
diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/symb.json b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/symb.json
new file mode 100644
index 0000000000..ccd1d74e4b
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/symb.json
@@ -0,0 +1,27 @@
+[{x:3.5,c:"#eeeeee",a:7,fa:[7]},"F3",{x:10.5},"F8"],
+[{y:-0.875,x:2.5},"F2",{x:1},"F4",{x:8.5},"F7",{x:1},"F9"],
+[{y:-0.875,x:5.5},"F5","",{x:4.5},"","F6"],
+[{y:-0.875,w:1.5},"","F1",{x:14.5},"F10",{w:1.5},"F11"],
+[{y:-0.375,x:3.5},"{",{x:10.5},"8"],
+[{y:-0.875,x:2.5},"@",{x:1},"}",{x:8.5},"7",{x:1},"9"],
+[{y:-0.875,x:5.5},"|",{h:1.5},"",{x:4.5,h:1.5},"",{fa:[2]},"UP"],
+[{y:-0.875,w:1.5},"",{fa:[7]},"!",{x:14.5},"*",{w:1.5},"F12"],
+[{y:-0.375,x:3.5},"(",{x:10.5},"5"],
+[{y:-0.875,x:2.5},"$",{x:1},")",{x:8.5},"4",{x:1},"6"],
+[{y:-0.875,x:5.5},"`",{x:6.5,fa:[2]},"DOWN"],
+[{y:-0.875,w:1.5},"",{fa:[7]},"#",{x:14.5},"+",{w:1.5},""],
+[{y:-0.625,x:6.5,h:1.5},"",{x:4.5,h:1.5},""],
+[{y:-0.75,x:3.5},"[",{x:10.5},"2"],
+[{y:-0.875,x:2.5},"^",{x:1},"]",{x:8.5},"1",{x:1},"3"],
+[{y:-0.875,x:5.5},"~",{x:6.5},"&"],
+[{y:-0.875,w:1.5},"","%",{x:14.5},"\\",{w:1.5},""],
+[{y:-0.375,x:3.5},"",{x:10.5},"."],
+[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},"0"],
+[{y:-0.75,x:0.5},"","",{x:14.5},"=",""],
+[{r:30,rx:6.5,ry:4.25,y:-1,x:1},"",""],
+[{h:2},"",{h:2},"",""],
+[{x:2},""],
+[{r:-30,rx:13,y:-1,x:-3},"",""],
+[{x:-3},"",{h:2},"",{h:2},""],
+[{x:-3},""]
+
diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/symb.png b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/symb.png
new file mode 100644
index 0000000000..83dc2242ba
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keyboard-layout-editor/symb.png
Binary files differ
diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keymap.c b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keymap.c
new file mode 100644
index 0000000000..36526bf2a1
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/keymap.c
@@ -0,0 +1,145 @@
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0
+#define SYMB 1
+#define PLVR 2
+#define ARRW 3
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = KEYMAP(
+ //
+ KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS,
+ KC_TAB, KC_Q, KC_W, KC_D, KC_F, KC_K, KC_BSLS,
+ CTL_T(KC_ESC), KC_A, KC_S, KC_E, KC_T, KC_G,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC,
+ TG(PLVR), KC_TRNS, KC_TRNS, KC_LALT, KC_LGUI,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLU, KC_MUTE,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLD,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_BSPC, KC_ESC, KC_FN1,
+ //
+ /*-*/ KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL,
+ /*-*/ KC_SLSH, KC_J, KC_U, KC_R, KC_L, KC_SCLN, KC_MINS,
+ /*-*/ /*-*/ KC_Y, KC_N, KC_I, KC_O, KC_H, KC_ENT,
+ /*-*/ KC_RBRC, KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ /*-*/ /*-*/ /*-*/ KC_RCTL, KC_RALT, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_MPLY, KC_MNXT,
+ KC_MPRV,
+ KC_FN3, KC_QUOT, KC_SPC
+ //
+ ),
+ //
+ [SYMB] = KEYMAP(
+ //
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
+ KC_TRNS, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS,
+ KC_TRNS, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV,
+ KC_TRNS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
+ //
+ /*-*/ KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ /*-*/ KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
+ /*-*/ /*-*/ KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
+ /*-*/ KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_DOT, KC_0, KC_EQL, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+ //
+ ),
+ //
+ [PLVR] = KEYMAP(
+ //
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_NO,
+ KC_NO, KC_Q, KC_W, KC_E, KC_R, KC_T,
+ KC_NO, KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ KC_C, KC_V, KC_NO,
+ //
+ /*-*/ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ /*-*/ KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO,
+ /*-*/ /*-*/ KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
+ /*-*/ KC_NO, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ /*-*/ /*-*/ /*-*/ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_NO, KC_N, KC_M
+ //
+ ),
+ //
+ [ARRW] = KEYMAP(
+ //
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
+ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
+ //
+ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS,
+ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+ //
+ ),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+ [SYMB] = ACTION_LAYER_TAP_TOGGLE(SYMB), // FN1 - Momentary Symbols Layer
+ [PLVR] = ACTION_LAYER_TAP_TOGGLE(PLVR), // FN2 - Momentary Plover Layer
+ [ARRW] = ACTION_LAYER_TAP_TOGGLE(ARRW), // FN3 - Momentary Arrows Layer
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ break;
+ }
+ return MACRO_NONE;
+};
+
+// Runs just one time when the keyboard initializes.
+void * matrix_init_user(void) {
+};
+
+// Runs constantly in the background, in a loop.
+void * matrix_scan_user(void) {
+ uint8_t layer = biton32(layer_state);
+ ergodox_board_led_off();
+ ergodox_right_led_1_off();
+ ergodox_right_led_2_off();
+ ergodox_right_led_3_off();
+ switch (layer) {
+ case SYMB:
+ ergodox_right_led_1_on();
+ break;
+ case PLVR:
+ ergodox_right_led_2_on();
+ break;
+ case ARRW:
+ ergodox_right_led_3_on();
+ break;
+ default:
+ break;
+ }
+};
diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/readme.md b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/readme.md
new file mode 100644
index 0000000000..8b03e3323f
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/readme.md
@@ -0,0 +1,51 @@
+# Roman's Layout
+
+There are four layers:
+
+- **BASE** is [Norman layout](https://normanlayout.info/).
+- **PLVR** is optimized for [Plover](http://www.openstenoproject.org).
+- **SYMB** for numbers and symbols.
+- **ARRW** for navigation.
+
+## Switching
+
+- Tap `~L1` to toggle **SYMB**.
+- Tap `~L3` to toggle **ARRW**.
+- Hold `~L1` (or `~L3`) to activate **SYMB** (or **ARRW**) while holding.
+- Tap `L2` to toggle **PLVR**.
+
+## LEDs
+
+- Red: SYMB is on.
+- Green: PLVR is on.
+- Blue: ARRW is on.
+
+## CTRL/ESC
+
+Both of those keys are frequently used in Vim.
+
+- Tap `CTRL/ESC` to send `ESC`.
+- Hold `CTRL/ESC` to use as `CTRL`.
+
+## Activate N-rollover
+
+- While in **BASE** hold left `SHIFT` and right `SHIRT` and then tap `N`.
+- Then you can activate **PLVR** and use ErgoDox EZ for steno.
+
+## Layers
+
+BASE
+
+![base](keyboard-layout-editor/base.png)
+
+SYMB
+
+![symb](keyboard-layout-editor/symb.png)
+
+PLVR
+
+![plvr](keyboard-layout-editor/plvr.png)
+
+ARRW
+
+![arrw](keyboard-layout-editor/arrw.png)
diff --git a/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/romanzolotarev-norman-plover-osx.hex b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/romanzolotarev-norman-plover-osx.hex
new file mode 100644
index 0000000000..eeb0eb9351
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/romanzolotarev-norman-plover-osx/romanzolotarev-norman-plover-osx.hex
@@ -0,0 +1,1132 @@
+:100000000C94BB020C94FF020C94FF020C94FF02B0
+:100010000C94FF020C94FF020C94FF020C94FF025C
+:100020000C94FF020C94FF020C941C0C0C94EE0C2C
+:100030000C94FF020C94FF020C94FF020C94FF023C
+:100040000C94FF020C9473210C94FF020C94FF0299
+:100050000C94FF020C94041B0C94FF020C94FF02FE
+:100060000C94FF020C94FF020C94FF020C94FF020C
+:100070000C94FF020C94FF020C94FF020C94FF02FC
+:100080000C94FF020C94FF020C94FF020C94FF02EC
+:100090000C94FF020C94FF020C94FF020C94FF02DC
+:1000A0000C94FF020C94FF020C94FF025B0D7D0D7B
+:1000B0006B0E7D0D6B0EC20DE50D6B0E3A0E4D0EE7
+:1000C0002F112F115E115E11A111DF11F813F8131A
+:1000D000F811F813F912F912CC13F813F813E3130B
+:1000E0000000F0A1F0A2F0A335022B002971E1007D
+:1000F000025400001E00140004001D000100C10095
+:100100001F001A0016001B00010029002000070034
+:1001100008000600E2002A0021000900170019006B
+:10012000E300AA0022000E000A0005000000A9005A
+:100130000100310000002F000000A800010038007D
+:10014000000030000000AE0023000D001C00130072
+:100150000000AB002400180011001000E400AC0007
+:10016000250015000C003600E6002C0026000F00CC
+:100170001200370001003400270033000B00380064
+:100180000100C3002E002D002800E5000100000042
+:100190000100010001000100010000003A001E0200
+:1001A00020022202010001003B001F022102230263
+:1001B000010001003C002F0226022F000100010077
+:1001C0003D00300227023000010001003E003102F4
+:1001D00035003502000001000100010000000100AF
+:1001E000000001000100010000000100000001000A
+:1001F0003F00520051002402000001004000240092
+:1002000021001E00010001004100250022001F0006
+:1002100037000100420026002300200027000100D3
+:10022000430025022E0231002E000100440045004B
+:1002300001000100010000000000000000000000BB
+:100240000100000000001E00140004000100000076
+:1002500000001F001A001600010019000000200015
+:10026000080007000000060000002100150009003A
+:10027000000001000000220017000A000000010039
+:10028000000000000000000000000100000000006D
+:100290000000000000000100000023001C000B0013
+:1002A000000001000000240018000D000000010003
+:1002B000000025000C000E000000100000002600C9
+:1002C00012000F000000110000002700130033008F
+:1002D00000000000000000002F00340000000000BB
+:1002E0000100010001000100010000000100010007
+:1002F000010001000100010001000100F200010005
+:10030000010001000100F000F1000100F400010013
+:1003100001000100F3000100F500010001000100EF
+:1003200001000100000001000100010000000100C7
+:1003300000000100010001000000010000000100B8
+:1003400001000100010001000000010001000100A6
+:1003500050000100010001000100520051000100A5
+:1003600001000100010001004F0001000100010037
+:100370000100010001000100010001000100010075
+:100380000100010001000000160345007200670033
+:100390006F0044006F007800200045005A00000004
+:1003A00016034500720067006F0044006F0078007C
+:1003B000200045005A0000000403090409026D00F2
+:1003C000040100A0FA090400000103010100092151
+:1003D00011010001223F000705810308000A0904FA
+:1003E00001000103010200092111010001224D0059
+:1003F0000705820308000A09040200010300000047
+:100400000921110100012236000705830308000AB3
+:100410000904030001030000000921110100012269
+:1004200039000705840310000112011001000000CB
+:1004300008EDFE071301000102000105010906A1F4
+:1004400001050719E029E7150025019508750181C7
+:100450000205081901290595057501910295017597
+:100460000391010507190029771500250195787575
+:10047000018102C005010980A10185021601002643
+:10048000B7001A01002AB700751095018100C00558
+:100490000C0901A1018503160100269C021A010026
+:1004A0002A9C02751095018100C005010902A10175
+:1004B0000901A10005091901290515002501950566
+:1004C000750181029501750381010501093009312A
+:1004D0001581257F95027508810609381581257FCC
+:1004E000950175088106050C0A38021581257F954E
+:1004F0000175088106C0C005010906A1010507199B
+:10050000E029E7150025019508750181029501751F
+:1005100008810105081901290595057501910295C4
+:1005200001750391010507190029FF150025FF95A5
+:100530000675088100C000000000000000000000F7
+:1005400000010204060A0F17202C3A4A5D71879DAC
+:10055000B3C7DAE9F5FCFFFCF5E9DAC7B39D8771AB
+:100560005D4A3A2C20170F0A060402010000000021
+:1005700000000000000011241FBECFEFDAE0DEBF54
+:10058000CDBF04B603FE24C08091EE019091EF012F
+:10059000A091F001B091F1018730904BA740B04B92
+:1005A000B9F41092EE011092EF011092F001109246
+:1005B000F10114BE84B7877F84BF88E10FB6F89439
+:1005C00080936000109260000FBEE0E0FFE30995A9
+:1005D00011E0A0E0B1E0EAE6F6E402C005900D9279
+:1005E000A433B107D9F711E0A4E3B1E001C01D9233
+:1005F000AE3EB107E1F70E9460090C9433230C94DE
+:10060000000061110BC0FC018281882321F085EE7E
+:100610000E94CC0F03C085EE0E94941080E090E011
+:10062000089508956091B1017091B2018091B30174
+:100630009091B4010E94331A56985E9825982D988F
+:1006400026982E9827982F98823039F0833041F0E1
+:10065000813041F4259A2D9A0895269A2E9A08956C
+:10066000279A2F9A089582E193E0892B11F00E9436
+:10067000120380E090E0089556985E9825982D9892
+:1006800026982E9827982F988FEF90E090938900C6
+:100690008093880090938B0080938A0090938D00C4
+:1006A00080938C00259A2D9A2FEF80E792E02150BD
+:1006B00080409040E1F700C00000269A2E9A2FEF6C
+:1006C00080E792E0215080409040E1F700C00000B8
+:1006D000279A2F9A2FEF80E792E021508040904098
+:1006E000E1F700C0000025982D982FEF80E792E0F9
+:1006F000215080409040E1F700C0000026982E98DD
+:100700002FEF80E792E0215080409040E1F700C059
+:10071000000027982F9856985E9825982D9826982F
+:100720002E9827982F98089589EA8093800089E071
+:100730008093810024982C983F988AB18F748AB94D
+:100740006E98479A8BB1806B8BB9769A0E943C0366
+:1007500081E193E0892B11F00E94110380E090E089
+:10076000089580E2809300018091340181110EC0D0
+:100770000E94000481E0809334012FEF83ED90E329
+:10078000215080409040E1F700C0000080E40E94CA
+:1007900006048093000181112EC00E9430048093D2
+:1007A0000001811128C00E94300480930001811152
+:1007B00022C08FE30E9430048093000181111BC08E
+:1007C0000E94280480E40E940604809300018111A5
+:1007D00012C08CE00E9430048093000181110BC094
+:1007E0000E94300480930001811105C08FE30E94B4
+:1007F0003004809300010E94280480910001089534
+:100800001092B9008AE08093B800089594EA90931A
+:10081000BC009091BC0097FFFCCF9091B900987FED
+:10082000983021F0903111F081E008958093BB0061
+:1008300084E88093BC008091BC0087FFFCCF80914E
+:10084000B900887F883111F0803471F780E0089515
+:1008500084E98093BC008091BC0084FDFCCF0895A6
+:100860008093BB0084E88093BC008091BC0087FF2C
+:10087000FCCF9091B900987F81E0983209F480E034
+:10088000089584E88093BC008091BC0087FFFCCF72
+:100890008091BB00089580910001811115C080E412
+:1008A0000E9406048093000181110CC082E10E9425
+:1008B000300480930001811105C08FEF0E94300445
+:1008C000809300010E94280484B1807F84B985B19F
+:1008D000807F85B98AB1837F8AB98BB1837F8BB9D9
+:1008E0003E98469808950E94B103809300010E94AB
+:1008F0004B0480B38C7080BB81B3836F81BBA6E354
+:10090000B1E0E4E4F1E08EE08E0F11921D928E13BF
+:10091000FCCF84E993E0892B11F00C9494030895A3
+:10092000BF92CF92DF92EF92FF920F931F93CF93DC
+:10093000DF9380910001882379F0809135018F5FEA
+:1009400080933501811108C00E94B103809300019A
+:10095000811102C00E943C0306E311E0C0E0D0E038
+:10096000DD24D39482E0C82EEE24E394F12CC7302A
+:10097000D10500F580910001811164C080E40E94DE
+:10098000060480930001811112C082E10E943004AC
+:100990008093000181110BC0C7010C2E01C0880F8C
+:1009A0000A94EAF780950E943004809300010E9427
+:1009B000280448C0CA30A1F028F4C83059F0C93022
+:1009C00061F005C0CC3089F070F0CD3089F0209A0C
+:1009D000289810C0219A29980DC0229A2A980AC0F6
+:1009E000239A2B9807C0529A01C0539A5B9802C071
+:1009F0003E9A469890EA9A95F1F79FB1799902C08C
+:100A000082E001C080E091709D25982B7C9902C006
+:100A100084E001C080E0892B7D9902C038E001C0EC
+:100A200030E0832B7E9902C020E101C020E0822BC0
+:100A30009FB19095991F9927991F9295990F907E34
+:100A4000892B0FC08091000181114FC080E40E946A
+:100A50000604809300018823A9F1B12C0E94280488
+:100A60008B2DF8019081981719F08083C0920101B5
+:100A70000E944B0421960F5F1F4FCE30D10509F025
+:100A800076CF809101018823B1F0815080930101DC
+:100A9000882339F08FE99FE00197F1F700C000004B
+:100AA0000AC0A4E4B1E0E6E3F1E0CF01825F9191F6
+:100AB0009D938E13FCCF83E393E0892BC1F00E94BA
+:100AC000330315C083E10E9430048093000181113B
+:100AD000C4CF81E40E940604809300018111BDCF40
+:100AE0000E944104B82EB094B9CF80E0BACF81E023
+:100AF000DF91CF911F910F91FF90EF90DF90CF90FA
+:100B0000BF900895E82FF0E0EC5BFE4F80810895E0
+:100B100008958B3B910578F4883A910540F5853A24
+:100B20009105D0F48430910508F0B1C08130910571
+:100B300009F4ADC06BC0803E910508F467C0883EE3
+:100B4000910508F4A4C09C01205F310920313105D2
+:100B500008F05CC090650895853A910509F459C084
+:100B6000863A910509F058C082E890E40895883AE1
+:100B7000910509F454C0893A910509F453C08A3AA1
+:100B8000910509F452C08B3A910509F451C08C3A91
+:100B9000910509F450C08D3A910509F44FC0803B8E
+:100BA000910509F44EC08E3A910509F44DC08F3A73
+:100BB000910509F44CC0813B910509F44BC0823B7F
+:100BC000910509F44AC0833B910509F449C0843B6F
+:100BD000910509F448C0853B910509F447C0863B5F
+:100BE000910509F446C0873B910509F445C0883B4F
+:100BF000910509F444C0893B910509F443C08A3B3F
+:100C0000910509F442C080E094E4089580E090E00A
+:100C1000089581E890E4089583E890E4089582EED1
+:100C200094E4089589EE94E408958AEE94E4089596
+:100C300085EB94E4089586EB94E4089587EB94E4BF
+:100C400008958CEC94E408958DEC94E4089583E881
+:100C500095E408958AE895E4089582E995E4089575
+:100C600084E995E4089581E296E4089583E296E4A8
+:100C7000089584E296E4089585E296E4089586E274
+:100C800096E4089587E296E408958AE296E408954A
+:100C9000089596E0799FF001112494E5899FE00D75
+:100CA000F11D1124E60FF11DEE0FFF1FE851FF4F5C
+:100CB000859194910895880F991FFC01E05AF040A6
+:100CC000859194910895880F991FFC01E052FF4F80
+:100CD00085919491089526E0729FF001112444E5D6
+:100CE000849FE00DF11D1124E60FF11DEE0FFF1F93
+:100CF000E851FF4F859194919C013A9521154FE160
+:100D0000340708F41AC13F512115304120F49F7077
+:100D10000E94630608959C0130532115304118F458
+:100D20009927906C0895811520E5920769F40E9437
+:100D30001A144FEF84E39CE0415080409040E1F76B
+:100D400000C000000C94291B813020E5920731F48B
+:100D50008091CC0181608093CC0108959C01305535
+:100D60002115304108F051C0292F33272F70332728
+:100D700021303105D9F4AC014370552702C0220F50
+:100D8000331F4A95E2F73C68AC0164E0440F551FFD
+:100D90006A95E1F744275370242B352B73E0880FB5
+:100DA000991F7A95E1F7807699271DC02230310589
+:100DB00029F4982F8827816F906A08952330310590
+:100DC000A9F4AC014370552721E030E002C0220FA6
+:100DD000331F4A95E2F73C6843E0880F991F4A9514
+:100DE000E1F7807E9770822B932B08952430310594
+:100DF000E1F4AC014370552721E030E002C0220F3E
+:100E0000331F4A95E2F73A68E7CF9C013057211526
+:100E1000304118F49F70906208959C01305821155C
+:100E2000304118F49F70906A0895803E9105E0F477
+:100E3000803C910558F58133910509F46FC048F461
+:100E40008932910509F463C08A32910509F46DC0B5
+:100E500072C089339105E9F082389105D1F085336C
+:100E6000910509F44DC067C0833E910581F138F4C6
+:100E7000803E9105B9F0823E9105D9F05CC0863E76
+:100E8000910561F1873E9105A1F155C00E945B0675
+:100E900008952091DF0120FD02C021FF4CC080EEAB
+:100EA00090E049C08091DF0180FFF9CF89E390E0B5
+:100EB00042C08091DF0182FF0EC08091DF0184FF7C
+:100EC00003C080E090E037C083EE90E034C08091B2
+:100ED000DF0182FFF2CF82EE90E02DC08091DF0132
+:100EE00083FF0BC08091DF0184FDEBCF87EE90E0A4
+:100EF00022C08091DF0183FFF5CF86EE90E01BC01A
+:100F00008091DF0185FF07C089E290E014C08091E5
+:100F1000DF0185FFF9CF85E390E00DC08091DF010F
+:100F200086FF07C08AE290E006C08091DF0186FF5D
+:100F3000F9CF81E390E00E9489050895089580919A
+:100F400062010895CF93DF9300D01F92CDB7DEB733
+:100F50009C018091E501843019F593E099833B83EE
+:100F60002A839093E9008FEF9091E800815095FDDE
+:100F700006C095ED9A95F1F700008111F5CF8091AB
+:100F8000E80085FF0DC040E050E063E070E0CE0176
+:100F900001960E940C0A8091E8008E778093E80009
+:100FA0000F900F900F90DF91CF910895CF93DF9323
+:100FB00000D01F92CDB7DEB72091E501243021F596
+:100FC00022E029839B838A8383E08093E9008FEF6B
+:100FD0009091E800815095FD06C095ED9A95F1F746
+:100FE00000008111F5CF8091E80085FF0DC040E041
+:100FF00050E063E070E0CE0101960E940C0A8091FF
+:10100000E8008E778093E8000F900F900F90DF91AB
+:10101000CF9108952091E5012430F1F422E020934E
+:10102000E9002FEF3091E800215035FD06C035ED85
+:101030003A95F1F700002111F5CF2091E80025FF46
+:101040000BC040E050E065E070E00E940C0A809127
+:10105000E8008E778093E8000895CF93DF93EC014A
+:101060009091E501943009F046C080910C018823ED
+:10107000D9F080910D018823B9F09093E9008FEFAA
+:101080009091E800815095FD06C095E19A95F1F7A1
+:1010900000008111F5CF8091E80085FF2CC040E071
+:1010A00050E060E170E017C081E08093E9008FEFCD
+:1010B0009091E800815095FD06C095ED9A95F1F765
+:1010C00000008111F5CF8091E80085FF14C040E059
+:1010D00050E068E070E0CE010E940C0A8091E800C8
+:1010E0008E778093E80080E1FE01A2E5B1E00190F7
+:1010F0000D928A95E1F7DF91CF9108958091E401F7
+:10110000811109C00E94A10B0E94FE0B8091E20098
+:1011100084608093E20008951092E4010895089598
+:101120000C9460210E94BF1A0E9466210E94A40EA6
+:101130000C949E0742E061EC81E00E941B0B42E0B0
+:1011400061EC82E00E941B0B42E061EC83E00E94B4
+:101150001B0B42E161EC84E00C941B0B8091E701D6
+:10116000833009F455C030F4813071F0823009F4D5
+:101170008EC008958A3009F47AC08B3009F460C0BB
+:10118000893009F09CC020C08091E601813A09F0C5
+:1011900096C08091E800877F8093E8008091EA0103
+:1011A0009091EB01892B21F460E182E591E003C08D
+:1011B00060E080E090E070E00E94570A8091E800D3
+:1011C0008B778093E80008958091E601813209F0E1
+:1011D00076C08091EA019091EB01009719F0039796
+:1011E00009F06DC08091E800877F8093E8008091CE
+:1011F000E80082FD05C08091E5018111F8CF5FC054
+:101200008091F100809362018091E8008B7753C058
+:101210008091E601813A09F052C08091EA019091F3
+:10122000EB01892B09F04BC08091E800877F809308
+:10123000E8008091E80080FFFCCF80910C0136C06F
+:101240008091E6018132D9F58091EA019091EB011C
+:10125000892BA9F58091E800877F8093E8000E94A0
+:10126000500B8091E80180930C010C941A1480912A
+:10127000E601813221F58091E800877F8093E800C4
+:101280000E94500B8091E901809363010895809141
+:10129000E601813AA1F48091E800877F8093E8001D
+:1012A0008091E80080FFFCCF809163018093F10082
+:1012B0008091E8008E778093E8000C94500B08959D
+:1012C00084B7877F84BF88E10FB6F894809360006D
+:1012D000109260000FBE90E080E80FB6F894809303
+:1012E0006100909361000FBE0E94F30E0E94A10B5B
+:1012F0000E94FE0B8091E20084608093E20078946B
+:101300000E94840E0E94F50E82E091E00E949F0EE2
+:101310000E944E218091E501853069F40E94831A74
+:101320008091E3018823B1F30E94AB1A882391F3E3
+:101330000E94F609EFCF0E94FB0EECCF292F332736
+:1013400023303105C9F064F42130310581F02230B9
+:10135000310509F043C08DE690E02CEB33E042C04C
+:1013600021323105F1F02232310541F137C082E1FD
+:1013700090E029E234E036C099278130910541F0B0
+:101380008230910541F0892B49F5E8EBF3E005C087
+:10139000E0EAF3E002C0E8E8F3E0849190E09F0126
+:1013A00021C06430D8F4E62FF0E0EE0FFF1FEE5DB1
+:1013B000FE4F2081318189E090E014C0643070F4E8
+:1013C00070E0FB01EE0FFF1FE65EFE4F20813181D2
+:1013D000FB01EA5EFE4F808190E004C080E090E077
+:1013E00020E030E0FA0131832083089580E189BD57
+:1013F00082E189BD09B400FEFDCF8091D8008F7DC8
+:101400008093D8008091E00082608093E00080911A
+:10141000E00081FDFCCF0895CF92DF92EF92FF9222
+:101420000F931F93CF93DF93EC018B016A010E940E
+:101430006F0B811133C0C114D10439F0F6018081E2
+:101440009181081B190BC80FD91FE12CF12C011534
+:10145000110519F18091E80085FD16C08091E80022
+:101460008E778093E800C114D10449F0F6018081A1
+:101470009181E80EF91EF182E08285E00FC00E94A2
+:101480006F0B882321F30AC089918093F1000150EA
+:101490001109FFEFEF1AFF0ADACF80E0DF91CF9159
+:1014A0001F910F91FF90EF90DF90CF9008952091C2
+:1014B000EC013091ED012617370748F061157105F1
+:1014C00039F42091E8002E772093E80001C0B9019B
+:1014D00040E061157105A9F12091E501222309F48D
+:1014E00043C0253009F442C02091E80023FD40C0EC
+:1014F0002091E80022FD32C02091E80020FFE9CFD2
+:101500004091F3002091F20030E0342BFC01CF0138
+:101510006115710559F02830310540F481918093AF
+:10152000F100615071092F5F3F4FF1CF41E028304A
+:10153000310509F040E02091E8002E772093E80083
+:10154000C8CF4111C9CF0AC08091E501882361F05D
+:10155000853061F08091E80083FD0AC08091E80049
+:1015600082FFF2CF80E0089582E0089583E008953D
+:1015700081E008952091EC013091ED0126173707A5
+:1015800048F06115710539F42091E8002E77209319
+:10159000E80001C0B901FC0120E06115710591F17D
+:1015A0008091E501882309F440C0853009F43FC0EB
+:1015B0008091E80083FD3DC08091E80082FD2FC04E
+:1015C0008091E80080FFE9CF2091F3008091F20044
+:1015D00090E0922B6115710559F08830910540F427
+:1015E00024912093F1003196615071090196F2CF58
+:1015F00021E0089709F020E08091E8008E77809341
+:10160000E800CBCF2111CCCF0AC08091E50188231F
+:1016100061F0853061F08091E80083FD0AC080911F
+:10162000E80082FFF2CF80E0089582E0089583E031
+:10163000089581E00895982F973058F59093E90028
+:10164000981739F07091EC002091ED005091F00066
+:1016500003C0242F762F50E021FF19C03091EB00FA
+:101660003E7F3093EB003091ED003D7F3093ED00F5
+:101670003091EB0031603093EB007093EC002093DD
+:10168000ED005093F0002091EE0027FF07C09F5F10
+:10169000D3CF8F708093E90081E0089580E00895B2
+:1016A0008091E60187FF11C08091E80082FD05C0AE
+:1016B0008091E5018111F8CF11C08091E8008B770E
+:1016C0000BC08091E501882349F08091E80080FFFC
+:1016D000F8CF8091E8008E778093E80008952091FC
+:1016E000E4003091E50095E64091EC00842F817094
+:1016F00040FF22C08091E80080FD1CC08091E50180
+:10170000882391F0853091F08091EB0085FD10C029
+:101710004091E4005091E5004217530729F39A01E4
+:10172000915011F784E0089582E0089583E00895D0
+:1017300081E0089580E008954091E80042FFDECF07
+:1017400008950E940F0C0E94170CE0EEF0E08081DB
+:1017500081608083E8EDF0E080818F77808319BC21
+:10176000A7EDB0E08C918E7F8C9380818F7E8083FB
+:101770001092E40108950F931F93CF93DF930E947B
+:101780000F0C0E94170CC8EDD0E088818F778883FA
+:1017900088818068888388818F7D888319BC1092B6
+:1017A000E5011092E1011092E3011092E20100EED6
+:1017B00010E0F80180818B7F80838881816088833D
+:1017C00042E060E080E00E941B0BE1EEF0E08081EF
+:1017D0008E7F8083E2EEF0E0808181608083808173
+:1017E00088608083F80180818E7F8083888180611A
+:1017F0008883DF91CF911F910F910895E8EDF0E07C
+:1018000080818F7E8083E7EDF0E08081816080833E
+:1018100084E082BF81E08093E4010C94BB0BE8ED8F
+:10182000F0E080818E7F80831092E2000895109214
+:10183000DA001092E10008951F920F920FB60F92F6
+:1018400011242F933F934F935F936F937F938F93C5
+:101850009F93AF93BF93EF93FF938091E10082FF3B
+:101860000BC08091E20082FF07C08091E1008B7F76
+:101870008093E1000E94830E8091DA0080FF1FC0F8
+:101880008091D80080FF1BC08091DA008E7F80930A
+:10189000DA008091D90080FF0DC080E189BD82E12E
+:1018A00089BD09B400FEFDCF81E08093E5010E946F
+:1018B0007E0805C019BC1092E5010E948C08809139
+:1018C000E10080FF19C08091E20080FF15C0809187
+:1018D000E2008E7F8093E2008091E200806180933D
+:1018E000E2008091D80080628093D80019BC85E026
+:1018F0008093E5010E9490088091E10084FF30C050
+:101900008091E20084FF2CC080E189BD82E189BD25
+:1019100009B400FEFDCF8091D8008F7D8093D80060
+:101920008091E1008F7E8093E1008091E2008F7EC4
+:101930008093E2008091E20081608093E2008091D8
+:10194000E101882311F084E007C08091E30087FD66
+:1019500002C081E001C083E08093E5010E9492080B
+:101960008091E10083FF29C08091E20083FF25C0C0
+:101970008091E100877F8093E10082E08093E50120
+:101980001092E1018091E1008E7F8093E1008091CF
+:10199000E2008E7F8093E2008091E200806180937C
+:1019A000E20042E060E080E00E941B0B8091F000CA
+:1019B00088608093F0000E948F08FF91EF91BF91A3
+:1019C000AF919F918F917F916F915F914F913F91D7
+:1019D0002F910F900FBE0F901F9018951F920F928E
+:1019E0000FB60F9211242F933F934F935F936F93F2
+:1019F0007F938F939F93AF93BF93CF93DF93EF9397
+:101A0000FF93C091E900CF708091EC00D82FD17086
+:101A100080FDD0E81092E9008091F000877F8093EC
+:101A2000F00078940E94320D1092E9008091F0004D
+:101A300088608093F000CD2BCF70C093E900FF91B8
+:101A4000EF91DF91CF91BF91AF919F918F917F9156
+:101A50006F915F914F913F912F910F900FBE0F901B
+:101A60001F9018951F93CF93DF93CDB7DEB7AA973A
+:101A70000FB6F894DEBF0FBECDBFE6EEF1E088E012
+:101A80008E0F9091F10091938E13FBCF0E94AE08C0
+:101A90008091E80083FF1FC18091E6019091E701EA
+:101AA000492F50E04A30510508F015C1FA01EA5AB1
+:101AB000FF4F0C94E822803881F0823809F00BC186
+:101AC0008091EA018F708093E9008091EB0085FBA3
+:101AD000882780F91092E90006C08091E201909178
+:101AE000E301911182609091E800977F9093E80064
+:101AF0008093F1001092F100C8C0282F2D7F09F0CB
+:101B0000EAC0882319F0823061F0E5C08091E801D5
+:101B1000813009F0E0C0933009F080E08093E30168
+:101