From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41318) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eOlH2-0002o4-N2 for qemu-devel@nongnu.org; Tue, 12 Dec 2017 09:11:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eOlGy-0001Yn-EE for qemu-devel@nongnu.org; Tue, 12 Dec 2017 09:11:08 -0500 Received: from mx1.redhat.com ([209.132.183.28]:48016) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eOlGy-0001We-5D for qemu-devel@nongnu.org; Tue, 12 Dec 2017 09:11:04 -0500 From: "Daniel P. Berrange" Date: Tue, 12 Dec 2017 14:10:43 +0000 Message-Id: <20171212141044.2582-4-berrange@redhat.com> In-Reply-To: <20171212141044.2582-1-berrange@redhat.com> References: <20171212141044.2582-1-berrange@redhat.com> Subject: [Qemu-devel] [PATCH v6 3/4] hw: convert the escc device to keycodemapdb List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Gerd Hoffmann , Paolo Bonzini , Stefano Stabellini , Anthony Perard , xen-devel@lists.xenproject.org, "Daniel P. Berrange" Replace the qcode_to_keycode table with automatically generated tables. Missing entries in qcode_to_keycode now fixed: - Q_KEY_CODE_KP_COMMA -> 0x2d Signed-off-by: Daniel P. Berrange --- Makefile | 1 + hw/char/escc.c | 126 +++-------------------------------------------------- include/ui/input.h | 3 ++ ui/input-keymap.c | 1 + 4 files changed, 10 insertions(+), 121 deletions(-) diff --git a/Makefile b/Makefile index 1e4237fd2f..eaec1d0381 100644 --- a/Makefile +++ b/Makefile @@ -232,6 +232,7 @@ KEYCODEMAP_FILES = \ ui/input-keymap-qcode-to-atset3.c \ ui/input-keymap-qcode-to-linux.c \ ui/input-keymap-qcode-to-qnum.c \ + ui/input-keymap-qcode-to-sun.c \ ui/input-keymap-qnum-to-qcode.c \ $(NULL) diff --git a/hw/char/escc.c b/hw/char/escc.c index 3ab831a6a7..449bf2fc63 100644 --- a/hw/char/escc.c +++ b/hw/char/escc.c @@ -717,126 +717,6 @@ MemoryRegion *escc_init(hwaddr base, qemu_irq irqA, qemu_irq irqB, return &d->mmio; } -static const uint8_t qcode_to_keycode[Q_KEY_CODE__MAX] = { - [Q_KEY_CODE_SHIFT] = 99, - [Q_KEY_CODE_SHIFT_R] = 110, - [Q_KEY_CODE_ALT] = 19, - [Q_KEY_CODE_ALT_R] = 13, - [Q_KEY_CODE_CTRL] = 76, - [Q_KEY_CODE_CTRL_R] = 76, - [Q_KEY_CODE_ESC] = 29, - [Q_KEY_CODE_1] = 30, - [Q_KEY_CODE_2] = 31, - [Q_KEY_CODE_3] = 32, - [Q_KEY_CODE_4] = 33, - [Q_KEY_CODE_5] = 34, - [Q_KEY_CODE_6] = 35, - [Q_KEY_CODE_7] = 36, - [Q_KEY_CODE_8] = 37, - [Q_KEY_CODE_9] = 38, - [Q_KEY_CODE_0] = 39, - [Q_KEY_CODE_MINUS] = 40, - [Q_KEY_CODE_EQUAL] = 41, - [Q_KEY_CODE_BACKSPACE] = 43, - [Q_KEY_CODE_TAB] = 53, - [Q_KEY_CODE_Q] = 54, - [Q_KEY_CODE_W] = 55, - [Q_KEY_CODE_E] = 56, - [Q_KEY_CODE_R] = 57, - [Q_KEY_CODE_T] = 58, - [Q_KEY_CODE_Y] = 59, - [Q_KEY_CODE_U] = 60, - [Q_KEY_CODE_I] = 61, - [Q_KEY_CODE_O] = 62, - [Q_KEY_CODE_P] = 63, - [Q_KEY_CODE_BRACKET_LEFT] = 64, - [Q_KEY_CODE_BRACKET_RIGHT] = 65, - [Q_KEY_CODE_RET] = 89, - [Q_KEY_CODE_A] = 77, - [Q_KEY_CODE_S] = 78, - [Q_KEY_CODE_D] = 79, - [Q_KEY_CODE_F] = 80, - [Q_KEY_CODE_G] = 81, - [Q_KEY_CODE_H] = 82, - [Q_KEY_CODE_J] = 83, - [Q_KEY_CODE_K] = 84, - [Q_KEY_CODE_L] = 85, - [Q_KEY_CODE_SEMICOLON] = 86, - [Q_KEY_CODE_APOSTROPHE] = 87, - [Q_KEY_CODE_GRAVE_ACCENT] = 42, - [Q_KEY_CODE_BACKSLASH] = 88, - [Q_KEY_CODE_Z] = 100, - [Q_KEY_CODE_X] = 101, - [Q_KEY_CODE_C] = 102, - [Q_KEY_CODE_V] = 103, - [Q_KEY_CODE_B] = 104, - [Q_KEY_CODE_N] = 105, - [Q_KEY_CODE_M] = 106, - [Q_KEY_CODE_COMMA] = 107, - [Q_KEY_CODE_DOT] = 108, - [Q_KEY_CODE_SLASH] = 109, - [Q_KEY_CODE_ASTERISK] = 47, - [Q_KEY_CODE_SPC] = 121, - [Q_KEY_CODE_CAPS_LOCK] = 119, - [Q_KEY_CODE_F1] = 5, - [Q_KEY_CODE_F2] = 6, - [Q_KEY_CODE_F3] = 8, - [Q_KEY_CODE_F4] = 10, - [Q_KEY_CODE_F5] = 12, - [Q_KEY_CODE_F6] = 14, - [Q_KEY_CODE_F7] = 16, - [Q_KEY_CODE_F8] = 17, - [Q_KEY_CODE_F9] = 18, - [Q_KEY_CODE_F10] = 7, - [Q_KEY_CODE_NUM_LOCK] = 98, - [Q_KEY_CODE_SCROLL_LOCK] = 23, - [Q_KEY_CODE_KP_DIVIDE] = 46, - [Q_KEY_CODE_KP_MULTIPLY] = 47, - [Q_KEY_CODE_KP_SUBTRACT] = 71, - [Q_KEY_CODE_KP_ADD] = 125, - [Q_KEY_CODE_KP_ENTER] = 90, - [Q_KEY_CODE_KP_DECIMAL] = 50, - [Q_KEY_CODE_KP_0] = 94, - [Q_KEY_CODE_KP_1] = 112, - [Q_KEY_CODE_KP_2] = 113, - [Q_KEY_CODE_KP_3] = 114, - [Q_KEY_CODE_KP_4] = 91, - [Q_KEY_CODE_KP_5] = 92, - [Q_KEY_CODE_KP_6] = 93, - [Q_KEY_CODE_KP_7] = 68, - [Q_KEY_CODE_KP_8] = 69, - [Q_KEY_CODE_KP_9] = 70, - [Q_KEY_CODE_LESS] = 124, - [Q_KEY_CODE_F11] = 9, - [Q_KEY_CODE_F12] = 11, - [Q_KEY_CODE_HOME] = 52, - [Q_KEY_CODE_PGUP] = 96, - [Q_KEY_CODE_PGDN] = 123, - [Q_KEY_CODE_END] = 74, - [Q_KEY_CODE_LEFT] = 24, - [Q_KEY_CODE_UP] = 20, - [Q_KEY_CODE_DOWN] = 27, - [Q_KEY_CODE_RIGHT] = 28, - [Q_KEY_CODE_INSERT] = 44, - [Q_KEY_CODE_DELETE] = 66, - [Q_KEY_CODE_STOP] = 1, - [Q_KEY_CODE_AGAIN] = 3, - [Q_KEY_CODE_PROPS] = 25, - [Q_KEY_CODE_UNDO] = 26, - [Q_KEY_CODE_FRONT] = 49, - [Q_KEY_CODE_COPY] = 51, - [Q_KEY_CODE_OPEN] = 72, - [Q_KEY_CODE_PASTE] = 73, - [Q_KEY_CODE_FIND] = 95, - [Q_KEY_CODE_CUT] = 97, - [Q_KEY_CODE_LF] = 111, - [Q_KEY_CODE_HELP] = 118, - [Q_KEY_CODE_META_L] = 120, - [Q_KEY_CODE_META_R] = 122, - [Q_KEY_CODE_COMPOSE] = 67, - [Q_KEY_CODE_PRINT] = 22, - [Q_KEY_CODE_SYSRQ] = 21, -}; static void sunkbd_handle_event(DeviceState *dev, QemuConsole *src, InputEvent *evt) @@ -879,7 +759,11 @@ static void sunkbd_handle_event(DeviceState *dev, QemuConsole *src, } } - keycode = qcode_to_keycode[qcode]; + if (qcode > qemu_input_map_qcode_to_sun_len) { + return; + } + + keycode = qemu_input_map_qcode_to_sun[qcode]; if (!key->down) { keycode |= 0x80; } diff --git a/include/ui/input.h b/include/ui/input.h index 76235ba97a..bf3d0d1060 100644 --- a/include/ui/input.h +++ b/include/ui/input.h @@ -86,6 +86,9 @@ extern const guint16 qemu_input_map_qcode_to_linux[]; extern const guint qemu_input_map_qcode_to_qnum_len; extern const guint16 qemu_input_map_qcode_to_qnum[]; +extern const guint qemu_input_map_qcode_to_sun_len; +extern const guint16 qemu_input_map_qcode_to_sun[]; + extern const guint qemu_input_map_qnum_to_qcode_len; extern const guint16 qemu_input_map_qnum_to_qcode[]; diff --git a/ui/input-keymap.c b/ui/input-keymap.c index d90f6a16f7..1f60caf314 100644 --- a/ui/input-keymap.c +++ b/ui/input-keymap.c @@ -11,6 +11,7 @@ #include "ui/input-keymap-qcode-to-atset3.c" #include "ui/input-keymap-qcode-to-linux.c" #include "ui/input-keymap-qcode-to-qnum.c" +#include "ui/input-keymap-qcode-to-sun.c" #include "ui/input-keymap-qnum-to-qcode.c" int qemu_input_linux_to_qcode(unsigned int lnx) -- 2.14.3 From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Daniel P. Berrange" Subject: [PATCH v6 3/4] hw: convert the escc device to keycodemapdb Date: Tue, 12 Dec 2017 14:10:43 +0000 Message-ID: <20171212141044.2582-4-berrange@redhat.com> References: <20171212141044.2582-1-berrange@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eOlGz-0004b4-5G for xen-devel@lists.xenproject.org; Tue, 12 Dec 2017 14:11:05 +0000 In-Reply-To: <20171212141044.2582-1-berrange@redhat.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: qemu-devel@nongnu.org Cc: Stefano Stabellini , "Daniel P. Berrange" , Gerd Hoffmann , xen-devel@lists.xenproject.org, Anthony Perard , Paolo Bonzini List-Id: xen-devel@lists.xenproject.org UmVwbGFjZSB0aGUgcWNvZGVfdG9fa2V5Y29kZSB0YWJsZSB3aXRoIGF1dG9tYXRpY2FsbHkKZ2Vu ZXJhdGVkIHRhYmxlcy4KCk1pc3NpbmcgZW50cmllcyBpbiBxY29kZV90b19rZXljb2RlIG5vdyBm aXhlZDoKCiAtIFFfS0VZX0NPREVfS1BfQ09NTUEgLT4gMHgyZAoKU2lnbmVkLW9mZi1ieTogRGFu aWVsIFAuIEJlcnJhbmdlIDxiZXJyYW5nZUByZWRoYXQuY29tPgotLS0KIE1ha2VmaWxlICAgICAg ICAgICB8ICAgMSArCiBody9jaGFyL2VzY2MuYyAgICAgfCAxMjYgKysrLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGluY2x1ZGUvdWkvaW5wdXQuaCB8 ICAgMyArKwogdWkvaW5wdXQta2V5bWFwLmMgIHwgICAxICsKIDQgZmlsZXMgY2hhbmdlZCwgMTAg aW5zZXJ0aW9ucygrKSwgMTIxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIv TWFrZWZpbGUKaW5kZXggMWU0MjM3ZmQyZi4uZWFlYzFkMDM4MSAxMDA2NDQKLS0tIGEvTWFrZWZp bGUKKysrIGIvTWFrZWZpbGUKQEAgLTIzMiw2ICsyMzIsNyBAQCBLRVlDT0RFTUFQX0ZJTEVTID0g XAogCQkgdWkvaW5wdXQta2V5bWFwLXFjb2RlLXRvLWF0c2V0My5jIFwKIAkJIHVpL2lucHV0LWtl eW1hcC1xY29kZS10by1saW51eC5jIFwKIAkJIHVpL2lucHV0LWtleW1hcC1xY29kZS10by1xbnVt LmMgXAorCQkgdWkvaW5wdXQta2V5bWFwLXFjb2RlLXRvLXN1bi5jIFwKIAkJIHVpL2lucHV0LWtl eW1hcC1xbnVtLXRvLXFjb2RlLmMgXAogCQkgJChOVUxMKQogCmRpZmYgLS1naXQgYS9ody9jaGFy L2VzY2MuYyBiL2h3L2NoYXIvZXNjYy5jCmluZGV4IDNhYjgzMWE2YTcuLjQ0OWJmMmZjNjMgMTAw NjQ0Ci0tLSBhL2h3L2NoYXIvZXNjYy5jCisrKyBiL2h3L2NoYXIvZXNjYy5jCkBAIC03MTcsMTI2 ICs3MTcsNiBAQCBNZW1vcnlSZWdpb24gKmVzY2NfaW5pdChod2FkZHIgYmFzZSwgcWVtdV9pcnEg aXJxQSwgcWVtdV9pcnEgaXJxQiwKICAgICByZXR1cm4gJmQtPm1taW87CiB9CiAKLXN0YXRpYyBj b25zdCB1aW50OF90IHFjb2RlX3RvX2tleWNvZGVbUV9LRVlfQ09ERV9fTUFYXSA9IHsKLSAgICBb UV9LRVlfQ09ERV9TSElGVF0gICAgICAgICA9IDk5LAotICAgIFtRX0tFWV9DT0RFX1NISUZUX1Jd ICAgICAgID0gMTEwLAotICAgIFtRX0tFWV9DT0RFX0FMVF0gICAgICAgICAgID0gMTksCi0gICAg W1FfS0VZX0NPREVfQUxUX1JdICAgICAgICAgPSAxMywKLSAgICBbUV9LRVlfQ09ERV9DVFJMXSAg ICAgICAgICA9IDc2LAotICAgIFtRX0tFWV9DT0RFX0NUUkxfUl0gICAgICAgID0gNzYsCi0gICAg W1FfS0VZX0NPREVfRVNDXSAgICAgICAgICAgPSAyOSwKLSAgICBbUV9LRVlfQ09ERV8xXSAgICAg ICAgICAgICA9IDMwLAotICAgIFtRX0tFWV9DT0RFXzJdICAgICAgICAgICAgID0gMzEsCi0gICAg W1FfS0VZX0NPREVfM10gICAgICAgICAgICAgPSAzMiwKLSAgICBbUV9LRVlfQ09ERV80XSAgICAg ICAgICAgICA9IDMzLAotICAgIFtRX0tFWV9DT0RFXzVdICAgICAgICAgICAgID0gMzQsCi0gICAg W1FfS0VZX0NPREVfNl0gICAgICAgICAgICAgPSAzNSwKLSAgICBbUV9LRVlfQ09ERV83XSAgICAg ICAgICAgICA9IDM2LAotICAgIFtRX0tFWV9DT0RFXzhdICAgICAgICAgICAgID0gMzcsCi0gICAg W1FfS0VZX0NPREVfOV0gICAgICAgICAgICAgPSAzOCwKLSAgICBbUV9LRVlfQ09ERV8wXSAgICAg ICAgICAgICA9IDM5LAotICAgIFtRX0tFWV9DT0RFX01JTlVTXSAgICAgICAgID0gNDAsCi0gICAg W1FfS0VZX0NPREVfRVFVQUxdICAgICAgICAgPSA0MSwKLSAgICBbUV9LRVlfQ09ERV9CQUNLU1BB Q0VdICAgICA9IDQzLAotICAgIFtRX0tFWV9DT0RFX1RBQl0gICAgICAgICAgID0gNTMsCi0gICAg W1FfS0VZX0NPREVfUV0gICAgICAgICAgICAgPSA1NCwKLSAgICBbUV9LRVlfQ09ERV9XXSAgICAg ICAgICAgICA9IDU1LAotICAgIFtRX0tFWV9DT0RFX0VdICAgICAgICAgICAgID0gNTYsCi0gICAg W1FfS0VZX0NPREVfUl0gICAgICAgICAgICAgPSA1NywKLSAgICBbUV9LRVlfQ09ERV9UXSAgICAg ICAgICAgICA9IDU4LAotICAgIFtRX0tFWV9DT0RFX1ldICAgICAgICAgICAgID0gNTksCi0gICAg W1FfS0VZX0NPREVfVV0gICAgICAgICAgICAgPSA2MCwKLSAgICBbUV9LRVlfQ09ERV9JXSAgICAg ICAgICAgICA9IDYxLAotICAgIFtRX0tFWV9DT0RFX09dICAgICAgICAgICAgID0gNjIsCi0gICAg W1FfS0VZX0NPREVfUF0gICAgICAgICAgICAgPSA2MywKLSAgICBbUV9LRVlfQ09ERV9CUkFDS0VU X0xFRlRdICA9IDY0LAotICAgIFtRX0tFWV9DT0RFX0JSQUNLRVRfUklHSFRdID0gNjUsCi0gICAg W1FfS0VZX0NPREVfUkVUXSAgICAgICAgICAgPSA4OSwKLSAgICBbUV9LRVlfQ09ERV9BXSAgICAg ICAgICAgICA9IDc3LAotICAgIFtRX0tFWV9DT0RFX1NdICAgICAgICAgICAgID0gNzgsCi0gICAg W1FfS0VZX0NPREVfRF0gICAgICAgICAgICAgPSA3OSwKLSAgICBbUV9LRVlfQ09ERV9GXSAgICAg ICAgICAgICA9IDgwLAotICAgIFtRX0tFWV9DT0RFX0ddICAgICAgICAgICAgID0gODEsCi0gICAg W1FfS0VZX0NPREVfSF0gICAgICAgICAgICAgPSA4MiwKLSAgICBbUV9LRVlfQ09ERV9KXSAgICAg ICAgICAgICA9IDgzLAotICAgIFtRX0tFWV9DT0RFX0tdICAgICAgICAgICAgID0gODQsCi0gICAg W1FfS0VZX0NPREVfTF0gICAgICAgICAgICAgPSA4NSwKLSAgICBbUV9LRVlfQ09ERV9TRU1JQ09M T05dICAgICA9IDg2LAotICAgIFtRX0tFWV9DT0RFX0FQT1NUUk9QSEVdICAgID0gODcsCi0gICAg W1FfS0VZX0NPREVfR1JBVkVfQUNDRU5UXSAgPSA0MiwKLSAgICBbUV9LRVlfQ09ERV9CQUNLU0xB U0hdICAgICA9IDg4LAotICAgIFtRX0tFWV9DT0RFX1pdICAgICAgICAgICAgID0gMTAwLAotICAg IFtRX0tFWV9DT0RFX1hdICAgICAgICAgICAgID0gMTAxLAotICAgIFtRX0tFWV9DT0RFX0NdICAg ICAgICAgICAgID0gMTAyLAotICAgIFtRX0tFWV9DT0RFX1ZdICAgICAgICAgICAgID0gMTAzLAot ICAgIFtRX0tFWV9DT0RFX0JdICAgICAgICAgICAgID0gMTA0LAotICAgIFtRX0tFWV9DT0RFX05d ICAgICAgICAgICAgID0gMTA1LAotICAgIFtRX0tFWV9DT0RFX01dICAgICAgICAgICAgID0gMTA2 LAotICAgIFtRX0tFWV9DT0RFX0NPTU1BXSAgICAgICAgID0gMTA3LAotICAgIFtRX0tFWV9DT0RF X0RPVF0gICAgICAgICAgID0gMTA4LAotICAgIFtRX0tFWV9DT0RFX1NMQVNIXSAgICAgICAgID0g MTA5LAotICAgIFtRX0tFWV9DT0RFX0FTVEVSSVNLXSAgICAgID0gNDcsCi0gICAgW1FfS0VZX0NP REVfU1BDXSAgICAgICAgICAgPSAxMjEsCi0gICAgW1FfS0VZX0NPREVfQ0FQU19MT0NLXSAgICAg PSAxMTksCi0gICAgW1FfS0VZX0NPREVfRjFdICAgICAgICAgICAgPSA1LAotICAgIFtRX0tFWV9D T0RFX0YyXSAgICAgICAgICAgID0gNiwKLSAgICBbUV9LRVlfQ09ERV9GM10gICAgICAgICAgICA9 IDgsCi0gICAgW1FfS0VZX0NPREVfRjRdICAgICAgICAgICAgPSAxMCwKLSAgICBbUV9LRVlfQ09E RV9GNV0gICAgICAgICAgICA9IDEyLAotICAgIFtRX0tFWV9DT0RFX0Y2XSAgICAgICAgICAgID0g MTQsCi0gICAgW1FfS0VZX0NPREVfRjddICAgICAgICAgICAgPSAxNiwKLSAgICBbUV9LRVlfQ09E RV9GOF0gICAgICAgICAgICA9IDE3LAotICAgIFtRX0tFWV9DT0RFX0Y5XSAgICAgICAgICAgID0g MTgsCi0gICAgW1FfS0VZX0NPREVfRjEwXSAgICAgICAgICAgPSA3LAotICAgIFtRX0tFWV9DT0RF X05VTV9MT0NLXSAgICAgID0gOTgsCi0gICAgW1FfS0VZX0NPREVfU0NST0xMX0xPQ0tdICAgPSAy MywKLSAgICBbUV9LRVlfQ09ERV9LUF9ESVZJREVdICAgICA9IDQ2LAotICAgIFtRX0tFWV9DT0RF X0tQX01VTFRJUExZXSAgID0gNDcsCi0gICAgW1FfS0VZX0NPREVfS1BfU1VCVFJBQ1RdICAgPSA3 MSwKLSAgICBbUV9LRVlfQ09ERV9LUF9BRERdICAgICAgICA9IDEyNSwKLSAgICBbUV9LRVlfQ09E RV9LUF9FTlRFUl0gICAgICA9IDkwLAotICAgIFtRX0tFWV9DT0RFX0tQX0RFQ0lNQUxdICAgID0g NTAsCi0gICAgW1FfS0VZX0NPREVfS1BfMF0gICAgICAgICAgPSA5NCwKLSAgICBbUV9LRVlfQ09E RV9LUF8xXSAgICAgICAgICA9IDExMiwKLSAgICBbUV9LRVlfQ09ERV9LUF8yXSAgICAgICAgICA9 IDExMywKLSAgICBbUV9LRVlfQ09ERV9LUF8zXSAgICAgICAgICA9IDExNCwKLSAgICBbUV9LRVlf Q09ERV9LUF80XSAgICAgICAgICA9IDkxLAotICAgIFtRX0tFWV9DT0RFX0tQXzVdICAgICAgICAg ID0gOTIsCi0gICAgW1FfS0VZX0NPREVfS1BfNl0gICAgICAgICAgPSA5MywKLSAgICBbUV9LRVlf Q09ERV9LUF83XSAgICAgICAgICA9IDY4LAotICAgIFtRX0tFWV9DT0RFX0tQXzhdICAgICAgICAg ID0gNjksCi0gICAgW1FfS0VZX0NPREVfS1BfOV0gICAgICAgICAgPSA3MCwKLSAgICBbUV9LRVlf Q09ERV9MRVNTXSAgICAgICAgICA9IDEyNCwKLSAgICBbUV9LRVlfQ09ERV9GMTFdICAgICAgICAg ICA9IDksCi0gICAgW1FfS0VZX0NPREVfRjEyXSAgICAgICAgICAgPSAxMSwKLSAgICBbUV9LRVlf Q09ERV9IT01FXSAgICAgICAgICA9IDUyLAotICAgIFtRX0tFWV9DT0RFX1BHVVBdICAgICAgICAg ID0gOTYsCi0gICAgW1FfS0VZX0NPREVfUEdETl0gICAgICAgICAgPSAxMjMsCi0gICAgW1FfS0VZ X0NPREVfRU5EXSAgICAgICAgICAgPSA3NCwKLSAgICBbUV9LRVlfQ09ERV9MRUZUXSAgICAgICAg ICA9IDI0LAotICAgIFtRX0tFWV9DT0RFX1VQXSAgICAgICAgICAgID0gMjAsCi0gICAgW1FfS0VZ X0NPREVfRE9XTl0gICAgICAgICAgPSAyNywKLSAgICBbUV9LRVlfQ09ERV9SSUdIVF0gICAgICAg ICA9IDI4LAotICAgIFtRX0tFWV9DT0RFX0lOU0VSVF0gICAgICAgID0gNDQsCi0gICAgW1FfS0VZ X0NPREVfREVMRVRFXSAgICAgICAgPSA2NiwKLSAgICBbUV9LRVlfQ09ERV9TVE9QXSAgICAgICAg ICA9IDEsCi0gICAgW1FfS0VZX0NPREVfQUdBSU5dICAgICAgICAgPSAzLAotICAgIFtRX0tFWV9D T0RFX1BST1BTXSAgICAgICAgID0gMjUsCi0gICAgW1FfS0VZX0NPREVfVU5ET10gICAgICAgICAg PSAyNiwKLSAgICBbUV9LRVlfQ09ERV9GUk9OVF0gICAgICAgICA9IDQ5LAotICAgIFtRX0tFWV9D T0RFX0NPUFldICAgICAgICAgID0gNTEsCi0gICAgW1FfS0VZX0NPREVfT1BFTl0gICAgICAgICAg PSA3MiwKLSAgICBbUV9LRVlfQ09ERV9QQVNURV0gICAgICAgICA9IDczLAotICAgIFtRX0tFWV9D T0RFX0ZJTkRdICAgICAgICAgID0gOTUsCi0gICAgW1FfS0VZX0NPREVfQ1VUXSAgICAgICAgICAg PSA5NywKLSAgICBbUV9LRVlfQ09ERV9MRl0gICAgICAgICAgICA9IDExMSwKLSAgICBbUV9LRVlf Q09ERV9IRUxQXSAgICAgICAgICA9IDExOCwKLSAgICBbUV9LRVlfQ09ERV9NRVRBX0xdICAgICAg ICA9IDEyMCwKLSAgICBbUV9LRVlfQ09ERV9NRVRBX1JdICAgICAgICA9IDEyMiwKLSAgICBbUV9L RVlfQ09ERV9DT01QT1NFXSAgICAgICA9IDY3LAotICAgIFtRX0tFWV9DT0RFX1BSSU5UXSAgICAg ICAgID0gMjIsCi0gICAgW1FfS0VZX0NPREVfU1lTUlFdICAgICAgICAgPSAyMSwKLX07CiAKIHN0 YXRpYyB2b2lkIHN1bmtiZF9oYW5kbGVfZXZlbnQoRGV2aWNlU3RhdGUgKmRldiwgUWVtdUNvbnNv bGUgKnNyYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXRFdmVudCAqZXZ0 KQpAQCAtODc5LDcgKzc1OSwxMSBAQCBzdGF0aWMgdm9pZCBzdW5rYmRfaGFuZGxlX2V2ZW50KERl dmljZVN0YXRlICpkZXYsIFFlbXVDb25zb2xlICpzcmMsCiAgICAgICAgIH0KICAgICB9CiAKLSAg ICBrZXljb2RlID0gcWNvZGVfdG9fa2V5Y29kZVtxY29kZV07CisgICAgaWYgKHFjb2RlID4gcWVt dV9pbnB1dF9tYXBfcWNvZGVfdG9fc3VuX2xlbikgeworICAgICAgICByZXR1cm47CisgICAgfQor CisgICAga2V5Y29kZSA9IHFlbXVfaW5wdXRfbWFwX3Fjb2RlX3RvX3N1bltxY29kZV07CiAgICAg aWYgKCFrZXktPmRvd24pIHsKICAgICAgICAga2V5Y29kZSB8PSAweDgwOwogICAgIH0KZGlmZiAt LWdpdCBhL2luY2x1ZGUvdWkvaW5wdXQuaCBiL2luY2x1ZGUvdWkvaW5wdXQuaAppbmRleCA3NjIz NWJhOTdhLi5iZjNkMGQxMDYwIDEwMDY0NAotLS0gYS9pbmNsdWRlL3VpL2lucHV0LmgKKysrIGIv aW5jbHVkZS91aS9pbnB1dC5oCkBAIC04Niw2ICs4Niw5IEBAIGV4dGVybiBjb25zdCBndWludDE2 IHFlbXVfaW5wdXRfbWFwX3Fjb2RlX3RvX2xpbnV4W107CiBleHRlcm4gY29uc3QgZ3VpbnQgcWVt dV9pbnB1dF9tYXBfcWNvZGVfdG9fcW51bV9sZW47CiBleHRlcm4gY29uc3QgZ3VpbnQxNiBxZW11 X2lucHV0X21hcF9xY29kZV90b19xbnVtW107CiAKK2V4dGVybiBjb25zdCBndWludCBxZW11X2lu cHV0X21hcF9xY29kZV90b19zdW5fbGVuOworZXh0ZXJuIGNvbnN0IGd1aW50MTYgcWVtdV9pbnB1 dF9tYXBfcWNvZGVfdG9fc3VuW107CisKIGV4dGVybiBjb25zdCBndWludCBxZW11X2lucHV0X21h cF9xbnVtX3RvX3Fjb2RlX2xlbjsKIGV4dGVybiBjb25zdCBndWludDE2IHFlbXVfaW5wdXRfbWFw X3FudW1fdG9fcWNvZGVbXTsKIApkaWZmIC0tZ2l0IGEvdWkvaW5wdXQta2V5bWFwLmMgYi91aS9p bnB1dC1rZXltYXAuYwppbmRleCBkOTBmNmExNmY3Li4xZjYwY2FmMzE0IDEwMDY0NAotLS0gYS91 aS9pbnB1dC1rZXltYXAuYworKysgYi91aS9pbnB1dC1rZXltYXAuYwpAQCAtMTEsNiArMTEsNyBA QAogI2luY2x1ZGUgInVpL2lucHV0LWtleW1hcC1xY29kZS10by1hdHNldDMuYyIKICNpbmNsdWRl ICJ1aS9pbnB1dC1rZXltYXAtcWNvZGUtdG8tbGludXguYyIKICNpbmNsdWRlICJ1aS9pbnB1dC1r ZXltYXAtcWNvZGUtdG8tcW51bS5jIgorI2luY2x1ZGUgInVpL2lucHV0LWtleW1hcC1xY29kZS10 by1zdW4uYyIKICNpbmNsdWRlICJ1aS9pbnB1dC1rZXltYXAtcW51bS10by1xY29kZS5jIgogCiBp bnQgcWVtdV9pbnB1dF9saW51eF90b19xY29kZSh1bnNpZ25lZCBpbnQgbG54KQotLSAKMi4xNC4z CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==