* Re: [PATCH 1/2] Input: userio - Update maintainer name
From: thatslyude @ 2026-05-27 16:32 UTC (permalink / raw)
To: Vicki Pfau, Dmitry Torokhov, linux-input
In-Reply-To: <20260522015040.3953472-1-vi@endrift.com>
Thank you ♥
Reviewed-by: Lyude Paul <lyude@redhat.com>
On Thu, 2026-05-21 at 18:50 -0700, Vicki Pfau wrote:
> She's been committing under the name Lyude Paul for a while
>
> Signed-off-by: Vicki Pfau <vi@endrift.com>
> ---
> Documentation/input/userio.rst | 2 +-
> MAINTAINERS | 2 +-
> drivers/input/serio/userio.c | 4 ++--
> include/uapi/linux/userio.h | 2 +-
> 4 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/Documentation/input/userio.rst
> b/Documentation/input/userio.rst
> index f780c77931fe..415962152815 100644
> --- a/Documentation/input/userio.rst
> +++ b/Documentation/input/userio.rst
> @@ -5,7 +5,7 @@ The userio Protocol
> ===================
>
>
> -:Copyright: |copy| 2015 Stephen Chandler Paul <thatslyude@gmail.com>
> +:Copyright: |copy| 2015 Lyude Paul <thatslyude@gmail.com>
>
> Sponsored by Red Hat
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 7cf5b55c5973..ceacb1c1d679 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -28105,7 +28105,7 @@ F: sound/drivers/pcmtest.c
> F: tools/testing/selftests/alsa/test-pcmtest-driver.c
>
> VIRTUAL SERIO DEVICE DRIVER
> -M: Stephen Chandler Paul <thatslyude@gmail.com>
> +M: Lyude Paul <thatslyude@gmail.com>
> S: Maintained
> F: drivers/input/serio/userio.c
> F: include/uapi/linux/userio.h
> diff --git a/drivers/input/serio/userio.c
> b/drivers/input/serio/userio.c
> index 91cb7a177b2d..abca8cb6aca5 100644
> --- a/drivers/input/serio/userio.c
> +++ b/drivers/input/serio/userio.c
> @@ -1,7 +1,7 @@
> /*
> * userio kernel serio device emulation module
> * Copyright (C) 2015 Red Hat
> - * Copyright (C) 2015 Stephen Chandler Paul <thatslyude@gmail.com>
> + * Copyright (C) 2015 Lyude Paul <thatslyude@gmail.com>
> *
> * This program is free software; you can redistribute it and/or
> modify it
> * under the terms of the GNU Lesser General Public License as
> published by
> @@ -278,6 +278,6 @@ module_driver(userio_misc, misc_register,
> misc_deregister);
> MODULE_ALIAS_MISCDEV(USERIO_MINOR);
> MODULE_ALIAS("devname:" USERIO_NAME);
>
> -MODULE_AUTHOR("Stephen Chandler Paul <thatslyude@gmail.com>");
> +MODULE_AUTHOR("Lyude Paul <thatslyude@gmail.com>");
> MODULE_DESCRIPTION("Virtual Serio Device Support");
> MODULE_LICENSE("GPL");
> diff --git a/include/uapi/linux/userio.h
> b/include/uapi/linux/userio.h
> index 74c9951d2cd0..98fe7e9089c4 100644
> --- a/include/uapi/linux/userio.h
> +++ b/include/uapi/linux/userio.h
> @@ -2,7 +2,7 @@
> /*
> * userio: virtual serio device support
> * Copyright (C) 2015 Red Hat
> - * Copyright (C) 2015 Lyude (Stephen Chandler Paul)
> <cpaul@redhat.com>
> + * Copyright (C) 2015 Lyude Paul <thatslyude@gmail.com>
> *
> * This program is free software; you can redistribute it and/or
> modify it
> * under the terms of the GNU Lesser General Public License as
> published by the
^ permalink raw reply
* Re: [PATCH 1/1] HID: wacom: Fix OOB write in wacom_hid_set_device_mode()
From: Lee Jones @ 2026-05-27 16:07 UTC (permalink / raw)
To: Benjamin Tissoires
Cc: Ping Cheng, Ping Cheng, Jason Gerecke, Jiri Kosina, linux-input,
linux-kernel, stable
In-Reply-To: <20260527155753.GD712405@google.com>
On Wed, 27 May 2026, Lee Jones wrote:
> On Thu, 21 May 2026, Lee Jones wrote:
>
> > On Thu, 21 May 2026, Benjamin Tissoires wrote:
> >
> > > On May 19 2026, Lee Jones wrote:
> > > > On Wed, 13 May 2026, Ping Cheng wrote:
> > > >
> > > > > On Wed, May 13, 2026 at 1:05 AM Lee Jones <lee@kernel.org> wrote:
> > > > > >
> > > > > > wacom_hid_set_device_mode() currently assumes that the HID_DG_INPUTMODE
> > > > > > usage is always located in the first field (field[0]) of the feature report.
> > > > > > However, a device can specify HID_DG_INPUTMODE in a different field.
> > > > > >
> > > > > > If HID_DG_INPUTMODE is in a field other than the first one and the first
> > > > > > field has a report_count smaller than the usage_index of HID_DG_INPUTMODE,
> > > > > > this leads to an out-of-bounds write to r->field[0]->value.
> > > > > >
> > > > > > Fix this by storing the field index of HID_DG_INPUTMODE in 'struct
> > > > > > hid_data' during feature mapping. In wacom_hid_set_device_mode(), use
> > > > > > this stored field index to access the correct field and add bounds
> > > > > > checks to ensure both the field index and the value index are within
> > > > > > valid ranges before writing.
> > > > > >
> > > > > > Cc: stable@vger.kernel.org
> > > > > > Fixes: 5ae6e89f7409 ("HID: wacom: implement the finger part of the HID generic handling")
> > > > > > Signed-off-by: Lee Jones <lee@kernel.org>
> > > > >
> > > > > Patch looks sensible to me. Thank you for your effort, Lee!
> > > > >
> > > > > Tested-by: Ping Cheng <ping.cheng@wacom.com>
> > > > > Reviewed-by: Ping Cheng <ping.cheng@wacom.com>
> > > >
> > > > Thank you Ping, I appreciate your review.
> > > >
> > > > HID folks - any movement on this please?
> > > >
> > >
> > > I wanted to apply it today, but the patch conflicts with our current
> > > for-7.1/upstream-fixes.
> > >
> > > Could you rebase on top of this branch so we can take this without me
> > > messing with your patch?
> >
> > Sure. Leave it with me. Probably be early next week.
>
> Are you sure this conflicted?
>
> I just rebased it onto hid/for-7.1/upstream-fixes without issue.
Rebased patch here (not sure if it's actually different:
https://lore.kernel.org/all/20260527160528.847928-1-lee@kernel.org/
--
Lee Jones
^ permalink raw reply
* [RESEND 1/1] HID: wacom: Fix OOB write in wacom_hid_set_device_mode()
From: Lee Jones @ 2026-05-27 16:05 UTC (permalink / raw)
To: lee, Ping Cheng, Jason Gerecke, Jiri Kosina, Benjamin Tissoires,
linux-input, linux-kernel
Cc: stable
wacom_hid_set_device_mode() currently assumes that the HID_DG_INPUTMODE
usage is always located in the first field (field[0]) of the feature report.
However, a device can specify HID_DG_INPUTMODE in a different field.
If HID_DG_INPUTMODE is in a field other than the first one and the first
field has a report_count smaller than the usage_index of HID_DG_INPUTMODE,
this leads to an out-of-bounds write to r->field[0]->value.
Fix this by storing the field index of HID_DG_INPUTMODE in 'struct
hid_data' during feature mapping. In wacom_hid_set_device_mode(), use
this stored field index to access the correct field and add bounds
checks to ensure both the field index and the value index are within
valid ranges before writing.
Cc: stable@vger.kernel.org
Fixes: 5ae6e89f7409 ("HID: wacom: implement the finger part of the HID generic handling")
Tested-by: Ping Cheng <ping.cheng@wacom.com>
Reviewed-by: Ping Cheng <ping.cheng@wacom.com>
Signed-off-by: Lee Jones <lee@kernel.org>
---
drivers/hid/wacom_sys.c | 13 ++++++++++---
drivers/hid/wacom_wac.h | 1 +
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/drivers/hid/wacom_sys.c b/drivers/hid/wacom_sys.c
index a32320b351e3..2220168bf116 100644
--- a/drivers/hid/wacom_sys.c
+++ b/drivers/hid/wacom_sys.c
@@ -356,6 +356,7 @@ static void wacom_feature_mapping(struct hid_device *hdev,
hid_data->inputmode = field->report->id;
hid_data->inputmode_index = usage->usage_index;
+ hid_data->inputmode_field_index = field->index;
break;
case HID_UP_DIGITIZER:
@@ -571,9 +572,14 @@ static int wacom_hid_set_device_mode(struct hid_device *hdev)
re = &(hdev->report_enum[HID_FEATURE_REPORT]);
r = re->report_id_hash[hid_data->inputmode];
- if (r) {
- r->field[0]->value[hid_data->inputmode_index] = 2;
- hid_hw_request(hdev, r, HID_REQ_SET_REPORT);
+ if (r && hid_data->inputmode_field_index >= 0 &&
+ hid_data->inputmode_field_index < r->maxfield) {
+ struct hid_field *field = r->field[hid_data->inputmode_field_index];
+
+ if (field && hid_data->inputmode_index < field->report_count) {
+ field->value[hid_data->inputmode_index] = 2;
+ hid_hw_request(hdev, r, HID_REQ_SET_REPORT);
+ }
}
return 0;
}
@@ -2846,6 +2852,7 @@ static int wacom_probe(struct hid_device *hdev,
return -ENODEV;
wacom_wac->hid_data.inputmode = -1;
+ wacom_wac->hid_data.inputmode_field_index = -1;
wacom_wac->mode_report = -1;
if (hid_is_usb(hdev)) {
diff --git a/drivers/hid/wacom_wac.h b/drivers/hid/wacom_wac.h
index d4f7d8ca1e7e..126bec6e5c0c 100644
--- a/drivers/hid/wacom_wac.h
+++ b/drivers/hid/wacom_wac.h
@@ -295,6 +295,7 @@ struct wacom_shared {
struct hid_data {
__s16 inputmode; /* InputMode HID feature, -1 if non-existent */
__s16 inputmode_index; /* InputMode HID feature index in the report */
+ __s16 inputmode_field_index; /* InputMode HID feature field index in the report */
bool sense_state;
bool inrange_state;
bool eraser;
--
2.54.0.746.g67dd491aae-goog
^ permalink raw reply related
* [PATCH v2] HID: nintendo: add support for HORI Wireless Switch Pad
From: Hector Zelaya @ 2026-05-27 16:01 UTC (permalink / raw)
To: Jiri Kosina, Benjamin Tissoires, Daniel J. Ogorchock
Cc: linux-input, linux-kernel, Hector Zelaya, Joshua Peisach
Add support for the HORI Wireless Switch Pad (vendor 0x0f0d, product
0x00f6), a licensed third-party Nintendo Switch Pro Controller.
The controller reports controller type 0x06 (vs 0x03 for first-party
Pro Controllers) and has the following quirks:
- SPI flash calibration data is incompatible; use default stick
calibration values instead.
- X and Y button bits are swapped compared to first-party controllers;
add a dedicated button mapping table.
- Rumble and IMU enable may timeout (no vibration motor in hardware);
treat as non-fatal for licensed controllers.
Tested over Bluetooth on NixOS with kernel 7.0.5 and 7.0.10:
- All 14 buttons map correctly
- Player LED sets on connect
- Sticks report correctly with default calibration
- IMU/gyro data streams at 60Hz
- D-pad reports on ABS_HAT0X/HAT0Y
Device information:
Bluetooth name: Lic Pro Controller
Bluetooth HID: 0005:0F0D:00F6
Assisted-by: Kiro:Auto [Amazon Kiro IDE]
Signed-off-by: Hector Zelaya <hector@hectorzelaya.dev>
Reviewed-by: Joshua Peisach <jpeisach@ubuntu.com>
---
Changes in v2:
- Clear ret = 0 after non-fatal IMU/rumble timeouts to prevent
unintentional probe failure.
- Link to v1: https://patch.msgid.link/20260526-hori-support-v1-1-1861c0abc2e0@hectorzelaya.dev
To: Jiri Kosina <jikos@kernel.org>
To: Benjamin Tissoires <bentiss@kernel.org>
To: "Daniel J. Ogorchock" <djogorchock@gmail.com>
Cc: linux-input@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
drivers/hid/hid-ids.h | 3 ++
drivers/hid/hid-nintendo.c | 80 +++++++++++++++++++++++++++++++++++++++-------
2 files changed, 71 insertions(+), 12 deletions(-)
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index a1cfa436344a..3b0767cc47fd 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -683,6 +683,9 @@
#define USB_DEVICE_ID_HARMONIX_WII_RB3_KEYBOARD 0x3330
#define USB_DEVICE_ID_HARMONIX_WII_RB3_MPA_KEYBOARD_MODE 0x3338
+#define USB_VENDOR_ID_HORI 0x0f0d
+#define USB_DEVICE_ID_HORI_WIRELESS_SWITCH_PAD 0x00f6
+
#define USB_VENDOR_ID_HP 0x03f0
#define USB_PRODUCT_ID_HP_ELITE_PRESENTER_MOUSE_464A 0x464a
#define USB_PRODUCT_ID_HP_LOGITECH_OEM_USB_OPTICAL_MOUSE_0A4A 0x0a4a
diff --git a/drivers/hid/hid-nintendo.c b/drivers/hid/hid-nintendo.c
index 29008c2cc530..2d37ddeffdb6 100644
--- a/drivers/hid/hid-nintendo.c
+++ b/drivers/hid/hid-nintendo.c
@@ -316,6 +316,7 @@ enum joycon_ctlr_type {
JOYCON_CTLR_TYPE_JCL = 0x01,
JOYCON_CTLR_TYPE_JCR = 0x02,
JOYCON_CTLR_TYPE_PRO = 0x03,
+ JOYCON_CTLR_TYPE_LIC_PRO = 0x06,
JOYCON_CTLR_TYPE_NESL = 0x09,
JOYCON_CTLR_TYPE_NESR = 0x0A,
JOYCON_CTLR_TYPE_SNES = 0x0B,
@@ -433,6 +434,25 @@ static const struct joycon_ctlr_button_mapping procon_button_mappings[] = {
{ /* sentinel */ },
};
+/* Licensed Pro Controllers (e.g. HORI) swap X/Y bits in the report */
+static const struct joycon_ctlr_button_mapping lic_procon_button_mappings[] = {
+ { BTN_EAST, JC_BTN_A, },
+ { BTN_SOUTH, JC_BTN_B, },
+ { BTN_NORTH, JC_BTN_Y, },
+ { BTN_WEST, JC_BTN_X, },
+ { BTN_TL, JC_BTN_L, },
+ { BTN_TR, JC_BTN_R, },
+ { BTN_TL2, JC_BTN_ZL, },
+ { BTN_TR2, JC_BTN_ZR, },
+ { BTN_SELECT, JC_BTN_MINUS, },
+ { BTN_START, JC_BTN_PLUS, },
+ { BTN_THUMBL, JC_BTN_LSTICK, },
+ { BTN_THUMBR, JC_BTN_RSTICK, },
+ { BTN_MODE, JC_BTN_HOME, },
+ { BTN_Z, JC_BTN_CAP, },
+ { /* sentinel */ },
+};
+
static const struct joycon_ctlr_button_mapping nescon_button_mappings[] = {
{ BTN_SOUTH, JC_BTN_A, },
{ BTN_EAST, JC_BTN_B, },
@@ -695,7 +715,8 @@ static inline bool joycon_type_is_right_joycon(struct joycon_ctlr *ctlr)
static inline bool joycon_type_is_procon(struct joycon_ctlr *ctlr)
{
- return ctlr->ctlr_type == JOYCON_CTLR_TYPE_PRO;
+ return ctlr->ctlr_type == JOYCON_CTLR_TYPE_PRO ||
+ ctlr->ctlr_type == JOYCON_CTLR_TYPE_LIC_PRO;
}
static inline bool joycon_type_is_snescon(struct joycon_ctlr *ctlr)
@@ -1710,7 +1731,10 @@ static void joycon_parse_report(struct joycon_ctlr *ctlr,
joycon_report_left_stick(ctlr, rep);
joycon_report_right_stick(ctlr, rep);
joycon_report_dpad(ctlr, rep);
- joycon_report_buttons(ctlr, rep, procon_button_mappings);
+ if (ctlr->ctlr_type == JOYCON_CTLR_TYPE_LIC_PRO)
+ joycon_report_buttons(ctlr, rep, lic_procon_button_mappings);
+ else
+ joycon_report_buttons(ctlr, rep, procon_button_mappings);
} else if (joycon_type_is_any_nescon(ctlr)) {
joycon_report_dpad(ctlr, rep);
joycon_report_buttons(ctlr, rep, nescon_button_mappings);
@@ -2156,7 +2180,10 @@ static int joycon_input_create(struct joycon_ctlr *ctlr)
joycon_config_left_stick(ctlr->input);
joycon_config_right_stick(ctlr->input);
joycon_config_dpad(ctlr->input);
- joycon_config_buttons(ctlr->input, procon_button_mappings);
+ if (ctlr->ctlr_type == JOYCON_CTLR_TYPE_LIC_PRO)
+ joycon_config_buttons(ctlr->input, lic_procon_button_mappings);
+ else
+ joycon_config_buttons(ctlr->input, procon_button_mappings);
} else if (joycon_type_is_any_nescon(ctlr)) {
joycon_config_dpad(ctlr->input);
joycon_config_buttons(ctlr->input, nescon_button_mappings);
@@ -2503,13 +2530,30 @@ static int joycon_init(struct hid_device *hdev)
if (joycon_has_joysticks(ctlr)) {
/* get controller calibration data, and parse it */
- ret = joycon_request_calibration(ctlr);
- if (ret) {
+ if (ctlr->ctlr_type == JOYCON_CTLR_TYPE_LIC_PRO) {
/*
- * We can function with default calibration, but it may be
- * inaccurate. Provide a warning, and continue on.
+ * Licensed controllers may have incompatible SPI flash
+ * layouts. Use default calibration values.
*/
- hid_warn(hdev, "Analog stick positions may be inaccurate\n");
+ hid_info(hdev, "using default cal for licensed controller\n");
+ joycon_use_default_calibration(hdev,
+ &ctlr->left_stick_cal_x,
+ &ctlr->left_stick_cal_y,
+ "left", 0);
+ joycon_use_default_calibration(hdev,
+ &ctlr->right_stick_cal_x,
+ &ctlr->right_stick_cal_y,
+ "right", 0);
+ } else {
+ ret = joycon_request_calibration(ctlr);
+ if (ret) {
+ /*
+ * We can function with default calibration, but
+ * it may be inaccurate. Provide a warning, and
+ * continue on.
+ */
+ hid_warn(hdev, "Analog stick positions may be inaccurate\n");
+ }
}
}
@@ -2527,8 +2571,13 @@ static int joycon_init(struct hid_device *hdev)
/* Enable the IMU */
ret = joycon_enable_imu(ctlr);
if (ret) {
- hid_err(hdev, "Failed to enable the IMU; ret=%d\n", ret);
- goto out_unlock;
+ if (ctlr->ctlr_type == JOYCON_CTLR_TYPE_LIC_PRO) {
+ hid_dbg(hdev, "IMU enable failed for licensed controller, continuing\n");
+ ret = 0;
+ } else {
+ hid_err(hdev, "Failed to enable the IMU; ret=%d\n", ret);
+ goto out_unlock;
+ }
}
}
@@ -2543,8 +2592,13 @@ static int joycon_init(struct hid_device *hdev)
/* Enable rumble */
ret = joycon_enable_rumble(ctlr);
if (ret) {
- hid_err(hdev, "Failed to enable rumble; ret=%d\n", ret);
- goto out_unlock;
+ if (ctlr->ctlr_type == JOYCON_CTLR_TYPE_LIC_PRO) {
+ hid_dbg(hdev, "rumble enable failed for licensed controller, continuing\n");
+ ret = 0;
+ } else {
+ hid_err(hdev, "Failed to enable rumble; ret=%d\n", ret);
+ goto out_unlock;
+ }
}
}
@@ -2813,6 +2867,8 @@ static const struct hid_device_id nintendo_hid_devices[] = {
USB_DEVICE_ID_NINTENDO_GENCON) },
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_NINTENDO,
USB_DEVICE_ID_NINTENDO_N64CON) },
+ { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_HORI,
+ USB_DEVICE_ID_HORI_WIRELESS_SWITCH_PAD) },
{ }
};
MODULE_DEVICE_TABLE(hid, nintendo_hid_devices);
---
base-commit: e71bac24ec1f517f399a9eb471255b8f1c330b93
change-id: 20260526-hori-support-08b08bca40d8
Best regards,
--
Hector Zelaya <hector@hectorzelaya.dev>
^ permalink raw reply related
* Re: [PATCH] HID: i2c-hid-acpi: Add PRP0001 to match table and OF alias
From: sashiko-bot @ 2026-05-27 16:00 UTC (permalink / raw)
Cc: linux-input, dmitry.torokhov
In-Reply-To: <tencent_61698D7A14AC9BFE6C9F3FDB797FCA02E309@qq.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] Adding `PRP0001` directly to the ACPI match table incorrectly bypasses `compatible` string matching, causing the driver to intercept all PRP0001 I2C devices and spam the kernel log.
--
commit 7d0ee8c935eaadd4f5e66e197d5712a960fd31f5
Author: 谢致邦 (XIE Zhibang) <Yeking@Red54.com>
HID: i2c-hid-acpi: Add PRP0001 to match table and OF alias
This commit adds the PRP0001 ACPI ID to the i2c-hid-acpi driver's match
table and manually defines an OF module alias. This is intended to allow the
driver to probe devices that declare themselves as PRP0001 with a "hid-over-i2c"
compatible string in their _DSD.
> diff --git a/drivers/hid/i2c-hid/i2c-hid-acpi.c b/drivers/hid/i2c-hid/i2c-hid-acpi.c
> index abd700a101f46..515ced22c978d 100644
> --- a/drivers/hid/i2c-hid/i2c-hid-acpi.c
> +++ b/drivers/hid/i2c-hid/i2c-hid-acpi.c
> @@ -119,10 +119,30 @@ static int i2c_hid_acpi_probe(struct i2c_client *client)
> static const struct acpi_device_id i2c_hid_acpi_match[] = {
> { "ACPI0C50" },
> { "PNP0C50" },
> + /*
> + * Some devices, for example the Lenovo KaiTian N60d and Inspur CP300L3,
> + * declare their I2C HID ACPI touchpad in the DSDT as _HID "PRP0001"
> + * with _DSD compatible "hid-over-i2c" instead of the standard
> + * "PNP0C50". This worked before i2c-hid was split into i2c-hid-acpi
> + * and i2c-hid-of, but PRP0001 devices on the ACPI bus are no longer
> + * probed after the split. The _DSM call in probe() naturally rejects
> + * PRP0001 devices that are not actually I2C HID, so matching PRP0001
> + * here is safe.
> + */
> + { "PRP0001" },
[Severity: Medium]
Does adding PRP0001 directly to the ACPI match table bypass the OF compatible
string check in __acpi_match_device()?
PRP0001 is a special identifier used by the ACPI subsystem to defer matching
to the OF compatible string within the device's _DSD. When PRP0001 is
explicitly added here, the match returns true immediately without checking the
compatible string.
If a system has other unrelated I2C devices using PRP0001 (like temperature
sensors or RTCs utilizing compatible strings), won't the driver core attempt
to bind i2c-hid-acpi to all of them?
Because i2c_hid_acpi_probe() unconditionally evaluates the HID _DSM which will
fail for these unrelated devices, does this introduce boot delays and pollute
the kernel log with false-positive "Error _DSM call to get HID descriptor
address failed" messages for every non-HID PRP0001 device?
> { }
> };
> MODULE_DEVICE_TABLE(acpi, i2c_hid_acpi_match);
>
> + /*
> + * When an ACPI device has a _DSD "compatible" property, the uevent
> + * modalias uses the OF format (of:N<name>T<compatible>) instead of
> + * the ACPI format (acpi:<HID>). Add an OF alias so udev can autoload
> + * this module for such devices. probe() will reject pure DT devices
> + * via the _DSM HID descriptor call.
> + */
> +MODULE_ALIAS("of:N*TChid-over-i2c");
[Severity: Medium]
Instead of manually defining this MODULE_ALIAS, could we define an
of_device_id match table containing { .compatible = "hid-over-i2c" }?
Using an of_device_id table would naturally solve the matching logic by
allowing the ACPI core to correctly evaluate the _DSD compatible string.
This prevents intercepting unrelated PRP0001 devices, and the driver core
would automatically generate the correct, robust module alias for autoloading.
--
Sashiko AI review · https://sashiko.dev/#/patchset/tencent_61698D7A14AC9BFE6C9F3FDB797FCA02E309@qq.com?part=1
^ permalink raw reply
* Re: [PATCH 1/1] HID: wacom: Fix OOB write in wacom_hid_set_device_mode()
From: Lee Jones @ 2026-05-27 15:57 UTC (permalink / raw)
To: Benjamin Tissoires
Cc: Ping Cheng, Ping Cheng, Jason Gerecke, Jiri Kosina, linux-input,
linux-kernel, stable
In-Reply-To: <20260521162212.GF3591266@google.com>
On Thu, 21 May 2026, Lee Jones wrote:
> On Thu, 21 May 2026, Benjamin Tissoires wrote:
>
> > On May 19 2026, Lee Jones wrote:
> > > On Wed, 13 May 2026, Ping Cheng wrote:
> > >
> > > > On Wed, May 13, 2026 at 1:05 AM Lee Jones <lee@kernel.org> wrote:
> > > > >
> > > > > wacom_hid_set_device_mode() currently assumes that the HID_DG_INPUTMODE
> > > > > usage is always located in the first field (field[0]) of the feature report.
> > > > > However, a device can specify HID_DG_INPUTMODE in a different field.
> > > > >
> > > > > If HID_DG_INPUTMODE is in a field other than the first one and the first
> > > > > field has a report_count smaller than the usage_index of HID_DG_INPUTMODE,
> > > > > this leads to an out-of-bounds write to r->field[0]->value.
> > > > >
> > > > > Fix this by storing the field index of HID_DG_INPUTMODE in 'struct
> > > > > hid_data' during feature mapping. In wacom_hid_set_device_mode(), use
> > > > > this stored field index to access the correct field and add bounds
> > > > > checks to ensure both the field index and the value index are within
> > > > > valid ranges before writing.
> > > > >
> > > > > Cc: stable@vger.kernel.org
> > > > > Fixes: 5ae6e89f7409 ("HID: wacom: implement the finger part of the HID generic handling")
> > > > > Signed-off-by: Lee Jones <lee@kernel.org>
> > > >
> > > > Patch looks sensible to me. Thank you for your effort, Lee!
> > > >
> > > > Tested-by: Ping Cheng <ping.cheng@wacom.com>
> > > > Reviewed-by: Ping Cheng <ping.cheng@wacom.com>
> > >
> > > Thank you Ping, I appreciate your review.
> > >
> > > HID folks - any movement on this please?
> > >
> >
> > I wanted to apply it today, but the patch conflicts with our current
> > for-7.1/upstream-fixes.
> >
> > Could you rebase on top of this branch so we can take this without me
> > messing with your patch?
>
> Sure. Leave it with me. Probably be early next week.
Are you sure this conflicted?
I just rebased it onto hid/for-7.1/upstream-fixes without issue.
--
Lee Jones
^ permalink raw reply
* Re: [PATCH] HID: i2c-hid-acpi: Add PRP0001 to match table and OF alias
From: Hans de Goede @ 2026-05-27 15:44 UTC (permalink / raw)
To: 谢致邦 (XIE Zhibang), linux-input
Cc: Jiri Kosina, Benjamin Tissoires, Mario Limonciello (AMD),
Douglas Anderson, linux-kernel
In-Reply-To: <tencent_61698D7A14AC9BFE6C9F3FDB797FCA02E309@qq.com>
Hi,
On 27-May-26 17:17, 谢致邦 (XIE Zhibang) wrote:
> Some devices, for example the Lenovo KaiTian N60d and Inspur CP300L3,
> declare their I2C HID ACPI touchpad in the DSDT as _HID "PRP0001" with
> _DSD compatible "hid-over-i2c" instead of the standard "PNP0C50". This
> worked before commit b33752c30023 ("HID: i2c-hid: Reorganize so ACPI and
> OF are separate modules"), but after the split, PRP0001 devices on the
> ACPI bus are no longer probed by either driver.
>
> Fix this by adding PRP0001 to i2c_hid_acpi_match so the driver probes
> these devices. The existing _DSM HID descriptor call in probe()
> naturally rejects any PRP0001 device that does not implement the
> protocol.
>
> A MODULE_ALIAS is also needed for autoloading: when an ACPI device has a
> _DSD "compatible" property, the uevent modalias uses the OF format
> (of:N<name>T<compatible>) instead of the ACPI format (acpi:<HID>), so
> udev would otherwise load only i2c-hid-of, which fails to probe because
> these devices lack the "hid-descr-addr" property.
Ok, so first of all please contact the vendors of these devices to fix
their firmware.
Either a _HID "PRP0001" value should be used with a *full* of description
matching the binding from Documentation/devicetree/bindings/input/hid-over-i2c.yaml
including hid-descr-addr. Or the firmware should use PNP0C50 + the _DSM
method to get the hid-desc-addr. Mixing and matching these 2 is bad,
very very bad.
IMHO the fix here as is is not acceptable this will make the i2c_hid_acpi
module load and worse *probe* every ACPI device with a "PRP0001" HID.
You claim the existing _DSM HID descriptor call will save the driver from
actually doing much of anything but IMHO that should not be relied on.
Currently the i2c_hid_of driver will get automatically loaded + try
to probe the device, but as you say this will fail due to lacking
hid-desc-addr. Have you tried adding DMI quirks to i2c_hid_of to
provide the hid-desc-addr through a quirk? (I wonder if the IRQ will
get picked up ok)
That seems a better solution than making 2 drivers probe the same
"hid-over-i2c" compatible and let one fail (with an ugly error msg
in the logs), while also making i2c_hid_acpi probe all PRP0001 devices
and make that fail (with more err logging) on all other devices.
I see the 2 laptops here are both using a Loongson architecture,
so any fix for this should IMHO also be wrapped in
#ifdef CONFIG_LOONGARCH ... #endif
Regards,
Hans
>
> Fixes: b33752c30023 ("HID: i2c-hid: Reorganize so ACPI and OF are separate modules")
> Signed-off-by: 谢致邦 (XIE Zhibang) <Yeking@Red54.com>
> ---
> drivers/hid/i2c-hid/i2c-hid-acpi.c | 20 ++++++++++++++++++++
> 1 file changed, 20 insertions(+)
>
> diff --git a/drivers/hid/i2c-hid/i2c-hid-acpi.c b/drivers/hid/i2c-hid/i2c-hid-acpi.c
> index abd700a101f4..515ced22c978 100644
> --- a/drivers/hid/i2c-hid/i2c-hid-acpi.c
> +++ b/drivers/hid/i2c-hid/i2c-hid-acpi.c
> @@ -119,10 +119,30 @@ static int i2c_hid_acpi_probe(struct i2c_client *client)
> static const struct acpi_device_id i2c_hid_acpi_match[] = {
> { "ACPI0C50" },
> { "PNP0C50" },
> + /*
> + * Some devices, for example the Lenovo KaiTian N60d and Inspur CP300L3,
> + * declare their I2C HID ACPI touchpad in the DSDT as _HID "PRP0001"
> + * with _DSD compatible "hid-over-i2c" instead of the standard
> + * "PNP0C50". This worked before i2c-hid was split into i2c-hid-acpi
> + * and i2c-hid-of, but PRP0001 devices on the ACPI bus are no longer
> + * probed after the split. The _DSM call in probe() naturally rejects
> + * PRP0001 devices that are not actually I2C HID, so matching PRP0001
> + * here is safe.
> + */
> + { "PRP0001" },
> { }
> };
> MODULE_DEVICE_TABLE(acpi, i2c_hid_acpi_match);
>
> + /*
> + * When an ACPI device has a _DSD "compatible" property, the uevent
> + * modalias uses the OF format (of:N<name>T<compatible>) instead of
> + * the ACPI format (acpi:<HID>). Add an OF alias so udev can autoload
> + * this module for such devices. probe() will reject pure DT devices
> + * via the _DSM HID descriptor call.
> + */
> +MODULE_ALIAS("of:N*TChid-over-i2c");
> +
> static struct i2c_driver i2c_hid_acpi_driver = {
> .driver = {
> .name = "i2c_hid_acpi",
^ permalink raw reply
* [PATCH] HID: i2c-hid-acpi: Add PRP0001 to match table and OF alias
From: 谢致邦 (XIE Zhibang) @ 2026-05-27 15:17 UTC (permalink / raw)
To: linux-input
Cc: 谢致邦 (XIE Zhibang), Jiri Kosina,
Benjamin Tissoires, Mario Limonciello (AMD), Hans de Goede,
Douglas Anderson, linux-kernel
Some devices, for example the Lenovo KaiTian N60d and Inspur CP300L3,
declare their I2C HID ACPI touchpad in the DSDT as _HID "PRP0001" with
_DSD compatible "hid-over-i2c" instead of the standard "PNP0C50". This
worked before commit b33752c30023 ("HID: i2c-hid: Reorganize so ACPI and
OF are separate modules"), but after the split, PRP0001 devices on the
ACPI bus are no longer probed by either driver.
Fix this by adding PRP0001 to i2c_hid_acpi_match so the driver probes
these devices. The existing _DSM HID descriptor call in probe()
naturally rejects any PRP0001 device that does not implement the
protocol.
A MODULE_ALIAS is also needed for autoloading: when an ACPI device has a
_DSD "compatible" property, the uevent modalias uses the OF format
(of:N<name>T<compatible>) instead of the ACPI format (acpi:<HID>), so
udev would otherwise load only i2c-hid-of, which fails to probe because
these devices lack the "hid-descr-addr" property.
Fixes: b33752c30023 ("HID: i2c-hid: Reorganize so ACPI and OF are separate modules")
Signed-off-by: 谢致邦 (XIE Zhibang) <Yeking@Red54.com>
---
drivers/hid/i2c-hid/i2c-hid-acpi.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/drivers/hid/i2c-hid/i2c-hid-acpi.c b/drivers/hid/i2c-hid/i2c-hid-acpi.c
index abd700a101f4..515ced22c978 100644
--- a/drivers/hid/i2c-hid/i2c-hid-acpi.c
+++ b/drivers/hid/i2c-hid/i2c-hid-acpi.c
@@ -119,10 +119,30 @@ static int i2c_hid_acpi_probe(struct i2c_client *client)
static const struct acpi_device_id i2c_hid_acpi_match[] = {
{ "ACPI0C50" },
{ "PNP0C50" },
+ /*
+ * Some devices, for example the Lenovo KaiTian N60d and Inspur CP300L3,
+ * declare their I2C HID ACPI touchpad in the DSDT as _HID "PRP0001"
+ * with _DSD compatible "hid-over-i2c" instead of the standard
+ * "PNP0C50". This worked before i2c-hid was split into i2c-hid-acpi
+ * and i2c-hid-of, but PRP0001 devices on the ACPI bus are no longer
+ * probed after the split. The _DSM call in probe() naturally rejects
+ * PRP0001 devices that are not actually I2C HID, so matching PRP0001
+ * here is safe.
+ */
+ { "PRP0001" },
{ }
};
MODULE_DEVICE_TABLE(acpi, i2c_hid_acpi_match);
+ /*
+ * When an ACPI device has a _DSD "compatible" property, the uevent
+ * modalias uses the OF format (of:N<name>T<compatible>) instead of
+ * the ACPI format (acpi:<HID>). Add an OF alias so udev can autoload
+ * this module for such devices. probe() will reject pure DT devices
+ * via the _DSM HID descriptor call.
+ */
+MODULE_ALIAS("of:N*TChid-over-i2c");
+
static struct i2c_driver i2c_hid_acpi_driver = {
.driver = {
.name = "i2c_hid_acpi",
--
2.43.0
^ permalink raw reply related
* Re: [PATCH v6 0/6] mfd: cpcap: convert documentation to schema and add Mot board support
From: Lee Jones @ 2026-05-27 15:14 UTC (permalink / raw)
To: Svyatoslav Ryhel
Cc: Dmitry Torokhov, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Pavel Machek, linux-input, devicetree, linux-kernel, linux-leds
In-Reply-To: <20260520182124.117863-1-clamor95@gmail.com>
On Wed, 20 May 2026, Svyatoslav Ryhel wrote:
> The initial goal was only to add support for the CPCAP used in the Mot
> Tegra20 board; however, since the documentation was already partially
> converted, I decided to complete the conversion to schema too.
>
> The CPCAP regulator, leds, rtc, pwrbutton and core files were converted
> from TXT to YAML while preserving the original structure. Mot board
> compatibility was added to the regulator and core schema. Since these
> were one-line patches, they were not separated into dedicated commits;
> however, the commit message notes this for both cases.
>
> Finally, the CPCAP MFD was slightly refactored to improve support for
> multiple subcell compositions.
Once you've fixed the DT issues that Rob pointed out, I'll merge the set.
--
Lee Jones
^ permalink raw reply
* Re: [PATCH] Input: ims-pcu - fix use-after-free in probe error path
From: Dmitry Torokhov @ 2026-05-27 14:58 UTC (permalink / raw)
To: Zhian Liang; +Cc: linux-input, linux-kernel, stable
In-Reply-To: <20260525151410.42750-1-liangzhan5dev@gmail.com>
On Mon, May 25, 2026 at 11:14:10PM +0800, Zhian Liang wrote:
> If the driver fails during init (e.g. in ims_pcu_init_application_mode),the error path frees the pcu struct without clearing the interface data.
>
> If the device is disconnected while in this state, the disconnect handler will retrieve the stale pointer from
> usb_get_intfdata() and trigger a use-after-free
This does not make sense. How will disconnect handler run if probe has
not completed?
>
> Fix this by setting the interface data to NULL in the probe before freeing the pcu struct.
>
> Fixes: 628329d52474 ("Input: add IMS Passenger Control Unit driver")
> Cc: <stable@vger.kernel.org>
> Signed-off-by: Zhian Liang <liangzhan5dev@gmail.com>
> ---
> drivers/input/misc/ims-pcu.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/input/misc/ims-pcu.c b/drivers/input/misc/ims-pcu.c
> index 4c022a36dbe8..fce3232ebf07 100644
> --- a/drivers/input/misc/ims-pcu.c
> +++ b/drivers/input/misc/ims-pcu.c
> @@ -2063,6 +2063,10 @@ static int ims_pcu_probe(struct usb_interface *intf,
> ims_pcu_buffers_free(pcu);
> err_unclaim_intf:
> usb_driver_release_interface(&ims_pcu_driver, pcu->data_intf);
> + goto err_clear_intfdata;
> +err_clear_intfdata:
> + if (pcu->ctrl_intf)
> + usb_set_intfdata(pcu->ctrl_intf, NULL);
> err_free_mem:
> kfree(pcu);
> return error;
Thanks.
--
Dmitry
^ permalink raw reply
* Re: [PATCH 1/1] HID: wacom: Fix multiple Use-After-Free issues in shared state
From: sashiko-bot @ 2026-05-27 14:55 UTC (permalink / raw)
To: Lee Jones; +Cc: dmitry.torokhov, linux-input
In-Reply-To: <20260527140731.642783-1-lee@kernel.org>
Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
Pre-existing issues:
- [High] The patch fails to fully resolve the Use-After-Free vulnerability for `touch_input` because interrupt handlers access it locklessly, leading to a Time-of-Check to Time-of-Use (TOCTOU) race condition.
- [High] A race condition exists between `kref_put()` and concurrent `kref_get()` due to missing list-level locking during object removal.
- [High] Unprotected and temporally separated assignments of `shared->touch` and `shared->touch_input` during probe allow concurrent `uhid` devices to desynchronize the shared state.
--
commit 007cb667e9154320e49d7d42911e8193520da3fe
Author: Lee Jones <lee@kernel.org>
HID: wacom: Fix multiple Use-After-Free issues in shared state
This commit redesigns the wacom_hdev_data structure to store stable static
copies of required attributes instead of a fragile representative pointer.
It explicitly clears the touch_input pointer in wacom_remove_shared_data()
under the wacom_udev_list_lock to address use-after-free vulnerabilities.
> diff --git a/drivers/hid/wacom_sys.c b/drivers/hid/wacom_sys.c
> index a32320b351e3e..9e4819c197c1b 100644
> --- a/drivers/hid/wacom_sys.c
> +++ b/drivers/hid/wacom_sys.c
[ ... ]
> @@ -871,10 +884,14 @@ static void wacom_remove_shared_data(void *res)
> data = container_of(wacom_wac->shared, struct wacom_hdev_data,
> shared);
>
> - if (wacom_wac->shared->touch == wacom->hdev)
> + mutex_lock(&wacom_udev_list_lock);
> + if (wacom_wac->shared->touch == wacom->hdev) {
> wacom_wac->shared->touch = NULL;
> - else if (wacom_wac->shared->pen == wacom->hdev)
> + wacom_wac->shared->touch_input = NULL;
[Severity: High]
This isn't a bug introduced by this patch, but does clearing this pointer under
the lock fully prevent use-after-free conditions?
Interrupt handlers read shared->touch_input locklessly (for example, in
wacom_wireless_irq()). An interrupt handler could check that
shared->touch_input is valid, but then get preempted.
Concurrently, wacom_remove_shared_data() clears the pointer here, and the
input device is subsequently unregistered and freed by devres.
When the interrupt handler resumes, could it pass the freed pointer to
input_report_switch(), causing a use-after-free? The lock protects writers,
but it appears readers remain vulnerable to this time-of-check to
time-of-use race.
> + } else if (wacom_wac->shared->pen == wacom->hdev) {
> wacom_wac->shared->pen = NULL;
> + }
> + mutex_unlock(&wacom_udev_list_lock);
>
> kref_put(&data->kref, wacom_release_shared_data);
[Severity: High]
This is a pre-existing issue, but can this kref_put() race with concurrent
list traversal?
It is called outside of wacom_udev_list_lock. If the reference count drops to 0,
another thread probing a sibling device could simultaneously acquire the list
lock in wacom_add_shared_data(), find the logically dead object before it is
removed from the list, and call kref_get().
This would attempt to increment a 0 refcount, returning a pointer to an object
that will unconditionally be freed as soon as the first thread acquires the
lock in wacom_release_shared_data(), leading to a use-after-free.
> wacom_wac->shared = NULL;
[ ... ]
> @@ -899,8 +916,13 @@ static int wacom_add_shared_data(struct hid_device *hdev)
> }
>
> kref_init(&data->kref);
> - data->dev = hdev;
> + strscpy(data->phys, hdev->phys, sizeof(data->phys));
> + data->vendor = hdev->vendor;
> + data->product = hdev->product;
> + data->device_type = wacom_wac->features.device_type;
> list_add_tail(&data->list, &wacom_udev_list);
> + } else {
> + data->device_type |= wacom_wac->features.device_type;
> }
>
> mutex_unlock(&wacom_udev_list_lock);
[Severity: High]
This is a pre-existing issue, but do the assignments to shared->touch and
shared->touch_input that follow this unlock need protection?
They are performed sequentially outside of any lock during device probe:
if (wacom_wac->features.device_type & WACOM_DEVICETYPE_TOUCH)
wacom_wac->shared->touch = hdev;
If two virtual devices with the same physical path are created concurrently
(for example, via uhid), they will share the same wacom_hdev_data structure.
Could a race in the probe sequence result in shared->touch pointing to
device B, while shared->touch_input points to device A?
If device A is then disconnected, wacom_remove_shared_data() would see
shared->touch == wacom->hdev as false and skip clearing shared->touch_input.
Device A's input device would be freed, leaving a dangling pointer that could
be dereferenced by sibling devices.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260527140731.642783-1-lee@kernel.org?part=1
^ permalink raw reply
* Re: [PATCH v7 0/7] mfd: Add support for Asus Transformer embedded controller
From: Lee Jones @ 2026-05-27 14:46 UTC (permalink / raw)
To: Svyatoslav Ryhel
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Dmitry Torokhov,
Pavel Machek, Sebastian Reichel, Ion Agorria,
Michał Mirosław, devicetree, linux-kernel, linux-input,
linux-leds, linux-pm
In-Reply-To: <20260518095907.36158-1-clamor95@gmail.com>
On Mon, 18 May 2026, Svyatoslav Ryhel wrote:
> Add support for embedded controller used in Asus Transformers for
> managing power and input functions.
Once you have your Input Acks, I'll merge everything through MFD.
--
Lee Jones
^ permalink raw reply
* [PATCH 1/1] HID: wacom: Fix multiple Use-After-Free issues in shared state
From: Lee Jones @ 2026-05-27 14:07 UTC (permalink / raw)
To: lee, Ping Cheng, Jason Gerecke, Jiri Kosina, Benjamin Tissoires,
Dmitry Torokhov, linux-input, linux-kernel
The Wacom driver coordinates state between sibling interfaces of the same
physical device (like Pen, Touch, Pad) using a shared structure
'wacom_shared' inside 'wacom_hdev_data'. The driver kept a volatile
representative pointer 'data->dev' pointing to a sibling 'hid_device'
for physical path comparisons during sibling matching.
This pointer management is fragile. When the representative device is
disconnected, wacom_remove_shared_data() failed to clear/update
'data->dev' or wacom_wac->shared->touch_input, leading to two Use-After-Free
vulnerabilities:
1. dangling 'touch_input' dereferenced during touch switch sync.
2. dangling 'data->dev' dereferenced during subsequent sibling probes.
Instead of adding complex pointer handover logic to keep 'data->dev'
updated (which has logic gaps with Pad siblings and introduces race
conditions), completely eliminate 'data->dev' pointer.
Redesign 'wacom_hdev_data' to store stable static copies of the required
representative attributes when it is first allocated:
- Copy 'phys' path string (stored in data->phys) for stable path comparison.
- Copy 'vendor' and 'product' IDs.
- Copy and accumulate 'device_type' capabilities as siblings are probed.
Also explicitly clear 'touch_input = NULL' in wacom_remove_shared_data()
under wacom_udev_list_lock to safely avoid the touch_input UAF.
This resolves all vulnerabilities permanently at the design level without
complex pointer lifecycles or race-prone swaps on device removal.
Fixes: 471d17148c8b ("Input: wacom - move the USB (now hid) Wacom driver in drivers/hid")
Signed-off-by: Lee Jones <lee@kernel.org>
---
drivers/hid/wacom_sys.c | 58 ++++++++++++++++++++++++++++-------------
1 file changed, 40 insertions(+), 18 deletions(-)
diff --git a/drivers/hid/wacom_sys.c b/drivers/hid/wacom_sys.c
index a32320b351e3..9e4819c197c1 100644
--- a/drivers/hid/wacom_sys.c
+++ b/drivers/hid/wacom_sys.c
@@ -753,27 +753,40 @@ static void wacom_retrieve_hid_descriptor(struct hid_device *hdev,
struct wacom_hdev_data {
struct list_head list;
struct kref kref;
- struct hid_device *dev;
+ char phys[64];
+ __u32 vendor;
+ __u32 product;
+ __u32 device_type;
struct wacom_shared shared;
};
+static bool wacom_compare_device_paths(struct hid_device *hdev_a,
+ const char *phys_b, char separator)
+{
+ int n1 = strrchr(hdev_a->phys, separator) - hdev_a->phys;
+ int n2 = strrchr(phys_b, separator) - phys_b;
+
+ if (n1 != n2 || n1 <= 0 || n2 <= 0)
+ return false;
+
+ return !strncmp(hdev_a->phys, phys_b, n1);
+}
+
static LIST_HEAD(wacom_udev_list);
static DEFINE_MUTEX(wacom_udev_list_lock);
static bool wacom_are_sibling(struct hid_device *hdev,
- struct hid_device *sibling)
+ struct wacom_hdev_data *data)
{
struct wacom *wacom = hid_get_drvdata(hdev);
struct wacom_features *features = &wacom->wacom_wac.features;
- struct wacom *sibling_wacom = hid_get_drvdata(sibling);
- struct wacom_features *sibling_features = &sibling_wacom->wacom_wac.features;
__u32 oVid = features->oVid ? features->oVid : hdev->vendor;
__u32 oPid = features->oPid ? features->oPid : hdev->product;
/* The defined oVid/oPid must match that of the sibling */
- if (features->oVid != HID_ANY_ID && sibling->vendor != oVid)
+ if (features->oVid != HID_ANY_ID && data->vendor != oVid)
return false;
- if (features->oPid != HID_ANY_ID && sibling->product != oPid)
+ if (features->oPid != HID_ANY_ID && data->product != oPid)
return false;
/*
@@ -781,11 +794,11 @@ static bool wacom_are_sibling(struct hid_device *hdev,
* device path, while those with different VID/PID must share
* the same physical parent device path.
*/
- if (hdev->vendor == sibling->vendor && hdev->product == sibling->product) {
- if (!hid_compare_device_paths(hdev, sibling, '/'))
+ if (hdev->vendor == data->vendor && hdev->product == data->product) {
+ if (!wacom_compare_device_paths(hdev, data->phys, '/'))
return false;
} else {
- if (!hid_compare_device_paths(hdev, sibling, '.'))
+ if (!wacom_compare_device_paths(hdev, data->phys, '.'))
return false;
}
@@ -798,7 +811,7 @@ static bool wacom_are_sibling(struct hid_device *hdev,
* devices.
*/
if ((features->device_type & WACOM_DEVICETYPE_DIRECT) &&
- !(sibling_features->device_type & WACOM_DEVICETYPE_DIRECT))
+ !(data->device_type & WACOM_DEVICETYPE_DIRECT))
return false;
/*
@@ -806,17 +819,17 @@ static bool wacom_are_sibling(struct hid_device *hdev,
* devices.
*/
if (!(features->device_type & WACOM_DEVICETYPE_DIRECT) &&
- (sibling_features->device_type & WACOM_DEVICETYPE_DIRECT))
+ (data->device_type & WACOM_DEVICETYPE_DIRECT))
return false;
/* Pen devices may only be siblings of touch devices */
if ((features->device_type & WACOM_DEVICETYPE_PEN) &&
- !(sibling_features->device_type & WACOM_DEVICETYPE_TOUCH))
+ !(data->device_type & WACOM_DEVICETYPE_TOUCH))
return false;
/* Touch devices may only be siblings of pen devices */
if ((features->device_type & WACOM_DEVICETYPE_TOUCH) &&
- !(sibling_features->device_type & WACOM_DEVICETYPE_PEN))
+ !(data->device_type & WACOM_DEVICETYPE_PEN))
return false;
/*
@@ -832,7 +845,7 @@ static struct wacom_hdev_data *wacom_get_hdev_data(struct hid_device *hdev)
/* Try to find an already-probed interface from the same device */
list_for_each_entry(data, &wacom_udev_list, list) {
- if (hid_compare_device_paths(hdev, data->dev, '/')) {
+ if (wacom_compare_device_paths(hdev, data->phys, '/')) {
kref_get(&data->kref);
return data;
}
@@ -840,7 +853,7 @@ static struct wacom_hdev_data *wacom_get_hdev_data(struct hid_device *hdev)
/* Fallback to finding devices that appear to be "siblings" */
list_for_each_entry(data, &wacom_udev_list, list) {
- if (wacom_are_sibling(hdev, data->dev)) {
+ if (wacom_are_sibling(hdev, data)) {
kref_get(&data->kref);
return data;
}
@@ -871,10 +884,14 @@ static void wacom_remove_shared_data(void *res)
data = container_of(wacom_wac->shared, struct wacom_hdev_data,
shared);
- if (wacom_wac->shared->touch == wacom->hdev)
+ mutex_lock(&wacom_udev_list_lock);
+ if (wacom_wac->shared->touch == wacom->hdev) {
wacom_wac->shared->touch = NULL;
- else if (wacom_wac->shared->pen == wacom->hdev)
+ wacom_wac->shared->touch_input = NULL;
+ } else if (wacom_wac->shared->pen == wacom->hdev) {
wacom_wac->shared->pen = NULL;
+ }
+ mutex_unlock(&wacom_udev_list_lock);
kref_put(&data->kref, wacom_release_shared_data);
wacom_wac->shared = NULL;
@@ -899,8 +916,13 @@ static int wacom_add_shared_data(struct hid_device *hdev)
}
kref_init(&data->kref);
- data->dev = hdev;
+ strscpy(data->phys, hdev->phys, sizeof(data->phys));
+ data->vendor = hdev->vendor;
+ data->product = hdev->product;
+ data->device_type = wacom_wac->features.device_type;
list_add_tail(&data->list, &wacom_udev_list);
+ } else {
+ data->device_type |= wacom_wac->features.device_type;
}
mutex_unlock(&wacom_udev_list_lock);
--
2.54.0.746.g67dd491aae-goog
^ permalink raw reply related
* Re: [stable backport request] linux-6.19.y: cac61b58a3b6 ("HID: playstation: Clamp num_touch_reports")
From: Greg KH @ 2026-05-27 8:09 UTC (permalink / raw)
To: sin99xx
Cc: stable, sashal, jikos, bentiss, roderick.colenbrander, tjmercier,
bsevens, linux-input
In-Reply-To: <CAMX0No2KAENnb=w-0R_8vGsnW+Ux0B+LMZKHt44YPJNjxJeP7w@mail.gmail.com>
On Tue, May 26, 2026 at 01:30:51PM -0400, sin99xx wrote:
> Hi stable team,
>
> linux-6.19.y is still missing the backport of
>
> cac61b58a3b6 "HID: playstation: Clamp num_touch_reports"
> (T.J. Mercier, 2026-05-12, Cc: stable@vger.kernel.org)
>
> and its precursor
>
> 82a4fc463309 "HID: playstation: validate num_touch_reports in
> DualShock 4 reports"
> (Benoît Sevens, 2026-04-09)
>
> Both are present in mainline, linux-6.6.y and linux-6.12.y. As of
> v6.19.14 (released 2026-04-22), linux-6.19.y still carries the
> unclamped loop. Function-level disassembly of hid-playstation.ko on a
> 6.19.14 build confirms neither patch is applied:
6.19.y is long end-of-life, which is perhaps why it's not in that tree :)
Always check the front page of kernel.org for the list of kernels that
are still being supported.
thanks,
greg k-h
^ permalink raw reply
* Re: [PATCH] Input: rmi4 - release F54 queue on video registration failure
From: Hans Verkuil @ 2026-05-27 7:38 UTC (permalink / raw)
To: Dmitry Torokhov, Myeonghun Pak, Hans Verkuil
Cc: linux-input, linux-kernel, stable, Ijae Kim
In-Reply-To: <ahXYreASLGSPuIe_@google.com>
On 5/26/26 7:36 PM, Dmitry Torokhov wrote:
> On Mon, May 25, 2026 at 03:23:45AM +0900, Myeonghun Pak wrote:
>> rmi_f54_probe() initializes the videobuf2 queue before registering the
>> video device. If video_register_device() fails, probe only unregisters
>> the V4L2 device and leaves the initialized queue unwound by neither
>> remove nor file release paths.
>>
>> Release the queue before continuing through the existing probe error
>> path.
>>
>> This issue was identified during our ongoing static-analysis research while
>> reviewing kernel code.
>>
>> Fixes: 3a762dbd5347 ("[media] Input: synaptics-rmi4 - add support for F54 diagnostics")
>> Cc: stable@vger.kernel.org
>> Co-developed-by: Ijae Kim <ae878000@gmail.com>
>> Signed-off-by: Ijae Kim <ae878000@gmail.com>
>> Signed-off-by: Myeonghun Pak <mhun512@gmail.com>
>> ---
>> drivers/input/rmi4/rmi_f54.c | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/input/rmi4/rmi_f54.c b/drivers/input/rmi4/rmi_f54.c
>> index 61909e1a39..fca7b9fec5 100644
>> --- a/drivers/input/rmi4/rmi_f54.c
>> +++ b/drivers/input/rmi4/rmi_f54.c
>> @@ -722,6 +722,7 @@ static int rmi_f54_probe(struct rmi_function *fn)
>> ret = video_register_device(&f54->vdev, VFL_TYPE_TOUCH, -1);
>> if (ret) {
>> dev_err(&fn->dev, "Unable to register video subdevice.");
>> + vb2_queue_release(&f54->queue);
vb2_queue_release is not needed here: since the video device was never
created, it also never started streaming, and this call is only needed
if streaming is in progress.
Looking at other drivers I see that in most cases they shouldn't call
vb2_queue_release at all. I need to go through the media drivers and
fix them.
In any case:
Rejected-by: Hans Verkuil <hverkuil+cisco@kernel.org>
Regards,
Hans
>> goto remove_v4l2;
>> }
>>
>
> Hans, could you please Ack or Nak it? It is unclear to me if this
> cleanup is mandatory and whether it is also needed in rmi_f54_remove().
>
> Thanks.
>
^ permalink raw reply
* hid-playstation: DualSense Edge Bluetooth HID report descriptor trailing null byte causes incorrect device registration and output report instability
From: Caleb Adrian @ 2026-05-27 5:13 UTC (permalink / raw)
To: linux-input
[-- Attachment #1.1: Type: text/plain, Size: 4622 bytes --]
Hi,
I'd like to report a bug in the hid-playstation driver affecting the Sony
DualSense Edge Wireless Controller (054C:0DF2) when connected via Bluetooth.
## Summary
The DualSense Edge sends a trailing null byte (0x00) at the end of its HID
report descriptor over Bluetooth. The hid-playstation driver does not
handle this gracefully, logs "unknown main item tag 0x0", and falls back to
registering the device as a generic "DualSense controller" rather than a
"DualSense Edge controller". This causes Edge-specific features to be
unavailable and results in incorrect output report formatting over
Bluetooth, which triggers link tx timeout and connection drops when any
output report (LED/lightbar, haptics) is sent to the device.
The same device connected via USB does NOT have the trailing null byte and
works correctly.
## Hardware
- Controller: Sony DualSense Edge Wireless Controller (VID: 054C, PID: 0DF2)
- Bluetooth Adapter: Foxconn / Hon Hai (0489:e10a) — MediaTek MT7925 (MSI
B850 Gaming Plus WiFi)
- HCI Version: 5.3
## Software
- OS: Nobara Linux 43 (based on Fedora 43)
- Kernel: 7.0.5-200.nobara.fc43.x86_64
- BlueZ: 5.84
- Driver: hid-playstation (author: Sony Interactive Entertainment,
srcversion: B0C2D9A799115DCE2664703)
## Steps to Reproduce
1. Pair a DualSense Edge controller to a Linux system via Bluetooth
2. Connect the controller
3. Observe dmesg output
4. Attempt to send any output report (e.g. change LED color via Steam or
dualsensectl)
## Actual Behavior
dmesg on connect:
playstation 0005:054C:0DF2.000A: unknown main item tag 0x0
playstation 0005:054C:0DF2.000A: hidraw7: BLUETOOTH HID v1.00 Gamepad
[DualSense Edge Wireless Controller] on ec:91:61:d0:5d:a6
input: DualSense Edge Wireless Controller as
/devices/virtual/misc/uhid/0005:054C:0DF2.000A/input/input29
input: DualSense Edge Wireless Controller Motion Sensors as
/devices/virtual/misc/uhid/0005:054C:0DF2.000A/input/input30
input: DualSense Edge Wireless Controller Touchpad as
/devices/virtual/misc/uhid/0005:054C:0DF2.000A/input/input31
playstation 0005:054C:0DF2.000A: Registered DualSense controller
hw_version=0x01000223 fw_version=0x0100008b
Note: final line says "DualSense controller" not "DualSense Edge
controller".
dmesg when any output report is sent:
Bluetooth: hci0: link tx timeout
Bluetooth: hci0: killing stalled connection d4:2f:4b:3d:ec:a6
Bluetooth: hci0: link tx timeout
Bluetooth: hci0: killing stalled connection d4:2f:4b:3d:ec:a6
## Root Cause
The Bluetooth HID report descriptor ends with:
... b1 02 85 f7 09 2f 95 07 b1 02 c0 00
c0 is the valid HID End Collection tag. The trailing 00 is an invalid null
byte with no corresponding HID item tag, which the driver flags as "unknown
main item tag 0x0".
The USB descriptor ends cleanly:
... b1 02 85 7b 09 53 b1 02 c0
No trailing null byte, no parse error, device works correctly.
The Bluetooth and USB descriptors also differ significantly in structure:
- USB: 6 analog axes (X, Y, Z, Rz, Rx, Ry), 15 buttons
- Bluetooth: 4 analog axes (X, Y, Z, Rz only), 14 buttons, different vendor
report IDs
The driver falls back to generic DualSense handling when it cannot fully
parse the Edge Bluetooth descriptor, resulting in incorrect output report
formatting that the controller rejects.
## Suggested Fix
1. Tolerate trailing null bytes in the HID report descriptor — a null byte
after the closing c0 End Collection tag is harmless and should be ignored
or stripped before parsing.
2. Correctly identify the DualSense Edge over Bluetooth using PID 0x0DF2
regardless of descriptor parse warnings, rather than falling back to
generic DualSense handling.
3. Use the correct Bluetooth-specific output report format for the
DualSense Edge, as the Bluetooth descriptor layout differs significantly
from the USB descriptor layout.
## Additional Notes
- Controller firmware is current (verified via PS5 console, version 0217)
- Issue does not occur over USB — full functionality including LED/lightbar
control works correctly
- UserspaceHID=true in /etc/bluetooth/input.conf partially mitigates output
report instability but does not resolve the descriptor parse error or
incorrect device registration
- UserspaceHID=false (kernel HIDP) causes output reports over Bluetooth to
immediately trigger link tx timeout
I have attached the full HID report descriptors from /sys/kernel/debug/hid/
for both USB and Bluetooth connections.
Thanks for looking into this.
Caleb
[-- Attachment #1.2: Type: text/html, Size: 4879 bytes --]
[-- Attachment #2: usb_descriptor.txt --]
[-- Type: text/plain, Size: 60435 bytes --]
05 01 09 05 a1 01 85 01 09 30 09 31 09 32 09 35 09 33 09 34 15 00 26 ff 00 75 08 95 06 81 02 06 00 ff 09 20 95 01 81 02 05 01 09 39 15 00 25 07 35 00 46 3b 01 65 14 75 04 95 01 81 42 65 00 05 09 19 01 29 0f 15 00 25 01 75 01 95 0f 81 02 06 00 ff 09 21 95 0d 81 02 06 00 ff 09 22 15 00 26 ff 00 75 08 95 34 81 02 85 02 09 23 95 3f 91 02 85 05 09 33 95 28 b1 02 85 08 09 34 95 2f b1 02 85 09 09 24 95 13 b1 02 85 0a 09 25 95 1a b1 02 85 0b 09 41 95 29 b1 02 85 0c 09 42 95 29 b1 02 85 20 09 26 95 3f b1 02 85 21 09 27 95 04 b1 02 85 22 09 40 95 3f b1 02 85 80 09 28 95 3f b1 02 85 81 09 29 95 3f b1 02 85 82 09 2a 95 09 b1 02 85 83 09 2b 95 3f b1 02 85 84 09 2c 95 3f b1 02 85 85 09 2d 95 02 b1 02 85 a0 09 2e 95 01 b1 02 85 e0 09 2f 95 3f b1 02 85 f0 09 30 95 3f b1 02 85 f1 09 31 95 3f b1 02 85 f2 09 32 95 34 b1 02 85 f4 09 35 95 3f b1 02 85 f5 09 36 95 03 b1 02 85 60 09 41 95 3f b1 02 85 61 09 42 b1 02 85 62 09 43 b1 02 85 63 09 44 b1 02 85 64 09 45 b1 02 85 65 09 46 b1 02 85 68 09 47 b1 02 85 70 09 48 b1 02 85 71 09 49 b1 02 85 72 09 4a b1 02 85 73 09 4b b1 02 85 74 09 4c b1 02 85 75 09 4d b1 02 85 76 09 4e b1 02 85 77 09 4f b1 02 85 78 09 50 b1 02 85 79 09 51 b1 02 85 7a 09 52 b1 02 85 7b 09 53 b1 02 c0
INPUT(1)[INPUT]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(6)
GenericDesktop.X
GenericDesktop.Y
GenericDesktop.Z
GenericDesktop.Rz
GenericDesktop.Rx
GenericDesktop.Ry
Logical Minimum(0)
Logical Maximum(255)
Report Size(8)
Report Count(6)
Report Offset(0)
Flags( Variable Absolute )
Field(1)
Application(GenericDesktop.Gamepad)
Usage(1)
ff00.0020
Logical Minimum(0)
Logical Maximum(255)
Report Size(8)
Report Count(1)
Report Offset(48)
Flags( Variable Absolute )
Field(2)
Application(GenericDesktop.Gamepad)
Usage(1)
GenericDesktop.HatSwitch
Logical Minimum(0)
Logical Maximum(7)
Physical Minimum(0)
Physical Maximum(315)
Unit(English Rotation : Degrees)
Report Size(4)
Report Count(1)
Report Offset(56)
Flags( Variable Absolute NullState )
Field(3)
Application(GenericDesktop.Gamepad)
Usage(15)
Button.0001
Button.0002
Button.0003
Button.0004
Button.0005
Button.0006
Button.0007
Button.0008
Button.0009
Button.000a
Button.000b
Button.000c
Button.000d
Button.000e
Button.000f
Logical Minimum(0)
Logical Maximum(1)
Physical Minimum(0)
Physical Maximum(315)
Report Size(1)
Report Count(15)
Report Offset(60)
Flags( Variable Absolute )
Field(4)
Application(GenericDesktop.Gamepad)
Usage(13)
ff00.0021
ff00.0021
ff00.0021
ff00.0021
ff00.0021
ff00.0021
ff00.0021
ff00.0021
ff00.0021
ff00.0021
ff00.0021
ff00.0021
ff00.0021
Logical Minimum(0)
Logical Maximum(1)
Physical Minimum(0)
Physical Maximum(315)
Report Size(1)
Report Count(13)
Report Offset(75)
Flags( Variable Absolute )
Field(5)
Application(GenericDesktop.Gamepad)
Usage(52)
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
ff00.0022
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(52)
Report Offset(88)
Flags( Variable Absolute )
OUTPUT(2)[OUTPUT]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
ff00.0023
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(5)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(40)
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(40)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(8)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(47)
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(47)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(9)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(19)
ff00.0024
ff00.0024
ff00.0024
ff00.0024
ff00.0024
ff00.0024
ff00.0024
ff00.0024
ff00.0024
ff00.0024
ff00.0024
ff00.0024
ff00.0024
ff00.0024
ff00.0024
ff00.0024
ff00.0024
ff00.0024
ff00.0024
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(19)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(10)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(26)
ff00.0025
ff00.0025
ff00.0025
ff00.0025
ff00.0025
ff00.0025
ff00.0025
ff00.0025
ff00.0025
ff00.0025
ff00.0025
ff00.0025
ff00.0025
ff00.0025
ff00.0025
ff00.0025
ff00.0025
ff00.0025
ff00.0025
ff00.0025
ff00.0025
ff00.0025
ff00.0025
ff00.0025
ff00.0025
ff00.0025
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(26)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(11)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(41)
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(41)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(12)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(41)
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(41)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(32)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
ff00.0026
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(33)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(4)
ff00.0027
ff00.0027
ff00.0027
ff00.0027
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(4)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(34)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
ff00.0040
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(128)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
ff00.0028
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(129)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
ff00.0029
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(130)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(9)
ff00.002a
ff00.002a
ff00.002a
ff00.002a
ff00.002a
ff00.002a
ff00.002a
ff00.002a
ff00.002a
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(9)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(131)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
ff00.002b
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(132)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
ff00.002c
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(133)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(2)
ff00.002d
ff00.002d
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(2)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(160)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(1)
ff00.002e
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(1)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(224)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
ff00.002f
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(240)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
ff00.0030
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(241)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(242)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(52)
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(52)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(244)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(245)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(3)
ff00.0036
ff00.0036
ff00.0036
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(3)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(96)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
ff00.0041
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(97)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
ff00.0042
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(98)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
ff00.0043
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(99)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
ff00.0044
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(100)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
ff00.0045
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(101)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
ff00.0046
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(104)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
ff00.0047
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(112)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
ff00.0048
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(113)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
ff00.0049
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(114)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
ff00.004a
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(115)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
ff00.004b
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(116)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
ff00.004c
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(117)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
ff00.004d
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(118)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
ff00.004e
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(119)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
ff00.004f
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(120)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
ff00.0050
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(121)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
ff00.0051
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(122)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
ff00.0052
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(123)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
ff00.0053
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
GenericDesktop.X ---> Sync.Report
GenericDesktop.Y ---> Sync.Report
GenericDesktop.Z ---> Sync.Report
GenericDesktop.Rz ---> Sync.Report
GenericDesktop.Rx ---> Sync.Report
GenericDesktop.Ry ---> Sync.Report
ff00.0020 ---> Sync.Report
GenericDesktop.HatSwitch ---> Sync.Report
Button.0001 ---> Sync.Report
Button.0002 ---> Sync.Report
Button.0003 ---> Sync.Report
Button.0004 ---> Sync.Report
Button.0005 ---> Sync.Report
Button.0006 ---> Sync.Report
Button.0007 ---> Sync.Report
Button.0008 ---> Sync.Report
Button.0009 ---> Sync.Report
Button.000a ---> Sync.Report
Button.000b ---> Sync.Report
Button.000c ---> Sync.Report
Button.000d ---> Sync.Report
Button.000e ---> Sync.Report
Button.000f ---> Sync.Report
ff00.0021 ---> Sync.Report
ff00.0021 ---> Sync.Report
ff00.0021 ---> Sync.Report
ff00.0021 ---> Sync.Report
ff00.0021 ---> Sync.Report
ff00.0021 ---> Sync.Report
ff00.0021 ---> Sync.Report
ff00.0021 ---> Sync.Report
ff00.0021 ---> Sync.Report
ff00.0021 ---> Sync.Report
ff00.0021 ---> Sync.Report
ff00.0021 ---> Sync.Report
ff00.0021 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0022 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
ff00.0023 ---> Sync.Report
[-- Attachment #3: bt_descriptor.txt --]
[-- Type: text/plain, Size: 198199 bytes --]
05 01 09 05 a1 01 85 01 09 30 09 31 09 32 09 35 15 00 26 ff 00 75 08 95 04 81 02 09 39 15 00 25 07 35 00 46 3b 01 65 14 75 04 95 01 81 42 65 00 05 09 19 01 29 0e 15 00 25 01 75 01 95 0e 81 02 75 06 95 01 81 01 05 01 09 33 09 34 15 00 26 ff 00 75 08 95 02 81 02 06 00 ff 15 00 26 ff 00 75 08 95 4d 85 31 09 31 91 02 09 3b 81 02 85 32 09 32 95 8d 91 02 85 33 09 33 95 cd 91 02 85 34 09 34 96 0d 01 91 02 85 35 09 35 96 4d 01 91 02 85 36 09 36 96 8d 01 91 02 85 37 09 37 96 cd 01 91 02 85 38 09 38 96 0d 02 91 02 85 39 09 39 96 22 02 91 02 06 80 ff 85 05 09 33 95 28 b1 02 85 08 09 34 95 2f b1 02 85 09 09 24 95 13 b1 02 85 0b 09 41 95 29 b1 02 85 20 09 26 95 3f b1 02 85 22 09 40 95 3f b1 02 85 80 09 28 95 3f b1 02 85 81 09 29 95 3f b1 02 85 82 09 2a 95 09 b1 02 85 83 09 2b 95 3f b1 02 85 f1 09 31 95 3f b1 02 85 f2 09 32 95 34 b1 02 85 f0 09 30 95 3f b1 02 85 60 09 41 95 3f b1 02 85 61 09 42 b1 02 85 62 09 43 b1 02 85 63 09 44 b1 02 85 64 09 45 b1 02 85 65 09 46 b1 02 85 68 09 47 b1 02 85 70 09 48 b1 02 85 71 09 49 b1 02 85 72 09 4a b1 02 85 73 09 4b b1 02 85 74 09 4c b1 02 85 75 09 4d b1 02 85 76 09 4e b1 02 85 77 09 4f b1 02 85 78 09 50 b1 02 85 79 09 51 b1 02 85 7a 09 52 b1 02 85 7b 09 53 b1 02 85 f4 09 2c 95 3f b1 02 85 f5 09 2d 95 07 b1 02 85 f6 09 2e 96 22 02 b1 02 85 f7 09 2f 95 07 b1 02 c0 00
INPUT(1)[INPUT]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(4)
GenericDesktop.X
GenericDesktop.Y
GenericDesktop.Z
GenericDesktop.Rz
Logical Minimum(0)
Logical Maximum(255)
Report Size(8)
Report Count(4)
Report Offset(0)
Flags( Variable Absolute )
Field(1)
Application(GenericDesktop.Gamepad)
Usage(1)
GenericDesktop.HatSwitch
Logical Minimum(0)
Logical Maximum(7)
Physical Minimum(0)
Physical Maximum(315)
Unit(English Rotation : Degrees)
Report Size(4)
Report Count(1)
Report Offset(32)
Flags( Variable Absolute NullState )
Field(2)
Application(GenericDesktop.Gamepad)
Usage(14)
Button.0001
Button.0002
Button.0003
Button.0004
Button.0005
Button.0006
Button.0007
Button.0008
Button.0009
Button.000a
Button.000b
Button.000c
Button.000d
Button.000e
Logical Minimum(0)
Logical Maximum(1)
Physical Minimum(0)
Physical Maximum(315)
Report Size(1)
Report Count(14)
Report Offset(36)
Flags( Variable Absolute )
Field(3)
Application(GenericDesktop.Gamepad)
Usage(2)
GenericDesktop.Rx
GenericDesktop.Ry
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(2)
Report Offset(56)
Flags( Variable Absolute )
INPUT(49)[INPUT]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(77)
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
ff00.003b
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(77)
Report Offset(0)
Flags( Variable Absolute )
OUTPUT(49)[OUTPUT]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(77)
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
ff00.0031
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(77)
Report Offset(0)
Flags( Variable Absolute )
OUTPUT(50)[OUTPUT]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(141)
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
ff00.0032
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(141)
Report Offset(0)
Flags( Variable Absolute )
OUTPUT(51)[OUTPUT]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(205)
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
ff00.0033
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(205)
Report Offset(0)
Flags( Variable Absolute )
OUTPUT(52)[OUTPUT]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(269)
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
ff00.0034
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(269)
Report Offset(0)
Flags( Variable Absolute )
OUTPUT(53)[OUTPUT]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(333)
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
ff00.0035
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(333)
Report Offset(0)
Flags( Variable Absolute )
OUTPUT(54)[OUTPUT]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(397)
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
ff00.0036
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(397)
Report Offset(0)
Flags( Variable Absolute )
OUTPUT(55)[OUTPUT]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(461)
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
ff00.0037
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(461)
Report Offset(0)
Flags( Variable Absolute )
OUTPUT(56)[OUTPUT]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(525)
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
ff00.0038
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(525)
Report Offset(0)
Flags( Variable Absolute )
OUTPUT(57)[OUTPUT]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(546)
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
ff00.0039
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(546)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(5)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(40)
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
ff80.0033
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(40)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(8)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(47)
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
ff80.0034
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(47)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(9)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(19)
ff80.0024
ff80.0024
ff80.0024
ff80.0024
ff80.0024
ff80.0024
ff80.0024
ff80.0024
ff80.0024
ff80.0024
ff80.0024
ff80.0024
ff80.0024
ff80.0024
ff80.0024
ff80.0024
ff80.0024
ff80.0024
ff80.0024
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(19)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(11)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(41)
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(41)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(32)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
ff80.0026
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(34)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
ff80.0040
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(128)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
ff80.0028
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(129)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
ff80.0029
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(130)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(9)
ff80.002a
ff80.002a
ff80.002a
ff80.002a
ff80.002a
ff80.002a
ff80.002a
ff80.002a
ff80.002a
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(9)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(131)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
ff80.002b
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(241)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
ff80.0031
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(242)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(52)
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
ff80.0032
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(52)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(240)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
ff80.0030
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(96)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
ff80.0041
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(97)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
ff80.0042
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(98)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
ff80.0043
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(99)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
ff80.0044
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(100)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
ff80.0045
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(101)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
ff80.0046
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(104)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
ff80.0047
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(112)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
ff80.0048
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(113)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
ff80.0049
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(114)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
ff80.004a
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(115)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
ff80.004b
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(116)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
ff80.004c
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(117)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
ff80.004d
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(118)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
ff80.004e
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(119)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
ff80.004f
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(120)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
ff80.0050
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(121)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
ff80.0051
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(122)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
ff80.0052
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(123)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
ff80.0053
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(244)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(63)
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
ff80.002c
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(63)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(245)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(7)
ff80.002d
ff80.002d
ff80.002d
ff80.002d
ff80.002d
ff80.002d
ff80.002d
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(7)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(246)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(546)
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
ff80.002e
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(546)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(247)[FEATURE]
Field(0)
Application(GenericDesktop.Gamepad)
Usage(7)
ff80.002f
ff80.002f
ff80.002f
ff80.002f
ff80.002f
ff80.002f
ff80.002f
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(315)
Report Size(8)
Report Count(7)
Report Offset(0)
Flags( Variable Absolute )
GenericDesktop.X ---> Sync.Report
GenericDesktop.Y ---> Sync.Report
GenericDesktop.Z ---> Sync.Report
GenericDesktop.Rz ---> Sync.Report
GenericDesktop.HatSwitch ---> Sync.Report
Button.0001 ---> Sync.Report
Button.0002 ---> Sync.Report
Button.0003 ---> Sync.Report
Button.0004 ---> Sync.Report
Button.0005 ---> Sync.Report
Button.0006 ---> Sync.Report
Button.0007 ---> Sync.Report
Button.0008 ---> Sync.Report
Button.0009 ---> Sync.Report
Button.000a ---> Sync.Report
Button.000b ---> Sync.Report
Button.000c ---> Sync.Report
Button.000d ---> Sync.Report
Button.000e ---> Sync.Report
GenericDesktop.Rx ---> Sync.Report
GenericDesktop.Ry ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.003b ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0031 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0032 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0033 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0034 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0035 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0036 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0037 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0038 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
ff00.0039 ---> Sync.Report
^ permalink raw reply
* Re: [PATCH] Input: mtk-pmic-keys - match loop with count
From: Dmitry Torokhov @ 2026-05-27 1:41 UTC (permalink / raw)
To: Rosen Penev
Cc: linux-input, Matthias Brugger, AngeloGioacchino Del Regno,
open list:ARM/Mediatek SoC support,
moderated list:ARM/Mediatek SoC support,
moderated list:ARM/Mediatek SoC support
In-Reply-To: <20260527004543.22875-1-rosenp@gmail.com>
Hi Rosen,
On Tue, May 26, 2026 at 05:45:43PM -0700, Rosen Penev wrote:
> of_get_available_child_count is used along with
> for_each_child_of_node_scoped, which can cause a mismatch when keys have
> a disabled status.
>
> If a disabled child node exists in the device tree alongside available ones,
> the loop could execute more times than the initial validation accounted for.
> This might increment the index variable past the allocated array bounds,
> leading to out-of-bounds accesses on irqnames[] and keys->keys[].
>
> Signed-off-by: Rosen Penev <rosenp@gmail.com>
> ---
> drivers/input/keyboard/mtk-pmic-keys.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/input/keyboard/mtk-pmic-keys.c b/drivers/input/keyboard/mtk-pmic-keys.c
> index c78d9f6d97c4..5d4ebbafd276 100644
> --- a/drivers/input/keyboard/mtk-pmic-keys.c
> +++ b/drivers/input/keyboard/mtk-pmic-keys.c
> @@ -363,7 +363,7 @@ static int mtk_pmic_keys_probe(struct platform_device *pdev)
> return -EINVAL;
> }
>
> - for_each_child_of_node_scoped(node, child) {
> + for_each_available_child_of_node_scoped(node, child) {
> keys->keys[index].regs = &mtk_pmic_regs->keys_regs[index];
>
> keys->keys[index].irq =
I think Sashiko correctly points out that this may result in incorrect
register data and interrupts being mapped to the keys (potentially
shifting them).
Maybe we should stop counting nodes separately, iterate over all of them
here and bail out with an error if we encounter more than 2 (does not
matter if they are marked available or not), and then skip not available
nodes? WDYT?
Thanks.
--
Dmitry
^ permalink raw reply
* Re: [PATCH] Input: mtk-pmic-keys - match loop with count
From: sashiko-bot @ 2026-05-27 1:15 UTC (permalink / raw)
To: Rosen Penev; +Cc: dmitry.torokhov, linux-input
In-Reply-To: <20260527004543.22875-1-rosenp@gmail.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] Switching to `for_each_available_child_of_node_scoped` shifts the hardware mapping index if a preceding node is disabled, leading to incorrect physical key configuration.
--
commit 999599e1545f7dcb987f1a3ede455f57f6a980e6
Author: Rosen Penev <rosenp@gmail.com>
Input: mtk-pmic-keys - match loop with count
This commit changes the child node iteration in mtk_pmic_keys_probe() to
only iterate over available child nodes, preventing an out-of-bounds array
access if a disabled node exists alongside available ones.
> diff --git a/drivers/input/keyboard/mtk-pmic-keys.c b/drivers/input/keyboard/mtk-pmic-keys.c
> index c78d9f6d97c4f..5d4ebbafd2765 100644
> --- a/drivers/input/keyboard/mtk-pmic-keys.c
> +++ b/drivers/input/keyboard/mtk-pmic-keys.c
> @@ -363,7 +363,7 @@ static int mtk_pmic_keys_probe(struct platform_device *pdev)
> return -EINVAL;
> }
>
> - for_each_child_of_node_scoped(node, child) {
> + for_each_available_child_of_node_scoped(node, child) {
[Severity: High]
Does this change in iteration cause a regression with the positional mapping
of keys to hardware?
The driver maps device tree child nodes to physical key hardware (IRQ and
registers) based strictly on the loop iteration index (index = 0 for
powerkey, index = 1 for homekey).
Before this patch, for_each_child_of_node_scoped() iterated over all defined
child nodes, ensuring that positional mapping was maintained even if the first
node (e.g., powerkey) had status = "disabled".
By changing the iterator to for_each_available_child_of_node_scoped(),
disabled nodes are now skipped. If the powerkey node is disabled in the
device tree, it is skipped, and the homekey node becomes the first available
child. It is then processed with index = 0.
Consequently, the driver would configure the powerkey hardware registers
and request the powerkey IRQ, but bind them to the properties
(like linux,keycodes) of the homekey node.
Could this result in the physical powerkey incorrectly emitting the homekey's
code, while the physical homekey remains uninitialized?
> keys->keys[index].regs = &mtk_pmic_regs->keys_regs[index];
>
> keys->keys[index].irq =
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260527004543.22875-1-rosenp@gmail.com?part=1
^ permalink raw reply
* Re: [PATCH] HID: nintendo: add support for HORI Wireless Switch Pad
From: Joshua Peisach @ 2026-05-27 1:12 UTC (permalink / raw)
To: Hector Zelaya, Jiri Kosina, Benjamin Tissoires,
Daniel J. Ogorchock
Cc: linux-input, linux-kernel
In-Reply-To: <20260526-hori-support-v1-1-1861c0abc2e0@hectorzelaya.dev>
On Tue May 26, 2026 at 1:08 PM EDT, Hector Zelaya wrote:
> Add support for the HORI Wireless Switch Pad (vendor 0x0f0d, product
> 0x00f6), a licensed third-party Nintendo Switch Pro Controller.
>
> The controller reports controller type 0x06 (vs 0x03 for first-party
> Pro Controllers) and has the following quirks:
>
> - SPI flash calibration data is incompatible; use default stick
> calibration values instead.
> - X and Y button bits are swapped compared to first-party controllers;
> add a dedicated button mapping table.
> - Rumble and IMU enable may timeout (no vibration motor in hardware);
> treat as non-fatal for licensed controllers.
>
> Tested over Bluetooth on NixOS with kernel 7.0.5 and 7.0.10:
> - All 14 buttons map correctly
> - Player LED sets on connect
> - Sticks report correctly with default calibration
> - IMU/gyro data streams at 60Hz
> - D-pad reports on ABS_HAT0X/HAT0Y
>
> Device information:
> Bluetooth name: Lic Pro Controller
> Bluetooth HID: 0005:0F0D:00F6
>
> Assisted-by: Kiro:Auto [Amazon Kiro IDE]
> Signed-off-by: Hector Zelaya <hector@hectorzelaya.dev>
> ---
Looks fine.
Reviewed-by: Joshua Peisach <jpeisach@ubuntu.com>
^ permalink raw reply
* [PATCH] Input: mtk-pmic-keys - match loop with count
From: Rosen Penev @ 2026-05-27 0:45 UTC (permalink / raw)
To: linux-input
Cc: Dmitry Torokhov, Matthias Brugger, AngeloGioacchino Del Regno,
open list:ARM/Mediatek SoC support,
moderated list:ARM/Mediatek SoC support,
moderated list:ARM/Mediatek SoC support
of_get_available_child_count is used along with
for_each_child_of_node_scoped, which can cause a mismatch when keys have
a disabled status.
If a disabled child node exists in the device tree alongside available ones,
the loop could execute more times than the initial validation accounted for.
This might increment the index variable past the allocated array bounds,
leading to out-of-bounds accesses on irqnames[] and keys->keys[].
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/input/keyboard/mtk-pmic-keys.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/input/keyboard/mtk-pmic-keys.c b/drivers/input/keyboard/mtk-pmic-keys.c
index c78d9f6d97c4..5d4ebbafd276 100644
--- a/drivers/input/keyboard/mtk-pmic-keys.c
+++ b/drivers/input/keyboard/mtk-pmic-keys.c
@@ -363,7 +363,7 @@ static int mtk_pmic_keys_probe(struct platform_device *pdev)
return -EINVAL;
}
- for_each_child_of_node_scoped(node, child) {
+ for_each_available_child_of_node_scoped(node, child) {
keys->keys[index].regs = &mtk_pmic_regs->keys_regs[index];
keys->keys[index].irq =
--
2.54.0
^ permalink raw reply related
* Re: [PATCH v4 35/36] iio: pressure: hid-sensor-press: drop hid_sensor_remove_trigger() using devm API
From: Sanjay Chitroda @ 2026-05-26 18:16 UTC (permalink / raw)
To: Jonathan Cameron
Cc: Christophe JAILLET, jikos, srinivas.pandruvada, dlechner, nuno.sa,
andy, sakari.ailus, linux-input, linux-iio, linux-kernel
In-Reply-To: <20260526165451.6a587221@jic23-huawei>
On 26 May 2026 9:24:51 pm IST, Jonathan Cameron <jic23@kernel.org> wrote:
>On Mon, 25 May 2026 22:35:50 +0530
>Sanjay Chitroda <sanjayembeddedse@gmail.com> wrote:
>
>> On 25 May 2026 3:39:11 pm IST, Christophe JAILLET <christophe.jaillet@wanadoo.fr> wrote:
>> >Le 24/05/2026 à 21:29, Sanjay Chitroda a écrit :
>> >> From: Sanjay Chitroda <sanjayembeddedse@gmail.com>
>> >>
>> >> Use devm_hid_sensor_setup_trigger() to automatically release resource
>> >> during fail, unbind or removal of driver using devres framework.
>> >>
>> >> This simplify the setup, remove goto, avoid manual resource cleanup in
>> >> teardown path.
>> >>
>> >> Signed-off-by: Sanjay Chitroda <sanjayembeddedse@gmail.com>
>> >> ---
>> >> drivers/iio/pressure/hid-sensor-press.c | 10 +++-------
>> >> 1 file changed, 3 insertions(+), 7 deletions(-)
>> >>
>> >> diff --git a/drivers/iio/pressure/hid-sensor-press.c b/drivers/iio/pressure/hid-sensor-press.c
>> >> index fee7dcb86801..8438498c9aeb 100644
>> >> --- a/drivers/iio/pressure/hid-sensor-press.c
>> >> +++ b/drivers/iio/pressure/hid-sensor-press.c
>> >> @@ -291,8 +291,8 @@ static int hid_press_probe(struct platform_device *pdev)
>> >> atomic_set(&press_state->common_attributes.data_ready, 0);
>> >> - ret = hid_sensor_setup_trigger(indio_dev, name,
>> >> - &press_state->common_attributes);
>> >> + ret = devm_hid_sensor_setup_trigger(dev, indio_dev, name,
>> >> + &press_state->common_attributes);
>> >> if (ret) {
>> >> dev_err(dev, "trigger setup failed\n");
>> >> return ret;
>> >> @@ -301,7 +301,7 @@ static int hid_press_probe(struct platform_device *pdev)
>> >> ret = iio_device_register(indio_dev);
>> >
>> >Hi,
>> >
>> >Looks like devm_iio_device_register() would now make sense and simplify things even further.
>> >
>> >CJ
>>
>> Hi CJ,
>>
>> Yes, as mentioned in cover letter most of HID IIO drivers have potential and will converted to devm based driver gradually.
>
>This is putting a lot of churn and many patches on a critical driver
>(given this device is in a lot of laptops). As such I think it's fine
>to do prep for devm in separate changes, but the final per driver change
>should be one per driver to go fully devm rather than doing it in smaller
>chunks. I obviously want to see this well tested, and don't want to have
>to keep asking people to test 'the next' set of changes.
>
>Jonathan
>
Hi Jonathan,
I understood and agreed with you. To add devm API support we have common separate change and on top of while updating driver instead of updating a single devm, I shall update all possible driver to devm. I think we can keep this series for few time for the review and next series would incorporate fully devm change and also attempted to use b4 to handle long series.
Later in that we can plan to proceed for testing instead of partial devm driver series validation.
Thanks, Sanjay
>>
>> Welcoming all suggestions and especially if someone can validate and have Tested-by tag.
>>
>> Thank, Sanjay
>>
>> >
>> >> if (ret) {
>> >> dev_err(dev, "device register failed\n");
>> >> - goto error_remove_trigger;
>> >> + return ret;
>> >> }
>> >> press_state->callbacks.send_event = press_proc_event;
>> >> @@ -318,8 +318,6 @@ static int hid_press_probe(struct platform_device *pdev)
>> >> error_iio_unreg:
>> >> iio_device_unregister(indio_dev);
>> >> -error_remove_trigger:
>> >> - hid_sensor_remove_trigger(&press_state->common_attributes);
>> >> return ret;
>> >> }
>> >> @@ -328,11 +326,9 @@ static void hid_press_remove(struct platform_device *pdev)
>> >> {
>> >> struct hid_sensor_hub_device *hsdev = dev_get_platdata(&pdev->dev);
>> >> struct iio_dev *indio_dev = platform_get_drvdata(pdev);
>> >> - struct press_state *press_state = iio_priv(indio_dev);
>> >> sensor_hub_remove_callback(hsdev, HID_USAGE_SENSOR_PRESSURE);
>> >> iio_device_unregister(indio_dev);
>> >> - hid_sensor_remove_trigger(&press_state->common_attributes);
>> >> }
>> >> static const struct platform_device_id hid_press_ids[] = {
>> >
>
^ permalink raw reply
* Re: [PATCH] HID: nintendo: add support for HORI Wireless Switch Pad
From: sashiko-bot @ 2026-05-26 17:52 UTC (permalink / raw)
To: Hector Zelaya; +Cc: dmitry.torokhov, linux-input
In-Reply-To: <20260526-hori-support-v1-1-1861c0abc2e0@hectorzelaya.dev>
Thank you for your contribution! Sashiko AI review found 7 potential issue(s) to consider:
New issues:
- [High] Unintentional probe failure due to uncleared error codes during non-fatal IMU and Rumble timeouts for licensed controllers.
- [High] Incompatible SPI flash data is erroneously read and parsed as IMU calibration.
- [Low] Confusing kernel warning printed when intentionally using default joystick calibration.
- [Low] `JOYCON_CTLR_TYPE_LIC_PRO` is missing from the `jc_type_has_right()` capability macro.
- [Low] Falsely advertising hardware capabilities (Rumble and IMU) that fail to initialize.
Pre-existing issues:
- [High] The input device is registered before its capabilities and force-feedback interfaces are configured.
- [High] Race condition in `joycon_ctlr_handle_event` reading shared state locklessly.
--
commit 6f0bfb377cdb5252c860b0efda09360159b62479
Author: Hector Zelaya <hector@hectorzelaya.dev>
HID: nintendo: add support for HORI Wireless Switch Pad
This commit adds support for the HORI Wireless Switch Pad by introducing
the new JOYCON_CTLR_TYPE_LIC_PRO controller type. It provides a dedicated
button mapping and handles initialization quirks for the device.
> diff --git a/drivers/hid/hid-nintendo.c b/drivers/hid/hid-nintendo.c
> index 29008c2cc5304..b5e799ace2492 100644
> --- a/drivers/hid/hid-nintendo.c
> +++ b/drivers/hid/hid-nintendo.c
> @@ -316,6 +316,7 @@ enum joycon_ctlr_type {
> JOYCON_CTLR_TYPE_JCL = 0x01,
> JOYCON_CTLR_TYPE_JCR = 0x02,
> JOYCON_CTLR_TYPE_PRO = 0x03,
> + JOYCON_CTLR_TYPE_LIC_PRO = 0x06,
[Severity: Low]
Since JOYCON_CTLR_TYPE_LIC_PRO is a new controller type, does it need to be
added to the jc_type_has_right() macro?
Without it, the macro might evaluate to false, skipping the creation and
registration of the HOME LED device in joycon_leds_create().
[ ... ]
> @@ -2156,7 +2180,10 @@ static int joycon_input_create(struct joycon_ctlr *ctlr)
> joycon_config_left_stick(ctlr->input);
> joycon_config_right_stick(ctlr->input);
> joycon_config_dpad(ctlr->input);
> - joycon_config_buttons(ctlr->input, procon_button_mappings);
> + if (ctlr->ctlr_type == JOYCON_CTLR_TYPE_LIC_PRO)
> + joycon_config_buttons(ctlr->input, lic_procon_button_mappings);
> + else
> + joycon_config_buttons(ctlr->input, procon_button_mappings);
[Severity: High]
This is a pre-existing issue, but is the input device registered before its
capabilities and force-feedback interfaces are configured?
Looking at joycon_input_create(), input_register_device() is called
immediately after the input device is allocated:
joycon_input_create() {
...
ret = input_register_device(ctlr->input);
if (ret)
return ret;
if (joycon_type_is_right_joycon(ctlr)) {
...
}
After this registration, the code proceeds to configure axis limits, set up
button capability bits, and add the force-feedback rumble interface.
Modifying an input device's capabilities after it has been registered can
introduce race conditions where userspace reads an incomplete capability mask
before the driver finishes initializing it.
[ ... ]
> @@ -2503,13 +2530,30 @@ static int joycon_init(struct hid_device *hdev)
>
> if (joycon_has_joysticks(ctlr)) {
> /* get controller calibration data, and parse it */
> - ret = joycon_request_calibration(ctlr);
> - if (ret) {
> + if (ctlr->ctlr_type == JOYCON_CTLR_TYPE_LIC_PRO) {
> /*
> - * We can function with default calibration, but it may be
> - * inaccurate. Provide a warning, and continue on.
> + * Licensed controllers may have incompatible SPI flash
> + * layouts. Use default calibration values.
> */
> - hid_warn(hdev, "Analog stick positions may be inaccurate\n");
> + hid_info(hdev, "using default cal for licensed controller\n");
> + joycon_use_default_calibration(hdev,
> + &ctlr->left_stick_cal_x,
> + &ctlr->left_stick_cal_y,
> + "left", 0);
[Severity: Low]
Does calling joycon_use_default_calibration() with an error code of 0 cause a
confusing kernel warning to be logged on every successful connection?
joycon_use_default_calibration() unconditionally prints a warning:
joycon_use_default_calibration() {
...
hid_warn(hdev,
"Failed to read %s stick cal, using defaults; e=%d\n",
stick, ret);
...
}
This might falsely signal a hardware failure to users when the driver is
functioning exactly as intended.
> + joycon_use_default_calibration(hdev,
> + &ctlr->right_stick_cal_x,
> + &ctlr->right_stick_cal_y,
> + "right", 0);
> + } else {
[ ... ]
> @@ -2527,8 +2571,12 @@ static int joycon_init(struct hid_device *hdev)
> /* Enable the IMU */
> ret = joycon_enable_imu(ctlr);
> if (ret) {
> - hid_err(hdev, "Failed to enable the IMU; ret=%d\n", ret);
> - goto out_unlock;
> + if (ctlr->ctlr_type == JOYCON_CTLR_TYPE_LIC_PRO) {
> + hid_dbg(hdev, "IMU enable failed for licensed controller, continuing\n");
[Severity: High]
The commit message states that SPI flash calibration data is incompatible,
but does this bypass joycon_request_imu_calibration() which is called right
before this block?
Because the controller type is treated as a Pro Controller, joycon_has_imu()
returns true, and the driver might issue an SPI read to the incompatible
flash layout, parsing garbage data into ctlr->accel_cal and ctlr->gyro_cal.
This could cause incorrect IMU divisor calculations and corrupted telemetry.
[Severity: Low]
While the initialization timeouts are treated as non-fatal, does the driver
still register the IMU device and force-feedback capabilities?
If joycon_has_imu() and joycon_has_rumble() still return true, userspace
applications might be falsely informed that the controller supports rumble
and motion tracking.
> + } else {
> + hid_err(hdev, "Failed to enable the IMU; ret=%d\n", ret);
> + goto out_unlock;
> + }
> }
> }
>
> @@ -2543,8 +2591,12 @@ static int joycon_init(struct hid_device *hdev)
> /* Enable rumble */
> ret = joycon_enable_rumble(ctlr);
> if (ret) {
> - hid_err(hdev, "Failed to enable rumble; ret=%d\n", ret);
> - goto out_unlock;
> + if (ctlr->ctlr_type == JOYCON_CTLR_TYPE_LIC_PRO) {
> + hid_dbg(hdev, "rumble enable failed for licensed controller, continuing\n");
[Severity: High]
Is it possible that ret remains set to -ETIMEDOUT after skipping the
goto out_unlock?
Since this is the last step in joycon_init(), the function might erroneously
return the error code when it reaches the end of the function, causing the
entire probe to fail for the newly added controller.
> + } else {
> + hid_err(hdev, "Failed to enable rumble; ret=%d\n", ret);
> + goto out_unlock;
> + }
> }
> }
[Severity: High]
This is a pre-existing issue, but is there a race condition in
joycon_ctlr_handle_event() when reading shared state locklessly?
The interrupt handler joycon_ctlr_handle_event() checks
mutex_is_locked(&ctlr->output_mutex) and then locklessly reads ctlr->msg_type
and ctlr->subcmd_ack_match.
If a delayed response arrives from an old timed-out subcommand while a thread
is preparing to send a new subcommand, the IRQ handler might accept the old
packet if the subcommand IDs match. It then writes the old data to the buffer
and signals completion, prematurely waking the waitqueue and causing the new
subcommand attempt to consume stale data.
Could proper synchronization via ctlr->lock prevent this?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260526-hori-support-v1-1-1861c0abc2e0@hectorzelaya.dev?part=1
^ permalink raw reply
* Re: [PATCH] Input: rmi4 - release F54 queue on video registration failure
From: Dmitry Torokhov @ 2026-05-26 17:36 UTC (permalink / raw)
To: Myeonghun Pak, Hans Verkuil; +Cc: linux-input, linux-kernel, stable, Ijae Kim
In-Reply-To: <20260524182351.27658-1-mhun512@gmail.com>
On Mon, May 25, 2026 at 03:23:45AM +0900, Myeonghun Pak wrote:
> rmi_f54_probe() initializes the videobuf2 queue before registering the
> video device. If video_register_device() fails, probe only unregisters
> the V4L2 device and leaves the initialized queue unwound by neither
> remove nor file release paths.
>
> Release the queue before continuing through the existing probe error
> path.
>
> This issue was identified during our ongoing static-analysis research while
> reviewing kernel code.
>
> Fixes: 3a762dbd5347 ("[media] Input: synaptics-rmi4 - add support for F54 diagnostics")
> Cc: stable@vger.kernel.org
> Co-developed-by: Ijae Kim <ae878000@gmail.com>
> Signed-off-by: Ijae Kim <ae878000@gmail.com>
> Signed-off-by: Myeonghun Pak <mhun512@gmail.com>
> ---
> drivers/input/rmi4/rmi_f54.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/input/rmi4/rmi_f54.c b/drivers/input/rmi4/rmi_f54.c
> index 61909e1a39..fca7b9fec5 100644
> --- a/drivers/input/rmi4/rmi_f54.c
> +++ b/drivers/input/rmi4/rmi_f54.c
> @@ -722,6 +722,7 @@ static int rmi_f54_probe(struct rmi_function *fn)
> ret = video_register_device(&f54->vdev, VFL_TYPE_TOUCH, -1);
> if (ret) {
> dev_err(&fn->dev, "Unable to register video subdevice.");
> + vb2_queue_release(&f54->queue);
> goto remove_v4l2;
> }
>
Hans, could you please Ack or Nak it? It is unclear to me if this
cleanup is mandatory and whether it is also needed in rmi_f54_remove().
Thanks.
--
Dmitry
^ permalink raw reply
* [PATCH] HID: nintendo: add support for HORI Wireless Switch Pad
From: Hector Zelaya @ 2026-05-26 17:08 UTC (permalink / raw)
To: Jiri Kosina, Benjamin Tissoires, Daniel J. Ogorchock
Cc: linux-input, linux-kernel, Hector Zelaya
Add support for the HORI Wireless Switch Pad (vendor 0x0f0d, product
0x00f6), a licensed third-party Nintendo Switch Pro Controller.
The controller reports controller type 0x06 (vs 0x03 for first-party
Pro Controllers) and has the following quirks:
- SPI flash calibration data is incompatible; use default stick
calibration values instead.
- X and Y button bits are swapped compared to first-party controllers;
add a dedicated button mapping table.
- Rumble and IMU enable may timeout (no vibration motor in hardware);
treat as non-fatal for licensed controllers.
Tested over Bluetooth on NixOS with kernel 7.0.5 and 7.0.10:
- All 14 buttons map correctly
- Player LED sets on connect
- Sticks report correctly with default calibration
- IMU/gyro data streams at 60Hz
- D-pad reports on ABS_HAT0X/HAT0Y
Device information:
Bluetooth name: Lic Pro Controller
Bluetooth HID: 0005:0F0D:00F6
Assisted-by: Kiro:Auto [Amazon Kiro IDE]
Signed-off-by: Hector Zelaya <hector@hectorzelaya.dev>
---
drivers/hid/hid-ids.h | 3 ++
drivers/hid/hid-nintendo.c | 78 +++++++++++++++++++++++++++++++++++++++-------
2 files changed, 69 insertions(+), 12 deletions(-)
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index a1cfa436344a..3b0767cc47fd 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -683,6 +683,9 @@
#define USB_DEVICE_ID_HARMONIX_WII_RB3_KEYBOARD 0x3330
#define USB_DEVICE_ID_HARMONIX_WII_RB3_MPA_KEYBOARD_MODE 0x3338
+#define USB_VENDOR_ID_HORI 0x0f0d
+#define USB_DEVICE_ID_HORI_WIRELESS_SWITCH_PAD 0x00f6
+
#define USB_VENDOR_ID_HP 0x03f0
#define USB_PRODUCT_ID_HP_ELITE_PRESENTER_MOUSE_464A 0x464a
#define USB_PRODUCT_ID_HP_LOGITECH_OEM_USB_OPTICAL_MOUSE_0A4A 0x0a4a
diff --git a/drivers/hid/hid-nintendo.c b/drivers/hid/hid-nintendo.c
index 29008c2cc530..b5e799ace249 100644
--- a/drivers/hid/hid-nintendo.c
+++ b/drivers/hid/hid-nintendo.c
@@ -316,6 +316,7 @@ enum joycon_ctlr_type {
JOYCON_CTLR_TYPE_JCL = 0x01,
JOYCON_CTLR_TYPE_JCR = 0x02,
JOYCON_CTLR_TYPE_PRO = 0x03,
+ JOYCON_CTLR_TYPE_LIC_PRO = 0x06,
JOYCON_CTLR_TYPE_NESL = 0x09,
JOYCON_CTLR_TYPE_NESR = 0x0A,
JOYCON_CTLR_TYPE_SNES = 0x0B,
@@ -433,6 +434,25 @@ static const struct joycon_ctlr_button_mapping procon_button_mappings[] = {
{ /* sentinel */ },
};
+/* Licensed Pro Controllers (e.g. HORI) swap X/Y bits in the report */
+static const struct joycon_ctlr_button_mapping lic_procon_button_mappings[] = {
+ { BTN_EAST, JC_BTN_A, },
+ { BTN_SOUTH, JC_BTN_B, },
+ { BTN_NORTH, JC_BTN_Y, },
+ { BTN_WEST, JC_BTN_X, },
+ { BTN_TL, JC_BTN_L, },
+ { BTN_TR, JC_BTN_R, },
+ { BTN_TL2, JC_BTN_ZL, },
+ { BTN_TR2, JC_BTN_ZR, },
+ { BTN_SELECT, JC_BTN_MINUS, },
+ { BTN_START, JC_BTN_PLUS, },
+ { BTN_THUMBL, JC_BTN_LSTICK, },
+ { BTN_THUMBR, JC_BTN_RSTICK, },
+ { BTN_MODE, JC_BTN_HOME, },
+ { BTN_Z, JC_BTN_CAP, },
+ { /* sentinel */ },
+};
+
static const struct joycon_ctlr_button_mapping nescon_button_mappings[] = {
{ BTN_SOUTH, JC_BTN_A, },
{ BTN_EAST, JC_BTN_B, },
@@ -695,7 +715,8 @@ static inline bool joycon_type_is_right_joycon(struct joycon_ctlr *ctlr)
static inline bool joycon_type_is_procon(struct joycon_ctlr *ctlr)
{
- return ctlr->ctlr_type == JOYCON_CTLR_TYPE_PRO;
+ return ctlr->ctlr_type == JOYCON_CTLR_TYPE_PRO ||
+ ctlr->ctlr_type == JOYCON_CTLR_TYPE_LIC_PRO;
}
static inline bool joycon_type_is_snescon(struct joycon_ctlr *ctlr)
@@ -1710,7 +1731,10 @@ static void joycon_parse_report(struct joycon_ctlr *ctlr,
joycon_report_left_stick(ctlr, rep);
joycon_report_right_stick(ctlr, rep);
joycon_report_dpad(ctlr, rep);
- joycon_report_buttons(ctlr, rep, procon_button_mappings);
+ if (ctlr->ctlr_type == JOYCON_CTLR_TYPE_LIC_PRO)
+ joycon_report_buttons(ctlr, rep, lic_procon_button_mappings);
+ else
+ joycon_report_buttons(ctlr, rep, procon_button_mappings);
} else if (joycon_type_is_any_nescon(ctlr)) {
joycon_report_dpad(ctlr, rep);
joycon_report_buttons(ctlr, rep, nescon_button_mappings);
@@ -2156,7 +2180,10 @@ static int joycon_input_create(struct joycon_ctlr *ctlr)
joycon_config_left_stick(ctlr->input);
joycon_config_right_stick(ctlr->input);
joycon_config_dpad(ctlr->input);
- joycon_config_buttons(ctlr->input, procon_button_mappings);
+ if (ctlr->ctlr_type == JOYCON_CTLR_TYPE_LIC_PRO)
+ joycon_config_buttons(ctlr->input, lic_procon_button_mappings);
+ else
+ joycon_config_buttons(ctlr->input, procon_button_mappings);
} else if (joycon_type_is_any_nescon(ctlr)) {
joycon_config_dpad(ctlr->input);
joycon_config_buttons(ctlr->input, nescon_button_mappings);
@@ -2503,13 +2530,30 @@ static int joycon_init(struct hid_device *hdev)
if (joycon_has_joysticks(ctlr)) {
/* get controller calibration data, and parse it */
- ret = joycon_request_calibration(ctlr);
- if (ret) {
+ if (ctlr->ctlr_type == JOYCON_CTLR_TYPE_LIC_PRO) {
/*
- * We can function with default calibration, but it may be
- * inaccurate. Provide a warning, and continue on.
+ * Licensed controllers may have incompatible SPI flash
+ * layouts. Use default calibration values.
*/
- hid_warn(hdev, "Analog stick positions may be inaccurate\n");
+ hid_info(hdev, "using default cal for licensed controller\n");
+ joycon_use_default_calibration(hdev,
+ &ctlr->left_stick_cal_x,
+ &ctlr->left_stick_cal_y,
+ "left", 0);
+ joycon_use_default_calibration(hdev,
+ &ctlr->right_stick_cal_x,
+ &ctlr->right_stick_cal_y,
+ "right", 0);
+ } else {
+ ret = joycon_request_calibration(ctlr);
+ if (ret) {
+ /*
+ * We can function with default calibration, but
+ * it may be inaccurate. Provide a warning, and
+ * continue on.
+ */
+ hid_warn(hdev, "Analog stick positions may be inaccurate\n");
+ }
}
}
@@ -2527,8 +2571,12 @@ static int joycon_init(struct hid_device *hdev)
/* Enable the IMU */
ret = joycon_enable_imu(ctlr);
if (ret) {
- hid_err(hdev, "Failed to enable the IMU; ret=%d\n", ret);
- goto out_unlock;
+ if (ctlr->ctlr_type == JOYCON_CTLR_TYPE_LIC_PRO) {
+ hid_dbg(hdev, "IMU enable failed for licensed controller, continuing\n");
+ } else {
+ hid_err(hdev, "Failed to enable the IMU; ret=%d\n", ret);
+ goto out_unlock;
+ }
}
}
@@ -2543,8 +2591,12 @@ static int joycon_init(struct hid_device *hdev)
/* Enable rumble */
ret = joycon_enable_rumble(ctlr);
if (ret) {
- hid_err(hdev, "Failed to enable rumble; ret=%d\n", ret);
- goto out_unlock;
+ if (ctlr->ctlr_type == JOYCON_CTLR_TYPE_LIC_PRO) {
+ hid_dbg(hdev, "rumble enable failed for licensed controller, continuing\n");
+ } else {
+ hid_err(hdev, "Failed to enable rumble; ret=%d\n", ret);
+ goto out_unlock;
+ }
}
}
@@ -2813,6 +2865,8 @@ static const struct hid_device_id nintendo_hid_devices[] = {
USB_DEVICE_ID_NINTENDO_GENCON) },
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_NINTENDO,
USB_DEVICE_ID_NINTENDO_N64CON) },
+ { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_HORI,
+ USB_DEVICE_ID_HORI_WIRELESS_SWITCH_PAD) },
{ }
};
MODULE_DEVICE_TABLE(hid, nintendo_hid_devices);
---
base-commit: e71bac24ec1f517f399a9eb471255b8f1c330b93
change-id: 20260526-hori-support-08b08bca40d8
Best regards,
--
Hector Zelaya <hector@hectorzelaya.dev>
^ permalink raw reply related
* Re: [PATCH v2] HID: appletb-kbd: add option to switch default layer on double pressing fn key
From: sashiko-bot @ 2026-05-26 16:51 UTC (permalink / raw)
To: Aditya Garg; +Cc: linux-input, dmitry.torokhov
In-Reply-To: <20260526154954.29002-1-gargaditya08@proton.me>
Thank you for your contribution! Sashiko AI review found 5 potential issue(s) to consider:
New issues:
- [Medium] Dynamic mutation of a read-only global module parameter from a per-device atomic event handler without synchronization.
- [Medium] Incorrect double-press detection during early system uptime on 32-bit systems due to jiffies wrap-around with a 0-initialized timestamp.
- [Low] Intervening non-Fn key presses do not reset the double-press detection timer.
Pre-existing issues:
- [High] Calling sleeping functions (`hid_hw_power` and `hid_hw_request`) from an atomic context causes a kernel panic.
- [High] A race condition during `probe()` allows incoming HID events to trigger a NULL pointer dereference.
--
commit 9461d5707b93702971195b71e23ddea06392c720
Author: Aditya Garg <gargaditya08@proton.me>
HID: appletb-kbd: add option to switch default layer on double pressing fn key
This patch enables a user to switch the default layer from media to fn
keys and vice-versa upon double pressing the fn key. This behaviour can
be configured using the double_press_switch_time module parameter.
> diff --git a/drivers/hid/hid-appletb-kbd.c b/drivers/hid/hid-appletb-kbd.c
> index 462010a758993..34bfc595949dc 100644
> --- a/drivers/hid/hid-appletb-kbd.c
> +++ b/drivers/hid/hid-appletb-kbd.c
[ ... ]
> @@ -243,6 +250,18 @@ static int appletb_kbd_hid_event(struct hid_device *hdev, struct hid_field *fiel
> return kbd->current_mode == APPLETB_KBD_MODE_OFF;
> }
>
[Severity: High]
This is a pre-existing issue, but does a race condition during probe() allow
incoming HID events to trigger a NULL pointer dereference?
If hid_hw_start() and hid_hw_open() are called before hid_set_drvdata() is
executed, an incoming keyboard event might invoke appletb_kbd_hid_event()
before probe() finishes. This would call hid_get_drvdata(hdev) returning
NULL, which is then passed to reset_inactivity_timer() and unconditionally
dereferenced.
> +static u8 appletb_switch_mode(u8 mode)
> +{
[ ... ]
> @@ -250,15 +269,42 @@ static void appletb_kbd_inp_event(struct input_handle *handle, unsigned int type
>
> reset_inactivity_timer(kbd);
>
> - if (type == EV_KEY && code == KEY_FN && appletb_tb_fn_toggle &&
> - (kbd->current_mode == APPLETB_KBD_MODE_SPCL ||
> - kbd->current_mode == APPLETB_KBD_MODE_FN)) {
> + if (type == EV_KEY && code == KEY_FN &&
> + (kbd->current_mode == APPLETB_KBD_MODE_SPCL ||
> + kbd->current_mode == APPLETB_KBD_MODE_FN)) {
> +
[Severity: Low]
Is it possible that intervening non-Fn key presses should reset the
double-press detection timer?
If a user presses Fn, types another key, and then presses Fn again within
the delay timeout, the driver might erroneously interpret this as a
double-press and switch the layer.
> if (value == 1) {
> - kbd->saved_mode = kbd->current_mode;
> - appletb_kbd_set_mode(kbd, kbd->current_mode == APPLETB_KBD_MODE_SPCL
> - ? APPLETB_KBD_MODE_FN : APPLETB_KBD_MODE_SPCL);
> + if (appletb_tb_double_press_switch_layers > 0) {
> + unsigned long now = jiffies;
> +
> + if (time_before(now, kbd->last_fn_press +
> + msecs_to_jiffies(appletb_tb_double_press_switch_layers))) {
[Severity: Medium]
Could this double-press detection trigger incorrectly during early system
uptime on 32-bit systems?
Since last_fn_press is zero-initialized and jiffies starts at a large
negative value, time_before() might evaluate to true for the first 5
minutes of uptime.
This would cause any single press of the Fn key to erroneously trigger a
double-press layer switch.
> +
> + appletb_tb_def_mode =
> + appletb_switch_mode(
> + appletb_tb_def_mode);
[Severity: Medium]
Is it safe to dynamically mutate the appletb_tb_def_mode module parameter
from a per-device atomic event handler without synchronization?
Since appletb_tb_def_mode is a global variable exported as read-only,
modifying it dynamically could violate its sysfs contract and introduce a
data race if multiple keyboards are used concurrently.
This would also improperly alter the default mode for all current and future
connected devices.
> +
> + appletb_kbd_set_mode(kbd,
> + appletb_tb_def_mode);
[Severity: High]
This is a pre-existing issue, but does calling appletb_kbd_set_mode() from
this atomic context cause a kernel panic?
The appletb_kbd_inp_event handler is invoked by the input subsystem with
the dev->event_lock spinlock held and interrupts disabled.
appletb_kbd_set_mode() calls hid_hw_power() and hid_hw_request(). For USB
HID devices, hid_hw_power() may sleep and will warn in atomic context,
potentially leading to a scheduling while atomic panic.
> +
> + kbd->saved_mode = appletb_tb_def_mode;
> + kbd->last_fn_press = 0;
> +
> + return;
> + }
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260526154954.29002-1-gargaditya08@proton.me?part=1
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox