* [PATCH BlueZ 2/4] android/hid: Fix passing vendor id as version to uHID
From: Luiz Augusto von Dentz @ 2013-11-01 13:08 UTC (permalink / raw)
To: linux-bluetooth
In-Reply-To: <1383311321-28429-1-git-send-email-luiz.dentz@gmail.com>
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
---
android/hid.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/android/hid.c b/android/hid.c
index bbdc66a..57ad5e4 100644
--- a/android/hid.c
+++ b/android/hid.c
@@ -278,7 +278,7 @@ static int uhid_create(struct hid_device *dev)
ev.u.create.bus = BUS_BLUETOOTH;
ev.u.create.vendor = dev->vendor;
ev.u.create.product = dev->product;
- ev.u.create.version = dev->vendor;
+ ev.u.create.version = dev->version;
ev.u.create.country = dev->country;
ev.u.create.rd_size = dev->rd_size;
ev.u.create.rd_data = dev->rd_data;
--
1.8.3.1
^ permalink raw reply related
* [PATCH BlueZ 1/4] android/hid: Rename hdev vars to dev
From: Luiz Augusto von Dentz @ 2013-11-01 13:08 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
---
android/hid.c | 248 +++++++++++++++++++++++++++++-----------------------------
1 file changed, 124 insertions(+), 124 deletions(-)
diff --git a/android/hid.c b/android/hid.c
index f576548..bbdc66a 100644
--- a/android/hid.c
+++ b/android/hid.c
@@ -74,10 +74,10 @@ struct hid_device {
static int device_cmp(gconstpointer s, gconstpointer user_data)
{
- const struct hid_device *hdev = s;
+ const struct hid_device *dev = s;
const bdaddr_t *dst = user_data;
- return bacmp(&hdev->dst, dst);
+ return bacmp(&dev->dst, dst);
}
static void uhid_destroy(int fd)
@@ -95,38 +95,38 @@ static void uhid_destroy(int fd)
close(fd);
}
-static void hid_device_free(struct hid_device *hdev)
+static void hid_device_free(struct hid_device *dev)
{
- if (hdev->ctrl_watch > 0)
- g_source_remove(hdev->ctrl_watch);
+ if (dev->ctrl_watch > 0)
+ g_source_remove(dev->ctrl_watch);
- if (hdev->intr_watch > 0)
- g_source_remove(hdev->intr_watch);
+ if (dev->intr_watch > 0)
+ g_source_remove(dev->intr_watch);
- if (hdev->intr_io)
- g_io_channel_unref(hdev->intr_io);
+ if (dev->intr_io)
+ g_io_channel_unref(dev->intr_io);
- if (hdev->ctrl_io)
- g_io_channel_unref(hdev->ctrl_io);
+ if (dev->ctrl_io)
+ g_io_channel_unref(dev->ctrl_io);
- if (hdev->uhid_watch_id) {
- g_source_remove(hdev->uhid_watch_id);
- hdev->uhid_watch_id = 0;
+ if (dev->uhid_watch_id) {
+ g_source_remove(dev->uhid_watch_id);
+ dev->uhid_watch_id = 0;
}
- if (hdev->uhid_fd > 0)
- uhid_destroy(hdev->uhid_fd);
+ if (dev->uhid_fd > 0)
+ uhid_destroy(dev->uhid_fd);
- g_free(hdev->rd_data);
+ g_free(dev->rd_data);
- devices = g_slist_remove(devices, hdev);
- g_free(hdev);
+ devices = g_slist_remove(devices, dev);
+ g_free(dev);
}
static gboolean uhid_event_cb(GIOChannel *io, GIOCondition cond,
gpointer user_data)
{
- struct hid_device *hdev = user_data;
+ struct hid_device *dev = user_data;
struct uhid_event ev;
ssize_t bread;
int fd;
@@ -151,19 +151,19 @@ static gboolean uhid_event_cb(GIOChannel *io, GIOCondition cond,
return TRUE;
failed:
- hdev->uhid_watch_id = 0;
+ dev->uhid_watch_id = 0;
return FALSE;
}
static gboolean intr_io_watch_cb(GIOChannel *chan, gpointer data)
{
- struct hid_device *hdev = data;
+ struct hid_device *dev = data;
uint8_t buf[UHID_DATA_MAX];
struct uhid_event ev;
int fd, bread;
/* Wait uHID if not ready */
- if (hdev->uhid_fd < 0)
+ if (dev->uhid_fd < 0)
return TRUE;
fd = g_io_channel_unix_get_fd(chan);
@@ -183,26 +183,26 @@ static gboolean intr_io_watch_cb(GIOChannel *chan, gpointer data)
ev.u.input.size = bread - 1;
memcpy(ev.u.input.data, &buf[1], ev.u.input.size);
- if (write(hdev->uhid_fd, &ev, sizeof(ev)) < 0)
+ if (write(dev->uhid_fd, &ev, sizeof(ev)) < 0)
DBG("write: %s (%d)", strerror(errno), errno);
return TRUE;
}
-static void bt_hid_set_state(struct hid_device *hdev, uint8_t state)
+static void bt_hid_set_state(struct hid_device *dev, uint8_t state)
{
struct hal_ev_hid_conn_state ev;
char address[18];
- if (hdev->state == state)
+ if (dev->state == state)
return;
- hdev->state = state;
+ dev->state = state;
- ba2str(&hdev->dst, address);
+ ba2str(&dev->dst, address);
DBG("device %s state %u", address, state);
- bdaddr2android(&hdev->dst, ev.bdaddr);
+ bdaddr2android(&dev->dst, ev.bdaddr);
ev.state = state;
ipc_send(notification_io, HAL_SERVICE_ID_HIDHOST,
@@ -212,7 +212,7 @@ static void bt_hid_set_state(struct hid_device *hdev, uint8_t state)
static gboolean intr_watch_cb(GIOChannel *chan, GIOCondition cond,
gpointer data)
{
- struct hid_device *hdev = data;
+ struct hid_device *dev = data;
if (cond & G_IO_IN)
return intr_io_watch_cb(chan, data);
@@ -220,19 +220,19 @@ static gboolean intr_watch_cb(GIOChannel *chan, GIOCondition cond,
/* Checking for ctrl_watch avoids a double g_io_channel_shutdown since
* it's likely that ctrl_watch_cb has been queued for dispatching in
* this mainloop iteration */
- if ((cond & (G_IO_HUP | G_IO_ERR)) && hdev->ctrl_watch)
+ if ((cond & (G_IO_HUP | G_IO_ERR)) && dev->ctrl_watch)
g_io_channel_shutdown(chan, TRUE, NULL);
- hdev->intr_watch = 0;
+ dev->intr_watch = 0;
- if (hdev->intr_io) {
- g_io_channel_unref(hdev->intr_io);
- hdev->intr_io = NULL;
+ if (dev->intr_io) {
+ g_io_channel_unref(dev->intr_io);
+ dev->intr_io = NULL;
}
/* Close control channel */
- if (hdev->ctrl_io && !(cond & G_IO_NVAL))
- g_io_channel_shutdown(hdev->ctrl_io, TRUE, NULL);
+ if (dev->ctrl_io && !(cond & G_IO_NVAL))
+ g_io_channel_shutdown(dev->ctrl_io, TRUE, NULL);
return FALSE;
}
@@ -240,34 +240,34 @@ static gboolean intr_watch_cb(GIOChannel *chan, GIOCondition cond,
static gboolean ctrl_watch_cb(GIOChannel *chan, GIOCondition cond,
gpointer data)
{
- struct hid_device *hdev = data;
+ struct hid_device *dev = data;
char address[18];
- ba2str(&hdev->dst, address);
- bt_hid_set_state(hdev, HAL_HID_STATE_DISCONNECTED);
+ ba2str(&dev->dst, address);
+ bt_hid_set_state(dev, HAL_HID_STATE_DISCONNECTED);
/* Checking for intr_watch avoids a double g_io_channel_shutdown since
* it's likely that intr_watch_cb has been queued for dispatching in
* this mainloop iteration */
- if ((cond & (G_IO_HUP | G_IO_ERR)) && hdev->intr_watch)
+ if ((cond & (G_IO_HUP | G_IO_ERR)) && dev->intr_watch)
g_io_channel_shutdown(chan, TRUE, NULL);
- if (hdev->intr_io && !(cond & G_IO_NVAL))
- g_io_channel_shutdown(hdev->intr_io, TRUE, NULL);
+ if (dev->intr_io && !(cond & G_IO_NVAL))
+ g_io_channel_shutdown(dev->intr_io, TRUE, NULL);
- hid_device_free(hdev);
+ hid_device_free(dev);
return FALSE;
}
-static int uhid_create(struct hid_device *hdev)
+static int uhid_create(struct hid_device *dev)
{
GIOCondition cond = G_IO_IN | G_IO_ERR | G_IO_NVAL;
GIOChannel *io;
struct uhid_event ev;
- hdev->uhid_fd = open(UHID_DEVICE_FILE, O_RDWR | O_CLOEXEC);
- if (hdev->uhid_fd < 0) {
+ dev->uhid_fd = open(UHID_DEVICE_FILE, O_RDWR | O_CLOEXEC);
+ if (dev->uhid_fd < 0) {
error("Failed to open uHID device: %s", strerror(errno));
return -errno;
}
@@ -276,23 +276,23 @@ static int uhid_create(struct hid_device *hdev)
ev.type = UHID_CREATE;
strcpy((char *) ev.u.create.name, "bluez-input-device");
ev.u.create.bus = BUS_BLUETOOTH;
- ev.u.create.vendor = hdev->vendor;
- ev.u.create.product = hdev->product;
- ev.u.create.version = hdev->vendor;
- ev.u.create.country = hdev->country;
- ev.u.create.rd_size = hdev->rd_size;
- ev.u.create.rd_data = hdev->rd_data;
-
- if (write(hdev->uhid_fd, &ev, sizeof(ev)) < 0) {
+ ev.u.create.vendor = dev->vendor;
+ ev.u.create.product = dev->product;
+ ev.u.create.version = dev->vendor;
+ ev.u.create.country = dev->country;
+ ev.u.create.rd_size = dev->rd_size;
+ ev.u.create.rd_data = dev->rd_data;
+
+ if (write(dev->uhid_fd, &ev, sizeof(ev)) < 0) {
error("Failed to create uHID device: %s", strerror(errno));
- close(hdev->uhid_fd);
- hdev->uhid_fd = -1;
+ close(dev->uhid_fd);
+ dev->uhid_fd = -1;
return -errno;
}
- io = g_io_channel_unix_new(hdev->uhid_fd);
+ io = g_io_channel_unix_new(dev->uhid_fd);
g_io_channel_set_encoding(io, NULL, NULL);
- hdev->uhid_watch_id = g_io_add_watch(io, cond, uhid_event_cb, hdev);
+ dev->uhid_watch_id = g_io_add_watch(io, cond, uhid_event_cb, dev);
g_io_channel_unref(io);
return 0;
@@ -301,21 +301,21 @@ static int uhid_create(struct hid_device *hdev)
static void interrupt_connect_cb(GIOChannel *chan, GError *conn_err,
gpointer user_data)
{
- struct hid_device *hdev = user_data;
+ struct hid_device *dev = user_data;
DBG("");
if (conn_err)
goto failed;
- if (uhid_create(hdev) < 0)
+ if (uhid_create(dev) < 0)
goto failed;
- hdev->intr_watch = g_io_add_watch(hdev->intr_io,
+ dev->intr_watch = g_io_add_watch(dev->intr_io,
G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_NVAL,
- intr_watch_cb, hdev);
+ intr_watch_cb, dev);
- bt_hid_set_state(hdev, HAL_HID_STATE_CONNECTED);
+ bt_hid_set_state(dev, HAL_HID_STATE_CONNECTED);
return;
@@ -324,58 +324,58 @@ failed:
* control channel (if we only do unref GLib will close it only
* after returning control to the mainloop */
if (!conn_err)
- g_io_channel_shutdown(hdev->intr_io, FALSE, NULL);
+ g_io_channel_shutdown(dev->intr_io, FALSE, NULL);
- g_io_channel_unref(hdev->intr_io);
- hdev->intr_io = NULL;
+ g_io_channel_unref(dev->intr_io);
+ dev->intr_io = NULL;
- if (hdev->ctrl_io) {
- g_io_channel_unref(hdev->ctrl_io);
- hdev->ctrl_io = NULL;
+ if (dev->ctrl_io) {
+ g_io_channel_unref(dev->ctrl_io);
+ dev->ctrl_io = NULL;
}
}
static void control_connect_cb(GIOChannel *chan, GError *conn_err,
gpointer user_data)
{
- struct hid_device *hdev = user_data;
+ struct hid_device *dev = user_data;
GError *err = NULL;
const bdaddr_t *src = bt_adapter_get_address();
DBG("");
if (conn_err) {
- bt_hid_set_state(hdev, HAL_HID_STATE_DISCONNECTED);
+ bt_hid_set_state(dev, HAL_HID_STATE_DISCONNECTED);
error("%s", conn_err->message);
goto failed;
}
/* Connect to the HID interrupt channel */
- hdev->intr_io = bt_io_connect(interrupt_connect_cb, hdev, NULL, &err,
+ dev->intr_io = bt_io_connect(interrupt_connect_cb, dev, NULL, &err,
BT_IO_OPT_SOURCE_BDADDR, src,
- BT_IO_OPT_DEST_BDADDR, &hdev->dst,
+ BT_IO_OPT_DEST_BDADDR, &dev->dst,
BT_IO_OPT_PSM, L2CAP_PSM_HIDP_INTR,
BT_IO_OPT_SEC_LEVEL, BT_IO_SEC_LOW,
BT_IO_OPT_INVALID);
- if (!hdev->intr_io) {
+ if (!dev->intr_io) {
error("%s", err->message);
g_error_free(err);
goto failed;
}
- hdev->ctrl_watch = g_io_add_watch(hdev->ctrl_io,
+ dev->ctrl_watch = g_io_add_watch(dev->ctrl_io,
G_IO_HUP | G_IO_ERR | G_IO_NVAL,
- ctrl_watch_cb, hdev);
+ ctrl_watch_cb, dev);
return;
failed:
- hid_device_free(hdev);
+ hid_device_free(dev);
}
static void hid_sdp_search_cb(sdp_list_t *recs, int err, gpointer data)
{
- struct hid_device *hdev = data;
+ struct hid_device *dev = data;
sdp_list_t *list;
GError *gerr = NULL;
const bdaddr_t *src = bt_adapter_get_address();
@@ -398,19 +398,19 @@ static void hid_sdp_search_cb(sdp_list_t *recs, int err, gpointer data)
data = sdp_data_get(rec, SDP_ATTR_VENDOR_ID);
if (data)
- hdev->vendor = data->val.uint16;
+ dev->vendor = data->val.uint16;
data = sdp_data_get(rec, SDP_ATTR_PRODUCT_ID);
if (data)
- hdev->product = data->val.uint16;
+ dev->product = data->val.uint16;
data = sdp_data_get(rec, SDP_ATTR_VERSION);
if (data)
- hdev->version = data->val.uint16;
+ dev->version = data->val.uint16;
data = sdp_data_get(rec, SDP_ATTR_HID_COUNTRY_CODE);
if (data)
- hdev->country = data->val.uint8;
+ dev->country = data->val.uint8;
data = sdp_data_get(rec, SDP_ATTR_HID_DESCRIPTOR_LIST);
if (data) {
@@ -432,20 +432,20 @@ static void hid_sdp_search_cb(sdp_list_t *recs, int err, gpointer data)
if (!data || !SDP_IS_TEXT_STR(data->dtd))
goto fail;
- hdev->rd_size = data->unitSize;
- hdev->rd_data = g_memdup(data->val.str, data->unitSize);
+ dev->rd_size = data->unitSize;
+ dev->rd_data = g_memdup(data->val.str, data->unitSize);
}
}
- if (hdev->ctrl_io) {
- if (uhid_create(hdev) < 0)
+ if (dev->ctrl_io) {
+ if (uhid_create(dev) < 0)
goto fail;
return;
}
- hdev->ctrl_io = bt_io_connect(control_connect_cb, hdev, NULL, &gerr,
+ dev->ctrl_io = bt_io_connect(control_connect_cb, dev, NULL, &gerr,
BT_IO_OPT_SOURCE_BDADDR, src,
- BT_IO_OPT_DEST_BDADDR, &hdev->dst,
+ BT_IO_OPT_DEST_BDADDR, &dev->dst,
BT_IO_OPT_PSM, L2CAP_PSM_HIDP_CTRL,
BT_IO_OPT_SEC_LEVEL, BT_IO_SEC_LOW,
BT_IO_OPT_INVALID);
@@ -458,13 +458,13 @@ static void hid_sdp_search_cb(sdp_list_t *recs, int err, gpointer data)
return;
fail:
- bt_hid_set_state(hdev, HAL_HID_STATE_DISCONNECTED);
- hid_device_free(hdev);
+ bt_hid_set_state(dev, HAL_HID_STATE_DISCONNECTED);
+ hid_device_free(dev);
}
static uint8_t bt_hid_connect(struct hal_cmd_hid_connect *cmd, uint16_t len)
{
- struct hid_device *hdev;
+ struct hid_device *dev;
char addr[18];
bdaddr_t dst;
GSList *l;
@@ -482,23 +482,23 @@ static uint8_t bt_hid_connect(struct hal_cmd_hid_connect *cmd, uint16_t len)
if (l)
return HAL_STATUS_FAILED;
- hdev = g_new0(struct hid_device, 1);
- bacpy(&hdev->dst, &dst);
- hdev->uhid_fd = -1;
+ dev = g_new0(struct hid_device, 1);
+ bacpy(&dev->dst, &dst);
+ dev->uhid_fd = -1;
- ba2str(&hdev->dst, addr);
+ ba2str(&dev->dst, addr);
DBG("connecting to %s", addr);
bt_string2uuid(&uuid, HID_UUID);
- if (bt_search_service(src, &hdev->dst, &uuid, hid_sdp_search_cb, hdev,
+ if (bt_search_service(src, &dev->dst, &uuid, hid_sdp_search_cb, dev,
NULL) < 0) {
error("Failed to search sdp details");
- hid_device_free(hdev);
+ hid_device_free(dev);
return HAL_STATUS_FAILED;
}
- devices = g_slist_append(devices, hdev);
- bt_hid_set_state(hdev, HAL_HID_STATE_CONNECTING);
+ devices = g_slist_append(devices, dev);
+ bt_hid_set_state(dev, HAL_HID_STATE_CONNECTING);
return HAL_STATUS_SUCCESS;
}
@@ -506,7 +506,7 @@ static uint8_t bt_hid_connect(struct hal_cmd_hid_connect *cmd, uint16_t len)
static uint8_t bt_hid_disconnect(struct hal_cmd_hid_disconnect *cmd,
uint16_t len)
{
- struct hid_device *hdev;
+ struct hid_device *dev;
GSList *l;
bdaddr_t dst;
@@ -521,16 +521,16 @@ static uint8_t bt_hid_disconnect(struct hal_cmd_hid_disconnect *cmd,
if (!l)
return HAL_STATUS_FAILED;
- hdev = l->data;
+ dev = l->data;
/* Wait either channels to HUP */
- if (hdev->intr_io)
- g_io_channel_shutdown(hdev->intr_io, TRUE, NULL);
+ if (dev->intr_io)
+ g_io_channel_shutdown(dev->intr_io, TRUE, NULL);
- if (hdev->ctrl_io)
- g_io_channel_shutdown(hdev->ctrl_io, TRUE, NULL);
+ if (dev->ctrl_io)
+ g_io_channel_shutdown(dev->ctrl_io, TRUE, NULL);
- bt_hid_set_state(hdev, HAL_HID_STATE_DISCONNECTING);
+ bt_hid_set_state(dev, HAL_HID_STATE_DISCONNECTING);
return HAL_STATUS_SUCCESS;
}
@@ -556,7 +556,7 @@ void bt_hid_handle_cmd(GIOChannel *io, uint8_t opcode, void *buf, uint16_t len)
static void connect_cb(GIOChannel *chan, GError *err, gpointer user_data)
{
- struct hid_device *hdev;
+ struct hid_device *dev;
bdaddr_t dst;
char address[18];
uint16_t psm;
@@ -589,25 +589,25 @@ static void connect_cb(GIOChannel *chan, GError *err, gpointer user_data)
if (l)
return;
- hdev = g_new0(struct hid_device, 1);
- bacpy(&hdev->dst, &dst);
- hdev->ctrl_io = g_io_channel_ref(chan);
- hdev->uhid_fd = -1;
+ dev = g_new0(struct hid_device, 1);
+ bacpy(&dev->dst, &dst);
+ dev->ctrl_io = g_io_channel_ref(chan);
+ dev->uhid_fd = -1;
bt_string2uuid(&uuid, HID_UUID);
- if (bt_search_service(src, &hdev->dst, &uuid,
- hid_sdp_search_cb, hdev, NULL) < 0) {
+ if (bt_search_service(src, &dev->dst, &uuid,
+ hid_sdp_search_cb, dev, NULL) < 0) {
error("failed to search sdp details");
- hid_device_free(hdev);
+ hid_device_free(dev);
return;
}
- devices = g_slist_append(devices, hdev);
+ devices = g_slist_append(devices, dev);
- hdev->ctrl_watch = g_io_add_watch(hdev->ctrl_io,
+ dev->ctrl_watch = g_io_add_watch(dev->ctrl_io,
G_IO_HUP | G_IO_ERR | G_IO_NVAL,
- ctrl_watch_cb, hdev);
- bt_hid_set_state(hdev, HAL_HID_STATE_CONNECTING);
+ ctrl_watch_cb, dev);
+ bt_hid_set_state(dev, HAL_HID_STATE_CONNECTING);
break;
case L2CAP_PSM_HIDP_INTR:
@@ -615,12 +615,12 @@ static void connect_cb(GIOChannel *chan, GError *err, gpointer user_data)
if (!l)
return;
- hdev = l->data;
- hdev->intr_io = g_io_channel_ref(chan);
- hdev->intr_watch = g_io_add_watch(hdev->intr_io,
+ dev = l->data;
+ dev->intr_io = g_io_channel_ref(chan);
+ dev->intr_watch = g_io_add_watch(dev->intr_io,
G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_NVAL,
- intr_watch_cb, hdev);
- bt_hid_set_state(hdev, HAL_HID_STATE_CONNECTED);
+ intr_watch_cb, dev);
+ bt_hid_set_state(dev, HAL_HID_STATE_CONNECTED);
break;
}
}
--
1.8.3.1
^ permalink raw reply related
* [PATCH] android/client: Fix pin reply call when pin argument missing in cmd
From: Ravi kumar Veeramally @ 2013-11-01 12:20 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Ravi kumar Veeramally
If condition checks number of arguments properly but still executes
EXEC command. It should display error message and return.
---
android/client/if-bt.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/android/client/if-bt.c b/android/client/if-bt.c
index 3d97458..2c3cc4a 100644
--- a/android/client/if-bt.c
+++ b/android/client/if-bt.c
@@ -719,12 +719,15 @@ static void pin_reply_p(int argc, const char **argv)
RETURN_IF_NULL(if_bluetooth);
VERIFY_ADDR_ARG(2, &addr);
- if (argc > 3) {
- accept = 1;
- pin_len = strlen(argv[3]);
- memcpy(pin.pin, argv[3], pin_len);
+ if (argc != 4) {
+ haltest_error("Usage <address> <pin>\n");
+ return;
}
+ accept = 1;
+ pin_len = strlen(argv[3]);
+ memcpy(pin.pin, argv[3], pin_len);
+
EXEC(if_bluetooth->pin_reply, &addr, accept, pin_len, &pin);
}
--
1.8.1.2
^ permalink raw reply related
* Re: [RFC] android/daemon: Update CoD and RSSI only when they exist
From: Johan Hedberg @ 2013-11-01 12:07 UTC (permalink / raw)
To: Andrei Emeltchenko; +Cc: linux-bluetooth
In-Reply-To: <1383306399-13750-1-git-send-email-Andrei.Emeltchenko.news@gmail.com>
Hi Andrei,
On Fri, Nov 01, 2013, Andrei Emeltchenko wrote:
> This avoid sending zeroed Class of Device and making it unidentified.
> ...
> prop[0]: type=BT_PROPERTY_CLASS_OF_DEVICE len=4 val=000000
> prop[1]: type=BT_PROPERTY_REMOTE_RSSI len=1 val=-75
> prop[2]: type=BT_PROPERTY_BDNAME len=249 val=Microsoft Bluetooth Number Pad
> ...
> ---
> android/adapter.c | 30 +++++++++++++++++-------------
> 1 file changed, 17 insertions(+), 13 deletions(-)
Applied. Thanks.
Johan
^ permalink raw reply
* Re: [RFC 1/6] android/daemon: Implement mgmt device connected event
From: Johan Hedberg @ 2013-11-01 12:06 UTC (permalink / raw)
To: Andrei Emeltchenko; +Cc: linux-bluetooth
In-Reply-To: <1383305418-13619-1-git-send-email-Andrei.Emeltchenko.news@gmail.com>
Hi Andrei,
On Fri, Nov 01, 2013, Andrei Emeltchenko wrote:
> Send HAL_EV_ACL_STATE_CHANGED event to HAL through IPC.
> ---
> android/adapter.c | 26 ++++++++++++++++++++++++++
> 1 file changed, 26 insertions(+)
This doesn't compile:
CC android/adapter.o
android/adapter.c: In function ‘mgmt_device_connected_event’:
android/adapter.c:641:17: error: ‘HAL_ACL_STATE_CONNECTED’ undeclared (first use in this function)
hal_ev.state = HAL_ACL_STATE_CONNECTED;
^
android/adapter.c:641:17: note: each undeclared identifier is reported only once for each function it appears in
make[1]: *** [android/adapter.o] Error 1
> + if (length < sizeof(*ev)) {
> + error("Too short %s (%u bytes)", __func__, length);
> + return;
> + }
This looks a bit weird. The function is not too short but the message
is, not to mention that having to use __func__ for error logs is a bit
counterintuitive. Just put "device connected event" into the string.
Same goes for your device disconnected event patch.
Johan
^ permalink raw reply
* [RFC] android/daemon: Update CoD and RSSI only when they exist
From: Andrei Emeltchenko @ 2013-11-01 11:46 UTC (permalink / raw)
To: linux-bluetooth
From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
This avoid sending zeroed Class of Device and making it unidentified.
...
prop[0]: type=BT_PROPERTY_CLASS_OF_DEVICE len=4 val=000000
prop[1]: type=BT_PROPERTY_REMOTE_RSSI len=1 val=-75
prop[2]: type=BT_PROPERTY_BDNAME len=249 val=Microsoft Bluetooth Number Pad
...
---
android/adapter.c | 30 +++++++++++++++++-------------
1 file changed, 17 insertions(+), 13 deletions(-)
diff --git a/android/adapter.c b/android/adapter.c
index 39389ee..314f711 100644
--- a/android/adapter.c
+++ b/android/adapter.c
@@ -454,19 +454,23 @@ static int fill_device_props(struct hal_property *prop, bdaddr_t *addr,
{
uint8_t num_props = 0;
- /* fill cod */
- prop->type = HAL_PROP_DEVICE_CLASS;
- prop->len = sizeof(cod);
- memcpy(prop->val, &cod, prop->len);
- prop = ((void *) prop) + sizeof(*prop) + sizeof(cod);
- num_props++;
-
- /* fill rssi */
- prop->type = HAL_PROP_DEVICE_RSSI;
- prop->len = sizeof(rssi);
- memcpy(prop->val, &rssi, prop->len);
- prop = ((void *) prop) + sizeof(*prop) + sizeof(rssi);
- num_props++;
+ /* fill Class of Device */
+ if (cod) {
+ prop->type = HAL_PROP_DEVICE_CLASS;
+ prop->len = sizeof(cod);
+ memcpy(prop->val, &cod, prop->len);
+ prop = ((void *) prop) + sizeof(*prop) + sizeof(cod);
+ num_props++;
+ }
+
+ /* fill RSSI */
+ if (rssi) {
+ prop->type = HAL_PROP_DEVICE_RSSI;
+ prop->len = sizeof(rssi);
+ memcpy(prop->val, &rssi, prop->len);
+ prop = ((void *) prop) + sizeof(*prop) + sizeof(rssi);
+ num_props++;
+ }
/* fill name */
if (name) {
--
1.7.10.4
^ permalink raw reply related
* [RFC 6/6] android/daemon: Add handler for device disconnected
From: Andrei Emeltchenko @ 2013-11-01 11:30 UTC (permalink / raw)
To: linux-bluetooth
In-Reply-To: <1383305418-13619-1-git-send-email-Andrei.Emeltchenko.news@gmail.com>
From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Send event to callback thread which shall call acl state change callback.
---
android/adapter.c | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/android/adapter.c b/android/adapter.c
index bc4492b..39389ee 100644
--- a/android/adapter.c
+++ b/android/adapter.c
@@ -643,6 +643,29 @@ static void mgmt_device_connected_event(uint16_t index, uint16_t length,
HAL_EV_ACL_STATE_CHANGED, sizeof(hal_ev), &hal_ev, -1);
}
+static void mgmt_device_disconnected_event(uint16_t index, uint16_t length,
+ const void *param, void *user_data)
+{
+ const struct mgmt_ev_device_disconnected *ev = param;
+ struct hal_ev_acl_state_changed hal_ev;
+
+ if (length < sizeof(*ev)) {
+ error("Too short %s (%u bytes)", __func__, length);
+ return;
+ }
+
+ /* TODO: Update device */
+
+ /* TODO: Check Set bonding state */
+
+ hal_ev.status = HAL_STATUS_SUCCESS;
+ hal_ev.state = HAL_ACL_STATE_DISCONNECTED;
+ bdaddr2android(&ev->addr.bdaddr, &hal_ev.bdaddr);
+
+ ipc_send(notification_io, HAL_SERVICE_ID_BLUETOOTH,
+ HAL_EV_ACL_STATE_CHANGED, sizeof(hal_ev), &hal_ev, -1);
+}
+
static void mgmt_connect_failed_event(uint16_t index, uint16_t length,
const void *param, void *user_data)
{
@@ -696,6 +719,10 @@ static void register_mgmt_handlers(void)
mgmt_register(adapter->mgmt, MGMT_EV_DEVICE_CONNECTED, adapter->index,
mgmt_device_connected_event, NULL, NULL);
+ mgmt_register(adapter->mgmt, MGMT_EV_DEVICE_DISCONNECTED,
+ adapter->index, mgmt_device_disconnected_event,
+ NULL, NULL);
+
mgmt_register(adapter->mgmt, MGMT_EV_CONNECT_FAILED, adapter->index,
mgmt_connect_failed_event, NULL, NULL);
--
1.7.10.4
^ permalink raw reply related
* [RFC 5/6] android/hal: Add debug prints for every HAL callback
From: Andrei Emeltchenko @ 2013-11-01 11:30 UTC (permalink / raw)
To: linux-bluetooth
In-Reply-To: <1383305418-13619-1-git-send-email-Andrei.Emeltchenko.news@gmail.com>
From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
This allows us to trace callbacks to Java.
---
android/hal-bluetooth.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/android/hal-bluetooth.c b/android/hal-bluetooth.c
index 91c5f97..7334d24 100644
--- a/android/hal-bluetooth.c
+++ b/android/hal-bluetooth.c
@@ -153,6 +153,8 @@ static void handle_adapter_props_changed(void *buf, uint16_t len)
struct hal_ev_adapter_props_changed *ev = buf;
bt_property_t props[ev->num_props];
+ DBG("");
+
if (!bt_hal_cbacks->adapter_properties_cb)
return;
@@ -168,6 +170,8 @@ static void handle_bond_state_change(void *buf)
struct hal_ev_bond_state_changed *ev = buf;
bt_bdaddr_t *addr = (bt_bdaddr_t *) ev->bdaddr;
+ DBG("state %u", ev->state);
+
if (bt_hal_cbacks->bond_state_changed_cb)
bt_hal_cbacks->bond_state_changed_cb(ev->status, addr,
ev->state);
@@ -180,6 +184,8 @@ static void handle_pin_request(void *buf)
bt_bdaddr_t *addr = (bt_bdaddr_t *) ev->bdaddr;
bt_bdname_t *name = (bt_bdname_t *) ev->name;
+ DBG("");
+
if (bt_hal_cbacks->pin_request_cb)
bt_hal_cbacks->pin_request_cb(addr, name, ev->class_of_dev);
}
@@ -191,6 +197,8 @@ static void handle_ssp_request(void *buf)
bt_bdaddr_t *addr = (bt_bdaddr_t *) ev->bdaddr;
bt_bdname_t *name = (bt_bdname_t *) ev->name;
+ DBG("");
+
if (bt_hal_cbacks->ssp_request_cb)
bt_hal_cbacks->ssp_request_cb(addr, name, ev->class_of_dev,
ev->pairing_variant,
@@ -218,6 +226,8 @@ static void handle_discovery_state_changed(void *buf)
{
struct hal_ev_discovery_state_changed *ev = buf;
+ DBG("");
+
if (bt_hal_cbacks->discovery_state_changed_cb)
bt_hal_cbacks->discovery_state_changed_cb(ev->state);
}
@@ -227,6 +237,8 @@ static void handle_device_found(void *buf, uint16_t len)
struct hal_ev_device_found *ev = buf;
bt_property_t props[ev->num_props];
+ DBG("");
+
if (!bt_hal_cbacks->device_found_cb)
return;
@@ -242,6 +254,8 @@ static void handle_device_state_changed(void *buf, uint16_t len)
struct hal_ev_remote_device_props *ev = buf;
bt_property_t props[ev->num_props];
+ DBG("");
+
if (!bt_hal_cbacks->remote_device_properties_cb)
return;
--
1.7.10.4
^ permalink raw reply related
* [RFC 4/6] android/daemon: Add handlers for auth_failed and connect_failed evt
From: Andrei Emeltchenko @ 2013-11-01 11:30 UTC (permalink / raw)
To: linux-bluetooth
In-Reply-To: <1383305418-13619-1-git-send-email-Andrei.Emeltchenko.news@gmail.com>
From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Add debug prints in a case connection is failing
---
android/adapter.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/android/adapter.c b/android/adapter.c
index df56452..bc4492b 100644
--- a/android/adapter.c
+++ b/android/adapter.c
@@ -643,6 +643,18 @@ static void mgmt_device_connected_event(uint16_t index, uint16_t length,
HAL_EV_ACL_STATE_CHANGED, sizeof(hal_ev), &hal_ev, -1);
}
+static void mgmt_connect_failed_event(uint16_t index, uint16_t length,
+ const void *param, void *user_data)
+{
+ DBG("");
+}
+
+static void mgmt_auth_failed_event(uint16_t index, uint16_t length,
+ const void *param, void *user_data)
+{
+ DBG("");
+}
+
static void register_mgmt_handlers(void)
{
mgmt_register(adapter->mgmt, MGMT_EV_NEW_SETTINGS, adapter->index,
@@ -683,6 +695,12 @@ static void register_mgmt_handlers(void)
mgmt_register(adapter->mgmt, MGMT_EV_DEVICE_CONNECTED, adapter->index,
mgmt_device_connected_event, NULL, NULL);
+
+ mgmt_register(adapter->mgmt, MGMT_EV_CONNECT_FAILED, adapter->index,
+ mgmt_connect_failed_event, NULL, NULL);
+
+ mgmt_register(adapter->mgmt, MGMT_EV_AUTH_FAILED, adapter->index,
+ mgmt_auth_failed_event, NULL, NULL);
}
static void load_link_keys_complete(uint8_t status, uint16_t length,
--
1.7.10.4
^ permalink raw reply related
* [RFC 3/6] android/hal: Handle acl_state_changed event
From: Andrei Emeltchenko @ 2013-11-01 11:30 UTC (permalink / raw)
To: linux-bluetooth
In-Reply-To: <1383305418-13619-1-git-send-email-Andrei.Emeltchenko.news@gmail.com>
From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
---
android/hal-bluetooth.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/android/hal-bluetooth.c b/android/hal-bluetooth.c
index a0ee844..91c5f97 100644
--- a/android/hal-bluetooth.c
+++ b/android/hal-bluetooth.c
@@ -254,6 +254,18 @@ static void handle_device_state_changed(void *buf, uint16_t len)
device_hal_props_cleanup(props, ev->num_props);
}
+static void handle_acl_state_changed(void *buf)
+{
+ struct hal_ev_acl_state_changed *ev = buf;
+ bt_bdaddr_t *addr = (bt_bdaddr_t *) ev->bdaddr;
+
+ DBG("state %u", ev->state);
+
+ if (bt_hal_cbacks->acl_state_changed_cb)
+ bt_hal_cbacks->acl_state_changed_cb(ev->status, addr,
+ ev->state);
+}
+
/* will be called from notification thread context */
void bt_notify_adapter(uint16_t opcode, void *buf, uint16_t len)
{
@@ -287,6 +299,9 @@ void bt_notify_adapter(uint16_t opcode, void *buf, uint16_t len)
case HAL_EV_SSP_REQUEST:
handle_ssp_request(buf);
break;
+ case HAL_EV_ACL_STATE_CHANGED:
+ handle_acl_state_changed(buf);
+ break;
default:
DBG("Unhandled callback opcode=0x%x", opcode);
break;
--
1.7.10.4
^ permalink raw reply related
* [RFC 2/6] android/ipc: Update HAL IPC header
From: Andrei Emeltchenko @ 2013-11-01 11:30 UTC (permalink / raw)
To: linux-bluetooth
In-Reply-To: <1383305418-13619-1-git-send-email-Andrei.Emeltchenko.news@gmail.com>
From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Add ACL states to the header.
---
android/hal-msg.h | 3 +++
1 file changed, 3 insertions(+)
diff --git a/android/hal-msg.h b/android/hal-msg.h
index 8a344d8..1d256f2 100644
--- a/android/hal-msg.h
+++ b/android/hal-msg.h
@@ -405,6 +405,9 @@ struct hal_ev_bond_state_changed {
uint8_t state;
} __attribute__((packed));
+#define HAL_ACL_STATE_CONNECTED 0x00
+#define HAL_ACL_STATE_DISCONNECTED 0x01
+
#define HAL_EV_ACL_STATE_CHANGED 0x89
struct hal_ev_acl_state_changed {
uint8_t status;
--
1.7.10.4
^ permalink raw reply related
* [RFC 1/6] android/daemon: Implement mgmt device connected event
From: Andrei Emeltchenko @ 2013-11-01 11:30 UTC (permalink / raw)
To: linux-bluetooth
From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Send HAL_EV_ACL_STATE_CHANGED event to HAL through IPC.
---
android/adapter.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/android/adapter.c b/android/adapter.c
index 4ddd68b..df56452 100644
--- a/android/adapter.c
+++ b/android/adapter.c
@@ -620,6 +620,29 @@ static void mgmt_device_found_event(uint16_t index, uint16_t length,
confirm_name, eir, eir_len);
}
+static void mgmt_device_connected_event(uint16_t index, uint16_t length,
+ const void *param, void *user_data)
+{
+ const struct mgmt_ev_device_connected *ev = param;
+ struct hal_ev_acl_state_changed hal_ev;
+
+ if (length < sizeof(*ev)) {
+ error("Too short %s (%u bytes)", __func__, length);
+ return;
+ }
+
+ /* TODO: Update device */
+
+ /* TODO: Check Set bonding state */
+
+ hal_ev.status = HAL_STATUS_SUCCESS;
+ hal_ev.state = HAL_ACL_STATE_CONNECTED;
+ bdaddr2android(&ev->addr.bdaddr, &hal_ev.bdaddr);
+
+ ipc_send(notification_io, HAL_SERVICE_ID_BLUETOOTH,
+ HAL_EV_ACL_STATE_CHANGED, sizeof(hal_ev), &hal_ev, -1);
+}
+
static void register_mgmt_handlers(void)
{
mgmt_register(adapter->mgmt, MGMT_EV_NEW_SETTINGS, adapter->index,
@@ -657,6 +680,9 @@ static void register_mgmt_handlers(void)
mgmt_register(adapter->mgmt, MGMT_EV_DEVICE_FOUND,
adapter->index, mgmt_device_found_event,
NULL, NULL);
+
+ mgmt_register(adapter->mgmt, MGMT_EV_DEVICE_CONNECTED, adapter->index,
+ mgmt_device_connected_event, NULL, NULL);
}
static void load_link_keys_complete(uint8_t status, uint16_t length,
--
1.7.10.4
^ permalink raw reply related
* Re: l2cap sockets not properly multiplexed on ARM
From: Anderson Lizardo @ 2013-11-01 11:03 UTC (permalink / raw)
To: Marcel Holtmann
Cc: Tim Tisdall, Alexander Holler, linux-bluetooth@vger.kernel.org
In-Reply-To: <F9B30CD6-4DCB-4F58-9322-E18969867664@holtmann.org>
Hi Marcel,
On Thu, Oct 31, 2013 at 10:20 AM, Marcel Holtmann <marcel@holtmann.org> wrote:
> Hi Tim,
>
>>> As Anderson Lizardo already mentioned, maybe first verify that the x86
>>> kernel 3.4 doesn't have the same problem and that it's really a problem
>>> of the ARM kernel. Up to now he didn't say what kernel version he uses
>>> on x86.
>>
>> here's my desktop version:
>> $ uname -a
>> Linux tzing 3.8.0-32-generic #47-Ubuntu SMP Tue Oct 1 22:35:23 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
>>
>> I'm trying to get an older version of the kernel running on another machine and then I'll report back
>
> I actually need to know if bluetooth-next tree still has this issue. That is first and foremost the one thing that needs to be checked.
I asked Tim to mention the kernel version on x86 vs. the version on
ARM, because I vaguely remember this same issue being reported last
year (or even 2011) and being fixed (If I find the patch, I will let
you know). As Tim mentions later on, on x86 the issue does not happen
on 3.8, but it is present on 3.2 (and I suspect it will also be
present on 3.4 on x86 as well).
Best Regards,
--
Anderson Lizardo
Instituto Nokia de Tecnologia - INdT
Manaus - Brazil
^ permalink raw reply
* Re: Intel 7260 bluetooth malfunction when it is connected to EHCI bus
From: Hui Wang @ 2013-11-01 9:18 UTC (permalink / raw)
To: Marcel Holtmann
Cc: Tedd An, Johan Hedberg, xiong.y.zhang, Gustavo F. Padovan,
linux-bluetooth@vger.kernel.org development, Kun Yang,
Anthony Wong
In-Reply-To: <C3BBD7E9-6D91-430E-96DF-2D4885F89DCC@holtmann.org>
[-- Attachment #1: Type: text/plain, Size: 6693 bytes --]
On 11/01/2013 03:49 PM, Marcel Holtmann wrote:
> Hi Hui,
>
>>>>>>>> The problem is:
>>>>>>>> On the machine which has Intel 7260 BT module, i use it to connect a bluetooth headset,
>>>>>>>> it can successfully scan and connect to the headset, when i play sound to the bt headset,
>>>>>>>> the problem comes, if the bt module is connected to the XHCI, it can work very well.
>>>>>>>>
>>>>>>>> u@u-Lenovo-B4400:~$ lsusb -t
>>>>>>>> 1-7:1.0: No such file or directory
>>>>>>>> /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
>>>>>>>> /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/14p, 480M
>>>>>>>> |__ Port 6: Dev 8, If 0, Class=HID, Driver=usbhid, 1.5M
>>>>>>>> |__ Port 7: Dev 2, If 0, Class=vend., Driver=, 12M
>>>>>>>> |__ Port 11: Dev 3, If 0, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
>>>>>>>> |__ Port 11: Dev 3, If 1, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
>>>>>>>>
>>>>>>>> But if the bt module is connected to the EHCI, it always fails to play sound.
>>>>>>>>
>>>>>>>> u@u-Lenovo-B4400:~$ lsusb -t
>>>>>>>> /: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
>>>>>>>> /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/14p, 480M
>>>>>>>> /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/3p, 480M
>>>>>>>> |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/8p, 480M
>>>>>>>> /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/3p, 480M
>>>>>>>> |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/6p, 480M
>>>>>>>> |__ Port 5: Dev 3, If 0, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
>>>>>>>> |__ Port 5: Dev 3, If 1, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
>>>>>>>> |__ Port 6: Dev 4, If 0, Class='bInterfaceClass 0x0e not yet handled', Driver=uvcvideo, 480M
>>>>>>>> |__ Port 6: Dev 4, If 1, Class='bInterfaceClass 0x0e not yet handled', Driver=uvcvideo, 480M
>>>>>>> can you paste /sys/kernel/debug/usb/devices here.
>>>>>>>
>>>>>>> If the uvcvideo driver is also using ISOC URBs, we might have just exhausted the bandwidth of the USB bus here or these two devices just do not play nice with each other.
>>>>>>>
>>>>>>> Try to unload the uvcvideo driver and try it again.
>>>>>> Thanks for your reply, follow your instruction, i totally disabled the camera from the BIOS, then the usb tree like this,
>>>>>> u@u-Lenovo-B4400:~$ lsusb -t
>>>>>> 1-1.3:1.0: No such file or directory
>>>>>> /: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
>>>>>> /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/14p, 480M
>>>>>> /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
>>>>>> |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/8p, 480M
>>>>>> /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
>>>>>> |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/6p, 480M
>>>>>> |__ Port 2: Dev 3, If 0, Class=HID, Driver=usbhid, 1.5M
>>>>>> |__ Port 3: Dev 4, If 0, Class=vend., Driver=, 12M
>>>>>> |__ Port 5: Dev 5, If 0, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
>>>>>> |__ Port 5: Dev 5, If 1, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
>>>>>> u@u-Lenovo-B4400:~$ uname -a
>>>>>> Linux u-Lenovo-B4400 3.12.0-031200rc6-generic #201310191635 SMP Sat Oct 19 20:36:43 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
>>>>>>
>>>>>> I re-did the test, the result is same as before, after the headset is connected and i play audio, no sound is heard from the headset.
>>>>>> And hciconfig output shows still no SCO packets received by BT driver.
>>>>>> u@u-Lenovo-B4400:~$ hciconfig
>>>>>> hci0: Type: BR/EDR Bus: USB
>>>>>> BD Address: 00:15:00:CC:2D:D2 ACL MTU: 1021:5 SCO MTU: 96:5
>>>>>> UP RUNNING PSCAN
>>>>>> RX bytes:5853 acl:61 sco:0 events:298 errors:0
>>>>>> TX bytes:19212 acl:68 sco:1 commands:179 errors:0
>>>>> this is strange. The only reason I can think of is that you do not have the firmware installed and or it is not loaded correctly. Does dmesg give any indication that something failed here.
>>>> I can confirm the firmware file is the /lib/firmware/intel/ibt-hw-37.7.10-fw-1.80.2.3.d.bseq, and it is in the filesystem. And from the dmesg, the firmware was successfully loaded.
>>>>
>>>> [ 8.600217] Bluetooth: hci0: Intel Bluetooth firmware file: intel/ibt-hw-37.7.10-fw-1.80.2.3.d.bseq
>>>> [ 8.653635] kvm: disabled by bios
>>>> [ 8.672981] psmouse serio1: synaptics: Touchpad model: 1, fw: 8.1, id: 0x1e2b1, caps: 0xd00123/0x840300/0x126c00
>>>> [ 8.707034] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input13
>>>> [ 8.717725] Registered led device: phy0-led
>>>> [ 8.722730] ieee80211 phy0: Selected rate control algorithm 'iwl-mvm-rs'
>>>> [ 8.752626] Bluetooth: hci0: Intel Bluetooth firmware patch completed and activated
>>>>
>>>>> Since this is a 3.12 kernel it should have native support for Intel specific setup routing. Any chance you can run btmon -w <file> before plugging the device into the bus. Maybe something goes wrong with the setup routine on EHCI.
>>>> Do you mean the hcidump file i just sent in my previous email.
>>> I do not get this. I specifically asked to run “btmon -w <file>” before plugging in the device. I want to see the early setup process here. What would I do with a hcidump trace.
>> The attachment is the logfile generated by "btmon -w <file>". And the logfile was generated by below steps,
>>
>> 1) boot up the system into the ubuntu desktop
>> 2) open a terminal and run "sudo btmon -w ~/lenovo-m4400s-btmon.log"
>> 3) open bluetooth applet and click adding a new device, the bluetooth begin to scan devices
>> 4) power up the bt headset
>> 5) laptop bt module find the headset and connect it successfully
>> 6) open the sound applet, choose bt headset as output device, play sound, but no sound can be heard from bt headset
>> 7) Ctrl+C to terminate the "btmon -w <file>"
>>
>> In case you can't receive the attachment, i decode the logfile and paste the content here.
> what I need is to see the 7260 controller init. So you need to start btmon -w <file> before the 7260 gets attached to the USB bus or before btusb.ko driver gets loaded.
Understand now.
The attachment lenovo-k4450-btmon-v0.log is the log of intel 7260 init
procedure, generated by "btmon -w <file>; insmod btusb.ko; ctrl+c
terminate the btmon".
The attachment lenovo-k4450-btmon-v1.log is the log of intel 7260 init
procedure + scan headset + connect headset + play sound.
If anything is wrong, please let me know.
Thanks,
Hui.
> Regards
>
> Marcel
>
>
>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: lenovo-k4450-btmon-v0.log --]
[-- Type: text/x-log; name="lenovo-k4450-btmon-v0.log", Size: 24010 bytes --]
btsnoop\0\0\0\0\x01\0\0\aÑ\0\0\0\x10\0\0\0\x10\0\0\0\0\0\0\0\0\0áÇÌÓ\x12'é\0\x01\0\0\0\0\0\0hci0\0\0\0\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌÓ\x12*ð\x03\f\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x12Xð\x0e\x04\x01\x03\f\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌÓ\x12Y®\x05ü\0\0\0\0\x0f\0\0\0\x0f\0\0\0\x03\0\0\0\0\0áÇÌÓ\x12\Ô\x0e\r\x01\x05ü\07\a\x10\x01\x02\x03\r\0\0\0\0\x05\0\0\0\x05\0\0\0\x02\0\0\0\0\0áÇÌÓ\x12£\x11ü\x02\x01\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x12§\v\x0e\x04\x01\x11ü\0\0\0\0\r\0\0\0\r\0\0\0\x02\0\0\0\0\0áÇÌÓ\x12§'ü
\0\x01\0\b\0\x04\x02\x03\r.\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x12ªò\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x12« üú\0\0\0!\0ô \x0f\0\bR\x02ø\aÂÿá\a\x02ÔH\0\0ØH\0\00\bw(vÕ \x03épý\x020àx¤H\0\0\x02ð\x01ؽ\x02 0\x0fxàx¨H\0\00àx¬H\0\0\x05©¸\x05¡Z\rà\x01\x01Ø\b \x02\x0eظñ°H\0\0 H\0\00ZÐ\0¢ÁV S\0Ø\x01®=\a`0¢ÀàxH\0\0\x02 \x02\bô©pÈÿ¸H\0\0À/àxÈH\0\0¯ÕF\x15\x10èÌH\0\0ÕH\x15\x10¤è]\x15\x10ÄH\0\0\x10ê¹¹¹3¦3³¹O!\x04ÀH\0\0\x10êÐ\0Ù \x0f\0\bl,\x17\0ö\bH\0\0À.n\và\0\x1apXÓ`\x13@ D\x13\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x12²Â\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x12²×üúô\0\0!\0ô\r\x01 ±
ðàx \x01áÁÇÁÆà\x7fÁÅtH\0\0áÇü\x1cÁÇÁÆà\x7fÁÅxH\0\0áÇü\x1cà\x7fÁÅ|H\0\0áÇü\x1c\b´ü\x1cÁ\x05Ïý$H\0\0ïý\x01Ø \bR\0\0Ø ð\x18H\0\0\b¹%x\x02
ïý\x03à\x7føàx H\0\0\x01ã!\v\x1cH\0\0®\fà)\x10Ú8ѧ®¨®\x14H\0\0\x1c@\x1e\x02\x10\x1d?\x1e\x02\x10\x10H\0\0 \x0fÿª\roû\0µ\x06\x06&\fH\0\0&\bw C/\x02P àx\x04H\0\0àxÒ\v\x03\fc\x16»\x10ºE{\b¸exÂ\f\x1aè\x04Ø\x05Ù²\v÷n\x0f\0 X\x10Ó\x15\x01\x16¹(H\0\0È\x1d\x1f\x02p\00\b\x0fÏs\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x12º\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x12º§üúè\x01\0!\0ô\x01 ¨¬8H\0\0
ôè\x17\0\x10Ïq@\0 4H\0\0ù\x1f\x1f\x16\0\x1a[.ðàx0H\0\0\x15è^\x14\x03\x06¬» \x0f\x01 \x1a£,E# \0\x01# \x0f\x01 þ¦t <S ]5 V ,H\0\0»^\x1eØ\x10 \x0f\0\bà\x04\x18\x10\x0f\0¼\0\0 \x0f\0\bÐ\x03Ø\0\x02ð6Øb\f\0\0Ñ\x01\x1f`H\0\0 \x03\x03Ø\x01ØîñdH\0\0À\x1eþ\b\x02\0àxTH\0\0ëvú\v\x0fïÏsPH\0\0ëvî
/ï\bu\x1eíd
%èa#ë \x0f\0\bü\x04\x01Ùà\x7f « \x0f\0\bF\x04UzÇrô\x12
w\b\x11\0nð\0ßõ¥\x01ØhH\0\0 \bu\x11\x0fè\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x12Âa\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x12ÂwüúÜ\x02\0!\0ôD
\x03
ôàxJ&\0pV%\x12\x1a\x1e\x12 lH\0\0Û\x1eB\x13±\x1f\x18\x10Ïr\00 \x0f\0\b®\x04\0V /ù\0Ú\x1c\x10\x03 \x0f\0\b\f\x10\x01Ú\x10qDÆ@!Q ãó\bðàx\r\rÑ\x10XH\0\0\x0eè%\x05\x18\x0eàÌ R\bà\x10 Û©p\x02\0\x16\H\0\0J&\0pàx\x16\x01à:\b \0\x16µ\x1di\00ÿÿ\0\0pH\0\0\x10§Õ ¸è<H\0\0i\b\x03\x17Ðð \x0fÿ\x11\0\0\0\x04Ø\x04N\f/ÿÐA é¹´\x17\0öDH\0\0@ªB\x14/M\v^\x01@H\0\02\roü\x01\0OÐLH\0\0"ª\x01j1\x02 \0ïû\x12ÐHH\0\0\0 Q\0ð \0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x12Ê1\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x12ÊGüúÐ\x03\0!\0ôà\x7f\x01Øà\x7fØ\0H\0\0\x04àx\0Úàx´H\0\0À\x04¥Á\x17\x11vè»°\x11\0\0UxyòáH\0\0C\0\x01Ø\x1d\a`\x03£ÀàxH\0\0¬\x04\00\a\00\x12\00H\0\0H\0\0\0\x03ÁÐ\x17\x14vD\x14\x15 H\0\0ö
¯Ò\x03Ù\x01Ø\x02ð\0Ø`\0\x14à\0
àxàx¹Â\x0f`\0\x19a_¥\x1d@\x10~¥ºñH\0\0$9\bQ\0 \x0f\0\b\\x1c\x19aA\x04\x04ðH\0\0Ç\f^ \0
°\x10\0
ñ\x01`\x02¡Àà~àxÜH\0\0ÐH\0\0\0\x02b\0Ý¢Á\x04\x1cD3¼H\0\0\0ö\0°\x10\0\0\0~\r \x0f\0\b\x12\x02¢ÁñÀAÀBÁ`\x01$\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x12Ò\x03\x0e\x04\x01ü\0\0\0\05\0\0\05\0\0\0\x02\0\0\0\0\0áÇÌÓ\x12Ò$ü2Ä\x04\0!\0,
2×ñàxàxñÀ\x0e\v \x0f\0\b\x02\x05©àxñÀj\f\0\0\0 ý\x03\x1f\x02\x05\0\0\0\0\0\0\x13\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x12Õé\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x12Ö\x05üú \0\0\0ô\x1e\0\0\0O\0\0\0R\0\0\0W\0\0\0Z\0\0\0\\0\0\0b\0\0\0\0\0\0Ï\x01\0\0Ô\x01\0\0Ù\x01\0\0õ\x01\0\0÷\x01\0\0^[\x02\0\0½\x03\0\0\x15\x05\0\0-\x06\0\0a\x06\0\0ê\x06\0\0p\a\0\0Þ\v\0R\f\0\0\r\0¶\x0f\0\x10\0\0\x1a\x14\0\0õ\x14\0\x13\x15\0\x15\0\0ç\x19\0\0÷\x19\0\0þ\x19\0\0\x02\x1a\0\0/\x1a\0\0j\x1a\0\0n\x1a\0\0À\x1a\0\0}^[\0\0e"\0\0ú#\0\04'\0\0E'\0\07(\0\0a(\0\0~)\0\0)\0\0«)\0\0^[-\0\0r2\0\0W3\0\0&4\0\0N5\0\0X5\0\0þ5\0\0>@\0\0C\0\0±C\0\0çC\0\0äH\0\0¶I\0\0^J\0\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x12Ý¿\x0e\x04\x01ü\0\0\0\0U\0\0\0U\0\0\0\x02\0\0\0\0\0áÇÌÓ\x12Þ-üR\x14\x01\0\0LW\0\0·W\0\0ëY\0\0Z\0\0\x0e[\0\0\x18[\0\0d[\0\0¼[\0\0ß[\0\0\x11\\0\0T\\0\0ã\\0\0-]\0\0`]\0\0ë]\0\0É^\0\04_\0\02d\0\0ÿ\x7f\0\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x12á£\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x12áðüú\0\x01\0\b\0ôï¾Þ\0\0\0\0Bï¾B\x14\x01\0\b\0\0\0\0<\x06\0\bø\x01\0\bÀ\x06\0\b\a\0\bÀ\b\0\b4 \0\b
\0\bp\a\0\bä
\0\b$\v\0\bò\x02\0\bP\x03\0\bz\x03\0\b \x03\0\b`\v\0\bô\x03\0\bx\f\0\b\x18\x04\0\bü\f\0\bh\r\0\bl\x0e\0\b(\x0e\0\bÔ\x0e\0\bH\x0f\0\bl\x10\0\bÈ\x10\0\b\x11\0\b\x1c\x05\0\b8\x13\0\bÐ\x14\0\bT\x16\0\bÀ\x19\0\b %\0\b¬\x1e\0\bä\x1c\0\bl \0\b¤ \0\b\x05\0\b\x1c!\0\bÂ\x05\0\b#\0\b¤$\0\bÔ$\0\b %\0\bh%\0\b¨'\0\b\b+\0\bÐ,\0\bâ\x05\0\b\x0e\x06\0\bt+\0\bð+\0\b\x18.\0\bü&\0\b<'\0\bÀ-\0\b\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x12é~\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x12êHüúô\x01\0\b\0ôÞáþ¡À
\x0f\0Á\0\0\x18\x0f\x0e\x13M¤ \x0f\x01 |O\0\x16\0p\0¼L\x03\x04 \x0f\x0eüÿ\x1f\x0fô\x05 \x0f\x10\x02\0\0\0\x1e\0p\0¼L\x03" \x0f\x05 |Ø ð\x05 \x0f°\0\0à\0\x1e\0p\0¼L\x03ÑÀà~!\x06\x04B!A\0L!\0ú\aÂÿ
!\x0f\0\0\0\x10\x11\0\0\v \0\0\0\x10à \x0f\0 ÌYP \0\x03\x10\x19\0\0\x14\x11\0\0P @\x02\x14\x19\0\0 \x0f\0 ÌY\x1c\x04©}e©\b»\x04#\x0f\0\0\0ÿex\0\x1e\0p\0Á\x14\x02\0\x16p\00¤\0\0\x16p\00ø\x12"x\rx\x11¸\x04 \x0fþ\a\0\0\0\x16\x01p\0¼$\x02\x04!\x0f\x01øÿÿ%x\0\x1e\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x12ñD\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x12ñgüúè\x02\0\b\0ô\0p\0¼$\x02à~àx¡ÀÓ\x1dX\x10\0\x16\x01p\0¾<\0\x04!\x0f\0\0\0A)þ\aò
!\x0fº\0ÿñÓ\x1dX\x10\0\x16\x01p\0ÁÐ\0\x04!\x0f\0\0\00A)>\x0eò\x15\x01\x16\x04!\x0f\0þÿÿ\x05!\x0fµ\0\0\0\x1dX\x10 \x0f\x01 |¡À\0\x16\0p\0ÁÐ\0\x04 \x0f\0\0\00A(>à \x0f\x01 þ¦\x16\x02\x16 \x0f\x01 ð¦¡ÀÚ\x1fX\x10Û\x1f\x1f \x041ø\x1f\x1f(\0 ù\x1f\x1f\x15\0Ò¶ \x0f\x01 ¡À¸è\x1f\0\x10Ú\x1f\x1f@\0 Û\x1f\x1f \x04\x01ø\x1f\x1f\x04\0\0\x10ù\x1f\x1f\x16\0Ú6 \x0f\x01 E\x14\x03\x06»E\x1cØ\0!\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x12ù\x13\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x12ù1üúÜ\x03\0\b\0ô\x04\02Øa¸\x06èE\x14\x03\x06+{üõ \x0f\x01 à·@$\x1c1
\x0f\00yð @\0\r\b\x04 \x0f\x04 \x1c9 \x0f\x04 9¡À&\0!\0@Ïq\00ôy\0\x16p\00x\x11\x15y\0¸\0¡ \x0f\x04 ~> \x0f\x04 ØB\x1a`UzÇr\00$Yà8\x12\0á Ê\aÊ *\00\x12\01\x12\0?\v\x03\x01y6\x12\x04\x01 \fÃ\09\x12\0àÌ âÌ "Ì b\bò@$D\0/$\b\x016\x1a\x04\x01\x1a\x15\f\x02\0\0Û{²à\x7f(pà\x7f9\x12\0à\x7f(pàx@$\x02zb\x02$\0Ú\x18\0\x03\0s{" \x0f\x02 ¬H \x0f\x03 0'\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13\0â\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13\0ÿüúÐ\x04\0\b\0ô" \x0f\x02 |H \x0f\x03 0'Q\x16\0\x16¦¸Q\x1e\x18\x10Q\x16\0\x16¸Q\x1e\x18\x10 \x0f\x01 \x10¬a\x13\0\v
Q\0\x01Ù\0^[B
\x11\0\0Ù\0^[B \x0f\x02 ¡ÀÛ\x1eB\x13ü\x1c\b°ü\x1cH°ü\x1c°ü\x1cȰü\x1c\b±ü\x1cH±ü\x1c±ü\x1cȱü\x1c\b²ü\x1cH²ü\x1c²ü\x1cÈ·Z\r@\0\x04\x14\x1f4\x04\x14
4\x04\x14 4\x04\x14\b4\x04\x14\a4\x04\x14\x064\x04\x14\x054\x04\x14\x044\x04\x14\x034\x04\x14\x024\x04\x14\x014\x04\x14\04 \x0f\x02 ¼Ñ@$\x1c1" \x0f\0 @Wü\x1c\b°J @\0\0\x1e\0p\0\b5\x04\x14\04" \x0f\0 XW¬\x11\0\0 \x0f\x05 À@$\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13\b²\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13\bÏüúÄ\x05\0\b\0ô\x1c1\ax\0\x1e\0p\0\b5*p" \x0f\x05 dÀ \x0f\x05 HÅ@$\x1c1S¦E\x16\x10
ê \x0f\0 \x1fñÀáÀ" \x0f\0\bD+ÁÀÑÀ \x0f\0 \x1f@$\x1c1S¦E\x16\x10
ê \x0f\0 X\x1fñÀáÀ" \x0f\0\b\+ÁÀÑÀ \x0f\0 l\x1fàx¡À \x0f\0\bH\x06à~à\x7f\x01Ð\x02\x03\r.\0Ú\x03ð\x01â\x11
\x13\f=ÐVx úé\x03ð\0Øà~áÅáÆ8Ña\x11\x02\x06`\x11\0\x06A\b
\06Ó\x02 Í\05ÐBx-\bC\x03\0Þ\x03ð\x01æ\x13\x0e\x13\x1c\x16!\x03¡õ
A\x02ð\0Øa `\x11\0\x06a\x19Ø\0bx\x10x\x06ð\x10x\x04ðBx\x10x\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13\x10\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13\x10üú¸\x06\0\b\0ôÁÆà\x7fÁÅàx¡À \x0f\0\bÌ\x06à~ñÀ" \x0f\x06 ´\x17\bw" \x0f\0 @W\x03çpF'Ï\x10\x1cÖ\0ð\x7fàÊ \x0f\0\0\0\x03\aò!\a\bE\0\x15Ð"x\x10x\r\bÃ\x03Øÿ\r\bÂ\x03Ðÿ
%\0 ôp" \x0f\0 XW\0Ø\x10ð\x01\x1fg\0¥á¦á¥\0è\0
\0¦p" \x0f\0 XW\0
\x0f\x06 \x18\x04&\00¨\x01\0@¨\x04\0@'\00\vÐ\0à\x01Øà\x7fÀx\bÑà\x7f\0©àx¡À\x06Ñ\0Ú@©«®¡® \x0f\0 tÙà~àxt5\0\b¡À \x0f\0\b\aà~ñÀ" \x0f\x06 ¨\x17!C/\x0f # \bw\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13\x18R\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13\x18püú¬\a\0\b\0ô^[\0 \0;Õép" \x0f\0 äÑ" \x0f\0 <Ò\bu\x02\x15\x12\x11ép\x04\x15\x10\x11" \x0f\x04 p\x03+\b\x0f\0\0ÿÿ" \x0f\x01 \x14>è\0ر٠Ú\x02Û" \x0f\x05 Ðm" \x0f\0 \x18×(ÖÉq" \x0f\x01 HA" \x0f\0 äÙ\x04\x1e\x14\x10®\0\x1e\x04\x14\x03\x03¶\x04\x01¶ ^[\bÐ\0\r\b\0
\x0f\b\0" \x0f\0\b\\a\x04è\x02ª¸\x02¶" \x0f\0\b\\a\aè\x02¬¸\x02¶\0¬¸\0¶\x0f\x0fC\x14\0§¸\0\x05ðÿÜ\x0e'\0\x13\x01à\b®" \x0f\0 ÔÙÉq\x03¦ép" \x0f\0 ¤n©p" \x0f\x01 B \x0f\x06 \b\x18 D\00\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13 !\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13 <üú \b\0\b\0ô,D\00ñÀ" \x0f\x05 ¸ëpÑ\x14©" \x0f\x05 TlÑÀà~àx¡À \x0f\0\bÌ\bà~ñÀ*\b\0\0èûuÁÅ \x0f\x01 X ðûuÁÅ\fÙaÁ \x0f\x01 T åññÀáÅ×p\0\0Wü\x01Ø\x15ô\Ð\0à\fØ\x11òZÑ[Ð\0Ý©r" \x0f\x01 ÐXWЩq" \x0f\0 Üê©p \x0f\x06 0\x18àx¡ÀH\x1e\x02\x10ü\x1cH°ü\x1c°ü\x1cȰü\x1c\b±ü\x1cH±ü\x1c±ü\x1cȱü\x1c\b²ü\x1cH²ü\x1c²ü\x1cȲü\x1cÈ·©p" \x0f\0\b° \x04\x14\x1f4\x04\x14\v4\x04\x14
4\x04\x14 4\x04\x14\b4\x04\x14\a4\x04\x14\x064\x04\x14\x054\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13'ñ\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13(
üú \0\b\0ô\x04\x14\x044\x04\x14\x034\x04\x14\x024\x04\x14\x014 \x0f\0 dûà~àxñÀ" \x0f\x06 ´\x17¡Á0Õ\bv@ O\x06p@%A\x1e\x03Ú" \x0f\x06 \x16\0Ú\fð3$03'\x10\v ã\0\0$0 ¨\x01âí
Ò@%@\x1eq\x03Ú" \x0f\x06 \x16p©qAá\x03Ú" \x0f\x06 \x16\0Ú@&O\x18\fð3$03'\x10\v ã\0\0$0 ¨\x01âí
Ò©pAàq\x03Ú" \x0f\x06 \x16&\x16À\x107\x15Á\x10 \bC\07\x1d\x02\x10(\x16À\x108\x15Á\x10 \bC\08\x1d\x02\x10¡À \x0f\x06 \x18àx\0\00\b\x0e\00¤\b\0\bWü\0\0\x04\0\00¡À \x0f\0\b\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13/Ã\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13/âüú
\0\b\0ô
à~ñÀ\x14Ð \05\b\x0f\0\08ü\x03àÌ bÊ!¢\x04\x06ô" \x0f\0\bh\a\0Ù\vÐ" \x0f\0 ÜêÑÀ \x0f\0 ò½ÑÀ!\0 \x0f\0 è½ÑÀà~àx\x04\x0e\008ü\0\0@$\x1c1 \x0f\0\bô
à~àx Û\x03ð\x01ã\x1f\v\x02\bÔyc5yt!\x02\x03ñ\b\x02\x05Ñ\x14x\ba\x02ðÿØà~àx>\00V\r\00¡À \x0f\0\b0\và~ñÀáÅ\x01Ø" \x0f\0 05\x19\br\0\bu" \x0f\0 ¼! \bP\0a½¯}©p \x0f\x06 0\x18àx¡À \x0f\0\bl\và~ñÀ" \x0f\x06 ´\x17\buáÀ8Ò\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x137\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x137üú|\v\0\b\0ô$\x12\x01\bk\x12\x03\x0e\x04#\x0fÿ\0\07»\x17»\x05#\x0f\0\0oðk\x1a¸\x030Öð\x1a \x03\0Þ¾ô\x1a \x03.Ö<\x16\x0e\x18\x04&\x1f\0\x01\0\0A.\x0f\x16*Ö\r\x0fQ\x10$¦\x01Ø\x14®\x14\x17\bQ\0äây1\x7f&\v Å\x03\0Ø\x14®O\bQ\0åÌ%"Ì%¢Ì%bÌ%b^[ô\x05#\x0f\b\0[° k\x1aø\0ð\x1a \0\x18Ðô\x1a \0\x17Ð\x18Ò\0\x18Ñ\x05è\x04\0¢\x05\x04ð\0\0¢\x01\0¡ÁÀÁÅÁÆÁÇÑÀ\0\x16\x02p\00\b\x0fÏs\x01 ¨¬
À' \x0f\x01 \x0f\x06 \x18àx\0\0\0¼ä\x17\0\0\0\0\0¾x5\0\bõ(\0\0Ü\x0e\00\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13?a\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13?{üúp\f\0\b\0ôÄ\x0e\00È\x0e\00¡À\0Àü\x1cH°ü\x1c°ü\x1cȰü\x1c\b²ü\x1cH²ü\x1c²ü\x1cȲ \x0f\0\b¤\fà~àxñÀ3h\x02y\x15 A\0\x12Ð\x10Ú6x\x11Ñ\x10à" \x0f\x06 \x16\x04\x14\v4\x04\x14
4\x04\x14 4\x04\x14\b4\x04\x14\x034\x04\x14\x024\x04\x14\x014
%\x1f\00pz* \x0f\x04 LÑÀà~àxTx\00Ly\00¡À \x0f\0\b\b\rà~ñÀü\x1cH°ü\x1c°ü\x1cȰü\x1c\b±>Ñ@>ÑUy@%
\x1e\x01<Фº@¡3Ù@\x01j" \x0f\0\b°/\0ØÿÙ" \x0f\x04 \x1c"\x04\x14\x044\x04\x14\x034\x04\x14\x024\x04\x14\x014\x04\x14\x1f4 \x0f\x04 z¦\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13G1\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13GIüúd\r\0\b\0ôÑÀà~¡Àü\x1c\b°ü\x1cȰü\x1c\b±ü\x1cH±ü\x1c±ü\x1cȱü\x1c\b²ü\x1cH² \x0f\0\b\rà~ñÀáÅ\x1eÐ!Ò`uz 3 Þ\x06\x1cл¹ux ¢½ ^[Ðux`¹ ¢»` \x19Ð 5Ø%" \x0f\x04 h\x19\x04\x14\r4\x04\x14\x1f4\x04\x14 4\x04\x14\b4\x04\x14\a4\x04\x14\x064\x04\x14\x054\x04\x14\x044\x04\x14\x034\x04\x14\04@\0Ù \x0f\x04 h \x0f\x06 0\x18àxx\x11\00ôy\00Ä\x11\00,z\00Øy\00À\x11\00@$\x1c1 \x0f\0\b8\x0eà~àxñÀáÅ" \x0f\0 @W"Ñ \bíC
@¡\0Ù\x02ê$¢$¥#¥\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13O\x02\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13OZüúX\x0e\0\b\0ô" \x0f\0 XW©p \x0f\x06 0\x18àx@$\x1c1 \x0f\0\b|\x0eà~àxñÀáÅ
%\0\x1fò" \x0f\0 @W$
C
\x04éC¡\að\x0eÑ@¡\x03ê\0Ù$¢C
\x03ê$
$¢ Ò\0Ù$¥ #¥\x02餡 ¢" \x0f\0 XW \x0f\x06 0\x18àxä\x0f\00à\x0f\00¡Àè\x06!è%\x05\x18\x0eàÌ "\x19ò#\bÑ\0\0\x16p\00/\x0f\0!A\0\x14!A\02!\x0f\00/F\x17 Ð\0" \x0f\x03 \7\x1e\x02\x10\x0e\x06ð\x01Ø7\x1e\x02\x10\0Ø\x15¶<\x1e\x02\x10" \x0f\x01 øë<\x16\x10\x05è \x0f\x03 VU \x0f\x03 dUà~¡À \0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13VÔ\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13W(üúL\x0f\0\b\0ô\x0f\0\bT\x0fà~ñÀ" \x0f\x06 ´\x17páÌ!¢Bô$Ð%Ò\0%j\x18`\x14x\baY\bQ\0"Ð\0"Ö\x18`\x14x\x13b\x1ab u¶ \x05\x06\x04å #\x01\02¶\x02#O\0\x10wÊ!
\0Cöðy"\x7f \x0f#\x103¶ðx\x14¶\x16Ð\x01Ù ¨$©pC" \x0f\x03 tY5\x1e\x02\x10\x13ð\x0fÒ\0à%\x05\x16À}\vÑ \x01à!\x05\a=e\0ª\x05ð\aЧ¦ ©p \x0f\x06 \x18/\x0f\00,F\00Þ\x0e\00\x16\005\0\bñÀáÅ\x15Ð`\0Ù#\x13\0)£\x04-L\x1d\r\x11\x14\x11Õ íPq\x01Ú%Â"\0Yaa¹\bðPq\x01Ù\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13^«\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13_Nüú@\x10\0\b\0ôEÂ!L\0Ya" \x0f\x02 LÁÅÑÀ \x0f\x03 5 \x0f\x06 0\x18\x10\00 \x10\00¡À \x0f\0\bx\x10à~ñÀáÅ\x10Ð " \x0f\x01 Tö\x0eÑ \x0eÒ\x02¹5y4y)báÌ%¡\vòáÊ â\r\x03ô\aè:Ø" \x0f\x02 ´* \x0f\x06 0\x18àx.\x0f\00Þ\x0e\00LE\00¡À \x0f\0\b \x11à~ñÀ" \x0f\x06 ¸\x17\0Ý©v\x04ð\x01Ý\x01æ-\x0e\x15\x12íÏx" \x0f\x03 Cwèc\x10\0ë _\0qè-áÌ!bìõ\0úñ©p \x0f\x06 (\x18àxñÀáÅ" \x0f\0 ¨P\buêÿ¢è" \0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13ft\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13füú4\x11\0\b\0ô\x0f\x03 x>\x04è$
ð" \x0f\x03 d>\x11è)\x0fé$\0!\x0f\0\b\0\0±qÊ F\0¢x\x1d\x0e\x05p\0\0ÿÿ\x06ð" \x0f\x02 ph\x04è\0Ø\x04ð ÿ\x0f \x0f\x06 0\x18¡À \x0f\0\b\x11à~ñÀ" \x0f\x06 ¬\x17 \bv\r
àÌ âxô\x11
\x10èD\x03\0Ù(s\x1ab\x10
Úº" \x0f\x02 Ähè\x01Ø\x15¥\x15
"è\x15\x04\x17\x01ØA\x12¥V%\x10\x1a\b\x10 \0ßp
1Ø/$\0\x01õ¥ñ¥" \x0f\x02 Di\x01a\x10\0è\b\x10 8Øô¥" \x0f\x02 |j\x12
\bQ\0" \x0f\x03 d>}\b\x10\0 \r\rA\x10!\x10\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13nC\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13nüú(\x12\0\b\0ôm\b\x01$\x03V%\x0f\x1a\0!\x11\0(8Ø*r" \x0f\x02 \x18j(\x1ap1Ø*r" \x0f\x02 \x18jàÌ ÿÿÿÿ\x1aôL \0 Ì ¯ÿÿÿÿ\x14ô(\0Ø\x1ap\x12¥\x13¥1Ø" \x0f\x02 |j(8ØP\x1d\0\x14" \x0f\x02 |jÉp" \x0f\x02 Ä \x0f\x06 \x10\x18àxñÀ" \x0f\x06 ¸\x17\0Ø\bu\x03ð\x01å;\rÕ\x11¯x" \x0f\x02 Poxè-áÌ!âôõ!a\x11\0á Q\x10\x01\aP\x10\x03\a;yãÀ!¢\0\x03ð\0ÚHq\x0fÖ%\rÐ\x11:bÚºE¦\x10\x02\a\x02"@\0e¸^[\b
\0 Ò!\x13\bE\0\x01²\að\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13v\x12\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13v0üú\x1c\x13\0\b\0ô" \x0f\0 ¨P\x05¦ \x0f\x06 (\x18àxÐ]\00T\x10\00¡À \x0f\0\bD\x13à~ñÀ" \x0f\x06 ´\x17]Ö\x02" \x0f\x03 ,ã[׸p\0¯\0 \0ÝOò L*òØàò\x12öÖàeò×àô$\x03á\0¯xôPÔ\x14x`\x01£¸\x01©\x10ÝqðÙàò \fôJÑ\x14%@\x01\ba ÿ\x06ò Ì\r@Ù{ð Ì\r\fÙwðBÑ\x14%@\x01\ba ÿöó\f\x16\x10\x03"De" \x0f\x02 èCÕ\b\x10\0 Ì\r\x1fÙ" \x0f\x03 tÛ©p\x12ÙÚ\x03Û" \x0f\x05 ÐmXð¨p" \x0f\x04 X\x06\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13}á\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13}ûüú\x10\x14\0\b\0ô\0/Ò\x14 \x01\0)b¡ Þ" \x0f\x02 \x18D\b\x10\0©p\x12Ù©Ú\x03Û" \x0f\x05 Ðm Ì\r\x1fÙ5ð\x04# ¯è Ô4ya\x01¸\x01© Ý\x02ð\x1fÝ Ì\r©q" \x0f\x03 tÛ" \x0f\x02 "ð\x1fÝ Ì\r©q" \x0f\x03 tÛ" \x0f\x02 à" \x0f\x02 \x04\x10ð\x03\0¯ \f\x0e\x06ð\x03\0¯ L\x0e\0Ù" \x0f\x03 tÛ\0Ý©p \x0f\x06 \x18àxüg\008\x11\00Ti\00Ui\00¡À \x0f\0\bÜ\x14à~ñÀ" \x0f\x06 \x17:pÚp&\x10 X\x16\x14 \0\x11\x10\0\\x16 Áâ@$\r"J%\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13
±\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13
Ëüú\x04\x15\0\b\0ô\0 ¢ò \x11 \x1d\b\x110p\x16 è*p" \x0f\0 äa\x01Ùp\x1eB ðs
\0`\x16\x13 \x02$Ï$\x10çd\x16\x12 +ð\0"À$¢pS \x02\x02#\b\0\x02#\00wÊ!Å\x03\x02 \x04ȸ\x02{pqÊ'Æ Ê'E /$À\x05V!\x03"\x14#\0\x14{@!\0\x06@#\x01\x06r" \x0f\x06 \x16\x02'Ï\x15\0%Õ%Øï\0"\x01%X\x1e@ BuÑ\x17\x12v\bß
pérJqJ#\0 \vs" \x0f\0 ,\\x1aph¾\x13ðÊÑÊÒ\x14"À$ Û
%\0\x05\x14"Â\x04" \x0f\0 <[\0#\x13%u\x02'\x0f\x15\x16ïS%\x01\x12\x0e!\x0f\0\0\0\x02PwÊ$ \\x16 Ê$\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13üúø\x15\0\b\0ôÅ#V!À"\x14 D\0]êqÜñ\x01Ù\\x1eB \x1eðS%\x02\x12\x0e"\x0f\0\0\0\x02\x10vÊ
\x03\x10v \x11 Ê'\x06\x10V!Á"TyÊ'
\x13
pér" \x0f\0 ,\â~\x1apýeäî \x0f\x06 Ø\x17àx¡À \x0f\0\b`\x16à~ñÀ" \x0f\x06 \x17\bv\x02\x1aqJ$@ ê¸ Â$\x01%§Á\0Ýé\x150\x01à\x15¦\b\x03é\v\b\x10\x01©w\x19ðL$\0 \x01ßÊ'¡\x10\x13ð \x10 ÷é0\x05é(\v \x10\x01©w\x02ð\x01ßL$\0 Ñ â\x03ò\0\x18@#)\x01ØáÀxH@ X\0\0Ø\x0f
\x11\x01JâÊ b\0N \0\x02ã¸Ì!\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13S\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13rüúì\x16\0\b\0ôâ\x04ô@Å\x05ð\x03¸@À@&\x11\x17*p" \x0f\0 p=B"V \x01(
\x13ò\x04\x10\x15 @% \v\b
\0^[\f\x11 \b\x16\x10-\f\x11\x01\0(\x05@" \x19\vE\0L$\0 v\x02\x01\0&\x11\x17o\x02 \0 ®
\x05\0ºr\x05ð\a\r\x04 ºpO\f\x10 \0\x10\x02 Ép \x10\0;êA)\x02\x01By; \x10ðA)B\x01By á!\b; È÷Ép
q" \x0f\0 Øb\bðÉp
q" \x0f\0 äa\b\x16\x10\bðBÅ\b\x10 DÀ\0\x10\0 AÀ\x02\v\b\x1f\x03zu/ðÿ\f\x10@\x16\x01\x11D\x16\0\x11"x\x10x'\bÓ\x03;\x16\x10\x01à\x0fxã\br;\x1e\x02\x10\x13\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13!\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13<üúà\x17\0\b\0ô;\x1eB\x13\x01à\x13¦J#@ \x15ðk\b\x12 ;\x16\x10\x01à\x0fx¿\br;\x1e\x02\x10\x13;\x1eB\x13B%U \x01à\x13¦ ÿ\x0fzp-\f\x11\x01
À*q\x02Ú" \x0f\0 Ø=\x05ÀB% \x02Ùà¨\x01\x18B\x05*p" \x0f\0 |=\x01ÀàÌ$! \x03ô\x10\bè\x11\x0f\x10úu\x06ð;\x1eB\x13¯ñJ'@
˻t
"\x14J$\0x\0Ú¨ \0\x02/"À"\x05\x03|*q" \x0f\0 Ø=\v\f\x11 \x05ÀCÀ\x06Á\x01)\x05\x11\x0f\x10 \x05À" \x0f\x06 ,^[GðE\f\x10 \x05ÅÉp\0\x14\x040
qér©s" \x0f\0 ÀdJt\bw)hJ$\0x\0ب \0\x02/$\x02À \0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13¤ñ\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13¥\vüúÔ\x18\0\b\0ôE\0;y\x1de+ðà;\00Ð;\00$\x13\00lÀéq`{\0Âét
"\0\x16J$\0x\0ب \0\x02/"À \x05\x03|\x01ÁJtJ$\0x\0Ý8`AÀ o¨ À\x01/$\x02À%\x05\x10^[x\x03À\x1deD\x16\0\x11\x02%Õ#JtJ$\0xø`\x10xD\x1e\x04\x10\0Ù¨ \0\x02/$\x02À!Å\x03û\x7f*p" \x0f\0 |=L%\0 õ\bàâ \x0f\x05 ¼_?\vQ
À*qJr" \x0f\0 Ø=\x06À\x15è\x05Á\v
Q \0\0©\x03ð\0\0±D\x16\0\x11Jq\x01à\x10xD\x1e\x04\x10*p" \x0f\0 |=§À \x0f\x06 Ø\x17\0Ùà\x7f@\x18D\0¡À \x0f\0\b\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13¬Á\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13¬ÛüúÈ\x19\0\b\0ôÌ\x19à~ñÀ" \x0f\x06 ¨\x17m\x17\x12v:p\x14\x12 \0Þ\x1aqü\x1c³^[\bÑ\x01Ép\aÙ"Ï\x02(s" \x0f\x05 Ðm\x01Ø¿ð" \x0f\0 LW\x14\x12 `ÑOa`Õ\x16'Â\x13\x03ºâz\x15'\x10U}:\x1dB\x14" \x0f\0 XW!C¯*pÆö" \x0f\x05 To\x06ð" \x0f\0 äÉ:p ÃÊ !\0Ê!¡\0Ê"\x0f\0\0Ú\x03Ê#á\x01â \x0f\x05 Ðm©p
q\x14Ú" \x0f\x06 \x16 \v\bÑ\0\x01Ø
*p9\x1dB\x14" \x0f\0 ôm©pÊÿB\x1d\x13D\x1d\x13<\x1d\x13;\x1d\x13Ò¥Ó¥Ô¥Õ¥" \x0f\0\b\\aà\x01Ø\x03ô\f\x10\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13´\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13´«üú¼\x1a\0\b\0ô\0 8\x1d\x02\x10©p" \x0f\0 `IâÊ!\0\x02ô*\0ØáÊ \x0f\0\0Õ\0\x06òáÊ \x0f\0\0ÿ\0\x0fx\0\x1c\x040â\x01ÚÀz\x01âT%À\x18q" \x0f\x06 \x16V%À\x12\bt$\x10\x10À¤!\x10\0" \x0f\x06 ,^[©q!\x10\0\\x19\x03ء١ \b\0\x1a¡\x01Øp\x19\x02\0@%\0\x17éq" \x0f\0 H=àl\x0eáÿÊ A\x03" \x0f\0 LW\x14\x12 \x0f!Â\x03\x14\x1a " \x0f\0 XW©p" \x0f\0 hm\0Ø¡À \x0f\x06 \b\x18,;\00\f5\0\bÌ6\00ñÀ" \x0f\x06 ´\x17ÞÑ\bv\x04æô\x1c\b°p\x03Ù" \0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13¼c\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13¼üú°^[\0\b\0ô\x0f\0\bð/\x01Ù" \x0f\0\bà/\x18Ù" \x0f\0\bÐ/ÔÐ\0ÔÕ \x04\0F
\x13ê\aè\x11\0Á\x10à" \x0f\x05 Ë\0
\x11\f\x16\x01\x18\x14à" \x0f\x05 Ë\0
O'Á\x17\x11" \x0f\x05 Ë£À \x0f\x06 \x18ñÀáÅÁÕ
" \x0f\0 °v\b
\0Ù\x02Ú" \x0f\x05 ¤Y\x06
\x01Ù\x02Ú" \x0f\x05 ¤Y¸Ð\0\x10\0\x06" \x0f\0 À4 \x0f\x06 0\x18ñÀ" \x0f\x06 ¸\x17\buü\x1cȰÉu&
®ÖA \bºEy ¶(p" \x0f\0 (Å Ã\x04ô\0Ø\0¶\0\fè\x06
"@%\0\x1a\x03á" \x0f\0\b\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13Ä1\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13Ä
üú¤\x1c\0\b\0ôÀ/\x11ð\x04\x14\x034\x04\x14\r4\x04\x14\x0e4ÑÀ\x06"\x03\b¸ \x0f\x05 \x1eÁ\x04\x14\x034\x04\x14\r4\x04\x14\x0e4ÑÀ \x0f\x05 *Á \x0f\x06 (\x18¡À \x0f\0\bð\x1cà~ñÀ" \x0f\x06 ¤\x17ªÁÑ×\x1c\x11\x13\0$\x11\x11\0(\x11\x10\0,\x11\x12\0\0μ\x10\0\0" \x0f\x05 Ë\0Ý 9\b\x1e\0¼\x11\0\0\x01Ù©r" \x0f\x05 Ë\0\x05Ù©r¼\x10\0\0" \x0f\x05 Ë\0\rÙ©r¼\x10\0\0" \x0f\x05 Ë tÐV!Ì ¨°\x11\0\0 ¬\0O&\x01\x10\0Ú\x04à" \x0f\x05 Ë" \x0f\x01 ÀQàÀxÀyâ \x0f\0 HMO#Ó&\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13Ì\x02\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13ÌYüú\x1d\0\b\0ôaÖ\0Ý ðð!@\x03jq" \x0f\x05 Ë\x01å\0U A\x04\x10\0ç\bC\x01Ø" \x0f\x05 hÎ\x03Ø" \x0f\x05 hÎ\x05Ø" \x0f\x05 hÎ\x02Ø" \x0f\x05 hÎ\x04Ø" \x0f\x05 hÎ\x10Ø" \x0f\x05 LNÐ\0àâ \x0f\0 "
ÿP!\x01 °¹¹\0¹\0\x1cà" \x0f\x05 Ë\0
q\0E!Á\x03\x14à" \x0f\x05 Ë\0E"Â# \x04\0iF"Á+E!Á\x03ë\x06èHq\0\0\x10à" \x0f\x05 Ë\0\0" \x0f\x05 Ë\0ÙEÀ
À" \x0f\0\b\00\0\x05Á\0" \x0f\x05 Ë(Ð\0Cÿ\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13ÓÔ\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13Ô(üú\x1e\0\b\0ô\0\0Ù¬\x10\0\0¹\x14à" \x0f\x05 Ë\x01تÀ \x0f\x06 \0\x18¡À \x0f\0\b¸\x1eà~ñÀ" \x0f\x06 °\x17\bv@ \r\x02\x1d ÿ¡ÁÈò\x12Ð\02 \x0f\0\0\x06\x01àÀò<
^
0rF\x01%\0\0
è¸~ô\x11Ð\0àzòN\x16@\x11è1B"2ºÊºTzcºá \0\x14ð\x145\0\b\x12\00\x12\00x\x04\00\x12\005\0\b¦5\0\b¥5\0\bX\f\00è\x17\x0fð°èr\x03Ø@'\x01\x14" \x0f\x05 LY¡è1\x03Ú\x02N\x1e\x04\x10\x04" \x0f\x06 \x161X\x04\x03ácº\x04à" \x0f\x06 \x168N\x16@\x11Ki\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13Û«\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13ÜMüú\x1f\0\b\0ô\x01áBx\x0exN\x1e\x04\x100y\x1dðR\x16\0\x11\x01à\x10xR\x1e\x04\x10*ðP\x16\0\x11$X8`1" \x0f\x06 \x16N\x16@\x118"x\x0exP\x16\x02\x11N\x1e\x04\x10Ya0y)\bs\0P\x1eD\x10\0Ø\x16¯\x1ap\x04"\x03á*·" \x0f\0 L"N\x1e\x04\x14P\x1e\x04\x14\0
\v\b\x1f\x02\x11\x02ð\x12\x0f¦\x10¦0\x1e \x104\x1e \x10\0Ø\x1e¥\x14
R \0\0S \x01\04¥\x0f\b\x1e\0\x0e
\x1f¥,\x15\0\x18\x05ð\r
\x1f¥(\x15\0\x18\x1d\0\x10\0
\x19\b\x1f\x02©p" \x0f\x05 h¦6Ñ\0\x01à\0¡\x0eð»\x17\0ö\0àâ \x0f\0 \x060Ñ\0\x01à\0¡¡À \x0f\x06 \x18\x18àx¡À \x0f\0\b\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13ãu\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13ãüút \0\b\0ôx à~ñÀ¨\x17\0ö\0\bÙ¬\x10\0\0\x14à" \x0f\x05 Ë"Ð\0àâ \x0f\0 \x06\x01ØÑÀà~¡À \x0f\0\b° à~ñÀáÅ¡Á\x17\rö\0
" \x0f\0 \0"\0Ø\x02µq©p" \x0f\0 v\x17\x01ö è\0
\f\x19 \0\f\x11\0\bPà\x14\x19 \0\f\x11\0\b\x02¡\x14\x11\0\b\x04¡¡À\x04\x14\r4ÑÀ \x0f\x05 J¶¡À \x0f\x06 0\x18àx¤\x12\00¨\x12\00¡À \x0f\0\b(!à~ñÀ" \x0f\x06 ¬\x17aÖ\0¦Á°\x10\0\0\0\bà" \x0f\x05 Ë\0K\x10\0\x06\x06è$\x04é`y\a \x02ݰ\x11\0\x06àJ!@ ô\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13ëB\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13ë^üúh!\0\b\0ô°\x11\0\0\0" \x0f\x05 Ë V!\x02 xãÆ ÿÿ\x0fø|òLÓ\x04\x13\x10\0â¬\x11\0\0¸ª\0Ù¹\x14à" \x0f\x05 Ë" \x0f\x05 " \x0f\x05 x\0¬\x10\0\0\fà" \x0f\x05 Ë ¡¿'\b\x1e\x01¼\x11\0\0\0Ù\x01Ú" \x0f\x05 Ë\0\0Ù¬\x10\0\0XàO'B\x10\x11ð¬\x11\0\0O'B\x10\0ÙXà" \x0f\x05 Ë\0\0Ù
rº¼\x10\0\0" \x0f\x05 Ë\0\0Ù±\x18X\x04¬\x10\0\0\x01ÚXà" \x0f\x05 Ë\0\0Ù¬\x10\0\0"ÒXà" \x0f\x05 Ë\0\0Ù¬\x10\0\0\bÚXà" \x0f\x05 Ë\0\0Ù¬\x10\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13ó\x12\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13ó.üú\"\0\b\0ô\0\0 ÚXà" \x0f\x05 Ë\0¬\x10\0\0Xà" \x0f\x05 Ë j\x19\x18\0V!Ì ¬\x11\0\0 ¬\0Ù¹\x14à" \x0f\x05 Ë
Ð\0àÊ b\0â \x0f\x05 ˦À \x0f\x06 \x10\x18\x12\00X5\0\b\0\x05\x04\05\0\bD¸S B\x1ciÁ¸Ì !Ê !\0\x16òâÌ !
òàÌ"!\x06òâÌ a\x04ô\x01Ø\bðâÌ ¡\x02Ø\x02ò\x03Ø\x04¸%xà\x7f\x0fxñÀ" \x0f\x06 ¨\x17£Á\bu(w\x1ar\0Ù ª!ªZqÀéq" \x0f\x05 ]\x01Á:p\x01\x10 !ãÿ\x01\x18\x02 \x01À \0\x18B \0Þ\fð\0Á©p" \0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x13úá\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x13úüüúP#\0\b\0ô\x0f\x06 \x16"Á=e\0"R >fp/!G\x04Â" \x0f\x05 h^"Âíê\x13\x0eA\x14\x02'O\x14/'ÇÑõ\0Ø\x04ð\x02'\x14\x0fx£À \x0f\x06 \b\x18àx¡À \x0f\0\b¤#à~ñÀ" \x0f\x06 ¨\x17çÐà'\a¡Áqò\x17\0\x10\x01ÛA(\0A(\x02\x01Á¸Á¹Ãº" \x0f\x05 ày
"\0\x18§_òS"\x04@'\0\x18" \x0f\0\bÀ//! \x14!@$²B Ò\0*q©p" \x0f\x06 ,^[\0Ø\x1ap`À\x01\x1c\x020\x01Ø" \x0f\x05 ÔÐÌÖ\0/"$¡èJp\x02\x1d\x14" \x0f\x05 $]\x01®\x14è\x03mB!Á /yr²ÿ\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14\x02±\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x14\x02ËüúD$\0\b\0ô À\0\x01\x140\x01 À\x02®\x01\x140ø\x03®\x11ð\x02\0\x03\x01\vð\x01àÊ"\x02\aÊ B\x03\x0eâÿÊ!B\x04ép" \x0f\x05 ´Õ³Ð\x01Ù ¨\0\x01à\x0fx\v\bò\0\0®\0\x1e\x02\x14¡À \x0f\x06 \b\x18¡À \x0f\0\b°$à~ñÀ©Ñ\0©è" \x0f\x05 \{\x05ð" \x0f\x05 D{¤Ð\0Ù ÑÀà~¡À \x0f\0\bà$à~ñÀáÅÑ\x01ØÕ\x04©\x14\x15\x01\x18¹\x14\x1d`\x10" \x0f\0 \x04C\x10\x15\0\x18¸¸¸\x10\x1d \x10\x10\x15\0\x18°¸\x10\x1d \x10 \x0f\x06 0\x18àx¡À \x0f\0\b,%à~ñÀáÅ\bØ" \x0f\0 \0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14
\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x14
üú8%\0\b\0ôLV
Õ\x04\x10è\x0eØ" \x0f\0 lV" \x0f\x05 lÊ\x0eØ" \x0f\0 LV\0Ø\x04 \x0f\x06 0\x18¡À \x0f\0\bt%à~ñÀzÑ\x14\x11\0\b©¸\x14\x19 \0\x10\x11\0\b¬¸\x10\x19 \0\x01Ø" \x0f\0 \x04C" \x0f\0 ¤\x05ñ¡À \x0f\0\b¬%à~ñÀ" \x0f\x06 ¸\x17eÖ\0¡Á \x06" \x0f\x05 (Ô\x02Ø\x01Ù" \x0f\0 44cÕq\x06¥©p" \x0f\0 v è\0
\f\x19 \0\f\x11\0\bPà\x14\x19 \0\f\x11\0\b\x02¡\x14\x11\0\b\x04¡(p" \x0f\0\b^[\x03Ø\0Ù" \x0f\0 44 \x02¥\x19\x18\0\x03Ø\0Ù" \x0f\0 \0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14\x12R\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x14\x12oüú,&\0\b\0ô44 Ú\0ÛË\x19\x18\0KÑ\x0eØ" \x0f\0 \x14V\x0eØ" \x0f\0 lV" \x0f\x05 lÊ\x01Ø" \x0f\0 \x04C\x0eØ" \x0f\0 LV¡À \x0f\x06 (\x18ñÀ\x0fx" \x0f\x05 <ÎàÊ !\0\x05ò\x022¸Ê¸"ññÀ" \x0f\x06 ´\x17£Á\x01Øöÿc¸P \x01\0p/y" \x0f\x05 ]\bu+Ð\0ÁÂ\0¯\x7f\0®\x01\x01®¢®\x03æ ð\x01ÁÉp" \x0f\x06 \x16"À\x1efÀÂéq" \x0f\x05 h^"Âñê\x03m\x10x£À \x0f\x06 \x18àx¡À \x0f\0\b\b'à~ñÀ" \x0f\x06 ¸\x17\x14Õ\x02
ßÿ\bv\x01Ø" \x0f\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14\x1a!\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x14\x1a=üú '\0\b\0ô\x05 ÔÐ\x06Ø\x0e\x02
Éq" \x0f\x05 Ìy \x0f\x06 (\x18¡À \x0f\0\bh'à~\x12\00 5\0\bµ5\0\bX\f\00¨\x12\00\0\0\0x\x04\00lÊ\x05 ñÀ" \x0f\x06 ¸\x17ð\x17\rð(v
¥6µ\x01Ø" \x0f\x05 ÔÐÈ\x17\x01ð\x05ýè\x01Ø\x05©
Éq" \x0f\x05 Ôz \x0f\x06 (\x18àx¡À \x0f\0\b´'à~ñÀ" \x0f\x06 ¬\x17¥Á¾\x17\x11v`\0\x11\x0e cÃá@$\x103\r\x1cÂ3C\0Ý"\bºYa\x0e\x1cD0E/$H\0\x04\x10\0@*\x05\x02\0%
\x01/%H\x01\x10\x1cD1Gf¿\x06\bº\x1ab
çPzf\x02-\0\x12\x1c0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14!ò\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x14"\rüú\x14(\0\b\0ô@'\0sõ Ï\x03ôx\0x\x06\0)\x01¬\0\0\x15\x01¸\0B,\0\x02a¸à>\x02\r\0@'\x03sõ#\0\0\x14{\0{\x0f\0&\0U\0\x17\x01\x17\x01?\0L\0\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x012\0Ð\0I"\x04\vèÑÉp©r" \x0f\x06 \x16û\x01\0\0ÑÉp©r" \x0f\x06 \x16ç\x01\0\0Ñ±Ø "\r\0Ép©r" \x0f\x06 \x16Ï\x01\0\0
Ð\0\x18èÑI"\r\x03Ép©r" \x0f\x06 \x16Ùð\x7fÐ\0\fèÑI"\x02Ép©r" \x0f\x06 \x16Íð 0\x05" \x0f\x05 \x14´%ÿ\x17ÃðS!Á\rôxÑ %\x10Ép©r" \x0f\x06 \x16\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14)Á\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x14)Ûüú\b)\0\b\0ôµð\x1d Q\0sÑ %\x10Ép©r" \x0f\x06 \x16©ð^[ \0mÑ %\x10Ép©r" \x0f\x06 \x16ðáôhÑ %\x10Ép©r" \x0f\x06 \x16ðãô©p" \x0f\0 \0#" \x0f\x05 ¨Ó\x0e\x14\x011]Ð °\x7fð#\x02{ôZÐ\0\0®\x12\x14\r1åè\0 \0sðãqôUÐ\x01ÚU× ¡ ¢ L¨TÐ ¨TÐ@¨TÐ °\0\x10\0\x06¿\b\x10\0{\f\x10\0" \x0f\x05 D{NЩq\x03Ú\f\x19D# ¨LÐ ¨LÐ ¨¡¨\x10\x11\0 " \x0f\x05 ¤Y\0©q \v
" \x0f\x05 DÕ\0\x01Ù \0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x141\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x141¦üúü)\0\b\0ô\a\x02" \x0f\x05 DÕ\0 \v
" \x0f\x05 \fË\0 \a\x02" \x0f\x05 \fË\0 \a\x04" \x0f\x05 \x14!ð" \x0f\x05 \{\0 \a\x04" \x0f\x05 \x15ð¡ãÌ%¡Ê%\x10\x0fò\0\x10 B\0Ý ô&Ð\x06\x10\r!\0\v\rr\x10\0®\x01Ý=\r\x12\x10\x06\x10\0!\x1f\r\x03\x10\x1cÐ\0(©p2¹Ê¹" \x0f\x06 \x18\x01ß\x02é\0ß\0ØÉqÉr©sS'\x04\x10" \x0f\x05 $Ï©p¥À \x0f\x06 \x10\x18x\x04\00ø\x03\00¼Y\x06 ¨Y\x06 ÐY\x06 Z\x06 Z\x06 4\\x06 ´Z\x06 4[\x06 ´[\x06 \x12\00¨5\0\b\x12\00\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x149b\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x149üúð*\0\b\0ô¥5\0\b¦5\0\b\x12\00¡5\0\b 5\0\b¢5\0\b@$\x1c1 \x0f\0\b\x18+à~àx©p" \x0f\0 °v
\x0f\00h\x1c\0Ù¹\0Ú" \x0f\x05 ðÿ \x0f\0 8\x1dà~àxñÀ" \x0f\0\b\\a\x06èUÑ\0¸\0¡ÑÀà~ñÀ" \x0f\0\b\\a\x06èOÑ\0¸\0¡ôñàx@$\x1c1 \x0f\0\b+à~àxñÀáÅHÐ\0èHÐ\0«è" \x0f\0 <'%èBÕ
P!\x04¸\0¥BÐ\0èP!\0\x04²¸´¸¸\0¥>Ð(\x10\0\b!\b\x1e\0=Ñ\0 ¸\0¡
ð" \x0f\0\b\\a\x04è\0
´¸\0¥7Ð\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14A1\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x14ALüúä+\0\b\0ô@x \x0f\x06 0\x18àx@$\x1c1 \x0f\0\b\0,à~àxñÀáÅ/Ð\0®è/Ð\0,è\x1eØ" \x0f\x05 $]&è"Õ
P!\0\x05¸\0¥"Ð\0èP!\0\x04²¸´¸¸\0¥\x1fÐ(\x10\0\b\x1f\b\x1e\0\x1dÑ\0 ¸\0¡ ð" \x0f\0\b\\a\x05è\0
²¸\0¥^[Ð\0@x \x0f\x06 0\x18ñÀáÀáÁ\x17Ñ ^[ \x1e\0" \x0f\0\b\\aèÁÁÁÀÑÀ À\aÁÁÁÀÑÀ¹\0Ú \x0f\x05 ðÿ\ñàxØ\f\00Ò\f\00Ó\f\00Ñ\f\00\0\0\0à\f\00¬\f\00Ô\f\00é\f\00´\f\00¨\x04\00¡À \x0f\0\b\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14I\x05\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x14IküúØ,\0\b\0ôÜ,à~ñÀ" \x0f\x06 ¨\x17¨Ð\0\0ݰ\x10\0\0\0\bà" \x0f\x05 裄 $áÌ!¢Vò¡\x17\x10v!\b\x1e\0 Ð\x01Ù\0\x18B Ð Ð Ð ¨\x01ØGð\0\x10
\x10\0\x17\x11v(¸\x17\x12vS A\x03\0\x11\x02 ×Ö\x17
@\0\0\x19@ \0\x1a@# §\x01Ø\0®,ð\0\vè" \x0f\0 ¨P §\0\x1a\0 ®©p\rð" \x0f\0 ¨P\0\x12\x01 "x\v\b3\0\0§\x13x\0§ \x03Òö\0è\0\x19@#\0\x1a@# §\x01Ø\0®\0\x18B#\x02Ø" \x0f\x05 DÑ\0Ø \x0f\x06 \b\x18àx¡À \x0f\0\bÌ-à~\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14Pß\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x14QüúÌ-\0\b\0ôG\bó\x01\0ÙèmÐ\0@ \x01\x06^[ð\x19\b\x1e\0jÑ\x1dx\x04¸ \x16x!\x02
\x19a\x11ð\x11\b\0dÐ\0\bq! \x06 ð\x0f\b\x11\x01`Ð\0\bq!\v
à\x7f(pàx¡À \x0f\0\b$.à~ñÀ" \x0f\x06 ´\x17¢Á"\0Þ\bw\x04\x1c3Û \x1f\x02A)\x03Á¸àÌ"!eôUÕ(
&\x1d\x13\x03B\b¸X`\x04à\x12µQÐ\0à\x03Ø ô\x01 \b¸%x" \x0f\x05 4Y5\b\0Â9\bÐ\0q" \x0f\x05 LYàuô\0À(
R" \x0f\x06 \x16\0À" \x0f\0 Ø!-ð\b
" \x0f\0 Ø!cð\x03Ø@%\x01\x14" \0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14X¥\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x14XÐüúÀ.\0\b\0ô\x0f\x05 LYè\x04
\x03Ú(
" \x0f\x06 \x16(
J\x04
\x03áÒºcº\x04à" \x0f\x06 \x16\x04
" \x0f\0 L"\að,Ð" \x0f\0 8!\b
\0Ù\x02Ú" \x0f\x05 ¤Y5ð1 \x1e\x02\bàÌ"!\x12ô Ð.\x18\x03Ö°
" \x0f\0 °v" \x0f\0 "\x1dÐÀ¨\x1fð; \x1e\x02.¹Á¹áÌ"!\x17ô" \x0f\0\b\\a\x12Ñ\vè\x0e\x13\b\x01Ω" \x0f\0 ¤"\aðީα" \x0f\0 "¢À \x0f\x06 \x18\x12\00\x12\00¦5\0\b¨5\0\b¬5\0\b°5\0\b´5\0\bx\x04\005\0\b<\x06 ¥5\0\bJ"@\x10\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14`r\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x14`üú´/\0\b\0ôJ#\x11 \x0f\x06 ø"J"\0\x10J#\x14 \x0f\x06 ä"J"\0\x10J#\x11 \x0f\x06 ä"J"À\x14J#@\x10 \x0f\x06 ä"J"@\x17J#@\x10 \x0f\x06 ä"J"\0\x11J#\x11 \x0f\x06 ä"áÅÏp\x06 ´= \x01ÛÏp\x06 ¸=(\x19à\0@%\x11\x12Ïp\0 @`\x1a`\x03h\x1a \0Ïp$\0\0$l\x1a \0dØ \x1aà\0\x1c\x1a \0\x04Ø\x18\x1a \0\0Ø(\x19 \0\0ظ\x198\0à\x7fÁÅàxÏq\x06 ¸= \x1c\x19 \0à~àxÏq\x06 ¸= \x18\x19 \0à~àxÏq\x06 ¸= \x04\x19 \0à~àxÏp\x06 ´=\0\0Ù(\x18`\0à~\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14hB\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x14hYüú¨0\0\b\0ôÏp\x06 ´=\0\x01Ù(\x18`\0à~Ïq\x06 ¸=@H\x12\x01\b L\x12\x01\bà\x7f$¨àxñÀáÅ\buÏp\x06 ¸=\0P\x10\0\b\x04 \x0f\0ÿ\0\0¥\x03 ý\x0fB(þ\x0eò\0" \x0f\0 HA\0©p" \x0f\0 hA\x06ðÏpÞï¾\0¥ \x0f\x06 0\x18Ïq\x06 ¸= 8\x11\x01\b \x03 ý\x0fà\x7fG¸ñÀáÅ\buÏp\x06 ¸=\0\\x10\0\b\x04 \x0f\0ÿ\0\0¥\x03 ý\x0fB(þ\x0eò\0" \x0f\0 HA\0©p" \x0f\0 hA\x06ðÏpÞï¾\0¥ \x0f\x06 0\x18Ïq\x06 ¸= D\x11\x01\b \x03 ý\x0f\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14p\x13\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x14p,üú1\0\b\0ôà\x7fG¸Ïp\x06 ¸=\0\x01Ù(\x18`\0à~Ïq\x06 ¸= \x19 \0à~àxÏp\x06 ´=\0\x01Ù(\x18`\0Ïp\x06 ¸=\0\x02Ù\x04\x18`\0à~àxÏt\0\0\0\x04¸\x14x` \x12\0\b&x \x1a \0à~Ït\0\0\0\x04¸\x14x`(\x12\0\b&x(\x1a \0à~Ït\0\0\0\x04¸\x14x`(\x12\0\b\x05y(\x1a`\0à~Ïq\0\0\0<\x11\0\b¸<\x19 \0@\x11\0\b¸@\x19 \0à~Ïq\0\0\0<\x11\0\b¸¸<\x19 \0@\x11\0\b¸®¸@\x19 \0à~Ït\0\0\0\x04¸\x14x`0\x12\0\b&x0\x1a \0à~Ït\0\0\0\x04¸\x14x`0\x12\0\b\x05y0\x1a\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14wá\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x14w÷üú2\0\b\0ô`\0à~Ït\0\0\0\x04¸\x14x`,\x12\0\b&x,\x1a \0à~Ït\0\0\0\x04¸\x14x`,\x12\0\b\x05y,\x1a`\0à~Ïq\0,\0\x04¸\x14x0!\0à~Ït\0,\0\x04¸\x14x`\0\x1a`\0à~àxÏp\0\0\0\x10\x10\0\bà~Ïq\0\0\0\x10\x19 \0à~Ït\0\0\0\x04¸\x14x`8\x12\0\b&x8\x1a \0à~Ït\0\0\0\x04¸\x14x`4\x12\0\b&x4\x1a \0à~Ït\0\0\0\x04¸\x14x`4\x12\0\b\x05y4\x1a`\0à~Ït\0\0\0\x04¸\x14x`8\x12\0\b\x05y8\x1a`\0à~Ïq\0$\0\x04¸\x14x0!\0à~Ït\0\0\0\x04¸\x14x` \x12\0\b\x05y \x1a\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14\x7f±\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x14\x7fÇüú3\0\b\0ô`\0à~Ïq\0$\0\x04¸\x14x0!\0à~Ïq\0\0\0<\x11\0\bE @\x01<\x19 \0@\x11\0\b¸@\x19 \0@\x11\0\b¢¸@\x19 \0à~Ïq\0\0\0<\x11\0\b¸<\x19 \0@\x11\0\b¤¸@\x19 \0à~Ïq\0\0\0<\x11\0\b¤¸<\x19 \0à~àxÏq\0\0\0<\x11\0\b¸<\x19 \0@\x11\0\b¦¸@\x19 \0à~Ïq\0\0\0<\x11\0\b¦¸<\x19 \0à~àxÏq\0\0\0<\x11\0\b¸¸<\x19 \0@\x11\0\b®¸¯¸@\x19 \0à~Ït\0 \0\x04¸\x14x`\0\x1a`\0à~àxÏt\0\0\0\x04¸\x14x`L\x12\0\b&xL\x1a \0à~Ït\0\0\0\x04¸\x14x`\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌÓ\x14üúx4\0\b\0ôL\x12\0\b\x05yL\x1a`\0à~Ïs\00\x04\0 \x13\0?\x05è\x1e8`X`\x02ðXaà\x7f"¸Ïp\0¼\0\0 \x10\0\b Eà\x7fo \v\0Ïq\00'\0àÊ \x0f\0\0\0\x03
ò!\r\bE\0Ïp\0@¨\x04"x\x10xà~àx\0Ù\bt$\x10\x10 ¤!\x10\0 \x0f\x06 ,^[àxȸ\x0e \x0f\0\0\0\x02PqÊ \0à\x7fÊ E\0\0\0\0\x01\0\x02\0\x01\0ÿ\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14Q\x0e\x04\x01ü\0\0\0\0U\0\0\0U\0\0\0\x02\0\0\0\0\0áÇÌÓ\x14güRl5\0\b\0L\0\0\0\0\0\0\0\0\0\0\0\0>þ\x0eþþPþ>þ°ýþòý\0\0\0\0\0\0\0\02\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x149\x0e\x04\x01ü\0\0\0\0\r\0\0\0\r\0\0\0\x02\0\0\0\0\0áÇÌÓ\x14Nü
\0\0\0@\0\x04\x02\x03\r\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14!\x0e\x04\x01ü\0\0\0\0\r\0\0\0\r\0\0\0\x02\0\0\0\0\0áÇÌÓ\x146ü
\0\x01\0\b\0\x04\x02\x03\r.\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14 \x0e\x04\x01ü\0\0\0\0\r\0\0\0\r\0\0\0\x02\0\0\0\0\0áÇÌÓ\x14\x1dü
\0\x04\00\0\x04\x14\x01\0\b\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14ñ\x0e\x04\x01ü\0\0\0\0\f\0\0\0\f\0\0\0\x02\0\0\0\0\0áÇÌÓ\x14\aü \0\0\0@\0\x03\x02\x03\r\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14¢Ù\x0e\x04\x01ü\0\0\0\0S\0\0\0S\0\0\0\x02\0\0\0\0\0áÇÌÓ\x14¢í/üP\0\0\0\0\0\0\0\0\0-1\x01ÿþ\x0fþÛÿ{\x01@ú\x1a
\a\x06\b\x05\a\a\a
\a\x06\x04\x06
¤ ¸Ì
\x04\0\x01À\v\x14\b\0\r\0\x1e\0¸\vd\x19ȯ¨aÐ\a\x04\0\vZ\x04C³|\0\0\0\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14¦Á\x0f\x04\0\x01/ü\0\0\0\x04\0\0\0\x04\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14ª«ÿ\x02\x19\0\0\0\0\x05\0\0\0\x05\0\0\0\x02\0\0\0\0\0áÇÌÓ\x14ªÜ\x11ü\x02\0\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14®\x0e\x04\x01\x11ü\0\0\0\0\x7f\0\0\0\x7f\0\0\0\x02\0\0\0\0\0áÇÌÓ\x14®®`ü|\x01\x01\x01ßßÚN\0\0\0\0«¿ÄÉÎÓØÝâçìñö\0\0\0ìîðòôöøúüþ\0\x02\x04\x06\b
\x03¸\v\0,\x012\x14\x1a\0\0 \0\x01\0\x03\0\x01\0\x02\0\0\x03\0 \0\x01\0\x03\0\x01\0\x05\0\0\x03\x14\x01\0
\0\0\x03\x14\x01\0
\0\0\x03\x14\x01\0
\0\0\x03\x14\x01\0
\0\0\x03\x14\x01\0
\0\0\x03\x14\x01\0
\0\0\x03\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14²y\x0e\x04\x01`ü\0\0\0\0\x05\0\0\0\x05\0\0\0\x02\0\0\0\0\0áÇÌÓ\x14²\x11ü\x02\0\x02\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x14é3\x0e\x04\x02\x11ü\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌÓ\x14é\x03\f\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15\x1fÜ\x0e\x04\x02\x03\f\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15\x1fî\x03\x10\0\0\0\0\x0e\0\0\0\x0e\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15#Â\x0e\f\x01\x03\x10\0ÿþ\x0fþÛÿ{\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15#Ô\x01\x10\0\0\0\0\x0e\0\0\0\x0e\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15'©\x0e\f\x01\x01\x10\0\x06\0\x05\x06\x02\0\0\x05\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15'¸ \x10\0\0\0\0\f\0\0\0\f\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15+\x0e
\x01 \x10\0Dz\aý\f\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15+²\x05\x10\0\0\0\0\r\0\0\0\r\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15/\x0e\v\x01\x05\x10\0ý\x03`\x05\0\x05\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15/#\f\0\0\0\0 \0\0\0 \0\0\0\x03\0\0\0\0\0áÇÌÓ\x153c\x0e\a\x02#\f\0\0\x1f\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌÓ\x153u\x14\f\0\0\0\0þ\0\0\0þ\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15C\x04\x0eü\x01\x14\f\0Bluemoon Universal Bluetooth Host Controller\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15C\x18%\f\0\0\0\0\b\0\0\0\b\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15Fê\x0e\x06\x01%\f\0`\0\0\0\0\x04\0\0\0\x04\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15Fö\x05\f\x01\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15JÒ\x0e\x04\x01\x05\f\0\0\0\0\x05\0\0\0\x05\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15Jå\x16\f\x02\0}\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15N¹\x0e\x04\x01\x16\f\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15NÄ^[\f\0\0\0\0
\0\0\0
\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15R¡\x0e\b\x02^[\f\0\0\b\x12\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15R¬F\f\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15V\x0e\x05\x02F\f\0\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15V\x02 \0\0\0\0 \0\0\0 \0\0\0\x03\0\0\0\0\0áÇÌÓ\x15Zq\x0e\a\x01\x02 \0^[\0\a\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15Z{\x03 \0\0\0\0\x0e\0\0\0\x0e\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15^Y\x0e\f\x01\x03 \0\x01\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15^c\a \0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15bA\x0e\x05\x01\a \0 \0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15bM\x0f \0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15f)\x0e\x05\x01\x0f \0 \0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15f4\x1c \0\0\0\0\x0e\0\0\0\x0e\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15j\x11\x0e\f\x01\x1c \0ÿÿÿ\x1f\0\0\0\0\0\0\0\v\0\0\0\v\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15j^[\x01\f\bÿÿûÿ\aø¿=\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15mû\x0e\x04\x01\x01\f\0\0\0\0\v\0\0\0\v\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15n \x01 \b\x1f\0\0\0\0\0\0\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15qâ\x0e\x04\x01\x01 \0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15qô\x02\x10\0\0\0\0F\0\0\0F\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15y±\x0eD\x01\x02\x10\0ÿÿû\x03Îÿïÿÿ?ÿó\x0fèþ?÷ÿ\x1c\0\0\0a÷ÿÿ\x7f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ô\0\0\0ô\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15y¼R\fñ\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15}\x0e\x04\x01R\f\0\0\0\0\x04\0\0\0\x04\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15}¤E\f\x01\x02\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15\x0e\x04\x02E\f\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15X\f\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15
i\x0e\x05\x01X\f\0
\0\0\0\x04\0\0\0\x04\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15
u\x04\x10\x01\x01\0\0\0\x10\0\0\0\x10\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15Q\x0e\x0e\x01\x04\x10\0\x01\0\0\0\0\0\0\0\0\0\0\0\0
\0\0\0
\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15l\x12\f\a\0\0\0\0\0\0\x01\0\0\0\b\0\0\0\b\0\0\0\x03\0\0\0\0\0áÇÌÓ\x159\x0e\x06\x01\x12\f\0\0\0\0\0\0\x05\0\0\0\x05\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15E\x0f\b\x02\a\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15!\x0e\x04\x01\x0f\b\0\0\0\0#\0\0\0#\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15,\b \x1f\x02\x01\b\x02
\x18\bBluemoon Universal Blue\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15
\x0e\x04\x01\b \0\0\0\0\x04\0\0\0\x04\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15}\x04\x10\x01\x01\0\0\0\x10\0\0\0\x10\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15ò\x0e\x0e\x01\x04\x10\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\0\0\x05\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15\x02\x18\f\x02\0 \0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15Ù\x0e\x04\x02\x18\f\0\0\0\0
\0\0\0
\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15ã\r\f\a\0\0\0\0\0\0\x01\0\0\0
\0\0\0
\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15 Á\x0e\b\x01\r\f\0\x05\0\0\0\0\0\0û\0\0\0û\0\0\0\x02\0\0\0\0\0áÇÌÓ\x15 Ó\x13\føubuntu-desktop-0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x15¤©\x0e\x04\x01\x13\f\0\0\0\0\v\0\0\0\v\0\0\0\x02\0\0\0\0\0áÇÌÓ\x16\x10A\x01\f\bÿÿûÿ\aø¿=\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x16\x15ô\x0e\x04\x01\x01\f\0\0\0\0\x04\0\0\0\x04\0\0\0\x02\0\0\0\0\0áÇÌÓ\x16\x16\bV\f\x01\x01\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x16\x19Ù\x0e\x04\x01V\f\0\0\0\0\x04\0\0\0\x04\0\0\0\x02\0\0\0\0\0áÇÌÓ\x16\x19ãE\f\x01\x02\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x16\x1dÁ\x0e\x04\x02E\f\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌÓ\x16\x1dÔX\f\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÓ\x16!ª\x0e\x05\x01X\f\0
\0\0\0\x05\0\0\0\x05\0\0\0\x02\0\0\0\0\0áÇÌÓ\x16!¿\x0f\b\x02\a\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x16%\x0e\x04\x01\x0f\b\0\0\0\0\x06\0\0\0\x06\0\0\0\x02\0\0\0\0\0áÇÌÓ\x16%«$\f\x03\0\x01n\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x16){\x0e\x04\x02$\f\0\0\0\0\x04\0\0\0\x04\0\0\0\x02\0\0\0\0\0áÇÌÓ\x16)\x1a\f\x01\x02\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x16-d\x0e\x04\x02\x1a\f\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌÓ\x1603\x14\f\0\0\0\0þ\0\0\0þ\0\0\0\x03\0\0\0\0\0áÇÌÓ\x16@ê\x0eü\x01\x14\f\0ubuntu-desktop-0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌÓ\x16A\bU\f\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÓ\x16DÒ\x0e\x05\x01U\f\0\x01\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌÓ\x16Dì\x19\f\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÓ\x16H¹\x0e\x05\x02\x19\f\0\x02\0\0\0ô\0\0\0ô\0\0\0\x02\0\0\0\0\0áÇÌÓ\x16HÒR\fñ\0\x11 ubuntu-desktop-0\x02
\x13\x03-\x11\x12\x11\x1f\x11\x1e\x11
\x11\v\x11\f\x11\x0e\x11\x03\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÓ\x16L¢\x0e\x04\x01R\f\0
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: lenovo-k4450-btmon-v1.log --]
[-- Type: text/x-log; name="lenovo-k4450-btmon-v1.log", Size: 34887 bytes --]
btsnoop\0\0\0\0\x01\0\0\aÑ\0\0\0\x10\0\0\0\x10\0\0\0\0\0\0\0\0\0áÇÌým\0\x01\0\0\0\0\0\0hci0\0\0\0\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌýmú\x03\f\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýmº@\x0e\x04\x01\x03\f\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌýmº\x05ü\0\0\0\0\x0f\0\0\0\x0f\0\0\0\x03\0\0\0\0\0áÇÌým¾&\x0e\r\x01\x05ü\07\a\x10\x01\x02\x03\r\0\0\0\0\x05\0\0\0\x05\0\0\0\x02\0\0\0\0\0áÇÌýn\x1aù\x11ü\x02\x01\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýn\x1fÐ\x0e\x04\x01\x11ü\0\0\0\0\r\0\0\0\r\0\0\0\x02\0\0\0\0\0áÇÌýn\x1fòü
\0\x01\0\b\0\x04\x02\x03\r.\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýn#µ\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýn#Êüú\0\0\0!\0ô \x0f\0\bR\x02ø\aÂÿá\a\x02ÔH\0\0ØH\0\00\bw(vÕ \x03épý\x020àx¤H\0\0\x02ð\x01ؽ\x02 0\x0fxàx¨H\0\00àx¬H\0\0\x05©¸\x05¡Z\rà\x01\x01Ø\b \x02\x0eظñ°H\0\0 H\0\00ZÐ\0¢ÁV S\0Ø\x01®=\a`0¢ÀàxH\0\0\x02 \x02\bô©pÈÿ¸H\0\0À/àxÈH\0\0¯ÕF\x15\x10èÌH\0\0ÕH\x15\x10¤è]\x15\x10ÄH\0\0\x10ê¹¹¹3¦3³¹O!\x04ÀH\0\0\x10êÐ\0Ù \x0f\0\bl,\x17\0ö\bH\0\0À.n\và\0\x1apXÓ`\x13@ D\x13\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýn+\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýn+üúô\0\0!\0ô\r\x01 ±
ðàx \x01áÁÇÁÆà\x7fÁÅtH\0\0áÇü\x1cÁÇÁÆà\x7fÁÅxH\0\0áÇü\x1cà\x7fÁÅ|H\0\0áÇü\x1c\b´ü\x1cÁ\x05Ïý$H\0\0ïý\x01Ø \bR\0\0Ø ð\x18H\0\0\b¹%x\x02
ïý\x03à\x7føàx H\0\0\x01ã!\v\x1cH\0\0®\fà)\x10Ú8ѧ®¨®\x14H\0\0\x1c@\x1e\x02\x10\x1d?\x1e\x02\x10\x10H\0\0 \x0fÿª\roû\0µ\x06\x06&\fH\0\0&\bw C/\x02P àx\x04H\0\0àxÒ\v\x03\fc\x16»\x10ºE{\b¸exÂ\f\x1aè\x04Ø\x05Ù²\v÷n\x0f\0 X\x10Ó\x15\x01\x16¹(H\0\0È\x1d\x1f\x02p\00\b\x0fÏs\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýn3V\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýn3hüúè\x01\0!\0ô\x01 ¨¬8H\0\0
ôè\x17\0\x10Ïq@\0 4H\0\0ù\x1f\x1f\x16\0\x1a[.ðàx0H\0\0\x15è^\x14\x03\x06¬» \x0f\x01 \x1a£,E# \0\x01# \x0f\x01 þ¦t <S ]5 V ,H\0\0»^\x1eØ\x10 \x0f\0\bà\x04\x18\x10\x0f\0¼\0\0 \x0f\0\bÐ\x03Ø\0\x02ð6Øb\f\0\0Ñ\x01\x1f`H\0\0 \x03\x03Ø\x01ØîñdH\0\0À\x1eþ\b\x02\0àxTH\0\0ëvú\v\x0fïÏsPH\0\0ëvî
/ï\bu\x1eíd
%èa#ë \x0f\0\bü\x04\x01Ùà\x7f « \x0f\0\bF\x04UzÇrô\x12
w\b\x11\0nð\0ßõ¥\x01ØhH\0\0 \bu\x11\x0fè\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýn;&\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýn;:üúÜ\x02\0!\0ôD
\x03
ôàxJ&\0pV%\x12\x1a\x1e\x12 lH\0\0Û\x1eB\x13±\x1f\x18\x10Ïr\00 \x0f\0\b®\x04\0V /ù\0Ú\x1c\x10\x03 \x0f\0\b\f\x10\x01Ú\x10qDÆ@!Q ãó\bðàx\r\rÑ\x10XH\0\0\x0eè%\x05\x18\x0eàÌ R\bà\x10 Û©p\x02\0\x16\H\0\0J&\0pàx\x16\x01à:\b \0\x16µ\x1di\00ÿÿ\0\0pH\0\0\x10§Õ ¸è<H\0\0i\b\x03\x17Ðð \x0fÿ\x11\0\0\0\x04Ø\x04N\f/ÿÐA é¹´\x17\0öDH\0\0@ªB\x14/M\v^\x01@H\0\02\roü\x01\0OÐLH\0\0"ª\x01j1\x02 \0ïû\x12ÐHH\0\0\0 Q\0ð \0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýnBé\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýnCOüúÐ\x03\0!\0ôà\x7f\x01Øà\x7fØ\0H\0\0\x04àx\0Úàx´H\0\0À\x04¥Á\x17\x11vè»°\x11\0\0UxyòáH\0\0C\0\x01Ø\x1d\a`\x03£ÀàxH\0\0¬\x04\00\a\00\x12\00H\0\0H\0\0\0\x03ÁÐ\x17\x14vD\x14\x15 H\0\0ö
¯Ò\x03Ù\x01Ø\x02ð\0Ø`\0\x14à\0
àxàx¹Â\x0f`\0\x19a_¥\x1d@\x10~¥ºñH\0\0$9\bQ\0 \x0f\0\b\\x1c\x19aA\x04\x04ðH\0\0Ç\f^ \0
°\x10\0
ñ\x01`\x02¡Àà~àxÜH\0\0ÐH\0\0\0\x02b\0Ý¢Á\x04\x1cD3¼H\0\0\0ö\0°\x10\0\0\0~\r \x0f\0\b\x12\x02¢ÁñÀAÀBÁ`\x01$\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýnJÆ\x0e\x04\x01ü\0\0\0\05\0\0\05\0\0\0\x02\0\0\0\0\0áÇÌýnJæü2Ä\x04\0!\0,
2×ñàxàxñÀ\x0e\v \x0f\0\b\x02\x05©àxñÀj\f\0\0\0 ý\x03\x1f\x02\x05\0\0\0\0\0\0\x13\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýnN\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýnNÀüú \0\0\0ô\x1e\0\0\0O\0\0\0R\0\0\0W\0\0\0Z\0\0\0\\0\0\0b\0\0\0\0\0\0Ï\x01\0\0Ô\x01\0\0Ù\x01\0\0õ\x01\0\0÷\x01\0\0^[\x02\0\0½\x03\0\0\x15\x05\0\0-\x06\0\0a\x06\0\0ê\x06\0\0p\a\0\0Þ\v\0R\f\0\0\r\0¶\x0f\0\x10\0\0\x1a\x14\0\0õ\x14\0\x13\x15\0\x15\0\0ç\x19\0\0÷\x19\0\0þ\x19\0\0\x02\x1a\0\0/\x1a\0\0j\x1a\0\0n\x1a\0\0À\x1a\0\0}^[\0\0e"\0\0ú#\0\04'\0\0E'\0\07(\0\0a(\0\0~)\0\0)\0\0«)\0\0^[-\0\0r2\0\0W3\0\0&4\0\0N5\0\0X5\0\0þ5\0\0>@\0\0C\0\0±C\0\0çC\0\0äH\0\0¶I\0\0^J\0\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýnV~\x0e\x04\x01ü\0\0\0\0U\0\0\0U\0\0\0\x02\0\0\0\0\0áÇÌýnVüR\x14\x01\0\0LW\0\0·W\0\0ëY\0\0Z\0\0\x0e[\0\0\x18[\0\0d[\0\0¼[\0\0ß[\0\0\x11\\0\0T\\0\0ã\\0\0-]\0\0`]\0\0ë]\0\0É^\0\04_\0\02d\0\0ÿ\x7f\0\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýnZX\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýnZ§üú\0\x01\0\b\0ôï¾Þ\0\0\0\0Bï¾B\x14\x01\0\b\0\0\0\0<\x06\0\bø\x01\0\bÀ\x06\0\b\a\0\bÀ\b\0\b4 \0\b
\0\bp\a\0\bä
\0\b$\v\0\bò\x02\0\bP\x03\0\bz\x03\0\b \x03\0\b`\v\0\bô\x03\0\bx\f\0\b\x18\x04\0\bü\f\0\bh\r\0\bl\x0e\0\b(\x0e\0\bÔ\x0e\0\bH\x0f\0\bl\x10\0\bÈ\x10\0\b\x11\0\b\x1c\x05\0\b8\x13\0\bÐ\x14\0\bT\x16\0\bÀ\x19\0\b %\0\b¬\x1e\0\bä\x1c\0\bl \0\b¤ \0\b\x05\0\b\x1c!\0\bÂ\x05\0\b#\0\b¤$\0\bÔ$\0\b %\0\bh%\0\b¨'\0\b\b+\0\bÐ,\0\bâ\x05\0\b\x0e\x06\0\bt+\0\bð+\0\b\x18.\0\bü&\0\b<'\0\bÀ-\0\b\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýnb+\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýnbyüúô\x01\0\b\0ôÞáþ¡À
\x0f\0Á\0\0\x18\x0f\x0e\x13M¤ \x0f\x01 |O\0\x16\0p\0¼L\x03\x04 \x0f\x0eüÿ\x1f\x0fô\x05 \x0f\x10\x02\0\0\0\x1e\0p\0¼L\x03" \x0f\x05 |Ø ð\x05 \x0f°\0\0à\0\x1e\0p\0¼L\x03ÑÀà~!\x06\x04B!A\0L!\0ú\aÂÿ
!\x0f\0\0\0\x10\x11\0\0\v \0\0\0\x10à \x0f\0 ÌYP \0\x03\x10\x19\0\0\x14\x11\0\0P @\x02\x14\x19\0\0 \x0f\0 ÌY\x1c\x04©}e©\b»\x04#\x0f\0\0\0ÿex\0\x1e\0p\0Á\x14\x02\0\x16p\00¤\0\0\x16p\00ø\x12"x\rx\x11¸\x04 \x0fþ\a\0\0\0\x16\x01p\0¼$\x02\x04!\x0f\x01øÿÿ%x\0\x1e\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýniû\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýnj5üúè\x02\0\b\0ô\0p\0¼$\x02à~àx¡ÀÓ\x1dX\x10\0\x16\x01p\0¾<\0\x04!\x0f\0\0\0A)þ\aò
!\x0fº\0ÿñÓ\x1dX\x10\0\x16\x01p\0ÁÐ\0\x04!\x0f\0\0\00A)>\x0eò\x15\x01\x16\x04!\x0f\0þÿÿ\x05!\x0fµ\0\0\0\x1dX\x10 \x0f\x01 |¡À\0\x16\0p\0ÁÐ\0\x04 \x0f\0\0\00A(>à \x0f\x01 þ¦\x16\x02\x16 \x0f\x01 ð¦¡ÀÚ\x1fX\x10Û\x1f\x1f \x041ø\x1f\x1f(\0 ù\x1f\x1f\x15\0Ò¶ \x0f\x01 ¡À¸è\x1f\0\x10Ú\x1f\x1f@\0 Û\x1f\x1f \x04\x01ø\x1f\x1f\x04\0\0\x10ù\x1f\x1f\x16\0Ú6 \x0f\x01 E\x14\x03\x06»E\x1cØ\0!\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýnqÐ\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýnr\füúÜ\x03\0\b\0ô\x04\02Øa¸\x06èE\x14\x03\x06+{üõ \x0f\x01 à·@$\x1c1
\x0f\00yð @\0\r\b\x04 \x0f\x04 \x1c9 \x0f\x04 9¡À&\0!\0@Ïq\00ôy\0\x16p\00x\x11\x15y\0¸\0¡ \x0f\x04 ~> \x0f\x04 ØB\x1a`UzÇr\00$Yà8\x12\0á Ê\aÊ *\00\x12\01\x12\0?\v\x03\x01y6\x12\x04\x01 \fÃ\09\x12\0àÌ âÌ "Ì b\bò@$D\0/$\b\x016\x1a\x04\x01\x1a\x15\f\x02\0\0Û{²à\x7f(pà\x7f9\x12\0à\x7f(pàx@$\x02zb\x02$\0Ú\x18\0\x03\0s{" \x0f\x02 ¬H \x0f\x03 0'\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýny\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýnyùüúÐ\x04\0\b\0ô" \x0f\x02 |H \x0f\x03 0'Q\x16\0\x16¦¸Q\x1e\x18\x10Q\x16\0\x16¸Q\x1e\x18\x10 \x0f\x01 \x10¬a\x13\0\v
Q\0\x01Ù\0^[B
\x11\0\0Ù\0^[B \x0f\x02 ¡ÀÛ\x1eB\x13ü\x1c\b°ü\x1cH°ü\x1c°ü\x1cȰü\x1c\b±ü\x1cH±ü\x1c±ü\x1cȱü\x1c\b²ü\x1cH²ü\x1c²ü\x1cÈ·Z\r@\0\x04\x14\x1f4\x04\x14
4\x04\x14 4\x04\x14\b4\x04\x14\a4\x04\x14\x064\x04\x14\x054\x04\x14\x044\x04\x14\x034\x04\x14\x024\x04\x14\x014\x04\x14\04 \x0f\x02 ¼Ñ@$\x1c1" \x0f\0 @Wü\x1c\b°J @\0\0\x1e\0p\0\b5\x04\x14\04" \x0f\0 XW¬\x11\0\0 \x0f\x05 À@$\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýnu\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýn¨üúÄ\x05\0\b\0ô\x1c1\ax\0\x1e\0p\0\b5*p" \x0f\x05 dÀ \x0f\x05 HÅ@$\x1c1S¦E\x16\x10
ê \x0f\0 \x1fñÀáÀ" \x0f\0\bD+ÁÀÑÀ \x0f\0 \x1f@$\x1c1S¦E\x16\x10
ê \x0f\0 X\x1fñÀáÀ" \x0f\0\b\+ÁÀÑÀ \x0f\0 l\x1fàx¡À \x0f\0\bH\x06à~à\x7f\x01Ð\x02\x03\r.\0Ú\x03ð\x01â\x11
\x13\f=ÐVx úé\x03ð\0Øà~áÅáÆ8Ña\x11\x02\x06`\x11\0\x06A\b
\06Ó\x02 Í\05ÐBx-\bC\x03\0Þ\x03ð\x01æ\x13\x0e\x13\x1c\x16!\x03¡õ
A\x02ð\0Øa `\x11\0\x06a\x19Ø\0bx\x10x\x06ð\x10x\x04ðBx\x10x\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýnF\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýn}üú¸\x06\0\b\0ôÁÆà\x7fÁÅàx¡À \x0f\0\bÌ\x06à~ñÀ" \x0f\x06 ´\x17\bw" \x0f\0 @W\x03çpF'Ï\x10\x1cÖ\0ð\x7fàÊ \x0f\0\0\0\x03\aò!\a\bE\0\x15Ð"x\x10x\r\bÃ\x03Øÿ\r\bÂ\x03Ðÿ
%\0 ôp" \x0f\0 XW\0Ø\x10ð\x01\x1fg\0¥á¦á¥\0è\0
\0¦p" \x0f\0 XW\0
\x0f\x06 \x18\x04&\00¨\x01\0@¨\x04\0@'\00\vÐ\0à\x01Øà\x7fÀx\bÑà\x7f\0©àx¡À\x06Ñ\0Ú@©«®¡® \x0f\0 tÙà~àxt5\0\b¡À \x0f\0\b\aà~ñÀ" \x0f\x06 ¨\x17!C/\x0f # \bw\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýn\x16\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýn,üú¬\a\0\b\0ô^[\0 \0;Õép" \x0f\0 äÑ" \x0f\0 <Ò\bu\x02\x15\x12\x11ép\x04\x15\x10\x11" \x0f\x04 p\x03+\b\x0f\0\0ÿÿ" \x0f\x01 \x14>è\0ر٠Ú\x02Û" \x0f\x05 Ðm" \x0f\0 \x18×(ÖÉq" \x0f\x01 HA" \x0f\0 äÙ\x04\x1e\x14\x10®\0\x1e\x04\x14\x03\x03¶\x04\x01¶ ^[\bÐ\0\r\b\0
\x0f\b\0" \x0f\0\b\\a\x04è\x02ª¸\x02¶" \x0f\0\b\\a\aè\x02¬¸\x02¶\0¬¸\0¶\x0f\x0fC\x14\0§¸\0\x05ðÿÜ\x0e'\0\x13\x01à\b®" \x0f\0 ÔÙÉq\x03¦ép" \x0f\0 ¤n©p" \x0f\x01 B \x0f\x06 \b\x18 D\00\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýnæ\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýn^[üú \b\0\b\0ô,D\00ñÀ" \x0f\x05 ¸ëpÑ\x14©" \x0f\x05 TlÑÀà~àx¡À \x0f\0\bÌ\bà~ñÀ*\b\0\0èûuÁÅ \x0f\x01 X ðûuÁÅ\fÙaÁ \x0f\x01 T åññÀáÅ×p\0\0Wü\x01Ø\x15ô\Ð\0à\fØ\x11òZÑ[Ð\0Ý©r" \x0f\x01 ÐXWЩq" \x0f\0 Üê©p \x0f\x06 0\x18àx¡ÀH\x1e\x02\x10ü\x1cH°ü\x1c°ü\x1cȰü\x1c\b±ü\x1cH±ü\x1c±ü\x1cȱü\x1c\b²ü\x1cH²ü\x1c²ü\x1cȲü\x1cÈ·©p" \x0f\0\b° \x04\x14\x1f4\x04\x14\v4\x04\x14
4\x04\x14 4\x04\x14\b4\x04\x14\a4\x04\x14\x064\x04\x14\x054\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýn ·\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýn¡\x1düú \0\b\0ô\x04\x14\x044\x04\x14\x034\x04\x14\x024\x04\x14\x014 \x0f\0 dûà~àxñÀ" \x0f\x06 ´\x17¡Á0Õ\bv@ O\x06p@%A\x1e\x03Ú" \x0f\x06 \x16\0Ú\fð3$03'\x10\v ã\0\0$0 ¨\x01âí
Ò@%@\x1eq\x03Ú" \x0f\x06 \x16p©qAá\x03Ú" \x0f\x06 \x16\0Ú@&O\x18\fð3$03'\x10\v ã\0\0$0 ¨\x01âí
Ò©pAàq\x03Ú" \x0f\x06 \x16&\x16À\x107\x15Á\x10 \bC\07\x1d\x02\x10(\x16À\x108\x15Á\x10 \bC\08\x1d\x02\x10¡À \x0f\x06 \x18àx\0\00\b\x0e\00¤\b\0\bWü\0\0\x04\0\00¡À \x0f\0\b\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýn¨\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýn¨Áüú
\0\b\0ô
à~ñÀ\x14Ð \05\b\x0f\0\08ü\x03àÌ bÊ!¢\x04\x06ô" \x0f\0\bh\a\0Ù\vÐ" \x0f\0 ÜêÑÀ \x0f\0 ò½ÑÀ!\0 \x0f\0 è½ÑÀà~àx\x04\x0e\008ü\0\0@$\x1c1 \x0f\0\bô
à~àx Û\x03ð\x01ã\x1f\v\x02\bÔyc5yt!\x02\x03ñ\b\x02\x05Ñ\x14x\ba\x02ðÿØà~àx>\00V\r\00¡À \x0f\0\b0\và~ñÀáÅ\x01Ø" \x0f\0 05\x19\br\0\bu" \x0f\0 ¼! \bP\0a½¯}©p \x0f\x06 0\x18àx¡À \x0f\0\bl\và~ñÀ" \x0f\x06 ´\x17\buáÀ8Ò\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýn°V\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýn°üú|\v\0\b\0ô$\x12\x01\bk\x12\x03\x0e\x04#\x0fÿ\0\07»\x17»\x05#\x0f\0\0oðk\x1a¸\x030Öð\x1a \x03\0Þ¾ô\x1a \x03.Ö<\x16\x0e\x18\x04&\x1f\0\x01\0\0A.\x0f\x16*Ö\r\x0fQ\x10$¦\x01Ø\x14®\x14\x17\bQ\0äây1\x7f&\v Å\x03\0Ø\x14®O\bQ\0åÌ%"Ì%¢Ì%bÌ%b^[ô\x05#\x0f\b\0[° k\x1aø\0ð\x1a \0\x18Ðô\x1a \0\x17Ð\x18Ò\0\x18Ñ\x05è\x04\0¢\x05\x04ð\0\0¢\x01\0¡ÁÀÁÅÁÆÁÇÑÀ\0\x16\x02p\00\b\x0fÏs\x01 ¨¬
À' \x0f\x01 \x0f\x06 \x18àx\0\0\0¼ä\x17\0\0\0\0\0¾x5\0\bõ(\0\0Ü\x0e\00\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýn¸\x19\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýn¸büúp\f\0\b\0ôÄ\x0e\00È\x0e\00¡À\0Àü\x1cH°ü\x1c°ü\x1cȰü\x1c\b²ü\x1cH²ü\x1c²ü\x1cȲ \x0f\0\b¤\fà~àxñÀ3h\x02y\x15 A\0\x12Ð\x10Ú6x\x11Ñ\x10à" \x0f\x06 \x16\x04\x14\v4\x04\x14
4\x04\x14 4\x04\x14\b4\x04\x14\x034\x04\x14\x024\x04\x14\x014
%\x1f\00pz* \x0f\x04 LÑÀà~àxTx\00Ly\00¡À \x0f\0\b\b\rà~ñÀü\x1cH°ü\x1c°ü\x1cȰü\x1c\b±>Ñ@>ÑUy@%
\x1e\x01<Фº@¡3Ù@\x01j" \x0f\0\b°/\0ØÿÙ" \x0f\x04 \x1c"\x04\x14\x044\x04\x14\x034\x04\x14\x024\x04\x14\x014\x04\x14\x1f4 \x0f\x04 z¦\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýn¿é\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýnÀ\x01üúd\r\0\b\0ôÑÀà~¡Àü\x1c\b°ü\x1cȰü\x1c\b±ü\x1cH±ü\x1c±ü\x1cȱü\x1c\b²ü\x1cH² \x0f\0\b\rà~ñÀáÅ\x1eÐ!Ò`uz 3 Þ\x06\x1cл¹ux ¢½ ^[Ðux`¹ ¢»` \x19Ð 5Ø%" \x0f\x04 h\x19\x04\x14\r4\x04\x14\x1f4\x04\x14 4\x04\x14\b4\x04\x14\a4\x04\x14\x064\x04\x14\x054\x04\x14\x044\x04\x14\x034\x04\x14\04@\0Ù \x0f\x04 h \x0f\x06 0\x18àxx\x11\00ôy\00Ä\x11\00,z\00Øy\00À\x11\00@$\x1c1 \x0f\0\b8\x0eà~àxñÀáÅ" \x0f\0 @W"Ñ \bíC
@¡\0Ù\x02ê$¢$¥#¥\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýnÇ»\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýnÈ\x11üúX\x0e\0\b\0ô" \x0f\0 XW©p \x0f\x06 0\x18àx@$\x1c1 \x0f\0\b|\x0eà~àxñÀáÅ
%\0\x1fò" \x0f\0 @W$
C
\x04éC¡\að\x0eÑ@¡\x03ê\0Ù$¢C
\x03ê$
$¢ Ò\0Ù$¥ #¥\x02餡 ¢" \x0f\0 XW \x0f\x06 0\x18àxä\x0f\00à\x0f\00¡Àè\x06!è%\x05\x18\x0eàÌ "\x19ò#\bÑ\0\0\x16p\00/\x0f\0!A\0\x14!A\02!\x0f\00/F\x17 Ð\0" \x0f\x03 \7\x1e\x02\x10\x0e\x06ð\x01Ø7\x1e\x02\x10\0Ø\x15¶<\x1e\x02\x10" \x0f\x01 øë<\x16\x10\x05è \x0f\x03 VU \x0f\x03 dUà~¡À \0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýnÏ\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýnÏÌüúL\x0f\0\b\0ô\x0f\0\bT\x0fà~ñÀ" \x0f\x06 ´\x17páÌ!¢Bô$Ð%Ò\0%j\x18`\x14x\baY\bQ\0"Ð\0"Ö\x18`\x14x\x13b\x1ab u¶ \x05\x06\x04å #\x01\02¶\x02#O\0\x10wÊ!
\0Cöðy"\x7f \x0f#\x103¶ðx\x14¶\x16Ð\x01Ù ¨$©pC" \x0f\x03 tY5\x1e\x02\x10\x13ð\x0fÒ\0à%\x05\x16À}\vÑ \x01à!\x05\a=e\0ª\x05ð\aЧ¦ ©p \x0f\x06 \x18/\x0f\00,F\00Þ\x0e\00\x16\005\0\bñÀáÅ\x15Ð`\0Ù#\x13\0)£\x04-L\x1d\r\x11\x14\x11Õ íPq\x01Ú%Â"\0Yaa¹\bðPq\x01Ù\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýn×a\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýn×üú@\x10\0\b\0ôEÂ!L\0Ya" \x0f\x02 LÁÅÑÀ \x0f\x03 5 \x0f\x06 0\x18\x10\00 \x10\00¡À \x0f\0\bx\x10à~ñÀáÅ\x10Ð " \x0f\x01 Tö\x0eÑ \x0eÒ\x02¹5y4y)báÌ%¡\vòáÊ â\r\x03ô\aè:Ø" \x0f\x02 ´* \x0f\x06 0\x18àx.\x0f\00Þ\x0e\00LE\00¡À \x0f\0\b \x11à~ñÀ" \x0f\x06 ¸\x17\0Ý©v\x04ð\x01Ý\x01æ-\x0e\x15\x12íÏx" \x0f\x03 Cwèc\x10\0ë _\0qè-áÌ!bìõ\0úñ©p \x0f\x06 (\x18àxñÀáÅ" \x0f\0 ¨P\buêÿ¢è" \0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýnß6\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýnßXüú4\x11\0\b\0ô\x0f\x03 x>\x04è$
ð" \x0f\x03 d>\x11è)\x0fé$\0!\x0f\0\b\0\0±qÊ F\0¢x\x1d\x0e\x05p\0\0ÿÿ\x06ð" \x0f\x02 ph\x04è\0Ø\x04ð ÿ\x0f \x0f\x06 0\x18¡À \x0f\0\b\x11à~ñÀ" \x0f\x06 ¬\x17 \bv\r
àÌ âxô\x11
\x10èD\x03\0Ù(s\x1ab\x10
Úº" \x0f\x02 Ähè\x01Ø\x15¥\x15
"è\x15\x04\x17\x01ØA\x12¥V%\x10\x1a\b\x10 \0ßp
1Ø/$\0\x01õ¥ñ¥" \x0f\x02 Di\x01a\x10\0è\b\x10 8Øô¥" \x0f\x02 |j\x12
\bQ\0" \x0f\x03 d>}\b\x10\0 \r\rA\x10!\x10\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýnç\x06\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýnçEüú(\x12\0\b\0ôm\b\x01$\x03V%\x0f\x1a\0!\x11\0(8Ø*r" \x0f\x02 \x18j(\x1ap1Ø*r" \x0f\x02 \x18jàÌ ÿÿÿÿ\x1aôL \0 Ì ¯ÿÿÿÿ\x14ô(\0Ø\x1ap\x12¥\x13¥1Ø" \x0f\x02 |j(8ØP\x1d\0\x14" \x0f\x02 |jÉp" \x0f\x02 Ä \x0f\x06 \x10\x18àxñÀ" \x0f\x06 ¸\x17\0Ø\bu\x03ð\x01å;\rÕ\x11¯x" \x0f\x02 Poxè-áÌ!âôõ!a\x11\0á Q\x10\x01\aP\x10\x03\a;yãÀ!¢\0\x03ð\0ÚHq\x0fÖ%\rÐ\x11:bÚºE¦\x10\x02\a\x02"@\0e¸^[\b
\0 Ò!\x13\bE\0\x01²\að\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýnîÕ\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýnï\büú\x1c\x13\0\b\0ô" \x0f\0 ¨P\x05¦ \x0f\x06 (\x18àxÐ]\00T\x10\00¡À \x0f\0\bD\x13à~ñÀ" \x0f\x06 ´\x17]Ö\x02" \x0f\x03 ,ã[׸p\0¯\0 \0ÝOò L*òØàò\x12öÖàeò×àô$\x03á\0¯xôPÔ\x14x`\x01£¸\x01©\x10ÝqðÙàò \fôJÑ\x14%@\x01\ba ÿ\x06ò Ì\r@Ù{ð Ì\r\fÙwðBÑ\x14%@\x01\ba ÿöó\f\x16\x10\x03"De" \x0f\x02 èCÕ\b\x10\0 Ì\r\x1fÙ" \x0f\x03 tÛ©p\x12ÙÚ\x03Û" \x0f\x05 ÐmXð¨p" \x0f\x04 X\x06\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýnö¦\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýnöèüú\x10\x14\0\b\0ô\0/Ò\x14 \x01\0)b¡ Þ" \x0f\x02 \x18D\b\x10\0©p\x12Ù©Ú\x03Û" \x0f\x05 Ðm Ì\r\x1fÙ5ð\x04# ¯è Ô4ya\x01¸\x01© Ý\x02ð\x1fÝ Ì\r©q" \x0f\x03 tÛ" \x0f\x02 "ð\x1fÝ Ì\r©q" \x0f\x03 tÛ" \x0f\x02 à" \x0f\x02 \x04\x10ð\x03\0¯ \f\x0e\x06ð\x03\0¯ L\x0e\0Ù" \x0f\x03 tÛ\0Ý©p \x0f\x06 \x18àxüg\008\x11\00Ti\00Ui\00¡À \x0f\0\bÜ\x14à~ñÀ" \x0f\x06 \x17:pÚp&\x10 X\x16\x14 \0\x11\x10\0\\x16 Áâ@$\r"J%\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýnþu\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýnþüú\x04\x15\0\b\0ô\0 ¢ò \x11 \x1d\b\x110p\x16 è*p" \x0f\0 äa\x01Ùp\x1eB ðs
\0`\x16\x13 \x02$Ï$\x10çd\x16\x12 +ð\0"À$¢pS \x02\x02#\b\0\x02#\00wÊ!Å\x03\x02 \x04ȸ\x02{pqÊ'Æ Ê'E /$À\x05V!\x03"\x14#\0\x14{@!\0\x06@#\x01\x06r" \x0f\x06 \x16\x02'Ï\x15\0%Õ%Øï\0"\x01%X\x1e@ BuÑ\x17\x12v\bß
pérJqJ#\0 \vs" \x0f\0 ,\\x1aph¾\x13ðÊÑÊÒ\x14"À$ Û
%\0\x05\x14"Â\x04" \x0f\0 <[\0#\x13%u\x02'\x0f\x15\x16ïS%\x01\x12\x0e!\x0f\0\0\0\x02PwÊ$ \\x16 Ê$\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýo\x06F\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýo\x06rüúø\x15\0\b\0ôÅ#V!À"\x14 D\0]êqÜñ\x01Ù\\x1eB \x1eðS%\x02\x12\x0e"\x0f\0\0\0\x02\x10vÊ
\x03\x10v \x11 Ê'\x06\x10V!Á"TyÊ'
\x13
pér" \x0f\0 ,\â~\x1apýeäî \x0f\x06 Ø\x17àx¡À \x0f\0\b`\x16à~ñÀ" \x0f\x06 \x17\bv\x02\x1aqJ$@ ê¸ Â$\x01%§Á\0Ýé\x150\x01à\x15¦\b\x03é\v\b\x10\x01©w\x19ðL$\0 \x01ßÊ'¡\x10\x13ð \x10 ÷é0\x05é(\v \x10\x01©w\x02ð\x01ßL$\0 Ñ â\x03ò\0\x18@#)\x01ØáÀxH@ X\0\0Ø\x0f
\x11\x01JâÊ b\0N \0\x02ã¸Ì!\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýo\x0e\x16\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýo\x0eLüúì\x16\0\b\0ôâ\x04ô@Å\x05ð\x03¸@À@&\x11\x17*p" \x0f\0 p=B"V \x01(
\x13ò\x04\x10\x15 @% \v\b
\0^[\f\x11 \b\x16\x10-\f\x11\x01\0(\x05@" \x19\vE\0L$\0 v\x02\x01\0&\x11\x17o\x02 \0 ®
\x05\0ºr\x05ð\a\r\x04 ºpO\f\x10 \0\x10\x02 Ép \x10\0;êA)\x02\x01By; \x10ðA)B\x01By á!\b; È÷Ép
q" \x0f\0 Øb\bðÉp
q" \x0f\0 äa\b\x16\x10\bðBÅ\b\x10 DÀ\0\x10\0 AÀ\x02\v\b\x1f\x03zu/ðÿ\f\x10@\x16\x01\x11D\x16\0\x11"x\x10x'\bÓ\x03;\x16\x10\x01à\x0fxã\br;\x1e\x02\x10\x13\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýo\x15æ\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýo\x16\x18üúà\x17\0\b\0ô;\x1eB\x13\x01à\x13¦J#@ \x15ðk\b\x12 ;\x16\x10\x01à\x0fx¿\br;\x1e\x02\x10\x13;\x1eB\x13B%U \x01à\x13¦ ÿ\x0fzp-\f\x11\x01
À*q\x02Ú" \x0f\0 Ø=\x05ÀB% \x02Ùà¨\x01\x18B\x05*p" \x0f\0 |=\x01ÀàÌ$! \x03ô\x10\bè\x11\x0f\x10úu\x06ð;\x1eB\x13¯ñJ'@
˻t
"\x14J$\0x\0Ú¨ \0\x02/"À"\x05\x03|*q" \x0f\0 Ø=\v\f\x11 \x05ÀCÀ\x06Á\x01)\x05\x11\x0f\x10 \x05À" \x0f\x06 ,^[GðE\f\x10 \x05ÅÉp\0\x14\x040
qér©s" \x0f\0 ÀdJt\bw)hJ$\0x\0ب \0\x02/$\x02À \0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýo\x1dµ\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýo\x1dÍüúÔ\x18\0\b\0ôE\0;y\x1de+ðà;\00Ð;\00$\x13\00lÀéq`{\0Âét
"\0\x16J$\0x\0ب \0\x02/"À \x05\x03|\x01ÁJtJ$\0x\0Ý8`AÀ o¨ À\x01/$\x02À%\x05\x10^[x\x03À\x1deD\x16\0\x11\x02%Õ#JtJ$\0xø`\x10xD\x1e\x04\x10\0Ù¨ \0\x02/$\x02À!Å\x03û\x7f*p" \x0f\0 |=L%\0 õ\bàâ \x0f\x05 ¼_?\vQ
À*qJr" \x0f\0 Ø=\x06À\x15è\x05Á\v
Q \0\0©\x03ð\0\0±D\x16\0\x11Jq\x01à\x10xD\x1e\x04\x10*p" \x0f\0 |=§À \x0f\x06 Ø\x17\0Ùà\x7f@\x18D\0¡À \x0f\0\b\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýo%\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýo%°üúÈ\x19\0\b\0ôÌ\x19à~ñÀ" \x0f\x06 ¨\x17m\x17\x12v:p\x14\x12 \0Þ\x1aqü\x1c³^[\bÑ\x01Ép\aÙ"Ï\x02(s" \x0f\x05 Ðm\x01Ø¿ð" \x0f\0 LW\x14\x12 `ÑOa`Õ\x16'Â\x13\x03ºâz\x15'\x10U}:\x1dB\x14" \x0f\0 XW!C¯*pÆö" \x0f\x05 To\x06ð" \x0f\0 äÉ:p ÃÊ !\0Ê!¡\0Ê"\x0f\0\0Ú\x03Ê#á\x01â \x0f\x05 Ðm©p
q\x14Ú" \x0f\x06 \x16 \v\bÑ\0\x01Ø
*p9\x1dB\x14" \x0f\0 ôm©pÊÿB\x1d\x13D\x1d\x13<\x1d\x13;\x1d\x13Ò¥Ó¥Ô¥Õ¥" \x0f\0\b\\aà\x01Ø\x03ô\f\x10\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýo-I\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýo-üú¼\x1a\0\b\0ô\0 8\x1d\x02\x10©p" \x0f\0 `IâÊ!\0\x02ô*\0ØáÊ \x0f\0\0Õ\0\x06òáÊ \x0f\0\0ÿ\0\x0fx\0\x1c\x040â\x01ÚÀz\x01âT%À\x18q" \x0f\x06 \x16V%À\x12\bt$\x10\x10À¤!\x10\0" \x0f\x06 ,^[©q!\x10\0\\x19\x03ء١ \b\0\x1a¡\x01Øp\x19\x02\0@%\0\x17éq" \x0f\0 H=àl\x0eáÿÊ A\x03" \x0f\0 LW\x14\x12 \x0f!Â\x03\x14\x1a " \x0f\0 XW©p" \x0f\0 hm\0Ø¡À \x0f\x06 \b\x18,;\00\f5\0\bÌ6\00ñÀ" \x0f\x06 ´\x17ÞÑ\bv\x04æô\x1c\b°p\x03Ù" \0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýo5\x19\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýo5düú°^[\0\b\0ô\x0f\0\bð/\x01Ù" \x0f\0\bà/\x18Ù" \x0f\0\bÐ/ÔÐ\0ÔÕ \x04\0F
\x13ê\aè\x11\0Á\x10à" \x0f\x05 Ë\0
\x11\f\x16\x01\x18\x14à" \x0f\x05 Ë\0
O'Á\x17\x11" \x0f\x05 Ë£À \x0f\x06 \x18ñÀáÅÁÕ
" \x0f\0 °v\b
\0Ù\x02Ú" \x0f\x05 ¤Y\x06
\x01Ù\x02Ú" \x0f\x05 ¤Y¸Ð\0\x10\0\x06" \x0f\0 À4 \x0f\x06 0\x18ñÀ" \x0f\x06 ¸\x17\buü\x1cȰÉu&
®ÖA \bºEy ¶(p" \x0f\0 (Å Ã\x04ô\0Ø\0¶\0\fè\x06
"@%\0\x1a\x03á" \x0f\0\b\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýo<ë\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýo=3üú¤\x1c\0\b\0ôÀ/\x11ð\x04\x14\x034\x04\x14\r4\x04\x14\x0e4ÑÀ\x06"\x03\b¸ \x0f\x05 \x1eÁ\x04\x14\x034\x04\x14\r4\x04\x14\x0e4ÑÀ \x0f\x05 *Á \x0f\x06 (\x18¡À \x0f\0\bð\x1cà~ñÀ" \x0f\x06 ¤\x17ªÁÑ×\x1c\x11\x13\0$\x11\x11\0(\x11\x10\0,\x11\x12\0\0μ\x10\0\0" \x0f\x05 Ë\0Ý 9\b\x1e\0¼\x11\0\0\x01Ù©r" \x0f\x05 Ë\0\x05Ù©r¼\x10\0\0" \x0f\x05 Ë\0\rÙ©r¼\x10\0\0" \x0f\x05 Ë tÐV!Ì ¨°\x11\0\0 ¬\0O&\x01\x10\0Ú\x04à" \x0f\x05 Ë" \x0f\x01 ÀQàÀxÀyâ \x0f\0 HMO#Ó&\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýoD¹\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýoDØüú\x1d\0\b\0ôaÖ\0Ý ðð!@\x03jq" \x0f\x05 Ë\x01å\0U A\x04\x10\0ç\bC\x01Ø" \x0f\x05 hÎ\x03Ø" \x0f\x05 hÎ\x05Ø" \x0f\x05 hÎ\x02Ø" \x0f\x05 hÎ\x04Ø" \x0f\x05 hÎ\x10Ø" \x0f\x05 LNÐ\0àâ \x0f\0 "
ÿP!\x01 °¹¹\0¹\0\x1cà" \x0f\x05 Ë\0
q\0E!Á\x03\x14à" \x0f\x05 Ë\0E"Â# \x04\0iF"Á+E!Á\x03ë\x06èHq\0\0\x10à" \x0f\x05 Ë\0\0" \x0f\x05 Ë\0ÙEÀ
À" \x0f\0\b\00\0\x05Á\0" \x0f\x05 Ë(Ð\0Cÿ\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýoL\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýoLÈüú\x1e\0\b\0ô\0\0Ù¬\x10\0\0¹\x14à" \x0f\x05 Ë\x01تÀ \x0f\x06 \0\x18¡À \x0f\0\b¸\x1eà~ñÀ" \x0f\x06 °\x17\bv@ \r\x02\x1d ÿ¡ÁÈò\x12Ð\02 \x0f\0\0\x06\x01àÀò<
^
0rF\x01%\0\0
è¸~ô\x11Ð\0àzòN\x16@\x11è1B"2ºÊºTzcºá \0\x14ð\x145\0\b\x12\00\x12\00x\x04\00\x12\005\0\b¦5\0\b¥5\0\bX\f\00è\x17\x0fð°èr\x03Ø@'\x01\x14" \x0f\x05 LY¡è1\x03Ú\x02N\x1e\x04\x10\x04" \x0f\x06 \x161X\x04\x03ácº\x04à" \x0f\x06 \x168N\x16@\x11Ki\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýoTh\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýoTüú\x1f\0\b\0ô\x01áBx\x0exN\x1e\x04\x100y\x1dðR\x16\0\x11\x01à\x10xR\x1e\x04\x10*ðP\x16\0\x11$X8`1" \x0f\x06 \x16N\x16@\x118"x\x0exP\x16\x02\x11N\x1e\x04\x10Ya0y)\bs\0P\x1eD\x10\0Ø\x16¯\x1ap\x04"\x03á*·" \x0f\0 L"N\x1e\x04\x14P\x1e\x04\x14\0
\v\b\x1f\x02\x11\x02ð\x12\x0f¦\x10¦0\x1e \x104\x1e \x10\0Ø\x1e¥\x14
R \0\0S \x01\04¥\x0f\b\x1e\0\x0e
\x1f¥,\x15\0\x18\x05ð\r
\x1f¥(\x15\0\x18\x1d\0\x10\0
\x19\b\x1f\x02©p" \x0f\x05 h¦6Ñ\0\x01à\0¡\x0eð»\x17\0ö\0àâ \x0f\0 \x060Ñ\0\x01à\0¡¡À \x0f\x06 \x18\x18àx¡À \x0f\0\b\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýo\6\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýo\Wüút \0\b\0ôx à~ñÀ¨\x17\0ö\0\bÙ¬\x10\0\0\x14à" \x0f\x05 Ë"Ð\0àâ \x0f\0 \x06\x01ØÑÀà~¡À \x0f\0\b° à~ñÀáÅ¡Á\x17\rö\0
" \x0f\0 \0"\0Ø\x02µq©p" \x0f\0 v\x17\x01ö è\0
\f\x19 \0\f\x11\0\bPà\x14\x19 \0\f\x11\0\b\x02¡\x14\x11\0\b\x04¡¡À\x04\x14\r4ÑÀ \x0f\x05 J¶¡À \x0f\x06 0\x18àx¤\x12\00¨\x12\00¡À \x0f\0\b(!à~ñÀ" \x0f\x06 ¬\x17aÖ\0¦Á°\x10\0\0\0\bà" \x0f\x05 Ë\0K\x10\0\x06\x06è$\x04é`y\a \x02ݰ\x11\0\x06àJ!@ ô\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýod\x06\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýod&üúh!\0\b\0ô°\x11\0\0\0" \x0f\x05 Ë V!\x02 xãÆ ÿÿ\x0fø|òLÓ\x04\x13\x10\0â¬\x11\0\0¸ª\0Ù¹\x14à" \x0f\x05 Ë" \x0f\x05 " \x0f\x05 x\0¬\x10\0\0\fà" \x0f\x05 Ë ¡¿'\b\x1e\x01¼\x11\0\0\0Ù\x01Ú" \x0f\x05 Ë\0\0Ù¬\x10\0\0XàO'B\x10\x11ð¬\x11\0\0O'B\x10\0ÙXà" \x0f\x05 Ë\0\0Ù
rº¼\x10\0\0" \x0f\x05 Ë\0\0Ù±\x18X\x04¬\x10\0\0\x01ÚXà" \x0f\x05 Ë\0\0Ù¬\x10\0\0"ÒXà" \x0f\x05 Ë\0\0Ù¬\x10\0\0\bÚXà" \x0f\x05 Ë\0\0Ù¬\x10\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýokÖ\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýokðüú\"\0\b\0ô\0\0 ÚXà" \x0f\x05 Ë\0¬\x10\0\0Xà" \x0f\x05 Ë j\x19\x18\0V!Ì ¬\x11\0\0 ¬\0Ù¹\x14à" \x0f\x05 Ë
Ð\0àÊ b\0â \x0f\x05 ˦À \x0f\x06 \x10\x18\x12\00X5\0\b\0\x05\x04\05\0\bD¸S B\x1ciÁ¸Ì !Ê !\0\x16òâÌ !
òàÌ"!\x06òâÌ a\x04ô\x01Ø\bðâÌ ¡\x02Ø\x02ò\x03Ø\x04¸%xà\x7f\x0fxñÀ" \x0f\x06 ¨\x17£Á\bu(w\x1ar\0Ù ª!ªZqÀéq" \x0f\x05 ]\x01Á:p\x01\x10 !ãÿ\x01\x18\x02 \x01À \0\x18B \0Þ\fð\0Á©p" \0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýos¦\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýosÅüúP#\0\b\0ô\x0f\x06 \x16"Á=e\0"R >fp/!G\x04Â" \x0f\x05 h^"Âíê\x13\x0eA\x14\x02'O\x14/'ÇÑõ\0Ø\x04ð\x02'\x14\x0fx£À \x0f\x06 \b\x18àx¡À \x0f\0\b¤#à~ñÀ" \x0f\x06 ¨\x17çÐà'\a¡Áqò\x17\0\x10\x01ÛA(\0A(\x02\x01Á¸Á¹Ãº" \x0f\x05 ày
"\0\x18§_òS"\x04@'\0\x18" \x0f\0\bÀ//! \x14!@$²B Ò\0*q©p" \x0f\x06 ,^[\0Ø\x1ap`À\x01\x1c\x020\x01Ø" \x0f\x05 ÔÐÌÖ\0/"$¡èJp\x02\x1d\x14" \x0f\x05 $]\x01®\x14è\x03mB!Á /yr²ÿ\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýo{v\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýo{üúD$\0\b\0ô À\0\x01\x140\x01 À\x02®\x01\x140ø\x03®\x11ð\x02\0\x03\x01\vð\x01àÊ"\x02\aÊ B\x03\x0eâÿÊ!B\x04ép" \x0f\x05 ´Õ³Ð\x01Ù ¨\0\x01à\x0fx\v\bò\0\0®\0\x1e\x02\x14¡À \x0f\x06 \b\x18¡À \x0f\0\b°$à~ñÀ©Ñ\0©è" \x0f\x05 \{\x05ð" \x0f\x05 D{¤Ð\0Ù ÑÀà~¡À \x0f\0\bà$à~ñÀáÅÑ\x01ØÕ\x04©\x14\x15\x01\x18¹\x14\x1d`\x10" \x0f\0 \x04C\x10\x15\0\x18¸¸¸\x10\x1d \x10\x10\x15\0\x18°¸\x10\x1d \x10 \x0f\x06 0\x18àx¡À \x0f\0\b,%à~ñÀáÅ\bØ" \x0f\0 \0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýoG\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýohüú8%\0\b\0ôLV
Õ\x04\x10è\x0eØ" \x0f\0 lV" \x0f\x05 lÊ\x0eØ" \x0f\0 LV\0Ø\x04 \x0f\x06 0\x18¡À \x0f\0\bt%à~ñÀzÑ\x14\x11\0\b©¸\x14\x19 \0\x10\x11\0\b¬¸\x10\x19 \0\x01Ø" \x0f\0 \x04C" \x0f\0 ¤\x05ñ¡À \x0f\0\b¬%à~ñÀ" \x0f\x06 ¸\x17eÖ\0¡Á \x06" \x0f\x05 (Ô\x02Ø\x01Ù" \x0f\0 44cÕq\x06¥©p" \x0f\0 v è\0
\f\x19 \0\f\x11\0\bPà\x14\x19 \0\f\x11\0\b\x02¡\x14\x11\0\b\x04¡(p" \x0f\0\b^[\x03Ø\0Ù" \x0f\0 44 \x02¥\x19\x18\0\x03Ø\0Ù" \x0f\0 \0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýo\x16\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýo/üú,&\0\b\0ô44 Ú\0ÛË\x19\x18\0KÑ\x0eØ" \x0f\0 \x14V\x0eØ" \x0f\0 lV" \x0f\x05 lÊ\x01Ø" \x0f\0 \x04C\x0eØ" \x0f\0 LV¡À \x0f\x06 (\x18ñÀ\x0fx" \x0f\x05 <ÎàÊ !\0\x05ò\x022¸Ê¸"ññÀ" \x0f\x06 ´\x17£Á\x01Øöÿc¸P \x01\0p/y" \x0f\x05 ]\bu+Ð\0ÁÂ\0¯\x7f\0®\x01\x01®¢®\x03æ ð\x01ÁÉp" \x0f\x06 \x16"À\x1efÀÂéq" \x0f\x05 h^"Âñê\x03m\x10x£À \x0f\x06 \x18àx¡À \x0f\0\b\b'à~ñÀ" \x0f\x06 ¸\x17\x14Õ\x02
ßÿ\bv\x01Ø" \x0f\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýoæ\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýo\x06üú '\0\b\0ô\x05 ÔÐ\x06Ø\x0e\x02
Éq" \x0f\x05 Ìy \x0f\x06 (\x18¡À \x0f\0\bh'à~\x12\00 5\0\bµ5\0\bX\f\00¨\x12\00\0\0\0x\x04\00lÊ\x05 ñÀ" \x0f\x06 ¸\x17ð\x17\rð(v
¥6µ\x01Ø" \x0f\x05 ÔÐÈ\x17\x01ð\x05ýè\x01Ø\x05©
Éq" \x0f\x05 Ôz \x0f\x06 (\x18àx¡À \x0f\0\b´'à~ñÀ" \x0f\x06 ¬\x17¥Á¾\x17\x11v`\0\x11\x0e cÃá@$\x103\r\x1cÂ3C\0Ý"\bºYa\x0e\x1cD0E/$H\0\x04\x10\0@*\x05\x02\0%
\x01/%H\x01\x10\x1cD1Gf¿\x06\bº\x1ab
çPzf\x02-\0\x12\x1c0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýo¶\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýoÏüú\x14(\0\b\0ô@'\0sõ Ï\x03ôx\0x\x06\0)\x01¬\0\0\x15\x01¸\0B,\0\x02a¸à>\x02\r\0@'\x03sõ#\0\0\x14{\0{\x0f\0&\0U\0\x17\x01\x17\x01?\0L\0\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x012\0Ð\0I"\x04\vèÑÉp©r" \x0f\x06 \x16û\x01\0\0ÑÉp©r" \x0f\x06 \x16ç\x01\0\0Ñ±Ø "\r\0Ép©r" \x0f\x06 \x16Ï\x01\0\0
Ð\0\x18èÑI"\r\x03Ép©r" \x0f\x06 \x16Ùð\x7fÐ\0\fèÑI"\x02Ép©r" \x0f\x06 \x16Íð 0\x05" \x0f\x05 \x14´%ÿ\x17ÃðS!Á\rôxÑ %\x10Ép©r" \x0f\x06 \x16\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýo¢\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýo¢¤üú\b)\0\b\0ôµð\x1d Q\0sÑ %\x10Ép©r" \x0f\x06 \x16©ð^[ \0mÑ %\x10Ép©r" \x0f\x06 \x16ðáôhÑ %\x10Ép©r" \x0f\x06 \x16ðãô©p" \x0f\0 \0#" \x0f\x05 ¨Ó\x0e\x14\x011]Ð °\x7fð#\x02{ôZÐ\0\0®\x12\x14\r1åè\0 \0sðãqôUÐ\x01ÚU× ¡ ¢ L¨TÐ ¨TÐ@¨TÐ °\0\x10\0\x06¿\b\x10\0{\f\x10\0" \x0f\x05 D{NЩq\x03Ú\f\x19D# ¨LÐ ¨LÐ ¨¡¨\x10\x11\0 " \x0f\x05 ¤Y\0©q \v
" \x0f\x05 DÕ\0\x01Ù \0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýoªI\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýoªdüúü)\0\b\0ô\a\x02" \x0f\x05 DÕ\0 \v
" \x0f\x05 \fË\0 \a\x02" \x0f\x05 \fË\0 \a\x04" \x0f\x05 \x14!ð" \x0f\x05 \{\0 \a\x04" \x0f\x05 \x15ð¡ãÌ%¡Ê%\x10\x0fò\0\x10 B\0Ý ô&Ð\x06\x10\r!\0\v\rr\x10\0®\x01Ý=\r\x12\x10\x06\x10\0!\x1f\r\x03\x10\x1cÐ\0(©p2¹Ê¹" \x0f\x06 \x18\x01ß\x02é\0ß\0ØÉqÉr©sS'\x04\x10" \x0f\x05 $Ï©p¥À \x0f\x06 \x10\x18x\x04\00ø\x03\00¼Y\x06 ¨Y\x06 ÐY\x06 Z\x06 Z\x06 4\\x06 ´Z\x06 4[\x06 ´[\x06 \x12\00¨5\0\b\x12\00\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýo²\x19\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýo²3üúð*\0\b\0ô¥5\0\b¦5\0\b\x12\00¡5\0\b 5\0\b¢5\0\b@$\x1c1 \x0f\0\b\x18+à~àx©p" \x0f\0 °v
\x0f\00h\x1c\0Ù¹\0Ú" \x0f\x05 ðÿ \x0f\0 8\x1dà~àxñÀ" \x0f\0\b\\a\x06èUÑ\0¸\0¡ÑÀà~ñÀ" \x0f\0\b\\a\x06èOÑ\0¸\0¡ôñàx@$\x1c1 \x0f\0\b+à~àxñÀáÅHÐ\0èHÐ\0«è" \x0f\0 <'%èBÕ
P!\x04¸\0¥BÐ\0èP!\0\x04²¸´¸¸\0¥>Ð(\x10\0\b!\b\x1e\0=Ñ\0 ¸\0¡
ð" \x0f\0\b\\a\x04è\0
´¸\0¥7Ð\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýo¹ì\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýoº\rüúä+\0\b\0ô@x \x0f\x06 0\x18àx@$\x1c1 \x0f\0\b\0,à~àxñÀáÅ/Ð\0®è/Ð\0,è\x1eØ" \x0f\x05 $]&è"Õ
P!\0\x05¸\0¥"Ð\0èP!\0\x04²¸´¸¸\0¥\x1fÐ(\x10\0\b\x1f\b\x1e\0\x1dÑ\0 ¸\0¡ ð" \x0f\0\b\\a\x05è\0
²¸\0¥^[Ð\0@x \x0f\x06 0\x18ñÀáÀáÁ\x17Ñ ^[ \x1e\0" \x0f\0\b\\aèÁÁÁÀÑÀ À\aÁÁÁÀÑÀ¹\0Ú \x0f\x05 ðÿ\ñàxØ\f\00Ò\f\00Ó\f\00Ñ\f\00\0\0\0à\f\00¬\f\00Ô\f\00é\f\00´\f\00¨\x04\00¡À \x0f\0\b\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýoÁº\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýoÁÝüúØ,\0\b\0ôÜ,à~ñÀ" \x0f\x06 ¨\x17¨Ð\0\0ݰ\x10\0\0\0\bà" \x0f\x05 裄 $áÌ!¢Vò¡\x17\x10v!\b\x1e\0 Ð\x01Ù\0\x18B Ð Ð Ð ¨\x01ØGð\0\x10
\x10\0\x17\x11v(¸\x17\x12vS A\x03\0\x11\x02 ×Ö\x17
@\0\0\x19@ \0\x1a@# §\x01Ø\0®,ð\0\vè" \x0f\0 ¨P §\0\x1a\0 ®©p\rð" \x0f\0 ¨P\0\x12\x01 "x\v\b3\0\0§\x13x\0§ \x03Òö\0è\0\x19@#\0\x1a@# §\x01Ø\0®\0\x18B#\x02Ø" \x0f\x05 DÑ\0Ø \x0f\x06 \b\x18àx¡À \x0f\0\bÌ-à~\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýoÉ\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýoÊFüúÌ-\0\b\0ôG\bó\x01\0ÙèmÐ\0@ \x01\x06^[ð\x19\b\x1e\0jÑ\x1dx\x04¸ \x16x!\x02
\x19a\x11ð\x11\b\0dÐ\0\bq! \x06 ð\x0f\b\x11\x01`Ð\0\bq!\v
à\x7f(pàx¡À \x0f\0\b$.à~ñÀ" \x0f\x06 ´\x17¢Á"\0Þ\bw\x04\x1c3Û \x1f\x02A)\x03Á¸àÌ"!eôUÕ(
&\x1d\x13\x03B\b¸X`\x04à\x12µQÐ\0à\x03Ø ô\x01 \b¸%x" \x0f\x05 4Y5\b\0Â9\bÐ\0q" \x0f\x05 LYàuô\0À(
R" \x0f\x06 \x16\0À" \x0f\0 Ø!-ð\b
" \x0f\0 Ø!cð\x03Ø@%\x01\x14" \0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýoÑg\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýoÑüúÀ.\0\b\0ô\x0f\x05 LYè\x04
\x03Ú(
" \x0f\x06 \x16(
J\x04
\x03áÒºcº\x04à" \x0f\x06 \x16\x04
" \x0f\0 L"\að,Ð" \x0f\0 8!\b
\0Ù\x02Ú" \x0f\x05 ¤Y5ð1 \x1e\x02\bàÌ"!\x12ô Ð.\x18\x03Ö°
" \x0f\0 °v" \x0f\0 "\x1dÐÀ¨\x1fð; \x1e\x02.¹Á¹áÌ"!\x17ô" \x0f\0\b\\a\x12Ñ\vè\x0e\x13\b\x01Ω" \x0f\0 ¤"\aðީα" \x0f\0 "¢À \x0f\x06 \x18\x12\00\x12\00¦5\0\b¨5\0\b¬5\0\b°5\0\b´5\0\bx\x04\005\0\b<\x06 ¥5\0\bJ"@\x10\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýoÙ6\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýoÙWüú´/\0\b\0ôJ#\x11 \x0f\x06 ø"J"\0\x10J#\x14 \x0f\x06 ä"J"\0\x10J#\x11 \x0f\x06 ä"J"À\x14J#@\x10 \x0f\x06 ä"J"@\x17J#@\x10 \x0f\x06 ä"J"\0\x11J#\x11 \x0f\x06 ä"áÅÏp\x06 ´= \x01ÛÏp\x06 ¸=(\x19à\0@%\x11\x12Ïp\0 @`\x1a`\x03h\x1a \0Ïp$\0\0$l\x1a \0dØ \x1aà\0\x1c\x1a \0\x04Ø\x18\x1a \0\0Ø(\x19 \0\0ظ\x198\0à\x7fÁÅàxÏq\x06 ¸= \x1c\x19 \0à~àxÏq\x06 ¸= \x18\x19 \0à~àxÏq\x06 ¸= \x04\x19 \0à~àxÏp\x06 ´=\0\0Ù(\x18`\0à~\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýoá\x06\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýoá&üú¨0\0\b\0ôÏp\x06 ´=\0\x01Ù(\x18`\0à~Ïq\x06 ¸=@H\x12\x01\b L\x12\x01\bà\x7f$¨àxñÀáÅ\buÏp\x06 ¸=\0P\x10\0\b\x04 \x0f\0ÿ\0\0¥\x03 ý\x0fB(þ\x0eò\0" \x0f\0 HA\0©p" \x0f\0 hA\x06ðÏpÞï¾\0¥ \x0f\x06 0\x18Ïq\x06 ¸= 8\x11\x01\b \x03 ý\x0fà\x7fG¸ñÀáÅ\buÏp\x06 ¸=\0\\x10\0\b\x04 \x0f\0ÿ\0\0¥\x03 ý\x0fB(þ\x0eò\0" \x0f\0 HA\0©p" \x0f\0 hA\x06ðÏpÞï¾\0¥ \x0f\x06 0\x18Ïq\x06 ¸= D\x11\x01\b \x03 ý\x0f\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýoè×\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýoèíüú1\0\b\0ôà\x7fG¸Ïp\x06 ¸=\0\x01Ù(\x18`\0à~Ïq\x06 ¸= \x19 \0à~àxÏp\x06 ´=\0\x01Ù(\x18`\0Ïp\x06 ¸=\0\x02Ù\x04\x18`\0à~àxÏt\0\0\0\x04¸\x14x` \x12\0\b&x \x1a \0à~Ït\0\0\0\x04¸\x14x`(\x12\0\b&x(\x1a \0à~Ït\0\0\0\x04¸\x14x`(\x12\0\b\x05y(\x1a`\0à~Ïq\0\0\0<\x11\0\b¸<\x19 \0@\x11\0\b¸@\x19 \0à~Ïq\0\0\0<\x11\0\b¸¸<\x19 \0@\x11\0\b¸®¸@\x19 \0à~Ït\0\0\0\x04¸\x14x`0\x12\0\b&x0\x1a \0à~Ït\0\0\0\x04¸\x14x`0\x12\0\b\x05y0\x1a\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýoð¦\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýoð»üú2\0\b\0ô`\0à~Ït\0\0\0\x04¸\x14x`,\x12\0\b&x,\x1a \0à~Ït\0\0\0\x04¸\x14x`,\x12\0\b\x05y,\x1a`\0à~Ïq\0,\0\x04¸\x14x0!\0à~Ït\0,\0\x04¸\x14x`\0\x1a`\0à~àxÏp\0\0\0\x10\x10\0\bà~Ïq\0\0\0\x10\x19 \0à~Ït\0\0\0\x04¸\x14x`8\x12\0\b&x8\x1a \0à~Ït\0\0\0\x04¸\x14x`4\x12\0\b&x4\x1a \0à~Ït\0\0\0\x04¸\x14x`4\x12\0\b\x05y4\x1a`\0à~Ït\0\0\0\x04¸\x14x`8\x12\0\b\x05y8\x1a`\0à~Ïq\0$\0\x04¸\x14x0!\0à~Ït\0\0\0\x04¸\x14x` \x12\0\b\x05y \x1a\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýoøu\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýoøüú3\0\b\0ô`\0à~Ïq\0$\0\x04¸\x14x0!\0à~Ïq\0\0\0<\x11\0\bE @\x01<\x19 \0@\x11\0\b¸@\x19 \0@\x11\0\b¢¸@\x19 \0à~Ïq\0\0\0<\x11\0\b¸<\x19 \0@\x11\0\b¤¸@\x19 \0à~Ïq\0\0\0<\x11\0\b¤¸<\x19 \0à~àxÏq\0\0\0<\x11\0\b¸<\x19 \0@\x11\0\b¦¸@\x19 \0à~Ïq\0\0\0<\x11\0\b¦¸<\x19 \0à~àxÏq\0\0\0<\x11\0\b¸¸<\x19 \0@\x11\0\b®¸¯¸@\x19 \0à~Ït\0 \0\x04¸\x14x`\0\x1a`\0à~àxÏt\0\0\0\x04¸\x14x`L\x12\0\b&xL\x1a \0à~Ït\0\0\0\x04¸\x14x`\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýp\0G\x0e\x04\x01ü\0\0\0\0ý\0\0\0ý\0\0\0\x02\0\0\0\0\0áÇÌýp\0[üúx4\0\b\0ôL\x12\0\b\x05yL\x1a`\0à~Ïs\00\x04\0 \x13\0?\x05è\x1e8`X`\x02ðXaà\x7f"¸Ïp\0¼\0\0 \x10\0\b Eà\x7fo \v\0Ïq\00'\0àÊ \x0f\0\0\0\x03
ò!\r\bE\0Ïp\0@¨\x04"x\x10xà~àx\0Ù\bt$\x10\x10 ¤!\x10\0 \x0f\x06 ,^[àxȸ\x0e \x0f\0\0\0\x02PqÊ \0à\x7fÊ E\0\0\0\0\x01\0\x02\0\x01\0ÿ\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýp\b\x17\x0e\x04\x01ü\0\0\0\0U\0\0\0U\0\0\0\x02\0\0\0\0\0áÇÌýp\b-üRl5\0\b\0L\0\0\0\0\0\0\0\0\0\0\0\0>þ\x0eþþPþ>þ°ýþòý\0\0\0\0\0\0\0\02\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýp\vþ\x0e\x04\x01ü\0\0\0\0\r\0\0\0\r\0\0\0\x02\0\0\0\0\0áÇÌýp\f\x13ü
\0\0\0@\0\x04\x02\x03\r\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýp\x0fæ\x0e\x04\x01ü\0\0\0\0\r\0\0\0\r\0\0\0\x02\0\0\0\0\0áÇÌýp\x0fúü
\0\x01\0\b\0\x04\x02\x03\r.\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýp\x13Í\x0e\x04\x01ü\0\0\0\0\r\0\0\0\r\0\0\0\x02\0\0\0\0\0áÇÌýp\x13áü
\0\x04\00\0\x04\x14\x01\0\b\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýp\x17µ\x0e\x04\x01ü\0\0\0\0\f\0\0\0\f\0\0\0\x02\0\0\0\0\0áÇÌýp\x17Èü \0\0\0@\0\x03\x02\x03\r\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýp^[\x0e\x04\x01ü\0\0\0\0S\0\0\0S\0\0\0\x02\0\0\0\0\0áÇÌýp^[²/üP\0\0\0\0\0\0\0\0\0-1\x01ÿþ\x0fþÛÿ{\x01@ú\x1a
\a\x06\b\x05\a\a\a
\a\x06\x04\x06
¤ ¸Ì
\x04\0\x01À\v\x14\b\0\r\0\x1e\0¸\vd\x19ȯ¨aÐ\a\x04\0\vZ\x04C³|\0\0\0\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýp\x1fy\x0f\x04\0\x01/ü\0\0\0\x04\0\0\0\x04\0\0\0\x03\0\0\0\0\0áÇÌýp#bÿ\x02\x19\0\0\0\0\x05\0\0\0\x05\0\0\0\x02\0\0\0\0\0áÇÌýp#w\x11ü\x02\0\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýp'H\x0e\x04\x01\x11ü\0\0\0\0\x7f\0\0\0\x7f\0\0\0\x02\0\0\0\0\0áÇÌýp']`ü|\x01\x01\x01ßßÚN\0\0\0\0«¿ÄÉÎÓØÝâçìñö\0\0\0ìîðòôöøúüþ\0\x02\x04\x06\b
\x03¸\v\0,\x012\x14\x1a\0\0 \0\x01\0\x03\0\x01\0\x02\0\0\x03\0 \0\x01\0\x03\0\x01\0\x05\0\0\x03\x14\x01\0
\0\0\x03\x14\x01\0
\0\0\x03\x14\x01\0
\0\0\x03\x14\x01\0
\0\0\x03\x14\x01\0
\0\0\x03\x14\x01\0
\0\0\x03\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýp+1\x0e\x04\x01`ü\0\0\0\0\x05\0\0\0\x05\0\0\0\x02\0\0\0\0\0áÇÌýp+K\x11ü\x02\0\x02\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýpaò\x0e\x04\x02\x11ü\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌýpb0\x03\f\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýp\x0e\x04\x02\x03\f\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌýp¥\x03\x10\0\0\0\0\x0e\0\0\0\x0e\0\0\0\x03\0\0\0\0\0áÇÌýpx\x0e\f\x01\x03\x10\0ÿþ\x0fþÛÿ{\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌýpÅ\x01\x10\0\0\0\0\x0e\0\0\0\x0e\0\0\0\x03\0\0\0\0\0áÇÌýp `\x0e\f\x01\x01\x10\0\x06\0\x05\x06\x02\0\0\x05\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌýp ¤ \x10\0\0\0\0\f\0\0\0\f\0\0\0\x03\0\0\0\0\0áÇÌýp¤J\x0e
\x01 \x10\0Dz\aý\f\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌýp¤¨\x05\x10\0\0\0\0\r\0\0\0\r\0\0\0\x03\0\0\0\0\0áÇÌýp¨3\x0e\v\x01\x05\x10\0ý\x03`\x05\0\x05\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌýp¨J#\f\0\0\0\0 \0\0\0 \0\0\0\x03\0\0\0\0\0áÇÌýp¬\x19\x0e\a\x02#\f\0\0\x1f\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌýp¬)\x14\f\0\0\0\0þ\0\0\0þ\0\0\0\x03\0\0\0\0\0áÇÌýp»½\x0eü\x01\x14\f\0Bluemoon Universal Bluetooth Host Controller\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌýp»Ù%\f\0\0\0\0\b\0\0\0\b\0\0\0\x03\0\0\0\0\0áÇÌýp¿¯\x0e\x06\x01%\f\0`\0\0\0\0\x04\0\0\0\x04\0\0\0\x02\0\0\0\0\0áÇÌýp¿Á\x05\f\x01\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýpÃ\x0e\x04\x01\x05\f\0\0\0\0\x05\0\0\0\x05\0\0\0\x02\0\0\0\0\0áÇÌýpÃ¥\x16\f\x02\0}\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýpÇ~\x0e\x04\x01\x16\f\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌýpÇ^[\f\0\0\0\0
\0\0\0
\0\0\0\x03\0\0\0\0\0áÇÌýpËf\x0e\b\x02^[\f\0\0\b\x12\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌýpËtF\f\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌýpÏM\x0e\x05\x02F\f\0\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌýpÏ[\x02 \0\0\0\0 \0\0\0 \0\0\0\x03\0\0\0\0\0áÇÌýpÓ5\x0e\a\x01\x02 \0^[\0\a\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌýpÓC\x03 \0\0\0\0\x0e\0\0\0\x0e\0\0\0\x03\0\0\0\0\0áÇÌýp×\x1e\x0e\f\x01\x03 \0\x01\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌýp×,\a \0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌýpÛ\x06\x0e\x05\x01\a \0 \0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌýpÛ\x14\x0f \0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌýpÞî\x0e\x05\x01\x0f \0 \0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌýpÞü\x1c \0\0\0\0\x0e\0\0\0\x0e\0\0\0\x03\0\0\0\0\0áÇÌýpâÖ\x0e\f\x01\x1c \0ÿÿÿ\x1f\0\0\0\0\0\0\0\v\0\0\0\v\0\0\0\x02\0\0\0\0\0áÇÌýpâä\x01\f\bÿÿûÿ\aø¿=\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýpæ½\x0e\x04\x01\x01\f\0\0\0\0\v\0\0\0\v\0\0\0\x02\0\0\0\0\0áÇÌýpæÊ\x01 \b\x1f\0\0\0\0\0\0\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýpê§\x0e\x04\x01\x01 \0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌýpêµ\x02\x10\0\0\0\0F\0\0\0F\0\0\0\x03\0\0\0\0\0áÇÌýpòu\x0eD\x01\x02\x10\0ÿÿû\x03Îÿïÿÿ?ÿó\x0fèþ?÷ÿ\x1c\0\0\0a÷ÿÿ\x7f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ô\0\0\0ô\0\0\0\x02\0\0\0\0\0áÇÌýpòR\fñ\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýpö]\x0e\x04\x01R\f\0\0\0\0\x04\0\0\0\x04\0\0\0\x02\0\0\0\0\0áÇÌýpöjE\f\x01\x02\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýpúF\x0e\x04\x02E\f\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌýpúSX\f\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌýpþ.\x0e\x05\x01X\f\0
\0\0\0\x04\0\0\0\x04\0\0\0\x02\0\0\0\0\0áÇÌýpþ:\x04\x10\x01\x01\0\0\0\x10\0\0\0\x10\0\0\0\x03\0\0\0\0\0áÇÌýq\x02\x15\x0e\x0e\x01\x04\x10\0\x01\0\0\0\0\0\0\0\0\0\0\0\0
\0\0\0
\0\0\0\x02\0\0\0\0\0áÇÌýq\x024\x12\f\a\0\0\0\0\0\0\x01\0\0\0\b\0\0\0\b\0\0\0\x03\0\0\0\0\0áÇÌýq\x05þ\x0e\x06\x01\x12\f\0\0\0\0\0\0\x05\0\0\0\x05\0\0\0\x02\0\0\0\0\0áÇÌýq\x06
\x0f\b\x02\a\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýq æ\x0e\x04\x01\x0f\b\0\0\0\0#\0\0\0#\0\0\0\x02\0\0\0\0\0áÇÌýq ó\b \x1f\x02\x01\b\x02
\x18\bBluemoon Universal Blue\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýq\rÍ\x0e\x04\x01\b \0\0\0\0\x04\0\0\0\x04\0\0\0\x02\0\0\0\0\0áÇÌýq\x0e \x04\x10\x01\x01\0\0\0\x10\0\0\0\x10\0\0\0\x03\0\0\0\0\0áÇÌýq\x11«\x0e\x0e\x01\x04\x10\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\0\0\x05\0\0\0\x02\0\0\0\0\0áÇÌýq\x11¸\x18\f\x02\0 \0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýq\x15\x0e\x04\x02\x18\f\0\0\0\0
\0\0\0
\0\0\0\x02\0\0\0\0\0áÇÌýq\x15\r\f\a\0\0\0\0\0\0\x01\0\0\0
\0\0\0
\0\0\0\x03\0\0\0\0\0áÇÌýq\x19x\x0e\b\x01\r\f\0\x05\0\0\0\0\0\0û\0\0\0û\0\0\0\x02\0\0\0\0\0áÇÌýq\x19\x13\føubuntu-desktop-0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýq\x1da\x0e\x04\x01\x13\f\0\0\0\0\v\0\0\0\v\0\0\0\x02\0\0\0\0\0áÇÌýq\0\x01\f\bÿÿûÿ\aø¿=\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýqc\x0e\x04\x01\x01\f\0\0\0\0\x04\0\0\0\x04\0\0\0\x02\0\0\0\0\0áÇÌýqxV\f\x01\x01\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýqM\x0e\x04\x01V\f\0\0\0\0\x04\0\0\0\x04\0\0\0\x02\0\0\0\0\0áÇÌýqbE\f\x01\x02\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýq¢2\x0e\x04\x02E\f\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌýq¢CX\f\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌýq¦\x1a\x0e\x05\x01X\f\0
\0\0\0\x05\0\0\0\x05\0\0\0\x02\0\0\0\0\0áÇÌýq¦*\x0f\b\x02\a\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýqª
\x0e\x04\x01\x0f\b\0\0\0\0\x06\0\0\0\x06\0\0\0\x02\0\0\0\0\0áÇÌýqª&$\f\x03\0\x01n\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýqï\x0e\x04\x02$\f\0\0\0\0\x04\0\0\0\x04\0\0\0\x02\0\0\0\0\0áÇÌýq®!\x1a\f\x01\x02\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýq±à\x0e\x04\x02\x1a\f\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌýqº\x16\x14\f\0\0\0\0þ\0\0\0þ\0\0\0\x03\0\0\0\0\0áÇÌýqÉC\x0eü\x01\x14\f\0ubuntu-desktop-0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌýqÉ\U\f\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌýqÍ)\x0e\x05\x01U\f\0\x01\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌýqÍ;\x19\f\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌýqÑ\x11\x0e\x05\x02\x19\f\0\x02\0\0\0ô\0\0\0ô\0\0\0\x02\0\0\0\0\0áÇÌýqÑ R\fñ\0\x11 ubuntu-desktop-0\x02
\x13\x03-\x11\x12\x11\x1f\x11\x1e\x11
\x11\v\x11\f\x11\x0e\x11\x03\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌýqÔú\x0e\x04\x01R\f\0\0\0\0
\0\0\0
\0\0\0\x02\0\0\0\0\0áÇÌþø\x0eD\x12\f\aß^\b¾÷x\0\0\0\0\b\0\0\0\b\0\0\0\x03\0\0\0\0\0áÇÌþø\x13m\x0e\x06\x01\x12\f\0\0\0\0\0\0\b\0\0\0\b\0\0\0\x02\0\0\0\0\0áÇÌÿZ\x1e3\x01\x04\x053\b\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÿZ ö\x0f\x04\0\x02\x01\x04\0\0\0\f\0\0\0\f\0\0\0\x03\0\0\0\0\0áÇÌÿp\x126\x04
ß^\b¾÷x\x04\x04$\x01\0\0\0
\0\0\0
\0\0\0\x02\0\0\0\0\0áÇÌÿp\x12U \x04\aß^\b¾÷x\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÿp\x16\x19\x0f\x04\0\x01 \x04\0\0\0
\0\0\0
\0\0\0\x03\0\0\0\0\0áÇÌÿr\a\x12\b\0ß^\b¾÷x\0\0\0\0\r\0\0\0\r\0\0\0\x03\0\0\0\0\0áÇÌÿs»¸\x03\v\0\0\x01ß^\b¾÷x\x01\0\0\0\0\x05\0\0\0\x05\0\0\0\x02\0\0\0\0\0áÇÌÿs¼\x14^[\x04\x02\0\x01\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÿs¿\x0f\x04\0\x01^[\x04\0\0\0\x05\0\0\0\x05\0\0\0\x03\0\0\0\0\0áÇÌÿtà±^[\x03\0\x01\x05\0\0\0\r\0\0\0\r\0\0\0\x03\0\0\0\0\0áÇÌÿvo\x1f\v\v\0\0\x01¿þþÿy\0\0\0\x06\0\0\0\x06\0\0\0\x02\0\0\0\0\0áÇÌÿvo;\x1c\x04\x03\0\x01\x01\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÿvs\x02\x0f\x04\0\x01\x1c\x04\0\0\0\x0f\0\0\0\x0f\0\0\0\x03\0\0\0\0\0áÇÌÿwÿ#\r\0\0\x01\x01\0\x01\0\0\0\0\0\0\0\0\0\0\r\0\0\0\r\0\0\0\x02\0\0\0\0\0áÇÌÿw\x1c\x19\x04
ß^\b¾÷x\x02\0\0\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÿwà\x0f\x04\0\x01\x19\x04\0\0\x01\x01\0\0\x01\x01\0\0\0\x03\0\0\0\0\0áÇÌÿyõp\aÿ\0ß^\b¾÷xHM1700\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x10\0\0\0\x10\0\0\0\x05\0\0\0\0\0áÇÌÿ{hþ\0!\f\0\b\0\x01\0\x02\x02\x04\0\x01\0@\0\0\0\0\x14\0\0\0\x14\0\0\0\x04\0\0\0\0\0áÇÌÿ{i\x1f\0\x01\x10\0\f\0\x01\0\x03\x02\b\0@\0@\0\x01\0\0\0\0\0\0\x0e\0\0\0\x0e\0\0\0\x04\0\0\0\0\0áÇÌÿ{i%\0\x01
\0\x06\0\x01\0
\x01\x02\0\x02\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿ|/È\x13\x05\x01\0\x01\x01\0\0\0\0\x14\0\0\0\x14\0\0\0\x05\0\0\0\0\0áÇÌÿ|'\0!\x10\0\f\0\x01\0\v\x01\b\0\x02\0\0\0\0\x02\0\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿ|0\x13\x05\x01\0\x01\x01\0\0\0\0\x14\0\0\0\x14\0\0\0\x04\0\0\0\0\0áÇÌÿ|J\0\x01\x10\0\f\0\x01\0\x03\x02\b\0@\0@\0\0\0\0\0\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÌÿ|O\0\x01\f\0\b\0\x01\0\x04\x02\x04\0@\0\0\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿ}\x06\x13\x05\x01\0\x01\x01\0\0\0\0\x14\0\0\0\x14\0\0\0\x05\0\0\0\0\0áÇÌÿ}Ëä\0!\x10\0\f\0\x01\0\x04\x03\b\0@\0\0\0\x01\x02@\0\0\0\0\x16\0\0\0\x16\0\0\0\x04\0\0\0\0\0áÇÌÿ}Ëþ\0\x01\x12\0\x0e\0\x01\0\x05\x03
\0@\0\0\0\0\0\x01\x02@\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿ}ÍÅ\x13\x05\x01\0\x01\x01\0\0\0\0\x12\0\0\0\x12\0\0\0\x05\0\0\0\0\0áÇÌÿ~-\0!\x0e\0
\0\x01\0\x05\x02\x06\0@\0\0\0\0\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿ~/z\x13\x05\x01\0\x01\x01\0\0\0\0#\0\0\0#\0\0\0\x05\0\0\0\0\0áÇÌÿ~ð_\0!\x1f\0^[\0@\0\x06\0\0\0\x165\x03\x19\x11\x1f\005\f \0\x01 \0\x04 \0 \x03\x11\0\0\0\0H\0\0\0H\0\0\0\x04\0\0\0\0\0áÇÌÿ~ñ$\0\x01D\0@\0@\0\a\0\0\0;\00515/ \0\x015\x06\x19\x11\x1f\x19\x12\x03 \0\x045\f5\x03\x19\x01\05\x05\x19\0\x03\b\r \0 5\b5\x06\x19\x11\x1e \x01\x05 \x03\x11\b psR0\0\0\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿ\x17Ç\x13\x05\x01\0\x01\x01\0\0\0\0+\0\0\0+\0\0\0\x05\0\0\0\0\0áÇÌÿwy\0!'\0#\0@\0\x06\0\x01\0\x1e5\x03\x19\x11\x1f\005\f \0\x01 \0\x04 \0 \x03\x11\b psR0\0\0\0\0\0\0\x13\0\0\0\x13\0\0\0\x04\0\0\0\0\0áÇÌÿwÑ\0\x01\x0f\0\v\0@\0\a\0\x01\0\x06\0\x03 \0\0\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÛ\x14\x13\x05\x01\0\x01\x01\0\0\0\0\x10\0\0\0\x10\0\0\0\x05\0\0\0\0\0áÇÌÿ:P\0!\f\0\b\0\x01\0\x06\x04\x04\0@\0@\0\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÌÿ:q\0\x01\f\0\b\0\x01\0\a\x04\x04\0@\0@\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿ\x03ø\x13\x05\x01\0\x01\x01\0\0\0\0\b\0\0\0\b\0\0\0\x03\0\0\0\0\0áÇÌÿu3\x17\x06ß^\b¾÷x\0\0\0 \0\0\0 \0\0\0\x02\0\0\0\0\0áÇÌÿuò\f\x04\x06ß^\b¾÷x\0\0\0\f\0\0\0\f\0\0\0\x03\0\0\0\0\0áÇÌÿy\x18\x0e
\x01\f\x04\0ß^\b¾÷x\0\0\0\v\0\0\0\v\0\0\0\x03\0\0\0\0\0áÇÌÿ82 ß^\b¾÷x\x03\0\x05\0\0\0\b\0\0\0\b\0\0\0\x03\0\0\0\0\0áÇÌÿ<r1\x06ß^\b¾÷x\0\0\0\f\0\0\0\f\0\0\0\x02\0\0\0\0\0áÇÌÿ<¹+\x04 ß^\b¾÷x\x01\0\x05\0\0\0\f\0\0\0\f\0\0\0\x03\0\0\0\0\0áÇÌÿ@X\x0e
\x01+\x04\0ß^\b¾÷x\0\0\0\f\0\0\0\f\0\0\0\x03\0\0\0\0\0áÇÌÿwx3
ß^\b¾÷x[Û\a\0\0\0\0 \0\0\0 \0\0\0\x02\0\0\0\0\0áÇÌÿx\x04-\x04\x06ß^\b¾÷x\0\0\0\f\0\0\0\f\0\0\0\x03\0\0\0\0\0áÇÌÿ{N\x0e
\x01-\x04\0ß^\b¾÷x\0\0\0 \0\0\0 \0\0\0\x03\0\0\0\0\0áÇÌÿ]\x176\a\x05ß^\b¾÷x\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÿ\f\x05\x04\0\0\x01\x13\0\0\x01\x01\0\0\x01\x01\0\0\0\x03\0\0\0\0\0áÇÌÿ\aÒ/ÿ\x01ß^\b¾÷x\x01\0\x04\x04$æ!Å\a HM1700\v\x03\b\x11\x1e\x11\v\x11\x0e\x11\x01\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÌÿ¼þ¼\x02\x04\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÿ½\x05`\x0e\x04\x02\x02\x04\0\0\0\0\x10\0\0\0\x10\0\0\0\x02\0\0\0\0\0áÇÌÿ½\x10\x05\x04\rß^\b¾÷x\x18Ì\x01\0æ¡\x01\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÿ½\x15\0\x0f\x04\0\x01\x05\x04\0\0\0\r\0\0\0\r\0\0\0\x03\0\0\0\0\0áÇÌÿÆÙ\x12\x03\v\0\0\x01ß^\b¾÷x\x01\0\0\0\0\x05\0\0\0\x05\0\0\0\x02\0\0\0\0\0áÇÌÿÆÙi^[\x04\x02\0\x01\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÿÆÜè\x0f\x04\0\x01^[\x04\0\0\0\x05\0\0\0\x05\0\0\0\x03\0\0\0\0\0áÇÌÿÇ\x04\x05^[\x03\0\x01\x05\0\0\0\r\0\0\0\r\0\0\0\x03\0\0\0\0\0áÇÌÿÇ\x13¦\v\v\0\0\x01¿þþÿy\0\0\0\x06\0\0\0\x06\0\0\0\x02\0\0\0\0\0áÇÌÿÇ\x13¼\x1c\x04\x03\0\x01\x01\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÿÇ\x17\x0f\x04\0\x01\x1c\x04\0\0\0\x0f\0\0\0\x0f\0\0\0\x03\0\0\0\0\0áÇÌÿÇN0#\r\0\0\x01\x01\0\x01\0\0\0\0\0\0\0\0\0\0\r\0\0\0\r\0\0\0\x02\0\0\0\0\0áÇÌÿÇNM\x19\x04
ß^\b¾÷x\x02\0\0\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÿÇR\x18\x0f\x04\0\x01\x19\x04\0\0\x01\x01\0\0\x01\x01\0\0\0\x03\0\0\0\0\0áÇÌÿÇ«ü\aÿ\0ß^\b¾÷xHM1700\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\0\0\x05\0\0\0\x02\0\0\0\0\0áÇÌÿǬ\x14\x11\x04\x02\0\x01\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÿǯä\x0f\x04\0\x01\x11\x04\0\0\0\b\0\0\0\b\0\0\0\x03\0\0\0\0\0áÇÌÿdzÍ\x17\x06ß^\b¾÷x\0\0\0 \0\0\0 \0\0\0\x02\0\0\0\0\0áÇÌÿÇ´\f\f\x04\x06ß^\b¾÷x\0\0\0\f\0\0\0\f\0\0\0\x03\0\0\0\0\0áÇÌÿÇ·´\x0e
\x01\f\x04\0ß^\b¾÷x\0\0\0\b\0\0\0\b\0\0\0\x03\0\0\0\0\0áÇÌÿÇ»1\x06ß^\b¾÷x\0\0\0\f\0\0\0\f\0\0\0\x02\0\0\0\0\0áÇÌÿÇ»É+\x04 ß^\b¾÷x\x01\0\x03\0\0\0\f\0\0\0\f\0\0\0\x03\0\0\0\0\0áÇÌÿÇ¿\x0e
\x01+\x04\0ß^\b¾÷x\0\0\0\v\0\0\0\v\0\0\0\x03\0\0\0\0\0áÇÌÿÇÏ\x182 ß^\b¾÷x\x03\0\x02\0\0\0\f\0\0\0\f\0\0\0\x03\0\0\0\0\0áÇÌÿË£¢3
ß^\b¾÷x
P\x0e\0\0\0\0 \0\0\0 \0\0\0\x02\0\0\0\0\0áÇÌÿË·¿,\x04\x06ß^\b¾÷x\0\0\0\f\0\0\0\f\0\0\0\x03\0\0\0\0\0áÇÌÿË»\v\x0e
\x01,\x04\0ß^\b¾÷x\0\0\0 \0\0\0 \0\0\0\x03\0\0\0\0\0áÇÌÿÓ-R6\a\0ß^\b¾÷x\0\0\0\x19\0\0\0\x19\0\0\0\x03\0\0\0\0\0áÇÌÿÓo¹\x18\x17ß^\b¾÷x\x7fM4Ðr\x13÷ÈÉmuæÙ\x04\0\0\0\x05\0\0\0\x05\0\0\0\x03\0\0\0\0\0áÇÌÿÓs\x06\x03\0\0\x01\0\0\0\x06\0\0\0\x06\0\0\0\x02\0\0\0\0\0áÇÌÿÓs¶\x13\x04\x03\0\x01\x01\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÿÓw\x0f\x04\0\x01\x13\x04\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÿÔ\x1f\b\x04\0\0\x01\x01\0\0\0\x0e\0\0\0\x0e\0\0\0\x04\0\0\0\0\0áÇÌÿÔ\x1f¦\0\x01
\0\x06\0\x01\0
\x01\x02\0\x02\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÔ6í\x13\x05\x01\0\x01\x01\0\0\0\0\x14\0\0\0\x14\0\0\0\x05\0\0\0\0\0áÇÌÿÔ8Y\0!\x10\0\f\0\x01\0\v\x01\b\0\x02\0\0\0\0\x02\0\0\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÌÿÔ8t\0\x01\f\0\b\0\x01\0\x02\x02\x04\0\x01\0@\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÔJi\x13\x05\x01\0\x01\x01\0\0\0\0\x14\0\0\0\x14\0\0\0\x05\0\0\0\0\0áÇÌÿÔKà\0!\x10\0\f\0\x01\0\x03\x02\b\0B\0@\0\0\0\0\0\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÌÿÔKø\0\x01\f\0\b\0\x01\0\x04\x03\x04\0B\0\0\0\0\0\0\x14\0\0\0\x14\0\0\0\x05\0\0\0\0\0áÇÌÿÔU³\0!\x10\0\f\0\x01\0\x04\x02\b\0@\0\0\0\x01\x02@\0\0\0\0\x16\0\0\0\x16\0\0\0\x04\0\0\0\0\0áÇÌÿÔUÆ\0\x01\x12\0\x0e\0\x01\0\x05\x02
\0B\0\0\0\0\0\x01\x02@\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÔ]ý\x13\x05\x01\0\x01\x01\0\0\0\0\x12\0\0\0\x12\0\0\0\x05\0\0\0\0\0áÇÌÿÔ_r\0!\x0e\0
\0\x01\0\x05\x03\x06\0@\0\0\0\0\0\0\0\0\x1c\0\0\0\x1c\0\0\0\x04\0\0\0\0\0áÇÌÿÔ_\0\x01\x18\0\x14\0B\0\x06\0\0\0\x0f5\x03\x19\x01\0ÿÿ5\x05
\0\0ÿÿ\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÔeÌ\x13\x05\x01\0\x01\x01\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÔul\x13\x05\x01\0\x01\x01\0\0\0\0H\0\0\0H\0\0\0\x05\0\0\0\0\0áÇÌÿÔÙ\0!D\0@\0@\0\a\0\0\0;\066\x01\a6\0R \0\0
\0\x01\0\x01 \0\x015 \x19\x11\b\x19\x111\x19\x12\x03 \0\x045\f5\x03\x19\x01\05\x05\x19\0\x03\b\x01 \0\x055\x03\x19\x10\x02 \x02\06\0\0\0\x1e\0\0\0\x1e\0\0\0\x04\0\0\0\0\0áÇÌÿÔÙë\0\x01\x1a\0\x16\0B\0\x06\0\x01\0\x115\x03\x19\x01\0ÿÿ5\x05
\0\0ÿÿ\x02\06\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÔê\x13\x05\x01\0\x01\x01\0\0\0\0H\0\0\0H\0\0\0\x05\0\0\0\0\0áÇÌÿÔí\f\0!D\0@\0@\0\a\0\x01\0;\06\0 5\b5\x06\x19\x11\b \x01\x02 \x01\0%\fHSP service\0 \x03\x02(\x016\0P \0\0
\0\x01\0\x02 \0\x015\x06\x19\x11\x1e\x19\x02\0l\0\0\0\x1e\0\0\0\x1e\0\0\0\x04\0\0\0\0\0áÇÌÿÔí>\0\x01\x1a\0\x16\0B\0\x06\0\x02\0\x115\x03\x19\x01\0ÿÿ5\x05
\0\0ÿÿ\x02\0l\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÕ\rº\x13\x05\x01\0\x01\x01\0\0\0\0H\0\0\0H\0\0\0\x05\0\0\0\0\0áÇÌÿÕ\x0f.\0!D\0@\0@\0\a\0\x02\0;\06\x12\x03 \0\x045\f5\x03\x19\x01\05\x05\x19\0\x03\b\x02 \0\x055\x03\x19\x10\x02 \0 5\b5\x06\x19\x11\x1e \x01\x05 \x01\0%\fHFP servi\x02\0¢\0\0\0\x1e\0\0\0\x1e\0\0\0\x04\0\0\0\0\0áÇÌÿÕ\x0fu\0\x01\x1a\0\x16\0B\0\x06\0\x03\0\x115\x03\x19\x01\0ÿÿ5\x05
\0\0ÿÿ\x02\0¢\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÕ!R\x13\x05\x01\0\x01\x01\0\0\0\0H\0\0\0H\0\0\0\x05\0\0\0\0\0áÇÌÿÕ,y\0!D\0@\0@\0\a\0\x03\0;\06ce\0 \x03\x11 \0^[6\0\ \0\0
\0\x01\0\x03 \0\x015\x03\x19\x11\v \0\x045\x105\x06\x19\x01\0 \0\x195\x06\x19\0\x19 \x01\x02 \0\x055\x03\x02\0Ø\0\0\0\x1e\0\0\0\x1e\0\0\0\x04\0\0\0\0\0áÇÌÿÕ,É\0\x01\x1a\0\x16\0B\0\x06\0\x04\0\x115\x03\x19\x01\0ÿÿ5\x05
\0\0ÿÿ\x02\0Ø\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÕ<¤\x13\x05\x01\0\x01\x01\0\0\0\0B\0\0\0B\0\0\0\x05\0\0\0\0\0áÇÌÿÕ@\x0e\0!>\0:\0@\0\a\0\x04\05\02\x19\x10\x02 \0 5\b5\x06\x19\x11\r \x01\x02 \x01\0%\x17Advanced audio service\0 \x03\x11 \0\x01\0\0\0\0\x1c\0\0\0\x1c\0\0\0\x04\0\0\0\0\0áÇÌÿÖ^l\0\x01\x18\0\x14\0B\0\x06\0\x05\0\x0f5\x03\x19\x12\0ÿÿ5\x05
\0\0ÿÿ\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÖmT\x13\x05\x01\0\x01\x01\0\0\0\0G\0\0\0G\0\0\0\x05\0\0\0\0\0áÇÌÿÖÚ=\0!C\0?\0@\0\a\0\x05\0:\055D6\0A \0\0
\0\x01\0\0 \0\x015\x03\x19\x12\0 \0\x055\x03\x19\x10\x02 \x02\0 \x01\x03 \x02\x01 \0\x0f \x02\x02 \0\0 \x02\x03 \0\0\x02\05\0\0\0\x1e\0\0\0\x1e\0\0\0\x04\0\0\0\0\0áÇÌÿÖÚ\0\x01\x1a\0\x16\0B\0\x06\0\x06\0\x115\x03\x19\x12\0ÿÿ5\x05
\0\0ÿÿ\x02\05\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÖêW\x13\x05\x01\0\x01\x01\0\0\0\0!\0\0\0!\0\0\0\x05\0\0\0\0\0áÇÌÿÖñ§\0!\x1d\0\x19\0@\0\a\0\x06\0\x14\0\x11 \x02\x04(\x01 \x02\x05 \0\x01 \x01 \0\x01\0\0\0\0\x1c\0\0\0\x1c\0\0\0\x04\0\0\0\0\0áÇÌÿØ\v\0\0\x01\x18\0\x14\0B\0\x06\0\a\0\x0f5\x03\x19\x11\x1eÿÿ5\x05
\0\0ÿÿ\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿØ\x1aü\x13\x05\x01\0\x01\x01\0\0\0\0G\0\0\0G\0\0\0\x05\0\0\0\0\0áÇÌÿØ\x1cp\0!C\0?\0@\0\a\0\a\0:\055S6\0P \0\0
\0\x01\0\x02 \0\x015\x06\x19\x11\x1e\x19\x12\x03 \0\x045\f5\x03\x19\x01\05\x05\x19\0\x03\b\x02 \0\x055\x03\x19\x10\x02 \0 5\x02\05\0\0\0\x1e\0\0\0\x1e\0\0\0\x04\0\0\0\0\0áÇÌÿØ\x1c²\0\x01\x1a\0\x16\0B\0\x06\0\b\0\x115\x03\x19\x11\x1eÿÿ5\x05
\0\0ÿÿ\x02\05\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿØ.\x13\x05\x01\0\x01\x01\0\0\0\00\0\0\00\0\0\0\x05\0\0\0\0\0áÇÌÿØ/ø\0!,\0(\0@\0\a\0\b\0#\0 \b5\x06\x19\x11\x1e \x01\x05 \x01\0%\fHFP service\0 \x03\x11 \0^[\0\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÌÿØ1Z\0\x01\f\0\b\0\x01\0\x02\x04\x04\0\x03\0A\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿØB
\x13\x05\x01\0\x01\x01\0\0\0\0\x14\0\0\0\x14\0\0\0\x05\0\0\0\0\0áÇÌÿØC\0!\x10\0\f\0\x01\0\x03\x04\b\0C\0A\0\0\0\0\0\0\0\0\x14\0\0\0\x14\0\0\0\x04\0\0\0\0\0áÇÌÿØC\0\x01\x10\0\f\0\x01\0\x04\x05\b\0C\0\0\0\x01\x02õ\x03\0\0\0\x14\0\0\0\x14\0\0\0\x05\0\0\0\0\0áÇÌÿØHb\0!\x10\0\f\0\x01\0\x04\x03\b\0A\0\0\0\x01\x02\0\x04\0\0\0\x16\0\0\0\x16\0\0\0\x04\0\0\0\0\0áÇÌÿØHy\0\x01\x12\0\x0e\0\x01\0\x05\x03
\0C\0\0\0\0\0\x01\x02\0\x04\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿØU\x13\x05\x01\0\x01\x01\0\0\0\0\x12\0\0\0\x12\0\0\0\x05\0\0\0\0\0áÇÌÿØW\b\0!\x0e\0
\0\x01\0\x05\x05\x06\0A\0\0\0\0\0\0\0\0\f\0\0\0\f\0\0\0\x04\0\0\0\0\0áÇÌÿØW/\0\x01\b\0\x04\0C\0\x03?\x01\x1c\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿØYy\x13\x05\x01\0\x01\x01\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿØi^[\x13\x05\x01\0\x01\x01\0\0\0\0\f\0\0\0\f\0\0\0\x05\0\0\0\0\0áÇÌÿØj\0!\b\0\x04\0A\0\x03s\x01×\0\0\0\x16\0\0\0\x16\0\0\0\x04\0\0\0\0\0áÇÌÿØj±\0\x01\x12\0\x0e\0C\0\x03ï\x15\x11\x04ð\a\0ð\x03\0\ap\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿØ|¡\x13\x05\x01\0\x01\x01\0\0\0\0\x16\0\0\0\x16\0\0\0\x05\0\0\0\0\0áÇÌÿØ\0\0!\x12\0\x0e\0A\0\x01ï\x15\x11\x04à\a\0ÿ\0\0\aª\0\0\0\f\0\0\0\f\0\0\0\x04\0\0\0\0\0áÇÌÿØ\x19\0\x01\b\0\x04\0C\0\x13?\x01\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿØ\x02\x13\x05\x01\0\x01\x01\0\0\0\0\f\0\0\0\f\0\0\0\x05\0\0\0\0\0áÇÌÿØl\0!\b\0\x04\0A\0\x13s\x01]\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÌÿØ \0\x01\f\0\b\0C\0\x03ï ã\x05\x13p\0\0\0\x10\0\0\0\x10\0\0\0\x05\0\0\0\0\0áÇÌÿت
\0!\f\0\b\0\x01\0\x02\x04\x04\0\x01\0D\0\0\0\0\x14\0\0\0\x14\0\0\0\x04\0\0\0\0\0áÇÌÿت*\0\x01\x10\0\f\0\x01\0\x03\x04\b\0B\0D\0\0\0\0\0\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÌÿت0\0\x01\f\0\b\0\x01\0\x04\x06\x04\0D\0\0\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿØ«\x03\x13\x05\x01\0\x01\x01\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿØ»,\x13\x05\x01\0\x01\x01\0\0\0\0\x10\0\0\0\x10\0\0\0\x05\0\0\0\0\0áÇÌÿؽ\0!\f\0\b\0A\0\x01ï á\x05\x13ª\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿØ¿\x13\x13\x05\x01\0\x01\x01\0\0\0\0\x10\0\0\0\x10\0\0\0\x05\0\0\0\0\0áÇÌÿØÇV\0!\f\0\b\0A\0\x01ï ã\x05\x13ª\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÌÿØÇr\0\x01\f\0\b\0C\0\x03ï á\x05\x13p\0\0\0\r\0\0\0\r\0\0\0\x04\0\0\0\0\0áÇÌÿØÇv\0\x01 \0\x05\0C\0\x13ÿ\x01!y\0\0\0\x14\0\0\0\x14\0\0\0\x05\0\0\0\0\0áÇÌÿØÌB\0!\x10\0\f\0\x01\0\x04\x05\b\0B\0\0\0\x01\x02@\0\0\0\0\x16\0\0\0\x16\0\0\0\x04\0\0\0\0\0áÇÌÿØÌQ\0\x01\x12\0\x0e\0\x01\0\x05\x05
\0D\0\0\0\0\0\x01\x02@\0\0\0\0\x12\0\0\0\x12\0\0\0\x05\0\0\0\0\0áÇÌÿØÑ\x19\0!\x0e\0
\0\x01\0\x05\x06\x06\0B\0\0\0\0\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿØÖ
\x13\x05\x01\0\x01\x01\0\0\0\0\x18\0\0\0\x18\0\0\0\x05\0\0\0\0\0áÇÌÿØßÊ\0!\x14\0\x10\0A\0\x11ÿ\x17 AT+BRSF=27\r£\0\0\0\x1a\0\0\0\x1a\0\0\0\x04\0\0\0\0\0áÇÌÿØà\r\0\x01\x16\0\x12\0C\0\x13ï\x1d
+BRSF: 352
e\0\0\0\x12\0\0\0\x12\0\0\0\x04\0\0\0\0\0áÇÌÿØà\x15\0\x01\x0e\0
\0C\0\x13ï
OK
e\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿØâ;\x13\x05\x01\0\x01\x01\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿØæ"\x13\x05\x01\0\x01\x01\0\0\0\0 \0\0\0 \0\0\0\x05\0\0\0\0\0áÇÌÿØè\0!\x1c\0\x18\0B\0\x06\0\0\0\x135\x03\x19\x11\x1f\005 \0\x01 \0 \x03\x11\0\0\0\02\0\0\02\0\0\0\x04\0\0\0\0\0áÇÌÿØé\x05\0\x01.\0*\0D\0\a\0\0\0%\0"5 5\x1e \0\x015\x06\x19\x11\x1f\x19\x12\x03 \0 5\b5\x06\x19\x11\x1e \x01\x05 \x03\x11 \0\0\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿØù\x13\x05\x01\0\x01\x01\0\0\0\0\x17\0\0\0\x17\0\0\0\x05\0\0\0\0\0áÇÌÿÙ\x06Ñ\0!\x13\0\x0f\0A\0\x11ÿ\x15\x02AT+CIND=?\r£\0\0\0\0\0\0\0\0\0\x04\0\0\0\0\0áÇÌÿÙ\a1\0\x01\0\0C\0\x13ï\b\x01
+CIND: ("battchg",(0-5)),("signal",(0-5)),("service",(0,1)),("call",(0,1)),("callsetup",(0-3)),("callheld",(0-2)),("roam",(0,1))
e\0\0\0\x12\0\0\0\x12\0\0\0\x04\0\0\0\0\0áÇÌÿÙ\a9\0\x01\x0e\0
\0C\0\x13ï
OK
e\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÙ\bÊ\x13\x05\x01\0\x01\x01\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÙ\r*\x13\x05\x01\0\x01\x01\0\0\0\0\x10\0\0\0\x10\0\0\0\x05\0\0\0\0\0áÇÌÿÙ\x10\0!\f\0\b\0\x01\0\x06\x06\x04\0B\0D\0\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÌÿÙ\x10§\0\x01\f\0\b\0\x01\0\a\x06\x04\0B\0D\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÙ\x1cË\x13\x05\x01\0\x01\x01\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÙ ¼\x13\x05\x01\0\x01\x01\0\0\0\0\x16\0\0\0\x16\0\0\0\x05\0\0\0\0\0áÇÌÿÙ(\x10\0!\x12\0\x0e\0A\0\x11ÿ\x13\x02AT+CIND?\r£\0\0\0$\0\0\0$\0\0\0\x04\0\0\0\0\0áÇÌÿÙ(|\0\x01 \0\x1c\0C\0\x13ï1
+CIND: 5,5,1,0,0,0,0
e\0\0\0\x12\0\0\0\x12\0\0\0\x04\0\0\0\0\0áÇÌÿÙ(
\0\x01\x0e\0
\0C\0\x13ï
OK
e\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÙ,s\x13\x05\x01\0\x01\x01\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÙ?û\x13\x05\x01\0\x01\x01\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÙGË\x13\x05\x01\0\x01\x01\0\0\0\0\x1d\0\0\0\x1d\0\0\0\x05\0\0\0\0\0áÇÌÿÙ§\a\0!\x19\0\x15\0A\0\x11ÿ!\x02AT+CMER=3,0,0,1\r£\0\0\0\x12\0\0\0\x12\0\0\0\x04\0\0\0\0\0áÇÌÿÙ§o\0\x01\x0e\0
\0C\0\x13ï
OK
e\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÙ¹\f\x13\x05\x01\0\x01\x01\0\0\0\0\x17\0\0\0\x17\0\0\0\x05\0\0\0\0\0áÇÌÿÚ!^[\0!\x13\0\x0f\0A\0\x11ÿ\x15\x01AT+CCWA=1\r£\0\0\0\x12\0\0\0\x12\0\0\0\x04\0\0\0\0\0áÇÌÿÚ!{\0\x01\x0e\0
\0C\0\x13ï
OK
e\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÚ2,\x13\x05\x01\0\x01\x01\0\0\0\0#\0\0\0#\0\0\0\x05\0\0\0\0\0áÇÌÿÚ4\0!\x1f\0^[\0A\0\x11ÿ-\x01AT+BIA=0,0,1,1,1,1,0,\r£\0\0\0\x15\0\0\0\x15\0\0\0\x04\0\0\0\0\0áÇÌÿÚ4ô\0\x01\x11\0\r\0C\0\x13ï\x13
ERROR
e\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÚE³\x13\x05\x01\0\x01\x01\0\0\0\0\x18\0\0\0\x18\0\0\0\x05\0\0\0\0\0áÇÌÿÚH$\0!\x14\0\x10\0A\0\x11ÿ\x17\x01AT+CBC=100\r£\0\0\0\x15\0\0\0\x15\0\0\0\x04\0\0\0\0\0áÇÌÿÚHg\0\x01\x11\0\r\0C\0\x13ï\x13
ERROR
e\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÚY1\x13\x05\x01\0\x01\x01\0\0\0\0\x17\0\0\0\x17\0\0\0\x05\0\0\0\0\0áÇÌÿÚ[ \0!\x13\0\x0f\0A\0\x11ÿ\x15\x01AT+VGS=15\r£\0\0\0\x12\0\0\0\x12\0\0\0\x04\0\0\0\0\0áÇÌÿÚ[Ú\0\x01\x0e\0
\0C\0\x13ï
OK
e\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÚl¹\x13\x05\x01\0\x01\x01\0\0\0\0\x19\0\0\0\x19\0\0\0\x05\0\0\0\0\0áÇÌÿÚt\x11\0!\x15\0\x11\0A\0\x11ÿ\x19\x01AT+COPS=3,0\r£\0\0\0\x12\0\0\0\x12\0\0\0\x04\0\0\0\0\0áÇÌÿÚt¤\0\x01\x0e\0
\0C\0\x13ï
OK
e\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÚ\b\x13\x05\x01\0\x01\x01\0\0\0\0\x17\0\0\0\x17\0\0\0\x05\0\0\0\0\0áÇÌÿÚéD\0!\x13\0\x0f\0A\0\x11ÿ\x15\x01AT+CMEE=1\r£\0\0\0\x12\0\0\0\x12\0\0\0\x04\0\0\0\0\0áÇÌÿÚéº\0\x01\x0e\0
\0C\0\x13ï
OK
e\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿÛ\x018\x13\x05\x01\0\x01\x01\0\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÌÿïm~\0\x01\f\0\b\0\x01\0\x02\a\x04\0\x19\0B\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿï-\x13\x05\x01\0\x01\x01\0\0\0\0\x14\0\0\0\x14\0\0\0\x05\0\0\0\0\0áÇÌÿï"\0!\x10\0\f\0\x01\0\x03\a\b\0E\0B\0\0\0\0\0\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÌÿï6\0\x01\f\0\b\0\x01\0\x04\b\x04\0E\0\0\0\0\0\0\x14\0\0\0\x14\0\0\0\x05\0\0\0\0\0áÇÌÿï\0!\x10\0\f\0\x01\0\x04\a\b\0B\0\0\0\x01\x02 \x02\0\0\0\x16\0\0\0\x16\0\0\0\x04\0\0\0\0\0áÇÌÿï\0\x01\x12\0\x0e\0\x01\0\x05\a
\0E\0\0\0\0\0\x01\x02 \x02\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿï\x13\x05\x01\0\x01\x01\0\0\0\0\x12\0\0\0\x12\0\0\0\x05\0\0\0\0\0áÇÌÿï þ\0!\x0e\0
\0\x01\0\x05\b\x06\0B\0\0\0\0\0\0\0\0
\0\0\0
\0\0\0\x04\0\0\0\0\0áÇÌÿï¡L\0\x01\x06\0\x02\0E\0\0\x01\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿï¡ì\x13\x05\x01\0\x01\x01\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿï²\x15\x13\x05\x01\0\x01\x01\0\0\0\0\f\0\0\0\f\0\0\0\x05\0\0\0\0\0áÇÌÿï½Q\0!\b\0\x04\0B\0\x02\x01\x04\b\0\0\0\v\0\0\0\v\0\0\0\x04\0\0\0\0\0áÇÌÿï½\0\x01\a\0\x03\0E\0\x10\x02\x04\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿïÍo\x13\x05\x01\0\x01\x01\0\0\0\0\x14\0\0\0\x14\0\0\0\x05\0\0\0\0\0áÇÌÿïÑÒ\0!\x10\0\f\0B\0\x12\x02\x01\0\a\x06\0\0ÿÿ\x02Y\0\0\0\x16\0\0\0\x16\0\0\0\x04\0\0\0\0\0áÇÌÿïÒ\x10\0\x01\x12\0\x0e\0E\0 \x03\x04\x04\x01\0\a\x06\0\0!\x15\x025\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿïô\x13\x05\x01\0\x01\x01\0\0\0\0
\0\0\0
\0\0\0\x05\0\0\0\0\0áÇÌÿï÷è\0!\x06\0\x02\0B\0"\x03\0\0\0\v\0\0\0\v\0\0\0\x04\0\0\0\0\0áÇÌÿïø-\0\x01\a\0\x03\0E\00\x06\x04\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿð\b\x06\x13\x05\x01\0\x01\x01\0\0\0\0
\0\0\0
\0\0\0\x05\0\0\0\0\0áÇÌÿð\vo\0!\x06\0\x02\0B\02\x06\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÌÿð\v¬\0\x01\f\0\b\0\x01\0\x02 \x04\0\x19\0C\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿð^[\x13\x05\x01\0\x01\x01\0\0\0\0\x14\0\0\0\x14\0\0\0\x05\0\0\0\0\0áÇÌÿð\x1få\0!\x10\0\f\0\x01\0\x03 \b\0F\0C\0\0\0\0\0\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÌÿð\x1fû\0\x01\f\0\b\0\x01\0\x04
\x04\0F\0\0\0\0\0\0\x18\0\0\0\x18\0\0\0\x05\0\0\0\0\0áÇÌÿð#Ù\0!\x14\0\x10\0\x01\0\x04\b\f\0C\0\0\0\x01\x02ð\x03\x02\x02È\0\0\0\0\x16\0\0\0\x16\0\0\0\x04\0\0\0\0\0áÇÌÿð#æ\0\x01\x12\0\x0e\0\x01\0\x05\b
\0F\0\0\0\0\0\x01\x02ð\x03\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿð/\x14\x13\x05\x01\0\x01\x01\0\0\0\0\x12\0\0\0\x12\0\0\0\x05\0\0\0\0\0áÇÌÿð3y\0!\x0e\0
\0\x01\0\x05
\x06\0C\0\0\0\0\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿð6Ú\x13\x05\x01\0\x01\x01\0\0\0\0\x14\0\0\0\x14\0\0\0\x02\0\0\0\0\0áÇÌÿðiÛ(\x04\x11\0\x01@\x1f\0\0@\x1f\0\0
\0`\0\x01\x03\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÌÿðm\x0f\x04\0\x01(\x04\0\0\0\x05\0\0\0\x05\0\0\0\x03\0\0\0\0\0áÇÌÿð\x16^[\x03\0\x01\x01\0\0\0\x13\0\0\0\x13\0\0\0\x03\0\0\0\0\0áÇÌÿð¨#,\x11\0\x01\x01ß^\b¾÷x\x02\f\x02<\0<\0\x02\0\0\0\x17\0\0\0\x17\0\0\0\x04\0\0\0\0\0áÇÌÿð©¯\0\x01\x13\0\x0f\0C\0\x13ï\x17
+VGS=15
e\0\0\0\x17\0\0\0\x17\0\0\0\x04\0\0\0\0\0áÇÌÿð©»\0\x01\x13\0\x0f\0C\0\x13ï\x17
+VGM=15
e\0\0\03\0\0\03\0\0\0\x06\0\0\0\0\0áÇÌÿðÆÆ\x01\x010\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿðÇc\x13\x05\x01\0\x01\x01\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿðËK\x13\x05\x01\0\x01\x01\0\0\0\0\x05\0\0\0\x05\0\0\0\x03\0\0\0\0\0áÇÌÿðÏ2^[\x03\0\x01\x05\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÌÿþ«Ó\0\x01\f\0\b\0\x01\0\x06\v\x04\0B\0@\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÌÿþÁ\x13\x05\x01\0\x01\x01\0\0\0\0\x10\0\0\0\x10\0\0\0\x05\0\0\0\0\0áÇÌÿþÅò\0!\f\0\b\0\x01\0\a\v\x04\0B\0@\0\0\0\0\b\0\0\0\b\0\0\0\x03\0\0\0\0\0áÇÍ\01ÏÖ\x14\x06\0\0\x01\x02\x01\0\0\0\x06\0\0\0\x06\0\0\0\x02\0\0\0\0\0áÇÍ\x01 \x04h\x06\x04\x03\x01\x01\x13\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÍ\x01 \b;\x0f\x04\0\x01\x06\x04\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÍ\x01#«\x05\x04\0\x01\x01\x16\0\0\0\b\0\0\0\b\0\0\0\x03\0\0\0\0\0áÇÍ\x01#¢+\x14\x06\0\0\x01\0\0\0
^ permalink raw reply
* Re: [PATCH BlueZ 1/2 v2] android/hid: Fetch record before attempting to connect
From: Johan Hedberg @ 2013-11-01 9:16 UTC (permalink / raw)
To: Luiz Augusto von Dentz; +Cc: linux-bluetooth
In-Reply-To: <1383296324-20355-1-git-send-email-luiz.dentz@gmail.com>
Hi Luiz,
On Fri, Nov 01, 2013, Luiz Augusto von Dentz wrote:
> From: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
>
> This patch fetch HID record and store the information needed by uHID.
> ---
> v2: Fix including glib-helper.c twice
Both patches have been applied. Thanks.
Johan
^ permalink raw reply
* [PATCH BlueZ 2/2 v2] android/hid: Initial implementation for uHID
From: Luiz Augusto von Dentz @ 2013-11-01 8:58 UTC (permalink / raw)
To: linux-bluetooth
In-Reply-To: <1383296324-20355-1-git-send-email-luiz.dentz@gmail.com>
From: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
This patch reads data on interrupt channel and feeds into uHID.
Kernel will take care rest of the things and connects bt mouse
and keyboard:
[168988.557647] input: bluez-input-device as /devices/virtual/misc/uhid/input54
---
android/hid.c | 129 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 125 insertions(+), 4 deletions(-)
diff --git a/android/hid.c b/android/hid.c
index d64596d..f576548 100644
--- a/android/hid.c
+++ b/android/hid.c
@@ -37,6 +37,7 @@
#include "src/shared/mgmt.h"
#include "src/sdp-client.h"
#include "src/glib-helper.h"
+#include "profiles/input/uhid_copy.h"
#include "log.h"
#include "hal-msg.h"
@@ -47,7 +48,7 @@
#define L2CAP_PSM_HIDP_CTRL 0x11
#define L2CAP_PSM_HIDP_INTR 0x13
-#define MAX_READ_BUFFER 4096
+#define UHID_DEVICE_FILE "/dev/uhid"
static GIOChannel *notification_io = NULL;
static GIOChannel *ctrl_io = NULL;
@@ -67,6 +68,8 @@ struct hid_device {
GIOChannel *intr_io;
guint ctrl_watch;
guint intr_watch;
+ int uhid_fd;
+ guint uhid_watch_id;
};
static int device_cmp(gconstpointer s, gconstpointer user_data)
@@ -77,6 +80,21 @@ static int device_cmp(gconstpointer s, gconstpointer user_data)
return bacmp(&hdev->dst, dst);
}
+static void uhid_destroy(int fd)
+{
+ struct uhid_event ev;
+
+ /* destroy uHID device */
+ memset(&ev, 0, sizeof(ev));
+ ev.type = UHID_DESTROY;
+
+ if (write(fd, &ev, sizeof(ev)) < 0)
+ error("Failed to destroy uHID device: %s (%d)",
+ strerror(errno), errno);
+
+ close(fd);
+}
+
static void hid_device_free(struct hid_device *hdev)
{
if (hdev->ctrl_watch > 0)
@@ -91,17 +109,63 @@ static void hid_device_free(struct hid_device *hdev)
if (hdev->ctrl_io)
g_io_channel_unref(hdev->ctrl_io);
+ if (hdev->uhid_watch_id) {
+ g_source_remove(hdev->uhid_watch_id);
+ hdev->uhid_watch_id = 0;
+ }
+
+ if (hdev->uhid_fd > 0)
+ uhid_destroy(hdev->uhid_fd);
+
g_free(hdev->rd_data);
devices = g_slist_remove(devices, hdev);
g_free(hdev);
}
+static gboolean uhid_event_cb(GIOChannel *io, GIOCondition cond,
+ gpointer user_data)
+{
+ struct hid_device *hdev = user_data;
+ struct uhid_event ev;
+ ssize_t bread;
+ int fd;
+
+ DBG("");
+
+ if (cond & (G_IO_ERR | G_IO_NVAL))
+ goto failed;
+
+ fd = g_io_channel_unix_get_fd(io);
+ memset(&ev, 0, sizeof(ev));
+
+ bread = read(fd, &ev, sizeof(ev));
+ if (bread < 0) {
+ DBG("read: %s (%d)", strerror(errno), errno);
+ goto failed;
+ }
+
+ DBG("uHID event type %d received", ev.type);
+ /* TODO Handle events */
+
+ return TRUE;
+
+failed:
+ hdev->uhid_watch_id = 0;
+ return FALSE;
+}
+
static gboolean intr_io_watch_cb(GIOChannel *chan, gpointer data)
{
- char buf[MAX_READ_BUFFER];
+ struct hid_device *hdev = data;
+ uint8_t buf[UHID_DATA_MAX];
+ struct uhid_event ev;
int fd, bread;
+ /* Wait uHID if not ready */
+ if (hdev->uhid_fd < 0)
+ return TRUE;
+
fd = g_io_channel_unix_get_fd(chan);
bread = read(fd, buf, sizeof(buf));
if (bread < 0) {
@@ -109,7 +173,18 @@ static gboolean intr_io_watch_cb(GIOChannel *chan, gpointer data)
return TRUE;
}
- DBG("bytes read %d", bread);
+ /* Discard non-data packets */
+ if (bread == 0 || buf[0] != 0xA1)
+ return TRUE;
+
+ /* send data to uHID device skipping HIDP header byte */
+ memset(&ev, 0, sizeof(ev));
+ ev.type = UHID_INPUT;
+ ev.u.input.size = bread - 1;
+ memcpy(ev.u.input.data, &buf[1], ev.u.input.size);
+
+ if (write(hdev->uhid_fd, &ev, sizeof(ev)) < 0)
+ DBG("write: %s (%d)", strerror(errno), errno);
return TRUE;
}
@@ -185,6 +260,44 @@ static gboolean ctrl_watch_cb(GIOChannel *chan, GIOCondition cond,
return FALSE;
}
+static int uhid_create(struct hid_device *hdev)
+{
+ GIOCondition cond = G_IO_IN | G_IO_ERR | G_IO_NVAL;
+ GIOChannel *io;
+ struct uhid_event ev;
+
+ hdev->uhid_fd = open(UHID_DEVICE_FILE, O_RDWR | O_CLOEXEC);
+ if (hdev->uhid_fd < 0) {
+ error("Failed to open uHID device: %s", strerror(errno));
+ return -errno;
+ }
+
+ memset(&ev, 0, sizeof(ev));
+ ev.type = UHID_CREATE;
+ strcpy((char *) ev.u.create.name, "bluez-input-device");
+ ev.u.create.bus = BUS_BLUETOOTH;
+ ev.u.create.vendor = hdev->vendor;
+ ev.u.create.product = hdev->product;
+ ev.u.create.version = hdev->vendor;
+ ev.u.create.country = hdev->country;
+ ev.u.create.rd_size = hdev->rd_size;
+ ev.u.create.rd_data = hdev->rd_data;
+
+ if (write(hdev->uhid_fd, &ev, sizeof(ev)) < 0) {
+ error("Failed to create uHID device: %s", strerror(errno));
+ close(hdev->uhid_fd);
+ hdev->uhid_fd = -1;
+ return -errno;
+ }
+
+ io = g_io_channel_unix_new(hdev->uhid_fd);
+ g_io_channel_set_encoding(io, NULL, NULL);
+ hdev->uhid_watch_id = g_io_add_watch(io, cond, uhid_event_cb, hdev);
+ g_io_channel_unref(io);
+
+ return 0;
+}
+
static void interrupt_connect_cb(GIOChannel *chan, GError *conn_err,
gpointer user_data)
{
@@ -195,6 +308,9 @@ static void interrupt_connect_cb(GIOChannel *chan, GError *conn_err,
if (conn_err)
goto failed;
+ if (uhid_create(hdev) < 0)
+ goto failed;
+
hdev->intr_watch = g_io_add_watch(hdev->intr_io,
G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_NVAL,
intr_watch_cb, hdev);
@@ -321,8 +437,11 @@ static void hid_sdp_search_cb(sdp_list_t *recs, int err, gpointer data)
}
}
- if (hdev->ctrl_io)
+ if (hdev->ctrl_io) {
+ if (uhid_create(hdev) < 0)
+ goto fail;
return;
+ }
hdev->ctrl_io = bt_io_connect(control_connect_cb, hdev, NULL, &gerr,
BT_IO_OPT_SOURCE_BDADDR, src,
@@ -365,6 +484,7 @@ static uint8_t bt_hid_connect(struct hal_cmd_hid_connect *cmd, uint16_t len)
hdev = g_new0(struct hid_device, 1);
bacpy(&hdev->dst, &dst);
+ hdev->uhid_fd = -1;
ba2str(&hdev->dst, addr);
DBG("connecting to %s", addr);
@@ -472,6 +592,7 @@ static void connect_cb(GIOChannel *chan, GError *err, gpointer user_data)
hdev = g_new0(struct hid_device, 1);
bacpy(&hdev->dst, &dst);
hdev->ctrl_io = g_io_channel_ref(chan);
+ hdev->uhid_fd = -1;
bt_string2uuid(&uuid, HID_UUID);
if (bt_search_service(src, &hdev->dst, &uuid,
--
1.8.3.1
^ permalink raw reply related
* [PATCH BlueZ 1/2 v2] android/hid: Fetch record before attempting to connect
From: Luiz Augusto von Dentz @ 2013-11-01 8:58 UTC (permalink / raw)
To: linux-bluetooth
From: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
This patch fetch HID record and store the information needed by uHID.
---
v2: Fix including glib-helper.c twice
android/Android.mk | 3 +-
android/Makefile.am | 3 +-
android/hid.c | 134 +++++++++++++++++++++++++++++++++++++++++++++-------
3 files changed, 120 insertions(+), 20 deletions(-)
diff --git a/android/Android.mk b/android/Android.mk
index b953554..443ac7a 100644
--- a/android/Android.mk
+++ b/android/Android.mk
@@ -37,7 +37,8 @@ LOCAL_SRC_FILES := \
../lib/sdp.c \
../lib/bluetooth.c \
../lib/hci.c \
- ../btio/btio.c
+ ../btio/btio.c \
+ ../src/sdp-client.c \
LOCAL_C_INCLUDES := \
$(call include-path-for, glib) \
diff --git a/android/Makefile.am b/android/Makefile.am
index 771d5b2..5eb8f01 100644
--- a/android/Makefile.am
+++ b/android/Makefile.am
@@ -20,7 +20,8 @@ android_bluetoothd_SOURCES = android/main.c \
android/hid.h android/hid.c \
android/ipc.h android/ipc.c \
android/socket.h android/socket.c \
- btio/btio.h btio/btio.c
+ btio/btio.h btio/btio.c \
+ src/sdp-client.h src/sdp-client.c
android_bluetoothd_LDADD = lib/libbluetooth-internal.la @GLIB_LIBS@
diff --git a/android/hid.c b/android/hid.c
index 2bc8c06..d64596d 100644
--- a/android/hid.c
+++ b/android/hid.c
@@ -31,7 +31,12 @@
#include "btio/btio.h"
#include "lib/bluetooth.h"
+#include "lib/sdp.h"
+#include "lib/sdp_lib.h"
+#include "lib/uuid.h"
#include "src/shared/mgmt.h"
+#include "src/sdp-client.h"
+#include "src/glib-helper.h"
#include "log.h"
#include "hal-msg.h"
@@ -52,6 +57,12 @@ static GSList *devices = NULL;
struct hid_device {
bdaddr_t dst;
uint8_t state;
+ uint16_t vendor;
+ uint16_t product;
+ uint16_t version;
+ uint8_t country;
+ int rd_size;
+ void *rd_data;
GIOChannel *ctrl_io;
GIOChannel *intr_io;
guint ctrl_watch;
@@ -80,6 +91,8 @@ static void hid_device_free(struct hid_device *hdev)
if (hdev->ctrl_io)
g_io_channel_unref(hdev->ctrl_io);
+ g_free(hdev->rd_data);
+
devices = g_slist_remove(devices, hdev);
g_free(hdev);
}
@@ -98,10 +111,6 @@ static gboolean intr_io_watch_cb(GIOChannel *chan, gpointer data)
DBG("bytes read %d", bread);
- /* TODO: At this moment only baseband is connected, i.e. mouse
- * movements keyboard events doesn't effect on UI. Have to send
- * this data to uhid fd for profile connection. */
-
return TRUE;
}
@@ -186,8 +195,6 @@ static void interrupt_connect_cb(GIOChannel *chan, GError *conn_err,
if (conn_err)
goto failed;
- /*TODO: Get device details through SDP and create UHID fd and start
- * listening on uhid events */
hdev->intr_watch = g_io_add_watch(hdev->intr_io,
G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_NVAL,
intr_watch_cb, hdev);
@@ -250,14 +257,100 @@ failed:
hid_device_free(hdev);
}
+static void hid_sdp_search_cb(sdp_list_t *recs, int err, gpointer data)
+{
+ struct hid_device *hdev = data;
+ sdp_list_t *list;
+ GError *gerr = NULL;
+ const bdaddr_t *src = bt_adapter_get_address();
+
+ DBG("");
+
+ if (err < 0) {
+ error("Unable to get SDP record: %s", strerror(-err));
+ goto fail;
+ }
+
+ if (!recs || !recs->data) {
+ error("No SDP records found");
+ goto fail;
+ }
+
+ for (list = recs; list != NULL; list = list->next) {
+ sdp_record_t *rec = list->data;
+ sdp_data_t *data;
+
+ data = sdp_data_get(rec, SDP_ATTR_VENDOR_ID);
+ if (data)
+ hdev->vendor = data->val.uint16;
+
+ data = sdp_data_get(rec, SDP_ATTR_PRODUCT_ID);
+ if (data)
+ hdev->product = data->val.uint16;
+
+ data = sdp_data_get(rec, SDP_ATTR_VERSION);
+ if (data)
+ hdev->version = data->val.uint16;
+
+ data = sdp_data_get(rec, SDP_ATTR_HID_COUNTRY_CODE);
+ if (data)
+ hdev->country = data->val.uint8;
+
+ data = sdp_data_get(rec, SDP_ATTR_HID_DESCRIPTOR_LIST);
+ if (data) {
+ if (!SDP_IS_SEQ(data->dtd))
+ goto fail;
+
+ /* First HIDDescriptor */
+ data = data->val.dataseq;
+ if (!SDP_IS_SEQ(data->dtd))
+ goto fail;
+
+ /* ClassDescriptorType */
+ data = data->val.dataseq;
+ if (data->dtd != SDP_UINT8)
+ goto fail;
+
+ /* ClassDescriptorData */
+ data = data->next;
+ if (!data || !SDP_IS_TEXT_STR(data->dtd))
+ goto fail;
+
+ hdev->rd_size = data->unitSize;
+ hdev->rd_data = g_memdup(data->val.str, data->unitSize);
+ }
+ }
+
+ if (hdev->ctrl_io)
+ return;
+
+ hdev->ctrl_io = bt_io_connect(control_connect_cb, hdev, NULL, &gerr,
+ BT_IO_OPT_SOURCE_BDADDR, src,
+ BT_IO_OPT_DEST_BDADDR, &hdev->dst,
+ BT_IO_OPT_PSM, L2CAP_PSM_HIDP_CTRL,
+ BT_IO_OPT_SEC_LEVEL, BT_IO_SEC_LOW,
+ BT_IO_OPT_INVALID);
+ if (gerr) {
+ error("%s", gerr->message);
+ g_error_free(gerr);
+ goto fail;
+ }
+
+ return;
+
+fail:
+ bt_hid_set_state(hdev, HAL_HID_STATE_DISCONNECTED);
+ hid_device_free(hdev);
+}
+
static uint8_t bt_hid_connect(struct hal_cmd_hid_connect *cmd, uint16_t len)
{
struct hid_device *hdev;
char addr[18];
bdaddr_t dst;
GSList *l;
- GError *err = NULL;
const bdaddr_t *src = bt_adapter_get_address();
+ uuid_t uuid;
DBG("");
@@ -271,20 +364,15 @@ static uint8_t bt_hid_connect(struct hal_cmd_hid_connect *cmd, uint16_t len)
return HAL_STATUS_FAILED;
hdev = g_new0(struct hid_device, 1);
- android2bdaddr(&cmd->bdaddr, &hdev->dst);
- ba2str(&hdev->dst, addr);
+ bacpy(&hdev->dst, &dst);
+ ba2str(&hdev->dst, addr);
DBG("connecting to %s", addr);
- hdev->ctrl_io = bt_io_connect(control_connect_cb, hdev, NULL, &err,
- BT_IO_OPT_SOURCE_BDADDR, src,
- BT_IO_OPT_DEST_BDADDR, &hdev->dst,
- BT_IO_OPT_PSM, L2CAP_PSM_HIDP_CTRL,
- BT_IO_OPT_SEC_LEVEL, BT_IO_SEC_LOW,
- BT_IO_OPT_INVALID);
- if (err) {
- error("%s", err->message);
- g_error_free(err);
+ bt_string2uuid(&uuid, HID_UUID);
+ if (bt_search_service(src, &hdev->dst, &uuid, hid_sdp_search_cb, hdev,
+ NULL) < 0) {
+ error("Failed to search sdp details");
hid_device_free(hdev);
return HAL_STATUS_FAILED;
}
@@ -354,6 +442,8 @@ static void connect_cb(GIOChannel *chan, GError *err, gpointer user_data)
uint16_t psm;
GError *gerr = NULL;
GSList *l;
+ const bdaddr_t *src = bt_adapter_get_address();
+ uuid_t uuid;
if (err) {
error("%s", err->message);
@@ -383,6 +473,14 @@ static void connect_cb(GIOChannel *chan, GError *err, gpointer user_data)
bacpy(&hdev->dst, &dst);
hdev->ctrl_io = g_io_channel_ref(chan);
+ bt_string2uuid(&uuid, HID_UUID);
+ if (bt_search_service(src, &hdev->dst, &uuid,
+ hid_sdp_search_cb, hdev, NULL) < 0) {
+ error("failed to search sdp details");
+ hid_device_free(hdev);
+ return;
+ }
+
devices = g_slist_append(devices, hdev);
hdev->ctrl_watch = g_io_add_watch(hdev->ctrl_io,
--
1.8.3.1
^ permalink raw reply related
* Re: [BUG] Crash during disconnecting and removing bond from remote device
From: Johan Hedberg @ 2013-11-01 7:57 UTC (permalink / raw)
To: Seung-Woo Kim; +Cc: linux-bluetooth, s.syam
In-Reply-To: <526E5C98.8020407@samsung.com>
Hi Seung-Woo Kim,
On Mon, Oct 28, 2013, Seung-Woo Kim wrote:
> I used 3.10.14 with RFCOMM tty patches in 3.12-rc, and I tested
> disconnecting and removing a bond from remote device. and I got
> following crash.
This looks like a potentially valid issue, but you'd need to dress up
the fix as a proper patch (i.e. git format-patch + git send-email). It'd
also be good if you could confirm that the issue is reproducable with
the latest bluetooth-next kernel.
Johan
^ permalink raw reply
* Re: Intel 7260 bluetooth malfunction when it is connected to EHCI bus
From: Marcel Holtmann @ 2013-11-01 7:49 UTC (permalink / raw)
To: Hui Wang
Cc: Tedd An, Johan Hedberg, xiong.y.zhang, Gustavo F. Padovan,
linux-bluetooth@vger.kernel.org development, Kun Yang,
Anthony Wong
In-Reply-To: <5273147E.4040004@canonical.com>
Hi Hui,
>>>>>>> The problem is:
>>>>>>> On the machine which has Intel 7260 BT module, i use it to connect a bluetooth headset,
>>>>>>> it can successfully scan and connect to the headset, when i play sound to the bt headset,
>>>>>>> the problem comes, if the bt module is connected to the XHCI, it can work very well.
>>>>>>>
>>>>>>> u@u-Lenovo-B4400:~$ lsusb -t
>>>>>>> 1-7:1.0: No such file or directory
>>>>>>> /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
>>>>>>> /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/14p, 480M
>>>>>>> |__ Port 6: Dev 8, If 0, Class=HID, Driver=usbhid, 1.5M
>>>>>>> |__ Port 7: Dev 2, If 0, Class=vend., Driver=, 12M
>>>>>>> |__ Port 11: Dev 3, If 0, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
>>>>>>> |__ Port 11: Dev 3, If 1, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
>>>>>>>
>>>>>>> But if the bt module is connected to the EHCI, it always fails to play sound.
>>>>>>>
>>>>>>> u@u-Lenovo-B4400:~$ lsusb -t
>>>>>>> /: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
>>>>>>> /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/14p, 480M
>>>>>>> /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/3p, 480M
>>>>>>> |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/8p, 480M
>>>>>>> /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/3p, 480M
>>>>>>> |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/6p, 480M
>>>>>>> |__ Port 5: Dev 3, If 0, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
>>>>>>> |__ Port 5: Dev 3, If 1, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
>>>>>>> |__ Port 6: Dev 4, If 0, Class='bInterfaceClass 0x0e not yet handled', Driver=uvcvideo, 480M
>>>>>>> |__ Port 6: Dev 4, If 1, Class='bInterfaceClass 0x0e not yet handled', Driver=uvcvideo, 480M
>>>>>> can you paste /sys/kernel/debug/usb/devices here.
>>>>>>
>>>>>> If the uvcvideo driver is also using ISOC URBs, we might have just exhausted the bandwidth of the USB bus here or these two devices just do not play nice with each other.
>>>>>>
>>>>>> Try to unload the uvcvideo driver and try it again.
>>>>> Thanks for your reply, follow your instruction, i totally disabled the camera from the BIOS, then the usb tree like this,
>>>>> u@u-Lenovo-B4400:~$ lsusb -t
>>>>> 1-1.3:1.0: No such file or directory
>>>>> /: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
>>>>> /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/14p, 480M
>>>>> /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
>>>>> |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/8p, 480M
>>>>> /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
>>>>> |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/6p, 480M
>>>>> |__ Port 2: Dev 3, If 0, Class=HID, Driver=usbhid, 1.5M
>>>>> |__ Port 3: Dev 4, If 0, Class=vend., Driver=, 12M
>>>>> |__ Port 5: Dev 5, If 0, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
>>>>> |__ Port 5: Dev 5, If 1, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
>>>>> u@u-Lenovo-B4400:~$ uname -a
>>>>> Linux u-Lenovo-B4400 3.12.0-031200rc6-generic #201310191635 SMP Sat Oct 19 20:36:43 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
>>>>>
>>>>> I re-did the test, the result is same as before, after the headset is connected and i play audio, no sound is heard from the headset.
>>>>> And hciconfig output shows still no SCO packets received by BT driver.
>>>>> u@u-Lenovo-B4400:~$ hciconfig
>>>>> hci0: Type: BR/EDR Bus: USB
>>>>> BD Address: 00:15:00:CC:2D:D2 ACL MTU: 1021:5 SCO MTU: 96:5
>>>>> UP RUNNING PSCAN
>>>>> RX bytes:5853 acl:61 sco:0 events:298 errors:0
>>>>> TX bytes:19212 acl:68 sco:1 commands:179 errors:0
>>>> this is strange. The only reason I can think of is that you do not have the firmware installed and or it is not loaded correctly. Does dmesg give any indication that something failed here.
>>> I can confirm the firmware file is the /lib/firmware/intel/ibt-hw-37.7.10-fw-1.80.2.3.d.bseq, and it is in the filesystem. And from the dmesg, the firmware was successfully loaded.
>>>
>>> [ 8.600217] Bluetooth: hci0: Intel Bluetooth firmware file: intel/ibt-hw-37.7.10-fw-1.80.2.3.d.bseq
>>> [ 8.653635] kvm: disabled by bios
>>> [ 8.672981] psmouse serio1: synaptics: Touchpad model: 1, fw: 8.1, id: 0x1e2b1, caps: 0xd00123/0x840300/0x126c00
>>> [ 8.707034] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input13
>>> [ 8.717725] Registered led device: phy0-led
>>> [ 8.722730] ieee80211 phy0: Selected rate control algorithm 'iwl-mvm-rs'
>>> [ 8.752626] Bluetooth: hci0: Intel Bluetooth firmware patch completed and activated
>>>
>>>> Since this is a 3.12 kernel it should have native support for Intel specific setup routing. Any chance you can run btmon -w <file> before plugging the device into the bus. Maybe something goes wrong with the setup routine on EHCI.
>>> Do you mean the hcidump file i just sent in my previous email.
>> I do not get this. I specifically asked to run “btmon -w <file>” before plugging in the device. I want to see the early setup process here. What would I do with a hcidump trace.
>
> The attachment is the logfile generated by "btmon -w <file>". And the logfile was generated by below steps,
>
> 1) boot up the system into the ubuntu desktop
> 2) open a terminal and run "sudo btmon -w ~/lenovo-m4400s-btmon.log"
> 3) open bluetooth applet and click adding a new device, the bluetooth begin to scan devices
> 4) power up the bt headset
> 5) laptop bt module find the headset and connect it successfully
> 6) open the sound applet, choose bt headset as output device, play sound, but no sound can be heard from bt headset
> 7) Ctrl+C to terminate the "btmon -w <file>"
>
> In case you can't receive the attachment, i decode the logfile and paste the content here.
what I need is to see the 7260 controller init. So you need to start btmon -w <file> before the 7260 gets attached to the USB bus or before btusb.ko driver gets loaded.
Regards
Marcel
^ permalink raw reply
* Re: [RFC] hidhost: Shutdown HID L2CAP sockets on unregister
From: Johan Hedberg @ 2013-11-01 7:46 UTC (permalink / raw)
To: Andrei Emeltchenko; +Cc: linux-bluetooth
In-Reply-To: <1383233418-14757-1-git-send-email-Andrei.Emeltchenko.news@gmail.com>
Hi Andrei,
On Thu, Oct 31, 2013, Andrei Emeltchenko wrote:
> Fixes address already in use issue if we reenable HID.
> ...
> bluetoothd[2894]: Failed to listen on ctrl channel:
> l2cap_bind: Address already in use (98)
> ...
> ---
> android/hid.c | 14 ++++++++++----
> 1 file changed, 10 insertions(+), 4 deletions(-)
Applied (after fixing up the subject prefix). Thanks.
Johan
^ permalink raw reply
* Re: [PATCH BlueZ 2/2] android/hid: Initial implementation for uHID
From: Johan Hedberg @ 2013-11-01 7:44 UTC (permalink / raw)
To: Luiz Augusto von Dentz; +Cc: linux-bluetooth
In-Reply-To: <1383235026-12247-2-git-send-email-luiz.dentz@gmail.com>
Hi Luiz/Ravi,
On Thu, Oct 31, 2013, Luiz Augusto von Dentz wrote:
> From: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
>
> This patch reads data on interrupt channel and feeds into uHID.
> Kernel will take care rest of the things and connects bt mouse
> and keyboard:
>
> [168988.557647] input: bluez-input-device as /devices/virtual/misc/uhid/input54
> ---
> android/hid.c | 129 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
> 1 file changed, 125 insertions(+), 4 deletions(-)
After applying these two patches the tree stops compiling for me (even
after rerunning ./bootstrap-configure):
src/glib-helper.o: In function `bt_modalias':
/home/jh/src/bluez/src/glib-helper.c:42: multiple definition of `bt_modalias'
src/glib-helper.o:/home/jh/src/bluez/src/glib-helper.c:42: first defined here
src/glib-helper.o: In function `bt_uuid2string':
/home/jh/src/bluez/src/glib-helper.c:55: multiple definition of `bt_uuid2string'
src/glib-helper.o:/home/jh/src/bluez/src/glib-helper.c:55: first defined here
src/glib-helper.o: In function `bt_name2string':
/home/jh/src/bluez/src/glib-helper.c:172: multiple definition of `bt_name2string'
src/glib-helper.o:/home/jh/src/bluez/src/glib-helper.c:172: first defined here
src/glib-helper.o: In function `bt_string2uuid':
/home/jh/src/bluez/src/glib-helper.c:202: multiple definition of `bt_string2uuid'
src/glib-helper.o:/home/jh/src/bluez/src/glib-helper.c:202: first defined here
collect2: error: ld returned 1 exit status
make[1]: *** [android/bluetoothd] Error 1
Johan
^ permalink raw reply
* Re: Intel 7260 bluetooth malfunction when it is connected to EHCI bus
From: Hui Wang @ 2013-11-01 2:39 UTC (permalink / raw)
To: Marcel Holtmann
Cc: Tedd An, Johan Hedberg, xiong.y.zhang, Gustavo F. Padovan,
linux-bluetooth@vger.kernel.org development, Kun Yang,
Anthony Wong
In-Reply-To: <D0B840E3-36C4-4751-A757-1ADDAC0707B9@holtmann.org>
[-- Attachment #1: Type: text/plain, Size: 68519 bytes --]
On 10/31/2013 05:49 PM, Marcel Holtmann wrote:
> Hi Hui,
>
>>>>>> The problem is:
>>>>>> On the machine which has Intel 7260 BT module, i use it to connect a bluetooth headset,
>>>>>> it can successfully scan and connect to the headset, when i play sound to the bt headset,
>>>>>> the problem comes, if the bt module is connected to the XHCI, it can work very well.
>>>>>>
>>>>>> u@u-Lenovo-B4400:~$ lsusb -t
>>>>>> 1-7:1.0: No such file or directory
>>>>>> /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
>>>>>> /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/14p, 480M
>>>>>> |__ Port 6: Dev 8, If 0, Class=HID, Driver=usbhid, 1.5M
>>>>>> |__ Port 7: Dev 2, If 0, Class=vend., Driver=, 12M
>>>>>> |__ Port 11: Dev 3, If 0, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
>>>>>> |__ Port 11: Dev 3, If 1, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
>>>>>>
>>>>>> But if the bt module is connected to the EHCI, it always fails to play sound.
>>>>>>
>>>>>> u@u-Lenovo-B4400:~$ lsusb -t
>>>>>> /: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
>>>>>> /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/14p, 480M
>>>>>> /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/3p, 480M
>>>>>> |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/8p, 480M
>>>>>> /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/3p, 480M
>>>>>> |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/6p, 480M
>>>>>> |__ Port 5: Dev 3, If 0, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
>>>>>> |__ Port 5: Dev 3, If 1, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
>>>>>> |__ Port 6: Dev 4, If 0, Class='bInterfaceClass 0x0e not yet handled', Driver=uvcvideo, 480M
>>>>>> |__ Port 6: Dev 4, If 1, Class='bInterfaceClass 0x0e not yet handled', Driver=uvcvideo, 480M
>>>>> can you paste /sys/kernel/debug/usb/devices here.
>>>>>
>>>>> If the uvcvideo driver is also using ISOC URBs, we might have just exhausted the bandwidth of the USB bus here or these two devices just do not play nice with each other.
>>>>>
>>>>> Try to unload the uvcvideo driver and try it again.
>>>> Thanks for your reply, follow your instruction, i totally disabled the camera from the BIOS, then the usb tree like this,
>>>> u@u-Lenovo-B4400:~$ lsusb -t
>>>> 1-1.3:1.0: No such file or directory
>>>> /: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
>>>> /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/14p, 480M
>>>> /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
>>>> |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/8p, 480M
>>>> /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
>>>> |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/6p, 480M
>>>> |__ Port 2: Dev 3, If 0, Class=HID, Driver=usbhid, 1.5M
>>>> |__ Port 3: Dev 4, If 0, Class=vend., Driver=, 12M
>>>> |__ Port 5: Dev 5, If 0, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
>>>> |__ Port 5: Dev 5, If 1, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
>>>> u@u-Lenovo-B4400:~$ uname -a
>>>> Linux u-Lenovo-B4400 3.12.0-031200rc6-generic #201310191635 SMP Sat Oct 19 20:36:43 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
>>>>
>>>> I re-did the test, the result is same as before, after the headset is connected and i play audio, no sound is heard from the headset.
>>>> And hciconfig output shows still no SCO packets received by BT driver.
>>>> u@u-Lenovo-B4400:~$ hciconfig
>>>> hci0: Type: BR/EDR Bus: USB
>>>> BD Address: 00:15:00:CC:2D:D2 ACL MTU: 1021:5 SCO MTU: 96:5
>>>> UP RUNNING PSCAN
>>>> RX bytes:5853 acl:61 sco:0 events:298 errors:0
>>>> TX bytes:19212 acl:68 sco:1 commands:179 errors:0
>>> this is strange. The only reason I can think of is that you do not have the firmware installed and or it is not loaded correctly. Does dmesg give any indication that something failed here.
>> I can confirm the firmware file is the /lib/firmware/intel/ibt-hw-37.7.10-fw-1.80.2.3.d.bseq, and it is in the filesystem. And from the dmesg, the firmware was successfully loaded.
>>
>> [ 8.600217] Bluetooth: hci0: Intel Bluetooth firmware file: intel/ibt-hw-37.7.10-fw-1.80.2.3.d.bseq
>> [ 8.653635] kvm: disabled by bios
>> [ 8.672981] psmouse serio1: synaptics: Touchpad model: 1, fw: 8.1, id: 0x1e2b1, caps: 0xd00123/0x840300/0x126c00
>> [ 8.707034] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input13
>> [ 8.717725] Registered led device: phy0-led
>> [ 8.722730] ieee80211 phy0: Selected rate control algorithm 'iwl-mvm-rs'
>> [ 8.752626] Bluetooth: hci0: Intel Bluetooth firmware patch completed and activated
>>
>>> Since this is a 3.12 kernel it should have native support for Intel specific setup routing. Any chance you can run btmon -w <file> before plugging the device into the bus. Maybe something goes wrong with the setup routine on EHCI.
>> Do you mean the hcidump file i just sent in my previous email.
> I do not get this. I specifically asked to run “btmon -w <file>” before plugging in the device. I want to see the early setup process here. What would I do with a hcidump trace.
Hi Marcel,
The attachment is the logfile generated by "btmon -w <file>". And the
logfile was generated by below steps,
1) boot up the system into the ubuntu desktop
2) open a terminal and run "sudo btmon -w ~/lenovo-m4400s-btmon.log"
3) open bluetooth applet and click adding a new device, the bluetooth
begin to scan devices
4) power up the bt headset
5) laptop bt module find the headset and connect it successfully
6) open the sound applet, choose bt headset as output device, play
sound, but no sound can be heard from bt headset
7) Ctrl+C to terminate the "btmon -w <file>"
In case you can't receive the attachment, i decode the logfile and paste
the content here.
Thanks,
Hui.
=================================================================================================
Bluetooth monitor ver 5.9
= New Index (BR/EDR,USB,hci0) [hci0] 0.218046
> HCI Event (0x04) plen 10 [hci0] 2.886816
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
Class: 0x240404
Major class: Audio/Video (headset, speaker, stereo, video, vcr)
Minor class: 0x01
Rendering (Printing, Speaker)
Audio (Speaker, Microphone, Headset)
Link type: ACL (0x01)
< HCI Command (0x01|0x0009) plen 7 [hci0] 2.887014
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
Role: Master (0x00)
> HCI Event (0x0f) plen 4 [hci0] 2.887807
Accept Connection Request (0x01|0x0009) ncmd 1
Status: Success (0x00)
> HCI Event (0x12) plen 8 [hci0] 3.028749
Status: Success (0x00)
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
Role: Master (0x00)
> HCI Event (0x03) plen 11 [hci0] 3.034733
Status: Success (0x00)
Handle: 256
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
Link type: ACL (0x01)
Encryption: Disabled (0x00)
< HCI Command (0x01|0x001b) plen 2 [hci0] 3.034808
Handle: 256
> HCI Event (0x0f) plen 4 [hci0] 3.035730
Read Remote Supported Features (0x01|0x001b) ncmd 1
Status: Success (0x00)
> HCI Event (0x1b) plen 3 [hci0] 3.041745
Handle: 256
Max slots: 5
> HCI Event (0x0b) plen 11 [hci0] 3.043740
Status: Success (0x00)
Handle: 256
Features: 0xbf 0xfe 0x8f 0xfe 0x9b 0xff 0x79 0x87
3 slot packets
5 slot packets
Encryption
Slot offset
Timing accuracy
Role switch
Sniff mode
Power control requests
Channel quality driven data rate (CQDDR)
SCO link
HV2 packets
HV3 packets
u-law log synchronous data
A-law log synchronous data
CVSD synchronous data
Paging parameter negotiation
Power control
Transparent synchronous data
Broadcast Encryption
Enhanced Data Rate ACL 2 Mbps mode
Enhanced Data Rate ACL 3 Mbps mode
Enhanced inquiry scan
Interlaced inquiry scan
Interlaced page scan
RSSI with inquiry results
Extended SCO link (EV3 packets)
EV4 packets
EV5 packets
AFH capable slave
AFH classification slave
3-slot Enhanced Data Rate ACL packets
5-slot Enhanced Data Rate ACL packets
Sniff subrating
Pause encryption
AFH capable master
AFH classification master
Enhanced Data Rate eSCO 2 Mbps mode
Enhanced Data Rate eSCO 3 Mbps mode
3-slot Enhanced Data Rate eSCO packets
Extended Inquiry Response
Secure Simple Pairing
Encapsulated PDU
Erroneous Data Reporting
Non-flushable Packet Boundary Flag
Link Supervision Timeout Changed Event
Inquiry TX Power Level
Enhanced Power Control
Extended features
< HCI Command (0x01|0x001c) plen 3 [hci0] 3.043755
Handle: 256
Page: 1
> ACL Data RX flags 0x02 dlen 12 [hci0] 3.045734
L2CAP: Connection Request (0x02) ident 2 len 4
PSM: 1 (0x0001)
Source CID: 65
> HCI Event (0x0f) plen 4 [hci0] 3.045738
Read Remote Extended Features (0x01|0x001c) ncmd 1
Status: Success (0x00)
< ACL Data TX flags 0x00 dlen 16 [hci0] 3.045762
L2CAP: Connection Response (0x03) ident 2 len 8
Destination CID: 64
Source CID: 65
Result: Connection pending (0x0001)
Status: No further information available (0x0000)
< ACL Data TX flags 0x00 dlen 10 [hci0] 3.045767
L2CAP: Information Request (0x0a) ident 1 len 2
Type: Extended features supported (0x0002)
> HCI Event (0x23) plen 13 [hci0] 3.049734
Status: Success (0x00)
Handle: 256
Page: 1/0
Features: 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00
Secure Simple Pairing (Host Support)
< HCI Command (0x01|0x0019) plen 10 [hci0] 3.049745
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
Page scan repetition mode: R2 (0x02)
Page scan mode: Mandatory (0x00)
Clock offset: 0x0000
> HCI Event (0x0f) plen 4 [hci0] 3.050721
Remote Name Request (0x01|0x0019) ncmd 1
Status: Success (0x00)
> HCI Event (0x13) plen 5 [hci0] 3.051735
Num handles: 1
Handle: 256
Count: 1
> HCI Event (0x13) plen 5 [hci0] 3.056726
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 16 [hci0] 3.056969
L2CAP: Information Response (0x0b) ident 1 len 8
Type: Extended features supported (0x0002)
Result: Success (0x0000)
Features: 0x00000200
Unicast Connectionless Data Reception
< ACL Data TX flags 0x00 dlen 10 [hci0] 3.056995
L2CAP: Command Reject (0x01) ident 1 len 2
Reason: Command not understood (0x0000)
> HCI Event (0x13) plen 5 [hci0] 3.061726
Num handles: 1
Handle: 256
Count: 1
> HCI Event (0x07) plen 255 [hci0] 3.070718
Status: Success (0x00)
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
Name: HM1700
< ACL Data TX flags 0x00 dlen 16 [hci0] 7.047684
L2CAP: Connection Response (0x03) ident 2 len 8
Destination CID: 64
Source CID: 65
Result: Connection successful (0x0000)
Status: No further information available (0x0000)
< ACL Data TX flags 0x00 dlen 12 [hci0] 7.047708
L2CAP: Configure Request (0x04) ident 2 len 4
Destination CID: 65
Flags: 0x0000
> HCI Event (0x13) plen 5 [hci0] 7.051758
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 16 [hci0] 7.052502
L2CAP: Configure Request (0x04) ident 3 len 8
Destination CID: 64
Flags: 0x0000
Option: Maximum Transmission Unit (0x01)
MTU: 64
< ACL Data TX flags 0x00 dlen 18 [hci0] 7.052550
L2CAP: Configure Response (0x05) ident 3 len 10
Source CID: 65
Flags: 0x0000
Result: Success (0x0000)
Option: Maximum Transmission Unit (0x01)
MTU: 64
> HCI Event (0x13) plen 5 [hci0] 7.052733
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 14 [hci0] 7.053751
L2CAP: Configure Response (0x05) ident 2 len 6
Source CID: 64
Flags: 0x0000
Result: Success (0x0000)
> HCI Event (0x13) plen 5 [hci0] 7.056754
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 31 [hci0] 7.057249
Channel: 64 len 27 [PSM 1 mode 0] {chan 0}
SDP: Service Search Attribute Request (0x06) tid 0 len 22
Search pattern: [len 5]
Sequence (6) with 3 bytes [8 extra bits] len 5
UUID (3) with 2 bytes [0 extra bits] len 3
Handsfree Audio Gateway (0x111f)
Max record count: 48
Attribute list: [len 14]
Sequence (6) with 12 bytes [8 extra bits] len 14
Unsigned Integer (1) with 2 bytes [0 extra bits] len 3
0x0001
Unsigned Integer (1) with 2 bytes [0 extra bits] len 3
0x0004
Unsigned Integer (1) with 2 bytes [0 extra bits] len 3
0x0009
Unsigned Integer (1) with 2 bytes [0 extra bits] len 3
0x0311
Continuation state: 0
< ACL Data TX flags 0x00 dlen 68 [hci0] 7.057567
Channel: 65 len 64 [PSM 1 mode 0] {chan 0}
SDP: Service Search Attribute Response (0x07) tid 0 len 59
Attribute bytes: 48
Continuation state: 8
5b 10 73 52 30 00 00 00 [.sR0...
> ACL Data RX flags 0x02 dlen 39 [hci0] 7.063746
Channel: 64 len 35 [PSM 1 mode 0] {chan 0}
SDP: Service Search Attribute Request (0x06) tid 1 len 30
Search pattern: [len 5]
Sequence (6) with 3 bytes [8 extra bits] len 5
UUID (3) with 2 bytes [0 extra bits] len 3
Handsfree Audio Gateway (0x111f)
Max record count: 48
Attribute list: [len 14]
Sequence (6) with 12 bytes [8 extra bits] len 14
Unsigned Integer (1) with 2 bytes [0 extra bits] len 3
0x0001
Unsigned Integer (1) with 2 bytes [0 extra bits] len 3
0x0004
Unsigned Integer (1) with 2 bytes [0 extra bits] len 3
0x0009
Unsigned Integer (1) with 2 bytes [0 extra bits] len 3
0x0311
Continuation state: 8
5b 10 73 52 30 00 00 00 [.sR0...
< ACL Data TX flags 0x00 dlen 15 [hci0] 7.063938
Channel: 65 len 11 [PSM 1 mode 0] {chan 0}
SDP: Service Search Attribute Response (0x07) tid 1 len 6
Attribute bytes: 3
Continuation state: 0
Combined attribute bytes: 51
Attribute list: [len 47] {position 0}
Attribute: Service Class ID List (0x0001) [len 2]
UUID (3) with 2 bytes [0 extra bits] len 3
Handsfree Audio Gateway (0x111f)
UUID (3) with 2 bytes [0 extra bits] len 3
Generic Audio (0x1203)
Attribute: Protocol Descriptor List (0x0004) [len 2]
Sequence (6) with 3 bytes [8 extra bits] len 5
UUID (3) with 2 bytes [0 extra bits] len 3
L2CAP (0x0100)
Sequence (6) with 5 bytes [8 extra bits] len 7
UUID (3) with 2 bytes [0 extra bits] len 3
RFCOMM (0x0003)
Unsigned Integer (1) with 1 byte [0 extra bits] len 2
0x0d
Attribute: Bluetooth Profile Descriptor List (0x0009) [len 2]
Sequence (6) with 6 bytes [8 extra bits] len 8
UUID (3) with 2 bytes [0 extra bits] len 3
Handsfree (0x111e)
Unsigned Integer (1) with 2 bytes [0 extra bits] len 3
0x0105
Attribute: Unknown (0x0311) [len 2]
0x0000
> HCI Event (0x13) plen 5 [hci0] 7.064747
Num handles: 1
Handle: 256
Count: 1
> HCI Event (0x13) plen 5 [hci0] 7.067749
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 12 [hci0] 7.068619
L2CAP: Disconnection Request (0x06) ident 4 len 4
Destination CID: 64
Source CID: 65
< ACL Data TX flags 0x00 dlen 12 [hci0] 7.068674
L2CAP: Disconnection Response (0x07) ident 4 len 4
Destination CID: 64
Source CID: 65
> HCI Event (0x13) plen 5 [hci0] 7.072746
Num handles: 1
Handle: 256
Count: 1
> HCI Event (0x17) plen 6 [hci0] 7.074742
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
< HCI Command (0x01|0x000c) plen 6 [hci0] 7.074922
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
> HCI Event (0x0e) plen 10 [hci0] 7.075743
Link Key Request Negative Reply (0x01|0x000c) ncmd 1
Status: Success (0x00)
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
> HCI Event (0x32) plen 9 [hci0] 7.080726
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
IO capability: NoInputNoOutput (0x03)
OOB data: Authentication data not present (0x00)
Authentication: General Bonding - MITM required (0x05)
> HCI Event (0x31) plen 6 [hci0] 7.081716
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
< HCI Command (0x01|0x002b) plen 9 [hci0] 7.081876
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
IO capability: DisplayYesNo (0x01)
OOB data: Authentication data not present (0x00)
Authentication: General Bonding - MITM required (0x05)
> HCI Event (0x0e) plen 10 [hci0] 7.082712
IO Capability Request Reply (0x01|0x002b) ncmd 1
Status: Success (0x00)
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
> HCI Event (0x33) plen 10 [hci0] 7.339625
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
Passkey: 575136
< HCI Command (0x01|0x002d) plen 6 [hci0] 7.339848
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
> HCI Event (0x0e) plen 10 [hci0] 7.340647
User Confirmation Request Neg Reply (0x01|0x002d) ncmd 1
Status: Success (0x00)
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
> HCI Event (0x36) plen 7 [hci0] 7.742431
Status: Authentication Failure (0x05)
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
> HCI Event (0x05) plen 4 [hci0] 7.897336
Status: Success (0x00)
Handle: 256
Reason: Remote User Terminated Connection (0x13)
< HCI Command (0x01|0x0001) plen 5 [hci0] 16.279595
Access code: 0x9e8b33 (General Inquiry)
Length: 10.24s (0x08)
Num responses: 0
> HCI Event (0x0f) plen 4 [hci0] 16.281119
Inquiry (0x01|0x0001) ncmd 2
Status: Success (0x00)
> HCI Event (0x2f) plen 255 [hci0] 17.025785
Num responses: 1
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
Page scan repetition mode: R1 (0x01)
Page period mode: P0 (0x00)
Class: 0x240404
Major class: Audio/Video (headset, speaker, stereo, video, vcr)
Minor class: 0x01
Rendering (Printing, Speaker)
Audio (Speaker, Microphone, Headset)
Clock offset: 0x51f1
RSSI: -44 dBm (0xd4)
Name (complete): HM1700
16-bit Service UUIDs (complete): 5 entries
Headset (0x1108)
Handsfree (0x111e)
Audio Sink (0x110b)
A/V Remote Control (0x110e)
Serial Port (0x1101)
< HCI Command (0x01|0x0002) plen 0 [hci0] 25.122354
> HCI Event (0x0e) plen 4 [hci0] 25.124712
Inquiry Cancel (0x01|0x0002) ncmd 2
Status: Success (0x00)
< HCI Command (0x01|0x0005) plen 13 [hci0] 25.127063
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
Packet type: 0xcc18
Page scan repetition mode: R2 (0x02)
Page scan mode: Mandatory (0x00)
Clock offset: 0x0000
Role switch: Allow slave (0x01)
> HCI Event (0x0f) plen 4 [hci0] 25.127693
Create Connection (0x01|0x0005) ncmd 1
Status: Success (0x00)
> HCI Event (0x03) plen 11 [hci0] 25.988303
Status: Success (0x00)
Handle: 256
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
Link type: ACL (0x01)
Encryption: Disabled (0x00)
< HCI Command (0x01|0x001b) plen 2 [hci0] 25.988535
Handle: 256
> HCI Event (0x0f) plen 4 [hci0] 25.990330
Read Remote Supported Features (0x01|0x001b) ncmd 1
Status: Success (0x00)
> HCI Event (0x1b) plen 3 [hci0] 25.993260
Handle: 256
Max slots: 5
> HCI Event (0x0b) plen 11 [hci0] 25.996270
Status: Success (0x00)
Handle: 256
Features: 0xbf 0xfe 0x8f 0xfe 0x9b 0xff 0x79 0x87
3 slot packets
5 slot packets
Encryption
Slot offset
Timing accuracy
Role switch
Sniff mode
Power control requests
Channel quality driven data rate (CQDDR)
SCO link
HV2 packets
HV3 packets
u-law log synchronous data
A-law log synchronous data
CVSD synchronous data
Paging parameter negotiation
Power control
Transparent synchronous data
Broadcast Encryption
Enhanced Data Rate ACL 2 Mbps mode
Enhanced Data Rate ACL 3 Mbps mode
Enhanced inquiry scan
Interlaced inquiry scan
Interlaced page scan
RSSI with inquiry results
Extended SCO link (EV3 packets)
EV4 packets
EV5 packets
AFH capable slave
AFH classification slave
3-slot Enhanced Data Rate ACL packets
5-slot Enhanced Data Rate ACL packets
Sniff subrating
Pause encryption
AFH capable master
AFH classification master
Enhanced Data Rate eSCO 2 Mbps mode
Enhanced Data Rate eSCO 3 Mbps mode
3-slot Enhanced Data Rate eSCO packets
Extended Inquiry Response
Secure Simple Pairing
Encapsulated PDU
Erroneous Data Reporting
Non-flushable Packet Boundary Flag
Link Supervision Timeout Changed Event
Inquiry TX Power Level
Enhanced Power Control
Extended features
< HCI Command (0x01|0x001c) plen 3 [hci0] 25.996285
Handle: 256
Page: 1
> HCI Event (0x0f) plen 4 [hci0] 25.997267
Read Remote Extended Features (0x01|0x001c) ncmd 1
Status: Success (0x00)
> HCI Event (0x23) plen 13 [hci0] 26.005271
Status: Success (0x00)
Handle: 256
Page: 1/0
Features: 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00
Secure Simple Pairing (Host Support)
< HCI Command (0x01|0x0019) plen 10 [hci0] 26.005292
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
Page scan repetition mode: R2 (0x02)
Page scan mode: Mandatory (0x00)
Clock offset: 0x0000
> HCI Event (0x0f) plen 4 [hci0] 26.006256
Remote Name Request (0x01|0x0019) ncmd 1
Status: Success (0x00)
> HCI Event (0x07) plen 255 [hci0] 26.025242
Status: Success (0x00)
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
Name: HM1700
< HCI Command (0x01|0x0011) plen 2 [hci0] 26.025266
Handle: 256
> HCI Event (0x0f) plen 4 [hci0] 26.026243
Authentication Requested (0x01|0x0011) ncmd 1
Status: Success (0x00)
> HCI Event (0x17) plen 6 [hci0] 26.027313
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
< HCI Command (0x01|0x000c) plen 6 [hci0] 26.033110
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
> HCI Event (0x0e) plen 10 [hci0] 26.034256
Link Key Request Negative Reply (0x01|0x000c) ncmd 1
Status: Success (0x00)
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
> HCI Event (0x31) plen 6 [hci0] 26.035237
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
< HCI Command (0x01|0x002b) plen 9 [hci0] 26.035287
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
IO capability: DisplayYesNo (0x01)
OOB data: Authentication data not present (0x00)
Authentication: Dedicated Bonding - MITM required (0x03)
> HCI Event (0x0e) plen 10 [hci0] 26.036270
IO Capability Request Reply (0x01|0x002b) ncmd 1
Status: Success (0x00)
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
> HCI Event (0x32) plen 9 [hci0] 26.040267
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
IO capability: NoInputNoOutput (0x03)
OOB data: Authentication data not present (0x00)
Authentication: Dedicated Bonding - MITM not required (0x02)
> HCI Event (0x33) plen 10 [hci0] 26.280169
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
Passkey: 270951
< HCI Command (0x01|0x002c) plen 6 [hci0] 26.285610
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
> HCI Event (0x0e) plen 10 [hci0] 26.287160
User Confirmation Request Reply (0x01|0x002c) ncmd 1
Status: Success (0x00)
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
> HCI Event (0x36) plen 7 [hci0] 26.766879
Status: Success (0x00)
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
> HCI Event (0x18) plen 23 [hci0] 26.782938
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
Link key: de2eb68b175d2935833022b04c121ce2
Key type: Unauthenticated Combination key (0x04)
> HCI Event (0x06) plen 3 [hci0] 26.783870
Status: Success (0x00)
Handle: 256
< HCI Command (0x01|0x0013) plen 3 [hci0] 26.783942
Handle: 256
Encryption: Enabled (0x01)
> HCI Event (0x0f) plen 4 [hci0] 26.784940
Set Connection Encryption (0x01|0x0013) ncmd 1
Status: Success (0x00)
> HCI Event (0x08) plen 4 [hci0] 26.826850
Status: Success (0x00)
Handle: 256
Encryption: Enabled with E0 (0x01)
< ACL Data TX flags 0x00 dlen 10 [hci0] 26.826893
L2CAP: Information Request (0x0a) ident 1 len 2
Type: Extended features supported (0x0002)
> HCI Event (0x13) plen 5 [hci0] 26.830847
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 16 [hci0] 26.831344
L2CAP: Information Response (0x0b) ident 1 len 8
Type: Extended features supported (0x0002)
Result: Success (0x0000)
Features: 0x00000200
Unicast Connectionless Data Reception
< ACL Data TX flags 0x00 dlen 10 [hci0] 26.831381
L2CAP: Command Reject (0x01) ident 1 len 2
Reason: Command not understood (0x0000)
> HCI Event (0x13) plen 5 [hci0] 26.835845
Num handles: 1
Handle: 256
Count: 1
< ACL Data TX flags 0x00 dlen 12 [hci0] 30.831706
L2CAP: Connection Request (0x02) ident 2 len 4
PSM: 1 (0x0001)
Source CID: 64
> HCI Event (0x13) plen 5 [hci0] 30.835877
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 16 [hci0] 30.836841
L2CAP: Connection Response (0x03) ident 2 len 8
Destination CID: 67
Source CID: 64
Result: Connection successful (0x0000)
Status: No further information available (0x0000)
< ACL Data TX flags 0x00 dlen 12 [hci0] 30.836891
L2CAP: Configure Request (0x04) ident 3 len 4
Destination CID: 67
Flags: 0x0000
> ACL Data RX flags 0x02 dlen 16 [hci0] 30.838159
L2CAP: Configure Request (0x04) ident 2 len 8
Destination CID: 64
Flags: 0x0000
Option: Maximum Transmission Unit (0x01)
MTU: 64
< ACL Data TX flags 0x00 dlen 18 [hci0] 30.838224
L2CAP: Configure Response (0x05) ident 2 len 10
Source CID: 67
Flags: 0x0000
Result: Success (0x0000)
Option: Maximum Transmission Unit (0x01)
MTU: 64
> HCI Event (0x13) plen 5 [hci0] 30.840918
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 14 [hci0] 30.841845
L2CAP: Configure Response (0x05) ident 3 len 6
Source CID: 64
Flags: 0x0000
Result: Success (0x0000)
< ACL Data TX flags 0x00 dlen 24 [hci0] 30.842014
Channel: 67 len 20 [PSM 1 mode 0] {chan 0}
SDP: Service Search Attribute Request (0x06) tid 0 len 15
Search pattern: [len 5]
Sequence (6) with 3 bytes [8 extra bits] len 5
UUID (3) with 2 bytes [0 extra bits] len 3
L2CAP (0x0100)
Max record count: 65535
Attribute list: [len 7]
Sequence (6) with 5 bytes [8 extra bits] len 7
Unsigned Integer (1) with 4 bytes [0 extra bits] len 5
0x0000ffff
Continuation state: 0
> HCI Event (0x13) plen 5 [hci0] 30.842845
Num handles: 1
Handle: 256
Count: 1
> HCI Event (0x13) plen 5 [hci0] 30.845847
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 68 [hci0] 30.846904
Channel: 64 len 64 [PSM 1 mode 0] {chan 0}
SDP: Service Search Attribute Response (0x07) tid 0 len 59
Attribute bytes: 54
Continuation state: 2
00 36 .6
< ACL Data TX flags 0x00 dlen 26 [hci0] 30.847135
Channel: 67 len 22 [PSM 1 mode 0] {chan 0}
SDP: Service Search Attribute Request (0x06) tid 1 len 17
Search pattern: [len 5]
Sequence (6) with 3 bytes [8 extra bits] len 5
UUID (3) with 2 bytes [0 extra bits] len 3
L2CAP (0x0100)
Max record count: 65535
Attribute list: [len 7]
Sequence (6) with 5 bytes [8 extra bits] len 7
Unsigned Integer (1) with 4 bytes [0 extra bits] len 5
0x0000ffff
Continuation state: 2
00 36 .6
> HCI Event (0x13) plen 5 [hci0] 30.850887
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 68 [hci0] 30.851837
Channel: 64 len 64 [PSM 1 mode 0] {chan 0}
SDP: Service Search Attribute Response (0x07) tid 1 len 59
Attribute bytes: 54
Continuation state: 2
00 6c .l
< ACL Data TX flags 0x00 dlen 26 [hci0] 30.851969
Channel: 67 len 22 [PSM 1 mode 0] {chan 0}
SDP: Service Search Attribute Request (0x06) tid 2 len 17
Search pattern: [len 5]
Sequence (6) with 3 bytes [8 extra bits] len 5
UUID (3) with 2 bytes [0 extra bits] len 3
L2CAP (0x0100)
Max record count: 65535
Attribute list: [len 7]
Sequence (6) with 5 bytes [8 extra bits] len 7
Unsigned Integer (1) with 4 bytes [0 extra bits] len 5
0x0000ffff
Continuation state: 2
00 6c .l
> HCI Event (0x13) plen 5 [hci0] 30.855867
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 68 [hci0] 30.856899
Channel: 64 len 64 [PSM 1 mode 0] {chan 0}
SDP: Service Search Attribute Response (0x07) tid 2 len 59
Attribute bytes: 54
Continuation state: 2
00 a2 ..
< ACL Data TX flags 0x00 dlen 26 [hci0] 30.857114
Channel: 67 len 22 [PSM 1 mode 0] {chan 0}
SDP: Service Search Attribute Request (0x06) tid 3 len 17
Search pattern: [len 5]
Sequence (6) with 3 bytes [8 extra bits] len 5
UUID (3) with 2 bytes [0 extra bits] len 3
L2CAP (0x0100)
Max record count: 65535
Attribute list: [len 7]
Sequence (6) with 5 bytes [8 extra bits] len 7
Unsigned Integer (1) with 4 bytes [0 extra bits] len 5
0x0000ffff
Continuation state: 2
00 a2 ..
> HCI Event (0x13) plen 5 [hci0] 30.860833
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 68 [hci0] 30.861829
Channel: 64 len 64 [PSM 1 mode 0] {chan 0}
SDP: Service Search Attribute Response (0x07) tid 3 len 59
Attribute bytes: 54
Continuation state: 2
00 d8 ..
< ACL Data TX flags 0x00 dlen 26 [hci0] 30.862014
Channel: 67 len 22 [PSM 1 mode 0] {chan 0}
SDP: Service Search Attribute Request (0x06) tid 4 len 17
Search pattern: [len 5]
Sequence (6) with 3 bytes [8 extra bits] len 5
UUID (3) with 2 bytes [0 extra bits] len 3
L2CAP (0x0100)
Max record count: 65535
Attribute list: [len 7]
Sequence (6) with 5 bytes [8 extra bits] len 7
Unsigned Integer (1) with 4 bytes [0 extra bits] len 5
0x0000ffff
Continuation state: 2
00 d8 ..
> HCI Event (0x13) plen 5 [hci0] 30.865838
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 62 [hci0] 30.866859
Channel: 64 len 58 [PSM 1 mode 0] {chan 0}
SDP: Service Search Attribute Response (0x07) tid 4 len 53
Attribute bytes: 50
Continuation state: 0
Combined attribute bytes: 266
Attribute list: [len 82] {position 0}
Attribute: Service Record Handle (0x0000) [len 2]
0x00010001
Attribute: Service Class ID List (0x0001) [len 2]
UUID (3) with 2 bytes [0 extra bits] len 3
Headset (0x1108)
UUID (3) with 2 bytes [0 extra bits] len 3
Headset HS (0x1131)
UUID (3) with 2 bytes [0 extra bits] len 3
Generic Audio (0x1203)
Attribute: Protocol Descriptor List (0x0004) [len 2]
Sequence (6) with 3 bytes [8 extra bits] len 5
UUID (3) with 2 bytes [0 extra bits] len 3
L2CAP (0x0100)
Sequence (6) with 5 bytes [8 extra bits] len 7
UUID (3) with 2 bytes [0 extra bits] len 3
RFCOMM (0x0003)
Unsigned Integer (1) with 1 byte [0 extra bits] len 2
0x01
Attribute: Browse Group List (0x0005) [len 2]
UUID (3) with 2 bytes [0 extra bits] len 3
Public Browse Root (0x1002)
Attribute: Bluetooth Profile Descriptor List (0x0009) [len 2]
Sequence (6) with 6 bytes [8 extra bits] len 8
UUID (3) with 2 bytes [0 extra bits] len 3
Headset (0x1108)
Unsigned Integer (1) with 2 bytes [0 extra bits] len 3
0x0102
Attribute: Unknown (0x0100) [len 2]
HSP service [len 12]
Attribute: Unknown (0x0302) [len 2]
true
Attribute list: [len 80] {position 1}
Attribute: Service Record Handle (0x0000) [len 2]
0x00010002
Attribute: Service Class ID List (0x0001) [len 2]
UUID (3) with 2 bytes [0 extra bits] len 3
Handsfree (0x111e)
UUID (3) with 2 bytes [0 extra bits] len 3
Generic Audio (0x1203)
Attribute: Protocol Descriptor List (0x0004) [len 2]
Sequence (6) with 3 bytes [8 extra bits] len 5
UUID (3) with 2 bytes [0 extra bits] len 3
L2CAP (0x0100)
Sequence (6) with 5 bytes [8 extra bits] len 7
UUID (3) with 2 bytes [0 extra bits] len 3
RFCOMM (0x0003)
Unsigned Integer (1) with 1 byte [0 extra bits] len 2
0x02
Attribute: Browse Group List (0x0005) [len 2]
UUID (3) with 2 bytes [0 extra bits] len 3
Public Browse Root (0x1002)
Attribute: Bluetooth Profile Descriptor List (0x0009) [len 2]
Sequence (6) with 6 bytes [8 extra bits] len 8
UUID (3) with 2 bytes [0 extra bits] len 3
Handsfree (0x111e)
Unsigned Integer (1) with 2 bytes [0 extra bits] len 3
0x0105
Attribute: Unknown (0x0100) [len 2]
HFP service [len 12]
Attribute: Unknown (0x0311) [len 2]
0x001b
Attribute list: [len 92] {position 2}
Attribute: Service Record Handle (0x0000) [len 2]
0x00010003
Attribute: Service Class ID List (0x0001) [len 2]
UUID (3) with 2 bytes [0 extra bits] len 3
Audio Sink (0x110b)
Attribute: Protocol Descriptor List (0x0004) [len 2]
Sequence (6) with 6 bytes [8 extra bits] len 8
UUID (3) with 2 bytes [0 extra bits] len 3
L2CAP (0x0100)
Unsigned Integer (1) with 2 bytes [0 extra bits] len 3
0x0019
Sequence (6) with 6 bytes [8 extra bits] len 8
UUID (3) with 2 bytes [0 extra bits] len 3
AVDTP (0x0019)
Unsigned Integer (1) with 2 bytes [0 extra bits] len 3
0x0102
Attribute: Browse Group List (0x0005) [len 2]
UUID (3) with 2 bytes [0 extra bits] len 3
Public Browse Root (0x1002)
Attribute: Bluetooth Profile Descriptor List (0x0009) [len 2]
Sequence (6) with 6 bytes [8 extra bits] len 8
UUID (3) with 2 bytes [0 extra bits] len 3
Advanced Audio Distribution (0x110d)
Unsigned Integer (1) with 2 bytes [0 extra bits] len 3
0x0102
Attribute: Unknown (0x0100) [len 2]
Advanced audio service [len 23]
Attribute: Unknown (0x0311) [len 2]
0x0001
< ACL Data TX flags 0x00 dlen 24 [hci0] 30.987030
Channel: 67 len 20 [PSM 1 mode 0] {chan 0}
SDP: Service Search Attribute Request (0x06) tid 5 len 15
Search pattern: [len 5]
Sequence (6) with 3 bytes [8 extra bits] len 5
UUID (3) with 2 bytes [0 extra bits] len 3
PnP Information (0x1200)
Max record count: 65535
Attribute list: [len 7]
Sequence (6) with 5 bytes [8 extra bits] len 7
Unsigned Integer (1) with 4 bytes [0 extra bits] len 5
0x0000ffff
Continuation state: 0
> HCI Event (0x13) plen 5 [hci0] 30.990839
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 67 [hci0] 30.991834
Channel: 64 len 63 [PSM 1 mode 0] {chan 0}
SDP: Service Search Attribute Response (0x07) tid 5 len 58
Attribute bytes: 53
Continuation state: 2
00 35 .5
< ACL Data TX flags 0x00 dlen 26 [hci0] 30.992052
Channel: 67 len 22 [PSM 1 mode 0] {chan 0}
SDP: Service Search Attribute Request (0x06) tid 6 len 17
Search pattern: [len 5]
Sequence (6) with 3 bytes [8 extra bits] len 5
UUID (3) with 2 bytes [0 extra bits] len 3
PnP Information (0x1200)
Max record count: 65535
Attribute list: [len 7]
Sequence (6) with 5 bytes [8 extra bits] len 7
Unsigned Integer (1) with 4 bytes [0 extra bits] len 5
0x0000ffff
Continuation state: 2
00 35 .5
> HCI Event (0x13) plen 5 [hci0] 30.995811
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 29 [hci0] 30.996518
Channel: 64 len 25 [PSM 1 mode 0] {chan 0}
SDP: Service Search Attribute Response (0x07) tid 6 len 20
Attribute bytes: 17
Continuation state: 0
Combined attribute bytes: 70
Attribute list: [len 65] {position 0}
Attribute: Service Record Handle (0x0000) [len 2]
0x00010000
Attribute: Service Class ID List (0x0001) [len 2]
UUID (3) with 2 bytes [0 extra bits] len 3
PnP Information (0x1200)
Attribute: Browse Group List (0x0005) [len 2]
UUID (3) with 2 bytes [0 extra bits] len 3
Public Browse Root (0x1002)
Attribute: Unknown (0x0200) [len 2]
0x0103
Attribute: Unknown (0x0201) [len 2]
0x000f
Attribute: Unknown (0x0202) [len 2]
0x0000
Attribute: Unknown (0x0203) [len 2]
0x0000
Attribute: Unknown (0x0204) [len 2]
true
Attribute: Unknown (0x0205) [len 2]
0x0001
Attribute: Unknown (0x8001) [len 2]
0x0001
< ACL Data TX flags 0x00 dlen 24 [hci0] 31.099275
Channel: 67 len 20 [PSM 1 mode 0] {chan 0}
SDP: Service Search Attribute Request (0x06) tid 7 len 15
Search pattern: [len 5]
Sequence (6) with 3 bytes [8 extra bits] len 5
UUID (3) with 2 bytes [0 extra bits] len 3
Handsfree (0x111e)
Max record count: 65535
Attribute list: [len 7]
Sequence (6) with 5 bytes [8 extra bits] len 7
Unsigned Integer (1) with 4 bytes [0 extra bits] len 5
0x0000ffff
Continuation state: 0
> HCI Event (0x13) plen 5 [hci0] 31.101722
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 67 [hci0] 31.102965
Channel: 64 len 63 [PSM 1 mode 0] {chan 0}
SDP: Service Search Attribute Response (0x07) tid 7 len 58
Attribute bytes: 53
Continuation state: 2
00 35 .5
< ACL Data TX flags 0x00 dlen 26 [hci0] 31.103181
Channel: 67 len 22 [PSM 1 mode 0] {chan 0}
SDP: Service Search Attribute Request (0x06) tid 8 len 17
Search pattern: [len 5]
Sequence (6) with 3 bytes [8 extra bits] len 5
UUID (3) with 2 bytes [0 extra bits] len 3
Handsfree (0x111e)
Max record count: 65535
Attribute list: [len 7]
Sequence (6) with 5 bytes [8 extra bits] len 7
Unsigned Integer (1) with 4 bytes [0 extra bits] len 5
0x0000ffff
Continuation state: 2
00 35 .5
> HCI Event (0x13) plen 5 [hci0] 31.106718
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 44 [hci0] 31.107962
Channel: 64 len 40 [PSM 1 mode 0] {chan 0}
SDP: Service Search Attribute Response (0x07) tid 8 len 35
Attribute bytes: 32
Continuation state: 0
Combined attribute bytes: 85
Attribute list: [len 80] {position 0}
Attribute: Service Record Handle (0x0000) [len 2]
0x00010002
Attribute: Service Class ID List (0x0001) [len 2]
UUID (3) with 2 bytes [0 extra bits] len 3
Handsfree (0x111e)
UUID (3) with 2 bytes [0 extra bits] len 3
Generic Audio (0x1203)
Attribute: Protocol Descriptor List (0x0004) [len 2]
Sequence (6) with 3 bytes [8 extra bits] len 5
UUID (3) with 2 bytes [0 extra bits] len 3
L2CAP (0x0100)
Sequence (6) with 5 bytes [8 extra bits] len 7
UUID (3) with 2 bytes [0 extra bits] len 3
RFCOMM (0x0003)
Unsigned Integer (1) with 1 byte [0 extra bits] len 2
0x02
Attribute: Browse Group List (0x0005) [len 2]
UUID (3) with 2 bytes [0 extra bits] len 3
Public Browse Root (0x1002)
Attribute: Bluetooth Profile Descriptor List (0x0009) [len 2]
Sequence (6) with 6 bytes [8 extra bits] len 8
UUID (3) with 2 bytes [0 extra bits] len 3
Handsfree (0x111e)
Unsigned Integer (1) with 2 bytes [0 extra bits] len 3
0x0105
Attribute: Unknown (0x0100) [len 2]
HFP service [len 12]
Attribute: Unknown (0x0311) [len 2]
0x001b
< ACL Data TX flags 0x00 dlen 12 [hci0] 31.108484
L2CAP: Connection Request (0x02) ident 4 len 4
PSM: 3 (0x0003)
Source CID: 65
> HCI Event (0x13) plen 5 [hci0] 31.111705
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 16 [hci0] 31.112953
L2CAP: Connection Response (0x03) ident 4 len 8
Destination CID: 68
Source CID: 65
Result: Connection successful (0x0000)
Status: No further information available (0x0000)
< ACL Data TX flags 0x00 dlen 16 [hci0] 31.112979
L2CAP: Configure Request (0x04) ident 5 len 8
Destination CID: 68
Flags: 0x0000
Option: Maximum Transmission Unit (0x01)
MTU: 1013
> ACL Data RX flags 0x02 dlen 16 [hci0] 31.116703
L2CAP: Configure Request (0x04) ident 3 len 8
Destination CID: 65
Flags: 0x0000
Option: Maximum Transmission Unit (0x01)
MTU: 1024
> HCI Event (0x13) plen 5 [hci0] 31.116714
Num handles: 1
Handle: 256
Count: 1
< ACL Data TX flags 0x00 dlen 18 [hci0] 31.116742
L2CAP: Configure Response (0x05) ident 3 len 10
Source CID: 68
Flags: 0x0000
Result: Success (0x0000)
Option: Maximum Transmission Unit (0x01)
MTU: 1024
> ACL Data RX flags 0x02 dlen 14 [hci0] 31.117950
L2CAP: Configure Response (0x05) ident 5 len 6
Source CID: 65
Flags: 0x0000
Result: Success (0x0000)
< ACL Data TX flags 0x00 dlen 8 [hci0] 31.118046
Channel: 68 len 4 [PSM 3 mode 0] {chan 1}
03 3f 01 1c .?..
> HCI Event (0x13) plen 5 [hci0] 31.120702
Num handles: 1
Handle: 256
Count: 1
> HCI Event (0x13) plen 5 [hci0] 31.121697
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 8 [hci0] 31.122697
Channel: 65 len 4 [PSM 3 mode 0] {chan 1}
03 73 01 d7 .s..
< ACL Data TX flags 0x00 dlen 18 [hci0] 31.122799
Channel: 68 len 14 [PSM 3 mode 0] {chan 1}
03 ef 15 83 11 04 f0 07 00 f0 03 00 07 70 .............p
> HCI Event (0x13) plen 5 [hci0] 31.126699
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 18 [hci0] 31.127694
Channel: 65 len 14 [PSM 3 mode 0] {chan 1}
01 ef 15 81 11 04 e0 07 00 ff 00 00 07 aa ..............
< ACL Data TX flags 0x00 dlen 8 [hci0] 31.127795
Channel: 68 len 4 [PSM 3 mode 0] {chan 1}
13 3f 01 96 .?..
> HCI Event (0x13) plen 5 [hci0] 31.131699
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 8 [hci0] 31.132691
Channel: 65 len 4 [PSM 3 mode 0] {chan 1}
13 73 01 5d .s.]
< ACL Data TX flags 0x00 dlen 12 [hci0] 31.132733
Channel: 68 len 8 [PSM 3 mode 0] {chan 1}
03 ef 09 e3 05 13 8d 70 .......p
> ACL Data RX flags 0x02 dlen 12 [hci0] 31.134208
L2CAP: Connection Request (0x02) ident 4 len 4
PSM: 1 (0x0001)
Source CID: 69
< ACL Data TX flags 0x00 dlen 16 [hci0] 31.134238
L2CAP: Connection Response (0x03) ident 4 len 8
Destination CID: 66
Source CID: 69
Result: Connection successful (0x0000)
Status: No further information available (0x0000)
< ACL Data TX flags 0x00 dlen 12 [hci0] 31.134242
L2CAP: Configure Request (0x04) ident 6 len 4
Destination CID: 69
Flags: 0x0000
> HCI Event (0x13) plen 5 [hci0] 31.136698
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 12 [hci0] 31.137952
Channel: 65 len 8 [PSM 3 mode 0] {chan 1}
01 ef 09 e1 05 13 8d aa ........
> HCI Event (0x13) plen 5 [hci0] 31.138724
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 12 [hci0] 31.139098
Channel: 65 len 8 [PSM 3 mode 0] {chan 1}
01 ef 09 e3 05 13 8d aa ........
< ACL Data TX flags 0x00 dlen 12 [hci0] 31.139163
Channel: 68 len 8 [PSM 3 mode 0] {chan 1}
03 ef 09 e1 05 13 8d 70 .......p
< ACL Data TX flags 0x00 dlen 9 [hci0] 31.139170
Channel: 68 len 5 [PSM 3 mode 0] {chan 1}
13 ff 01 21 79 ...!y
> HCI Event (0x13) plen 5 [hci0] 31.139726
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 16 [hci0] 31.140473
L2CAP: Configure Request (0x04) ident 5 len 8
Destination CID: 66
Flags: 0x0000
Option: Maximum Transmission Unit (0x01)
MTU: 64
< ACL Data TX flags 0x00 dlen 18 [hci0] 31.140505
L2CAP: Configure Response (0x05) ident 5 len 10
Source CID: 69
Flags: 0x0000
Result: Success (0x0000)
Option: Maximum Transmission Unit (0x01)
MTU: 64
> ACL Data RX flags 0x02 dlen 14 [hci0] 31.141754
L2CAP: Configure Response (0x05) ident 6 len 6
Source CID: 66
Flags: 0x0000
Result: Success (0x0000)
> HCI Event (0x13) plen 5 [hci0] 31.143762
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 20 [hci0] 31.144187
Channel: 65 len 16 [PSM 3 mode 0] {chan 1}
11 ff 17 09 41 54 2b 42 52 53 46 3d 32 37 0d a3 ....AT+BRSF=27..
< ACL Data TX flags 0x00 dlen 22 [hci0] 31.144324
Channel: 68 len 18 [PSM 3 mode 0] {chan 1}
13 ef 1d 0d 0a 2b 42 52 53 46 3a 20 33 35 32 0d .....+BRSF: 352.
0a 65 .e
< ACL Data TX flags 0x00 dlen 14 [hci0] 31.144332
Channel: 68 len 10 [PSM 3 mode 0] {chan 1}
13 ef 0d 0d 0a 4f 4b 0d 0a 65 .....OK..e
> HCI Event (0x13) plen 5 [hci0] 31.144605
Num handles: 1
Handle: 256
Count: 1
> HCI Event (0x13) plen 5 [hci0] 31.145757
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 28 [hci0] 31.146503
Channel: 66 len 24 [PSM 1 mode 0] {chan 2}
SDP: Service Search Attribute Request (0x06) tid 0 len 19
Search pattern: [len 5]
Sequence (6) with 3 bytes [8 extra bits] len 5
UUID (3) with 2 bytes [0 extra bits] len 3
Handsfree Audio Gateway (0x111f)
Max record count: 48
Attribute list: [len 11]
Sequence (6) with 9 bytes [8 extra bits] len 11
Unsigned Integer (1) with 2 bytes [0 extra bits] len 3
0x0001
Unsigned Integer (1) with 2 bytes [0 extra bits] len 3
0x0009
Unsigned Integer (1) with 2 bytes [0 extra bits] len 3
0x0311
Continuation state: 0
< ACL Data TX flags 0x00 dlen 46 [hci0] 31.146720
Channel: 69 len 42 [PSM 1 mode 0] {chan 2}
SDP: Service Search Attribute Response (0x07) tid 0 len 37
Attribute bytes: 34
Attribute list: [len 30] {position 0}
Attribute: Service Class ID List (0x0001) [len 2]
UUID (3) with 2 bytes [0 extra bits] len 3
Handsfree Audio Gateway (0x111f)
UUID (3) with 2 bytes [0 extra bits] len 3
Generic Audio (0x1203)
Attribute: Bluetooth Profile Descriptor List (0x0009) [len 2]
Sequence (6) with 6 bytes [8 extra bits] len 8
UUID (3) with 2 bytes [0 extra bits] len 3
Handsfree (0x111e)
Unsigned Integer (1) with 2 bytes [0 extra bits] len 3
0x0105
Attribute: Unknown (0x0311) [len 2]
0x0000
Continuation state: 0
> HCI Event (0x13) plen 5 [hci0] 31.148755
Num handles: 1
Handle: 256
Count: 1
> HCI Event (0x13) plen 5 [hci0] 31.149755
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 19 [hci0] 31.150250
Channel: 65 len 15 [PSM 3 mode 0] {chan 1}
11 ff 15 02 41 54 2b 43 49 4e 44 3d 3f 0d a3 ....AT+CIND=?..
< ACL Data TX flags 0x00 dlen 141 [hci0] 31.150438
Channel: 68 len 137 [PSM 3 mode 0] {chan 1}
13 ef 08 01 0d 0a 2b 43 49 4e 44 3a 20 28 22 62 ......+CIND: ("b
61 74 74 63 68 67 22 2c 28 30 2d 35 29 29 2c 28 attchg",(0-5)),(
22 73 69 67 6e 61 6c 22 2c 28 30 2d 35 29 29 2c "signal",(0-5)),
28 22 73 65 72 76 69 63 65 22 2c 28 30 2c 31 29 ("service",(0,1)
29 2c 28 22 63 61 6c 6c 22 2c 28 30 2c 31 29 29 ),("call",(0,1))
2c 28 22 63 61 6c 6c 73 65 74 75 70 22 2c 28 30 ,("callsetup",(0
2d 33 29 29 2c 28 22 63 61 6c 6c 68 65 6c 64 22 -3)),("callheld"
2c 28 30 2d 32 29 29 2c 28 22 72 6f 61 6d 22 2c ,(0-2)),("roam",
28 30 2c 31 29 29 0d 0a 65 (0,1))..e
< ACL Data TX flags 0x00 dlen 14 [hci0] 31.150448
Channel: 68 len 10 [PSM 3 mode 0] {chan 1}
13 ef 0d 0d 0a 4f 4b 0d 0a 65 .....OK..e
> HCI Event (0x13) plen 5 [hci0] 31.150729
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 12 [hci0] 31.151699
L2CAP: Disconnection Request (0x06) ident 6 len 4
Destination CID: 66
Source CID: 69
< ACL Data TX flags 0x00 dlen 12 [hci0] 31.151732
L2CAP: Disconnection Response (0x07) ident 6 len 4
Destination CID: 66
Source CID: 69
> HCI Event (0x13) plen 5 [hci0] 31.155700
Num handles: 1
Handle: 256
Count: 1
> HCI Event (0x13) plen 5 [hci0] 31.156717
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 18 [hci0] 31.157715
Channel: 65 len 14 [PSM 3 mode 0] {chan 1}
11 ff 13 02 41 54 2b 43 49 4e 44 3f 0d a3 ....AT+CIND?..
< ACL Data TX flags 0x00 dlen 32 [hci0] 31.157811
Channel: 68 len 28 [PSM 3 mode 0] {chan 1}
13 ef 31 0d 0a 2b 43 49 4e 44 3a 20 35 2c 35 2c ..1..+CIND: 5,5,
31 2c 30 2c 30 2c 30 2c 30 0d 0a 65 1,0,0,0,0..e
< ACL Data TX flags 0x00 dlen 14 [hci0] 31.157820
Channel: 68 len 10 [PSM 3 mode 0] {chan 1}
13 ef 0d 0d 0a 4f 4b 0d 0a 65 .....OK..e
> HCI Event (0x13) plen 5 [hci0] 31.158716
Num handles: 1
Handle: 256
Count: 1
> HCI Event (0x13) plen 5 [hci0] 31.162700
Num handles: 1
Handle: 256
Count: 1
> HCI Event (0x13) plen 5 [hci0] 31.166681
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 25 [hci0] 31.167709
Channel: 65 len 21 [PSM 3 mode 0] {chan 1}
11 ff 21 02 41 54 2b 43 4d 45 52 3d 33 2c 30 2c ..!.AT+CMER=3,0,
30 2c 31 0d a3 0,1..
< ACL Data TX flags 0x00 dlen 14 [hci0] 31.167854
Channel: 68 len 10 [PSM 3 mode 0] {chan 1}
13 ef 0d 0d 0a 4f 4b 0d 0a 65 .....OK..e
> HCI Event (0x13) plen 5 [hci0] 31.171687
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 19 [hci0] 31.197692
Channel: 65 len 15 [PSM 3 mode 0] {chan 1}
11 ff 15 01 41 54 2b 43 43 57 41 3d 31 0d a3 ....AT+CCWA=1..
< ACL Data TX flags 0x00 dlen 14 [hci0] 31.197863
Channel: 68 len 10 [PSM 3 mode 0] {chan 1}
13 ef 0d 0d 0a 4f 4b 0d 0a 65 .....OK..e
> HCI Event (0x13) plen 5 [hci0] 31.201671
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 31 [hci0] 31.203939
Channel: 65 len 27 [PSM 3 mode 0] {chan 1}
11 ff 2d 01 41 54 2b 42 49 41 3d 30 2c 30 2c 31 ..-.AT+BIA=0,0,1
2c 31 2c 31 2c 31 2c 30 2c 0d a3 ,1,1,1,0,..
< ACL Data TX flags 0x00 dlen 17 [hci0] 31.204263
Channel: 68 len 13 [PSM 3 mode 0] {chan 1}
13 ef 13 0d 0a 45 52 52 4f 52 0d 0a 65 .....ERROR..e
> HCI Event (0x13) plen 5 [hci0] 31.208729
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 20 [hci0] 31.208907
Channel: 65 len 16 [PSM 3 mode 0] {chan 1}
11 ff 17 01 41 54 2b 43 42 43 3d 31 30 30 0d a3 ....AT+CBC=100..
< ACL Data TX flags 0x00 dlen 17 [hci0] 31.209194
Channel: 68 len 13 [PSM 3 mode 0] {chan 1}
13 ef 13 0d 0a 45 52 52 4f 52 0d 0a 65 .....ERROR..e
> HCI Event (0x13) plen 5 [hci0] 31.213727
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 19 [hci0] 31.213935
Channel: 65 len 15 [PSM 3 mode 0] {chan 1}
11 ff 15 01 41 54 2b 56 47 53 3d 31 35 0d a3 ....AT+VGS=15..
< ACL Data TX flags 0x00 dlen 14 [hci0] 31.214182
Channel: 68 len 10 [PSM 3 mode 0] {chan 1}
13 ef 0d 0d 0a 4f 4b 0d 0a 65 .....OK..e
> HCI Event (0x13) plen 5 [hci0] 31.218699
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 21 [hci0] 31.218903
Channel: 65 len 17 [PSM 3 mode 0] {chan 1}
11 ff 19 01 41 54 2b 43 4f 50 53 3d 33 2c 30 0d ....AT+COPS=3,0.
a3 .
< ACL Data TX flags 0x00 dlen 14 [hci0] 31.219151
Channel: 68 len 10 [PSM 3 mode 0] {chan 1}
13 ef 0d 0d 0a 4f 4b 0d 0a 65 .....OK..e
> HCI Event (0x13) plen 5 [hci0] 31.223655
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 19 [hci0] 31.223901
Channel: 65 len 15 [PSM 3 mode 0] {chan 1}
11 ff 15 01 41 54 2b 43 4d 45 45 3d 31 0d a3 ....AT+CMEE=1..
< ACL Data TX flags 0x00 dlen 14 [hci0] 31.224044
Channel: 68 len 10 [PSM 3 mode 0] {chan 1}
13 ef 0d 0d 0a 4f 4b 0d 0a 65 .....OK..e
> HCI Event (0x13) plen 5 [hci0] 31.229657
Num handles: 1
Handle: 256
Count: 1
< ACL Data TX flags 0x00 dlen 12 [hci0] 32.913824
L2CAP: Disconnection Request (0x06) ident 7 len 4
Destination CID: 67
Source CID: 64
< ACL Data TX flags 0x00 dlen 12 [hci0] 32.913967
L2CAP: Connection Request (0x02) ident 8 len 4
PSM: 25 (0x0019)
Source CID: 66
> HCI Event (0x13) plen 5 [hci0] 32.917809
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 12 [hci0] 32.918175
L2CAP: Disconnection Response (0x07) ident 7 len 4
Destination CID: 67
Source CID: 64
> HCI Event (0x13) plen 5 [hci0] 32.918799
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 16 [hci0] 32.919548
L2CAP: Connection Response (0x03) ident 8 len 8
Destination CID: 70
Source CID: 66
Result: Connection successful (0x0000)
Status: No further information available (0x0000)
< ACL Data TX flags 0x00 dlen 12 [hci0] 32.919590
L2CAP: Configure Request (0x04) ident 9 len 4
Destination CID: 70
Flags: 0x0000
> ACL Data RX flags 0x02 dlen 16 [hci0] 32.920800
L2CAP: Configure Request (0x04) ident 7 len 8
Destination CID: 66
Flags: 0x0000
Option: Maximum Transmission Unit (0x01)
MTU: 672
< ACL Data TX flags 0x00 dlen 18 [hci0] 32.920846
L2CAP: Configure Response (0x05) ident 7 len 10
Source CID: 70
Flags: 0x0000
Result: Success (0x0000)
Option: Maximum Transmission Unit (0x01)
MTU: 672
> HCI Event (0x13) plen 5 [hci0] 32.923795
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 14 [hci0] 32.924545
L2CAP: Configure Response (0x05) ident 9 len 6
Source CID: 66
Flags: 0x0000
Result: Success (0x0000)
< ACL Data TX flags 0x00 dlen 6 [hci0] 32.924675
Channel: 70 len 2 [PSM 25 mode 0] {chan 2}
00 01 ..
> HCI Event (0x13) plen 5 [hci0] 32.924798
Num handles: 1
Handle: 256
Count: 1
> HCI Event (0x13) plen 5 [hci0] 32.928796
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 8 [hci0] 32.929291
Channel: 66 len 4 [PSM 25 mode 0] {chan 2}
02 01 04 08 ....
< ACL Data TX flags 0x00 dlen 7 [hci0] 32.929397
Channel: 70 len 3 [PSM 25 mode 0] {chan 2}
10 02 04 ...
> HCI Event (0x13) plen 5 [hci0] 32.933791
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 16 [hci0] 32.934578
Channel: 66 len 12 [PSM 25 mode 0] {chan 2}
12 02 01 00 07 06 00 00 ff ff 02 59 ...........Y
< ACL Data TX flags 0x00 dlen 18 [hci0] 32.934704
Channel: 70 len 14 [PSM 25 mode 0] {chan 2}
20 03 04 04 01 00 07 06 00 00 21 15 02 35 .........!..5
> HCI Event (0x13) plen 5 [hci0] 32.938861
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 6 [hci0] 32.939354
Channel: 66 len 2 [PSM 25 mode 0] {chan 2}
22 03 ".
< ACL Data TX flags 0x00 dlen 7 [hci0] 32.939468
Channel: 70 len 3 [PSM 25 mode 0] {chan 2}
30 06 04 0..
> HCI Event (0x13) plen 5 [hci0] 32.943806
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 6 [hci0] 32.944301
Channel: 66 len 2 [PSM 25 mode 0] {chan 2}
32 06 2.
< ACL Data TX flags 0x00 dlen 12 [hci0] 32.944424
L2CAP: Connection Request (0x02) ident 10 len 4
PSM: 25 (0x0019)
Source CID: 64
> HCI Event (0x13) plen 5 [hci0] 32.948804
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 16 [hci0] 32.949551
L2CAP: Connection Response (0x03) ident 10 len 8
Destination CID: 71
Source CID: 64
Result: Connection successful (0x0000)
Status: No further information available (0x0000)
< ACL Data TX flags 0x00 dlen 12 [hci0] 32.949582
L2CAP: Configure Request (0x04) ident 11 len 4
Destination CID: 71
Flags: 0x0000
> ACL Data RX flags 0x02 dlen 20 [hci0] 32.950571
L2CAP: Configure Request (0x04) ident 8 len 12
Destination CID: 64
Flags: 0x0000
Option: Maximum Transmission Unit (0x01)
MTU: 1008
Option: Flush Timeout (0x02)
Flush timeout: 200
< ACL Data TX flags 0x00 dlen 18 [hci0] 32.950597
L2CAP: Configure Response (0x05) ident 8 len 10
Source CID: 71
Flags: 0x0000
Result: Success (0x0000)
Option: Maximum Transmission Unit (0x01)
MTU: 1008
> HCI Event (0x13) plen 5 [hci0] 32.953824
Num handles: 1
Handle: 256
Count: 1
> ACL Data RX flags 0x02 dlen 14 [hci0] 32.954566
L2CAP: Configure Response (0x05) ident 11 len 6
Source CID: 64
Flags: 0x0000
Result: Success (0x0000)
> HCI Event (0x13) plen 5 [hci0] 32.954798
Num handles: 1
Handle: 256
Count: 1
< HCI Command (0x01|0x0028) plen 17 [hci0] 32.964171
Handle: 256
Transmit bandwidth: 8000
Receive bandwidth: 8000
Max latency: 65535
Setting: 0x0060
Retransmission effort: Don't care (0xff)
Packet type: 0x003f
> HCI Event (0x0f) plen 4 [hci0] 32.965775
Setup Synchronous Connection (0x01|0x0028) ncmd 1
Status: Success (0x00)
> HCI Event (0x1b) plen 3 [hci0] 32.969774
Handle: 256
Max slots: 1
> HCI Event (0x2c) plen 17 [hci0] 32.986795
Status: Success (0x00)
Handle: 257
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
Link type: eSCO (0x02)
Transmission interval: 0x0c
Retransmission window: 0x02
RX packet length: 60
TX packet length: 60
Air mode: CVSD (0x02)
< ACL Data TX flags 0x00 dlen 19 [hci0] 32.987649
Channel: 68 len 15 [PSM 3 mode 0] {chan 1}
13 ef 17 0d 0a 2b 56 47 53 3d 31 35 0d 0a 65 .....+VGS=15..e
< ACL Data TX flags 0x00 dlen 19 [hci0] 32.987662
Channel: 68 len 15 [PSM 3 mode 0] {chan 1}
13 ef 17 0d 0a 2b 56 47 4d 3d 31 35 0d 0a 65 .....+VGM=15..e
> HCI Event (0x1b) plen 3 [hci0] 32.991768
Handle: 256
Max slots: 5
> HCI Event (0x13) plen 5 [hci0] 32.992762
Num handles: 1
Handle: 256
Count: 1
< SCO Data TX flags 0x00 dlen 48 [hci0] 32.993934
> HCI Event (0x13) plen 5 [hci0] 32.995762
Num handles: 1
Handle: 256
Count: 1
> HCI Event (0x14) plen 6 [hci0] 37.801432
Status: Success (0x00)
Handle: 256
Mode: Sniff (0x02)
Interval: 247.500 msec (0x018c)
< HCI Command (0x01|0x0006) plen 3 [hci0] 38.011637
Handle: 257
Reason: Remote User Terminated Connection (0x13)
> HCI Event (0x0f) plen 4 [hci0] 38.012251
Disconnect (0x01|0x0006) ncmd 1
Status: Success (0x00)
> HCI Event (0x05) plen 4 [hci0] 38.051233
Status: Success (0x00)
Handle: 257
Reason: Connection Terminated By Local Host (0x16)
> HCI Event (0x14) plen 6 [hci0] 38.057234
Status: Success (0x00)
Handle: 256
Mode: Active (0x00)
Interval: 0.000 msec (0x0000)
> HCI Event (0x14) plen 6 [hci0] 42.803863
Status: Success (0x00)
Handle: 256
Mode: Sniff (0x02)
Interval: 500.000 msec (0x0320)
< HCI Command (0x02|0x0004) plen 2 [hci0] 42.927906
Handle: 256
> HCI Event (0x0f) plen 4 [hci0] 42.928836
Exit Sniff Mode (0x02|0x0004) ncmd 1
Status: Success (0x00)
> HCI Event (0x14) plen 6 [hci0] 43.264703
Status: Success (0x00)
Handle: 256
Mode: Active (0x00)
Interval: 0.000 msec (0x0000)
< HCI Command (0x01|0x0028) plen 17 [hci0] 43.264779
Handle: 256
Transmit bandwidth: 8000
Receive bandwidth: 8000
Max latency: 65535
Setting: 0x0060
Retransmission effort: Don't care (0xff)
Packet type: 0x003f
> HCI Event (0x0f) plen 4 [hci0] 43.265703
Setup Synchronous Connection (0x01|0x0028) ncmd 1
Status: Success (0x00)
> HCI Event (0x1b) plen 3 [hci0] 43.271679
Handle: 256
Max slots: 1
> HCI Event (0x2c) plen 17 [hci0] 43.290665
Status: Success (0x00)
Handle: 257
Address: 78:F7:BE:08:5E:DF (OUI 78-F7-BE)
Link type: eSCO (0x02)
Transmission interval: 0x0c
Retransmission window: 0x02
RX packet length: 60
TX packet length: 60
Air mode: CVSD (0x02)
< ACL Data TX flags 0x00 dlen 19 [hci0] 43.291490
Channel: 68 len 15 [PSM 3 mode 0] {chan 1}
13 ef 17 0d 0a 2b 56 47 53 3d 31 35 0d 0a 65 .....+VGS=15..e
< ACL Data TX flags 0x00 dlen 19 [hci0] 43.291512
Channel: 68 len 15 [PSM 3 mode 0] {chan 1}
13 ef 17 0d 0a 2b 56 47 4d 3d 31 35 0d 0a 65 .....+VGM=15..e
< SCO Data TX flags 0x00 dlen 48 [hci0] 43.295627
< SCO Data TX flags 0x00 dlen 48 [hci0] 43.295850
> HCI Event (0x1b) plen 3 [hci0] 43.296621
Handle: 256
Max slots: 5
> HCI Event (0x13) plen 5 [hci0] 43.297623
Num handles: 1
Handle: 256
Count: 1
> HCI Event (0x13) plen 5 [hci0] 43.298627
Num handles: 1
Handle: 256
Count: 1
> HCI Event (0x14) plen 6 [hci0] 47.786446
Status: Success (0x00)
Handle: 256
Mode: Sniff (0x02)
Interval: 247.500 msec (0x018c)
< HCI Command (0x01|0x0006) plen 3 [hci0] 49.907615
Handle: 257
Reason: Remote User Terminated Connection (0x13)
> HCI Event (0x0f) plen 4 [hci0] 49.908340
Disconnect (0x01|0x0006) ncmd 1
Status: Success (0x00)
> HCI Event (0x05) plen 4 [hci0] 50.015272
Status: Success (0x00)
Handle: 257
Reason: Connection Terminated By Local Host (0x16)
> HCI Event (0x14) plen 6 [hci0] 50.021320
Status: Success (0x00)
Handle: 256
Mode: Active (0x00)
Interval: 0.000 msec (0x0000)
> HCI Event (0x14) plen 6 [hci0] 54.795921
Status: Success (0x00)
Handle: 256
Mode: Sniff (0x02)
Interval: 500.000 msec (0x0320)
>
> Regards
>
> Marcel
>
>
>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: lenovo-m4400s-btmon.log --]
[-- Type: text/x-log; name="lenovo-m4400s-btmon.log", Size: 11795 bytes --]
btsnoop\0\0\0\0\x01\0\0\aÑ\0\0\0\x10\0\0\0\x10\0\0\0\0\0\0\0\0\0áÇÇK\x18¾\0\x01]Z\x06ý\fhci0\0\0\0\0\0\0\0\f\0\0\0\f\0\0\0\x03\0\0\0\0\0áÇÇKAI \x04
ß^\b¾÷x\x04\x04$\x01\0\0\0
\0\0\0
\0\0\0\x02\0\0\0\0\0áÇÇKAJf \x04\aß^\b¾÷x\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÇKAM\x7f\x0f\x04\0\x01 \x04\0\0\0
\0\0\0
\0\0\0\x03\0\0\0\0\0áÇÇKCt\r\x12\b\0ß^\b¾÷x\0\0\0\0\r\0\0\0\r\0\0\0\x03\0\0\0\0\0áÇÇKCm\x03\v\0\0\x01ß^\b¾÷x\x01\0\0\0\0\x05\0\0\0\x05\0\0\0\x02\0\0\0\0\0áÇÇKC¸^[\x04\x02\0\x01\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÇKCR\x0f\x04\0\x01^[\x04\0\0\0\x05\0\0\0\x05\0\0\0\x03\0\0\0\0\0áÇÇKC¦Ñ^[\x03\0\x01\x05\0\0\0\r\0\0\0\r\0\0\0\x03\0\0\0\0\0áÇÇKC®\v\v\0\0\x01¿þþÿy\0\0\0\x06\0\0\0\x06\0\0\0\x02\0\0\0\0\0áÇÇKC®«\x1c\x04\x03\0\x01\x01\0\0\0\x10\0\0\0\x10\0\0\0\x05\0\0\0\0\0áÇÇKC¶f\0!\f\0\b\0\x01\0\x02\x02\x04\0\x01\0A\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÇKC¶j\x0f\x04\0\x01\x1c\x04\0\0\0\x14\0\0\0\x14\0\0\0\x04\0\0\0\0\0áÇÇKC¶\0\x01\x10\0\f\0\x01\0\x03\x02\b\0@\0A\0\x01\0\0\0\0\0\0\x0e\0\0\0\x0e\0\0\0\x04\0\0\0\0\0áÇÇKC¶\0\x01
\0\x06\0\x01\0
\x01\x02\0\x02\0\0\0\0\x0f\0\0\0\x0f\0\0\0\x03\0\0\0\0\0áÇÇKCÆ\x06#\r\0\0\x01\x01\0\x01\0\0\0\0\0\0\0\0\0\0\r\0\0\0\r\0\0\0\x02\0\0\0\0\0áÇÇKCÆ\x11\x19\x04
ß^\b¾÷x\x02\0\0\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÇKCÉá\x0f\x04\0\x01\x19\x04\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇKCÍ×\x13\x05\x01\0\x01\x01\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇKCáV\x13\x05\x01\0\x01\x01\0\0\0\0\x14\0\0\0\x14\0\0\0\x05\0\0\0\0\0áÇÇKCâI\0!\x10\0\f\0\x01\0\v\x01\b\0\x02\0\0\0\0\x02\0\0\0\0\0\x0e\0\0\0\x0e\0\0\0\x04\0\0\0\0\0áÇÇKCâc\0\x01
\0\x06\0\x01\0\x01\x01\x02\0\0\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇKCôÞ\x13\x05\x01\0\x01\x01\0\0\0\x01\x01\0\0\x01\x01\0\0\0\x03\0\0\0\0\0áÇÇKD\x17þ\aÿ\0ß^\b¾÷xHM1700\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x14\0\0\0\x14\0\0\0\x04\0\0\0\0\0áÇÇKÇ\x04\0\x01\x10\0\f\0\x01\0\x03\x02\b\0@\0A\0\0\0\0\0\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÇKÇ\x1c\0\x01\f\0\b\0\x01\0\x04\x02\x04\0A\0\0\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇKÖî\x13\x05\x01\0\x01\x01\0\0\0\0\x14\0\0\0\x14\0\0\0\x05\0\0\0\0\0áÇÇKÙÖ\0!\x10\0\f\0\x01\0\x04\x03\b\0@\0\0\0\x01\x02@\0\0\0\0\x16\0\0\0\x16\0\0\0\x04\0\0\0\0\0áÇÇKÚ\x06\0\x01\x12\0\x0e\0\x01\0\x05\x03
\0A\0\0\0\0\0\x01\x02@\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇKÚ½\x13\x05\x01\0\x01\x01\0\0\0\0\x12\0\0\0\x12\0\0\0\x05\0\0\0\0\0áÇÇKÞ·\0!\x0e\0
\0\x01\0\x05\x02\x06\0@\0\0\0\0\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇKêr\x13\x05\x01\0\x01\x01\0\0\0\0#\0\0\0#\0\0\0\x05\0\0\0\0\0áÇÇKìa\0!\x1f\0^[\0@\0\x06\0\0\0\x165\x03\x19\x11\x1f\005\f \0\x01 \0\x04 \0 \x03\x11\0\0\0\0H\0\0\0H\0\0\0\x04\0\0\0\0\0áÇÇKí\0\x01D\0@\0A\0\a\0\0\0;\00515/ \0\x015\x06\x19\x11\x1f\x19\x12\x03 \0\x045\f5\x03\x19\x01\05\x05\x19\0\x03\b\r \0 5\b5\x06\x19\x11\x1e \x01\x05 \x03\x11\b[\x10sR0\0\0\0\0\0\0+\0\0\0+\0\0\0\x05\0\0\0\0\0áÇÇK\x05Â\0!'\0#\0@\0\x06\0\x01\0\x1e5\x03\x19\x11\x1f\005\f \0\x01 \0\x04 \0 \x03\x11\b[\x10sR0\0\0\0\0\0\0\x13\0\0\0\x13\0\0\0\x04\0\0\0\0\0áÇÇK\x06\0\x01\x0f\0\v\0A\0\a\0\x01\0\x06\0\x03 \0\0\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇK «\x13\x05\x01\0\x01\x01\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇK\x15e\x13\x05\x01\0\x01\x01\0\0\0\0\x10\0\0\0\x10\0\0\0\x05\0\0\0\0\0áÇÇK\x18Ë\0!\f\0\b\0\x01\0\x06\x04\x04\0@\0A\0\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÇK\x19\x02\0\x01\f\0\b\0\x01\0\a\x04\x04\0@\0A\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇK(ê\x13\x05\x01\0\x01\x01\0\0\0\0\b\0\0\0\b\0\0\0\x03\0\0\0\0\0áÇÇK0¶\x17\x06ß^\b¾÷x\0\0\0 \0\0\0 \0\0\0\x02\0\0\0\0\0áÇÇK1j\f\x04\x06ß^\b¾÷x\0\0\0\f\0\0\0\f\0\0\0\x03\0\0\0\0\0áÇÇK4\x0e
\x01\f\x04\0ß^\b¾÷x\0\0\0\v\0\0\0\v\0\0\0\x03\0\0\0\0\0áÇÇKH\x162 ß^\b¾÷x\x03\0\x05\0\0\0\b\0\0\0\b\0\0\0\x03\0\0\0\0\0áÇÇKKô1\x06ß^\b¾÷x\0\0\0\f\0\0\0\f\0\0\0\x02\0\0\0\0\0áÇÇKL+\x04 ß^\b¾÷x\x01\0\x05\0\0\0\f\0\0\0\f\0\0\0\x03\0\0\0\0\0áÇÇKOØ\x0e
\x01+\x04\0ß^\b¾÷x\0\0\0\f\0\0\0\f\0\0\0\x03\0\0\0\0\0áÇÇK
;i3
ß^\b¾÷x Æ\b\0\0\0\0 \0\0\0 \0\0\0\x02\0\0\0\0\0áÇÇK
<H-\x04\x06ß^\b¾÷x\0\0\0\f\0\0\0\f\0\0\0\x03\0\0\0\0\0áÇÇK
?g\x0e
\x01-\x04\0ß^\b¾÷x\0\0\0 \0\0\0 \0\0\0\x03\0\0\0\0\0áÇÇK`ß6\a\x05ß^\b¾÷x\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÇK½ø\x05\x04\0\0\x01\x13\0\0\0\b\0\0\0\b\0\0\0\x02\0\0\0\0\0áÇÇL\r¥+\x01\x04\x053\b\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÇL\r«\x1f\x0f\x04\0\x02\x01\x04\0\0\x01\x01\0\0\x01\x01\0\0\0\x03\0\0\0\0\0áÇÇL\x19\aù/ÿ\x01ß^\b¾÷x\x01\0\x04\x04$ñQÔ\a HM1700\v\x03\b\x11\x1e\x11\v\x11\x0e\x11\x01\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\x03\0\0\0\x02\0\0\0\0\0áÇÇL2\x02\x04\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÇLh\x0e\x04\x02\x02\x04\0\0\0\0\x10\0\0\0\x10\0\0\0\x02\0\0\0\0\0áÇÇL¥\x05\x04\rß^\b¾÷x\x18Ì\x02\0\0\0\x01\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÇL¨\r\x0f\x04\0\x01\x05\x04\0\0\0\r\0\0\0\r\0\0\0\x03\0\0\0\0\0áÇÇL¡ÉÏ\x03\v\0\0\x01ß^\b¾÷x\x01\0\0\0\0\x05\0\0\0\x05\0\0\0\x02\0\0\0\0\0áÇÇL¡Ê·^[\x04\x02\0\x01\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÇL¡Ñº\x0f\x04\0\x01^[\x04\0\0\0\x05\0\0\0\x05\0\0\0\x03\0\0\0\0\0áÇÇL¡Ý,^[\x03\0\x01\x05\0\0\0\r\0\0\0\r\0\0\0\x03\0\0\0\0\0áÇÇL¡èî\v\v\0\0\x01¿þþÿy\0\0\0\x06\0\0\0\x06\0\0\0\x02\0\0\0\0\0áÇÇL¡èý\x1c\x04\x03\0\x01\x01\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÇL¡ìÓ\x0f\x04\0\x01\x1c\x04\0\0\0\x0f\0\0\0\x0f\0\0\0\x03\0\0\0\0\0áÇÇL¢\f\x17#\r\0\0\x01\x01\0\x01\0\0\0\0\0\0\0\0\0\0\r\0\0\0\r\0\0\0\x02\0\0\0\0\0áÇÇL¢\f,\x19\x04
ß^\b¾÷x\x02\0\0\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÇL¢\x0fð\x0f\x04\0\x01\x19\x04\0\0\x01\x01\0\0\x01\x01\0\0\0\x03\0\0\0\0\0áÇÇL¢Z\x1a\aÿ\0ß^\b¾÷xHM1700\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\0\0\x05\0\0\0\x02\0\0\0\0\0áÇÇL¢Z2\x11\x04\x02\0\x01\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÇL¢^\x03\x0f\x04\0\x01\x11\x04\0\0\0\b\0\0\0\b\0\0\0\x03\0\0\0\0\0áÇÇL¢b1\x17\x06ß^\b¾÷x\0\0\0 \0\0\0 \0\0\0\x02\0\0\0\0\0áÇÇL¢xÖ\f\x04\x06ß^\b¾÷x\0\0\0\f\0\0\0\f\0\0\0\x03\0\0\0\0\0áÇÇL¢}P\x0e
\x01\f\x04\0ß^\b¾÷x\0\0\0\b\0\0\0\b\0\0\0\x03\0\0\0\0\0áÇÇL¢%1\x06ß^\b¾÷x\0\0\0\f\0\0\0\f\0\0\0\x02\0\0\0\0\0áÇÇL¢W+\x04 ß^\b¾÷x\x01\0\x03\0\0\0\f\0\0\0\f\0\0\0\x03\0\0\0\0\0áÇÇL¢
.\x0e
\x01+\x04\0ß^\b¾÷x\0\0\0\v\0\0\0\v\0\0\0\x03\0\0\0\0\0áÇÇL¢Ë2 ß^\b¾÷x\x03\0\x02\0\0\0\f\0\0\0\f\0\0\0\x03\0\0\0\0\0áÇÇL¦=é3
ß^\b¾÷xg"\x04\0\0\0\0 \0\0\0 \0\0\0\x02\0\0\0\0\0áÇÇL¦S*,\x04\x06ß^\b¾÷x\0\0\0\f\0\0\0\f\0\0\0\x03\0\0\0\0\0áÇÇL¦Y8\x0e
\x01,\x04\0ß^\b¾÷x\0\0\0 \0\0\0 \0\0\0\x03\0\0\0\0\0áÇÇL«\x1f6\a\0ß^\b¾÷x\0\0\0\x19\0\0\0\x19\0\0\0\x03\0\0\0\0\0áÇÇLéÚ\x18\x17ß^\b¾÷xÞ.¶\x17])50"°L\x12\x1câ\x04\0\0\0\x05\0\0\0\x05\0\0\0\x03\0\0\0\0\0áÇÇLí~\x06\x03\0\0\x01\0\0\0\x06\0\0\0\x06\0\0\0\x02\0\0\0\0\0áÇÇLíÆ\x13\x04\x03\0\x01\x01\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÇLñ¬\x0f\x04\0\x01\x13\x04\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÇL®b\b\x04\0\0\x01\x01\0\0\0\x0e\0\0\0\x0e\0\0\0\x04\0\0\0\0\0áÇÇL®\0\x01
\0\x06\0\x01\0
\x01\x02\0\x02\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇL®¤ÿ\x13\x05\x01\0\x01\x01\0\0\0\0\x14\0\0\0\x14\0\0\0\x05\0\0\0\0\0áÇÇL®¦ð\0!\x10\0\f\0\x01\0\v\x01\b\0\x02\0\0\0\0\x02\0\0\0\0\0\x0e\0\0\0\x0e\0\0\0\x04\0\0\0\0\0áÇÇL®§\x15\0\x01
\0\x06\0\x01\0\x01\x01\x02\0\0\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇL®¸
\x13\x05\x01\0\x01\x01\0\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÇLë±Z\0\x01\f\0\b\0\x01\0\x02\x02\x04\0\x01\0@\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLëÁ¥\x13\x05\x01\0\x01\x01\0\0\0\0\x14\0\0\0\x14\0\0\0\x05\0\0\0\0\0áÇÇLëÅi\0!\x10\0\f\0\x01\0\x03\x02\b\0C\0@\0\0\0\0\0\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÇLëÅ\0\x01\f\0\b\0\x01\0\x04\x03\x04\0C\0\0\0\0\0\0\x14\0\0\0\x14\0\0\0\x05\0\0\0\0\0áÇÇLëÊ\0!\x10\0\f\0\x01\0\x04\x02\b\0@\0\0\0\x01\x02@\0\0\0\0\x16\0\0\0\x16\0\0\0\x04\0\0\0\0\0áÇÇLëÊÐ\0\x01\x12\0\x0e\0\x01\0\x05\x02
\0C\0\0\0\0\0\x01\x02@\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLëÕV\x13\x05\x01\0\x01\x01\0\0\0\0\x12\0\0\0\x12\0\0\0\x05\0\0\0\0\0áÇÇLëØõ\0!\x0e\0
\0\x01\0\x05\x03\x06\0@\0\0\0\0\0\0\0\0\x1c\0\0\0\x1c\0\0\0\x04\0\0\0\0\0áÇÇLëÙ\0\x01\x18\0\x14\0C\0\x06\0\0\0\x0f5\x03\x19\x01\0ÿÿ5\x05
\0\0ÿÿ\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLëÜÝ\x13\x05\x01\0\x01\x01\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLëè\x13\x05\x01\0\x01\x01\0\0\0\0H\0\0\0H\0\0\0\x05\0\0\0\0\0áÇÇLëì¸\0!D\0@\0@\0\a\0\0\0;\066\x01\a6\0R \0\0
\0\x01\0\x01 \0\x015 \x19\x11\b\x19\x111\x19\x12\x03 \0\x045\f5\x03\x19\x01\05\x05\x19\0\x03\b\x01 \0\x055\x03\x19\x10\x02 \x02\06\0\0\0\x1e\0\0\0\x1e\0\0\0\x04\0\0\0\0\0áÇÇLëí\0\x01\x1a\0\x16\0C\0\x06\0\x01\0\x115\x03\x19\x01\0ÿÿ5\x05
\0\0ÿÿ\x02\06\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLëüG\x13\x05\x01\0\x01\x01\0\0\0\0H\0\0\0H\0\0\0\x05\0\0\0\0\0áÇÇLëÿý\0!D\0@\0@\0\a\0\x01\0;\06\0 5\b5\x06\x19\x11\b \x01\x02 \x01\0%\fHSP service\0 \x03\x02(\x016\0P \0\0
\0\x01\0\x02 \0\x015\x06\x19\x11\x1e\x19\x02\0l\0\0\0\x1e\0\0\0\x1e\0\0\0\x04\0\0\0\0\0áÇÇLì\0\0\x01\x1a\0\x16\0C\0\x06\0\x02\0\x115\x03\x19\x01\0ÿÿ5\x05
\0\0ÿÿ\x02\0l\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLì\x0f»\x13\x05\x01\0\x01\x01\0\0\0\0H\0\0\0H\0\0\0\x05\0\0\0\0\0áÇÇLì\x13Ã\0!D\0@\0@\0\a\0\x02\0;\06\x12\x03 \0\x045\f5\x03\x19\x01\05\x05\x19\0\x03\b\x02 \0\x055\x03\x19\x10\x02 \0 5\b5\x06\x19\x11\x1e \x01\x05 \x01\0%\fHFP servi\x02\0¢\0\0\0\x1e\0\0\0\x1e\0\0\0\x04\0\0\0\0\0áÇÇLì\x14\0\x01\x1a\0\x16\0C\0\x06\0\x03\0\x115\x03\x19\x01\0ÿÿ5\x05
\0\0ÿÿ\x02\0¢\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLì#!\x13\x05\x01\0\x01\x01\0\0\0\0H\0\0\0H\0\0\0\x05\0\0\0\0\0áÇÇLì'\x05\0!D\0@\0@\0\a\0\x03\0;\06ce\0 \x03\x11 \0^[6\0\ \0\0
\0\x01\0\x03 \0\x015\x03\x19\x11\v \0\x045\x105\x06\x19\x01\0 \0\x195\x06\x19\0\x19 \x01\x02 \0\x055\x03\x02\0Ø\0\0\0\x1e\0\0\0\x1e\0\0\0\x04\0\0\0\0\0áÇÇLì'¾\0\x01\x1a\0\x16\0C\0\x06\0\x04\0\x115\x03\x19\x01\0ÿÿ5\x05
\0\0ÿÿ\x02\0Ø\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLì6®\x13\x05\x01\0\x01\x01\0\0\0\0B\0\0\0B\0\0\0\x05\0\0\0\0\0áÇÇLì:«\0!>\0:\0@\0\a\0\x04\05\02\x19\x10\x02 \0 5\b5\x06\x19\x11\r \x01\x02 \x01\0%\x17Advanced audio service\0 \x03\x11 \0\x01\0\0\0\0\x1c\0\0\0\x1c\0\0\0\x04\0\0\0\0\0áÇÇLî\x10\x16\0\x01\x18\0\x14\0C\0\x06\0\x05\0\x0f5\x03\x19\x12\0ÿÿ5\x05
\0\0ÿÿ\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLî\x1e÷\x13\x05\x01\0\x01\x01\0\0\0\0G\0\0\0G\0\0\0\x05\0\0\0\0\0áÇÇLî"Ú\0!C\0?\0@\0\a\0\x05\0:\055D6\0A \0\0
\0\x01\0\0 \0\x015\x03\x19\x12\0 \0\x055\x03\x19\x10\x02 \x02\0 \x01\x03 \x02\x01 \0\x0f \x02\x02 \0\0 \x02\x03 \0\0\x02\05\0\0\0\x1e\0\0\0\x1e\0\0\0\x04\0\0\0\0\0áÇÇLî#´\0\x01\x1a\0\x16\0C\0\x06\0\x06\0\x115\x03\x19\x12\0ÿÿ5\x05
\0\0ÿÿ\x02\05\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLî2c\x13\x05\x01\0\x01\x01\0\0\0\0!\0\0\0!\0\0\0\x05\0\0\0\0\0áÇÇLî5&\0!\x1d\0\x19\0@\0\a\0\x06\0\x14\0\x11 \x02\x04(\x01 \x02\x05 \0\x01 \x01 \0\x01\0\0\0\0\x1c\0\0\0\x1c\0\0\0\x04\0\0\0\0\0áÇÇLïÆ\0\x01\x18\0\x14\0C\0\x06\0\a\0\x0f5\x03\x19\x11\x1eÿÿ5\x05
\0\0ÿÿ\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLïÐ\x1a\x13\x05\x01\0\x01\x01\0\0\0\0G\0\0\0G\0\0\0\x05\0\0\0\0\0áÇÇLïÔõ\0!C\0?\0@\0\a\0\a\0:\055S6\0P \0\0
\0\x01\0\x02 \0\x015\x06\x19\x11\x1e\x19\x12\x03 \0\x045\f5\x03\x19\x01\05\x05\x19\0\x03\b\x02 \0\x055\x03\x19\x10\x02 \0 5\x02\05\0\0\0\x1e\0\0\0\x1e\0\0\0\x04\0\0\0\0\0áÇÇLïÕÍ\0\x01\x1a\0\x16\0C\0\x06\0\b\0\x115\x03\x19\x11\x1eÿÿ5\x05
\0\0ÿÿ\x02\05\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLïã\x13\x05\x01\0\x01\x01\0\0\0\00\0\0\00\0\0\0\x05\0\0\0\0\0áÇÇLïèz\0!,\0(\0@\0\a\0\b\0#\0 \b5\x06\x19\x11\x1e \x01\x05 \x01\0%\fHFP service\0 \x03\x11 \0^[\0\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÇLïê\0\x01\f\0\b\0\x01\0\x02\x04\x04\0\x03\0A\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLï÷\x19\x13\x05\x01\0\x01\x01\0\0\0\0\x14\0\0\0\x14\0\0\0\x05\0\0\0\0\0áÇÇLïûù\0!\x10\0\f\0\x01\0\x03\x04\b\0D\0A\0\0\0\0\0\0\0\0\x14\0\0\0\x14\0\0\0\x04\0\0\0\0\0áÇÇLïü\x13\0\x01\x10\0\f\0\x01\0\x04\x05\b\0D\0\0\0\x01\x02õ\x03\0\0\0\x14\0\0\0\x14\0\0\0\x05\0\0\0\0\0áÇÇLð
\0!\x10\0\f\0\x01\0\x04\x03\b\0A\0\0\0\x01\x02\0\x04\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLð
ª\x13\x05\x01\0\x01\x01\0\0\0\0\x16\0\0\0\x16\0\0\0\x04\0\0\0\0\0áÇÇLð
Æ\0\x01\x12\0\x0e\0\x01\0\x05\x03
\0D\0\0\0\0\0\x01\x02\0\x04\0\0\0\x12\0\0\0\x12\0\0\0\x05\0\0\0\0\0áÇÇLð\x0f~\0!\x0e\0
\0\x01\0\x05\x05\x06\0A\0\0\0\0\0\0\0\0\f\0\0\0\f\0\0\0\x04\0\0\0\0\0áÇÇLð\x0fÞ\0\x01\b\0\x04\0D\0\x03?\x01\x1c\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLð\x1a>\x13\x05\x01\0\x01\x01\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLð\x1e!\x13\x05\x01\0\x01\x01\0\0\0\0\f\0\0\0\f\0\0\0\x05\0\0\0\0\0áÇÇLð" \0!\b\0\x04\0A\0\x03s\x01×\0\0\0\x16\0\0\0\x16\0\0\0\x04\0\0\0\0\0áÇÇLð"o\0\x01\x12\0\x0e\0D\0\x03ï\x15\x11\x04ð\a\0ð\x03\0\ap\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLð1«\x13\x05\x01\0\x01\x01\0\0\0\0\x16\0\0\0\x16\0\0\0\x05\0\0\0\0\0áÇÇLð5\0!\x12\0\x0e\0A\0\x01ï\x15\x11\x04à\a\0ÿ\0\0\aª\0\0\0\f\0\0\0\f\0\0\0\x04\0\0\0\0\0áÇÇLð5ó\0\x01\b\0\x04\0D\0\x13?\x01\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLðE3\x13\x05\x01\0\x01\x01\0\0\0\0\f\0\0\0\f\0\0\0\x05\0\0\0\0\0áÇÇLðI\x13\0!\b\0\x04\0A\0\x13s\x01]\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÇLðI=\0\x01\f\0\b\0D\0\x03ï ã\x05\x13p\0\0\0\x10\0\0\0\x10\0\0\0\x05\0\0\0\0\0áÇÇLðO\0\0!\f\0\b\0\x01\0\x02\x04\x04\0\x01\0E\0\0\0\0\x14\0\0\0\x14\0\0\0\x04\0\0\0\0\0áÇÇLðO\x1e\0\x01\x10\0\f\0\x01\0\x03\x04\b\0B\0E\0\0\0\0\0\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÇLðO"\0\x01\f\0\b\0\x01\0\x04\x06\x04\0E\0\0\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLðXº\x13\x05\x01\0\x01\x01\0\0\0\0\x10\0\0\0\x10\0\0\0\x05\0\0\0\0\0áÇÇLð] \0!\f\0\b\0A\0\x01ï á\x05\x13ª\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLð`¤\x13\x05\x01\0\x01\x01\0\0\0\0\x10\0\0\0\x10\0\0\0\x05\0\0\0\0\0áÇÇLðb\x1a\0!\f\0\b\0A\0\x01ï ã\x05\x13ª\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÇLðb[\0\x01\f\0\b\0D\0\x03ï á\x05\x13p\0\0\0\r\0\0\0\r\0\0\0\x04\0\0\0\0\0áÇÇLðbb\0\x01 \0\x05\0D\0\x13ÿ\x01!y\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLðd\x13\x05\x01\0\x01\x01\0\0\0\0\x14\0\0\0\x14\0\0\0\x05\0\0\0\0\0áÇÇLðgy\0!\x10\0\f\0\x01\0\x04\x05\b\0B\0\0\0\x01\x02@\0\0\0\0\x16\0\0\0\x16\0\0\0\x04\0\0\0\0\0áÇÇLðg\0\x01\x12\0\x0e\0\x01\0\x05\x05
\0E\0\0\0\0\0\x01\x02@\0\0\0\0\x12\0\0\0\x12\0\0\0\x05\0\0\0\0\0áÇÇLðlz\0!\x0e\0
\0\x01\0\x05\x06\x06\0B\0\0\0\0\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLðtR\x13\x05\x01\0\x01\x01\0\0\0\0\x18\0\0\0\x18\0\0\0\x05\0\0\0\0\0áÇÇLðuû\0!\x14\0\x10\0A\0\x11ÿ\x17 AT+BRSF=27\r£\0\0\0\x1a\0\0\0\x1a\0\0\0\x04\0\0\0\0\0áÇÇLðv\0\x01\x16\0\x12\0D\0\x13ï\x1d
+BRSF: 352
e\0\0\0\x12\0\0\0\x12\0\0\0\x04\0\0\0\0\0áÇÇLðv\0\x01\x0e\0
\0D\0\x13ï
OK
e\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLðw\x13\x05\x01\0\x01\x01\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLð|\x1d\x13\x05\x01\0\x01\x01\0\0\0\0 \0\0\0 \0\0\0\x05\0\0\0\0\0áÇÇLð\x7f\a\0!\x1c\0\x18\0B\0\x06\0\0\0\x135\x03\x19\x11\x1f\005 \0\x01 \0 \x03\x11\0\0\0\02\0\0\02\0\0\0\x04\0\0\0\0\0áÇÇLð\x7fà\0\x01.\0*\0E\0\a\0\0\0%\0"5 5\x1e \0\x015\x06\x19\x11\x1f\x19\x12\x03 \0 5\b5\x06\x19\x11\x1e \x01\x05 \x03\x11 \0\0\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLðÓ\x13\x05\x01\0\x01\x01\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLð»\x13\x05\x01\0\x01\x01\0\0\0\0\x17\0\0\0\x17\0\0\0\x05\0\0\0\0\0áÇÇLðª\0!\x13\0\x0f\0A\0\x11ÿ\x15\x02AT+CIND=?\r£\0\0\0\0\0\0\0\0\0\x04\0\0\0\0\0áÇÇLðf\0\x01\0\0D\0\x13ï\b\x01
+CIND: ("battchg",(0-5)),("signal",(0-5)),("service",(0,1)),("call",(0,1)),("callsetup",(0-3)),("callheld",(0-2)),("roam",(0,1))
e\0\0\0\x12\0\0\0\x12\0\0\0\x04\0\0\0\0\0áÇÇLðp\0\x01\x0e\0
\0D\0\x13ï
OK
e\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLð\x13\x05\x01\0\x01\x01\0\0\0\0\x10\0\0\0\x10\0\0\0\x05\0\0\0\0\0áÇÇLðS\0!\f\0\b\0\x01\0\x06\x06\x04\0B\0E\0\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÇLðt\0\x01\f\0\b\0\x01\0\a\x06\x04\0B\0E\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLð¢ô\x13\x05\x01\0\x01\x01\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLð¦í\x13\x05\x01\0\x01\x01\0\0\0\0\x16\0\0\0\x16\0\0\0\x05\0\0\0\0\0áÇÇLðªÓ\0!\x12\0\x0e\0A\0\x11ÿ\x13\x02AT+CIND?\r£\0\0\0$\0\0\0$\0\0\0\x04\0\0\0\0\0áÇÇLð«3\0\x01 \0\x1c\0D\0\x13ï1
+CIND: 5,5,1,0,0,0,0
e\0\0\0\x12\0\0\0\x12\0\0\0\x04\0\0\0\0\0áÇÇLð«<\0\x01\x0e\0
\0D\0\x13ï
OK
e\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLð®¼\x13\x05\x01\0\x01\x01\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLð¾L\x13\x05\x01\0\x01\x01\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLðÍÙ\x13\x05\x01\0\x01\x01\0\0\0\0\x1d\0\0\0\x1d\0\0\0\x05\0\0\0\0\0áÇÇLðÑÝ\0!\x19\0\x15\0A\0\x11ÿ!\x02AT+CMER=3,0,0,1\r£\0\0\0\x12\0\0\0\x12\0\0\0\x04\0\0\0\0\0áÇÇLðÒn\0\x01\x0e\0
\0D\0\x13ï
OK
e\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLðág\x13\x05\x01\0\x01\x01\0\0\0\0\x17\0\0\0\x17\0\0\0\x05\0\0\0\0\0áÇÇLñFü\0!\x13\0\x0f\0A\0\x11ÿ\x15\x01AT+CCWA=1\r£\0\0\0\x12\0\0\0\x12\0\0\0\x04\0\0\0\0\0áÇÇLñG§\0\x01\x0e\0
\0D\0\x13ï
OK
e\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLñV\x13\x05\x01\0\x01\x01\0\0\0\0#\0\0\0#\0\0\0\x05\0\0\0\0\0áÇÇLñ_c\0!\x1f\0^[\0A\0\x11ÿ-\x01AT+BIA=0,0,1,1,1,1,0,\r£\0\0\0\x15\0\0\0\x15\0\0\0\x04\0\0\0\0\0áÇÇLñ`§\0\x01\x11\0\r\0D\0\x13ï\x13
ERROR
e\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLñr\x19\x13\x05\x01\0\x01\x01\0\0\0\0\x18\0\0\0\x18\0\0\0\x05\0\0\0\0\0áÇÇLñrË\0!\x14\0\x10\0A\0\x11ÿ\x17\x01AT+CBC=100\r£\0\0\0\x15\0\0\0\x15\0\0\0\x04\0\0\0\0\0áÇÇLñsê\0\x01\x11\0\r\0D\0\x13ï\x13
ERROR
e\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLñ
\x13\x05\x01\0\x01\x01\0\0\0\0\x17\0\0\0\x17\0\0\0\x05\0\0\0\0\0áÇÇLño\0!\x13\0\x0f\0A\0\x11ÿ\x15\x01AT+VGS=15\r£\0\0\0\x12\0\0\0\x12\0\0\0\x04\0\0\0\0\0áÇÇLñf\0\x01\x0e\0
\0D\0\x13ï
OK
e\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLñ\v\x13\x05\x01\0\x01\x01\0\0\0\0\x19\0\0\0\x19\0\0\0\x05\0\0\0\0\0áÇÇLñ×\0!\x15\0\x11\0A\0\x11ÿ\x19\x01AT+COPS=3,0\r£\0\0\0\x12\0\0\0\x12\0\0\0\x04\0\0\0\0\0áÇÇLñÏ\0\x01\x0e\0
\0D\0\x13ï
OK
e\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLñ¬g\x13\x05\x01\0\x01\x01\0\0\0\0\x17\0\0\0\x17\0\0\0\x05\0\0\0\0\0áÇÇLñ]\0!\x13\0\x0f\0A\0\x11ÿ\x15\x01AT+CMEE=1\r£\0\0\0\x12\0\0\0\x12\0\0\0\x04\0\0\0\0\0áÇÇLñì\0\x01\x0e\0
\0D\0\x13ï
OK
e\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇLñÃÙ\x13\x05\x01\0\x01\x01\0\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÇM\vv \0\x01\f\0\b\0\x01\0\x06\a\x04\0C\0@\0\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÇM\vw/\0\x01\f\0\b\0\x01\0\x02\b\x04\0\x19\0B\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇM\v1\x13\x05\x01\0\x01\x01\0\0\0\0\x10\0\0\0\x10\0\0\0\x05\0\0\0\0\0áÇÇM\v\0!\f\0\b\0\x01\0\a\a\x04\0C\0@\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇM\v\x0f\x13\x05\x01\0\x01\x01\0\0\0\0\x14\0\0\0\x14\0\0\0\x05\0\0\0\0\0áÇÇM\vü\0!\x10\0\f\0\x01\0\x03\b\b\0F\0B\0\0\0\0\0\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÇM\v&\0\x01\f\0\b\0\x01\0\x04 \x04\0F\0\0\0\0\0\0\x14\0\0\0\x14\0\0\0\x05\0\0\0\0\0áÇÇM\và\0!\x10\0\f\0\x01\0\x04\a\b\0B\0\0\0\x01\x02 \x02\0\0\0\x16\0\0\0\x16\0\0\0\x04\0\0\0\0\0áÇÇM\v\x0e\0\x01\x12\0\x0e\0\x01\0\x05\a
\0F\0\0\0\0\0\x01\x02 \x02\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇM\v\x13\x05\x01\0\x01\x01\0\0\0\0\x12\0\0\0\x12\0\0\0\x05\0\0\0\0\0áÇÇM\v \0!\x0e\0
\0\x01\0\x05 \x06\0B\0\0\0\0\0\0\0\0
\0\0\0
\0\0\0\x04\0\0\0\0\0áÇÇM\v¡\x03\0\x01\x06\0\x02\0F\0\0\x01\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇM\v¡~\x13\x05\x01\0\x01\x01\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇM\v±\x1c\x13\x05\x01\0\x01\x01\0\0\0\0\f\0\0\0\f\0\0\0\x05\0\0\0\0\0áÇÇM\v³\v\0!\b\0\x04\0B\0\x02\x01\x04\b\0\0\0\v\0\0\0\v\0\0\0\x04\0\0\0\0\0áÇÇM\v³u\0\x01\a\0\x03\0F\0\x10\x02\x04\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇM\vÄ\x13\x05\x01\0\x01\x01\0\0\0\0\x14\0\0\0\x14\0\0\0\x05\0\0\0\0\0áÇÇM\vDz\0!\x10\0\f\0B\0\x12\x02\x01\0\a\x06\0\0ÿÿ\x02Y\0\0\0\x16\0\0\0\x16\0\0\0\x04\0\0\0\0\0áÇÇM\vÈ0\0\x01\x12\0\x0e\0F\0 \x03\x04\x04\x01\0\a\x06\0\0!\x15\x025\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇM\vØm\x13\x05\x01\0\x01\x01\0\0\0\0
\0\0\0
\0\0\0\x05\0\0\0\0\0áÇÇM\vÚZ\0!\x06\0\x02\0B\0"\x03\0\0\0\v\0\0\0\v\0\0\0\x04\0\0\0\0\0áÇÇM\vÚÌ\0\x01\a\0\x03\0F\00\x06\x04\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇM\vë¾\x13\x05\x01\0\x01\x01\0\0\0\0
\0\0\0
\0\0\0\x05\0\0\0\0\0áÇÇM\ví\0!\x06\0\x02\0B\02\x06\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÇM\vî(\0\x01\f\0\b\0\x01\0\x02
\x04\0\x19\0@\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇM\vÿD\x13\x05\x01\0\x01\x01\0\0\0\0\x14\0\0\0\x14\0\0\0\x05\0\0\0\0\0áÇÇM\f\x02/\0!\x10\0\f\0\x01\0\x03
\b\0G\0@\0\0\0\0\0\0\0\0\x10\0\0\0\x10\0\0\0\x04\0\0\0\0\0áÇÇM\f\x02N\0\x01\f\0\b\0\x01\0\x04\v\x04\0G\0\0\0\0\0\0\x18\0\0\0\x18\0\0\0\x05\0\0\0\0\0áÇÇM\f\x06+\0!\x14\0\x10\0\x01\0\x04\b\f\0@\0\0\0\x01\x02ð\x03\x02\x02È\0\0\0\0\x16\0\0\0\x16\0\0\0\x04\0\0\0\0\0áÇÇM\f\x06E\0\x01\x12\0\x0e\0\x01\0\x05\b
\0G\0\0\0\0\0\x01\x02ð\x03\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇM\f\x12à\x13\x05\x01\0\x01\x01\0\0\0\0\x12\0\0\0\x12\0\0\0\x05\0\0\0\0\0áÇÇM\f\x15Æ\0!\x0e\0
\0\x01\0\x05\v\x06\0@\0\0\0\0\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇM\f\x16®\x13\x05\x01\0\x01\x01\0\0\0\0\x14\0\0\0\x14\0\0\0\x02\0\0\0\0\0áÇÇM\f;K(\x04\x11\0\x01@\x1f\0\0@\x1f\0\0ÿÿ`\0ÿ?\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÇM\fA\x0f\x04\0\x01(\x04\0\0\0\x05\0\0\0\x05\0\0\0\x03\0\0\0\0\0áÇÇM\fQ.^[\x03\0\x01\x01\0\0\0\x13\0\0\0\x13\0\0\0\x03\0\0\0\0\0áÇÇM\f«,\x11\0\x01\x01ß^\b¾÷x\x02\f\x02<\0<\0\x02\0\0\0\x17\0\0\0\x17\0\0\0\x04\0\0\0\0\0áÇÇM\f\x01\0\x01\x13\0\x0f\0D\0\x13ï\x17
+VGS=15
e\0\0\0\x17\0\0\0\x17\0\0\0\x04\0\0\0\0\0áÇÇM\f\x0e\0\x01\x13\0\x0f\0D\0\x13ï\x17
+VGM=15
e\0\0\0\x05\0\0\0\x05\0\0\0\x03\0\0\0\0\0áÇÇM\f§\x18^[\x03\0\x01\x05\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇM\fªú\x13\x05\x01\0\x01\x01\0\0\0\03\0\0\03\0\0\0\x06\0\0\0\0\0áÇÇM\f¯\x01\x010\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇM\f¶²\x13\x05\x01\0\x01\x01\0\0\0\0\b\0\0\0\b\0\0\0\x03\0\0\0\0\0áÇÇMV
Ø\x14\x06\0\0\x01\x02\x01\0\0\0\x06\0\0\0\x06\0\0\0\x02\0\0\0\0\0áÇÇMY?õ\x06\x04\x03\x01\x01\x13\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÇMYB[\x0f\x04\0\x01\x06\x04\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÇMYÚ¡\x05\x04\0\x01\x01\x16\0\0\0\b\0\0\0\b\0\0\0\x03\0\0\0\0\0áÇÇMYò\x12\x14\x06\0\0\x01\0\0\0\0\0\0\b\0\0\0\b\0\0\0\x03\0\0\0\0\0áÇÇM¢_\x14\x06\0\0\x01\x02 \x03\0\0\0\x05\0\0\0\x05\0\0\0\x02\0\0\0\0\0áÇÇM¤D"\x04\b\x02\0\x01\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÇM¤GÄ\x0f\x04\0\x01\x04\b\0\0\0\b\0\0\0\b\0\0\0\x03\0\0\0\0\0áÇÇM©g¿\x14\x06\0\0\x01\0\0\0\0\0\0\x14\0\0\0\x14\0\0\0\x02\0\0\0\0\0áÇÇM©h\v(\x04\x11\0\x01@\x1f\0\0@\x1f\0\0ÿÿ`\0ÿ?\0\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÇM©k§\x0f\x04\0\x01(\x04\0\0\0\x05\0\0\0\x05\0\0\0\x03\0\0\0\0\0áÇÇM©ÿ^[\x03\0\x01\x01\0\0\0\x13\0\0\0\x13\0\0\0\x03\0\0\0\0\0áÇÇM©Í),\x11\0\x01\x01ß^\b¾÷x\x02\f\x02<\0<\0\x02\0\0\0\x17\0\0\0\x17\0\0\0\x04\0\0\0\0\0áÇÇM©Ðb\0\x01\x13\0\x0f\0D\0\x13ï\x17
+VGS=15
e\0\0\0\x17\0\0\0\x17\0\0\0\x04\0\0\0\0\0áÇÇM©Ðx\0\x01\x13\0\x0f\0D\0\x13ï\x17
+VGM=15
e\0\0\03\0\0\03\0\0\0\x06\0\0\0\0\0áÇÇM©à\x01\x010\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\03\0\0\03\0\0\0\x06\0\0\0\0\0áÇÇM©áj\x01\x010\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\0\0\x05\0\0\0\x03\0\0\0\0\0áÇÇM©äm^[\x03\0\x01\x05\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇM©èW\x13\x05\x01\0\x01\x01\0\0\0\0\a\0\0\0\a\0\0\0\x03\0\0\0\0\0áÇÇM©ìC\x13\x05\x01\0\x01\x01\0\0\0\0\b\0\0\0\b\0\0\0\x03\0\0\0\0\0áÇÇMîfÎ\x14\x06\0\0\x01\x02\x01\0\0\0\x06\0\0\0\x06\0\0\0\x02\0\0\0\0\0áÇÇN\x0eÄ\x06\x04\x03\x01\x01\x13\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÇN\x0eÇt\x0f\x04\0\x01\x06\x04\0\0\0\x06\0\0\0\x06\0\0\0\x03\0\0\0\0\0áÇÇN\x10i(\x05\x04\0\x01\x01\x16\0\0\0\b\0\0\0\b\0\0\0\x03\0\0\0\0\0áÇÇN\x10È\x14\x06\0\0\x01\0\0\0\0\0\0\b\0\0\0\b\0\0\0\x03\0\0\0\0\0áÇÇNY[\x14\x06\0\0\x01\x02 \x03
^ permalink raw reply
* [PATCH 3/3] Bluetooth: btmrvl: operate on 16-bit opcodes instead of ogf/ocf
From: Bing Zhao @ 2013-10-31 22:08 UTC (permalink / raw)
To: linux-bluetooth
Cc: Marcel Holtmann, Gustavo Padovan, Johan Hedberg, Mike Frysinger,
Amitkumar Karwar, Bing Zhao
In-Reply-To: <1383257311-1430-1-git-send-email-bzhao@marvell.com>
Replace ogf/ocf and its packing with 16-bit opcodes.
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
---
drivers/bluetooth/btmrvl_drv.h | 19 +++++++++++--------
drivers/bluetooth/btmrvl_main.c | 21 +++++++++------------
2 files changed, 20 insertions(+), 20 deletions(-)
diff --git a/drivers/bluetooth/btmrvl_drv.h b/drivers/bluetooth/btmrvl_drv.h
index ffac0e4..7399303 100644
--- a/drivers/bluetooth/btmrvl_drv.h
+++ b/drivers/bluetooth/btmrvl_drv.h
@@ -86,12 +86,12 @@ struct btmrvl_private {
#define MRVL_VENDOR_PKT 0xFE
-/* Bluetooth commands */
-#define BT_CMD_AUTO_SLEEP_MODE 0x23
-#define BT_CMD_HOST_SLEEP_CONFIG 0x59
-#define BT_CMD_HOST_SLEEP_ENABLE 0x5A
-#define BT_CMD_MODULE_CFG_REQ 0x5B
-#define BT_CMD_LOAD_CONFIG_DATA 0x61
+/* Vendor specific Bluetooth commands */
+#define BT_CMD_AUTO_SLEEP_MODE 0xFC23
+#define BT_CMD_HOST_SLEEP_CONFIG 0xFC59
+#define BT_CMD_HOST_SLEEP_ENABLE 0xFC5A
+#define BT_CMD_MODULE_CFG_REQ 0xFC5B
+#define BT_CMD_LOAD_CONFIG_DATA 0xFC61
/* Sub-commands: Module Bringup/Shutdown Request/Response */
#define MODULE_BRINGUP_REQ 0xF1
@@ -100,6 +100,11 @@ struct btmrvl_private {
#define MODULE_SHUTDOWN_REQ 0xF2
+/* Vendor specific Bluetooth events */
+#define BT_EVENT_AUTO_SLEEP_MODE 0x23
+#define BT_EVENT_HOST_SLEEP_CONFIG 0x59
+#define BT_EVENT_HOST_SLEEP_ENABLE 0x5A
+#define BT_EVENT_MODULE_CFG_REQ 0x5B
#define BT_EVENT_POWER_STATE 0x20
/* Bluetooth Power States */
@@ -107,8 +112,6 @@ struct btmrvl_private {
#define BT_PS_DISABLE 0x03
#define BT_PS_SLEEP 0x01
-#define OGF 0x3F
-
/* Host Sleep states */
#define HS_ACTIVATED 0x01
#define HS_DEACTIVATED 0x00
diff --git a/drivers/bluetooth/btmrvl_main.c b/drivers/bluetooth/btmrvl_main.c
index f13bef8..1e0320a 100644
--- a/drivers/bluetooth/btmrvl_main.c
+++ b/drivers/bluetooth/btmrvl_main.c
@@ -50,12 +50,10 @@ bool btmrvl_check_evtpkt(struct btmrvl_private *priv, struct sk_buff *skb)
if (hdr->evt == HCI_EV_CMD_COMPLETE) {
struct hci_ev_cmd_complete *ec;
- u16 opcode, ocf, ogf;
+ u16 opcode;
ec = (void *) (skb->data + HCI_EVENT_HDR_SIZE);
opcode = __le16_to_cpu(ec->opcode);
- ocf = hci_opcode_ocf(opcode);
- ogf = hci_opcode_ogf(opcode);
if (priv->btmrvl_dev.sendcmdflag) {
priv->btmrvl_dev.sendcmdflag = false;
@@ -63,9 +61,8 @@ bool btmrvl_check_evtpkt(struct btmrvl_private *priv, struct sk_buff *skb)
wake_up_interruptible(&priv->adapter->cmd_wait_q);
}
- if (ogf == OGF) {
- BT_DBG("vendor event skipped: ogf 0x%4.4x ocf 0x%4.4x",
- ogf, ocf);
+ if (hci_opcode_ogf(opcode) == 0x3F) {
+ BT_DBG("vendor event skipped: opcode=%#4.4x", opcode);
kfree_skb(skb);
return false;
}
@@ -89,7 +86,7 @@ int btmrvl_process_event(struct btmrvl_private *priv, struct sk_buff *skb)
}
switch (event->data[0]) {
- case BT_CMD_AUTO_SLEEP_MODE:
+ case BT_EVENT_AUTO_SLEEP_MODE:
if (!event->data[2]) {
if (event->data[1] == BT_PS_ENABLE)
adapter->psmode = 1;
@@ -102,7 +99,7 @@ int btmrvl_process_event(struct btmrvl_private *priv, struct sk_buff *skb)
}
break;
- case BT_CMD_HOST_SLEEP_CONFIG:
+ case BT_EVENT_HOST_SLEEP_CONFIG:
if (!event->data[3])
BT_DBG("gpio=%x, gap=%x", event->data[1],
event->data[2]);
@@ -110,7 +107,7 @@ int btmrvl_process_event(struct btmrvl_private *priv, struct sk_buff *skb)
BT_DBG("HSCFG command failed");
break;
- case BT_CMD_HOST_SLEEP_ENABLE:
+ case BT_EVENT_HOST_SLEEP_ENABLE:
if (!event->data[1]) {
adapter->hs_state = HS_ACTIVATED;
if (adapter->psmode)
@@ -121,7 +118,7 @@ int btmrvl_process_event(struct btmrvl_private *priv, struct sk_buff *skb)
}
break;
- case BT_CMD_MODULE_CFG_REQ:
+ case BT_EVENT_MODULE_CFG_REQ:
if (priv->btmrvl_dev.sendcmdflag &&
event->data[1] == MODULE_BRINGUP_REQ) {
BT_DBG("EVENT:%s",
@@ -166,7 +163,7 @@ exit:
}
EXPORT_SYMBOL_GPL(btmrvl_process_event);
-static int btmrvl_send_sync_cmd(struct btmrvl_private *priv, u16 cmd_no,
+static int btmrvl_send_sync_cmd(struct btmrvl_private *priv, u16 opcode,
const void *param, u8 len)
{
struct sk_buff *skb;
@@ -179,7 +176,7 @@ static int btmrvl_send_sync_cmd(struct btmrvl_private *priv, u16 cmd_no,
}
hdr = (struct hci_command_hdr *)skb_put(skb, HCI_COMMAND_HDR_SIZE);
- hdr->opcode = cpu_to_le16(hci_opcode_pack(OGF, cmd_no));
+ hdr->opcode = cpu_to_le16(opcode);
hdr->plen = len;
if (len)
--
1.8.0
^ permalink raw reply related
* [PATCH 2/3] Bluetooth: btmrvl: remove cal-data byte swapping and redundant mem copy
From: Bing Zhao @ 2013-10-31 22:08 UTC (permalink / raw)
To: linux-bluetooth
Cc: Marcel Holtmann, Gustavo Padovan, Johan Hedberg, Mike Frysinger,
Amitkumar Karwar, Bing Zhao
In-Reply-To: <1383257311-1430-1-git-send-email-bzhao@marvell.com>
The device tree property can define the cal-data in proper order.
There is no need to swap the bytes in driver.
Also remove the redundant cal-data memory copy after removing the
byte swapping.
Cc: Mike Frysinger <vapier@chromium.org>
Cc: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: Hyuckjoo Lee <hyuckjoo.lee@samsung.com>
---
drivers/bluetooth/btmrvl_drv.h | 2 +-
drivers/bluetooth/btmrvl_main.c | 27 ++++++++++-----------------
2 files changed, 11 insertions(+), 18 deletions(-)
diff --git a/drivers/bluetooth/btmrvl_drv.h b/drivers/bluetooth/btmrvl_drv.h
index be76851..ffac0e4 100644
--- a/drivers/bluetooth/btmrvl_drv.h
+++ b/drivers/bluetooth/btmrvl_drv.h
@@ -117,7 +117,7 @@ struct btmrvl_private {
#define PS_SLEEP 0x01
#define PS_AWAKE 0x00
-#define BT_CMD_DATA_SIZE 32
+#define BT_CAL_HDR_LEN 4
#define BT_CAL_DATA_SIZE 28
struct btmrvl_event {
diff --git a/drivers/bluetooth/btmrvl_main.c b/drivers/bluetooth/btmrvl_main.c
index a17812d..f13bef8 100644
--- a/drivers/bluetooth/btmrvl_main.c
+++ b/drivers/bluetooth/btmrvl_main.c
@@ -418,28 +418,20 @@ static int btmrvl_open(struct hci_dev *hdev)
}
static int btmrvl_download_cal_data(struct btmrvl_private *priv,
- u8 *config_data)
+ u8 *data, int len)
{
- int i, ret;
- u8 data[BT_CMD_DATA_SIZE];
+ int ret;
data[0] = 0x00;
data[1] = 0x00;
data[2] = 0x00;
- data[3] = BT_CMD_DATA_SIZE - 4;
-
- /* Swap cal-data bytes. Each four bytes are swapped. Considering 4
- * byte SDIO header offset, mapping of input and output bytes will be
- * {3, 2, 1, 0} -> {0+4, 1+4, 2+4, 3+4},
- * {7, 6, 5, 4} -> {4+4, 5+4, 6+4, 7+4} */
- for (i = 4; i < BT_CMD_DATA_SIZE; i++)
- data[i] = config_data[(i / 4) * 8 - 1 - i];
+ data[3] = len;
print_hex_dump_bytes("Calibration data: ",
- DUMP_PREFIX_OFFSET, data, BT_CMD_DATA_SIZE);
+ DUMP_PREFIX_OFFSET, data, BT_CAL_HDR_LEN + len);
ret = btmrvl_send_sync_cmd(priv, BT_CMD_LOAD_CONFIG_DATA, data,
- BT_CMD_DATA_SIZE);
+ BT_CAL_HDR_LEN + len);
if (ret)
BT_ERR("Failed to download caibration data\n");
@@ -449,7 +441,7 @@ static int btmrvl_download_cal_data(struct btmrvl_private *priv,
static int btmrvl_cal_data_dt(struct btmrvl_private *priv)
{
struct device_node *dt_node;
- u8 cal_data[BT_CAL_DATA_SIZE];
+ u8 cal_data[BT_CAL_HDR_LEN + BT_CAL_DATA_SIZE];
const char name[] = "btmrvl_caldata";
const char property[] = "btmrvl,caldata";
int ret;
@@ -458,13 +450,14 @@ static int btmrvl_cal_data_dt(struct btmrvl_private *priv)
if (!dt_node)
return -ENODEV;
- ret = of_property_read_u8_array(dt_node, property, cal_data,
- sizeof(cal_data));
+ ret = of_property_read_u8_array(dt_node, property,
+ cal_data + BT_CAL_HDR_LEN,
+ BT_CAL_DATA_SIZE);
if (ret)
return ret;
BT_DBG("Use cal data from device tree");
- ret = btmrvl_download_cal_data(priv, cal_data);
+ ret = btmrvl_download_cal_data(priv, cal_data, BT_CAL_DATA_SIZE);
if (ret) {
BT_ERR("Fail to download calibrate data");
return ret;
--
1.8.0
^ permalink raw reply related
* [PATCH 1/3] Bluetooth: btmrvl: use cal-data from device-tree instead of conf file
From: Bing Zhao @ 2013-10-31 22:08 UTC (permalink / raw)
To: linux-bluetooth
Cc: Marcel Holtmann, Gustavo Padovan, Johan Hedberg, Mike Frysinger,
Amitkumar Karwar, Bing Zhao
The cal-data is platform dependent. It's simpler and more feasible
to use device tree based cal-data instead of configuration file
based cal-data.
This patch remove configuration file based cal-data downloading
and replace it using cal-data from device tree.
Cc: Mike Frysinger <vapier@chromium.org>
Cc: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: Hyuckjoo Lee <hyuckjoo.lee@samsung.com>
---
drivers/bluetooth/btmrvl_drv.h | 4 --
drivers/bluetooth/btmrvl_main.c | 92 ++++++++---------------------------------
drivers/bluetooth/btmrvl_sdio.c | 9 +---
drivers/bluetooth/btmrvl_sdio.h | 2 -
4 files changed, 18 insertions(+), 89 deletions(-)
diff --git a/drivers/bluetooth/btmrvl_drv.h b/drivers/bluetooth/btmrvl_drv.h
index f9d1833..be76851 100644
--- a/drivers/bluetooth/btmrvl_drv.h
+++ b/drivers/bluetooth/btmrvl_drv.h
@@ -23,8 +23,6 @@
#include <linux/bitops.h>
#include <linux/slab.h>
#include <net/bluetooth/bluetooth.h>
-#include <linux/ctype.h>
-#include <linux/firmware.h>
#define BTM_HEADER_LEN 4
#define BTM_UPLD_SIZE 2312
@@ -43,8 +41,6 @@ struct btmrvl_thread {
struct btmrvl_device {
void *card;
struct hci_dev *hcidev;
- struct device *dev;
- const char *cal_data;
u8 dev_type;
diff --git a/drivers/bluetooth/btmrvl_main.c b/drivers/bluetooth/btmrvl_main.c
index 5cf31c4..a17812d 100644
--- a/drivers/bluetooth/btmrvl_main.c
+++ b/drivers/bluetooth/btmrvl_main.c
@@ -19,7 +19,7 @@
**/
#include <linux/module.h>
-
+#include <linux/of.h>
#include <net/bluetooth/bluetooth.h>
#include <net/bluetooth/hci_core.h>
@@ -417,52 +417,8 @@ static int btmrvl_open(struct hci_dev *hdev)
return 0;
}
-/*
- * This function parses provided calibration data input. It should contain
- * hex bytes separated by space or new line character. Here is an example.
- * 00 1C 01 37 FF FF FF FF 02 04 7F 01
- * CE BA 00 00 00 2D C6 C0 00 00 00 00
- * 00 F0 00 00
- */
-static int btmrvl_parse_cal_cfg(const u8 *src, u32 len, u8 *dst, u32 dst_size)
-{
- const u8 *s = src;
- u8 *d = dst;
- int ret;
- u8 tmp[3];
-
- tmp[2] = '\0';
- while ((s - src) <= len - 2) {
- if (isspace(*s)) {
- s++;
- continue;
- }
-
- if (isxdigit(*s)) {
- if ((d - dst) >= dst_size) {
- BT_ERR("calibration data file too big!!!");
- return -EINVAL;
- }
-
- memcpy(tmp, s, 2);
-
- ret = kstrtou8(tmp, 16, d++);
- if (ret < 0)
- return ret;
-
- s += 2;
- } else {
- return -EINVAL;
- }
- }
- if (d == dst)
- return -EINVAL;
-
- return 0;
-}
-
-static int btmrvl_load_cal_data(struct btmrvl_private *priv,
- u8 *config_data)
+static int btmrvl_download_cal_data(struct btmrvl_private *priv,
+ u8 *config_data)
{
int i, ret;
u8 data[BT_CMD_DATA_SIZE];
@@ -490,54 +446,40 @@ static int btmrvl_load_cal_data(struct btmrvl_private *priv,
return 0;
}
-static int
-btmrvl_process_cal_cfg(struct btmrvl_private *priv, u8 *data, u32 size)
+static int btmrvl_cal_data_dt(struct btmrvl_private *priv)
{
+ struct device_node *dt_node;
u8 cal_data[BT_CAL_DATA_SIZE];
+ const char name[] = "btmrvl_caldata";
+ const char property[] = "btmrvl,caldata";
int ret;
- ret = btmrvl_parse_cal_cfg(data, size, cal_data, sizeof(cal_data));
+ dt_node = of_find_node_by_name(NULL, name);
+ if (!dt_node)
+ return -ENODEV;
+
+ ret = of_property_read_u8_array(dt_node, property, cal_data,
+ sizeof(cal_data));
if (ret)
return ret;
- ret = btmrvl_load_cal_data(priv, cal_data);
+ BT_DBG("Use cal data from device tree");
+ ret = btmrvl_download_cal_data(priv, cal_data);
if (ret) {
- BT_ERR("Fail to load calibrate data");
+ BT_ERR("Fail to download calibrate data");
return ret;
}
return 0;
}
-static int btmrvl_cal_data_config(struct btmrvl_private *priv)
-{
- const struct firmware *cfg;
- int ret;
- const char *cal_data = priv->btmrvl_dev.cal_data;
-
- if (!cal_data)
- return 0;
-
- ret = request_firmware(&cfg, cal_data, priv->btmrvl_dev.dev);
- if (ret < 0) {
- BT_DBG("Failed to get %s file, skipping cal data download",
- cal_data);
- return 0;
- }
-
- ret = btmrvl_process_cal_cfg(priv, (u8 *)cfg->data, cfg->size);
- release_firmware(cfg);
- return ret;
-}
-
static int btmrvl_setup(struct hci_dev *hdev)
{
struct btmrvl_private *priv = hci_get_drvdata(hdev);
btmrvl_send_module_cfg_cmd(priv, MODULE_BRINGUP_REQ);
- if (btmrvl_cal_data_config(priv))
- BT_ERR("Set cal data failed");
+ btmrvl_cal_data_dt(priv);
priv->btmrvl_dev.psmode = 1;
btmrvl_enable_ps(priv);
diff --git a/drivers/bluetooth/btmrvl_sdio.c b/drivers/bluetooth/btmrvl_sdio.c
index fabcf5b..1b52c9f 100644
--- a/drivers/bluetooth/btmrvl_sdio.c
+++ b/drivers/bluetooth/btmrvl_sdio.c
@@ -18,6 +18,7 @@
* this warranty disclaimer.
**/
+#include <linux/firmware.h>
#include <linux/slab.h>
#include <linux/mmc/sdio_ids.h>
@@ -101,7 +102,6 @@ static const struct btmrvl_sdio_card_reg btmrvl_reg_88xx = {
static const struct btmrvl_sdio_device btmrvl_sdio_sd8688 = {
.helper = "mrvl/sd8688_helper.bin",
.firmware = "mrvl/sd8688.bin",
- .cal_data = NULL,
.reg = &btmrvl_reg_8688,
.sd_blksz_fw_dl = 64,
};
@@ -109,7 +109,6 @@ static const struct btmrvl_sdio_device btmrvl_sdio_sd8688 = {
static const struct btmrvl_sdio_device btmrvl_sdio_sd8787 = {
.helper = NULL,
.firmware = "mrvl/sd8787_uapsta.bin",
- .cal_data = NULL,
.reg = &btmrvl_reg_87xx,
.sd_blksz_fw_dl = 256,
};
@@ -117,7 +116,6 @@ static const struct btmrvl_sdio_device btmrvl_sdio_sd8787 = {
static const struct btmrvl_sdio_device btmrvl_sdio_sd8797 = {
.helper = NULL,
.firmware = "mrvl/sd8797_uapsta.bin",
- .cal_data = "mrvl/sd8797_caldata.conf",
.reg = &btmrvl_reg_87xx,
.sd_blksz_fw_dl = 256,
};
@@ -125,7 +123,6 @@ static const struct btmrvl_sdio_device btmrvl_sdio_sd8797 = {
static const struct btmrvl_sdio_device btmrvl_sdio_sd8897 = {
.helper = NULL,
.firmware = "mrvl/sd8897_uapsta.bin",
- .cal_data = NULL,
.reg = &btmrvl_reg_88xx,
.sd_blksz_fw_dl = 256,
};
@@ -1007,7 +1004,6 @@ static int btmrvl_sdio_probe(struct sdio_func *func,
struct btmrvl_sdio_device *data = (void *) id->driver_data;
card->helper = data->helper;
card->firmware = data->firmware;
- card->cal_data = data->cal_data;
card->reg = data->reg;
card->sd_blksz_fw_dl = data->sd_blksz_fw_dl;
}
@@ -1036,8 +1032,6 @@ static int btmrvl_sdio_probe(struct sdio_func *func,
}
card->priv = priv;
- priv->btmrvl_dev.dev = &card->func->dev;
- priv->btmrvl_dev.cal_data = card->cal_data;
/* Initialize the interface specific function pointers */
priv->hw_host_to_card = btmrvl_sdio_host_to_card;
@@ -1220,5 +1214,4 @@ MODULE_FIRMWARE("mrvl/sd8688_helper.bin");
MODULE_FIRMWARE("mrvl/sd8688.bin");
MODULE_FIRMWARE("mrvl/sd8787_uapsta.bin");
MODULE_FIRMWARE("mrvl/sd8797_uapsta.bin");
-MODULE_FIRMWARE("mrvl/sd8797_caldata.conf");
MODULE_FIRMWARE("mrvl/sd8897_uapsta.bin");
diff --git a/drivers/bluetooth/btmrvl_sdio.h b/drivers/bluetooth/btmrvl_sdio.h
index 6872d9e..43d35a6 100644
--- a/drivers/bluetooth/btmrvl_sdio.h
+++ b/drivers/bluetooth/btmrvl_sdio.h
@@ -85,7 +85,6 @@ struct btmrvl_sdio_card {
u32 ioport;
const char *helper;
const char *firmware;
- const char *cal_data;
const struct btmrvl_sdio_card_reg *reg;
u16 sd_blksz_fw_dl;
u8 rx_unit;
@@ -95,7 +94,6 @@ struct btmrvl_sdio_card {
struct btmrvl_sdio_device {
const char *helper;
const char *firmware;
- const char *cal_data;
const struct btmrvl_sdio_card_reg *reg;
u16 sd_blksz_fw_dl;
};
--
1.8.0
^ permalink raw reply related
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