From 587194873820a4a1b2eda260ac851394095afd77 Mon Sep 17 00:00:00 2001 From: Xenia Ragiadakou Date: Mon, 9 Sep 2013 21:03:09 +0300 Subject: [PATCH 01/81] xhci: convert TRB_CYCLE to le32 before using it to set Link TRB's cycle bit This patch converts TRB_CYCLE to le32 to update correctly the Cycle Bit in 'control' field of the link TRB. This bug was found using sparse. Signed-off-by: Xenia Ragiadakou Signed-off-by: Sarah Sharp --- drivers/usb/host/xhci-mem.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c index 49b8bd063fab..90709cf45ee5 100644 --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c @@ -57,7 +57,7 @@ static struct xhci_segment *xhci_segment_alloc(struct xhci_hcd *xhci, /* If the cycle state is 0, set the cycle bit to 1 for all the TRBs */ if (cycle_state == 0) { for (i = 0; i < TRBS_PER_SEGMENT; i++) - seg->trbs[i].link.control |= TRB_CYCLE; + seg->trbs[i].link.control |= cpu_to_le32(TRB_CYCLE); } seg->dma = dma; seg->next = NULL; @@ -308,7 +308,8 @@ static void xhci_reinit_cached_ring(struct xhci_hcd *xhci, sizeof(union xhci_trb)*TRBS_PER_SEGMENT); if (cycle_state == 0) { for (i = 0; i < TRBS_PER_SEGMENT; i++) - seg->trbs[i].link.control |= TRB_CYCLE; + seg->trbs[i].link.control |= + cpu_to_le32(TRB_CYCLE); } /* All endpoint rings have link TRBs */ xhci_link_segments(xhci, seg, seg->next, type); From 7e76ad431545d013911ddc744843118b43d01e89 Mon Sep 17 00:00:00 2001 From: Xenia Ragiadakou Date: Mon, 9 Sep 2013 21:03:10 +0300 Subject: [PATCH 02/81] xhci: fix incorrect type in assignment in handle_device_notification() This patch converts Event TRB's 3rd field, which has type le32, to CPU byteorder before using it to retrieve the Slot ID with TRB_TO_SLOT_ID macro. This bug was found using sparse. Signed-off-by: Xenia Ragiadakou Signed-off-by: Sarah Sharp --- drivers/usb/host/xhci-ring.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c index 1e2f3f495843..22da09388a74 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -1655,7 +1655,7 @@ static void handle_device_notification(struct xhci_hcd *xhci, u32 slot_id; struct usb_device *udev; - slot_id = TRB_TO_SLOT_ID(event->generic.field[3]); + slot_id = TRB_TO_SLOT_ID(le32_to_cpu(event->generic.field[3])); if (!xhci->devs[slot_id]) { xhci_warn(xhci, "Device Notification event for " "unused slot %u\n", slot_id); From f00466963817c8a240f022af864cdc39d482cdb7 Mon Sep 17 00:00:00 2001 From: Xenia Ragiadakou Date: Mon, 9 Sep 2013 21:03:11 +0300 Subject: [PATCH 03/81] xhci: fix derivation of TRB's DMA address in xhci_log_event Trace Event Class This patch fixes the retrieval of the DMA address of the TRB that generated the event by converting the field[0] (low address bits) and field[1] (high address bits) to CPU byteorder and then typecasting field[1] to u64 so that the bitshift will not lead to overflow. In the original code, the typecasting of le32 to u64 was incorrect and the subsequent conversion to le64 reverts the low and high address parts. This bug was found using sparse. Signed-off-by: Xenia Ragiadakou Signed-off-by: Sarah Sharp --- drivers/usb/host/xhci-trace.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/usb/host/xhci-trace.h b/drivers/usb/host/xhci-trace.h index 20364cc8d2fb..afe093340834 100644 --- a/drivers/usb/host/xhci-trace.h +++ b/drivers/usb/host/xhci-trace.h @@ -120,8 +120,8 @@ DECLARE_EVENT_CLASS(xhci_log_event, ), TP_fast_assign( __entry->va = trb_va; - __entry->dma = le64_to_cpu(((u64)ev->field[1]) << 32 | - ev->field[0]); + __entry->dma = ((u64)le32_to_cpu(ev->field[1])) << 32 | + le32_to_cpu(ev->field[0]); __entry->status = le32_to_cpu(ev->field[2]); __entry->flags = le32_to_cpu(ev->field[3]); memcpy(__get_dynamic_array(trb), trb_va, From d20c72256721411f55eb95beddf1d8a5d5da31eb Mon Sep 17 00:00:00 2001 From: Xenia Ragiadakou Date: Mon, 9 Sep 2013 21:03:12 +0300 Subject: [PATCH 04/81] xhci: fix sparse warning in xhci-trace.h This patch fixes the following sparse warnings: drivers/usb/host/./xhci-trace.h:116:1: warning: cast to restricted __le32 drivers/usb/host/./xhci-trace.h:116:1: warning: cast to restricted __le32 drivers/usb/host/./xhci-trace.h:116:1: warning: restricted __le32 degrades to integer drivers/usb/host/./xhci-trace.h:116:1: warning: restricted __le32 degrades to integer by converting the field 'trb' of the trace buffer entry structure from array with elements of type __le32 to an array with elements of type u8. Into the trb array are copied the contents of the TRB that generated the event. The trace-cmd tool with the help of plugin_xhci.py will use this field to parse the TRB contents in a human readable way. Signed-off-by: Xenia Ragiadakou Signed-off-by: Sarah Sharp --- drivers/usb/host/xhci-trace.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/host/xhci-trace.h b/drivers/usb/host/xhci-trace.h index afe093340834..dde3959b7a33 100644 --- a/drivers/usb/host/xhci-trace.h +++ b/drivers/usb/host/xhci-trace.h @@ -116,7 +116,7 @@ DECLARE_EVENT_CLASS(xhci_log_event, __field(u64, dma) __field(u32, status) __field(u32, flags) - __dynamic_array(__le32, trb, 4) + __dynamic_array(u8, trb, sizeof(struct xhci_generic_trb)) ), TP_fast_assign( __entry->va = trb_va; From 0c052aabe66c495bf1248f301a8e745da66c6633 Mon Sep 17 00:00:00 2001 From: Xenia Ragiadakou Date: Fri, 15 Nov 2013 03:18:07 +0200 Subject: [PATCH 05/81] xhci: fix incorrect type in assignment in xhci_address_device() The field 'dev_info' in struct xhci_slot_ctx has type __le32 and it needs to be converted to CPU byteorder for the correct retrieval of its subfield 'Context Entries'. This field is used by the trace event 'xhci_address_ctx' to trace only the contexts of valid endpoints. This bug was found using sparse. Signed-off-by: Xenia Ragiadakou Signed-off-by: Sarah Sharp --- drivers/usb/host/xhci.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 4265b48856f6..a96b35cf4fa7 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -3771,7 +3771,7 @@ int xhci_address_device(struct usb_hcd *hcd, struct usb_device *udev) xhci_dbg(xhci, "Slot ID %d Input Context:\n", udev->slot_id); xhci_dbg_ctx(xhci, virt_dev->in_ctx, 2); trace_xhci_address_ctx(xhci, virt_dev->in_ctx, - slot_ctx->dev_info >> 27); + le32_to_cpu(slot_ctx->dev_info) >> 27); spin_lock_irqsave(&xhci->lock, flags); cmd_trb = xhci_find_next_enqueue(xhci->cmd_ring); @@ -3850,7 +3850,7 @@ int xhci_address_device(struct usb_hcd *hcd, struct usb_device *udev) xhci_dbg(xhci, "Slot ID %d Input Context:\n", udev->slot_id); xhci_dbg_ctx(xhci, virt_dev->in_ctx, 2); trace_xhci_address_ctx(xhci, virt_dev->in_ctx, - slot_ctx->dev_info >> 27); + le32_to_cpu(slot_ctx->dev_info) >> 27); xhci_dbg(xhci, "Slot ID %d Output Context:\n", udev->slot_id); xhci_dbg_ctx(xhci, virt_dev->out_ctx, 2); /* @@ -3859,7 +3859,7 @@ int xhci_address_device(struct usb_hcd *hcd, struct usb_device *udev) */ slot_ctx = xhci_get_slot_ctx(xhci, virt_dev->out_ctx); trace_xhci_address_ctx(xhci, virt_dev->out_ctx, - slot_ctx->dev_info >> 27); + le32_to_cpu(slot_ctx->dev_info) >> 27); /* Zero the input context control for later use */ ctrl_ctx->add_flags = 0; ctrl_ctx->drop_flags = 0; From 64ba419b7a5acf5fc934bfad9cc46c7f17ab8026 Mon Sep 17 00:00:00 2001 From: Xenia Ragiadakou Date: Mon, 26 Aug 2013 23:29:46 +0300 Subject: [PATCH 06/81] xhci: replace USB_MAXINTERFACES with config->desc.bNumInterface This patch replaces USB_MAXINTERFACES with config->desc.bNumInterface in the termination condition for the loop that updates the LPM timeout of the endpoints on the cofiguration's interfaces, in xhci_calculate_lpm_timeout(), to avoid unnecessary loop cycles since most configurations come with 1-2 interfaces while USB_MAXINTERFACES is 32. Signed-off-by: Xenia Ragiadakou Signed-off-by: Sarah Sharp --- drivers/usb/host/xhci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index a96b35cf4fa7..1798c5353102 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -4455,7 +4455,7 @@ static u16 xhci_calculate_lpm_timeout(struct usb_hcd *hcd, if (!config) return timeout; - for (i = 0; i < USB_MAXINTERFACES; i++) { + for (i = 0; i < config->desc.bNumInterfaces; i++) { struct usb_driver *driver; struct usb_interface *intf = config->interface[i]; From 63a67a72d63dd077c2313cf19eb29d8e4bfa6963 Mon Sep 17 00:00:00 2001 From: Xenia Ragiadakou Date: Mon, 26 Aug 2013 23:29:47 +0300 Subject: [PATCH 07/81] xhci: fix SCT_FOR_CTX(p) macro SCT_FOR_CTX(p) is defined as (((p) << 1) & 0x7) in which case if we want to set the stream context type to SCT_SSA_256 i.e 0x7 (although secondary stream arrays are not yet supported) using this macro definition we will get actually 0x6 which is not what we want. This patch fixes the above issue by defining the SCT_FOR_CTX(p) macro as (((p) & 0x7) << 1) Signed-off-by: Xenia Ragiadakou Signed-off-by: Sarah Sharp --- drivers/usb/host/xhci.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h index 03c74b7965f8..a33e8b5bf7a2 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h @@ -752,7 +752,7 @@ struct xhci_stream_ctx { }; /* Stream Context Types (section 6.4.1) - bits 3:1 of stream ctx deq ptr */ -#define SCT_FOR_CTX(p) (((p) << 1) & 0x7) +#define SCT_FOR_CTX(p) (((p) & 0x7) << 1) /* Secondary stream array type, dequeue pointer is to a transfer ring */ #define SCT_SEC_TR 0 /* Primary stream array type, dequeue pointer is to a transfer ring */ From 0d3703be3a671ca225a796f4ae6e904dd83c2e07 Mon Sep 17 00:00:00 2001 From: Xenia Ragiadakou Date: Mon, 26 Aug 2013 23:29:48 +0300 Subject: [PATCH 08/81] xhci: remove unnecessary check in xhci_free_stream_info() This patch removes the unneccessary check 'if (stream_info)' because there is already a check few lines above which ensures that stream_info is not NULL. Signed-off-by: Xenia Ragiadakou Signed-off-by: Sarah Sharp --- drivers/usb/host/xhci-mem.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c index 90709cf45ee5..1445e08819cf 100644 --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c @@ -722,8 +722,7 @@ void xhci_free_stream_info(struct xhci_hcd *xhci, stream_info->stream_ctx_array, stream_info->ctx_array_dma); - if (stream_info) - kfree(stream_info->stream_rings); + kfree(stream_info->stream_rings); kfree(stream_info); } From ef73400ca5d1ad695374988510b9977c41b81f3e Mon Sep 17 00:00:00 2001 From: Xenia Ragiadakou Date: Mon, 9 Sep 2013 21:03:06 +0300 Subject: [PATCH 09/81] xhci: fix incorrect type in assignment in xhci_count_num_new_endpoints() The fields 'add_flags' and 'drop_flags' in struct xhci_input_control_ctx have type __le32 and need to be converted to CPU byteorder before being used to derive the number of added endpoints. This bug was found using sparse. This patch is not suitable for stable, since the bug would only be triggered on big endian systems, and the code only runs for Intel xHCI host controllers, which are always integrated into little endian systems. Signed-off-by: Xenia Ragiadakou Signed-off-by: Sarah Sharp --- drivers/usb/host/xhci.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 1798c5353102..b7289e9a44dd 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -1892,8 +1892,8 @@ static u32 xhci_count_num_new_endpoints(struct xhci_hcd *xhci, * (bit 1). The default control endpoint is added during the Address * Device command and is never removed until the slot is disabled. */ - valid_add_flags = ctrl_ctx->add_flags >> 2; - valid_drop_flags = ctrl_ctx->drop_flags >> 2; + valid_add_flags = le32_to_cpu(ctrl_ctx->add_flags) >> 2; + valid_drop_flags = le32_to_cpu(ctrl_ctx->drop_flags) >> 2; /* Use hweight32 to count the number of ones in the add flags, or * number of endpoints added. Don't count endpoints that are changed From 78d1ff025698e1a70e3fef38342648d4dc826cf6 Mon Sep 17 00:00:00 2001 From: Xenia Ragiadakou Date: Mon, 9 Sep 2013 21:03:07 +0300 Subject: [PATCH 10/81] xhci: fix incorrect type in assignment in xhci_count_num_dropped_endpoints() The fields 'add_flags' and 'drop_flags' in struct xhci_input_control_ctx have type __le32 and need to be converted to CPU byteorder before being used to derive the number of dropped endpoints. This bug was found using sparse. This patch is not suitable for stable, since the bug would only be triggered on big endian systems, and the code only runs for Intel xHCI host controllers, which are always integrated into little endian systems. Signed-off-by: Xenia Ragiadakou Signed-off-by: Sarah Sharp --- drivers/usb/host/xhci.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index b7289e9a44dd..900ba36ee2b8 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -1909,8 +1909,8 @@ static unsigned int xhci_count_num_dropped_endpoints(struct xhci_hcd *xhci, u32 valid_add_flags; u32 valid_drop_flags; - valid_add_flags = ctrl_ctx->add_flags >> 2; - valid_drop_flags = ctrl_ctx->drop_flags >> 2; + valid_add_flags = le32_to_cpu(ctrl_ctx->add_flags) >> 2; + valid_drop_flags = le32_to_cpu(ctrl_ctx->drop_flags) >> 2; return hweight32(valid_drop_flags) - hweight32(valid_add_flags & valid_drop_flags); From 2a100047481a5c7430c72883b586eb6f2df34812 Mon Sep 17 00:00:00 2001 From: Xenia Ragiadakou Date: Fri, 15 Nov 2013 03:18:08 +0200 Subject: [PATCH 11/81] xhci: remove conversion from generic to pci device in xhci_mem.c This patch removes the to_pci_dev() conversion performed to generic struct device since it is not actually useful (the pointer to the generic device can be used directly rather through a conversion to pci_dev) and it is pci bus specific. This isn't stable material because this code will produce harmless behavior on non-PCI xHCI hosts. The pci_device pointer is never dereferenced, only used to re-calculate the underlying device pointer. Signed-off-by: Xenia Ragiadakou Signed-off-by: Sarah Sharp --- drivers/usb/host/xhci-mem.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c index 1445e08819cf..99e7251c2b65 100644 --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c @@ -433,10 +433,10 @@ static void xhci_free_stream_ctx(struct xhci_hcd *xhci, unsigned int num_stream_ctxs, struct xhci_stream_ctx *stream_ctx, dma_addr_t dma) { - struct pci_dev *pdev = to_pci_dev(xhci_to_hcd(xhci)->self.controller); + struct device *dev = xhci_to_hcd(xhci)->self.controller; if (num_stream_ctxs > MEDIUM_STREAM_ARRAY_SIZE) - dma_free_coherent(&pdev->dev, + dma_free_coherent(dev, sizeof(struct xhci_stream_ctx)*num_stream_ctxs, stream_ctx, dma); else if (num_stream_ctxs <= SMALL_STREAM_ARRAY_SIZE) @@ -461,10 +461,10 @@ static struct xhci_stream_ctx *xhci_alloc_stream_ctx(struct xhci_hcd *xhci, unsigned int num_stream_ctxs, dma_addr_t *dma, gfp_t mem_flags) { - struct pci_dev *pdev = to_pci_dev(xhci_to_hcd(xhci)->self.controller); + struct device *dev = xhci_to_hcd(xhci)->self.controller; if (num_stream_ctxs > MEDIUM_STREAM_ARRAY_SIZE) - return dma_alloc_coherent(&pdev->dev, + return dma_alloc_coherent(dev, sizeof(struct xhci_stream_ctx)*num_stream_ctxs, dma, mem_flags); else if (num_stream_ctxs <= SMALL_STREAM_ARRAY_SIZE) @@ -1616,7 +1616,7 @@ static void scratchpad_free(struct xhci_hcd *xhci) { int num_sp; int i; - struct pci_dev *pdev = to_pci_dev(xhci_to_hcd(xhci)->self.controller); + struct device *dev = xhci_to_hcd(xhci)->self.controller; if (!xhci->scratchpad) return; @@ -1624,13 +1624,13 @@ static void scratchpad_free(struct xhci_hcd *xhci) num_sp = HCS_MAX_SCRATCHPAD(xhci->hcs_params2); for (i = 0; i < num_sp; i++) { - dma_free_coherent(&pdev->dev, xhci->page_size, + dma_free_coherent(dev, xhci->page_size, xhci->scratchpad->sp_buffers[i], xhci->scratchpad->sp_dma_buffers[i]); } kfree(xhci->scratchpad->sp_dma_buffers); kfree(xhci->scratchpad->sp_buffers); - dma_free_coherent(&pdev->dev, num_sp * sizeof(u64), + dma_free_coherent(dev, num_sp * sizeof(u64), xhci->scratchpad->sp_array, xhci->scratchpad->sp_dma); kfree(xhci->scratchpad); @@ -1692,7 +1692,7 @@ void xhci_free_command(struct xhci_hcd *xhci, void xhci_mem_cleanup(struct xhci_hcd *xhci) { - struct pci_dev *pdev = to_pci_dev(xhci_to_hcd(xhci)->self.controller); + struct device *dev = xhci_to_hcd(xhci)->self.controller; struct xhci_cd *cur_cd, *next_cd; int size; int i, j, num_ports; @@ -1700,7 +1700,7 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci) /* Free the Event Ring Segment Table and the actual Event Ring */ size = sizeof(struct xhci_erst_entry)*(xhci->erst.num_entries); if (xhci->erst.entries) - dma_free_coherent(&pdev->dev, size, + dma_free_coherent(dev, size, xhci->erst.entries, xhci->erst.erst_dma_addr); xhci->erst.entries = NULL; xhci_dbg_trace(xhci, trace_xhci_dbg_init, "Freed ERST"); @@ -1748,7 +1748,7 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci) "Freed medium stream array pool"); if (xhci->dcbaa) - dma_free_coherent(&pdev->dev, sizeof(*xhci->dcbaa), + dma_free_coherent(dev, sizeof(*xhci->dcbaa), xhci->dcbaa, xhci->dcbaa->dma); xhci->dcbaa = NULL; From b0ba9720846c980d053b1ffcd766fddfbef95d4c Mon Sep 17 00:00:00 2001 From: Xenia Ragiadakou Date: Fri, 15 Nov 2013 05:34:06 +0200 Subject: [PATCH 12/81] xhci: replace xhci_readl() with readl() Function xhci_readl() is used to read 32bit xHC registers residing in MMIO address space. It takes as first argument a pointer to the xhci_hcd although it does not use it. xhci_readl() internally simply calls readl(). This creates an illusion that xhci_readl() is an xhci specific function that has to be called in a context where a pointer to xhci_hcd is available. Remove the unnecessary xhci_readl() wrapper function and replace its calls to with calls to readl() to make the code more straightforward. Signed-off-by: Xenia Ragiadakou Signed-off-by: Sarah Sharp --- drivers/usb/host/xhci-dbg.c | 36 +++++++-------- drivers/usb/host/xhci-hub.c | 71 +++++++++++++++-------------- drivers/usb/host/xhci-mem.c | 20 ++++----- drivers/usb/host/xhci-ring.c | 12 ++--- drivers/usb/host/xhci.c | 86 ++++++++++++++++++------------------ drivers/usb/host/xhci.h | 5 --- 6 files changed, 112 insertions(+), 118 deletions(-) diff --git a/drivers/usb/host/xhci-dbg.c b/drivers/usb/host/xhci-dbg.c index 73503a81ee81..eb009a457fb5 100644 --- a/drivers/usb/host/xhci-dbg.c +++ b/drivers/usb/host/xhci-dbg.c @@ -32,7 +32,7 @@ void xhci_dbg_regs(struct xhci_hcd *xhci) xhci_dbg(xhci, "// xHCI capability registers at %p:\n", xhci->cap_regs); - temp = xhci_readl(xhci, &xhci->cap_regs->hc_capbase); + temp = readl(&xhci->cap_regs->hc_capbase); xhci_dbg(xhci, "// @%p = 0x%x (CAPLENGTH AND HCIVERSION)\n", &xhci->cap_regs->hc_capbase, temp); xhci_dbg(xhci, "// CAPLENGTH: 0x%x\n", @@ -44,13 +44,13 @@ void xhci_dbg_regs(struct xhci_hcd *xhci) xhci_dbg(xhci, "// xHCI operational registers at %p:\n", xhci->op_regs); - temp = xhci_readl(xhci, &xhci->cap_regs->run_regs_off); + temp = readl(&xhci->cap_regs->run_regs_off); xhci_dbg(xhci, "// @%p = 0x%x RTSOFF\n", &xhci->cap_regs->run_regs_off, (unsigned int) temp & RTSOFF_MASK); xhci_dbg(xhci, "// xHCI runtime registers at %p:\n", xhci->run_regs); - temp = xhci_readl(xhci, &xhci->cap_regs->db_off); + temp = readl(&xhci->cap_regs->db_off); xhci_dbg(xhci, "// @%p = 0x%x DBOFF\n", &xhci->cap_regs->db_off, temp); xhci_dbg(xhci, "// Doorbell array at %p:\n", xhci->dba); } @@ -61,7 +61,7 @@ static void xhci_print_cap_regs(struct xhci_hcd *xhci) xhci_dbg(xhci, "xHCI capability registers at %p:\n", xhci->cap_regs); - temp = xhci_readl(xhci, &xhci->cap_regs->hc_capbase); + temp = readl(&xhci->cap_regs->hc_capbase); xhci_dbg(xhci, "CAPLENGTH AND HCIVERSION 0x%x:\n", (unsigned int) temp); xhci_dbg(xhci, "CAPLENGTH: 0x%x\n", @@ -69,7 +69,7 @@ static void xhci_print_cap_regs(struct xhci_hcd *xhci) xhci_dbg(xhci, "HCIVERSION: 0x%x\n", (unsigned int) HC_VERSION(temp)); - temp = xhci_readl(xhci, &xhci->cap_regs->hcs_params1); + temp = readl(&xhci->cap_regs->hcs_params1); xhci_dbg(xhci, "HCSPARAMS 1: 0x%x\n", (unsigned int) temp); xhci_dbg(xhci, " Max device slots: %u\n", @@ -79,7 +79,7 @@ static void xhci_print_cap_regs(struct xhci_hcd *xhci) xhci_dbg(xhci, " Max ports: %u\n", (unsigned int) HCS_MAX_PORTS(temp)); - temp = xhci_readl(xhci, &xhci->cap_regs->hcs_params2); + temp = readl(&xhci->cap_regs->hcs_params2); xhci_dbg(xhci, "HCSPARAMS 2: 0x%x\n", (unsigned int) temp); xhci_dbg(xhci, " Isoc scheduling threshold: %u\n", @@ -87,7 +87,7 @@ static void xhci_print_cap_regs(struct xhci_hcd *xhci) xhci_dbg(xhci, " Maximum allowed segments in event ring: %u\n", (unsigned int) HCS_ERST_MAX(temp)); - temp = xhci_readl(xhci, &xhci->cap_regs->hcs_params3); + temp = readl(&xhci->cap_regs->hcs_params3); xhci_dbg(xhci, "HCSPARAMS 3 0x%x:\n", (unsigned int) temp); xhci_dbg(xhci, " Worst case U1 device exit latency: %u\n", @@ -95,14 +95,14 @@ static void xhci_print_cap_regs(struct xhci_hcd *xhci) xhci_dbg(xhci, " Worst case U2 device exit latency: %u\n", (unsigned int) HCS_U2_LATENCY(temp)); - temp = xhci_readl(xhci, &xhci->cap_regs->hcc_params); + temp = readl(&xhci->cap_regs->hcc_params); xhci_dbg(xhci, "HCC PARAMS 0x%x:\n", (unsigned int) temp); xhci_dbg(xhci, " HC generates %s bit addresses\n", HCC_64BIT_ADDR(temp) ? "64" : "32"); /* FIXME */ xhci_dbg(xhci, " FIXME: more HCCPARAMS debugging\n"); - temp = xhci_readl(xhci, &xhci->cap_regs->run_regs_off); + temp = readl(&xhci->cap_regs->run_regs_off); xhci_dbg(xhci, "RTSOFF 0x%x:\n", temp & RTSOFF_MASK); } @@ -110,7 +110,7 @@ static void xhci_print_command_reg(struct xhci_hcd *xhci) { u32 temp; - temp = xhci_readl(xhci, &xhci->op_regs->command); + temp = readl(&xhci->op_regs->command); xhci_dbg(xhci, "USBCMD 0x%x:\n", temp); xhci_dbg(xhci, " HC is %s\n", (temp & CMD_RUN) ? "running" : "being stopped"); @@ -128,7 +128,7 @@ static void xhci_print_status(struct xhci_hcd *xhci) { u32 temp; - temp = xhci_readl(xhci, &xhci->op_regs->status); + temp = readl(&xhci->op_regs->status); xhci_dbg(xhci, "USBSTS 0x%x:\n", temp); xhci_dbg(xhci, " Event ring is %sempty\n", (temp & STS_EINT) ? "not " : ""); @@ -163,7 +163,7 @@ static void xhci_print_ports(struct xhci_hcd *xhci) for (j = 0; j < NUM_PORT_REGS; ++j) { xhci_dbg(xhci, "%p port %s reg = 0x%x\n", addr, names[j], - (unsigned int) xhci_readl(xhci, addr)); + (unsigned int) readl(addr)); addr++; } } @@ -177,7 +177,7 @@ void xhci_print_ir_set(struct xhci_hcd *xhci, int set_num) u64 temp_64; addr = &ir_set->irq_pending; - temp = xhci_readl(xhci, addr); + temp = readl(addr); if (temp == XHCI_INIT_VALUE) return; @@ -187,17 +187,17 @@ void xhci_print_ir_set(struct xhci_hcd *xhci, int set_num) (unsigned int)temp); addr = &ir_set->irq_control; - temp = xhci_readl(xhci, addr); + temp = readl(addr); xhci_dbg(xhci, " %p: ir_set.control = 0x%x\n", addr, (unsigned int)temp); addr = &ir_set->erst_size; - temp = xhci_readl(xhci, addr); + temp = readl(addr); xhci_dbg(xhci, " %p: ir_set.erst_size = 0x%x\n", addr, (unsigned int)temp); addr = &ir_set->rsvd; - temp = xhci_readl(xhci, addr); + temp = readl(addr); if (temp != XHCI_INIT_VALUE) xhci_dbg(xhci, " WARN: %p: ir_set.rsvd = 0x%x\n", addr, (unsigned int)temp); @@ -219,12 +219,12 @@ void xhci_print_run_regs(struct xhci_hcd *xhci) int i; xhci_dbg(xhci, "xHCI runtime registers at %p:\n", xhci->run_regs); - temp = xhci_readl(xhci, &xhci->run_regs->microframe_index); + temp = readl(&xhci->run_regs->microframe_index); xhci_dbg(xhci, " %p: Microframe index = 0x%x\n", &xhci->run_regs->microframe_index, (unsigned int) temp); for (i = 0; i < 7; ++i) { - temp = xhci_readl(xhci, &xhci->run_regs->rsvd[i]); + temp = readl(&xhci->run_regs->rsvd[i]); if (temp != XHCI_INIT_VALUE) xhci_dbg(xhci, " WARN: %p: Rsvd[%i] = 0x%x\n", &xhci->run_regs->rsvd[i], diff --git a/drivers/usb/host/xhci-hub.c b/drivers/usb/host/xhci-hub.c index 805f2348eeba..70ed7c94e917 100644 --- a/drivers/usb/host/xhci-hub.c +++ b/drivers/usb/host/xhci-hub.c @@ -94,7 +94,7 @@ static void xhci_usb2_hub_descriptor(struct usb_hcd *hcd, struct xhci_hcd *xhci, */ memset(port_removable, 0, sizeof(port_removable)); for (i = 0; i < ports; i++) { - portsc = xhci_readl(xhci, xhci->usb2_ports[i]); + portsc = readl(xhci->usb2_ports[i]); /* If a device is removable, PORTSC reports a 0, same as in the * hub descriptor DeviceRemovable bits. */ @@ -148,7 +148,7 @@ static void xhci_usb3_hub_descriptor(struct usb_hcd *hcd, struct xhci_hcd *xhci, port_removable = 0; /* bit 0 is reserved, bit 1 is for port 1, etc. */ for (i = 0; i < ports; i++) { - portsc = xhci_readl(xhci, xhci->usb3_ports[i]); + portsc = readl(xhci->usb3_ports[i]); if (portsc & PORT_DEV_REMOVE) port_removable |= 1 << (i + 1); } @@ -343,7 +343,7 @@ static void xhci_disable_port(struct usb_hcd *hcd, struct xhci_hcd *xhci, /* Write 1 to disable the port */ xhci_writel(xhci, port_status | PORT_PE, addr); - port_status = xhci_readl(xhci, addr); + port_status = readl(addr); xhci_dbg(xhci, "disable port, actual port %d status = 0x%x\n", wIndex, port_status); } @@ -389,7 +389,7 @@ static void xhci_clear_port_change_bit(struct xhci_hcd *xhci, u16 wValue, } /* Change bits are all write 1 to clear */ xhci_writel(xhci, port_status | status, addr); - port_status = xhci_readl(xhci, addr); + port_status = readl(addr); xhci_dbg(xhci, "clear port %s change, actual port %d status = 0x%x\n", port_change_bit, wIndex, port_status); } @@ -415,7 +415,7 @@ void xhci_set_link_state(struct xhci_hcd *xhci, __le32 __iomem **port_array, { u32 temp; - temp = xhci_readl(xhci, port_array[port_id]); + temp = readl(port_array[port_id]); temp = xhci_port_state_to_neutral(temp); temp &= ~PORT_PLS_MASK; temp |= PORT_LINK_STROBE | link_state; @@ -427,7 +427,7 @@ static void xhci_set_remote_wake_mask(struct xhci_hcd *xhci, { u32 temp; - temp = xhci_readl(xhci, port_array[port_id]); + temp = readl(port_array[port_id]); temp = xhci_port_state_to_neutral(temp); if (wake_mask & USB_PORT_FEAT_REMOTE_WAKE_CONNECT) @@ -454,7 +454,7 @@ void xhci_test_and_clear_bit(struct xhci_hcd *xhci, __le32 __iomem **port_array, { u32 temp; - temp = xhci_readl(xhci, port_array[port_id]); + temp = readl(port_array[port_id]); if (temp & port_bit) { temp = xhci_port_state_to_neutral(temp); temp |= port_bit; @@ -623,8 +623,7 @@ static u32 xhci_get_port_status(struct usb_hcd *hcd, } xhci_ring_device(xhci, slot_id); } else { - int port_status = xhci_readl(xhci, - port_array[wIndex]); + int port_status = readl(port_array[wIndex]); xhci_warn(xhci, "Port resume took longer than %i msec, port status = 0x%x\n", XHCI_MAX_REXIT_TIMEOUT, port_status); @@ -733,12 +732,12 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, /* Set the U1 and U2 exit latencies. */ memcpy(buf, &usb_bos_descriptor, USB_DT_BOS_SIZE + USB_DT_USB_SS_CAP_SIZE); - temp = xhci_readl(xhci, &xhci->cap_regs->hcs_params3); + temp = readl(&xhci->cap_regs->hcs_params3); buf[12] = HCS_U1_LATENCY(temp); put_unaligned_le16(HCS_U2_LATENCY(temp), &buf[13]); /* Indicate whether the host has LTM support. */ - temp = xhci_readl(xhci, &xhci->cap_regs->hcc_params); + temp = readl(&xhci->cap_regs->hcc_params); if (HCC_LTC(temp)) buf[8] |= USB_LTM_SUPPORT; @@ -748,7 +747,7 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, if (!wIndex || wIndex > max_ports) goto error; wIndex--; - temp = xhci_readl(xhci, port_array[wIndex]); + temp = readl(port_array[wIndex]); if (temp == 0xffffffff) { retval = -ENODEV; break; @@ -775,7 +774,7 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, if (!wIndex || wIndex > max_ports) goto error; wIndex--; - temp = xhci_readl(xhci, port_array[wIndex]); + temp = readl(port_array[wIndex]); if (temp == 0xffffffff) { retval = -ENODEV; break; @@ -784,7 +783,7 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, /* FIXME: What new port features do we need to support? */ switch (wValue) { case USB_PORT_FEAT_SUSPEND: - temp = xhci_readl(xhci, port_array[wIndex]); + temp = readl(port_array[wIndex]); if ((temp & PORT_PLS_MASK) != XDEV_U0) { /* Resume the port to U0 first */ xhci_set_link_state(xhci, port_array, wIndex, @@ -797,7 +796,7 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, * a port unless the port reports that it is in the * enabled (PED = ‘1’,PLS < ‘3’) state. */ - temp = xhci_readl(xhci, port_array[wIndex]); + temp = readl(port_array[wIndex]); if ((temp & PORT_PE) == 0 || (temp & PORT_RESET) || (temp & PORT_PLS_MASK) >= XDEV_U3) { xhci_warn(xhci, "USB core suspending device " @@ -822,11 +821,11 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, msleep(10); /* wait device to enter */ spin_lock_irqsave(&xhci->lock, flags); - temp = xhci_readl(xhci, port_array[wIndex]); + temp = readl(port_array[wIndex]); bus_state->suspended_ports |= 1 << wIndex; break; case USB_PORT_FEAT_LINK_STATE: - temp = xhci_readl(xhci, port_array[wIndex]); + temp = readl(port_array[wIndex]); /* Disable port */ if (link_state == USB_SS_PORT_LS_SS_DISABLED) { @@ -841,7 +840,7 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, PORT_CEC; xhci_writel(xhci, temp | PORT_PE, port_array[wIndex]); - temp = xhci_readl(xhci, port_array[wIndex]); + temp = readl(port_array[wIndex]); break; } @@ -850,7 +849,7 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, xhci_dbg(xhci, "Enable port %d\n", wIndex); xhci_set_link_state(xhci, port_array, wIndex, link_state); - temp = xhci_readl(xhci, port_array[wIndex]); + temp = readl(port_array[wIndex]); break; } @@ -884,7 +883,7 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, msleep(20); /* wait device to enter */ spin_lock_irqsave(&xhci->lock, flags); - temp = xhci_readl(xhci, port_array[wIndex]); + temp = readl(port_array[wIndex]); if (link_state == USB_SS_PORT_LS_U3) bus_state->suspended_ports |= 1 << wIndex; break; @@ -898,7 +897,7 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, xhci_writel(xhci, temp | PORT_POWER, port_array[wIndex]); - temp = xhci_readl(xhci, port_array[wIndex]); + temp = readl(port_array[wIndex]); xhci_dbg(xhci, "set port power, actual port %d status = 0x%x\n", wIndex, temp); spin_unlock_irqrestore(&xhci->lock, flags); @@ -913,13 +912,13 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, temp = (temp | PORT_RESET); xhci_writel(xhci, temp, port_array[wIndex]); - temp = xhci_readl(xhci, port_array[wIndex]); + temp = readl(port_array[wIndex]); xhci_dbg(xhci, "set port reset, actual port %d status = 0x%x\n", wIndex, temp); break; case USB_PORT_FEAT_REMOTE_WAKE_MASK: xhci_set_remote_wake_mask(xhci, port_array, wIndex, wake_mask); - temp = xhci_readl(xhci, port_array[wIndex]); + temp = readl(port_array[wIndex]); xhci_dbg(xhci, "set port remote wake mask, " "actual port %d status = 0x%x\n", wIndex, temp); @@ -928,12 +927,12 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, temp |= PORT_WR; xhci_writel(xhci, temp, port_array[wIndex]); - temp = xhci_readl(xhci, port_array[wIndex]); + temp = readl(port_array[wIndex]); break; case USB_PORT_FEAT_U1_TIMEOUT: if (hcd->speed != HCD_USB3) goto error; - temp = xhci_readl(xhci, port_array[wIndex] + PORTPMSC); + temp = readl(port_array[wIndex] + PORTPMSC); temp &= ~PORT_U1_TIMEOUT_MASK; temp |= PORT_U1_TIMEOUT(timeout); xhci_writel(xhci, temp, port_array[wIndex] + PORTPMSC); @@ -941,7 +940,7 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, case USB_PORT_FEAT_U2_TIMEOUT: if (hcd->speed != HCD_USB3) goto error; - temp = xhci_readl(xhci, port_array[wIndex] + PORTPMSC); + temp = readl(port_array[wIndex] + PORTPMSC); temp &= ~PORT_U2_TIMEOUT_MASK; temp |= PORT_U2_TIMEOUT(timeout); xhci_writel(xhci, temp, port_array[wIndex] + PORTPMSC); @@ -950,13 +949,13 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, goto error; } /* unblock any posted writes */ - temp = xhci_readl(xhci, port_array[wIndex]); + temp = readl(port_array[wIndex]); break; case ClearPortFeature: if (!wIndex || wIndex > max_ports) goto error; wIndex--; - temp = xhci_readl(xhci, port_array[wIndex]); + temp = readl(port_array[wIndex]); if (temp == 0xffffffff) { retval = -ENODEV; break; @@ -965,7 +964,7 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, temp = xhci_port_state_to_neutral(temp); switch (wValue) { case USB_PORT_FEAT_SUSPEND: - temp = xhci_readl(xhci, port_array[wIndex]); + temp = readl(port_array[wIndex]); xhci_dbg(xhci, "clear USB_PORT_FEAT_SUSPEND\n"); xhci_dbg(xhci, "PORTSC %04x\n", temp); if (temp & PORT_RESET) @@ -1070,7 +1069,7 @@ int xhci_hub_status_data(struct usb_hcd *hcd, char *buf) spin_lock_irqsave(&xhci->lock, flags); /* For each port, did anything change? If so, set that bit in buf. */ for (i = 0; i < max_ports; i++) { - temp = xhci_readl(xhci, port_array[i]); + temp = readl(port_array[i]); if (temp == 0xffffffff) { retval = -ENODEV; break; @@ -1124,7 +1123,7 @@ int xhci_bus_suspend(struct usb_hcd *hcd) u32 t1, t2; int slot_id; - t1 = xhci_readl(xhci, port_array[port_index]); + t1 = readl(port_array[port_index]); t2 = xhci_port_state_to_neutral(t1); if ((t1 & PORT_PE) && !(t1 & PORT_PLS_MASK)) { @@ -1187,7 +1186,7 @@ int xhci_bus_resume(struct usb_hcd *hcd) } /* delay the irqs */ - temp = xhci_readl(xhci, &xhci->op_regs->command); + temp = readl(&xhci->op_regs->command); temp &= ~CMD_EIE; xhci_writel(xhci, temp, &xhci->op_regs->command); @@ -1198,7 +1197,7 @@ int xhci_bus_resume(struct usb_hcd *hcd) u32 temp; int slot_id; - temp = xhci_readl(xhci, port_array[port_index]); + temp = readl(port_array[port_index]); if (DEV_SUPERSPEED(temp)) temp &= ~(PORT_RWC_BITS | PORT_CEC | PORT_WAKE_BITS); else @@ -1238,14 +1237,14 @@ int xhci_bus_resume(struct usb_hcd *hcd) xhci_writel(xhci, temp, port_array[port_index]); } - (void) xhci_readl(xhci, &xhci->op_regs->command); + (void) readl(&xhci->op_regs->command); bus_state->next_statechange = jiffies + msecs_to_jiffies(5); /* re-enable irqs */ - temp = xhci_readl(xhci, &xhci->op_regs->command); + temp = readl(&xhci->op_regs->command); temp |= CMD_EIE; xhci_writel(xhci, temp, &xhci->op_regs->command); - temp = xhci_readl(xhci, &xhci->op_regs->command); + temp = readl(&xhci->op_regs->command); spin_unlock_irqrestore(&xhci->lock, flags); return 0; diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c index 99e7251c2b65..3682a3b7e057 100644 --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c @@ -1986,7 +1986,7 @@ static void xhci_add_in_port(struct xhci_hcd *xhci, unsigned int num_ports, } /* Port offset and count in the third dword, see section 7.2 */ - temp = xhci_readl(xhci, addr + 2); + temp = readl(addr + 2); port_offset = XHCI_EXT_PORT_OFF(temp); port_count = XHCI_EXT_PORT_COUNT(temp); xhci_dbg_trace(xhci, trace_xhci_dbg_init, @@ -2069,7 +2069,7 @@ static int xhci_setup_port_arrays(struct xhci_hcd *xhci, gfp_t flags) int cap_count = 0; addr = &xhci->cap_regs->hcc_params; - offset = XHCI_HCC_EXT_CAPS(xhci_readl(xhci, addr)); + offset = XHCI_HCC_EXT_CAPS(readl(addr)); if (offset == 0) { xhci_err(xhci, "No Extended Capability registers, " "unable to set up roothub.\n"); @@ -2106,7 +2106,7 @@ static int xhci_setup_port_arrays(struct xhci_hcd *xhci, gfp_t flags) /* count extended protocol capability entries for later caching */ do { u32 cap_id; - cap_id = xhci_readl(xhci, tmp_addr); + cap_id = readl(tmp_addr); if (XHCI_EXT_CAPS_ID(cap_id) == XHCI_EXT_CAPS_PROTOCOL) cap_count++; tmp_offset = XHCI_EXT_CAPS_NEXT(cap_id); @@ -2120,7 +2120,7 @@ static int xhci_setup_port_arrays(struct xhci_hcd *xhci, gfp_t flags) while (1) { u32 cap_id; - cap_id = xhci_readl(xhci, addr); + cap_id = readl(addr); if (XHCI_EXT_CAPS_ID(cap_id) == XHCI_EXT_CAPS_PROTOCOL) xhci_add_in_port(xhci, num_ports, addr, (u8) XHCI_EXT_PORT_MAJOR(cap_id), @@ -2224,7 +2224,7 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) INIT_LIST_HEAD(&xhci->cancel_cmd_list); - page_size = xhci_readl(xhci, &xhci->op_regs->page_size); + page_size = readl(&xhci->op_regs->page_size); xhci_dbg_trace(xhci, trace_xhci_dbg_init, "Supported page size register = 0x%x", page_size); for (i = 0; i < 16; i++) { @@ -2247,10 +2247,10 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) * Program the Number of Device Slots Enabled field in the CONFIG * register with the max value of slots the HC can handle. */ - val = HCS_MAX_SLOTS(xhci_readl(xhci, &xhci->cap_regs->hcs_params1)); + val = HCS_MAX_SLOTS(readl(&xhci->cap_regs->hcs_params1)); xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// xHC can handle at most %d device slots.", val); - val2 = xhci_readl(xhci, &xhci->op_regs->config_reg); + val2 = readl(&xhci->op_regs->config_reg); val |= (val2 & ~HCS_SLOTS_MASK); xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Setting Max device slots reg = 0x%x.", val); @@ -2331,7 +2331,7 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) */ xhci->cmd_ring_reserved_trbs++; - val = xhci_readl(xhci, &xhci->cap_regs->db_off); + val = readl(&xhci->cap_regs->db_off); val &= DBOFF_MASK; xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Doorbell array is located at offset 0x%x" @@ -2382,7 +2382,7 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) } /* set ERST count with the number of entries in the segment table */ - val = xhci_readl(xhci, &xhci->ir_set->erst_size); + val = readl(&xhci->ir_set->erst_size); val &= ERST_SIZE_MASK; val |= ERST_NUM_SEGS; xhci_dbg_trace(xhci, trace_xhci_dbg_init, @@ -2431,7 +2431,7 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) * is necessary for allowing USB 3.0 devices to do remote wakeup from * U3 (device suspend). */ - temp = xhci_readl(xhci, &xhci->op_regs->dev_notification); + temp = readl(&xhci->op_regs->dev_notification); temp &= ~DEV_NOTE_MASK; temp |= DEV_NOTE_FWAKE; xhci_writel(xhci, temp, &xhci->op_regs->dev_notification); diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c index 22da09388a74..9f2349b2aea5 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -297,7 +297,7 @@ void xhci_ring_cmd_db(struct xhci_hcd *xhci) xhci_dbg(xhci, "// Ding dong!\n"); xhci_writel(xhci, DB_VALUE_HOST, &xhci->dba->doorbell[0]); /* Flush PCI posted writes */ - xhci_readl(xhci, &xhci->dba->doorbell[0]); + readl(&xhci->dba->doorbell[0]); } static int xhci_abort_cmd_ring(struct xhci_hcd *xhci) @@ -1739,7 +1739,7 @@ static void handle_port_status(struct xhci_hcd *xhci, faked_port_index = find_faked_portnum_from_hw_portnum(hcd, xhci, port_id); - temp = xhci_readl(xhci, port_array[faked_port_index]); + temp = readl(port_array[faked_port_index]); if (hcd->state == HC_STATE_SUSPENDED) { xhci_dbg(xhci, "resume root hub\n"); usb_hcd_resume_root_hub(hcd); @@ -1748,7 +1748,7 @@ static void handle_port_status(struct xhci_hcd *xhci, if ((temp & PORT_PLC) && (temp & PORT_PLS_MASK) == XDEV_RESUME) { xhci_dbg(xhci, "port resume event for port %d\n", port_id); - temp1 = xhci_readl(xhci, &xhci->op_regs->command); + temp1 = readl(&xhci->op_regs->command); if (!(temp1 & CMD_RUN)) { xhci_warn(xhci, "xHC is not running.\n"); goto cleanup; @@ -2831,7 +2831,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd) spin_lock(&xhci->lock); /* Check if the xHC generated the interrupt, or the irq is shared */ - status = xhci_readl(xhci, &xhci->op_regs->status); + status = readl(&xhci->op_regs->status); if (status == 0xffffffff) goto hw_died; @@ -2860,7 +2860,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd) if (hcd->irq) { u32 irq_pending; /* Acknowledge the PCI interrupt */ - irq_pending = xhci_readl(xhci, &xhci->ir_set->irq_pending); + irq_pending = readl(&xhci->ir_set->irq_pending); irq_pending |= IMAN_IP; xhci_writel(xhci, irq_pending, &xhci->ir_set->irq_pending); } @@ -3931,7 +3931,7 @@ int xhci_queue_isoc_tx_prepare(struct xhci_hcd *xhci, gfp_t mem_flags, if (ret) return ret; - start_frame = xhci_readl(xhci, &xhci->run_regs->microframe_index); + start_frame = readl(&xhci->run_regs->microframe_index); start_frame &= 0x3fff; urb->start_frame = start_frame; diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 900ba36ee2b8..5e6a8651c2a8 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -60,7 +60,7 @@ int xhci_handshake(struct xhci_hcd *xhci, void __iomem *ptr, u32 result; do { - result = xhci_readl(xhci, ptr); + result = readl(ptr); if (result == ~(u32)0) /* card removed */ return -ENODEV; result &= mask; @@ -82,11 +82,11 @@ void xhci_quiesce(struct xhci_hcd *xhci) u32 mask; mask = ~(XHCI_IRQS); - halted = xhci_readl(xhci, &xhci->op_regs->status) & STS_HALT; + halted = readl(&xhci->op_regs->status) & STS_HALT; if (!halted) mask &= ~CMD_RUN; - cmd = xhci_readl(xhci, &xhci->op_regs->command); + cmd = readl(&xhci->op_regs->command); cmd &= mask; xhci_writel(xhci, cmd, &xhci->op_regs->command); } @@ -124,7 +124,7 @@ static int xhci_start(struct xhci_hcd *xhci) u32 temp; int ret; - temp = xhci_readl(xhci, &xhci->op_regs->command); + temp = readl(&xhci->op_regs->command); temp |= (CMD_RUN); xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Turn on HC, cmd = 0x%x.", temp); @@ -158,14 +158,14 @@ int xhci_reset(struct xhci_hcd *xhci) u32 state; int ret, i; - state = xhci_readl(xhci, &xhci->op_regs->status); + state = readl(&xhci->op_regs->status); if ((state & STS_HALT) == 0) { xhci_warn(xhci, "Host controller not halted, aborting reset.\n"); return 0; } xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Reset the HC"); - command = xhci_readl(xhci, &xhci->op_regs->command); + command = readl(&xhci->op_regs->command); command |= CMD_RESET; xhci_writel(xhci, command, &xhci->op_regs->command); @@ -422,7 +422,7 @@ static void compliance_mode_recovery(unsigned long arg) xhci = (struct xhci_hcd *)arg; for (i = 0; i < xhci->num_usb3_ports; i++) { - temp = xhci_readl(xhci, xhci->usb3_ports[i]); + temp = readl(xhci->usb3_ports[i]); if ((temp & PORT_PLS_MASK) == USB_SS_PORT_LS_COMP_MOD) { /* * Compliance Mode Detected. Letting USB Core @@ -611,19 +611,19 @@ int xhci_run(struct usb_hcd *hcd) xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Set the interrupt modulation register"); - temp = xhci_readl(xhci, &xhci->ir_set->irq_control); + temp = readl(&xhci->ir_set->irq_control); temp &= ~ER_IRQ_INTERVAL_MASK; temp |= (u32) 160; xhci_writel(xhci, temp, &xhci->ir_set->irq_control); /* Set the HCD state before we enable the irqs */ - temp = xhci_readl(xhci, &xhci->op_regs->command); + temp = readl(&xhci->op_regs->command); temp |= (CMD_EIE); xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Enable interrupts, cmd = 0x%x.", temp); xhci_writel(xhci, temp, &xhci->op_regs->command); - temp = xhci_readl(xhci, &xhci->ir_set->irq_pending); + temp = readl(&xhci->ir_set->irq_pending); xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Enabling event ring interrupter %p by writing 0x%x to irq_pending", xhci->ir_set, (unsigned int) ER_IRQ_ENABLE(temp)); @@ -698,9 +698,9 @@ void xhci_stop(struct usb_hcd *hcd) xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Disabling event ring interrupts"); - temp = xhci_readl(xhci, &xhci->op_regs->status); + temp = readl(&xhci->op_regs->status); xhci_writel(xhci, temp & ~STS_EINT, &xhci->op_regs->status); - temp = xhci_readl(xhci, &xhci->ir_set->irq_pending); + temp = readl(&xhci->ir_set->irq_pending); xhci_writel(xhci, ER_IRQ_DISABLE(temp), &xhci->ir_set->irq_pending); xhci_print_ir_set(xhci, 0); @@ -709,7 +709,7 @@ void xhci_stop(struct usb_hcd *hcd) xhci_mem_cleanup(xhci); xhci_dbg_trace(xhci, trace_xhci_dbg_init, "xhci_stop completed - status = %x", - xhci_readl(xhci, &xhci->op_regs->status)); + readl(&xhci->op_regs->status)); } /* @@ -739,7 +739,7 @@ void xhci_shutdown(struct usb_hcd *hcd) xhci_dbg_trace(xhci, trace_xhci_dbg_init, "xhci_shutdown completed - status = %x", - xhci_readl(xhci, &xhci->op_regs->status)); + readl(&xhci->op_regs->status)); /* Yet another workaround for spurious wakeups at shutdown with HSW */ if (xhci->quirks & XHCI_SPURIOUS_WAKEUP) @@ -749,15 +749,15 @@ void xhci_shutdown(struct usb_hcd *hcd) #ifdef CONFIG_PM static void xhci_save_registers(struct xhci_hcd *xhci) { - xhci->s3.command = xhci_readl(xhci, &xhci->op_regs->command); - xhci->s3.dev_nt = xhci_readl(xhci, &xhci->op_regs->dev_notification); + xhci->s3.command = readl(&xhci->op_regs->command); + xhci->s3.dev_nt = readl(&xhci->op_regs->dev_notification); xhci->s3.dcbaa_ptr = xhci_read_64(xhci, &xhci->op_regs->dcbaa_ptr); - xhci->s3.config_reg = xhci_readl(xhci, &xhci->op_regs->config_reg); - xhci->s3.erst_size = xhci_readl(xhci, &xhci->ir_set->erst_size); + xhci->s3.config_reg = readl(&xhci->op_regs->config_reg); + xhci->s3.erst_size = readl(&xhci->ir_set->erst_size); xhci->s3.erst_base = xhci_read_64(xhci, &xhci->ir_set->erst_base); xhci->s3.erst_dequeue = xhci_read_64(xhci, &xhci->ir_set->erst_dequeue); - xhci->s3.irq_pending = xhci_readl(xhci, &xhci->ir_set->irq_pending); - xhci->s3.irq_control = xhci_readl(xhci, &xhci->ir_set->irq_control); + xhci->s3.irq_pending = readl(&xhci->ir_set->irq_pending); + xhci->s3.irq_control = readl(&xhci->ir_set->irq_control); } static void xhci_restore_registers(struct xhci_hcd *xhci) @@ -866,7 +866,7 @@ int xhci_suspend(struct xhci_hcd *xhci) /* skipped assuming that port suspend has done */ /* step 2: clear Run/Stop bit */ - command = xhci_readl(xhci, &xhci->op_regs->command); + command = readl(&xhci->op_regs->command); command &= ~CMD_RUN; xhci_writel(xhci, command, &xhci->op_regs->command); @@ -885,7 +885,7 @@ int xhci_suspend(struct xhci_hcd *xhci) xhci_save_registers(xhci); /* step 4: set CSS flag */ - command = xhci_readl(xhci, &xhci->op_regs->command); + command = readl(&xhci->op_regs->command); command |= CMD_CSS; xhci_writel(xhci, command, &xhci->op_regs->command); if (xhci_handshake(xhci, &xhci->op_regs->status, @@ -951,7 +951,7 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated) xhci_set_cmd_ring_deq(xhci); /* step 3: restore state and start state*/ /* step 3: set CRS flag */ - command = xhci_readl(xhci, &xhci->op_regs->command); + command = readl(&xhci->op_regs->command); command |= CMD_CRS; xhci_writel(xhci, command, &xhci->op_regs->command); if (xhci_handshake(xhci, &xhci->op_regs->status, @@ -960,7 +960,7 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated) spin_unlock_irq(&xhci->lock); return -ETIMEDOUT; } - temp = xhci_readl(xhci, &xhci->op_regs->status); + temp = readl(&xhci->op_regs->status); } /* If restore operation fails, re-initialize the HC during resume */ @@ -984,9 +984,9 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated) xhci_cleanup_msix(xhci); xhci_dbg(xhci, "// Disabling event ring interrupts\n"); - temp = xhci_readl(xhci, &xhci->op_regs->status); + temp = readl(&xhci->op_regs->status); xhci_writel(xhci, temp & ~STS_EINT, &xhci->op_regs->status); - temp = xhci_readl(xhci, &xhci->ir_set->irq_pending); + temp = readl(&xhci->ir_set->irq_pending); xhci_writel(xhci, ER_IRQ_DISABLE(temp), &xhci->ir_set->irq_pending); xhci_print_ir_set(xhci, 0); @@ -994,7 +994,7 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated) xhci_dbg(xhci, "cleaning up memory\n"); xhci_mem_cleanup(xhci); xhci_dbg(xhci, "xhci_stop completed - status = %x\n", - xhci_readl(xhci, &xhci->op_regs->status)); + readl(&xhci->op_regs->status)); /* USB core calls the PCI reinit and start functions twice: * first with the primary HCD, and then with the secondary HCD. @@ -1023,7 +1023,7 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated) } /* step 4: set Run/Stop bit */ - command = xhci_readl(xhci, &xhci->op_regs->command); + command = readl(&xhci->op_regs->command); command |= CMD_RUN; xhci_writel(xhci, command, &xhci->op_regs->command); xhci_handshake(xhci, &xhci->op_regs->status, STS_HALT, @@ -1464,7 +1464,7 @@ int xhci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status) ret = usb_hcd_check_unlink_urb(hcd, urb, status); if (ret || !urb->hcpriv) goto done; - temp = xhci_readl(xhci, &xhci->op_regs->status); + temp = readl(&xhci->op_regs->status); if (temp == 0xffffffff || (xhci->xhc_state & XHCI_STATE_HALTED)) { xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb, "HW died, freeing TD."); @@ -3585,7 +3585,7 @@ void xhci_free_dev(struct usb_hcd *hcd, struct usb_device *udev) spin_lock_irqsave(&xhci->lock, flags); /* Don't disable the slot if the host controller is dead. */ - state = xhci_readl(xhci, &xhci->op_regs->status); + state = readl(&xhci->op_regs->status); if (state == 0xffffffff || (xhci->xhc_state & XHCI_STATE_DYING) || (xhci->xhc_state & XHCI_STATE_HALTED)) { xhci_free_virt_device(xhci, udev->slot_id); @@ -4042,7 +4042,7 @@ int xhci_set_usb2_hardware_lpm(struct usb_hcd *hcd, port_array = xhci->usb2_ports; port_num = udev->portnum - 1; pm_addr = port_array[port_num] + PORTPMSC; - pm_val = xhci_readl(xhci, pm_addr); + pm_val = readl(pm_addr); hlpm_addr = port_array[port_num] + PORTHLPMC; field = le32_to_cpu(udev->bos->ext_cap->bmAttributes); @@ -4084,7 +4084,7 @@ int xhci_set_usb2_hardware_lpm(struct usb_hcd *hcd, hlpm_val = xhci_calculate_usb2_hw_lpm_params(udev); xhci_writel(xhci, hlpm_val, hlpm_addr); /* flush write */ - xhci_readl(xhci, hlpm_addr); + readl(hlpm_addr); } else { hird = xhci_calculate_hird_besl(xhci, udev); } @@ -4092,16 +4092,16 @@ int xhci_set_usb2_hardware_lpm(struct usb_hcd *hcd, pm_val &= ~PORT_HIRD_MASK; pm_val |= PORT_HIRD(hird) | PORT_RWE | PORT_L1DS(udev->slot_id); xhci_writel(xhci, pm_val, pm_addr); - pm_val = xhci_readl(xhci, pm_addr); + pm_val = readl(pm_addr); pm_val |= PORT_HLE; xhci_writel(xhci, pm_val, pm_addr); /* flush write */ - xhci_readl(xhci, pm_addr); + readl(pm_addr); } else { pm_val &= ~(PORT_HLE | PORT_RWE | PORT_HIRD_MASK | PORT_L1DS_MASK); xhci_writel(xhci, pm_val, pm_addr); /* flush write */ - xhci_readl(xhci, pm_addr); + readl(pm_addr); if (udev->usb2_hw_lpm_besl_capable) { spin_unlock_irqrestore(&xhci->lock, flags); mutex_lock(hcd->bandwidth_mutex); @@ -4704,7 +4704,7 @@ int xhci_get_frame(struct usb_hcd *hcd) { struct xhci_hcd *xhci = hcd_to_xhci(hcd); /* EHCI mods by the periodic size. Why? */ - return xhci_readl(xhci, &xhci->run_regs->microframe_index) >> 3; + return readl(&xhci->run_regs->microframe_index) >> 3; } int xhci_gen_setup(struct usb_hcd *hcd, xhci_get_quirks_t get_quirks) @@ -4748,16 +4748,16 @@ int xhci_gen_setup(struct usb_hcd *hcd, xhci_get_quirks_t get_quirks) xhci->cap_regs = hcd->regs; xhci->op_regs = hcd->regs + - HC_LENGTH(xhci_readl(xhci, &xhci->cap_regs->hc_capbase)); + HC_LENGTH(readl(&xhci->cap_regs->hc_capbase)); xhci->run_regs = hcd->regs + - (xhci_readl(xhci, &xhci->cap_regs->run_regs_off) & RTSOFF_MASK); + (readl(&xhci->cap_regs->run_regs_off) & RTSOFF_MASK); /* Cache read-only capability registers */ - xhci->hcs_params1 = xhci_readl(xhci, &xhci->cap_regs->hcs_params1); - xhci->hcs_params2 = xhci_readl(xhci, &xhci->cap_regs->hcs_params2); - xhci->hcs_params3 = xhci_readl(xhci, &xhci->cap_regs->hcs_params3); - xhci->hcc_params = xhci_readl(xhci, &xhci->cap_regs->hc_capbase); + xhci->hcs_params1 = readl(&xhci->cap_regs->hcs_params1); + xhci->hcs_params2 = readl(&xhci->cap_regs->hcs_params2); + xhci->hcs_params3 = readl(&xhci->cap_regs->hcs_params3); + xhci->hcc_params = readl(&xhci->cap_regs->hc_capbase); xhci->hci_version = HC_VERSION(xhci->hcc_params); - xhci->hcc_params = xhci_readl(xhci, &xhci->cap_regs->hcc_params); + xhci->hcc_params = readl(&xhci->cap_regs->hcc_params); xhci_print_registers(xhci); get_quirks(dev, xhci); diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h index a33e8b5bf7a2..c727f1edb37f 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h @@ -1597,11 +1597,6 @@ static inline struct usb_hcd *xhci_to_hcd(struct xhci_hcd *xhci) /* TODO: copied from ehci.h - can be refactored? */ /* xHCI spec says all registers are little endian */ -static inline unsigned int xhci_readl(const struct xhci_hcd *xhci, - __le32 __iomem *regs) -{ - return readl(regs); -} static inline void xhci_writel(struct xhci_hcd *xhci, const unsigned int val, __le32 __iomem *regs) { From 204b7793f2a9935e9a08524d0b4bb51b990d518e Mon Sep 17 00:00:00 2001 From: Xenia Ragiadakou Date: Fri, 15 Nov 2013 05:34:07 +0200 Subject: [PATCH 13/81] xhci: replace xhci_writel() with writel() Function xhci_writel() is used to write a 32bit value in xHC registers residing in MMIO address space. It takes as first argument a pointer to the xhci_hcd although it does not use it. xhci_writel() internally simply calls writel(). This creates an illusion that xhci_writel() is an xhci specific function that has to be called in a context where a pointer to xhci_hcd is available. Remove xhci_writel() wrapper function and replace its calls with calls to writel() to make the code more straight-forward. Signed-off-by: Xenia Ragiadakou Signed-off-by: Sarah Sharp --- drivers/usb/host/xhci-hub.c | 35 +++++++++++-------------- drivers/usb/host/xhci-mem.c | 6 ++--- drivers/usb/host/xhci-ring.c | 8 +++--- drivers/usb/host/xhci.c | 51 +++++++++++++++++------------------- drivers/usb/host/xhci.h | 8 ------ 5 files changed, 47 insertions(+), 61 deletions(-) diff --git a/drivers/usb/host/xhci-hub.c b/drivers/usb/host/xhci-hub.c index 70ed7c94e917..9992fbfec85f 100644 --- a/drivers/usb/host/xhci-hub.c +++ b/drivers/usb/host/xhci-hub.c @@ -342,7 +342,7 @@ static void xhci_disable_port(struct usb_hcd *hcd, struct xhci_hcd *xhci, } /* Write 1 to disable the port */ - xhci_writel(xhci, port_status | PORT_PE, addr); + writel(port_status | PORT_PE, addr); port_status = readl(addr); xhci_dbg(xhci, "disable port, actual port %d status = 0x%x\n", wIndex, port_status); @@ -388,7 +388,7 @@ static void xhci_clear_port_change_bit(struct xhci_hcd *xhci, u16 wValue, return; } /* Change bits are all write 1 to clear */ - xhci_writel(xhci, port_status | status, addr); + writel(port_status | status, addr); port_status = readl(addr); xhci_dbg(xhci, "clear port %s change, actual port %d status = 0x%x\n", port_change_bit, wIndex, port_status); @@ -419,7 +419,7 @@ void xhci_set_link_state(struct xhci_hcd *xhci, __le32 __iomem **port_array, temp = xhci_port_state_to_neutral(temp); temp &= ~PORT_PLS_MASK; temp |= PORT_LINK_STROBE | link_state; - xhci_writel(xhci, temp, port_array[port_id]); + writel(temp, port_array[port_id]); } static void xhci_set_remote_wake_mask(struct xhci_hcd *xhci, @@ -445,7 +445,7 @@ static void xhci_set_remote_wake_mask(struct xhci_hcd *xhci, else temp &= ~PORT_WKOC_E; - xhci_writel(xhci, temp, port_array[port_id]); + writel(temp, port_array[port_id]); } /* Test and clear port RWC bit */ @@ -458,7 +458,7 @@ void xhci_test_and_clear_bit(struct xhci_hcd *xhci, __le32 __iomem **port_array, if (temp & port_bit) { temp = xhci_port_state_to_neutral(temp); temp |= port_bit; - xhci_writel(xhci, temp, port_array[port_id]); + writel(temp, port_array[port_id]); } } @@ -838,8 +838,7 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, temp |= PORT_CSC | PORT_PEC | PORT_WRC | PORT_OCC | PORT_RC | PORT_PLC | PORT_CEC; - xhci_writel(xhci, temp | PORT_PE, - port_array[wIndex]); + writel(temp | PORT_PE, port_array[wIndex]); temp = readl(port_array[wIndex]); break; } @@ -894,8 +893,7 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, * However, khubd will ignore the roothub events until * the roothub is registered. */ - xhci_writel(xhci, temp | PORT_POWER, - port_array[wIndex]); + writel(temp | PORT_POWER, port_array[wIndex]); temp = readl(port_array[wIndex]); xhci_dbg(xhci, "set port power, actual port %d status = 0x%x\n", wIndex, temp); @@ -910,7 +908,7 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, break; case USB_PORT_FEAT_RESET: temp = (temp | PORT_RESET); - xhci_writel(xhci, temp, port_array[wIndex]); + writel(temp, port_array[wIndex]); temp = readl(port_array[wIndex]); xhci_dbg(xhci, "set port reset, actual port %d status = 0x%x\n", wIndex, temp); @@ -925,7 +923,7 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, break; case USB_PORT_FEAT_BH_PORT_RESET: temp |= PORT_WR; - xhci_writel(xhci, temp, port_array[wIndex]); + writel(temp, port_array[wIndex]); temp = readl(port_array[wIndex]); break; @@ -935,7 +933,7 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, temp = readl(port_array[wIndex] + PORTPMSC); temp &= ~PORT_U1_TIMEOUT_MASK; temp |= PORT_U1_TIMEOUT(timeout); - xhci_writel(xhci, temp, port_array[wIndex] + PORTPMSC); + writel(temp, port_array[wIndex] + PORTPMSC); break; case USB_PORT_FEAT_U2_TIMEOUT: if (hcd->speed != HCD_USB3) @@ -943,7 +941,7 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, temp = readl(port_array[wIndex] + PORTPMSC); temp &= ~PORT_U2_TIMEOUT_MASK; temp |= PORT_U2_TIMEOUT(timeout); - xhci_writel(xhci, temp, port_array[wIndex] + PORTPMSC); + writel(temp, port_array[wIndex] + PORTPMSC); break; default: goto error; @@ -1007,8 +1005,7 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, port_array[wIndex], temp); break; case USB_PORT_FEAT_POWER: - xhci_writel(xhci, temp & ~PORT_POWER, - port_array[wIndex]); + writel(temp & ~PORT_POWER, port_array[wIndex]); spin_unlock_irqrestore(&xhci->lock, flags); temp = usb_acpi_power_manageable(hcd->self.root_hub, @@ -1156,7 +1153,7 @@ int xhci_bus_suspend(struct usb_hcd *hcd) t1 = xhci_port_state_to_neutral(t1); if (t1 != t2) - xhci_writel(xhci, t2, port_array[port_index]); + writel(t2, port_array[port_index]); } hcd->state = HC_STATE_SUSPENDED; bus_state->next_statechange = jiffies + msecs_to_jiffies(10); @@ -1188,7 +1185,7 @@ int xhci_bus_resume(struct usb_hcd *hcd) /* delay the irqs */ temp = readl(&xhci->op_regs->command); temp &= ~CMD_EIE; - xhci_writel(xhci, temp, &xhci->op_regs->command); + writel(temp, &xhci->op_regs->command); port_index = max_ports; while (port_index--) { @@ -1234,7 +1231,7 @@ int xhci_bus_resume(struct usb_hcd *hcd) if (slot_id) xhci_ring_device(xhci, slot_id); } else - xhci_writel(xhci, temp, port_array[port_index]); + writel(temp, port_array[port_index]); } (void) readl(&xhci->op_regs->command); @@ -1243,7 +1240,7 @@ int xhci_bus_resume(struct usb_hcd *hcd) /* re-enable irqs */ temp = readl(&xhci->op_regs->command); temp |= CMD_EIE; - xhci_writel(xhci, temp, &xhci->op_regs->command); + writel(temp, &xhci->op_regs->command); temp = readl(&xhci->op_regs->command); spin_unlock_irqrestore(&xhci->lock, flags); diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c index 3682a3b7e057..bce4391a0e7d 100644 --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c @@ -2254,7 +2254,7 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) val |= (val2 & ~HCS_SLOTS_MASK); xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Setting Max device slots reg = 0x%x.", val); - xhci_writel(xhci, val, &xhci->op_regs->config_reg); + writel(val, &xhci->op_regs->config_reg); /* * Section 5.4.8 - doorbell array must be @@ -2388,7 +2388,7 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Write ERST size = %i to ir_set 0 (some bits preserved)", val); - xhci_writel(xhci, val, &xhci->ir_set->erst_size); + writel(val, &xhci->ir_set->erst_size); xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Set ERST entries to point to event ring."); @@ -2434,7 +2434,7 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) temp = readl(&xhci->op_regs->dev_notification); temp &= ~DEV_NOTE_MASK; temp |= DEV_NOTE_FWAKE; - xhci_writel(xhci, temp, &xhci->op_regs->dev_notification); + writel(temp, &xhci->op_regs->dev_notification); return 0; diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c index 9f2349b2aea5..bc46cce46db8 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -295,7 +295,7 @@ void xhci_ring_cmd_db(struct xhci_hcd *xhci) return; xhci_dbg(xhci, "// Ding dong!\n"); - xhci_writel(xhci, DB_VALUE_HOST, &xhci->dba->doorbell[0]); + writel(DB_VALUE_HOST, &xhci->dba->doorbell[0]); /* Flush PCI posted writes */ readl(&xhci->dba->doorbell[0]); } @@ -427,7 +427,7 @@ void xhci_ring_ep_doorbell(struct xhci_hcd *xhci, if ((ep_state & EP_HALT_PENDING) || (ep_state & SET_DEQ_PENDING) || (ep_state & EP_HALTED)) return; - xhci_writel(xhci, DB_VALUE(ep_index, stream_id), db_addr); + writel(DB_VALUE(ep_index, stream_id), db_addr); /* The CPU has better things to do at this point than wait for a * write-posting flush. It'll get there soon enough. */ @@ -2853,7 +2853,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd) * Write 1 to clear the interrupt status. */ status |= STS_EINT; - xhci_writel(xhci, status, &xhci->op_regs->status); + writel(status, &xhci->op_regs->status); /* FIXME when MSI-X is supported and there are multiple vectors */ /* Clear the MSI-X event interrupt status */ @@ -2862,7 +2862,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd) /* Acknowledge the PCI interrupt */ irq_pending = readl(&xhci->ir_set->irq_pending); irq_pending |= IMAN_IP; - xhci_writel(xhci, irq_pending, &xhci->ir_set->irq_pending); + writel(irq_pending, &xhci->ir_set->irq_pending); } if (xhci->xhc_state & XHCI_STATE_DYING) { diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 5e6a8651c2a8..7630b9ff56d4 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -88,7 +88,7 @@ void xhci_quiesce(struct xhci_hcd *xhci) cmd = readl(&xhci->op_regs->command); cmd &= mask; - xhci_writel(xhci, cmd, &xhci->op_regs->command); + writel(cmd, &xhci->op_regs->command); } /* @@ -128,7 +128,7 @@ static int xhci_start(struct xhci_hcd *xhci) temp |= (CMD_RUN); xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Turn on HC, cmd = 0x%x.", temp); - xhci_writel(xhci, temp, &xhci->op_regs->command); + writel(temp, &xhci->op_regs->command); /* * Wait for the HCHalted Status bit to be 0 to indicate the host is @@ -167,7 +167,7 @@ int xhci_reset(struct xhci_hcd *xhci) xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Reset the HC"); command = readl(&xhci->op_regs->command); command |= CMD_RESET; - xhci_writel(xhci, command, &xhci->op_regs->command); + writel(command, &xhci->op_regs->command); ret = xhci_handshake(xhci, &xhci->op_regs->command, CMD_RESET, 0, 10 * 1000 * 1000); @@ -614,21 +614,20 @@ int xhci_run(struct usb_hcd *hcd) temp = readl(&xhci->ir_set->irq_control); temp &= ~ER_IRQ_INTERVAL_MASK; temp |= (u32) 160; - xhci_writel(xhci, temp, &xhci->ir_set->irq_control); + writel(temp, &xhci->ir_set->irq_control); /* Set the HCD state before we enable the irqs */ temp = readl(&xhci->op_regs->command); temp |= (CMD_EIE); xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Enable interrupts, cmd = 0x%x.", temp); - xhci_writel(xhci, temp, &xhci->op_regs->command); + writel(temp, &xhci->op_regs->command); temp = readl(&xhci->ir_set->irq_pending); xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Enabling event ring interrupter %p by writing 0x%x to irq_pending", xhci->ir_set, (unsigned int) ER_IRQ_ENABLE(temp)); - xhci_writel(xhci, ER_IRQ_ENABLE(temp), - &xhci->ir_set->irq_pending); + writel(ER_IRQ_ENABLE(temp), &xhci->ir_set->irq_pending); xhci_print_ir_set(xhci, 0); if (xhci->quirks & XHCI_NEC_HOST) @@ -699,10 +698,9 @@ void xhci_stop(struct usb_hcd *hcd) xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Disabling event ring interrupts"); temp = readl(&xhci->op_regs->status); - xhci_writel(xhci, temp & ~STS_EINT, &xhci->op_regs->status); + writel(temp & ~STS_EINT, &xhci->op_regs->status); temp = readl(&xhci->ir_set->irq_pending); - xhci_writel(xhci, ER_IRQ_DISABLE(temp), - &xhci->ir_set->irq_pending); + writel(ER_IRQ_DISABLE(temp), &xhci->ir_set->irq_pending); xhci_print_ir_set(xhci, 0); xhci_dbg_trace(xhci, trace_xhci_dbg_init, "cleaning up memory"); @@ -762,15 +760,15 @@ static void xhci_save_registers(struct xhci_hcd *xhci) static void xhci_restore_registers(struct xhci_hcd *xhci) { - xhci_writel(xhci, xhci->s3.command, &xhci->op_regs->command); - xhci_writel(xhci, xhci->s3.dev_nt, &xhci->op_regs->dev_notification); + writel(xhci->s3.command, &xhci->op_regs->command); + writel(xhci->s3.dev_nt, &xhci->op_regs->dev_notification); xhci_write_64(xhci, xhci->s3.dcbaa_ptr, &xhci->op_regs->dcbaa_ptr); - xhci_writel(xhci, xhci->s3.config_reg, &xhci->op_regs->config_reg); - xhci_writel(xhci, xhci->s3.erst_size, &xhci->ir_set->erst_size); + writel(xhci->s3.config_reg, &xhci->op_regs->config_reg); + writel(xhci->s3.erst_size, &xhci->ir_set->erst_size); xhci_write_64(xhci, xhci->s3.erst_base, &xhci->ir_set->erst_base); xhci_write_64(xhci, xhci->s3.erst_dequeue, &xhci->ir_set->erst_dequeue); - xhci_writel(xhci, xhci->s3.irq_pending, &xhci->ir_set->irq_pending); - xhci_writel(xhci, xhci->s3.irq_control, &xhci->ir_set->irq_control); + writel(xhci->s3.irq_pending, &xhci->ir_set->irq_pending); + writel(xhci->s3.irq_control, &xhci->ir_set->irq_control); } static void xhci_set_cmd_ring_deq(struct xhci_hcd *xhci) @@ -868,7 +866,7 @@ int xhci_suspend(struct xhci_hcd *xhci) /* step 2: clear Run/Stop bit */ command = readl(&xhci->op_regs->command); command &= ~CMD_RUN; - xhci_writel(xhci, command, &xhci->op_regs->command); + writel(command, &xhci->op_regs->command); /* Some chips from Fresco Logic need an extraordinary delay */ delay *= (xhci->quirks & XHCI_SLOW_SUSPEND) ? 10 : 1; @@ -887,7 +885,7 @@ int xhci_suspend(struct xhci_hcd *xhci) /* step 4: set CSS flag */ command = readl(&xhci->op_regs->command); command |= CMD_CSS; - xhci_writel(xhci, command, &xhci->op_regs->command); + writel(command, &xhci->op_regs->command); if (xhci_handshake(xhci, &xhci->op_regs->status, STS_SAVE, 0, 10 * 1000)) { xhci_warn(xhci, "WARN: xHC save state timeout\n"); @@ -953,7 +951,7 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated) /* step 3: set CRS flag */ command = readl(&xhci->op_regs->command); command |= CMD_CRS; - xhci_writel(xhci, command, &xhci->op_regs->command); + writel(command, &xhci->op_regs->command); if (xhci_handshake(xhci, &xhci->op_regs->status, STS_RESTORE, 0, 10 * 1000)) { xhci_warn(xhci, "WARN: xHC restore state timeout\n"); @@ -985,10 +983,9 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated) xhci_dbg(xhci, "// Disabling event ring interrupts\n"); temp = readl(&xhci->op_regs->status); - xhci_writel(xhci, temp & ~STS_EINT, &xhci->op_regs->status); + writel(temp & ~STS_EINT, &xhci->op_regs->status); temp = readl(&xhci->ir_set->irq_pending); - xhci_writel(xhci, ER_IRQ_DISABLE(temp), - &xhci->ir_set->irq_pending); + writel(ER_IRQ_DISABLE(temp), &xhci->ir_set->irq_pending); xhci_print_ir_set(xhci, 0); xhci_dbg(xhci, "cleaning up memory\n"); @@ -1025,7 +1022,7 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated) /* step 4: set Run/Stop bit */ command = readl(&xhci->op_regs->command); command |= CMD_RUN; - xhci_writel(xhci, command, &xhci->op_regs->command); + writel(command, &xhci->op_regs->command); xhci_handshake(xhci, &xhci->op_regs->status, STS_HALT, 0, 250 * 1000); @@ -4082,7 +4079,7 @@ int xhci_set_usb2_hardware_lpm(struct usb_hcd *hcd, spin_lock_irqsave(&xhci->lock, flags); hlpm_val = xhci_calculate_usb2_hw_lpm_params(udev); - xhci_writel(xhci, hlpm_val, hlpm_addr); + writel(hlpm_val, hlpm_addr); /* flush write */ readl(hlpm_addr); } else { @@ -4091,15 +4088,15 @@ int xhci_set_usb2_hardware_lpm(struct usb_hcd *hcd, pm_val &= ~PORT_HIRD_MASK; pm_val |= PORT_HIRD(hird) | PORT_RWE | PORT_L1DS(udev->slot_id); - xhci_writel(xhci, pm_val, pm_addr); + writel(pm_val, pm_addr); pm_val = readl(pm_addr); pm_val |= PORT_HLE; - xhci_writel(xhci, pm_val, pm_addr); + writel(pm_val, pm_addr); /* flush write */ readl(pm_addr); } else { pm_val &= ~(PORT_HLE | PORT_RWE | PORT_HIRD_MASK | PORT_L1DS_MASK); - xhci_writel(xhci, pm_val, pm_addr); + writel(pm_val, pm_addr); /* flush write */ readl(pm_addr); if (udev->usb2_hw_lpm_besl_capable) { diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h index c727f1edb37f..402d8743d245 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h @@ -1595,14 +1595,6 @@ static inline struct usb_hcd *xhci_to_hcd(struct xhci_hcd *xhci) #define xhci_warn_ratelimited(xhci, fmt, args...) \ dev_warn_ratelimited(xhci_to_hcd(xhci)->self.controller , fmt , ## args) -/* TODO: copied from ehci.h - can be refactored? */ -/* xHCI spec says all registers are little endian */ -static inline void xhci_writel(struct xhci_hcd *xhci, - const unsigned int val, __le32 __iomem *regs) -{ - writel(val, regs); -} - /* * Registers should always be accessed with double word or quad word accesses. * From e8b373326d8efcaf9ec1da8b618556c89bd5ffc4 Mon Sep 17 00:00:00 2001 From: Xenia Ragiadakou Date: Fri, 15 Nov 2013 05:34:08 +0200 Subject: [PATCH 14/81] xhci: replace xhci_read_64() with readq() Function xhci_read_64() is used to read 64bit xHC registers residing in MMIO. On 32bit systems, xHC registers need to be read with 32bit accesses by reading first the lower 32bits and then the higher 32bits. Replace all calls to xhci_read_64() with calls to readq() and include asm-generic/io-64-nonatomic-lo-hi.h header file, so that if the system is not 64bit, readq() will read registers in 32bit chunks with low-high order. This is done to reduce code duplication since 64bit low-high read logic is already implemented and to take advantage of inherent "atomic" 64bit read operations on 64bit systems. Signed-off-by: Xenia Ragiadakou Signed-off-by: Sarah Sharp --- drivers/usb/host/xhci-dbg.c | 6 +++--- drivers/usb/host/xhci-mem.c | 6 +++--- drivers/usb/host/xhci-ring.c | 6 +++--- drivers/usb/host/xhci.c | 12 ++++++------ drivers/usb/host/xhci.h | 10 ++-------- 5 files changed, 17 insertions(+), 23 deletions(-) diff --git a/drivers/usb/host/xhci-dbg.c b/drivers/usb/host/xhci-dbg.c index eb009a457fb5..b016d38199f2 100644 --- a/drivers/usb/host/xhci-dbg.c +++ b/drivers/usb/host/xhci-dbg.c @@ -203,12 +203,12 @@ void xhci_print_ir_set(struct xhci_hcd *xhci, int set_num) addr, (unsigned int)temp); addr = &ir_set->erst_base; - temp_64 = xhci_read_64(xhci, addr); + temp_64 = readq(addr); xhci_dbg(xhci, " %p: ir_set.erst_base = @%08llx\n", addr, temp_64); addr = &ir_set->erst_dequeue; - temp_64 = xhci_read_64(xhci, addr); + temp_64 = readq(addr); xhci_dbg(xhci, " %p: ir_set.erst_dequeue = @%08llx\n", addr, temp_64); } @@ -412,7 +412,7 @@ void xhci_dbg_cmd_ptrs(struct xhci_hcd *xhci) { u64 val; - val = xhci_read_64(xhci, &xhci->op_regs->cmd_ring); + val = readq(&xhci->op_regs->cmd_ring); xhci_dbg(xhci, "// xHC command ring deq ptr low bits + flags = @%08x\n", lower_32_bits(val)); xhci_dbg(xhci, "// xHC command ring deq ptr high bits = @%08x\n", diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c index bce4391a0e7d..4b87026f8a5a 100644 --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c @@ -1958,7 +1958,7 @@ static void xhci_set_hc_event_deq(struct xhci_hcd *xhci) xhci_warn(xhci, "WARN something wrong with SW event ring " "dequeue ptr.\n"); /* Update HC event ring dequeue pointer */ - temp = xhci_read_64(xhci, &xhci->ir_set->erst_dequeue); + temp = readq(&xhci->ir_set->erst_dequeue); temp &= ERST_PTR_MASK; /* Don't clear the EHB bit (which is RW1C) because * there might be more events to service. @@ -2312,7 +2312,7 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) (unsigned long long)xhci->cmd_ring->first_seg->dma); /* Set the address in the Command Ring Control register */ - val_64 = xhci_read_64(xhci, &xhci->op_regs->cmd_ring); + val_64 = readq(&xhci->op_regs->cmd_ring); val_64 = (val_64 & (u64) CMD_RING_RSVD_BITS) | (xhci->cmd_ring->first_seg->dma & (u64) ~CMD_RING_RSVD_BITS) | xhci->cmd_ring->cycle_state; @@ -2396,7 +2396,7 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Set ERST base address for ir_set 0 = 0x%llx", (unsigned long long)xhci->erst.erst_dma_addr); - val_64 = xhci_read_64(xhci, &xhci->ir_set->erst_base); + val_64 = readq(&xhci->ir_set->erst_base); val_64 &= ERST_PTR_MASK; val_64 |= (xhci->erst.erst_dma_addr & (u64) ~ERST_PTR_MASK); xhci_write_64(xhci, val_64, &xhci->ir_set->erst_base); diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c index bc46cce46db8..339733b8524a 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -313,7 +313,7 @@ static int xhci_abort_cmd_ring(struct xhci_hcd *xhci) return 0; } - temp_64 = xhci_read_64(xhci, &xhci->op_regs->cmd_ring); + temp_64 = readq(&xhci->op_regs->cmd_ring); if (!(temp_64 & CMD_RING_RUNNING)) { xhci_dbg(xhci, "Command ring had been stopped\n"); return 0; @@ -2871,7 +2871,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd) /* Clear the event handler busy flag (RW1C); * the event ring should be empty. */ - temp_64 = xhci_read_64(xhci, &xhci->ir_set->erst_dequeue); + temp_64 = readq(&xhci->ir_set->erst_dequeue); xhci_write_64(xhci, temp_64 | ERST_EHB, &xhci->ir_set->erst_dequeue); spin_unlock(&xhci->lock); @@ -2885,7 +2885,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd) */ while (xhci_handle_event(xhci) > 0) {} - temp_64 = xhci_read_64(xhci, &xhci->ir_set->erst_dequeue); + temp_64 = readq(&xhci->ir_set->erst_dequeue); /* If necessary, update the HW's version of the event ring deq ptr. */ if (event_ring_deq != xhci->event_ring->dequeue) { deq = xhci_trb_virt_to_dma(xhci->event_ring->deq_seg, diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 7630b9ff56d4..858e992729c9 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -604,7 +604,7 @@ int xhci_run(struct usb_hcd *hcd) xhci_dbg(xhci, "Event ring:\n"); xhci_debug_ring(xhci, xhci->event_ring); xhci_dbg_ring_ptrs(xhci, xhci->event_ring); - temp_64 = xhci_read_64(xhci, &xhci->ir_set->erst_dequeue); + temp_64 = readq(&xhci->ir_set->erst_dequeue); temp_64 &= ~ERST_PTR_MASK; xhci_dbg_trace(xhci, trace_xhci_dbg_init, "ERST deq = 64'h%0lx", (long unsigned int) temp_64); @@ -749,11 +749,11 @@ static void xhci_save_registers(struct xhci_hcd *xhci) { xhci->s3.command = readl(&xhci->op_regs->command); xhci->s3.dev_nt = readl(&xhci->op_regs->dev_notification); - xhci->s3.dcbaa_ptr = xhci_read_64(xhci, &xhci->op_regs->dcbaa_ptr); + xhci->s3.dcbaa_ptr = readq(&xhci->op_regs->dcbaa_ptr); xhci->s3.config_reg = readl(&xhci->op_regs->config_reg); xhci->s3.erst_size = readl(&xhci->ir_set->erst_size); - xhci->s3.erst_base = xhci_read_64(xhci, &xhci->ir_set->erst_base); - xhci->s3.erst_dequeue = xhci_read_64(xhci, &xhci->ir_set->erst_dequeue); + xhci->s3.erst_base = readq(&xhci->ir_set->erst_base); + xhci->s3.erst_dequeue = readq(&xhci->ir_set->erst_dequeue); xhci->s3.irq_pending = readl(&xhci->ir_set->irq_pending); xhci->s3.irq_control = readl(&xhci->ir_set->irq_control); } @@ -776,7 +776,7 @@ static void xhci_set_cmd_ring_deq(struct xhci_hcd *xhci) u64 val_64; /* step 2: initialize command ring buffer */ - val_64 = xhci_read_64(xhci, &xhci->op_regs->cmd_ring); + val_64 = readq(&xhci->op_regs->cmd_ring); val_64 = (val_64 & (u64) CMD_RING_RSVD_BITS) | (xhci_trb_virt_to_dma(xhci->cmd_ring->deq_seg, xhci->cmd_ring->dequeue) & @@ -3832,7 +3832,7 @@ int xhci_address_device(struct usb_hcd *hcd, struct usb_device *udev) if (ret) { return ret; } - temp_64 = xhci_read_64(xhci, &xhci->op_regs->dcbaa_ptr); + temp_64 = readq(&xhci->op_regs->dcbaa_ptr); xhci_dbg_trace(xhci, trace_xhci_dbg_address, "Op regs DCBAA ptr = %#016llx", temp_64); xhci_dbg_trace(xhci, trace_xhci_dbg_address, diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h index 402d8743d245..5579b44379a4 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h @@ -28,6 +28,8 @@ #include #include +#include + /* Code sharing between pci-quirks and xhci hcd */ #include "xhci-ext-caps.h" #include "pci-quirks.h" @@ -1604,14 +1606,6 @@ static inline struct usb_hcd *xhci_to_hcd(struct xhci_hcd *xhci) * xHCI implementations that do not support 64-bit address pointers will ignore * the high dword, and write order is irrelevant. */ -static inline u64 xhci_read_64(const struct xhci_hcd *xhci, - __le64 __iomem *regs) -{ - __u32 __iomem *ptr = (__u32 __iomem *) regs; - u64 val_lo = readl(ptr); - u64 val_hi = readl(ptr + 1); - return val_lo + (val_hi << 32); -} static inline void xhci_write_64(struct xhci_hcd *xhci, const u64 val, __le64 __iomem *regs) { From 7dd09a1af2c7150269350aaa567a11b06e831003 Mon Sep 17 00:00:00 2001 From: Xenia Ragiadakou Date: Fri, 15 Nov 2013 05:34:09 +0200 Subject: [PATCH 15/81] xhci: replace xhci_write_64() with writeq() Function xhci_write_64() is used to write 64bit xHC registers residing in MMIO. On 32bit systems, xHC registers need to be written with 32bit accesses by writing first the lower 32bits and then the higher 32bits. The header file asm-generic/io-64-nonatomic-lo-hi.h ensures that on 32bit systems writeq() will will write 64bit registers in 32bit chunks with low-high order. Replace all calls to xhci_write_64() with calls to writeq(). This is done to reduce code duplication since 64bit low-high write logic is already implemented and to take advantage of inherent "atomic" 64bit write operations on 64bit systems. Signed-off-by: Xenia Ragiadakou Signed-off-by: Sarah Sharp --- drivers/usb/host/xhci-mem.c | 8 ++++---- drivers/usb/host/xhci-ring.c | 8 +++----- drivers/usb/host/xhci.c | 8 ++++---- drivers/usb/host/xhci.h | 29 +++++++++-------------------- 4 files changed, 20 insertions(+), 33 deletions(-) diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c index 4b87026f8a5a..873c272b3ef5 100644 --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c @@ -1967,7 +1967,7 @@ static void xhci_set_hc_event_deq(struct xhci_hcd *xhci) xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Write event ring dequeue pointer, " "preserving EHB bit"); - xhci_write_64(xhci, ((u64) deq & (u64) ~ERST_PTR_MASK) | temp, + writeq(((u64) deq & (u64) ~ERST_PTR_MASK) | temp, &xhci->ir_set->erst_dequeue); } @@ -2269,7 +2269,7 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Device context base array address = 0x%llx (DMA), %p (virt)", (unsigned long long)xhci->dcbaa->dma, xhci->dcbaa); - xhci_write_64(xhci, dma, &xhci->op_regs->dcbaa_ptr); + writeq(dma, &xhci->op_regs->dcbaa_ptr); /* * Initialize the ring segment pool. The ring must be a contiguous @@ -2318,7 +2318,7 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) xhci->cmd_ring->cycle_state; xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Setting command ring address to 0x%x", val); - xhci_write_64(xhci, val_64, &xhci->op_regs->cmd_ring); + writeq(val_64, &xhci->op_regs->cmd_ring); xhci_dbg_cmd_ptrs(xhci); xhci->lpm_command = xhci_alloc_command(xhci, true, true, flags); @@ -2399,7 +2399,7 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) val_64 = readq(&xhci->ir_set->erst_base); val_64 &= ERST_PTR_MASK; val_64 |= (xhci->erst.erst_dma_addr & (u64) ~ERST_PTR_MASK); - xhci_write_64(xhci, val_64, &xhci->ir_set->erst_base); + writeq(val_64, &xhci->ir_set->erst_base); /* Set the event ring dequeue address */ xhci_set_hc_event_deq(xhci); diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c index 339733b8524a..fe9208a5d103 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -319,8 +319,7 @@ static int xhci_abort_cmd_ring(struct xhci_hcd *xhci) return 0; } xhci->cmd_ring_state = CMD_RING_STATE_ABORTED; - xhci_write_64(xhci, temp_64 | CMD_RING_ABORT, - &xhci->op_regs->cmd_ring); + writeq(temp_64 | CMD_RING_ABORT, &xhci->op_regs->cmd_ring); /* Section 4.6.1.2 of xHCI 1.0 spec says software should * time the completion od all xHCI commands, including @@ -2872,8 +2871,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd) * the event ring should be empty. */ temp_64 = readq(&xhci->ir_set->erst_dequeue); - xhci_write_64(xhci, temp_64 | ERST_EHB, - &xhci->ir_set->erst_dequeue); + writeq(temp_64 | ERST_EHB, &xhci->ir_set->erst_dequeue); spin_unlock(&xhci->lock); return IRQ_HANDLED; @@ -2900,7 +2898,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd) /* Clear the event handler busy flag (RW1C); event ring is empty. */ temp_64 |= ERST_EHB; - xhci_write_64(xhci, temp_64, &xhci->ir_set->erst_dequeue); + writeq(temp_64, &xhci->ir_set->erst_dequeue); spin_unlock(&xhci->lock); diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 858e992729c9..7fe6f664054f 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -762,11 +762,11 @@ static void xhci_restore_registers(struct xhci_hcd *xhci) { writel(xhci->s3.command, &xhci->op_regs->command); writel(xhci->s3.dev_nt, &xhci->op_regs->dev_notification); - xhci_write_64(xhci, xhci->s3.dcbaa_ptr, &xhci->op_regs->dcbaa_ptr); + writeq(xhci->s3.dcbaa_ptr, &xhci->op_regs->dcbaa_ptr); writel(xhci->s3.config_reg, &xhci->op_regs->config_reg); writel(xhci->s3.erst_size, &xhci->ir_set->erst_size); - xhci_write_64(xhci, xhci->s3.erst_base, &xhci->ir_set->erst_base); - xhci_write_64(xhci, xhci->s3.erst_dequeue, &xhci->ir_set->erst_dequeue); + writeq(xhci->s3.erst_base, &xhci->ir_set->erst_base); + writeq(xhci->s3.erst_dequeue, &xhci->ir_set->erst_dequeue); writel(xhci->s3.irq_pending, &xhci->ir_set->irq_pending); writel(xhci->s3.irq_control, &xhci->ir_set->irq_control); } @@ -785,7 +785,7 @@ static void xhci_set_cmd_ring_deq(struct xhci_hcd *xhci) xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Setting command ring address to 0x%llx", (long unsigned long) val_64); - xhci_write_64(xhci, val_64, &xhci->op_regs->cmd_ring); + writeq(val_64, &xhci->op_regs->cmd_ring); } /* diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h index 5579b44379a4..7807f621a713 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h @@ -28,6 +28,15 @@ #include #include +/* + * Registers should always be accessed with double word or quad word accesses. + * + * Some xHCI implementations may support 64-bit address pointers. Registers + * with 64-bit address pointers should be written to with dword accesses by + * writing the low dword first (ptr[0]), then the high dword (ptr[1]) second. + * xHCI implementations that do not support 64-bit address pointers will ignore + * the high dword, and write order is irrelevant. + */ #include /* Code sharing between pci-quirks and xhci hcd */ @@ -1597,26 +1606,6 @@ static inline struct usb_hcd *xhci_to_hcd(struct xhci_hcd *xhci) #define xhci_warn_ratelimited(xhci, fmt, args...) \ dev_warn_ratelimited(xhci_to_hcd(xhci)->self.controller , fmt , ## args) -/* - * Registers should always be accessed with double word or quad word accesses. - * - * Some xHCI implementations may support 64-bit address pointers. Registers - * with 64-bit address pointers should be written to with dword accesses by - * writing the low dword first (ptr[0]), then the high dword (ptr[1]) second. - * xHCI implementations that do not support 64-bit address pointers will ignore - * the high dword, and write order is irrelevant. - */ -static inline void xhci_write_64(struct xhci_hcd *xhci, - const u64 val, __le64 __iomem *regs) -{ - __u32 __iomem *ptr = (__u32 __iomem *) regs; - u32 val_lo = lower_32_bits(val); - u32 val_hi = upper_32_bits(val); - - writel(val_lo, ptr); - writel(val_hi, ptr + 1); -} - static inline int xhci_link_trb_quirk(struct xhci_hcd *xhci) { return xhci->quirks & XHCI_LINK_TRB_QUIRK; From 46adcf3d82b44a4a9f147b2b898595d48873aa53 Mon Sep 17 00:00:00 2001 From: Fabio Estevam Date: Fri, 8 Nov 2013 01:09:47 -0200 Subject: [PATCH 16/81] usb: chipidea: host: Only disable the vbus regulator if it is not NULL Commit 40ed51a4b (usb: chipidea: host: add vbus regulator control) introduced a smatch complaint because regulator_disable() is called without checking whether ci->platdata->reg_vbus is not NULL. Fix this by adding the check. Reported-by: Dan Carpenter Signed-off-by: Fabio Estevam Signed-off-by: Greg Kroah-Hartman --- drivers/usb/chipidea/host.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c index 59e6020ea753..526cd77563d8 100644 --- a/drivers/usb/chipidea/host.c +++ b/drivers/usb/chipidea/host.c @@ -88,7 +88,8 @@ static int host_start(struct ci_hdrc *ci) return ret; disable_reg: - regulator_disable(ci->platdata->reg_vbus); + if (ci->platdata->reg_vbus) + regulator_disable(ci->platdata->reg_vbus); put_hcd: usb_put_hcd(hcd); From 4e065b8bba731af296f963e0608e6ea7d98c044f Mon Sep 17 00:00:00 2001 From: Jingoo Han Date: Thu, 28 Nov 2013 14:15:26 +0900 Subject: [PATCH 17/81] usb: chipidea: remove DEFINE_PCI_DEVICE_TABLE macro Don't use DEFINE_PCI_DEVICE_TABLE macro, because this macro is not preferred. Signed-off-by: Jingoo Han Signed-off-by: Greg Kroah-Hartman --- drivers/usb/chipidea/ci_hdrc_pci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/chipidea/ci_hdrc_pci.c b/drivers/usb/chipidea/ci_hdrc_pci.c index d514332ac081..241ae3444fde 100644 --- a/drivers/usb/chipidea/ci_hdrc_pci.c +++ b/drivers/usb/chipidea/ci_hdrc_pci.c @@ -112,7 +112,7 @@ static void ci_hdrc_pci_remove(struct pci_dev *pdev) * * Check "pci.h" for details */ -static DEFINE_PCI_DEVICE_TABLE(ci_hdrc_pci_id_table) = { +static const struct pci_device_id ci_hdrc_pci_id_table[] = { { PCI_DEVICE(0x153F, 0x1004), .driver_data = (kernel_ulong_t)&pci_platdata, From 5a6a62bdb9257aa74ab0ad2b2c8a33b0f9b17ce4 Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Wed, 20 Nov 2013 11:35:34 +0100 Subject: [PATCH 18/81] cdc-acm: add TIOCMIWAIT This implements TIOCMIWAIT for TIOCM_DSR, TIOCM_RI and TIOCM_CD Disconnect is handled as TIOCM_CD or an error. Signed-off-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman --- drivers/usb/class/cdc-acm.c | 86 +++++++++++++++++++++++++++++++------ drivers/usb/class/cdc-acm.h | 3 ++ 2 files changed, 77 insertions(+), 12 deletions(-) diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c index 3e7560f004f8..7c0051710a04 100644 --- a/drivers/usb/class/cdc-acm.c +++ b/drivers/usb/class/cdc-acm.c @@ -262,6 +262,7 @@ static void acm_ctrl_irq(struct urb *urb) struct usb_cdc_notification *dr = urb->transfer_buffer; unsigned char *data; int newctrl; + int difference; int retval; int status = urb->status; @@ -302,20 +303,31 @@ static void acm_ctrl_irq(struct urb *urb) tty_port_tty_hangup(&acm->port, false); } + difference = acm->ctrlin ^ newctrl; + spin_lock(&acm->read_lock); acm->ctrlin = newctrl; + acm->oldcount = acm->iocount; - dev_dbg(&acm->control->dev, - "%s - input control lines: dcd%c dsr%c break%c " - "ring%c framing%c parity%c overrun%c\n", - __func__, - acm->ctrlin & ACM_CTRL_DCD ? '+' : '-', - acm->ctrlin & ACM_CTRL_DSR ? '+' : '-', - acm->ctrlin & ACM_CTRL_BRK ? '+' : '-', - acm->ctrlin & ACM_CTRL_RI ? '+' : '-', - acm->ctrlin & ACM_CTRL_FRAMING ? '+' : '-', - acm->ctrlin & ACM_CTRL_PARITY ? '+' : '-', - acm->ctrlin & ACM_CTRL_OVERRUN ? '+' : '-'); - break; + if (difference & ACM_CTRL_DSR) + acm->iocount.dsr++; + if (difference & ACM_CTRL_BRK) + acm->iocount.brk++; + if (difference & ACM_CTRL_RI) + acm->iocount.rng++; + if (difference & ACM_CTRL_DCD) + acm->iocount.dcd++; + if (difference & ACM_CTRL_FRAMING) + acm->iocount.frame++; + if (difference & ACM_CTRL_PARITY) + acm->iocount.parity++; + if (difference & ACM_CTRL_OVERRUN) + acm->iocount.overrun++; + spin_unlock(&acm->read_lock); + + if (difference) + wake_up_all(&acm->wioctl); + + break; default: dev_dbg(&acm->control->dev, @@ -796,6 +808,51 @@ static int set_serial_info(struct acm *acm, return retval; } +static int wait_serial_change(struct acm *acm, unsigned long arg) +{ + int rv = 0; + DECLARE_WAITQUEUE(wait, current); + struct async_icount old, new; + + if (arg & (TIOCM_DSR | TIOCM_RI | TIOCM_CD )) + return -EINVAL; + do { + spin_lock_irq(&acm->read_lock); + old = acm->oldcount; + new = acm->iocount; + acm->oldcount = new; + spin_unlock_irq(&acm->read_lock); + + if ((arg & TIOCM_DSR) && + old.dsr != new.dsr) + break; + if ((arg & TIOCM_CD) && + old.dcd != new.dcd) + break; + if ((arg & TIOCM_RI) && + old.rng != new.rng) + break; + + add_wait_queue(&acm->wioctl, &wait); + set_current_state(TASK_INTERRUPTIBLE); + schedule(); + remove_wait_queue(&acm->wioctl, &wait); + if (acm->disconnected) { + if (arg & TIOCM_CD) + break; + else + rv = -ENODEV; + } else { + if (signal_pending(current)) + rv = -ERESTARTSYS; + } + } while (!rv); + + + + return rv; +} + static int acm_tty_ioctl(struct tty_struct *tty, unsigned int cmd, unsigned long arg) { @@ -809,6 +866,9 @@ static int acm_tty_ioctl(struct tty_struct *tty, case TIOCSSERIAL: rv = set_serial_info(acm, (struct serial_struct __user *) arg); break; + case TIOCMIWAIT: + rv = wait_serial_change(acm, arg); + break; } return rv; @@ -1167,6 +1227,7 @@ static int acm_probe(struct usb_interface *intf, acm->readsize = readsize; acm->rx_buflimit = num_rx_buf; INIT_WORK(&acm->work, acm_softint); + init_waitqueue_head(&acm->wioctl); spin_lock_init(&acm->write_lock); spin_lock_init(&acm->read_lock); mutex_init(&acm->mutex); @@ -1383,6 +1444,7 @@ static void acm_disconnect(struct usb_interface *intf) device_remove_file(&acm->control->dev, &dev_attr_iCountryCodeRelDate); } + wake_up_all(&acm->wioctl); device_remove_file(&acm->control->dev, &dev_attr_bmCapabilities); usb_set_intfdata(acm->control, NULL); usb_set_intfdata(acm->data, NULL); diff --git a/drivers/usb/class/cdc-acm.h b/drivers/usb/class/cdc-acm.h index 0f76e4af600e..e38dc785808f 100644 --- a/drivers/usb/class/cdc-acm.h +++ b/drivers/usb/class/cdc-acm.h @@ -106,6 +106,9 @@ struct acm { struct work_struct work; /* work queue entry for line discipline waking up */ unsigned int ctrlin; /* input control lines (DCD, DSR, RI, break, overruns) */ unsigned int ctrlout; /* output control lines (DTR, RTS) */ + struct async_icount iocount; /* counters for control line changes */ + struct async_icount oldcount; /* for comparison of counter */ + wait_queue_head_t wioctl; /* for ioctl */ unsigned int writesize; /* max packet size for the output bulk endpoint */ unsigned int readsize,ctrlsize; /* buffer sizes for freeing */ unsigned int minor; /* acm minor number */ From 797ef13716ce05d26c5be12893ca75b2b003f25f Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Wed, 20 Nov 2013 11:35:35 +0100 Subject: [PATCH 19/81] cdc-acm: add TIOCGICOUNT Simple straightforward implementation. Just returning the statistics gathered for TIOCMIWAIT Signed-off-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman --- drivers/usb/class/cdc-acm.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c index 7c0051710a04..92e28ecda834 100644 --- a/drivers/usb/class/cdc-acm.c +++ b/drivers/usb/class/cdc-acm.c @@ -853,6 +853,27 @@ static int wait_serial_change(struct acm *acm, unsigned long arg) return rv; } +static int get_serial_usage(struct acm *acm, + struct serial_icounter_struct __user *count) +{ + struct serial_icounter_struct icount; + int rv = 0; + + memset(&icount, 0, sizeof(icount)); + icount.dsr = acm->iocount.dsr; + icount.rng = acm->iocount.rng; + icount.dcd = acm->iocount.dcd; + icount.frame = acm->iocount.frame; + icount.overrun = acm->iocount.overrun; + icount.parity = acm->iocount.parity; + icount.brk = acm->iocount.brk; + + if (copy_to_user(count, &icount, sizeof(icount)) > 0) + rv = -EFAULT; + + return rv; +} + static int acm_tty_ioctl(struct tty_struct *tty, unsigned int cmd, unsigned long arg) { @@ -869,6 +890,9 @@ static int acm_tty_ioctl(struct tty_struct *tty, case TIOCMIWAIT: rv = wait_serial_change(acm, arg); break; + case TIOCGICOUNT: + rv = get_serial_usage(acm, (struct serial_icounter_struct __user *) arg); + break; } return rv; From 8fdbeb26b5105282e55559b54a660fe7b6eed331 Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Wed, 20 Nov 2013 11:35:36 +0100 Subject: [PATCH 20/81] cdc-acm: fix power management in ioctl An ioctl that does depends on communication with a device should prevent suspension of teh device. Signed-off-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman --- drivers/usb/class/cdc-acm.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c index 92e28ecda834..8fe32eb7970e 100644 --- a/drivers/usb/class/cdc-acm.c +++ b/drivers/usb/class/cdc-acm.c @@ -888,7 +888,13 @@ static int acm_tty_ioctl(struct tty_struct *tty, rv = set_serial_info(acm, (struct serial_struct __user *) arg); break; case TIOCMIWAIT: + rv = usb_autopm_get_interface(acm->control); + if (rv < 0) { + rv = -EIO; + break; + } rv = wait_serial_change(acm, arg); + usb_autopm_put_interface(acm->control); break; case TIOCGICOUNT: rv = get_serial_usage(acm, (struct serial_icounter_struct __user *) arg); From 5c2a18014f906d81ae83484801831650f0fa07fe Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Mon, 18 Nov 2013 13:22:57 +0100 Subject: [PATCH 21/81] ohci: remove conditional compilation Conditional compilation for debugging is removed in favor of dynamic debugging. To do so 1. the support for debugfs is always compiled 2. the support for the ancient print_urb debugging aid is removed Signed-off-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/ohci-dbg.c | 69 ------------------------------------- drivers/usb/host/ohci-hcd.c | 8 ----- drivers/usb/host/ohci-q.c | 4 --- drivers/usb/host/ohci.h | 7 +--- 4 files changed, 1 insertion(+), 87 deletions(-) diff --git a/drivers/usb/host/ohci-dbg.c b/drivers/usb/host/ohci-dbg.c index 3fca52ec02ac..45032e933e18 100644 --- a/drivers/usb/host/ohci-dbg.c +++ b/drivers/usb/host/ohci-dbg.c @@ -9,8 +9,6 @@ /*-------------------------------------------------------------------------*/ -#ifdef DEBUG - #define edstring(ed_type) ({ char *temp; \ switch (ed_type) { \ case PIPE_CONTROL: temp = "ctrl"; break; \ @@ -20,57 +18,6 @@ } temp;}) #define pipestring(pipe) edstring(usb_pipetype(pipe)) -/* debug| print the main components of an URB - * small: 0) header + data packets 1) just header - */ -static void __maybe_unused -urb_print(struct urb * urb, char * str, int small, int status) -{ - unsigned int pipe= urb->pipe; - - if (!urb->dev || !urb->dev->bus) { - printk(KERN_DEBUG "%s URB: no dev\n", str); - return; - } - -#ifndef OHCI_VERBOSE_DEBUG - if (status != 0) -#endif - printk(KERN_DEBUG "%s %p dev=%d ep=%d%s-%s flags=%x len=%d/%d stat=%d\n", - str, - urb, - usb_pipedevice (pipe), - usb_pipeendpoint (pipe), - usb_pipeout (pipe)? "out" : "in", - pipestring (pipe), - urb->transfer_flags, - urb->actual_length, - urb->transfer_buffer_length, - status); - -#ifdef OHCI_VERBOSE_DEBUG - if (!small) { - int i, len; - - if (usb_pipecontrol (pipe)) { - printk (KERN_DEBUG "%s: setup(8):", __FILE__); - for (i = 0; i < 8 ; i++) - printk (" %02x", ((__u8 *) urb->setup_packet) [i]); - printk ("\n"); - } - if (urb->transfer_buffer_length > 0 && urb->transfer_buffer) { - printk (KERN_DEBUG "%s: data(%d/%d):", __FILE__, - urb->actual_length, - urb->transfer_buffer_length); - len = usb_pipeout (pipe)? - urb->transfer_buffer_length: urb->actual_length; - for (i = 0; i < 16 && i < len; i++) - printk (" %02x", ((__u8 *) urb->transfer_buffer) [i]); - printk ("%s stat:%d\n", i < len? "...": "", status); - } - } -#endif -} #define ohci_dbg_sw(ohci, next, size, format, arg...) \ do { \ @@ -407,22 +354,8 @@ ohci_dump_ed (const struct ohci_hcd *ohci, const char *label, } } -#else -static inline void ohci_dump (struct ohci_hcd *controller, int verbose) {} - -#undef OHCI_VERBOSE_DEBUG - -#endif /* DEBUG */ - /*-------------------------------------------------------------------------*/ -#ifdef STUB_DEBUG_FILES - -static inline void create_debug_files (struct ohci_hcd *bus) { } -static inline void remove_debug_files (struct ohci_hcd *bus) { } - -#else - static int debug_async_open(struct inode *, struct file *); static int debug_periodic_open(struct inode *, struct file *); static int debug_registers_open(struct inode *, struct file *); @@ -871,7 +804,5 @@ static inline void remove_debug_files (struct ohci_hcd *ohci) debugfs_remove(ohci->debug_dir); } -#endif - /*-------------------------------------------------------------------------*/ diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c index 8ada13f8dde2..e1c68094508d 100644 --- a/drivers/usb/host/ohci-hcd.c +++ b/drivers/usb/host/ohci-hcd.c @@ -127,10 +127,6 @@ static int ohci_urb_enqueue ( unsigned long flags; int retval = 0; -#ifdef OHCI_VERBOSE_DEBUG - urb_print(urb, "SUB", usb_pipein(pipe), -EINPROGRESS); -#endif - /* every endpoint has a ed, locate and maybe (re)initialize it */ if (! (ed = ed_get (ohci, urb->ep, urb->dev, pipe, urb->interval))) return -ENOMEM; @@ -284,10 +280,6 @@ static int ohci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status) unsigned long flags; int rc; -#ifdef OHCI_VERBOSE_DEBUG - urb_print(urb, "UNLINK", 1, status); -#endif - spin_lock_irqsave (&ohci->lock, flags); rc = usb_hcd_check_unlink_urb(hcd, urb, status); if (rc) { diff --git a/drivers/usb/host/ohci-q.c b/drivers/usb/host/ohci-q.c index e7f577e63624..182eaa2183b1 100644 --- a/drivers/usb/host/ohci-q.c +++ b/drivers/usb/host/ohci-q.c @@ -68,10 +68,6 @@ __acquires(ohci->lock) break; } -#ifdef OHCI_VERBOSE_DEBUG - urb_print(urb, "RET", usb_pipeout (urb->pipe), status); -#endif - /* urb->complete() can reenter this HCD */ usb_hcd_unlink_urb_from_ep(ohci_to_hcd(ohci), urb); spin_unlock (&ohci->lock); diff --git a/drivers/usb/host/ohci.h b/drivers/usb/host/ohci.h index e2e5faa5a402..ea02722cab04 100644 --- a/drivers/usb/host/ohci.h +++ b/drivers/usb/host/ohci.h @@ -415,12 +415,11 @@ struct ohci_hcd { struct ed *ed_to_check; unsigned zf_delay; -#ifdef DEBUG struct dentry *debug_dir; struct dentry *debug_async; struct dentry *debug_periodic; struct dentry *debug_registers; -#endif + /* platform-specific data -- must come last */ unsigned long priv[0] __aligned(sizeof(s64)); @@ -474,10 +473,6 @@ static inline struct usb_hcd *ohci_to_hcd (const struct ohci_hcd *ohci) /*-------------------------------------------------------------------------*/ -#ifndef DEBUG -#define STUB_DEBUG_FILES -#endif /* DEBUG */ - #define ohci_dbg(ohci, fmt, args...) \ dev_dbg (ohci_to_hcd(ohci)->self.controller , fmt , ## args ) #define ohci_err(ohci, fmt, args...) \ From d2c4254ff9753485900762dea98958ae4622aa05 Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Mon, 18 Nov 2013 13:22:58 +0100 Subject: [PATCH 22/81] ohci: kill ohci_vdbg With the introduction of dynamic debugging it has become redundant. Collapse it with ohci_dbg() Signed-off-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/ohci-hcd.c | 4 ++-- drivers/usb/host/ohci-q.c | 8 ++++---- drivers/usb/host/ohci.h | 6 ------ 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c index e1c68094508d..501ecea4917f 100644 --- a/drivers/usb/host/ohci-hcd.c +++ b/drivers/usb/host/ohci-hcd.c @@ -832,7 +832,7 @@ static irqreturn_t ohci_irq (struct usb_hcd *hcd) } if (ints & OHCI_INTR_RHSC) { - ohci_vdbg(ohci, "rhsc\n"); + ohci_dbg(ohci, "rhsc\n"); ohci->next_statechange = jiffies + STATECHANGE_DELAY; ohci_writel(ohci, OHCI_INTR_RD | OHCI_INTR_RHSC, ®s->intrstatus); @@ -854,7 +854,7 @@ static irqreturn_t ohci_irq (struct usb_hcd *hcd) * this might not happen. */ else if (ints & OHCI_INTR_RD) { - ohci_vdbg(ohci, "resume detect\n"); + ohci_dbg(ohci, "resume detect\n"); ohci_writel(ohci, OHCI_INTR_RD, ®s->intrstatus); set_bit(HCD_FLAG_POLL_RH, &hcd->flags); if (ohci->autostop) { diff --git a/drivers/usb/host/ohci-q.c b/drivers/usb/host/ohci-q.c index 182eaa2183b1..d4253e319428 100644 --- a/drivers/usb/host/ohci-q.c +++ b/drivers/usb/host/ohci-q.c @@ -143,7 +143,7 @@ static void periodic_link (struct ohci_hcd *ohci, struct ed *ed) { unsigned i; - ohci_vdbg (ohci, "link %sed %p branch %d [%dus.], interval %d\n", + ohci_dbg(ohci, "link %sed %p branch %d [%dus.], interval %d\n", (ed->hwINFO & cpu_to_hc32 (ohci, ED_ISO)) ? "iso " : "", ed, ed->branch, ed->load, ed->interval); @@ -290,7 +290,7 @@ static void periodic_unlink (struct ohci_hcd *ohci, struct ed *ed) } ohci_to_hcd(ohci)->self.bandwidth_allocated -= ed->load / ed->interval; - ohci_vdbg (ohci, "unlink %sed %p branch %d [%dus.], interval %d\n", + ohci_dbg(ohci, "unlink %sed %p branch %d [%dus.], interval %d\n", (ed->hwINFO & cpu_to_hc32 (ohci, ED_ISO)) ? "iso " : "", ed, ed->branch, ed->load, ed->interval); } @@ -761,7 +761,7 @@ static int td_done(struct ohci_hcd *ohci, struct urb *urb, struct td *td) urb->iso_frame_desc [td->index].status = cc_to_error [cc]; if (cc != TD_CC_NOERROR) - ohci_vdbg (ohci, + ohci_dbg(ohci, "urb %p iso td %p (%d) len %d cc %d\n", urb, td, 1 + td->index, dlen, cc); @@ -793,7 +793,7 @@ static int td_done(struct ohci_hcd *ohci, struct urb *urb, struct td *td) } if (cc != TD_CC_NOERROR && cc < 0x0E) - ohci_vdbg (ohci, + ohci_dbg(ohci, "urb %p td %p (%d) cc %d, len=%d/%d\n", urb, td, 1 + td->index, cc, urb->actual_length, diff --git a/drivers/usb/host/ohci.h b/drivers/usb/host/ohci.h index ea02722cab04..9250cada13f0 100644 --- a/drivers/usb/host/ohci.h +++ b/drivers/usb/host/ohci.h @@ -482,12 +482,6 @@ static inline struct usb_hcd *ohci_to_hcd (const struct ohci_hcd *ohci) #define ohci_warn(ohci, fmt, args...) \ dev_warn (ohci_to_hcd(ohci)->self.controller , fmt , ## args ) -#ifdef OHCI_VERBOSE_DEBUG -# define ohci_vdbg ohci_dbg -#else -# define ohci_vdbg(ohci, fmt, args...) do { } while (0) -#endif - /*-------------------------------------------------------------------------*/ /* From 1714ba0e8ec07ff9a7f6d165d4fbb471df6c10da Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Mon, 18 Nov 2013 13:22:59 +0100 Subject: [PATCH 23/81] ohci:always register debug files Just remove the conditional compilation. Signed-off-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/ohci-hcd.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c index 501ecea4917f..de0e3e430ea0 100644 --- a/drivers/usb/host/ohci-hcd.c +++ b/drivers/usb/host/ohci-hcd.c @@ -1225,13 +1225,11 @@ static int __init ohci_hcd_mod_init(void) sizeof (struct ed), sizeof (struct td)); set_bit(USB_OHCI_LOADED, &usb_hcds_loaded); -#ifdef DEBUG ohci_debug_root = debugfs_create_dir("ohci", usb_debug_root); if (!ohci_debug_root) { retval = -ENOENT; goto error_debug; } -#endif #ifdef PS3_SYSTEM_BUS_DRIVER retval = ps3_ohci_driver_register(&PS3_SYSTEM_BUS_DRIVER); @@ -1306,11 +1304,9 @@ static int __init ohci_hcd_mod_init(void) ps3_ohci_driver_unregister(&PS3_SYSTEM_BUS_DRIVER); error_ps3: #endif -#ifdef DEBUG debugfs_remove(ohci_debug_root); ohci_debug_root = NULL; error_debug: -#endif clear_bit(USB_OHCI_LOADED, &usb_hcds_loaded); return retval; @@ -1340,9 +1336,7 @@ static void __exit ohci_hcd_mod_exit(void) #ifdef PS3_SYSTEM_BUS_DRIVER ps3_ohci_driver_unregister(&PS3_SYSTEM_BUS_DRIVER); #endif -#ifdef DEBUG debugfs_remove(ohci_debug_root); -#endif clear_bit(USB_OHCI_LOADED, &usb_hcds_loaded); } module_exit(ohci_hcd_mod_exit); From 00b033bb90c1e8838616f342abe6e2f0a56e839f Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Mon, 18 Nov 2013 13:23:00 +0100 Subject: [PATCH 24/81] ohci: no conditional debugging in root hub hadling With dynamic debugging the selection is done in user space Signed-off-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/ohci-hub.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/usb/host/ohci-hub.c b/drivers/usb/host/ohci-hub.c index 61705a760e7d..c81c8721cc5a 100644 --- a/drivers/usb/host/ohci-hub.c +++ b/drivers/usb/host/ohci-hub.c @@ -725,10 +725,8 @@ static int ohci_hub_control ( temp = roothub_portstatus (ohci, wIndex); put_unaligned_le32(temp, buf); -#ifndef OHCI_VERBOSE_DEBUG - if (*(u16*)(buf+2)) /* only if wPortChange is interesting */ -#endif - dbg_port (ohci, "GetStatus", wIndex, temp); + if (*(u16*)(buf+2)) /* only if wPortChange is interesting */ + dbg_port(ohci, "GetStatus", wIndex, temp); break; case SetHubFeature: switch (wValue) { From bbcd5cab03e61f69d50a1535ff2646f9698b9760 Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Mon, 18 Nov 2013 13:23:01 +0100 Subject: [PATCH 25/81] ehci: no conditional compilation for interestingness Simple elemination of the conditional compilation Signed-off-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/ehci-hub.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c index 835fc0844a66..47b858fc50b2 100644 --- a/drivers/usb/host/ehci-hub.c +++ b/drivers/usb/host/ehci-hub.c @@ -1114,10 +1114,8 @@ static int ehci_hub_control ( if (test_bit(wIndex, &ehci->port_c_suspend)) status |= USB_PORT_STAT_C_SUSPEND << 16; -#ifndef VERBOSE_DEBUG - if (status & ~0xffff) /* only if wPortChange is interesting */ -#endif - dbg_port (ehci, "GetStatus", wIndex + 1, temp); + if (status & ~0xffff) /* only if wPortChange is interesting */ + dbg_port(ehci, "GetStatus", wIndex + 1, temp); put_unaligned_le32(status, buf); break; case SetHubFeature: From 991fb3daac946441dbf4c237b2dd4d6c11fff633 Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Mon, 18 Nov 2013 13:23:02 +0100 Subject: [PATCH 26/81] ehci: Remove debugging at every interrupt This is overkill. Just removeit. Signed-off-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/ehci-hcd.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c index e8ba4c44223a..b57e997eb716 100644 --- a/drivers/usb/host/ehci-hcd.c +++ b/drivers/usb/host/ehci-hcd.c @@ -714,13 +714,6 @@ static irqreturn_t ehci_irq (struct usb_hcd *hcd) cmd = ehci_readl(ehci, &ehci->regs->command); bh = 0; -#ifdef VERBOSE_DEBUG - /* unrequested/ignored: Frame List Rollover */ - dbg_status (ehci, "irq", status); -#endif - - /* INT, ERR, and IAA interrupt rates can be throttled */ - /* normal [4.15.1.2] or error [4.15.1.1] completion */ if (likely ((status & (STS_INT|STS_ERR)) != 0)) { if (likely ((status & STS_ERR) == 0)) From a90b8fc6f477ef40bd7a50354ce4ae029d8c70c5 Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Mon, 18 Nov 2013 13:23:03 +0100 Subject: [PATCH 27/81] fotg210: remove conditional compilation Always compile in the debugfs support Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/fotg210-hcd.c | 8 -------- drivers/usb/host/fotg210.h | 8 -------- 2 files changed, 16 deletions(-) diff --git a/drivers/usb/host/fotg210-hcd.c b/drivers/usb/host/fotg210-hcd.c index 55486bd23cf1..3af053343cf4 100644 --- a/drivers/usb/host/fotg210-hcd.c +++ b/drivers/usb/host/fotg210-hcd.c @@ -352,13 +352,6 @@ dbg_port_buf(char *buf, unsigned len, const char *label, int port, u32 status) /*-------------------------------------------------------------------------*/ -#ifdef STUB_DEBUG_FILES - -static inline void create_debug_files(struct fotg210_hcd *bus) { } -static inline void remove_debug_files(struct fotg210_hcd *bus) { } - -#else - /* troubleshooting help: expose state in debugfs */ static int debug_async_open(struct inode *, struct file *); @@ -954,7 +947,6 @@ static inline void remove_debug_files(struct fotg210_hcd *fotg210) debugfs_remove_recursive(fotg210->debug_dir); } -#endif /* STUB_DEBUG_FILES */ /*-------------------------------------------------------------------------*/ /* diff --git a/drivers/usb/host/fotg210.h b/drivers/usb/host/fotg210.h index 8920f9d32564..ac6cd1bfd208 100644 --- a/drivers/usb/host/fotg210.h +++ b/drivers/usb/host/fotg210.h @@ -174,9 +174,7 @@ struct fotg210_hcd { /* one per controller */ #endif /* debug files */ -#ifdef DEBUG struct dentry *debug_dir; -#endif }; /* convert between an HCD pointer and the corresponding FOTG210_HCD */ @@ -741,10 +739,4 @@ static inline unsigned fotg210_read_frame_index(struct fotg210_hcd *fotg210) }) /*-------------------------------------------------------------------------*/ -#ifndef DEBUG -#define STUB_DEBUG_FILES -#endif /* DEBUG */ - -/*-------------------------------------------------------------------------*/ - #endif /* __LINUX_FOTG210_H */ From 063635ec3ac6d02cefce06038f2166bbff85d840 Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Mon, 18 Nov 2013 13:23:04 +0100 Subject: [PATCH 28/81] fotg210: always compile the support for debugfs Simply remove the conditional compilation and remove the empty stubs. Signed-off-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/fotg210-hcd.c | 47 ---------------------------------- 1 file changed, 47 deletions(-) diff --git a/drivers/usb/host/fotg210-hcd.c b/drivers/usb/host/fotg210-hcd.c index 3af053343cf4..15ee566e46cb 100644 --- a/drivers/usb/host/fotg210-hcd.c +++ b/drivers/usb/host/fotg210-hcd.c @@ -59,9 +59,7 @@ static const char hcd_name[] = "fotg210_hcd"; #undef VERBOSE_DEBUG #undef FOTG210_URB_TRACE -#ifdef DEBUG #define FOTG210_STATS -#endif /* magic numbers that can affect system performance */ #define FOTG210_TUNE_CERR 3 /* 0-3 qtd retries; 0 == don't stop */ @@ -113,8 +111,6 @@ MODULE_PARM_DESC(hird, "host initiated resume duration, +1 for each 75us"); static inline void fotg210_vdbg(struct fotg210_hcd *fotg210, ...) {} #endif -#ifdef DEBUG - /* check the values in the HCSPARAMS register * (host controller _Structural_ parameters) * see EHCI spec, Table 2-4 for each value @@ -129,13 +125,6 @@ static void dbg_hcs_params(struct fotg210_hcd *fotg210, char *label) HCS_N_PORTS(params) ); } -#else - -static inline void dbg_hcs_params(struct fotg210_hcd *fotg210, char *label) {} - -#endif - -#ifdef DEBUG /* check the values in the HCCPARAMS register * (host controller _Capability_ parameters) @@ -152,13 +141,6 @@ static void dbg_hcc_params(struct fotg210_hcd *fotg210, char *label) HCC_PGM_FRAMELISTLEN(params) ? "256/512/1024" : "1024", HCC_CANPARK(params) ? " park" : ""); } -#else - -static inline void dbg_hcc_params(struct fotg210_hcd *fotg210, char *label) {} - -#endif - -#ifdef DEBUG static void __maybe_unused dbg_qtd(const char *label, struct fotg210_hcd *fotg210, struct fotg210_qtd *qtd) @@ -308,29 +290,6 @@ dbg_port_buf(char *buf, unsigned len, const char *label, int port, u32 status) (status & PORT_CONNECT) ? " CONNECT" : ""); } -#else -static inline void __maybe_unused -dbg_qh(char *label, struct fotg210_hcd *fotg210, struct fotg210_qh *qh) -{} - -static inline int __maybe_unused -dbg_status_buf(char *buf, unsigned len, const char *label, u32 status) -{ return 0; } - -static inline int __maybe_unused -dbg_command_buf(char *buf, unsigned len, const char *label, u32 command) -{ return 0; } - -static inline int __maybe_unused -dbg_intr_buf(char *buf, unsigned len, const char *label, u32 enable) -{ return 0; } - -static inline int __maybe_unused -dbg_port_buf(char *buf, unsigned len, const char *label, int port, u32 status) -{ return 0; } - -#endif /* DEBUG */ - /* functions have the "wrong" filename when they're output... */ #define dbg_status(fotg210, label, status) { \ char _buf[80]; \ @@ -6005,13 +5964,11 @@ static int __init fotg210_hcd_init(void) sizeof(struct fotg210_qh), sizeof(struct fotg210_qtd), sizeof(struct fotg210_itd)); -#ifdef DEBUG fotg210_debug_root = debugfs_create_dir("fotg210", usb_debug_root); if (!fotg210_debug_root) { retval = -ENOENT; goto err_debug; } -#endif retval = platform_driver_register(&fotg210_hcd_driver); if (retval < 0) @@ -6020,11 +5977,9 @@ static int __init fotg210_hcd_init(void) platform_driver_unregister(&fotg210_hcd_driver); clean: -#ifdef DEBUG debugfs_remove(fotg210_debug_root); fotg210_debug_root = NULL; err_debug: -#endif clear_bit(USB_EHCI_LOADED, &usb_hcds_loaded); return retval; } @@ -6033,9 +5988,7 @@ module_init(fotg210_hcd_init); static void __exit fotg210_hcd_cleanup(void) { platform_driver_unregister(&fotg210_hcd_driver); -#ifdef DEBUG debugfs_remove(fotg210_debug_root); -#endif clear_bit(USB_EHCI_LOADED, &usb_hcds_loaded); } module_exit(fotg210_hcd_cleanup); From f848a88d223cafa43cb318839a1171b498cf5ec8 Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Mon, 18 Nov 2013 13:23:05 +0100 Subject: [PATCH 29/81] fotg210: change dbg_port() to evaluate parameters only if needed For dynamic debug the overhead for evaluating parameters must be sacrificed only if the message is actually printed Signed-off-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/fotg210-hcd.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/usb/host/fotg210-hcd.c b/drivers/usb/host/fotg210-hcd.c index 15ee566e46cb..4acb6a451391 100644 --- a/drivers/usb/host/fotg210-hcd.c +++ b/drivers/usb/host/fotg210-hcd.c @@ -254,8 +254,8 @@ dbg_command_buf(char *buf, unsigned len, const char *label, u32 command) ); } -static int -dbg_port_buf(char *buf, unsigned len, const char *label, int port, u32 status) +static char +*dbg_port_buf(char *buf, unsigned len, const char *label, int port, u32 status) { char *sig; @@ -275,7 +275,7 @@ dbg_port_buf(char *buf, unsigned len, const char *label, int port, u32 status) break; } - return scnprintf(buf, len, + scnprintf(buf, len, "%s%sport:%d status %06x %d " "sig=%s%s%s%s%s%s%s%s", label, label[0] ? " " : "", port, status, @@ -288,6 +288,7 @@ dbg_port_buf(char *buf, unsigned len, const char *label, int port, u32 status) (status & PORT_PE) ? " PE" : "", (status & PORT_CSC) ? " CSC" : "", (status & PORT_CONNECT) ? " CONNECT" : ""); + return buf; } /* functions have the "wrong" filename when they're output... */ @@ -305,8 +306,7 @@ dbg_port_buf(char *buf, unsigned len, const char *label, int port, u32 status) #define dbg_port(fotg210, label, port, status) { \ char _buf[80]; \ - dbg_port_buf(_buf, sizeof(_buf), label, port, status); \ - fotg210_dbg(fotg210, "%s\n", _buf); \ + fotg210_dbg(fotg210, "%s\n", dbg_port_buf(_buf, sizeof(_buf), label, port, status) ); \ } /*-------------------------------------------------------------------------*/ From 3b707ece5b286cca47104364b2064ebb526d69ea Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Mon, 18 Nov 2013 13:23:06 +0100 Subject: [PATCH 30/81] fotg210: remove conditional compilation The decision what is interesting is made in user space. Signed-off-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/fotg210-hcd.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/drivers/usb/host/fotg210-hcd.c b/drivers/usb/host/fotg210-hcd.c index 4acb6a451391..22f0b6859564 100644 --- a/drivers/usb/host/fotg210-hcd.c +++ b/drivers/usb/host/fotg210-hcd.c @@ -1761,10 +1761,8 @@ static int fotg210_hub_control( if (test_bit(wIndex, &fotg210->port_c_suspend)) status |= USB_PORT_STAT_C_SUSPEND << 16; -#ifndef VERBOSE_DEBUG - if (status & ~0xffff) /* only if wPortChange is interesting */ -#endif - dbg_port(fotg210, "GetStatus", wIndex + 1, temp); + if (status & ~0xffff) /* only if wPortChange is interesting */ + dbg_port(fotg210, "GetStatus", wIndex + 1, temp); put_unaligned_le32(status, buf); break; case SetHubFeature: @@ -2225,13 +2223,12 @@ static void fotg210_clear_tt_buffer(struct fotg210_hcd *fotg210, * Note: this routine is never called for Isochronous transfers. */ if (urb->dev->tt && !usb_pipeint(urb->pipe) && !qh->clearing_tt) { -#ifdef DEBUG struct usb_device *tt = urb->dev->tt->hub; dev_dbg(&tt->dev, "clear tt buffer port %d, a%d ep%d t%08x\n", urb->dev->ttport, urb->dev->devnum, usb_pipeendpoint(urb->pipe), token); -#endif /* DEBUG */ + if (urb->dev->tt->hub != fotg210_to_hcd(fotg210)->self.root_hub) { if (usb_hub_clear_tt_buffer(urb) == 0) @@ -3534,11 +3531,9 @@ periodic_usecs(struct fotg210_hcd *fotg210, unsigned frame, unsigned uframe) break; } } -#ifdef DEBUG if (usecs > fotg210->uframe_periodic_max) fotg210_err(fotg210, "uframe %d sched overrun: %d usecs\n", frame * 8 + uframe, usecs); -#endif return usecs; } @@ -5395,10 +5390,8 @@ static irqreturn_t fotg210_irq(struct usb_hcd *hcd) cmd = fotg210_readl(fotg210, &fotg210->regs->command); bh = 0; -#ifdef VERBOSE_DEBUG /* unrequested/ignored: Frame List Rollover */ dbg_status(fotg210, "irq", status); -#endif /* INT, ERR, and IAA interrupt rates can be throttled */ From be5ac4c43d13f68320de16c2d1bcecdba0adbea1 Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Mon, 18 Nov 2013 13:23:07 +0100 Subject: [PATCH 31/81] fotg210: kill fotg210_vdbg() The decision what is interesting is shifted to user space by dynamic debugging. Signed-off-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/fotg210-hcd.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/drivers/usb/host/fotg210-hcd.c b/drivers/usb/host/fotg210-hcd.c index 22f0b6859564..070582bb41ae 100644 --- a/drivers/usb/host/fotg210-hcd.c +++ b/drivers/usb/host/fotg210-hcd.c @@ -105,12 +105,6 @@ MODULE_PARM_DESC(hird, "host initiated resume duration, +1 for each 75us"); #define fotg210_warn(fotg210, fmt, args...) \ dev_warn(fotg210_to_hcd(fotg210)->self.controller , fmt , ## args) -#ifdef VERBOSE_DEBUG -# define fotg210_vdbg fotg210_dbg -#else - static inline void fotg210_vdbg(struct fotg210_hcd *fotg210, ...) {} -#endif - /* check the values in the HCSPARAMS register * (host controller _Structural_ parameters) * see EHCI spec, Table 2-4 for each value @@ -1349,7 +1343,7 @@ static void fotg210_iaa_watchdog(struct fotg210_hcd *fotg210) &fotg210->regs->status); } - fotg210_vdbg(fotg210, "IAA watchdog: status %x cmd %x\n", + fotg210_dbg(fotg210, "IAA watchdog: status %x cmd %x\n", status, cmd); end_unlink_async(fotg210); } @@ -1805,7 +1799,7 @@ static int fotg210_hub_control( * which can be fine if this root hub has a * transaction translator built in. */ - fotg210_vdbg(fotg210, "port %d reset\n", wIndex + 1); + fotg210_dbg(fotg210, "port %d reset\n", wIndex + 1); temp |= PORT_RESET; temp &= ~PORT_PE; @@ -2289,7 +2283,7 @@ static int qtd_copy_status( status = -EPROTO; } - fotg210_vdbg(fotg210, + fotg210_dbg(fotg210, "dev%d ep%d%s qtd token %08x --> status %d\n", usb_pipedevice(urb->pipe), usb_pipeendpoint(urb->pipe), @@ -4592,7 +4586,7 @@ static void itd_link_urb( if (unlikely(list_empty(&stream->td_list))) { fotg210_to_hcd(fotg210)->self.bandwidth_allocated += stream->bandwidth; - fotg210_vdbg(fotg210, + fotg210_dbg(fotg210, "schedule devp %s ep%d%s-iso period %d start %d.%d\n", urb->dev->devpath, stream->bEndpointAddress & 0x0f, (stream->bEndpointAddress & USB_DIR_IN) ? "in" : "out", @@ -4725,7 +4719,7 @@ static bool itd_complete(struct fotg210_hcd *fotg210, struct fotg210_itd *itd) if (unlikely(list_is_singular(&stream->td_list))) { fotg210_to_hcd(fotg210)->self.bandwidth_allocated -= stream->bandwidth; - fotg210_vdbg(fotg210, + fotg210_dbg(fotg210, "deschedule devp %s ep%d%s-iso\n", dev->devpath, stream->bEndpointAddress & 0x0f, (stream->bEndpointAddress & USB_DIR_IN) ? "in" : "out"); From 0ada24a497c3f82cb806bb4b923a2edcf8ee7815 Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Mon, 18 Nov 2013 13:23:08 +0100 Subject: [PATCH 32/81] fusbh200: always build debugfs support This gets rid of conditional compilation. Signed-off-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/fusbh200-hcd.c | 31 ------------------------------- drivers/usb/host/fusbh200.h | 8 -------- 2 files changed, 39 deletions(-) diff --git a/drivers/usb/host/fusbh200-hcd.c b/drivers/usb/host/fusbh200-hcd.c index e1c6d850a7e1..b9f9592e2679 100644 --- a/drivers/usb/host/fusbh200-hcd.c +++ b/drivers/usb/host/fusbh200-hcd.c @@ -159,8 +159,6 @@ static inline void dbg_hcc_params (struct fusbh200_hcd *fusbh200, char *label) { #endif -#ifdef DEBUG - static void __maybe_unused dbg_qtd (const char *label, struct fusbh200_hcd *fusbh200, struct fusbh200_qtd *qtd) { @@ -302,29 +300,6 @@ dbg_port_buf (char *buf, unsigned len, const char *label, int port, u32 status) (status & PORT_CONNECT) ? " CONNECT" : ""); } -#else -static inline void __maybe_unused -dbg_qh (char *label, struct fusbh200_hcd *fusbh200, struct fusbh200_qh *qh) -{} - -static inline int __maybe_unused -dbg_status_buf (char *buf, unsigned len, const char *label, u32 status) -{ return 0; } - -static inline int __maybe_unused -dbg_command_buf (char *buf, unsigned len, const char *label, u32 command) -{ return 0; } - -static inline int __maybe_unused -dbg_intr_buf (char *buf, unsigned len, const char *label, u32 enable) -{ return 0; } - -static inline int __maybe_unused -dbg_port_buf (char *buf, unsigned len, const char *label, int port, u32 status) -{ return 0; } - -#endif /* DEBUG */ - /* functions have the "wrong" filename when they're output... */ #define dbg_status(fusbh200, label, status) { \ char _buf [80]; \ @@ -5936,13 +5911,11 @@ static int __init fusbh200_hcd_init(void) sizeof(struct fusbh200_qh), sizeof(struct fusbh200_qtd), sizeof(struct fusbh200_itd)); -#ifdef DEBUG fusbh200_debug_root = debugfs_create_dir("fusbh200", usb_debug_root); if (!fusbh200_debug_root) { retval = -ENOENT; goto err_debug; } -#endif retval = platform_driver_register(&fusbh200_hcd_fusbh200_driver); if (retval < 0) @@ -5951,11 +5924,9 @@ static int __init fusbh200_hcd_init(void) platform_driver_unregister(&fusbh200_hcd_fusbh200_driver); clean: -#ifdef DEBUG debugfs_remove(fusbh200_debug_root); fusbh200_debug_root = NULL; err_debug: -#endif clear_bit(USB_EHCI_LOADED, &usb_hcds_loaded); return retval; } @@ -5964,9 +5935,7 @@ module_init(fusbh200_hcd_init); static void __exit fusbh200_hcd_cleanup(void) { platform_driver_unregister(&fusbh200_hcd_fusbh200_driver); -#ifdef DEBUG debugfs_remove(fusbh200_debug_root); -#endif clear_bit(USB_EHCI_LOADED, &usb_hcds_loaded); } module_exit(fusbh200_hcd_cleanup); diff --git a/drivers/usb/host/fusbh200.h b/drivers/usb/host/fusbh200.h index 797c9e855270..5b732050ceba 100644 --- a/drivers/usb/host/fusbh200.h +++ b/drivers/usb/host/fusbh200.h @@ -173,9 +173,7 @@ struct fusbh200_hcd { /* one per controller */ #endif /* debug files */ -#ifdef DEBUG struct dentry *debug_dir; -#endif }; /* convert between an HCD pointer and the corresponding FUSBH200_HCD */ @@ -734,10 +732,4 @@ static inline unsigned fusbh200_read_frame_index(struct fusbh200_hcd *fusbh200) }) /*-------------------------------------------------------------------------*/ -#ifndef DEBUG -#define STUB_DEBUG_FILES -#endif /* DEBUG */ - -/*-------------------------------------------------------------------------*/ - #endif /* __LINUX_FUSBH200_H */ From cadb37569871018600531ee4f2bb3da3c746bd91 Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Mon, 18 Nov 2013 13:23:09 +0100 Subject: [PATCH 33/81] uhci: change dependency for debug parameter To allow a full switch to dynamic debugging make the debug parameter conditional on defined(DEBUF) || defined(CONFIG_DYNAMIC_DEBUG) Signed-off-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/uhci-hcd.c | 44 +++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c index 4a86b63745b8..d9d3c5a98d83 100644 --- a/drivers/usb/host/uhci-hcd.c +++ b/drivers/usb/host/uhci-hcd.c @@ -69,18 +69,21 @@ MODULE_PARM_DESC(ignore_oc, "ignore hardware overcurrent indications"); * show all queues in /sys/kernel/debug/uhci/[pci_addr] * debug = 3, show all TDs in URBs when dumping */ -#ifdef DEBUG -#define DEBUG_CONFIGURED 1 +#if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG) + static int debug = 1; module_param(debug, int, S_IRUGO | S_IWUSR); MODULE_PARM_DESC(debug, "Debug level"); +static char *errbuf; #else -#define DEBUG_CONFIGURED 0 -#define debug 0 + +#define debug 0 +#define errbuf NULL + #endif -static char *errbuf; + #define ERRBUF_LEN (32 * 1024) static struct kmem_cache *uhci_up_cachep; /* urb_priv */ @@ -516,13 +519,12 @@ static void release_uhci(struct uhci_hcd *uhci) { int i; - if (DEBUG_CONFIGURED) { - spin_lock_irq(&uhci->lock); - uhci->is_initialized = 0; - spin_unlock_irq(&uhci->lock); - debugfs_remove(uhci->dentry); - } + spin_lock_irq(&uhci->lock); + uhci->is_initialized = 0; + spin_unlock_irq(&uhci->lock); + + debugfs_remove(uhci->dentry); for (i = 0; i < UHCI_NUM_SKELQH; i++) uhci_free_qh(uhci, uhci->skelqh[i]); @@ -868,14 +870,14 @@ static int __init uhci_hcd_init(void) ignore_oc ? ", overcurrent ignored" : ""); set_bit(USB_UHCI_LOADED, &usb_hcds_loaded); - if (DEBUG_CONFIGURED) { - errbuf = kmalloc(ERRBUF_LEN, GFP_KERNEL); - if (!errbuf) - goto errbuf_failed; - uhci_debugfs_root = debugfs_create_dir("uhci", usb_debug_root); - if (!uhci_debugfs_root) - goto debug_failed; - } +#if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG) + errbuf = kmalloc(ERRBUF_LEN, GFP_KERNEL); + if (!errbuf) + goto errbuf_failed; + uhci_debugfs_root = debugfs_create_dir("uhci", usb_debug_root); + if (!uhci_debugfs_root) + goto debug_failed; +#endif uhci_up_cachep = kmem_cache_create("uhci_urb_priv", sizeof(struct urb_priv), 0, 0, NULL); @@ -906,12 +908,14 @@ static int __init uhci_hcd_init(void) kmem_cache_destroy(uhci_up_cachep); up_failed: +#if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG) debugfs_remove(uhci_debugfs_root); debug_failed: kfree(errbuf); errbuf_failed: +#endif clear_bit(USB_UHCI_LOADED, &usb_hcds_loaded); return retval; @@ -927,7 +931,9 @@ static void __exit uhci_hcd_cleanup(void) #endif kmem_cache_destroy(uhci_up_cachep); debugfs_remove(uhci_debugfs_root); +#if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG) kfree(errbuf); +#endif clear_bit(USB_UHCI_LOADED, &usb_hcds_loaded); } From 9bab24afba2eb663efbd7f681731f8f49d42c4e8 Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Mon, 18 Nov 2013 13:23:10 +0100 Subject: [PATCH 34/81] uhci: compile debugfs conditional on CONFIG_DYNAMIC_DEBUG || DEBUG This makes sure the header files are all there Signed-off-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/uhci-debug.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/usb/host/uhci-debug.c b/drivers/usb/host/uhci-debug.c index 8e239cdd95d5..3989f0ad0539 100644 --- a/drivers/usb/host/uhci-debug.c +++ b/drivers/usb/host/uhci-debug.c @@ -20,7 +20,7 @@ static struct dentry *uhci_debugfs_root; -#ifdef DEBUG +#if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG) /* Handle REALLY large printks so we don't overflow buffers */ static void lprintk(char *buf) @@ -635,7 +635,7 @@ static const struct file_operations uhci_debug_operations = { #endif /* CONFIG_DEBUG_FS */ -#else /* DEBUG */ +#else /* DEBUG || CONFIG_DYNAMIC_DEBUG*/ static inline void lprintk(char *buf) {} From 8f3fd9df2630a162f524b7633397cca95eeea28a Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Mon, 18 Nov 2013 13:23:11 +0100 Subject: [PATCH 35/81] fusbh200: unconditionally compile debugging helpers These helpers are used only during setup of a HCD. A small overhead is no problem. Signed-off-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/fusbh200-hcd.c | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/drivers/usb/host/fusbh200-hcd.c b/drivers/usb/host/fusbh200-hcd.c index b9f9592e2679..17374a349e87 100644 --- a/drivers/usb/host/fusbh200-hcd.c +++ b/drivers/usb/host/fusbh200-hcd.c @@ -114,8 +114,6 @@ MODULE_PARM_DESC(hird, "host initiated resume duration, +1 for each 75us"); static inline void fusbh200_vdbg(struct fusbh200_hcd *fusbh200, ...) {} #endif -#ifdef DEBUG - /* check the values in the HCSPARAMS register * (host controller _Structural_ parameters) * see EHCI spec, Table 2-4 for each value @@ -130,13 +128,6 @@ static void dbg_hcs_params (struct fusbh200_hcd *fusbh200, char *label) HCS_N_PORTS (params) ); } -#else - -static inline void dbg_hcs_params (struct fusbh200_hcd *fusbh200, char *label) {} - -#endif - -#ifdef DEBUG /* check the values in the HCCPARAMS register * (host controller _Capability_ parameters) @@ -153,11 +144,6 @@ static void dbg_hcc_params (struct fusbh200_hcd *fusbh200, char *label) HCC_PGM_FRAMELISTLEN(params) ? "256/512/1024" : "1024", HCC_CANPARK(params) ? " park" : ""); } -#else - -static inline void dbg_hcc_params (struct fusbh200_hcd *fusbh200, char *label) {} - -#endif static void __maybe_unused dbg_qtd (const char *label, struct fusbh200_hcd *fusbh200, struct fusbh200_qtd *qtd) From cb0badad021f546dc5599cd2ec7da203c294586d Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Mon, 18 Nov 2013 13:23:12 +0100 Subject: [PATCH 36/81] fusb200h: don't log on every interrupt That logging is overkill. Simply remove it. Signed-off-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/fusbh200-hcd.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/drivers/usb/host/fusbh200-hcd.c b/drivers/usb/host/fusbh200-hcd.c index 17374a349e87..bbe1e22b2cb4 100644 --- a/drivers/usb/host/fusbh200-hcd.c +++ b/drivers/usb/host/fusbh200-hcd.c @@ -5326,13 +5326,6 @@ static irqreturn_t fusbh200_irq (struct usb_hcd *hcd) cmd = fusbh200_readl(fusbh200, &fusbh200->regs->command); bh = 0; -#ifdef VERBOSE_DEBUG - /* unrequested/ignored: Frame List Rollover */ - dbg_status (fusbh200, "irq", status); -#endif - - /* INT, ERR, and IAA interrupt rates can be throttled */ - /* normal [4.15.1.2] or error [4.15.1.1] completion */ if (likely ((status & (STS_INT|STS_ERR)) != 0)) { if (likely ((status & STS_ERR) == 0)) From 514fbbf6635b06849fa776f71e5e00a4fff0ad36 Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Mon, 18 Nov 2013 13:23:13 +0100 Subject: [PATCH 37/81] fusbh200: always compile debugfs support This is a step in the conversion to only use dynamic debugging. Signed-off-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/fusbh200-hcd.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/drivers/usb/host/fusbh200-hcd.c b/drivers/usb/host/fusbh200-hcd.c index bbe1e22b2cb4..10cae6cd75a3 100644 --- a/drivers/usb/host/fusbh200-hcd.c +++ b/drivers/usb/host/fusbh200-hcd.c @@ -307,13 +307,6 @@ dbg_port_buf (char *buf, unsigned len, const char *label, int port, u32 status) /*-------------------------------------------------------------------------*/ -#ifdef STUB_DEBUG_FILES - -static inline void create_debug_files (struct fusbh200_hcd *bus) { } -static inline void remove_debug_files (struct fusbh200_hcd *bus) { } - -#else - /* troubleshooting help: expose state in debugfs */ static int debug_async_open(struct inode *, struct file *); @@ -889,7 +882,6 @@ static inline void remove_debug_files (struct fusbh200_hcd *fusbh200) debugfs_remove_recursive(fusbh200->debug_dir); } -#endif /* STUB_DEBUG_FILES */ /*-------------------------------------------------------------------------*/ /* From c9472a2912e4ace063961c6f34ce80b105d6c1c6 Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Mon, 18 Nov 2013 13:23:14 +0100 Subject: [PATCH 38/81] fusb200h: always compile in debugfs support This allows removal of much conditional compilation. Signed-off-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/fusbh200-hcd.c | 20 ++++---------------- drivers/usb/host/fusbh200.h | 4 ---- 2 files changed, 4 insertions(+), 20 deletions(-) diff --git a/drivers/usb/host/fusbh200-hcd.c b/drivers/usb/host/fusbh200-hcd.c index 10cae6cd75a3..b561e87b1fae 100644 --- a/drivers/usb/host/fusbh200-hcd.c +++ b/drivers/usb/host/fusbh200-hcd.c @@ -60,10 +60,6 @@ static const char hcd_name [] = "fusbh200_hcd"; #undef VERBOSE_DEBUG #undef FUSBH200_URB_TRACE -#ifdef DEBUG -#define FUSBH200_STATS -#endif - /* magic numbers that can affect system performance */ #define FUSBH200_TUNE_CERR 3 /* 0-3 qtd retries; 0 == don't stop */ #define FUSBH200_TUNE_RL_HS 4 /* nak throttle; see 4.9 */ @@ -729,7 +725,6 @@ static ssize_t fill_registers_buffer(struct debug_buffer *buf) next += temp; } -#ifdef FUSBH200_STATS temp = scnprintf (next, size, "irq normal %ld err %ld iaa %ld (lost %ld)\n", fusbh200->stats.normal, fusbh200->stats.error, fusbh200->stats.iaa, @@ -741,7 +736,6 @@ static ssize_t fill_registers_buffer(struct debug_buffer *buf) fusbh200->stats.complete, fusbh200->stats.unlink); size -= temp; next += temp; -#endif done: spin_unlock_irqrestore (&fusbh200->lock, flags); @@ -1722,10 +1716,8 @@ static int fusbh200_hub_control ( if (test_bit(wIndex, &fusbh200->port_c_suspend)) status |= USB_PORT_STAT_C_SUSPEND << 16; -#ifndef VERBOSE_DEBUG - if (status & ~0xffff) /* only if wPortChange is interesting */ -#endif - dbg_port (fusbh200, "GetStatus", wIndex + 1, temp); + if (status & ~0xffff) /* only if wPortChange is interesting */ + dbg_port(fusbh200, "GetStatus", wIndex + 1, temp); put_unaligned_le32(status, buf); break; case SetHubFeature: @@ -2183,13 +2175,13 @@ static void fusbh200_clear_tt_buffer(struct fusbh200_hcd *fusbh200, struct fusbh * Note: this routine is never called for Isochronous transfers. */ if (urb->dev->tt && !usb_pipeint(urb->pipe) && !qh->clearing_tt) { -#ifdef DEBUG struct usb_device *tt = urb->dev->tt->hub; + dev_dbg(&tt->dev, "clear tt buffer port %d, a%d ep%d t%08x\n", urb->dev->ttport, urb->dev->devnum, usb_pipeendpoint(urb->pipe), token); -#endif /* DEBUG */ + if (urb->dev->tt->hub != fusbh200_to_hcd(fusbh200)->self.root_hub) { if (usb_hub_clear_tt_buffer(urb) == 0) @@ -3482,11 +3474,9 @@ periodic_usecs (struct fusbh200_hcd *fusbh200, unsigned frame, unsigned uframe) break; } } -#ifdef DEBUG if (usecs > fusbh200->uframe_periodic_max) fusbh200_err (fusbh200, "uframe %d sched overrun: %d usecs\n", frame * 8 + uframe, usecs); -#endif return usecs; } @@ -5068,13 +5058,11 @@ static void fusbh200_stop (struct usb_hcd *hcd) spin_unlock_irq (&fusbh200->lock); fusbh200_mem_cleanup (fusbh200); -#ifdef FUSBH200_STATS fusbh200_dbg(fusbh200, "irq normal %ld err %ld iaa %ld (lost %ld)\n", fusbh200->stats.normal, fusbh200->stats.error, fusbh200->stats.iaa, fusbh200->stats.lost_iaa); fusbh200_dbg (fusbh200, "complete %ld unlink %ld\n", fusbh200->stats.complete, fusbh200->stats.unlink); -#endif dbg_status (fusbh200, "fusbh200_stop completed", fusbh200_readl(fusbh200, &fusbh200->regs->status)); diff --git a/drivers/usb/host/fusbh200.h b/drivers/usb/host/fusbh200.h index 5b732050ceba..6b719e066c3f 100644 --- a/drivers/usb/host/fusbh200.h +++ b/drivers/usb/host/fusbh200.h @@ -165,12 +165,8 @@ struct fusbh200_hcd { /* one per controller */ u8 sbrn; /* packed release number */ /* irq statistics */ -#ifdef FUSBH200_STATS struct fusbh200_stats stats; # define COUNT(x) do { (x)++; } while (0) -#else -# define COUNT(x) do {} while (0) -#endif /* debug files */ struct dentry *debug_dir; From 0b5fa3b21fac848de0df45c5f5e7f2086ee8e7f2 Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Mon, 18 Nov 2013 13:23:15 +0100 Subject: [PATCH 39/81] fusbh200: kill fusbh200_vdbg With dynamic debugging this log level is no longer supported. The decision which messages are interesting is done in user space. Signed-off-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/fusbh200-hcd.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/drivers/usb/host/fusbh200-hcd.c b/drivers/usb/host/fusbh200-hcd.c index b561e87b1fae..d5e379b8f73d 100644 --- a/drivers/usb/host/fusbh200-hcd.c +++ b/drivers/usb/host/fusbh200-hcd.c @@ -104,12 +104,6 @@ MODULE_PARM_DESC(hird, "host initiated resume duration, +1 for each 75us"); #define fusbh200_warn(fusbh200, fmt, args...) \ dev_warn (fusbh200_to_hcd(fusbh200)->self.controller , fmt , ## args ) -#ifdef VERBOSE_DEBUG -# define fusbh200_vdbg fusbh200_dbg -#else - static inline void fusbh200_vdbg(struct fusbh200_hcd *fusbh200, ...) {} -#endif - /* check the values in the HCSPARAMS register * (host controller _Structural_ parameters) * see EHCI spec, Table 2-4 for each value @@ -1309,7 +1303,7 @@ static void fusbh200_iaa_watchdog(struct fusbh200_hcd *fusbh200) fusbh200_writel(fusbh200, STS_IAA, &fusbh200->regs->status); } - fusbh200_vdbg(fusbh200, "IAA watchdog: status %x cmd %x\n", + fusbh200_dbg(fusbh200, "IAA watchdog: status %x cmd %x\n", status, cmd); end_unlink_async(fusbh200); } @@ -1759,7 +1753,7 @@ static int fusbh200_hub_control ( * which can be fine if this root hub has a * transaction translator built in. */ - fusbh200_vdbg (fusbh200, "port %d reset\n", wIndex + 1); + fusbh200_dbg(fusbh200, "port %d reset\n", wIndex + 1); temp |= PORT_RESET; temp &= ~PORT_PE; @@ -2242,7 +2236,7 @@ static int qtd_copy_status ( status = -EPROTO; } - fusbh200_vdbg (fusbh200, + fusbh200_dbg(fusbh200, "dev%d ep%d%s qtd token %08x --> status %d\n", usb_pipedevice (urb->pipe), usb_pipeendpoint (urb->pipe), @@ -4529,7 +4523,7 @@ static void itd_link_urb( if (unlikely (list_empty(&stream->td_list))) { fusbh200_to_hcd(fusbh200)->self.bandwidth_allocated += stream->bandwidth; - fusbh200_vdbg (fusbh200, + fusbh200_dbg(fusbh200, "schedule devp %s ep%d%s-iso period %d start %d.%d\n", urb->dev->devpath, stream->bEndpointAddress & 0x0f, (stream->bEndpointAddress & USB_DIR_IN) ? "in" : "out", @@ -4660,7 +4654,7 @@ static bool itd_complete(struct fusbh200_hcd *fusbh200, struct fusbh200_itd *itd if (unlikely(list_is_singular(&stream->td_list))) { fusbh200_to_hcd(fusbh200)->self.bandwidth_allocated -= stream->bandwidth; - fusbh200_vdbg (fusbh200, + fusbh200_dbg(fusbh200, "deschedule devp %s ep%d%s-iso\n", dev->devpath, stream->bEndpointAddress & 0x0f, (stream->bEndpointAddress & USB_DIR_IN) ? "in" : "out"); From 1c20163d30db28552a341d5e0d6c007d4c8dc8be Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Mon, 18 Nov 2013 13:23:16 +0100 Subject: [PATCH 40/81] usb: kill DEBUG compile option In the drivers that no longer need it, it is removed. It is removed from the Makefile. Drivers not fully converted to dynamic debug have it shifted down into the individual drivers. Signed-off-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/Makefile | 2 -- drivers/usb/host/ehci-dbg.c | 8 ++++---- drivers/usb/host/ehci-fsl.c | 2 +- drivers/usb/host/ehci-hcd.c | 6 +++--- drivers/usb/host/ehci-q.c | 4 ++-- drivers/usb/host/ehci.h | 8 ++++---- drivers/usb/host/imx21-dbg.c | 4 ++++ drivers/usb/host/imx21-hcd.c | 4 ++++ drivers/usb/host/imx21-hcd.h | 4 ++++ drivers/usb/host/oxu210hp-hcd.c | 4 ++++ drivers/usb/host/uhci-debug.c | 4 ++-- drivers/usb/host/uhci-hcd.c | 6 +++--- 12 files changed, 35 insertions(+), 21 deletions(-) diff --git a/drivers/usb/host/Makefile b/drivers/usb/host/Makefile index 01e879ef3654..7530468c9a4f 100644 --- a/drivers/usb/host/Makefile +++ b/drivers/usb/host/Makefile @@ -2,8 +2,6 @@ # Makefile for USB Host Controller Drivers # -ccflags-$(CONFIG_USB_DEBUG) := -DDEBUG - # tell define_trace.h where to find the xhci trace header CFLAGS_xhci-trace.o := -I$(src) diff --git a/drivers/usb/host/ehci-dbg.c b/drivers/usb/host/ehci-dbg.c index 4a9c2edbcb2b..9269782a7627 100644 --- a/drivers/usb/host/ehci-dbg.c +++ b/drivers/usb/host/ehci-dbg.c @@ -18,7 +18,7 @@ /* this file is part of ehci-hcd.c */ -#if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG) +#ifdef CONFIG_DYNAMIC_DEBUG /* check the values in the HCSPARAMS register * (host controller _Structural_ parameters) @@ -62,7 +62,7 @@ static inline void dbg_hcs_params (struct ehci_hcd *ehci, char *label) {} #endif -#if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG) +#ifdef CONFIG_DYNAMIC_DEBUG /* check the values in the HCCPARAMS register * (host controller _Capability_ parameters) @@ -101,7 +101,7 @@ static inline void dbg_hcc_params (struct ehci_hcd *ehci, char *label) {} #endif -#if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG) +#ifdef CONFIG_DYNAMIC_DEBUG static void __maybe_unused dbg_qtd (const char *label, struct ehci_hcd *ehci, struct ehci_qtd *qtd) @@ -301,7 +301,7 @@ static inline int __maybe_unused dbg_port_buf (char *buf, unsigned len, const char *label, int port, u32 status) { return 0; } -#endif /* DEBUG || CONFIG_DYNAMIC_DEBUG */ +#endif /* CONFIG_DYNAMIC_DEBUG */ /* functions have the "wrong" filename when they're output... */ #define dbg_status(ehci, label, status) { \ diff --git a/drivers/usb/host/ehci-fsl.c b/drivers/usb/host/ehci-fsl.c index a06d5012201f..87a7426a44f4 100644 --- a/drivers/usb/host/ehci-fsl.c +++ b/drivers/usb/host/ehci-fsl.c @@ -413,7 +413,7 @@ static int ehci_fsl_mpc512x_drv_suspend(struct device *dev) struct fsl_usb2_platform_data *pdata = dev_get_platdata(dev); u32 tmp; -#if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG) +#ifdef CONFIG_DYNAMIC_DEBUG u32 mode = ehci_readl(ehci, hcd->regs + FSL_SOC_USB_USBMODE); mode &= USBMODE_CM_MASK; tmp = ehci_readl(ehci, hcd->regs + 0x140); /* usbcmd */ diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c index b57e997eb716..1e21a3623af9 100644 --- a/drivers/usb/host/ehci-hcd.c +++ b/drivers/usb/host/ehci-hcd.c @@ -1313,7 +1313,7 @@ static int __init ehci_hcd_init(void) sizeof(struct ehci_qh), sizeof(struct ehci_qtd), sizeof(struct ehci_itd), sizeof(struct ehci_sitd)); -#if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG) +#ifdef CONFIG_DYNAMIC_DEBUG ehci_debug_root = debugfs_create_dir("ehci", usb_debug_root); if (!ehci_debug_root) { retval = -ENOENT; @@ -1362,7 +1362,7 @@ static int __init ehci_hcd_init(void) platform_driver_unregister(&PLATFORM_DRIVER); clean0: #endif -#if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG) +#ifdef CONFIG_DYNAMIC_DEBUG debugfs_remove(ehci_debug_root); ehci_debug_root = NULL; err_debug: @@ -1386,7 +1386,7 @@ static void __exit ehci_hcd_cleanup(void) #ifdef PS3_SYSTEM_BUS_DRIVER ps3_ehci_driver_unregister(&PS3_SYSTEM_BUS_DRIVER); #endif -#if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG) +#ifdef CONFIG_DYNAMIC_DEBUG debugfs_remove(ehci_debug_root); #endif clear_bit(USB_EHCI_LOADED, &usb_hcds_loaded); diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c index db05bd8ee9d5..54f5332f814d 100644 --- a/drivers/usb/host/ehci-q.c +++ b/drivers/usb/host/ehci-q.c @@ -168,13 +168,13 @@ static void ehci_clear_tt_buffer(struct ehci_hcd *ehci, struct ehci_qh *qh, * Note: this routine is never called for Isochronous transfers. */ if (urb->dev->tt && !usb_pipeint(urb->pipe) && !qh->clearing_tt) { -#if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG) +#ifdef CONFIG_DYNAMIC_DEBUG struct usb_device *tt = urb->dev->tt->hub; dev_dbg(&tt->dev, "clear tt buffer port %d, a%d ep%d t%08x\n", urb->dev->ttport, urb->dev->devnum, usb_pipeendpoint(urb->pipe), token); -#endif /* DEBUG || CONFIG_DYNAMIC_DEBUG */ +#endif /* CONFIG_DYNAMIC_DEBUG */ if (!ehci_is_TDI(ehci) || urb->dev->tt->hub != ehci_to_hcd(ehci)->self.root_hub) { diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h index e8f41c5e771b..c35a6e2b94e5 100644 --- a/drivers/usb/host/ehci.h +++ b/drivers/usb/host/ehci.h @@ -38,7 +38,7 @@ typedef __u16 __bitwise __hc16; #endif /* statistics can be kept for tuning/monitoring */ -#if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG) +#ifdef CONFIG_DYNAMIC_DEBUG #define EHCI_STATS #endif @@ -248,7 +248,7 @@ struct ehci_hcd { /* one per controller */ #endif /* debug files */ -#if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG) +#ifdef CONFIG_DYNAMIC_DEBUG struct dentry *debug_dir; #endif @@ -832,9 +832,9 @@ static inline u32 hc32_to_cpup (const struct ehci_hcd *ehci, const __hc32 *x) dev_warn(ehci_to_hcd(ehci)->self.controller , fmt , ## args) -#if !defined(DEBUG) && !defined(CONFIG_DYNAMIC_DEBUG) +#ifndef CONFIG_DYNAMIC_DEBUG #define STUB_DEBUG_FILES -#endif /* !DEBUG && !CONFIG_DYNAMIC_DEBUG */ +#endif /*-------------------------------------------------------------------------*/ diff --git a/drivers/usb/host/imx21-dbg.c b/drivers/usb/host/imx21-dbg.c index ec98ecee3517..4f320d050da7 100644 --- a/drivers/usb/host/imx21-dbg.c +++ b/drivers/usb/host/imx21-dbg.c @@ -18,6 +18,10 @@ /* this file is part of imx21-hcd.c */ +#ifdef CONFIG_DYNAMIC_DEBUG +#define DEBUG +#endif + #ifndef DEBUG static inline void create_debug_files(struct imx21 *imx21) { } diff --git a/drivers/usb/host/imx21-hcd.c b/drivers/usb/host/imx21-hcd.c index adb01d950a16..cb6d60853502 100644 --- a/drivers/usb/host/imx21-hcd.c +++ b/drivers/usb/host/imx21-hcd.c @@ -62,6 +62,10 @@ #include "imx21-hcd.h" +#ifdef CONFIG_DYNAMIC_DEBUG +#define DEBUG +#endif + #ifdef DEBUG #define DEBUG_LOG_FRAME(imx21, etd, event) \ (etd)->event##_frame = readl((imx21)->regs + USBH_FRMNUB) diff --git a/drivers/usb/host/imx21-hcd.h b/drivers/usb/host/imx21-hcd.h index c005770a73e9..05122f8a6983 100644 --- a/drivers/usb/host/imx21-hcd.h +++ b/drivers/usb/host/imx21-hcd.h @@ -24,6 +24,10 @@ #ifndef __LINUX_IMX21_HCD_H__ #define __LINUX_IMX21_HCD_H__ +#ifdef CONFIG_DYNAMIC_DEBUG +#define DEBUG +#endif + #include #define NUM_ISO_ETDS 2 diff --git a/drivers/usb/host/oxu210hp-hcd.c b/drivers/usb/host/oxu210hp-hcd.c index 4a6df2d8f902..4a05148ee79b 100644 --- a/drivers/usb/host/oxu210hp-hcd.c +++ b/drivers/usb/host/oxu210hp-hcd.c @@ -60,6 +60,10 @@ #define oxu_info(oxu, fmt, args...) \ dev_info(oxu_to_hcd(oxu)->self.controller , fmt , ## args) +#ifdef CONFIG_DYNAMIC_DEBUG +#define DEBUG +#endif + static inline struct usb_hcd *oxu_to_hcd(struct oxu_hcd *oxu) { return container_of((void *) oxu, struct usb_hcd, hcd_priv); diff --git a/drivers/usb/host/uhci-debug.c b/drivers/usb/host/uhci-debug.c index 3989f0ad0539..1b28a000d5c6 100644 --- a/drivers/usb/host/uhci-debug.c +++ b/drivers/usb/host/uhci-debug.c @@ -20,7 +20,7 @@ static struct dentry *uhci_debugfs_root; -#if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG) +#ifdef CONFIG_DYNAMIC_DEBUG /* Handle REALLY large printks so we don't overflow buffers */ static void lprintk(char *buf) @@ -635,7 +635,7 @@ static const struct file_operations uhci_debug_operations = { #endif /* CONFIG_DEBUG_FS */ -#else /* DEBUG || CONFIG_DYNAMIC_DEBUG*/ +#else /* CONFIG_DYNAMIC_DEBUG*/ static inline void lprintk(char *buf) {} diff --git a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c index d9d3c5a98d83..27f35e8f161b 100644 --- a/drivers/usb/host/uhci-hcd.c +++ b/drivers/usb/host/uhci-hcd.c @@ -69,7 +69,7 @@ MODULE_PARM_DESC(ignore_oc, "ignore hardware overcurrent indications"); * show all queues in /sys/kernel/debug/uhci/[pci_addr] * debug = 3, show all TDs in URBs when dumping */ -#if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG) +#ifdef CONFIG_DYNAMIC_DEBUG static int debug = 1; module_param(debug, int, S_IRUGO | S_IWUSR); @@ -870,7 +870,7 @@ static int __init uhci_hcd_init(void) ignore_oc ? ", overcurrent ignored" : ""); set_bit(USB_UHCI_LOADED, &usb_hcds_loaded); -#if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG) +#ifdef CONFIG_DYNAMIC_DEBUG errbuf = kmalloc(ERRBUF_LEN, GFP_KERNEL); if (!errbuf) goto errbuf_failed; @@ -931,7 +931,7 @@ static void __exit uhci_hcd_cleanup(void) #endif kmem_cache_destroy(uhci_up_cachep); debugfs_remove(uhci_debugfs_root); -#if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG) +#ifdef CONFIG_DYNAMIC_DEBUG kfree(errbuf); #endif clear_bit(USB_UHCI_LOADED, &usb_hcds_loaded); From c793d08ecd944b1a180c6712bb47825e37cc0626 Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Mon, 18 Nov 2013 13:23:17 +0100 Subject: [PATCH 41/81] USB: kill #undef VERBOSE_DEBUG It is useless now. Straight removal. Signed-off-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/ehci-hcd.c | 1 - drivers/usb/host/fotg210-hcd.c | 1 - drivers/usb/host/fusbh200-hcd.c | 1 - drivers/usb/host/ohci-hcd.c | 2 -- 4 files changed, 5 deletions(-) diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c index 1e21a3623af9..471142725ffe 100644 --- a/drivers/usb/host/ehci-hcd.c +++ b/drivers/usb/host/ehci-hcd.c @@ -71,7 +71,6 @@ static const char hcd_name [] = "ehci_hcd"; -#undef VERBOSE_DEBUG #undef EHCI_URB_TRACE /* magic numbers that can affect system performance */ diff --git a/drivers/usb/host/fotg210-hcd.c b/drivers/usb/host/fotg210-hcd.c index 070582bb41ae..97d6939189d6 100644 --- a/drivers/usb/host/fotg210-hcd.c +++ b/drivers/usb/host/fotg210-hcd.c @@ -56,7 +56,6 @@ static const char hcd_name[] = "fotg210_hcd"; -#undef VERBOSE_DEBUG #undef FOTG210_URB_TRACE #define FOTG210_STATS diff --git a/drivers/usb/host/fusbh200-hcd.c b/drivers/usb/host/fusbh200-hcd.c index d5e379b8f73d..9ea85b662a04 100644 --- a/drivers/usb/host/fusbh200-hcd.c +++ b/drivers/usb/host/fusbh200-hcd.c @@ -57,7 +57,6 @@ static const char hcd_name [] = "fusbh200_hcd"; -#undef VERBOSE_DEBUG #undef FUSBH200_URB_TRACE /* magic numbers that can affect system performance */ diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c index de0e3e430ea0..c8e0e7637b7b 100644 --- a/drivers/usb/host/ohci-hcd.c +++ b/drivers/usb/host/ohci-hcd.c @@ -51,8 +51,6 @@ /*-------------------------------------------------------------------------*/ -#undef OHCI_VERBOSE_DEBUG /* not always helpful */ - /* For initializing controller (mask in an HCFS mode too) */ #define OHCI_CONTROL_INIT OHCI_CTRL_CBSR #define OHCI_INTR_INIT \ From 9f9af82ff3e3927d29474049675303284e1266f7 Mon Sep 17 00:00:00 2001 From: Geert Uytterhoeven Date: Tue, 12 Nov 2013 20:07:22 +0100 Subject: [PATCH 42/81] usb: core: Remove superfluous name casts device_driver.name is "const char *" Signed-off-by: Geert Uytterhoeven Signed-off-by: Greg Kroah-Hartman --- drivers/usb/core/driver.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c index 47aade2a5e74..8d989b1d3dc5 100644 --- a/drivers/usb/core/driver.c +++ b/drivers/usb/core/driver.c @@ -839,7 +839,7 @@ int usb_register_device_driver(struct usb_device_driver *new_udriver, return -ENODEV; new_udriver->drvwrap.for_devices = 1; - new_udriver->drvwrap.driver.name = (char *) new_udriver->name; + new_udriver->drvwrap.driver.name = new_udriver->name; new_udriver->drvwrap.driver.bus = &usb_bus_type; new_udriver->drvwrap.driver.probe = usb_probe_device; new_udriver->drvwrap.driver.remove = usb_unbind_device; @@ -900,7 +900,7 @@ int usb_register_driver(struct usb_driver *new_driver, struct module *owner, return -ENODEV; new_driver->drvwrap.for_devices = 0; - new_driver->drvwrap.driver.name = (char *) new_driver->name; + new_driver->drvwrap.driver.name = new_driver->name; new_driver->drvwrap.driver.bus = &usb_bus_type; new_driver->drvwrap.driver.probe = usb_probe_interface; new_driver->drvwrap.driver.remove = usb_unbind_interface; From bde5ae91e8204fb747ad409e79504cc672dc97d6 Mon Sep 17 00:00:00 2001 From: Geert Uytterhoeven Date: Tue, 12 Nov 2013 20:07:24 +0100 Subject: [PATCH 43/81] usb: gadget: Remove superfluous name casts device_driver.name is "const char *" Signed-off-by: Geert Uytterhoeven Cc: Felipe Balbi Signed-off-by: Greg Kroah-Hartman --- drivers/usb/gadget/fsl_qe_udc.c | 2 +- drivers/usb/gadget/fsl_udc_core.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/usb/gadget/fsl_qe_udc.c b/drivers/usb/gadget/fsl_qe_udc.c index 807127d56fa3..6315ee698d4d 100644 --- a/drivers/usb/gadget/fsl_qe_udc.c +++ b/drivers/usb/gadget/fsl_qe_udc.c @@ -2717,7 +2717,7 @@ MODULE_DEVICE_TABLE(of, qe_udc_match); static struct platform_driver udc_driver = { .driver = { - .name = (char *)driver_name, + .name = driver_name, .owner = THIS_MODULE, .of_match_table = qe_udc_match, }, diff --git a/drivers/usb/gadget/fsl_udc_core.c b/drivers/usb/gadget/fsl_udc_core.c index 36ac7cfba91d..b7dea4eec32c 100644 --- a/drivers/usb/gadget/fsl_udc_core.c +++ b/drivers/usb/gadget/fsl_udc_core.c @@ -2666,7 +2666,7 @@ static struct platform_driver udc_driver = { .suspend = fsl_udc_suspend, .resume = fsl_udc_resume, .driver = { - .name = (char *)driver_name, + .name = driver_name, .owner = THIS_MODULE, /* udc suspend/resume called from OTG driver */ .suspend = fsl_udc_otg_suspend, From a458677db6a928535a7186248983d1e192142e83 Mon Sep 17 00:00:00 2001 From: Geert Uytterhoeven Date: Tue, 12 Nov 2013 20:07:25 +0100 Subject: [PATCH 44/81] usb: host: Remove superfluous name casts device_driver.name is "const char *" Signed-off-by: Geert Uytterhoeven Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/imx21-hcd.c | 2 +- drivers/usb/host/isp116x-hcd.c | 2 +- drivers/usb/host/isp1362-hcd.c | 2 +- drivers/usb/host/r8a66597-hcd.c | 2 +- drivers/usb/host/u132-hcd.c | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/usb/host/imx21-hcd.c b/drivers/usb/host/imx21-hcd.c index cb6d60853502..0122624c7ec1 100644 --- a/drivers/usb/host/imx21-hcd.c +++ b/drivers/usb/host/imx21-hcd.c @@ -1930,7 +1930,7 @@ static int imx21_probe(struct platform_device *pdev) static struct platform_driver imx21_hcd_driver = { .driver = { - .name = (char *)hcd_name, + .name = hcd_name, }, .probe = imx21_probe, .remove = imx21_remove, diff --git a/drivers/usb/host/isp116x-hcd.c b/drivers/usb/host/isp116x-hcd.c index c7d0f8f231be..7722ec658b87 100644 --- a/drivers/usb/host/isp116x-hcd.c +++ b/drivers/usb/host/isp116x-hcd.c @@ -1705,7 +1705,7 @@ static struct platform_driver isp116x_driver = { .suspend = isp116x_suspend, .resume = isp116x_resume, .driver = { - .name = (char *)hcd_name, + .name = hcd_name, .owner = THIS_MODULE, }, }; diff --git a/drivers/usb/host/isp1362-hcd.c b/drivers/usb/host/isp1362-hcd.c index 935a2dd367a8..cd94b108b57f 100644 --- a/drivers/usb/host/isp1362-hcd.c +++ b/drivers/usb/host/isp1362-hcd.c @@ -2829,7 +2829,7 @@ static struct platform_driver isp1362_driver = { .suspend = isp1362_suspend, .resume = isp1362_resume, .driver = { - .name = (char *)hcd_name, + .name = hcd_name, .owner = THIS_MODULE, }, }; diff --git a/drivers/usb/host/r8a66597-hcd.c b/drivers/usb/host/r8a66597-hcd.c index 2ad004ae747c..3bddfcfafb79 100644 --- a/drivers/usb/host/r8a66597-hcd.c +++ b/drivers/usb/host/r8a66597-hcd.c @@ -2534,7 +2534,7 @@ static struct platform_driver r8a66597_driver = { .probe = r8a66597_probe, .remove = r8a66597_remove, .driver = { - .name = (char *) hcd_name, + .name = hcd_name, .owner = THIS_MODULE, .pm = R8A66597_DEV_PM_OPS, }, diff --git a/drivers/usb/host/u132-hcd.c b/drivers/usb/host/u132-hcd.c index e402beb5a069..46236e9fc87f 100644 --- a/drivers/usb/host/u132-hcd.c +++ b/drivers/usb/host/u132-hcd.c @@ -3217,7 +3217,7 @@ static struct platform_driver u132_platform_driver = { .suspend = u132_suspend, .resume = u132_resume, .driver = { - .name = (char *)hcd_name, + .name = hcd_name, .owner = THIS_MODULE, }, }; From 2fd3f65132958e9ec95563cc981cc1ffca2b81a0 Mon Sep 17 00:00:00 2001 From: Jingoo Han Date: Tue, 3 Dec 2013 08:27:58 +0900 Subject: [PATCH 45/81] USB: remove DEFINE_PCI_DEVICE_TABLE macro Don't use DEFINE_PCI_DEVICE_TABLE macro, because this macro is not preferred. Signed-off-by: Jingoo Han Signed-off-by: Greg Kroah-Hartman --- drivers/usb/dwc3/dwc3-pci.c | 2 +- drivers/usb/gadget/amd5536udc.c | 2 +- drivers/usb/gadget/pch_udc.c | 2 +- drivers/usb/host/uhci-pci.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/usb/dwc3/dwc3-pci.c b/drivers/usb/dwc3/dwc3-pci.c index 31443aeedcdb..665686e7c8cd 100644 --- a/drivers/usb/dwc3/dwc3-pci.c +++ b/drivers/usb/dwc3/dwc3-pci.c @@ -182,7 +182,7 @@ static void dwc3_pci_remove(struct pci_dev *pci) pci_disable_device(pci); } -static DEFINE_PCI_DEVICE_TABLE(dwc3_pci_id_table) = { +static const struct pci_device_id dwc3_pci_id_table[] = { { PCI_DEVICE(PCI_VENDOR_ID_SYNOPSYS, PCI_DEVICE_ID_SYNOPSYS_HAPSUSB3), diff --git a/drivers/usb/gadget/amd5536udc.c b/drivers/usb/gadget/amd5536udc.c index 54a1e2954cea..f0ff4a675e9d 100644 --- a/drivers/usb/gadget/amd5536udc.c +++ b/drivers/usb/gadget/amd5536udc.c @@ -3338,7 +3338,7 @@ static int udc_remote_wakeup(struct udc *dev) } /* PCI device parameters */ -static DEFINE_PCI_DEVICE_TABLE(pci_id) = { +static const struct pci_device_id pci_id[] = { { PCI_DEVICE(PCI_VENDOR_ID_AMD, 0x2096), .class = (PCI_CLASS_SERIAL_USB << 8) | 0xfe, diff --git a/drivers/usb/gadget/pch_udc.c b/drivers/usb/gadget/pch_udc.c index 32d5e923750b..78a3d9289816 100644 --- a/drivers/usb/gadget/pch_udc.c +++ b/drivers/usb/gadget/pch_udc.c @@ -3210,7 +3210,7 @@ static int pch_udc_probe(struct pci_dev *pdev, return retval; } -static DEFINE_PCI_DEVICE_TABLE(pch_udc_pcidev_id) = { +static const struct pci_device_id pch_udc_pcidev_id[] = { { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_EG20T_UDC), .class = (PCI_CLASS_SERIAL_USB << 8) | 0xfe, diff --git a/drivers/usb/host/uhci-pci.c b/drivers/usb/host/uhci-pci.c index 4cd79888804b..940304c33224 100644 --- a/drivers/usb/host/uhci-pci.c +++ b/drivers/usb/host/uhci-pci.c @@ -279,7 +279,7 @@ static const struct hc_driver uhci_driver = { .hub_control = uhci_hub_control, }; -static DEFINE_PCI_DEVICE_TABLE(uhci_pci_ids) = { { +static const struct pci_device_id uhci_pci_ids[] = { { /* handle any USB UHCI controller */ PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_UHCI, ~0), .driver_data = (unsigned long) &uhci_driver, From 2e30d14f12421f39329faefd5ae92b02cc9ff255 Mon Sep 17 00:00:00 2001 From: Fengguang Wu Date: Wed, 4 Dec 2013 20:36:31 -0800 Subject: [PATCH 46/81] USB: fix coccinelle warnings drivers/usb/host/ehci-mv.c:181:26-27: WARNING comparing pointer to 0, suggest !E /c/kernel-tests/src/cocci/drivers/usb/host/ehci-mv.c:181:26-27: WARNING comparing pointer to 0 Compare pointer-typed values to NULL rather than 0 Semantic patch information: This makes an effort to choose between !x and x == NULL. !x is used if it has previously been used with the function used to initialize x. This relies on type information. More type information can be obtained using the option -all_includes and the option -I to specify an include path. Generated by: coccinelle/null/badzero.cocci CC: Jingoo Han CC: Greg Kroah-Hartman Signed-off-by: Fengguang Wu --- drivers/usb/host/ehci-mv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/host/ehci-mv.c b/drivers/usb/host/ehci-mv.c index 417c10da9450..6e8afcaa8ff0 100644 --- a/drivers/usb/host/ehci-mv.c +++ b/drivers/usb/host/ehci-mv.c @@ -178,7 +178,7 @@ static int mv_ehci_probe(struct platform_device *pdev) ehci_mv->phy_regs = devm_ioremap(&pdev->dev, r->start, resource_size(r)); - if (ehci_mv->phy_regs == 0) { + if (!ehci_mv->phy_regs) { dev_err(&pdev->dev, "failed to map phy I/O memory\n"); retval = -EFAULT; goto err_put_hcd; From c952a8ba7136505cd1ca01735cc748ddc08c7d2f Mon Sep 17 00:00:00 2001 From: Huang Rui Date: Mon, 4 Nov 2013 21:11:53 +0800 Subject: [PATCH 47/81] usb: usbtest: add a test case to support bos for queue control In Test 10 of usbtest module, it queues multiple control messages and thereby tests control message queuing, protocol stalls, short reads, and fault handling. And this patch add a test case to support queue BOS control request for USB 3.0 SPEC. Signed-off-by: Huang Rui Signed-off-by: Greg Kroah-Hartman --- drivers/usb/misc/usbtest.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c index b4152820d655..f3c31363c40a 100644 --- a/drivers/usb/misc/usbtest.c +++ b/drivers/usb/misc/usbtest.c @@ -944,7 +944,7 @@ struct ctrl_ctx { int last; }; -#define NUM_SUBCASES 15 /* how many test subcases here? */ +#define NUM_SUBCASES 16 /* how many test subcases here? */ struct subcase { struct usb_ctrlrequest setup; @@ -1218,6 +1218,15 @@ test_ctrl_queue(struct usbtest_dev *dev, struct usbtest_param *param) } expected = -EREMOTEIO; break; + case 15: + req.wValue = cpu_to_le16(USB_DT_BOS << 8); + if (udev->bos) + len = le16_to_cpu(udev->bos->desc->wTotalLength); + else + len = sizeof(struct usb_bos_descriptor); + if (udev->speed != USB_SPEED_SUPER) + expected = -EPIPE; + break; default: ERROR(dev, "bogus number of ctrl queue testcases!\n"); context.status = -EINVAL; From 875bc23ac041519b24bd2c1faf71822e4b3e4322 Mon Sep 17 00:00:00 2001 From: Huang Rui Date: Wed, 13 Nov 2013 22:35:14 +0800 Subject: [PATCH 48/81] usb: usbtest: fix the bit mask of usb 2.0 extension descriptor USB 2.1 Link PM adds to use bits[1:15] according to USB 2.0 ECN Errata for Link Power Management spec. Bit Encoding 0 Reserved 1 LPM 2 BESL & Altemate HIRD definitions supported 3 Recommended Baseline BESL valid 4 Recommended Deep BESL valid 11:8 Recommended Baseline BESL value 15:12 Recommended Deep BESL value 31:16 Reserved So fix the bit mask from 0x1e to 0xfffe. Reported-by: Sarah Sharp Signed-off-by: Huang Rui Acked-by: Felipe Balbi Acked-by: Sarah Sharp Signed-off-by: Greg Kroah-Hartman --- drivers/usb/misc/usbtest.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c index f3c31363c40a..0b5c3b157530 100644 --- a/drivers/usb/misc/usbtest.c +++ b/drivers/usb/misc/usbtest.c @@ -619,8 +619,8 @@ static int is_good_ext(struct usbtest_dev *tdev, u8 *buf) } attr = le32_to_cpu(ext->bmAttributes); - /* bits[1:4] is used and others are reserved */ - if (attr & ~0x1e) { /* reserved == 0 */ + /* bits[1:15] is used and others are reserved */ + if (attr & ~0xfffe) { /* reserved == 0 */ ERROR(tdev, "reserved bits set\n"); return 0; } From f625099f1a504742aef4c6ab20ba0ca981847e3c Mon Sep 17 00:00:00 2001 From: Huang Rui Date: Wed, 13 Nov 2013 22:35:13 +0800 Subject: [PATCH 49/81] usb: usbtest: update bos test coverage to usb 2.1 device The commit "usb: usbtest: support bos descriptor test for usb 3.0" introduced a test for bos descriptor. And USB 2.1 device also can be checked. So this patch extends the test coverage to support USB 2.1 device. Reported-by: Sarah Sharp Signed-off-by: Huang Rui Acked-by: Felipe Balbi Signed-off-by: Greg Kroah-Hartman --- drivers/usb/misc/usbtest.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c index 0b5c3b157530..bff058ea222e 100644 --- a/drivers/usb/misc/usbtest.c +++ b/drivers/usb/misc/usbtest.c @@ -763,7 +763,7 @@ static int ch9_postconfig(struct usbtest_dev *dev) * there's always [9.4.3] a bos device descriptor [9.6.2] in USB * 3.0 spec */ - if (le16_to_cpu(udev->descriptor.bcdUSB) >= 0x0300) { + if (le16_to_cpu(udev->descriptor.bcdUSB) >= 0x0210) { struct usb_bos_descriptor *bos = NULL; struct usb_dev_cap_header *header = NULL; unsigned total, num, length; From e1bffbf622ebceff411fef4970f0fa6326b45830 Mon Sep 17 00:00:00 2001 From: Majunath Goudar Date: Wed, 13 Nov 2013 17:40:16 +0530 Subject: [PATCH 50/81] USB: OHCI: Properly handle OHCI controller suspend Suspend scenario in case of OHCI was not properly handled in ochi_suspend()routine. Alan Stern suggested, properly handle OHCI suspend scenario. This does generic proper handling of suspend scenario to all OHCI SOC. Signed-off-by: Manjunath Goudar Acked-by: Alan Stern Cc: linux-usb@vger.kernel.org Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/ohci-hcd.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c index c8e0e7637b7b..3586460fb2a1 100644 --- a/drivers/usb/host/ohci-hcd.c +++ b/drivers/usb/host/ohci-hcd.c @@ -1026,6 +1026,7 @@ int ohci_suspend(struct usb_hcd *hcd, bool do_wakeup) { struct ohci_hcd *ohci = hcd_to_ohci (hcd); unsigned long flags; + int rc = 0; /* Disable irq emission and mark HW unaccessible. Use * the spinlock to properly synchronize with possible pending @@ -1038,7 +1039,13 @@ int ohci_suspend(struct usb_hcd *hcd, bool do_wakeup) clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags); spin_unlock_irqrestore (&ohci->lock, flags); - return 0; + synchronize_irq(hcd->irq); + + if (do_wakeup && HCD_WAKEUP_PENDING(hcd)) { + ohci_resume(hcd, false); + rc = -EBUSY; + } + return rc; } EXPORT_SYMBOL_GPL(ohci_suspend); From a9d3840ed3441d5996647b61b6e2ee630242989f Mon Sep 17 00:00:00 2001 From: Majunath Goudar Date: Wed, 13 Nov 2013 17:40:17 +0530 Subject: [PATCH 51/81] USB: OHCI: Properly handle ohci-at91 suspend Suspend scenario in case of ohci-at91 glue was not properly handled as it was not suspending generic part of ohci controller. Alan Stern suggested, properly handle ohci-at91 suspend scenario. Calling explicitly the ohci_suspend() routine in ohci_hcd_at91_drv_suspend() will ensure proper handling of suspend scenario. This task is sugested by Alan Stern. Signed-off-by: Manjunath Goudar Acked-by: Alan Stern Cc: Arnd Bergmann Cc: linux-usb@vger.kernel.org Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/ohci-at91.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c index 418444ebb1b8..cc9462f19fa5 100644 --- a/drivers/usb/host/ohci-at91.c +++ b/drivers/usb/host/ohci-at91.c @@ -635,10 +635,17 @@ ohci_hcd_at91_drv_suspend(struct platform_device *pdev, pm_message_t mesg) { struct usb_hcd *hcd = platform_get_drvdata(pdev); struct ohci_hcd *ohci = hcd_to_ohci(hcd); + bool do_wakeup = device_may_wakeup(&pdev->dev); + int ret; - if (device_may_wakeup(&pdev->dev)) + if (do_wakeup) enable_irq_wake(hcd->irq); + ret = ohci_suspend(hcd, do_wakeup); + if (ret) { + disable_irq_wake(hcd->irq); + return ret; + } /* * The integrated transceivers seem unable to notice disconnect, * reconnect, or wakeup without the 48 MHz clock active. so for @@ -657,7 +664,7 @@ ohci_hcd_at91_drv_suspend(struct platform_device *pdev, pm_message_t mesg) at91_stop_clock(); } - return 0; + return ret; } static int ohci_hcd_at91_drv_resume(struct platform_device *pdev) From 0ded36d91821620e4e8f50fb9e47440988e06366 Mon Sep 17 00:00:00 2001 From: Majunath Goudar Date: Wed, 13 Nov 2013 17:40:18 +0530 Subject: [PATCH 52/81] USB: OHCI: Properly handle ohci-s3c2410 suspend Suspend scenario in case of ohci-s3c2410 glue was not properly handled as it was not suspending generic part of ohci controller. Alan Stern suggested, properly handle ohci-s3c2410 suspend scenario. Calling explicitly the ohci_suspend() routine in ohci_hcd_s3c2410_drv_suspend() will ensure proper handling of suspend scenario. Signed-off-by: Manjunath Goudar Acked-by: Alan Stern Cc: Ben Dooks Cc: Kukjin Kim Cc: linux-arm-kernel@lists.infradead.org Cc: linux-samsung-soc@vger.kernel.org Cc: linux-kernel@vger.kernel.org Cc: linux-usb@vger.kernel.org Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/ohci-s3c2410.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/drivers/usb/host/ohci-s3c2410.c b/drivers/usb/host/ohci-s3c2410.c index f90101b9cdb9..83cd1dcd5145 100644 --- a/drivers/usb/host/ohci-s3c2410.c +++ b/drivers/usb/host/ohci-s3c2410.c @@ -426,28 +426,15 @@ static int ohci_hcd_s3c2410_drv_remove(struct platform_device *pdev) static int ohci_hcd_s3c2410_drv_suspend(struct device *dev) { struct usb_hcd *hcd = dev_get_drvdata(dev); - struct ohci_hcd *ohci = hcd_to_ohci(hcd); struct platform_device *pdev = to_platform_device(dev); - unsigned long flags; + bool do_wakeup = device_may_wakeup(dev); int rc = 0; - /* - * Root hub was already suspended. Disable irq emission and - * mark HW unaccessible, bail out if RH has been resumed. Use - * the spinlock to properly synchronize with possible pending - * RH suspend or resume activity. - */ - spin_lock_irqsave(&ohci->lock, flags); - if (ohci->rh_state != OHCI_RH_SUSPENDED) { - rc = -EINVAL; - goto bail; - } - - clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags); + rc = ohci_suspend(hcd, do_wakeup); + if (rc) + return rc; s3c2410_stop_hc(pdev); -bail: - spin_unlock_irqrestore(&ohci->lock, flags); return rc; } From 933bb1f0442ea1c15e7d9d23894d8dd4937bdf95 Mon Sep 17 00:00:00 2001 From: Majunath Goudar Date: Wed, 13 Nov 2013 17:40:19 +0530 Subject: [PATCH 53/81] USB: OHCI: Properly handle ohci-da8xx suspend Suspend scenario in case of ohci-da8xx glue was not properly handled as it was not suspending generic part of ohci controller. Alan Stern suggested, properly handle ohci-da8xx suspend scenario. Calling explicitly the ohci_suspend() routine in ohci_da8xx_suspend() will ensure proper handling of suspend scenario. Signed-off-by: Manjunath Goudar Acked-by: Alan Stern Cc: Arnd Bergmann Cc: linux-usb@vger.kernel.or Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/ohci-da8xx.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/drivers/usb/host/ohci-da8xx.c b/drivers/usb/host/ohci-da8xx.c index 9be59f11e051..71dbd85e9a8d 100644 --- a/drivers/usb/host/ohci-da8xx.c +++ b/drivers/usb/host/ohci-da8xx.c @@ -406,19 +406,27 @@ static int ohci_hcd_da8xx_drv_remove(struct platform_device *dev) } #ifdef CONFIG_PM -static int ohci_da8xx_suspend(struct platform_device *dev, pm_message_t message) +static int ohci_da8xx_suspend(struct platform_device *pdev, + pm_message_t message) { - struct usb_hcd *hcd = platform_get_drvdata(dev); + struct usb_hcd *hcd = platform_get_drvdata(pdev); struct ohci_hcd *ohci = hcd_to_ohci(hcd); + bool do_wakeup = device_may_wakeup(&pdev->dev); + int ret; + if (time_before(jiffies, ohci->next_statechange)) msleep(5); ohci->next_statechange = jiffies; + ret = ohci_suspend(hcd, do_wakeup); + if (ret) + return ret; + ohci_da8xx_clock(0); hcd->state = HC_STATE_SUSPENDED; - dev->dev.power.power_state = PMSG_SUSPEND; - return 0; + + return ret; } static int ohci_da8xx_resume(struct platform_device *dev) From 14982e31da83a818d03748a89957e47c139d8f07 Mon Sep 17 00:00:00 2001 From: Majunath Goudar Date: Wed, 13 Nov 2013 17:40:20 +0530 Subject: [PATCH 54/81] USB: OHCI: Properly handle ohci-exynos suspend Suspend scenario in case of ohci-exynos glue was not properly handled as it was not suspending generic part of ohci controller. Alan Stern suggested, properly handle ohci-exynos suspend scenario. Calling explicitly the ohci_suspend() routine in exynos_ohci_suspend() will ensure proper handling of suspend scenario. Signed-off-by: Manjunath Goudar Acked-by: Alan Stern Cc: Arnd Bergmann Cc: Kukjin Kim Cc: linux-arm-kernel@lists.infradead.org Cc: linux-samsung-soc@vger.kernel.org Cc: linux-kernel@vger.kernel.org Cc: linux-usb@vger.kernel.org Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/ohci-exynos.c | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/drivers/usb/host/ohci-exynos.c b/drivers/usb/host/ohci-exynos.c index 91ec9b2cd378..9897d70e4c15 100644 --- a/drivers/usb/host/ohci-exynos.c +++ b/drivers/usb/host/ohci-exynos.c @@ -191,23 +191,14 @@ static int exynos_ohci_suspend(struct device *dev) struct exynos_ohci_hcd *exynos_ohci = to_exynos_ohci(hcd); struct ohci_hcd *ohci = hcd_to_ohci(hcd); struct platform_device *pdev = to_platform_device(dev); + bool do_wakeup = device_may_wakeup(dev); unsigned long flags; - int rc = 0; + int rc = ohci_suspend(hcd, do_wakeup); + + if (rc) + return rc; - /* - * Root hub was already suspended. Disable irq emission and - * mark HW unaccessible, bail out if RH has been resumed. Use - * the spinlock to properly synchronize with possible pending - * RH suspend or resume activity. - */ spin_lock_irqsave(&ohci->lock, flags); - if (ohci->rh_state != OHCI_RH_SUSPENDED && - ohci->rh_state != OHCI_RH_HALTED) { - rc = -EINVAL; - goto fail; - } - - clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags); if (exynos_ohci->otg) exynos_ohci->otg->set_host(exynos_ohci->otg, &hcd->self); @@ -216,10 +207,9 @@ static int exynos_ohci_suspend(struct device *dev) clk_disable_unprepare(exynos_ohci->clk); -fail: spin_unlock_irqrestore(&ohci->lock, flags); - return rc; + return 0; } static int exynos_ohci_resume(struct device *dev) From d2e3d2b348bce1bb96cd42db51789f368c3eb974 Mon Sep 17 00:00:00 2001 From: Majunath Goudar Date: Wed, 13 Nov 2013 17:40:21 +0530 Subject: [PATCH 55/81] USB: OHCI: Properly handle ohci-spear suspend Suspend scenario in case of ohci-spear glue was not properly handled as it was not suspending generic part of ohci controller. Alan Stern suggested, properly handle ohci-spear suspend scenario. Calling explicitly the ohci_suspend() routine in spear_ohci_hcd_drv_suspend() will ensure proper handling of suspend scenario. Signed-off-by: Manjunath Goudar Acked-by: Alan Stern Cc: Arnd Bergmann Cc: linux-usb@vger.kernel.org Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/ohci-spear.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/usb/host/ohci-spear.c b/drivers/usb/host/ohci-spear.c index 6b02107d281d..e418c192e23a 100644 --- a/drivers/usb/host/ohci-spear.c +++ b/drivers/usb/host/ohci-spear.c @@ -129,20 +129,26 @@ static int spear_ohci_hcd_drv_remove(struct platform_device *pdev) } #if defined(CONFIG_PM) -static int spear_ohci_hcd_drv_suspend(struct platform_device *dev, +static int spear_ohci_hcd_drv_suspend(struct platform_device *pdev, pm_message_t message) { - struct usb_hcd *hcd = platform_get_drvdata(dev); + struct usb_hcd *hcd = platform_get_drvdata(pdev); struct ohci_hcd *ohci = hcd_to_ohci(hcd); struct spear_ohci *sohci_p = to_spear_ohci(hcd); + bool do_wakeup = device_may_wakeup(&pdev->dev); + int ret; if (time_before(jiffies, ohci->next_statechange)) msleep(5); ohci->next_statechange = jiffies; + ret = ohci_suspend(hcd, do_wakeup); + if (ret) + return ret; + clk_disable_unprepare(sohci_p->clk); - return 0; + return ret; } static int spear_ohci_hcd_drv_resume(struct platform_device *dev) From b374487ebe8a91d03c07fe361af375e09285c3b0 Mon Sep 17 00:00:00 2001 From: Thomas Pugliese Date: Mon, 25 Nov 2013 16:17:16 -0600 Subject: [PATCH 56/81] usb: wusbcore: add calls to usb_hcd_link_urb_to_ep, usb_hcd_unlink_urb_from_ep, and Add calls to usb_hcd_link_urb_to_ep, usb_hcd_unlink_urb_from_ep, and usb_hcd_check_unlink_urb in the appropriate locations. Signed-off-by: Thomas Pugliese Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/hwa-hc.c | 2 +- drivers/usb/wusbcore/wa-hc.h | 2 +- drivers/usb/wusbcore/wa-xfer.c | 26 ++++++++++++++++++++++++-- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/drivers/usb/host/hwa-hc.c b/drivers/usb/host/hwa-hc.c index ada0a52797b1..a4ec9e6c0f86 100644 --- a/drivers/usb/host/hwa-hc.c +++ b/drivers/usb/host/hwa-hc.c @@ -224,7 +224,7 @@ static int hwahc_op_urb_dequeue(struct usb_hcd *usb_hcd, struct urb *urb, struct wusbhc *wusbhc = usb_hcd_to_wusbhc(usb_hcd); struct hwahc *hwahc = container_of(wusbhc, struct hwahc, wusbhc); - return wa_urb_dequeue(&hwahc->wa, urb); + return wa_urb_dequeue(&hwahc->wa, urb, status); } /* diff --git a/drivers/usb/wusbcore/wa-hc.h b/drivers/usb/wusbcore/wa-hc.h index e614f02f0cf2..5b6ae3a4a755 100644 --- a/drivers/usb/wusbcore/wa-hc.h +++ b/drivers/usb/wusbcore/wa-hc.h @@ -332,7 +332,7 @@ static inline int rpipe_avail_inc(struct wa_rpipe *rpipe) /* Transferring data */ extern int wa_urb_enqueue(struct wahc *, struct usb_host_endpoint *, struct urb *, gfp_t); -extern int wa_urb_dequeue(struct wahc *, struct urb *); +extern int wa_urb_dequeue(struct wahc *, struct urb *, int); extern void wa_handle_notif_xfer(struct wahc *, struct wa_notif_hdr *); diff --git a/drivers/usb/wusbcore/wa-xfer.c b/drivers/usb/wusbcore/wa-xfer.c index ed5abe87b049..5957e486591a 100644 --- a/drivers/usb/wusbcore/wa-xfer.c +++ b/drivers/usb/wusbcore/wa-xfer.c @@ -282,6 +282,7 @@ static void wa_xfer_giveback(struct wa_xfer *xfer) spin_lock_irqsave(&xfer->wa->xfer_list_lock, flags); list_del_init(&xfer->list_node); + usb_hcd_unlink_urb_from_ep(&(xfer->wa->wusb->usb_hcd), xfer->urb); spin_unlock_irqrestore(&xfer->wa->xfer_list_lock, flags); /* FIXME: segmentation broken -- kills DWA */ wusbhc_giveback_urb(xfer->wa->wusb, xfer->urb, xfer->result); @@ -1730,6 +1731,12 @@ int wa_urb_enqueue(struct wahc *wa, struct usb_host_endpoint *ep, dump_stack(); } + spin_lock_irqsave(&wa->xfer_list_lock, my_flags); + result = usb_hcd_link_urb_to_ep(&(wa->wusb->usb_hcd), urb); + spin_unlock_irqrestore(&wa->xfer_list_lock, my_flags); + if (result < 0) + goto error_link_urb; + result = -ENOMEM; xfer = kzalloc(sizeof(*xfer), gfp); if (xfer == NULL) @@ -1769,6 +1776,9 @@ int wa_urb_enqueue(struct wahc *wa, struct usb_host_endpoint *ep, __func__, result); wa_put(xfer->wa); wa_xfer_put(xfer); + spin_lock_irqsave(&wa->xfer_list_lock, my_flags); + usb_hcd_unlink_urb_from_ep(&(wa->wusb->usb_hcd), urb); + spin_unlock_irqrestore(&wa->xfer_list_lock, my_flags); return result; } } @@ -1777,6 +1787,10 @@ int wa_urb_enqueue(struct wahc *wa, struct usb_host_endpoint *ep, error_dequeued: kfree(xfer); error_kmalloc: + spin_lock_irqsave(&wa->xfer_list_lock, my_flags); + usb_hcd_unlink_urb_from_ep(&(wa->wusb->usb_hcd), urb); + spin_unlock_irqrestore(&wa->xfer_list_lock, my_flags); +error_link_urb: return result; } EXPORT_SYMBOL_GPL(wa_urb_enqueue); @@ -1799,7 +1813,7 @@ EXPORT_SYMBOL_GPL(wa_urb_enqueue); * asynch request] and then make sure we cancel each segment. * */ -int wa_urb_dequeue(struct wahc *wa, struct urb *urb) +int wa_urb_dequeue(struct wahc *wa, struct urb *urb, int status) { unsigned long flags, flags2; struct wa_xfer *xfer; @@ -1807,6 +1821,14 @@ int wa_urb_dequeue(struct wahc *wa, struct urb *urb) struct wa_rpipe *rpipe; unsigned cnt, done = 0, xfer_abort_pending; unsigned rpipe_ready = 0; + int result; + + /* check if it is safe to unlink. */ + spin_lock_irqsave(&wa->xfer_list_lock, flags); + result = usb_hcd_check_unlink_urb(&(wa->wusb->usb_hcd), urb, status); + spin_unlock_irqrestore(&wa->xfer_list_lock, flags); + if (result) + return result; xfer = urb->hcpriv; if (xfer == NULL) { @@ -2172,7 +2194,7 @@ static void wa_xfer_result_chew(struct wahc *wa, struct wa_xfer *xfer, error_bad_seg: spin_unlock_irqrestore(&xfer->lock, flags); - wa_urb_dequeue(wa, xfer->urb); + wa_urb_dequeue(wa, xfer->urb, -ENOENT); if (printk_ratelimit()) dev_err(dev, "xfer %p#%u: bad segment\n", xfer, seg_idx); if (edc_inc(&wa->dti_edc, EDC_MAX_ERRORS, EDC_ERROR_TIMEFRAME)) { From bbfc34201fffd8a41c2ecbad2b8fb3bf00d7ee74 Mon Sep 17 00:00:00 2001 From: Thomas Pugliese Date: Mon, 25 Nov 2013 16:17:17 -0600 Subject: [PATCH 57/81] usb: wusbcore: add more info to debug prints in urb_unlink path Add more info to debug prints in urb_unlink path Signed-off-by: Thomas Pugliese Signed-off-by: Greg Kroah-Hartman --- drivers/usb/wusbcore/wa-xfer.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/drivers/usb/wusbcore/wa-xfer.c b/drivers/usb/wusbcore/wa-xfer.c index 5957e486591a..3220c62de317 100644 --- a/drivers/usb/wusbcore/wa-xfer.c +++ b/drivers/usb/wusbcore/wa-xfer.c @@ -373,10 +373,10 @@ static unsigned __wa_xfer_is_done(struct wa_xfer *xfer) seg->result); goto out; case WA_SEG_ABORTED: - dev_dbg(dev, "xfer %p ID %08X#%u ABORTED: result %d\n", - xfer, wa_xfer_id(xfer), seg->index, - urb->status); - xfer->result = urb->status; + xfer->result = seg->result; + dev_dbg(dev, "xfer %p ID %08X#%u: ABORTED result %zu(0x%08zX)\n", + xfer, wa_xfer_id(xfer), seg->index, seg->result, + seg->result); goto out; default: dev_warn(dev, "xfer %p ID %08X#%u: is_done bad state %d\n", @@ -1568,7 +1568,8 @@ static int wa_urb_enqueue_b(struct wa_xfer *xfer) wusb_dev = __wusb_dev_get_by_usb_dev(wusbhc, urb->dev); if (wusb_dev == NULL) { mutex_unlock(&wusbhc->mutex); - pr_err("%s: error wusb dev gone\n", __func__); + dev_err(&(urb->dev->dev), "%s: error wusb dev gone\n", + __func__); goto error_dev_gone; } mutex_unlock(&wusbhc->mutex); @@ -1577,18 +1578,18 @@ static int wa_urb_enqueue_b(struct wa_xfer *xfer) xfer->wusb_dev = wusb_dev; result = urb->status; if (urb->status != -EINPROGRESS) { - pr_err("%s: error_dequeued\n", __func__); + dev_err(&(urb->dev->dev), "%s: error_dequeued\n", __func__); goto error_dequeued; } result = __wa_xfer_setup(xfer, urb); if (result < 0) { - pr_err("%s: error_xfer_setup\n", __func__); + dev_err(&(urb->dev->dev), "%s: error_xfer_setup\n", __func__); goto error_xfer_setup; } result = __wa_xfer_submit(xfer); if (result < 0) { - pr_err("%s: error_xfer_submit\n", __func__); + dev_err(&(urb->dev->dev), "%s: error_xfer_submit\n", __func__); goto error_xfer_submit; } spin_unlock_irqrestore(&xfer->lock, flags); @@ -1844,8 +1845,8 @@ int wa_urb_dequeue(struct wahc *wa, struct urb *urb, int status) pr_debug("%s: DEQUEUE xfer id 0x%08X\n", __func__, wa_xfer_id(xfer)); rpipe = xfer->ep->hcpriv; if (rpipe == NULL) { - pr_debug("%s: xfer id 0x%08X has no RPIPE. %s", - __func__, wa_xfer_id(xfer), + pr_debug("%s: xfer %p id 0x%08X has no RPIPE. %s", + __func__, xfer, wa_xfer_id(xfer), "Probably already aborted.\n" ); goto out_unlock; } From e05a1fd9468bc99bf67bd81601d46d84d93c21c8 Mon Sep 17 00:00:00 2001 From: Thomas Pugliese Date: Mon, 25 Nov 2013 16:17:18 -0600 Subject: [PATCH 58/81] usb: wusbcore: return -ENOENT for unlinked URBs. Return -ENOENT for unlinked URBs. Signed-off-by: Thomas Pugliese Signed-off-by: Greg Kroah-Hartman --- drivers/usb/wusbcore/wa-xfer.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/usb/wusbcore/wa-xfer.c b/drivers/usb/wusbcore/wa-xfer.c index 3220c62de317..a88b8c68ce78 100644 --- a/drivers/usb/wusbcore/wa-xfer.c +++ b/drivers/usb/wusbcore/wa-xfer.c @@ -1848,6 +1848,7 @@ int wa_urb_dequeue(struct wahc *wa, struct urb *urb, int status) pr_debug("%s: xfer %p id 0x%08X has no RPIPE. %s", __func__, xfer, wa_xfer_id(xfer), "Probably already aborted.\n" ); + result = -ENOENT; goto out_unlock; } /* Check the delayed list -> if there, release and complete */ @@ -1878,6 +1879,7 @@ int wa_urb_dequeue(struct wahc *wa, struct urb *urb, int status) * segments will be completed in the DTI interrupt. */ seg->status = WA_SEG_ABORTED; + seg->result = -ENOENT; spin_lock_irqsave(&rpipe->seg_lock, flags2); list_del(&seg->list_node); xfer->segs_done++; @@ -1917,12 +1919,12 @@ int wa_urb_dequeue(struct wahc *wa, struct urb *urb, int status) wa_xfer_completion(xfer); if (rpipe_ready) wa_xfer_delayed_run(rpipe); - return 0; + return result; out_unlock: spin_unlock_irqrestore(&xfer->lock, flags); out: - return 0; + return result; dequeue_delayed: list_del_init(&xfer->list_node); @@ -1958,7 +1960,7 @@ static int wa_xfer_status_to_errno(u8 status) [WA_XFER_STATUS_NOT_FOUND] = 0, [WA_XFER_STATUS_INSUFFICIENT_RESOURCE] = -ENOMEM, [WA_XFER_STATUS_TRANSACTION_ERROR] = -EILSEQ, - [WA_XFER_STATUS_ABORTED] = -EINTR, + [WA_XFER_STATUS_ABORTED] = -ENOENT, [WA_XFER_STATUS_RPIPE_NOT_READY] = EINVAL, [WA_XFER_INVALID_FORMAT] = EINVAL, [WA_XFER_UNEXPECTED_SEGMENT_NUMBER] = EINVAL, From 0d6077f8b48ed2dce8f2466a76c0d574a3b4dbe9 Mon Sep 17 00:00:00 2001 From: Ming Lei Date: Tue, 26 Nov 2013 12:43:37 +0800 Subject: [PATCH 59/81] lib/scatterlist: export sg_miter_skip() sg_copy_buffer() can't meet demand for some drrivers(such usb mass storage), so we have to use the sg_miter_* APIs to access sg buffer, then need export sg_miter_skip() for these drivers. The API is needed for converting to sg_miter_* APIs in USB storage driver for accessing sg buffer. Acked-by: Andrew Morton Cc: FUJITA Tomonori Cc: Jens Axboe Signed-off-by: Ming Lei Reviewed-by: Tejun Heo Signed-off-by: Greg Kroah-Hartman --- include/linux/scatterlist.h | 1 + lib/scatterlist.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h index adae88f5b0ab..a964f7285600 100644 --- a/include/linux/scatterlist.h +++ b/include/linux/scatterlist.h @@ -345,6 +345,7 @@ struct sg_mapping_iter { void sg_miter_start(struct sg_mapping_iter *miter, struct scatterlist *sgl, unsigned int nents, unsigned int flags); +bool sg_miter_skip(struct sg_mapping_iter *miter, off_t offset); bool sg_miter_next(struct sg_mapping_iter *miter); void sg_miter_stop(struct sg_mapping_iter *miter); diff --git a/lib/scatterlist.c b/lib/scatterlist.c index d16fa295ae1d..3a8e8e8fb2a5 100644 --- a/lib/scatterlist.c +++ b/lib/scatterlist.c @@ -495,7 +495,7 @@ static bool sg_miter_get_next_page(struct sg_mapping_iter *miter) * true if @miter contains the valid mapping. false if end of sg * list is reached. */ -static bool sg_miter_skip(struct sg_mapping_iter *miter, off_t offset) +bool sg_miter_skip(struct sg_mapping_iter *miter, off_t offset) { sg_miter_stop(miter); @@ -513,6 +513,7 @@ static bool sg_miter_skip(struct sg_mapping_iter *miter, off_t offset) return true; } +EXPORT_SYMBOL(sg_miter_skip); /** * sg_miter_next - proceed mapping iterator to the next mapping From e5fc70d5ccc3d005bb038c0275ffdf57a34b1496 Mon Sep 17 00:00:00 2001 From: Ming Lei Date: Tue, 26 Nov 2013 12:44:13 +0800 Subject: [PATCH 60/81] USB: storage: use sg_miter_* APIs to access scsi buffer We have sg_miter_* APIs for accessing scsi sg buffer, so use them to make code clean and bug free. Cc: Matthew Dharm Cc: Alan Stern Cc: Greg Kroah-Hartman Signed-off-by: Ming Lei Signed-off-by: Greg Kroah-Hartman --- drivers/usb/storage/protocol.c | 76 +++++++++++----------------------- 1 file changed, 24 insertions(+), 52 deletions(-) diff --git a/drivers/usb/storage/protocol.c b/drivers/usb/storage/protocol.c index 5dfb4c36a1b0..f54e5fea9230 100644 --- a/drivers/usb/storage/protocol.c +++ b/drivers/usb/storage/protocol.c @@ -135,69 +135,41 @@ unsigned int usb_stor_access_xfer_buf(unsigned char *buffer, unsigned int buflen, struct scsi_cmnd *srb, struct scatterlist **sgptr, unsigned int *offset, enum xfer_buf_dir dir) { - unsigned int cnt; + unsigned int cnt = 0; struct scatterlist *sg = *sgptr; + struct sg_mapping_iter miter; + unsigned int nents = scsi_sg_count(srb); - /* We have to go through the list one entry - * at a time. Each s-g entry contains some number of pages, and - * each page has to be kmap()'ed separately. If the page is already - * in kernel-addressable memory then kmap() will return its address. - * If the page is not directly accessible -- such as a user buffer - * located in high memory -- then kmap() will map it to a temporary - * position in the kernel's virtual address space. - */ - - if (!sg) + if (sg) + nents = sg_nents(sg); + else sg = scsi_sglist(srb); - /* This loop handles a single s-g list entry, which may - * include multiple pages. Find the initial page structure - * and the starting offset within the page, and update - * the *offset and **sgptr values for the next loop. - */ - cnt = 0; - while (cnt < buflen && sg) { - struct page *page = sg_page(sg) + - ((sg->offset + *offset) >> PAGE_SHIFT); - unsigned int poff = (sg->offset + *offset) & (PAGE_SIZE-1); - unsigned int sglen = sg->length - *offset; + sg_miter_start(&miter, sg, nents, dir == FROM_XFER_BUF ? + SG_MITER_FROM_SG: SG_MITER_TO_SG); - if (sglen > buflen - cnt) { + if (!sg_miter_skip(&miter, *offset)) + return cnt; - /* Transfer ends within this s-g entry */ - sglen = buflen - cnt; - *offset += sglen; + while (sg_miter_next(&miter) && cnt < buflen) { + unsigned int len = min(miter.length, buflen - cnt); + + if (dir == FROM_XFER_BUF) + memcpy(buffer + cnt, miter.addr, len); + else + memcpy(miter.addr, buffer + cnt, len); + + if (*offset + len < miter.piter.sg->length) { + *offset += len; + *sgptr = miter.piter.sg; } else { - - /* Transfer continues to next s-g entry */ *offset = 0; - sg = sg_next(sg); - } - - /* Transfer the data for all the pages in this - * s-g entry. For each page: call kmap(), do the - * transfer, and call kunmap() immediately after. */ - while (sglen > 0) { - unsigned int plen = min(sglen, (unsigned int) - PAGE_SIZE - poff); - unsigned char *ptr = kmap(page); - - if (dir == TO_XFER_BUF) - memcpy(ptr + poff, buffer + cnt, plen); - else - memcpy(buffer + cnt, ptr + poff, plen); - kunmap(page); - - /* Start at the beginning of the next page */ - poff = 0; - ++page; - cnt += plen; - sglen -= plen; + *sgptr = sg_next(miter.piter.sg); } + cnt += len; } - *sgptr = sg; + sg_miter_stop(&miter); - /* Return the amount actually transferred */ return cnt; } EXPORT_SYMBOL_GPL(usb_stor_access_xfer_buf); From 103e127d1f8f985e8a662da6537ebc5e08902ee3 Mon Sep 17 00:00:00 2001 From: Valentine Barshak Date: Wed, 4 Dec 2013 01:42:21 +0400 Subject: [PATCH 61/81] usb: hcd: Remove USB phy if needed This adds remove_phy flag to the HCD structure. If the flag is set and if hcd->phy is valid, the phy is shutdown and released whenever usb_add_hcd fails or usb_hcd_remove is called. This can be used by the HCD drivers to auto-remove the external USB phy when it is no longer needed. Signed-off-by: Valentine Barshak Acked-by: Alan Stern Signed-off-by: Greg Kroah-Hartman --- drivers/usb/core/hcd.c | 14 +++++++++++++- include/linux/usb/hcd.h | 1 + 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c index 6bffb8c87bc9..7527c8e4ec64 100644 --- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c @@ -44,6 +44,7 @@ #include #include +#include #include "usb.h" @@ -2603,7 +2604,7 @@ int usb_add_hcd(struct usb_hcd *hcd, */ if ((retval = hcd_buffer_create(hcd)) != 0) { dev_dbg(hcd->self.controller, "pool alloc failed\n"); - return retval; + goto err_remove_phy; } if ((retval = usb_register_bus(&hcd->self)) < 0) @@ -2734,6 +2735,12 @@ int usb_add_hcd(struct usb_hcd *hcd, usb_deregister_bus(&hcd->self); err_register_bus: hcd_buffer_destroy(hcd); +err_remove_phy: + if (hcd->remove_phy && hcd->phy) { + usb_phy_shutdown(hcd->phy); + usb_put_phy(hcd->phy); + hcd->phy = NULL; + } return retval; } EXPORT_SYMBOL_GPL(usb_add_hcd); @@ -2806,6 +2813,11 @@ void usb_remove_hcd(struct usb_hcd *hcd) usb_put_dev(hcd->self.root_hub); usb_deregister_bus(&hcd->self); hcd_buffer_destroy(hcd); + if (hcd->remove_phy && hcd->phy) { + usb_phy_shutdown(hcd->phy); + usb_put_phy(hcd->phy); + hcd->phy = NULL; + } } EXPORT_SYMBOL_GPL(usb_remove_hcd); diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h index b8aba196f7f1..758ce80d085f 100644 --- a/include/linux/usb/hcd.h +++ b/include/linux/usb/hcd.h @@ -134,6 +134,7 @@ struct usb_hcd { unsigned rh_registered:1;/* is root hub registered? */ unsigned rh_pollable:1; /* may we poll the root hub? */ unsigned msix_enabled:1; /* driver has MSI-X enabled? */ + unsigned remove_phy:1; /* auto-remove USB phy */ /* The next flag is a stopgap, to be removed when all the HCDs * support the new root-hub polling mechanism. */ From 1ae5799ef63176cc75ec10e545cb65f620a82747 Mon Sep 17 00:00:00 2001 From: Valentine Barshak Date: Wed, 4 Dec 2013 01:42:22 +0400 Subject: [PATCH 62/81] usb: hcd: Initialize USB phy if needed This adds external USB phy support to USB HCD driver that allows to find and initialize external USB phy, bound to the HCD, when the HCD is added. The usb_add_hcd function returns -EPROBE_DEFER if the USB phy, bound to the HCD, is not ready. If no USB phy is bound, the HCD is initialized as usual. Signed-off-by: Valentine Barshak Signed-off-by: Greg Kroah-Hartman --- drivers/usb/core/hcd.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c index 7527c8e4ec64..d3a9bcde53c3 100644 --- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c @@ -2589,6 +2589,24 @@ int usb_add_hcd(struct usb_hcd *hcd, int retval; struct usb_device *rhdev; + if (IS_ENABLED(CONFIG_USB_PHY) && !hcd->phy) { + struct usb_phy *phy = usb_get_phy_dev(hcd->self.controller, 0); + + if (IS_ERR(phy)) { + retval = PTR_ERR(phy); + if (retval == -EPROBE_DEFER) + return retval; + } else { + retval = usb_phy_init(phy); + if (retval) { + usb_put_phy(phy); + return retval; + } + hcd->phy = phy; + hcd->remove_phy = 1; + } + } + dev_info(hcd->self.controller, "%s\n", hcd->product_desc); /* Keep old behaviour if authorized_default is not in [0, 1]. */ From 0d4e5bee27dc2f3aa2b0a8a2e0313bfcaf4c5389 Mon Sep 17 00:00:00 2001 From: Yijing Wang Date: Thu, 5 Dec 2013 19:21:42 +0800 Subject: [PATCH 63/81] uwb: Use dev_is_pci() to check whether it is pci device Use PCI standard marco dev_is_pci() instead of directly compare pci_bus_type to check whether it is pci device. Signed-off-by: Yijing Wang Signed-off-by: Greg Kroah-Hartman --- drivers/uwb/umc-bus.c | 2 +- include/linux/uwb/umc.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/uwb/umc-bus.c b/drivers/uwb/umc-bus.c index e3ed6ff6a481..88a290f57ea0 100644 --- a/drivers/uwb/umc-bus.c +++ b/drivers/uwb/umc-bus.c @@ -85,7 +85,7 @@ int umc_match_pci_id(struct umc_driver *umc_drv, struct umc_dev *umc) const struct pci_device_id *id_table = umc_drv->match_data; struct pci_dev *pci; - if (umc->dev.parent->bus != &pci_bus_type) + if (!dev_is_pci(umc->dev.parent)) return 0; pci = to_pci_dev(umc->dev.parent); diff --git a/include/linux/uwb/umc.h b/include/linux/uwb/umc.h index 891d1d5f3947..ba82f03d8287 100644 --- a/include/linux/uwb/umc.h +++ b/include/linux/uwb/umc.h @@ -143,7 +143,7 @@ int umc_match_pci_id(struct umc_driver *umc_drv, struct umc_dev *umc); static inline struct pci_dev *umc_parent_pci_dev(struct umc_dev *umc_dev) { struct pci_dev *pci_dev = NULL; - if (umc_dev->dev.parent->bus == &pci_bus_type) + if (dev_is_pci(umc_dev->dev.parent)) pci_dev = to_pci_dev(umc_dev->dev.parent); return pci_dev; } From e10e6f433f6f737f29dc1cea83e9a03095ac5c09 Mon Sep 17 00:00:00 2001 From: Yijing Wang Date: Thu, 5 Dec 2013 19:21:32 +0800 Subject: [PATCH 64/81] usb: Use dev_is_pci() to check whether it is pci device Use PCI standard marco dev_is_pci() instead of directly compare pci_bus_type to check whether it is pci device. Signed-off-by: Yijing Wang Acked-by: Alan Stern Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/ehci-dbg.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/host/ehci-dbg.c b/drivers/usb/host/ehci-dbg.c index 9269782a7627..524cbf26d992 100644 --- a/drivers/usb/host/ehci-dbg.c +++ b/drivers/usb/host/ehci-dbg.c @@ -818,7 +818,7 @@ static ssize_t fill_registers_buffer(struct debug_buffer *buf) #ifdef CONFIG_PCI /* EHCI 0.96 and later may have "extended capabilities" */ - if (hcd->self.controller->bus == &pci_bus_type) { + if (dev_is_pci(hcd->self.controller)) { struct pci_dev *pdev; u32 offset, cap, cap2; unsigned count = 256/4; From 9058bdc3a8fbfe1a528019466df62635ef1f7a94 Mon Sep 17 00:00:00 2001 From: Seth Archer Brown Date: Thu, 5 Dec 2013 22:59:23 -0500 Subject: [PATCH 65/81] Usb: atm: usbatm: fixed a pointer variable format issue Fixed a pointer variable format issue. Signed-off-by: Seth Archer Brown Acked-by: Duncan Sands Signed-off-by: Greg Kroah-Hartman --- drivers/usb/atm/usbatm.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/usb/atm/usbatm.c b/drivers/usb/atm/usbatm.c index 25a7bfcf666c..dada0146cd7f 100644 --- a/drivers/usb/atm/usbatm.c +++ b/drivers/usb/atm/usbatm.c @@ -170,9 +170,9 @@ struct usbatm_control { static void usbatm_atm_dev_close(struct atm_dev *atm_dev); static int usbatm_atm_open(struct atm_vcc *vcc); static void usbatm_atm_close(struct atm_vcc *vcc); -static int usbatm_atm_ioctl(struct atm_dev *atm_dev, unsigned int cmd, void __user * arg); +static int usbatm_atm_ioctl(struct atm_dev *atm_dev, unsigned int cmd, void __user *arg); static int usbatm_atm_send(struct atm_vcc *vcc, struct sk_buff *skb); -static int usbatm_atm_proc_read(struct atm_dev *atm_dev, loff_t * pos, char *page); +static int usbatm_atm_proc_read(struct atm_dev *atm_dev, loff_t *pos, char *page); static struct atmdev_ops usbatm_atm_devops = { .dev_close = usbatm_atm_dev_close, @@ -739,7 +739,7 @@ static void usbatm_atm_dev_close(struct atm_dev *atm_dev) usbatm_put_instance(instance); /* taken in usbatm_atm_init */ } -static int usbatm_atm_proc_read(struct atm_dev *atm_dev, loff_t * pos, char *page) +static int usbatm_atm_proc_read(struct atm_dev *atm_dev, loff_t *pos, char *page) { struct usbatm_data *instance = atm_dev->dev_data; int left = *pos; @@ -895,7 +895,7 @@ static void usbatm_atm_close(struct atm_vcc *vcc) } static int usbatm_atm_ioctl(struct atm_dev *atm_dev, unsigned int cmd, - void __user * arg) + void __user *arg) { struct usbatm_data *instance = atm_dev->dev_data; From aeb2c1210d71c00a4b59d343b0a7df6b1059eb89 Mon Sep 17 00:00:00 2001 From: Chris Ruehl Date: Fri, 6 Dec 2013 16:35:12 +0800 Subject: [PATCH 66/81] usb: chipidea: Reallocate regmap only if lpm is detected The regmap only needs to reallocate if the hw_read on the CAP register shows lpm is used. Therefore the if() statement check the change. Signed-off-by: Chris Ruehl Signed-off-by: Peter Chen Signed-off-by: Greg Kroah-Hartman --- drivers/usb/chipidea/core.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c index 5d8981c5235e..50754073fae0 100644 --- a/drivers/usb/chipidea/core.c +++ b/drivers/usb/chipidea/core.c @@ -208,7 +208,8 @@ static int hw_device_init(struct ci_hdrc *ci, void __iomem *base) reg = hw_read(ci, CAP_HCCPARAMS, HCCPARAMS_LEN) >> __ffs(HCCPARAMS_LEN); ci->hw_bank.lpm = reg; - hw_alloc_regmap(ci, !!reg); + if (reg) + hw_alloc_regmap(ci, !!reg); ci->hw_bank.size = ci->hw_bank.op - ci->hw_bank.abs; ci->hw_bank.size += OP_LAST; ci->hw_bank.size /= sizeof(u32); From 73de93440186c595a031046e266f6caaac106aa0 Mon Sep 17 00:00:00 2001 From: Peter Chen Date: Fri, 6 Dec 2013 16:35:13 +0800 Subject: [PATCH 67/81] usb: chipidea: imx: avoid unnecessary probe defer every time The ci_hdrc_imx's probe needs usbmisc_imx to be loadded beforehand, so it is better we load usbmisc_imx first. Signed-off-by: Peter Chen Signed-off-by: Greg Kroah-Hartman --- drivers/usb/chipidea/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/chipidea/Makefile b/drivers/usb/chipidea/Makefile index a99d980454a6..7345d2115af2 100644 --- a/drivers/usb/chipidea/Makefile +++ b/drivers/usb/chipidea/Makefile @@ -17,5 +17,5 @@ ifneq ($(CONFIG_PCI),) endif ifneq ($(CONFIG_OF),) - obj-$(CONFIG_USB_CHIPIDEA) += ci_hdrc_imx.o usbmisc_imx.o + obj-$(CONFIG_USB_CHIPIDEA) += usbmisc_imx.o ci_hdrc_imx.o endif From 9f90e111a6abc472ca9aed9b4a4d27d9a22ecbd3 Mon Sep 17 00:00:00 2001 From: Alexander Shiyan Date: Fri, 6 Dec 2013 16:35:14 +0800 Subject: [PATCH 68/81] usb: chipidea: usbmisc: Add support for i.MX27/i.MX31 CPUs This adds i.MX27 and i.MX31 as the next user of the usbmisc driver. Tested-by: Chris Ruehl Signed-off-by: Alexander Shiyan Signed-off-by: Peter Chen Signed-off-by: Greg Kroah-Hartman --- drivers/usb/chipidea/usbmisc_imx.c | 42 ++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c index 8a1094b1182f..4381c5a604d6 100644 --- a/drivers/usb/chipidea/usbmisc_imx.c +++ b/drivers/usb/chipidea/usbmisc_imx.c @@ -21,6 +21,10 @@ #define MX25_USB_PHY_CTRL_OFFSET 0x08 #define MX25_BM_EXTERNAL_VBUS_DIVIDER BIT(23) +#define MX27_H1_PM_BIT BIT(8) +#define MX27_H2_PM_BIT BIT(16) +#define MX27_OTG_PM_BIT BIT(24) + #define MX53_USB_OTG_PHY_CTRL_0_OFFSET 0x08 #define MX53_USB_UH2_CTRL_OFFSET 0x14 #define MX53_USB_UH3_CTRL_OFFSET 0x18 @@ -68,6 +72,36 @@ static int usbmisc_imx25_post(struct imx_usbmisc_data *data) return 0; } +static int usbmisc_imx27_init(struct imx_usbmisc_data *data) +{ + unsigned long flags; + u32 val; + + switch (data->index) { + case 0: + val = MX27_OTG_PM_BIT; + break; + case 1: + val = MX27_H1_PM_BIT; + break; + case 2: + val = MX27_H2_PM_BIT; + break; + default: + return -EINVAL; + }; + + spin_lock_irqsave(&usbmisc->lock, flags); + if (data->disable_oc) + val = readl(usbmisc->base) | val; + else + val = readl(usbmisc->base) & ~val; + writel(val, usbmisc->base); + spin_unlock_irqrestore(&usbmisc->lock, flags); + + return 0; +} + static int usbmisc_imx53_init(struct imx_usbmisc_data *data) { void __iomem *reg = NULL; @@ -128,6 +162,10 @@ static const struct usbmisc_ops imx25_usbmisc_ops = { .post = usbmisc_imx25_post, }; +static const struct usbmisc_ops imx27_usbmisc_ops = { + .init = usbmisc_imx27_init, +}; + static const struct usbmisc_ops imx53_usbmisc_ops = { .init = usbmisc_imx53_init, }; @@ -161,6 +199,10 @@ static const struct of_device_id usbmisc_imx_dt_ids[] = { .compatible = "fsl,imx25-usbmisc", .data = &imx25_usbmisc_ops, }, + { + .compatible = "fsl,imx27-usbmisc", + .data = &imx27_usbmisc_ops, + }, { .compatible = "fsl,imx53-usbmisc", .data = &imx53_usbmisc_ops, From c4962e03f4bbad63c8356e9466db6e0df4144ed9 Mon Sep 17 00:00:00 2001 From: Alexander Shiyan Date: Fri, 6 Dec 2013 16:35:15 +0800 Subject: [PATCH 69/81] usb: chipidea: usbmisc: Add support for i.MX51 CPU This adds i.MX51 as the next user of the usbmisc driver. Functionality is similar to i.MX53, so at this stage simply reuse existing i.MX53 calls. Signed-off-by: Alexander Shiyan Signed-off-by: Peter Chen Signed-off-by: Greg Kroah-Hartman --- drivers/usb/chipidea/usbmisc_imx.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c index 4381c5a604d6..cd061abe3507 100644 --- a/drivers/usb/chipidea/usbmisc_imx.c +++ b/drivers/usb/chipidea/usbmisc_imx.c @@ -203,6 +203,10 @@ static const struct of_device_id usbmisc_imx_dt_ids[] = { .compatible = "fsl,imx27-usbmisc", .data = &imx27_usbmisc_ops, }, + { + .compatible = "fsl,imx51-usbmisc", + .data = &imx53_usbmisc_ops, + }, { .compatible = "fsl,imx53-usbmisc", .data = &imx53_usbmisc_ops, From 3c9740a117d40a74412775b5d3fe2b88a7635a0e Mon Sep 17 00:00:00 2001 From: Peter Chen Date: Tue, 5 Nov 2013 10:46:02 +0800 Subject: [PATCH 70/81] usb: hcd: move controller wakeup setting initialization to individual driver Individual controller driver has different requirement for wakeup setting, so move it from core to itself. In order to align with current etting the default wakeup setting is enabled (except for chipidea host). Pass compile test with below commands: make O=outout/all allmodconfig make -j$CPU_NUM O=outout/all drivers/usb Signed-off-by: Peter Chen Acked-by: Alan Stern Signed-off-by: Greg Kroah-Hartman --- drivers/staging/dwc2/hcd.c | 2 ++ drivers/staging/octeon-usb/octeon-hcd.c | 1 + drivers/staging/ozwpan/ozhcd.c | 2 ++ drivers/usb/c67x00/c67x00-hcd.c | 2 ++ drivers/usb/core/hcd-pci.c | 1 + drivers/usb/core/hcd.c | 6 ------ drivers/usb/host/ehci-atmel.c | 1 + drivers/usb/host/ehci-exynos.c | 1 + drivers/usb/host/ehci-fsl.c | 1 + drivers/usb/host/ehci-grlib.c | 1 + drivers/usb/host/ehci-mv.c | 1 + drivers/usb/host/ehci-mxc.c | 1 + drivers/usb/host/ehci-octeon.c | 1 + drivers/usb/host/ehci-omap.c | 1 + drivers/usb/host/ehci-orion.c | 1 + drivers/usb/host/ehci-platform.c | 1 + drivers/usb/host/ehci-pmcmsp.c | 4 +++- drivers/usb/host/ehci-ppc-of.c | 1 + drivers/usb/host/ehci-ps3.c | 1 + drivers/usb/host/ehci-sead3.c | 1 + drivers/usb/host/ehci-sh.c | 1 + drivers/usb/host/ehci-spear.c | 1 + drivers/usb/host/ehci-tegra.c | 1 + drivers/usb/host/ehci-tilegx.c | 1 + drivers/usb/host/ehci-w90x900.c | 1 + drivers/usb/host/ehci-xilinx-of.c | 4 +++- drivers/usb/host/fhci-hcd.c | 2 ++ drivers/usb/host/fotg210-hcd.c | 1 + drivers/usb/host/fusbh200-hcd.c | 1 + drivers/usb/host/hwa-hc.c | 1 + drivers/usb/host/imx21-hcd.c | 1 + drivers/usb/host/isp116x-hcd.c | 2 ++ drivers/usb/host/isp1362-hcd.c | 2 ++ drivers/usb/host/isp1760-hcd.c | 1 + drivers/usb/host/ohci-at91.c | 4 +++- drivers/usb/host/ohci-da8xx.c | 2 ++ drivers/usb/host/ohci-exynos.c | 1 + drivers/usb/host/ohci-jz4740.c | 1 + drivers/usb/host/ohci-nxp.c | 4 +++- drivers/usb/host/ohci-octeon.c | 2 ++ drivers/usb/host/ohci-omap.c | 1 + drivers/usb/host/ohci-omap3.c | 1 + drivers/usb/host/ohci-platform.c | 2 ++ drivers/usb/host/ohci-ppc-of.c | 4 +++- drivers/usb/host/ohci-ps3.c | 1 + drivers/usb/host/ohci-pxa27x.c | 4 +++- drivers/usb/host/ohci-s3c2410.c | 1 + drivers/usb/host/ohci-sa1111.c | 4 +++- drivers/usb/host/ohci-sm501.c | 1 + drivers/usb/host/ohci-spear.c | 4 +++- drivers/usb/host/ohci-tilegx.c | 1 + drivers/usb/host/ohci-tmio.c | 1 + drivers/usb/host/oxu210hp-hcd.c | 1 + drivers/usb/host/r8a66597-hcd.c | 1 + drivers/usb/host/sl811-hcd.c | 2 ++ drivers/usb/host/u132-hcd.c | 1 + drivers/usb/host/uhci-grlib.c | 1 + drivers/usb/host/uhci-platform.c | 1 + drivers/usb/host/whci/hcd.c | 1 + drivers/usb/host/xhci-plat.c | 1 + drivers/usb/musb/musb_host.c | 1 + drivers/usb/phy/phy-msm-usb.c | 1 + drivers/usb/phy/phy-mv-usb.c | 6 ++++-- drivers/usb/renesas_usbhs/mod_host.c | 1 + 64 files changed, 92 insertions(+), 16 deletions(-) diff --git a/drivers/staging/dwc2/hcd.c b/drivers/staging/dwc2/hcd.c index 3cfd2d5152c9..078cd9168b1a 100644 --- a/drivers/staging/dwc2/hcd.c +++ b/drivers/staging/dwc2/hcd.c @@ -2921,6 +2921,8 @@ int dwc2_hcd_init(struct dwc2_hsotg *hsotg, int irq, if (retval < 0) goto error3; + device_wakeup_enable(hcd->self.controller); + dwc2_hcd_dump_state(hsotg); dwc2_enable_global_interrupts(hsotg); diff --git a/drivers/staging/octeon-usb/octeon-hcd.c b/drivers/staging/octeon-usb/octeon-hcd.c index d118952c0a74..47e0a91238a1 100644 --- a/drivers/staging/octeon-usb/octeon-hcd.c +++ b/drivers/staging/octeon-usb/octeon-hcd.c @@ -3498,6 +3498,7 @@ static int octeon_usb_driver_probe(struct device *dev) kfree(hcd); return -1; } + device_wakeup_enable(hcd->self.controller); dev_dbg(dev, "Registered HCD for port %d on irq %d\n", usb_num, irq); diff --git a/drivers/staging/ozwpan/ozhcd.c b/drivers/staging/ozwpan/ozhcd.c index d9c43c3282e7..efaf26f734c3 100644 --- a/drivers/staging/ozwpan/ozhcd.c +++ b/drivers/staging/ozwpan/ozhcd.c @@ -2270,6 +2270,8 @@ static int oz_plat_probe(struct platform_device *dev) usb_put_hcd(hcd); return -1; } + device_wakeup_enable(hcd->self.controller); + spin_lock_bh(&g_hcdlock); g_ozhcd = ozhcd; spin_unlock_bh(&g_hcdlock); diff --git a/drivers/usb/c67x00/c67x00-hcd.c b/drivers/usb/c67x00/c67x00-hcd.c index 75e47b860a53..20ec4eee1ac8 100644 --- a/drivers/usb/c67x00/c67x00-hcd.c +++ b/drivers/usb/c67x00/c67x00-hcd.c @@ -384,6 +384,8 @@ int c67x00_hcd_probe(struct c67x00_sie *sie) goto err2; } + device_wakeup_enable(hcd->self.controller); + spin_lock_irqsave(&sie->lock, flags); sie->private_data = c67x00; sie->irq = c67x00_hcd_irq; diff --git a/drivers/usb/core/hcd-pci.c b/drivers/usb/core/hcd-pci.c index dfe9d0f22978..d59d99347d54 100644 --- a/drivers/usb/core/hcd-pci.c +++ b/drivers/usb/core/hcd-pci.c @@ -282,6 +282,7 @@ int usb_hcd_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) if (retval != 0) goto unmap_registers; + device_wakeup_enable(hcd->self.controller); if (pci_dev_run_wake(dev)) pm_runtime_put_noidle(&dev->dev); diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c index d3a9bcde53c3..6297c9e50de2 100644 --- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c @@ -2712,12 +2712,6 @@ int usb_add_hcd(struct usb_hcd *hcd, if (hcd->uses_new_polling && HCD_POLL_RH(hcd)) usb_hcd_poll_rh_status(hcd); - /* - * Host controllers don't generate their own wakeup requests; - * they only forward requests from the root hub. Therefore - * controllers should always be enabled for remote wakeup. - */ - device_wakeup_enable(hcd->self.controller); return retval; error_create_attr_group: diff --git a/drivers/usb/host/ehci-atmel.c b/drivers/usb/host/ehci-atmel.c index 284f8417eae5..ec9f7b75d497 100644 --- a/drivers/usb/host/ehci-atmel.c +++ b/drivers/usb/host/ehci-atmel.c @@ -153,6 +153,7 @@ static int ehci_atmel_drv_probe(struct platform_device *pdev) retval = usb_add_hcd(hcd, irq, IRQF_SHARED); if (retval) goto fail_add_hcd; + device_wakeup_enable(hcd->self.controller); return retval; diff --git a/drivers/usb/host/ehci-exynos.c b/drivers/usb/host/ehci-exynos.c index e97c198e052f..d1d8c47777c5 100644 --- a/drivers/usb/host/ehci-exynos.c +++ b/drivers/usb/host/ehci-exynos.c @@ -166,6 +166,7 @@ static int exynos_ehci_probe(struct platform_device *pdev) dev_err(&pdev->dev, "Failed to add USB HCD\n"); goto fail_add_hcd; } + device_wakeup_enable(hcd->self.controller); platform_set_drvdata(pdev, hcd); diff --git a/drivers/usb/host/ehci-fsl.c b/drivers/usb/host/ehci-fsl.c index 87a7426a44f4..854a68fa59a6 100644 --- a/drivers/usb/host/ehci-fsl.c +++ b/drivers/usb/host/ehci-fsl.c @@ -138,6 +138,7 @@ static int usb_hcd_fsl_probe(const struct hc_driver *driver, retval = usb_add_hcd(hcd, irq, IRQF_SHARED); if (retval != 0) goto err4; + device_wakeup_enable(hcd->self.controller); #ifdef CONFIG_USB_OTG if (pdata->operating_mode == FSL_USB2_DR_OTG) { diff --git a/drivers/usb/host/ehci-grlib.c b/drivers/usb/host/ehci-grlib.c index b52a66ce92e8..054792c56271 100644 --- a/drivers/usb/host/ehci-grlib.c +++ b/drivers/usb/host/ehci-grlib.c @@ -140,6 +140,7 @@ static int ehci_hcd_grlib_probe(struct platform_device *op) if (rv) goto err_ioremap; + device_wakeup_enable(hcd->self.controller); return 0; err_ioremap: diff --git a/drivers/usb/host/ehci-mv.c b/drivers/usb/host/ehci-mv.c index 6e8afcaa8ff0..bd61612a7251 100644 --- a/drivers/usb/host/ehci-mv.c +++ b/drivers/usb/host/ehci-mv.c @@ -257,6 +257,7 @@ static int mv_ehci_probe(struct platform_device *pdev) "failed to add hcd with err %d\n", retval); goto err_set_vbus; } + device_wakeup_enable(hcd->self.controller); } if (pdata->private_init) diff --git a/drivers/usb/host/ehci-mxc.c b/drivers/usb/host/ehci-mxc.c index 0528dc4526c8..dbe5e4eea08d 100644 --- a/drivers/usb/host/ehci-mxc.c +++ b/drivers/usb/host/ehci-mxc.c @@ -155,6 +155,7 @@ static int ehci_mxc_drv_probe(struct platform_device *pdev) if (ret) goto err_add; + device_wakeup_enable(hcd->self.controller); return 0; err_add: diff --git a/drivers/usb/host/ehci-octeon.c b/drivers/usb/host/ehci-octeon.c index 4c528b2c033a..c4ad7ed6b3f8 100644 --- a/drivers/usb/host/ehci-octeon.c +++ b/drivers/usb/host/ehci-octeon.c @@ -158,6 +158,7 @@ static int ehci_octeon_drv_probe(struct platform_device *pdev) dev_dbg(&pdev->dev, "failed to add hcd with err %d\n", ret); goto err3; } + device_wakeup_enable(hcd->self.controller); platform_set_drvdata(pdev, hcd); diff --git a/drivers/usb/host/ehci-omap.c b/drivers/usb/host/ehci-omap.c index 6fa82d6b7661..a24720beb39d 100644 --- a/drivers/usb/host/ehci-omap.c +++ b/drivers/usb/host/ehci-omap.c @@ -215,6 +215,7 @@ static int ehci_hcd_omap_probe(struct platform_device *pdev) dev_err(dev, "failed to add hcd with err %d\n", ret); goto err_pm_runtime; } + device_wakeup_enable(hcd->self.controller); /* * Bring PHYs out of reset for non PHY modes. diff --git a/drivers/usb/host/ehci-orion.c b/drivers/usb/host/ehci-orion.c index 2ba76730e650..aa8b92bf5361 100644 --- a/drivers/usb/host/ehci-orion.c +++ b/drivers/usb/host/ehci-orion.c @@ -252,6 +252,7 @@ static int ehci_orion_drv_probe(struct platform_device *pdev) if (err) goto err4; + device_wakeup_enable(hcd->self.controller); return 0; err4: diff --git a/drivers/usb/host/ehci-platform.c b/drivers/usb/host/ehci-platform.c index 7f30b7168d5a..01536cfd361d 100644 --- a/drivers/usb/host/ehci-platform.c +++ b/drivers/usb/host/ehci-platform.c @@ -132,6 +132,7 @@ static int ehci_platform_probe(struct platform_device *dev) if (err) goto err_put_hcd; + device_wakeup_enable(hcd->self.controller); platform_set_drvdata(dev, hcd); return err; diff --git a/drivers/usb/host/ehci-pmcmsp.c b/drivers/usb/host/ehci-pmcmsp.c index 893b707f0000..af3974a5e7c2 100644 --- a/drivers/usb/host/ehci-pmcmsp.c +++ b/drivers/usb/host/ehci-pmcmsp.c @@ -210,8 +210,10 @@ int usb_hcd_msp_probe(const struct hc_driver *driver, retval = usb_add_hcd(hcd, res->start, IRQF_SHARED); - if (retval == 0) + if (retval == 0) { + device_wakeup_enable(hcd->self.controller); return 0; + } usb_remove_hcd(hcd); err3: diff --git a/drivers/usb/host/ehci-ppc-of.c b/drivers/usb/host/ehci-ppc-of.c index 875d2fcc9e0e..b0965eb6c0db 100644 --- a/drivers/usb/host/ehci-ppc-of.c +++ b/drivers/usb/host/ehci-ppc-of.c @@ -169,6 +169,7 @@ static int ehci_hcd_ppc_of_probe(struct platform_device *op) if (rv) goto err_ioremap; + device_wakeup_enable(hcd->self.controller); return 0; err_ioremap: diff --git a/drivers/usb/host/ehci-ps3.c b/drivers/usb/host/ehci-ps3.c index 8188542ba17e..7934ff9b35e1 100644 --- a/drivers/usb/host/ehci-ps3.c +++ b/drivers/usb/host/ehci-ps3.c @@ -189,6 +189,7 @@ static int ps3_ehci_probe(struct ps3_system_bus_device *dev) goto fail_add_hcd; } + device_wakeup_enable(hcd->self.controller); return result; fail_add_hcd: diff --git a/drivers/usb/host/ehci-sead3.c b/drivers/usb/host/ehci-sead3.c index 8a734498079b..cf1267673868 100644 --- a/drivers/usb/host/ehci-sead3.c +++ b/drivers/usb/host/ehci-sead3.c @@ -126,6 +126,7 @@ static int ehci_hcd_sead3_drv_probe(struct platform_device *pdev) IRQF_SHARED); if (ret == 0) { platform_set_drvdata(pdev, hcd); + device_wakeup_enable(hcd->self.controller); return ret; } diff --git a/drivers/usb/host/ehci-sh.c b/drivers/usb/host/ehci-sh.c index dc899eb2b861..9b9b9f5b016e 100644 --- a/drivers/usb/host/ehci-sh.c +++ b/drivers/usb/host/ehci-sh.c @@ -151,6 +151,7 @@ static int ehci_hcd_sh_probe(struct platform_device *pdev) dev_err(&pdev->dev, "Failed to add hcd"); goto fail_add_hcd; } + device_wakeup_enable(hcd->self.controller); priv->hcd = hcd; platform_set_drvdata(pdev, priv); diff --git a/drivers/usb/host/ehci-spear.c b/drivers/usb/host/ehci-spear.c index ee6f9ffaa0e7..8bd915b2ae8c 100644 --- a/drivers/usb/host/ehci-spear.c +++ b/drivers/usb/host/ehci-spear.c @@ -130,6 +130,7 @@ static int spear_ehci_hcd_drv_probe(struct platform_device *pdev) if (retval) goto err_stop_ehci; + device_wakeup_enable(hcd->self.controller); return retval; err_stop_ehci: diff --git a/drivers/usb/host/ehci-tegra.c b/drivers/usb/host/ehci-tegra.c index b9fd0396011e..a8f4471dae7b 100644 --- a/drivers/usb/host/ehci-tegra.c +++ b/drivers/usb/host/ehci-tegra.c @@ -455,6 +455,7 @@ static int tegra_ehci_probe(struct platform_device *pdev) dev_err(&pdev->dev, "Failed to add USB HCD\n"); goto cleanup_otg_set_host; } + device_wakeup_enable(hcd->self.controller); return err; diff --git a/drivers/usb/host/ehci-tilegx.c b/drivers/usb/host/ehci-tilegx.c index 67026ffbf9a8..f3713d32c9a1 100644 --- a/drivers/usb/host/ehci-tilegx.c +++ b/drivers/usb/host/ehci-tilegx.c @@ -170,6 +170,7 @@ static int ehci_hcd_tilegx_drv_probe(struct platform_device *pdev) ret = usb_add_hcd(hcd, pdata->irq, IRQF_SHARED); if (ret == 0) { platform_set_drvdata(pdev, hcd); + device_wakeup_enable(hcd->self.controller); return ret; } diff --git a/drivers/usb/host/ehci-w90x900.c b/drivers/usb/host/ehci-w90x900.c index cdad8438c02b..12c1a563c3f2 100644 --- a/drivers/usb/host/ehci-w90x900.c +++ b/drivers/usb/host/ehci-w90x900.c @@ -94,6 +94,7 @@ static int usb_w90x900_probe(const struct hc_driver *driver, if (retval != 0) goto err4; + device_wakeup_enable(hcd->self.controller); return retval; err4: iounmap(hcd->regs); diff --git a/drivers/usb/host/ehci-xilinx-of.c b/drivers/usb/host/ehci-xilinx-of.c index 95979f9f4381..3cd2efa4e678 100644 --- a/drivers/usb/host/ehci-xilinx-of.c +++ b/drivers/usb/host/ehci-xilinx-of.c @@ -191,8 +191,10 @@ static int ehci_hcd_xilinx_of_probe(struct platform_device *op) ehci->caps = hcd->regs + 0x100; rv = usb_add_hcd(hcd, irq, 0); - if (rv == 0) + if (rv == 0) { + device_wakeup_enable(hcd->self.controller); return 0; + } err_irq: usb_put_hcd(hcd); diff --git a/drivers/usb/host/fhci-hcd.c b/drivers/usb/host/fhci-hcd.c index 0551c0af0fd1..1cf68eaf2ed8 100644 --- a/drivers/usb/host/fhci-hcd.c +++ b/drivers/usb/host/fhci-hcd.c @@ -754,6 +754,8 @@ static int of_fhci_probe(struct platform_device *ofdev) if (ret < 0) goto err_add_hcd; + device_wakeup_enable(hcd->self.controller); + fhci_dfs_create(fhci); return 0; diff --git a/drivers/usb/host/fotg210-hcd.c b/drivers/usb/host/fotg210-hcd.c index 97d6939189d6..98a89d16cc3e 100644 --- a/drivers/usb/host/fotg210-hcd.c +++ b/drivers/usb/host/fotg210-hcd.c @@ -5889,6 +5889,7 @@ static int fotg210_hcd_probe(struct platform_device *pdev) dev_err(dev, "failed to add hcd with err %d\n", retval); goto fail_add_hcd; } + device_wakeup_enable(hcd->self.controller); return retval; diff --git a/drivers/usb/host/fusbh200-hcd.c b/drivers/usb/host/fusbh200-hcd.c index 9ea85b662a04..ba9499060f63 100644 --- a/drivers/usb/host/fusbh200-hcd.c +++ b/drivers/usb/host/fusbh200-hcd.c @@ -5798,6 +5798,7 @@ static int fusbh200_hcd_probe(struct platform_device *pdev) dev_err(dev, "failed to add hcd with err %d\n", retval); goto fail_add_hcd; } + device_wakeup_enable(hcd->self.controller); return retval; diff --git a/drivers/usb/host/hwa-hc.c b/drivers/usb/host/hwa-hc.c index a4ec9e6c0f86..7fd3f9bd7b83 100644 --- a/drivers/usb/host/hwa-hc.c +++ b/drivers/usb/host/hwa-hc.c @@ -791,6 +791,7 @@ static int hwahc_probe(struct usb_interface *usb_iface, dev_err(dev, "Cannot add HCD: %d\n", result); goto error_add_hcd; } + device_wakeup_enable(usb_hcd->self.controller); result = wusbhc_b_create(&hwahc->wusbhc); if (result < 0) { dev_err(dev, "Cannot setup phase B of WUSBHC: %d\n", result); diff --git a/drivers/usb/host/imx21-hcd.c b/drivers/usb/host/imx21-hcd.c index 0122624c7ec1..207bad99301f 100644 --- a/drivers/usb/host/imx21-hcd.c +++ b/drivers/usb/host/imx21-hcd.c @@ -1910,6 +1910,7 @@ static int imx21_probe(struct platform_device *pdev) dev_err(imx21->dev, "usb_add_hcd() returned %d\n", ret); goto failed_add_hcd; } + device_wakeup_enable(hcd->self.controller); return 0; diff --git a/drivers/usb/host/isp116x-hcd.c b/drivers/usb/host/isp116x-hcd.c index 7722ec658b87..2740f65936bd 100644 --- a/drivers/usb/host/isp116x-hcd.c +++ b/drivers/usb/host/isp116x-hcd.c @@ -1645,6 +1645,8 @@ static int isp116x_probe(struct platform_device *pdev) if (ret) goto err6; + device_wakeup_enable(hcd->self.controller); + ret = create_debug_file(isp116x); if (ret) { ERR("Couldn't create debugfs entry\n"); diff --git a/drivers/usb/host/isp1362-hcd.c b/drivers/usb/host/isp1362-hcd.c index cd94b108b57f..34645ae9313d 100644 --- a/drivers/usb/host/isp1362-hcd.c +++ b/drivers/usb/host/isp1362-hcd.c @@ -2746,6 +2746,8 @@ static int isp1362_probe(struct platform_device *pdev) retval = usb_add_hcd(hcd, irq, irq_flags | IRQF_SHARED); if (retval != 0) goto err6; + device_wakeup_enable(hcd->self.controller); + pr_info("%s, irq %d\n", hcd->product_desc, irq); create_debug_file(isp1362_hcd); diff --git a/drivers/usb/host/isp1760-hcd.c b/drivers/usb/host/isp1760-hcd.c index 2facee53eab1..51a0ae9cdd1d 100644 --- a/drivers/usb/host/isp1760-hcd.c +++ b/drivers/usb/host/isp1760-hcd.c @@ -2250,6 +2250,7 @@ struct usb_hcd *isp1760_register(phys_addr_t res_start, resource_size_t res_len, ret = usb_add_hcd(hcd, irq, irqflags); if (ret) goto err_unmap; + device_wakeup_enable(hcd->self.controller); return hcd; diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c index cc9462f19fa5..29d2093e3cee 100644 --- a/drivers/usb/host/ohci-at91.c +++ b/drivers/usb/host/ohci-at91.c @@ -200,8 +200,10 @@ static int usb_hcd_at91_probe(const struct hc_driver *driver, at91_start_hc(pdev); retval = usb_add_hcd(hcd, pdev->resource[1].start, IRQF_SHARED); - if (retval == 0) + if (retval == 0) { + device_wakeup_enable(hcd->self.controller); return retval; + } /* Error handling */ at91_stop_hc(pdev); diff --git a/drivers/usb/host/ohci-da8xx.c b/drivers/usb/host/ohci-da8xx.c index 71dbd85e9a8d..f0fe0d26314d 100644 --- a/drivers/usb/host/ohci-da8xx.c +++ b/drivers/usb/host/ohci-da8xx.c @@ -348,6 +348,8 @@ static int usb_hcd_da8xx_probe(const struct hc_driver *driver, if (error) goto err4; + device_wakeup_enable(hcd->self.controller); + if (hub->ocic_notify) { error = hub->ocic_notify(ohci_da8xx_ocic_handler); if (!error) diff --git a/drivers/usb/host/ohci-exynos.c b/drivers/usb/host/ohci-exynos.c index 9897d70e4c15..68588d8a09bb 100644 --- a/drivers/usb/host/ohci-exynos.c +++ b/drivers/usb/host/ohci-exynos.c @@ -146,6 +146,7 @@ static int exynos_ohci_probe(struct platform_device *pdev) dev_err(&pdev->dev, "Failed to add USB HCD\n"); goto fail_add_hcd; } + device_wakeup_enable(hcd->self.controller); return 0; fail_add_hcd: diff --git a/drivers/usb/host/ohci-jz4740.c b/drivers/usb/host/ohci-jz4740.c index d4ef53990d73..efe31f3ab4ea 100644 --- a/drivers/usb/host/ohci-jz4740.c +++ b/drivers/usb/host/ohci-jz4740.c @@ -217,6 +217,7 @@ static int jz4740_ohci_probe(struct platform_device *pdev) dev_err(&pdev->dev, "Failed to add hcd: %d\n", ret); goto err_disable; } + device_wakeup_enable(hcd->self.controller); return 0; diff --git a/drivers/usb/host/ohci-nxp.c b/drivers/usb/host/ohci-nxp.c index e99db8a6d55f..719f28e5e3ac 100644 --- a/drivers/usb/host/ohci-nxp.c +++ b/drivers/usb/host/ohci-nxp.c @@ -274,8 +274,10 @@ static int ohci_hcd_nxp_probe(struct platform_device *pdev) dev_info(&pdev->dev, "at 0x%p, irq %d\n", hcd->regs, hcd->irq); ret = usb_add_hcd(hcd, irq, 0); - if (ret == 0) + if (ret == 0) { + device_wakeup_enable(hcd->self.controller); return ret; + } ohci_nxp_stop_hc(); fail_resource: diff --git a/drivers/usb/host/ohci-octeon.c b/drivers/usb/host/ohci-octeon.c index 6c16dcef15c6..49b220dc2f9b 100644 --- a/drivers/usb/host/ohci-octeon.c +++ b/drivers/usb/host/ohci-octeon.c @@ -171,6 +171,8 @@ static int ohci_octeon_drv_probe(struct platform_device *pdev) goto err3; } + device_wakeup_enable(hcd->self.controller); + platform_set_drvdata(pdev, hcd); return 0; diff --git a/drivers/usb/host/ohci-omap.c b/drivers/usb/host/ohci-omap.c index f253214741ba..a44a4fede1c4 100644 --- a/drivers/usb/host/ohci-omap.c +++ b/drivers/usb/host/ohci-omap.c @@ -367,6 +367,7 @@ static int usb_hcd_omap_probe (const struct hc_driver *driver, if (retval) goto err3; + device_wakeup_enable(hcd->self.controller); return 0; err3: iounmap(hcd->regs); diff --git a/drivers/usb/host/ohci-omap3.c b/drivers/usb/host/ohci-omap3.c index 21457417a856..ec15aebe8786 100644 --- a/drivers/usb/host/ohci-omap3.c +++ b/drivers/usb/host/ohci-omap3.c @@ -130,6 +130,7 @@ static int ohci_hcd_omap3_probe(struct platform_device *pdev) dev_dbg(dev, "failed to add hcd with err %d\n", ret); goto err_add_hcd; } + device_wakeup_enable(hcd->self.controller); return 0; diff --git a/drivers/usb/host/ohci-platform.c b/drivers/usb/host/ohci-platform.c index f351ff5b171f..68f674cd095f 100644 --- a/drivers/usb/host/ohci-platform.c +++ b/drivers/usb/host/ohci-platform.c @@ -108,6 +108,8 @@ static int ohci_platform_probe(struct platform_device *dev) if (err) goto err_put_hcd; + device_wakeup_enable(hcd->self.controller); + platform_set_drvdata(dev, hcd); return err; diff --git a/drivers/usb/host/ohci-ppc-of.c b/drivers/usb/host/ohci-ppc-of.c index 81f3eba215c1..83e33d464082 100644 --- a/drivers/usb/host/ohci-ppc-of.c +++ b/drivers/usb/host/ohci-ppc-of.c @@ -147,8 +147,10 @@ static int ohci_hcd_ppc_of_probe(struct platform_device *op) ohci_hcd_init(ohci); rv = usb_add_hcd(hcd, irq, 0); - if (rv == 0) + if (rv == 0) { + device_wakeup_enable(hcd->self.controller); return 0; + } /* by now, 440epx is known to show usb_23 erratum */ np = of_find_compatible_node(NULL, NULL, "ibm,usb-ehci-440epx"); diff --git a/drivers/usb/host/ohci-ps3.c b/drivers/usb/host/ohci-ps3.c index 7d35cd9e2862..71d8bc4c27f6 100644 --- a/drivers/usb/host/ohci-ps3.c +++ b/drivers/usb/host/ohci-ps3.c @@ -173,6 +173,7 @@ static int ps3_ohci_probe(struct ps3_system_bus_device *dev) goto fail_add_hcd; } + device_wakeup_enable(hcd->self.controller); return result; fail_add_hcd: diff --git a/drivers/usb/host/ohci-pxa27x.c b/drivers/usb/host/ohci-pxa27x.c index e89ac4d4b87e..5343ecfdddfa 100644 --- a/drivers/usb/host/ohci-pxa27x.c +++ b/drivers/usb/host/ohci-pxa27x.c @@ -442,8 +442,10 @@ int usb_hcd_pxa27x_probe (const struct hc_driver *driver, struct platform_device ohci->num_ports = 3; retval = usb_add_hcd(hcd, irq, 0); - if (retval == 0) + if (retval == 0) { + device_wakeup_enable(hcd->self.controller); return retval; + } pxa27x_stop_hc(pxa_ohci, &pdev->dev); err3: diff --git a/drivers/usb/host/ohci-s3c2410.c b/drivers/usb/host/ohci-s3c2410.c index 83cd1dcd5145..ff7c8f1c48fb 100644 --- a/drivers/usb/host/ohci-s3c2410.c +++ b/drivers/usb/host/ohci-s3c2410.c @@ -395,6 +395,7 @@ static int usb_hcd_s3c2410_probe(const struct hc_driver *driver, if (retval != 0) goto err_ioremap; + device_wakeup_enable(hcd->self.controller); return 0; err_ioremap: diff --git a/drivers/usb/host/ohci-sa1111.c b/drivers/usb/host/ohci-sa1111.c index aa9e127bbe71..2ac266d692a2 100644 --- a/drivers/usb/host/ohci-sa1111.c +++ b/drivers/usb/host/ohci-sa1111.c @@ -211,8 +211,10 @@ static int ohci_hcd_sa1111_probe(struct sa1111_dev *dev) goto err2; ret = usb_add_hcd(hcd, dev->irq[1], 0); - if (ret == 0) + if (ret == 0) { + device_wakeup_enable(hcd->self.controller); return ret; + } sa1111_stop_hc(dev); err2: diff --git a/drivers/usb/host/ohci-sm501.c b/drivers/usb/host/ohci-sm501.c index 2a5de5fecd8f..4e81c804c73e 100644 --- a/drivers/usb/host/ohci-sm501.c +++ b/drivers/usb/host/ohci-sm501.c @@ -168,6 +168,7 @@ static int ohci_hcd_sm501_drv_probe(struct platform_device *pdev) retval = usb_add_hcd(hcd, irq, IRQF_SHARED); if (retval) goto err5; + device_wakeup_enable(hcd->self.controller); /* enable power and unmask interrupts */ diff --git a/drivers/usb/host/ohci-spear.c b/drivers/usb/host/ohci-spear.c index e418c192e23a..4cb98abc0bef 100644 --- a/drivers/usb/host/ohci-spear.c +++ b/drivers/usb/host/ohci-spear.c @@ -103,8 +103,10 @@ static int spear_ohci_hcd_drv_probe(struct platform_device *pdev) ohci = hcd_to_ohci(hcd); retval = usb_add_hcd(hcd, platform_get_irq(pdev, 0), 0); - if (retval == 0) + if (retval == 0) { + device_wakeup_enable(hcd->self.controller); return retval; + } clk_disable_unprepare(sohci_p->clk); err_put_hcd: diff --git a/drivers/usb/host/ohci-tilegx.c b/drivers/usb/host/ohci-tilegx.c index 22540ab71f55..0b183e0b0a8a 100644 --- a/drivers/usb/host/ohci-tilegx.c +++ b/drivers/usb/host/ohci-tilegx.c @@ -159,6 +159,7 @@ static int ohci_hcd_tilegx_drv_probe(struct platform_device *pdev) ret = usb_add_hcd(hcd, pdata->irq, IRQF_SHARED); if (ret == 0) { platform_set_drvdata(pdev, hcd); + device_wakeup_enable(hcd->self.controller); return ret; } diff --git a/drivers/usb/host/ohci-tmio.c b/drivers/usb/host/ohci-tmio.c index ecb09a5ada9c..9c44093b8e1e 100644 --- a/drivers/usb/host/ohci-tmio.c +++ b/drivers/usb/host/ohci-tmio.c @@ -250,6 +250,7 @@ static int ohci_hcd_tmio_drv_probe(struct platform_device *dev) if (ret) goto err_add_hcd; + device_wakeup_enable(hcd->self.controller); if (ret == 0) return ret; diff --git a/drivers/usb/host/oxu210hp-hcd.c b/drivers/usb/host/oxu210hp-hcd.c index 4a05148ee79b..778eeaf2dd14 100644 --- a/drivers/usb/host/oxu210hp-hcd.c +++ b/drivers/usb/host/oxu210hp-hcd.c @@ -3751,6 +3751,7 @@ static struct usb_hcd *oxu_create(struct platform_device *pdev, if (ret < 0) return ERR_PTR(ret); + device_wakeup_enable(hcd->self.controller); return hcd; } diff --git a/drivers/usb/host/r8a66597-hcd.c b/drivers/usb/host/r8a66597-hcd.c index 3bddfcfafb79..47b1322c7a77 100644 --- a/drivers/usb/host/r8a66597-hcd.c +++ b/drivers/usb/host/r8a66597-hcd.c @@ -2514,6 +2514,7 @@ static int r8a66597_probe(struct platform_device *pdev) dev_err(&pdev->dev, "Failed to add hcd\n"); goto clean_up3; } + device_wakeup_enable(hcd->self.controller); return 0; diff --git a/drivers/usb/host/sl811-hcd.c b/drivers/usb/host/sl811-hcd.c index 79620c39217e..0115e7f51d94 100644 --- a/drivers/usb/host/sl811-hcd.c +++ b/drivers/usb/host/sl811-hcd.c @@ -1732,6 +1732,8 @@ sl811h_probe(struct platform_device *dev) if (retval != 0) goto err6; + device_wakeup_enable(hcd->self.controller); + create_debug_file(sl811); return retval; diff --git a/drivers/usb/host/u132-hcd.c b/drivers/usb/host/u132-hcd.c index 46236e9fc87f..c0671750671f 100644 --- a/drivers/usb/host/u132-hcd.c +++ b/drivers/usb/host/u132-hcd.c @@ -3133,6 +3133,7 @@ static int u132_probe(struct platform_device *pdev) u132_u132_put_kref(u132); return retval; } else { + device_wakeup_enable(hcd->self.controller); u132_monitor_queue_work(u132, 100); return 0; } diff --git a/drivers/usb/host/uhci-grlib.c b/drivers/usb/host/uhci-grlib.c index 53c23ff7d685..ab25dc397e8b 100644 --- a/drivers/usb/host/uhci-grlib.c +++ b/drivers/usb/host/uhci-grlib.c @@ -141,6 +141,7 @@ static int uhci_hcd_grlib_probe(struct platform_device *op) if (rv) goto err_uhci; + device_wakeup_enable(hcd->self.controller); return 0; err_uhci: diff --git a/drivers/usb/host/uhci-platform.c b/drivers/usb/host/uhci-platform.c index 3003fefaa964..44e6c9da8892 100644 --- a/drivers/usb/host/uhci-platform.c +++ b/drivers/usb/host/uhci-platform.c @@ -108,6 +108,7 @@ static int uhci_hcd_platform_probe(struct platform_device *pdev) if (ret) goto err_uhci; + device_wakeup_enable(hcd->self.controller); return 0; err_uhci: diff --git a/drivers/usb/host/whci/hcd.c b/drivers/usb/host/whci/hcd.c index 1b0888f8da9a..d7b363a418de 100644 --- a/drivers/usb/host/whci/hcd.c +++ b/drivers/usb/host/whci/hcd.c @@ -293,6 +293,7 @@ static int whc_probe(struct umc_dev *umc) dev_err(dev, "cannot add HCD: %d\n", ret); goto error_usb_add_hcd; } + device_wakeup_enable(usb_hcd->self.controller); ret = wusbhc_b_create(wusbhc); if (ret) { diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c index d9c169f470d3..9d29aa1b1bc8 100644 --- a/drivers/usb/host/xhci-plat.c +++ b/drivers/usb/host/xhci-plat.c @@ -139,6 +139,7 @@ static int xhci_plat_probe(struct platform_device *pdev) ret = usb_add_hcd(hcd, irq, IRQF_SHARED); if (ret) goto unmap_registers; + device_wakeup_enable(hcd->self.controller); /* USB 2.0 roothub is stored in the platform_device now. */ hcd = platform_get_drvdata(pdev); diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c index 6582a20bec05..e2083757e87c 100644 --- a/drivers/usb/musb/musb_host.c +++ b/drivers/usb/musb/musb_host.c @@ -2657,6 +2657,7 @@ int musb_host_setup(struct musb *musb, int power_budget) if (ret < 0) return ret; + device_wakeup_enable(hcd->self.controller); return 0; } diff --git a/drivers/usb/phy/phy-msm-usb.c b/drivers/usb/phy/phy-msm-usb.c index e9d4cd960ecd..37752832b770 100644 --- a/drivers/usb/phy/phy-msm-usb.c +++ b/drivers/usb/phy/phy-msm-usb.c @@ -669,6 +669,7 @@ static void msm_otg_start_host(struct usb_phy *phy, int on) pdata->setup_gpio(OTG_STATE_A_HOST); #ifdef CONFIG_USB usb_add_hcd(hcd, hcd->irq, IRQF_SHARED); + device_wakeup_enable(hcd->self.controller); #endif } else { dev_dbg(phy->dev, "host off\n"); diff --git a/drivers/usb/phy/phy-mv-usb.c b/drivers/usb/phy/phy-mv-usb.c index 98f6ac6a78ea..44f316e287ef 100644 --- a/drivers/usb/phy/phy-mv-usb.c +++ b/drivers/usb/phy/phy-mv-usb.c @@ -213,10 +213,12 @@ static void mv_otg_start_host(struct mv_otg *mvotg, int on) hcd = bus_to_hcd(otg->host); - if (on) + if (on) { usb_add_hcd(hcd, hcd->irq, IRQF_SHARED); - else + device_wakeup_enable(hcd->self.controller); + } else { usb_remove_hcd(hcd); + } #endif /* CONFIG_USB */ } diff --git a/drivers/usb/renesas_usbhs/mod_host.c b/drivers/usb/renesas_usbhs/mod_host.c index e40f565004d0..10e1ded9c9cc 100644 --- a/drivers/usb/renesas_usbhs/mod_host.c +++ b/drivers/usb/renesas_usbhs/mod_host.c @@ -1469,6 +1469,7 @@ static int usbhsh_start(struct usbhs_priv *priv) ret = usb_add_hcd(hcd, 0, 0); if (ret < 0) return 0; + device_wakeup_enable(hcd->self.controller); /* * pipe initialize and enable DCP From e0e6a356a0b41375b729c511caa99d3ec019640e Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Fri, 6 Dec 2013 16:09:27 +0100 Subject: [PATCH 71/81] Revert "USB: quirks: add touchscreen that is dazzeled by remote wakeup" This reverts commit 614ced91fc6fbb5a1cdd12f0f1b6c9197d9f1350. The units on this was seen were prototypes and the issue is not seen on younger units. Signed-off-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman --- drivers/usb/core/quirks.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c index 12924dbfdc2c..8f37063c0a49 100644 --- a/drivers/usb/core/quirks.c +++ b/drivers/usb/core/quirks.c @@ -98,9 +98,6 @@ static const struct usb_device_id usb_quirk_list[] = { /* Alcor Micro Corp. Hub */ { USB_DEVICE(0x058f, 0x9254), .driver_info = USB_QUIRK_RESET_RESUME }, - /* MicroTouch Systems touchscreen */ - { USB_DEVICE(0x0596, 0x051e), .driver_info = USB_QUIRK_RESET_RESUME }, - /* appletouch */ { USB_DEVICE(0x05ac, 0x021a), .driver_info = USB_QUIRK_RESET_RESUME }, From 7005234c18f233d3613b09e9ce4b6ce6977bf246 Mon Sep 17 00:00:00 2001 From: Thomas Pugliese Date: Mon, 9 Dec 2013 13:10:41 -0600 Subject: [PATCH 72/81] usb: wusbcore: fix short transfers If a URB is broken up into multiple transfer segments and a short transfer occurs in any segment other than the last, the URB will currently get stuck in the driver forever. This patch adds a check for a short transfer and cleans up any pending segments so the URB can complete properly. Signed-off-by: Thomas Pugliese Signed-off-by: Greg Kroah-Hartman --- drivers/usb/wusbcore/wa-xfer.c | 128 +++++++++++++++++++-------------- 1 file changed, 74 insertions(+), 54 deletions(-) diff --git a/drivers/usb/wusbcore/wa-xfer.c b/drivers/usb/wusbcore/wa-xfer.c index a88b8c68ce78..673ad80c1b55 100644 --- a/drivers/usb/wusbcore/wa-xfer.c +++ b/drivers/usb/wusbcore/wa-xfer.c @@ -1993,7 +1993,7 @@ static int wa_xfer_status_to_errno(u8 status) * the xfer will complete cleanly. */ static void wa_complete_remaining_xfer_segs(struct wa_xfer *xfer, - struct wa_seg *incoming_seg) + struct wa_seg *incoming_seg, enum wa_seg_status status) { int index; struct wa_rpipe *rpipe = xfer->ep->hcpriv; @@ -2015,7 +2015,7 @@ static void wa_complete_remaining_xfer_segs(struct wa_xfer *xfer, */ case WA_SEG_DELAYED: xfer->segs_done++; - current_seg->status = incoming_seg->status; + current_seg->status = status; break; case WA_SEG_ABORTED: break; @@ -2028,6 +2028,58 @@ static void wa_complete_remaining_xfer_segs(struct wa_xfer *xfer, } } +/* Populate the wa->buf_in_urb based on the current transfer state. */ +static int wa_populate_buf_in_urb(struct wahc *wa, struct wa_xfer *xfer, + unsigned int seg_idx, unsigned int bytes_transferred) +{ + int result = 0; + struct wa_seg *seg = xfer->seg[seg_idx]; + + BUG_ON(wa->buf_in_urb->status == -EINPROGRESS); + /* this should always be 0 before a resubmit. */ + wa->buf_in_urb->num_mapped_sgs = 0; + + if (xfer->is_dma) { + wa->buf_in_urb->transfer_dma = xfer->urb->transfer_dma + + (seg_idx * xfer->seg_size); + wa->buf_in_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; + wa->buf_in_urb->transfer_buffer = NULL; + wa->buf_in_urb->sg = NULL; + wa->buf_in_urb->num_sgs = 0; + } else { + /* do buffer or SG processing. */ + wa->buf_in_urb->transfer_flags &= ~URB_NO_TRANSFER_DMA_MAP; + + if (xfer->urb->transfer_buffer) { + wa->buf_in_urb->transfer_buffer = + xfer->urb->transfer_buffer + + (seg_idx * xfer->seg_size); + wa->buf_in_urb->sg = NULL; + wa->buf_in_urb->num_sgs = 0; + } else { + /* allocate an SG list to store seg_size bytes + and copy the subset of the xfer->urb->sg + that matches the buffer subset we are + about to read. */ + wa->buf_in_urb->sg = wa_xfer_create_subset_sg( + xfer->urb->sg, + seg_idx * xfer->seg_size, + bytes_transferred, + &(wa->buf_in_urb->num_sgs)); + + if (!(wa->buf_in_urb->sg)) { + wa->buf_in_urb->num_sgs = 0; + result = -ENOMEM; + } + wa->buf_in_urb->transfer_buffer = NULL; + } + } + wa->buf_in_urb->transfer_buffer_length = bytes_transferred; + wa->buf_in_urb->context = seg; + + return result; +} + /* * Process a xfer result completion message * @@ -2041,12 +2093,13 @@ static void wa_xfer_result_chew(struct wahc *wa, struct wa_xfer *xfer, int result; struct device *dev = &wa->usb_iface->dev; unsigned long flags; - u8 seg_idx; + unsigned int seg_idx; struct wa_seg *seg; struct wa_rpipe *rpipe; unsigned done = 0; u8 usb_status; unsigned rpipe_ready = 0; + unsigned bytes_transferred = le32_to_cpu(xfer_result->dwTransferLength); spin_lock_irqsave(&xfer->lock, flags); seg_idx = xfer_result->bTransferSegment & 0x7f; @@ -2079,66 +2132,33 @@ static void wa_xfer_result_chew(struct wahc *wa, struct wa_xfer *xfer, /* FIXME: we ignore warnings, tally them for stats */ if (usb_status & 0x40) /* Warning?... */ usb_status = 0; /* ... pass */ + /* + * If the last segment bit is set, complete the remaining segments. + * When the current segment is completed, either in wa_buf_in_cb for + * transfers with data or below for no data, the xfer will complete. + */ + if (xfer_result->bTransferSegment & 0x80) + wa_complete_remaining_xfer_segs(xfer, seg, WA_SEG_DONE); if (usb_pipeisoc(xfer->urb->pipe)) { /* set up WA state to read the isoc packet status next. */ wa->dti_isoc_xfer_in_progress = wa_xfer_id(xfer); wa->dti_isoc_xfer_seg = seg_idx; wa->dti_state = WA_DTI_ISOC_PACKET_STATUS_PENDING; - } else if (xfer->is_inbound) { /* IN data phase: read to buffer */ + } else if ((xfer->is_inbound) + && (bytes_transferred > 0)) { + /* IN data phase: read to buffer */ seg->status = WA_SEG_DTI_PENDING; - BUG_ON(wa->buf_in_urb->status == -EINPROGRESS); - /* this should always be 0 before a resubmit. */ - wa->buf_in_urb->num_mapped_sgs = 0; - - if (xfer->is_dma) { - wa->buf_in_urb->transfer_dma = - xfer->urb->transfer_dma - + (seg_idx * xfer->seg_size); - wa->buf_in_urb->transfer_flags - |= URB_NO_TRANSFER_DMA_MAP; - wa->buf_in_urb->transfer_buffer = NULL; - wa->buf_in_urb->sg = NULL; - wa->buf_in_urb->num_sgs = 0; - } else { - /* do buffer or SG processing. */ - wa->buf_in_urb->transfer_flags - &= ~URB_NO_TRANSFER_DMA_MAP; - - if (xfer->urb->transfer_buffer) { - wa->buf_in_urb->transfer_buffer = - xfer->urb->transfer_buffer - + (seg_idx * xfer->seg_size); - wa->buf_in_urb->sg = NULL; - wa->buf_in_urb->num_sgs = 0; - } else { - /* allocate an SG list to store seg_size bytes - and copy the subset of the xfer->urb->sg - that matches the buffer subset we are - about to read. */ - wa->buf_in_urb->sg = wa_xfer_create_subset_sg( - xfer->urb->sg, - seg_idx * xfer->seg_size, - le32_to_cpu( - xfer_result->dwTransferLength), - &(wa->buf_in_urb->num_sgs)); - - if (!(wa->buf_in_urb->sg)) { - wa->buf_in_urb->num_sgs = 0; - goto error_sg_alloc; - } - wa->buf_in_urb->transfer_buffer = NULL; - } - } - wa->buf_in_urb->transfer_buffer_length = - le32_to_cpu(xfer_result->dwTransferLength); - wa->buf_in_urb->context = seg; + result = wa_populate_buf_in_urb(wa, xfer, seg_idx, + bytes_transferred); + if (result < 0) + goto error_buf_in_populate; result = usb_submit_urb(wa->buf_in_urb, GFP_ATOMIC); if (result < 0) goto error_submit_buf_in; } else { - /* OUT data phase, complete it -- */ + /* OUT data phase or no data, complete it -- */ seg->status = WA_SEG_DONE; - seg->result = le32_to_cpu(xfer_result->dwTransferLength); + seg->result = bytes_transferred; xfer->segs_done++; rpipe_ready = rpipe_avail_inc(rpipe); done = __wa_xfer_is_done(xfer); @@ -2162,13 +2182,13 @@ static void wa_xfer_result_chew(struct wahc *wa, struct wa_xfer *xfer, seg->result = result; kfree(wa->buf_in_urb->sg); wa->buf_in_urb->sg = NULL; -error_sg_alloc: +error_buf_in_populate: __wa_xfer_abort(xfer); seg->status = WA_SEG_ERROR; error_complete: xfer->segs_done++; rpipe_ready = rpipe_avail_inc(rpipe); - wa_complete_remaining_xfer_segs(xfer, seg); + wa_complete_remaining_xfer_segs(xfer, seg, seg->status); done = __wa_xfer_is_done(xfer); /* * queue work item to clear STALL for control endpoints. From a2cd612dc9be768b516541b2164c843849bc3bb3 Mon Sep 17 00:00:00 2001 From: Thomas Pugliese Date: Mon, 9 Dec 2013 13:45:43 -0600 Subject: [PATCH 73/81] usb: core: allow isoc URBs for wireless devices with an interval < 6 In usb_submit_urb, do not fail if an isoc URB for a wireless USB device has an interval < 6. Per WUSB spec, isoc endpoints can support values from 1-16. Valid values for interrupt URBs for wireless USB devices are still 6-16. Signed-off-by: Thomas Pugliese Signed-off-by: Greg Kroah-Hartman --- drivers/usb/core/urb.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/usb/core/urb.c b/drivers/usb/core/urb.c index e62208356c89..07c58af6b5c0 100644 --- a/drivers/usb/core/urb.c +++ b/drivers/usb/core/urb.c @@ -492,9 +492,9 @@ int usb_submit_urb(struct urb *urb, gfp_t mem_flags) /* too small? */ switch (dev->speed) { case USB_SPEED_WIRELESS: - if (urb->interval < 6) + if ((urb->interval < 6) + && (xfertype == USB_ENDPOINT_XFER_INT)) return -EINVAL; - break; default: if (urb->interval <= 0) return -EINVAL; From 83e83ecb79a8225e79bc8e54e9aff3e0e27658a2 Mon Sep 17 00:00:00 2001 From: Thomas Pugliese Date: Mon, 9 Dec 2013 13:40:29 -0600 Subject: [PATCH 74/81] usb: core: get config and string descriptors for unauthorized devices There is no need to skip querying the config and string descriptors for unauthorized WUSB devices when usb_new_device is called. It is allowed by WUSB spec. The only action that needs to be delayed until authorization time is the set config. This change allows user mode tools to see the config and string descriptors earlier in enumeration which is needed for some WUSB devices to function properly on Android systems. It also reduces the amount of divergent code paths needed for WUSB devices. Signed-off-by: Thomas Pugliese Signed-off-by: Greg Kroah-Hartman --- drivers/usb/core/config.c | 7 ------- drivers/usb/core/hub.c | 39 +++++++-------------------------------- 2 files changed, 7 insertions(+), 39 deletions(-) diff --git a/drivers/usb/core/config.c b/drivers/usb/core/config.c index a6b2cabe7930..548d1996590f 100644 --- a/drivers/usb/core/config.c +++ b/drivers/usb/core/config.c @@ -651,10 +651,6 @@ void usb_destroy_configuration(struct usb_device *dev) * * hub-only!! ... and only in reset path, or usb_new_device() * (used by real hubs and virtual root hubs) - * - * NOTE: if this is a WUSB device and is not authorized, we skip the - * whole thing. A non-authorized USB device has no - * configurations. */ int usb_get_configuration(struct usb_device *dev) { @@ -666,8 +662,6 @@ int usb_get_configuration(struct usb_device *dev) struct usb_config_descriptor *desc; cfgno = 0; - if (dev->authorized == 0) /* Not really an error */ - goto out_not_authorized; result = -ENOMEM; if (ncfg > USB_MAXCONFIG) { dev_warn(ddev, "too many configurations: %d, " @@ -751,7 +745,6 @@ int usb_get_configuration(struct usb_device *dev) err: kfree(desc); -out_not_authorized: dev->descriptor.bNumConfigurations = cfgno; err2: if (result == -ENOMEM) diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index a7c04e24ca48..32e1035d4f59 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -2235,17 +2235,13 @@ static int usb_enumerate_device(struct usb_device *udev) return err; } } - if (udev->wusb == 1 && udev->authorized == 0) { - udev->product = kstrdup("n/a (unauthorized)", GFP_KERNEL); - udev->manufacturer = kstrdup("n/a (unauthorized)", GFP_KERNEL); - udev->serial = kstrdup("n/a (unauthorized)", GFP_KERNEL); - } else { - /* read the standard strings and cache them if present */ - udev->product = usb_cache_string(udev, udev->descriptor.iProduct); - udev->manufacturer = usb_cache_string(udev, - udev->descriptor.iManufacturer); - udev->serial = usb_cache_string(udev, udev->descriptor.iSerialNumber); - } + + /* read the standard strings and cache them if present */ + udev->product = usb_cache_string(udev, udev->descriptor.iProduct); + udev->manufacturer = usb_cache_string(udev, + udev->descriptor.iManufacturer); + udev->serial = usb_cache_string(udev, udev->descriptor.iSerialNumber); + err = usb_enumerate_device_otg(udev); if (err < 0) return err; @@ -2427,16 +2423,6 @@ int usb_deauthorize_device(struct usb_device *usb_dev) usb_dev->authorized = 0; usb_set_configuration(usb_dev, -1); - kfree(usb_dev->product); - usb_dev->product = kstrdup("n/a (unauthorized)", GFP_KERNEL); - kfree(usb_dev->manufacturer); - usb_dev->manufacturer = kstrdup("n/a (unauthorized)", GFP_KERNEL); - kfree(usb_dev->serial); - usb_dev->serial = kstrdup("n/a (unauthorized)", GFP_KERNEL); - - usb_destroy_configuration(usb_dev); - usb_dev->descriptor.bNumConfigurations = 0; - out_unauthorized: usb_unlock_device(usb_dev); return 0; @@ -2464,17 +2450,7 @@ int usb_authorize_device(struct usb_device *usb_dev) goto error_device_descriptor; } - kfree(usb_dev->product); - usb_dev->product = NULL; - kfree(usb_dev->manufacturer); - usb_dev->manufacturer = NULL; - kfree(usb_dev->serial); - usb_dev->serial = NULL; - usb_dev->authorized = 1; - result = usb_enumerate_device(usb_dev); - if (result < 0) - goto error_enumerate; /* Choose and set the configuration. This registers the interfaces * with the driver core and lets interface drivers bind to them. */ @@ -2490,7 +2466,6 @@ int usb_authorize_device(struct usb_device *usb_dev) } dev_info(&usb_dev->dev, "authorized to connect\n"); -error_enumerate: error_device_descriptor: usb_autosuspend_device(usb_dev); error_autoresume: From 7b3e3740f2d0faca9351db88974be534009a3d8d Mon Sep 17 00:00:00 2001 From: Thomas Pugliese Date: Mon, 9 Dec 2013 13:19:08 -0600 Subject: [PATCH 75/81] usb: wusbcore: use USB_CTRL_SET_TIMEOUT and USB_CTRL_GET_TIMEOUT Use USB_CTRL_SET_TIMEOUT and USB_CTRL_GET_TIMEOUT for USB control messages instead of an arbitrary 1s timeout value. This is particularly useful for WUSB since in the worst case RF scanario, a WUSB device can be unresponsive for up to 4s and still be connected. Signed-off-by: Thomas Pugliese Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/hwa-hc.c | 20 ++++++++++---------- drivers/usb/wusbcore/cbaf.c | 8 ++++---- drivers/usb/wusbcore/security.c | 22 ++++++++++++---------- drivers/usb/wusbcore/wa-hc.h | 5 ++--- drivers/usb/wusbcore/wa-rpipe.c | 10 +++++----- 5 files changed, 33 insertions(+), 32 deletions(-) diff --git a/drivers/usb/host/hwa-hc.c b/drivers/usb/host/hwa-hc.c index 7fd3f9bd7b83..f0b97bb08791 100644 --- a/drivers/usb/host/hwa-hc.c +++ b/drivers/usb/host/hwa-hc.c @@ -86,7 +86,7 @@ static int __hwahc_set_cluster_id(struct hwahc *hwahc, u8 cluster_id) USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE, cluster_id, wa->usb_iface->cur_altsetting->desc.bInterfaceNumber, - NULL, 0, 1000 /* FIXME: arbitrary */); + NULL, 0, USB_CTRL_SET_TIMEOUT); if (result < 0) dev_err(dev, "Cannot set WUSB Cluster ID to 0x%02x: %d\n", cluster_id, result); @@ -106,7 +106,7 @@ static int __hwahc_op_set_num_dnts(struct wusbhc *wusbhc, u8 interval, u8 slots) USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE, interval << 8 | slots, wa->usb_iface->cur_altsetting->desc.bInterfaceNumber, - NULL, 0, 1000 /* FIXME: arbitrary */); + NULL, 0, USB_CTRL_SET_TIMEOUT); } /* @@ -281,7 +281,7 @@ static void __hwahc_op_wusbhc_stop(struct wusbhc *wusbhc, int delay) USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE, delay * 1000, iface_no, - NULL, 0, 1000 /* FIXME: arbitrary */); + NULL, 0, USB_CTRL_SET_TIMEOUT); if (ret == 0) msleep(delay); @@ -310,7 +310,7 @@ static int __hwahc_op_bwa_set(struct wusbhc *wusbhc, s8 stream_index, USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE, stream_index, wa->usb_iface->cur_altsetting->desc.bInterfaceNumber, - NULL, 0, 1000 /* FIXME: arbitrary */); + NULL, 0, USB_CTRL_SET_TIMEOUT); if (result < 0) { dev_err(dev, "Cannot set WUSB stream index: %d\n", result); goto out; @@ -321,7 +321,7 @@ static int __hwahc_op_bwa_set(struct wusbhc *wusbhc, s8 stream_index, WUSB_REQ_SET_WUSB_MAS, USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE, 0, wa->usb_iface->cur_altsetting->desc.bInterfaceNumber, - mas_le, 32, 1000 /* FIXME: arbitrary */); + mas_le, 32, USB_CTRL_SET_TIMEOUT); if (result < 0) dev_err(dev, "Cannot set WUSB MAS allocation: %d\n", result); out: @@ -355,7 +355,7 @@ static int __hwahc_op_mmcie_add(struct wusbhc *wusbhc, u8 interval, USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE, interval << 8 | repeat_cnt, handle << 8 | iface_no, - wuie, wuie->bLength, 1000 /* FIXME: arbitrary */); + wuie, wuie->bLength, USB_CTRL_SET_TIMEOUT); } /* @@ -372,7 +372,7 @@ static int __hwahc_op_mmcie_rm(struct wusbhc *wusbhc, u8 handle) WUSB_REQ_REMOVE_MMC_IE, USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE, 0, handle << 8 | iface_no, - NULL, 0, 1000 /* FIXME: arbitrary */); + NULL, 0, USB_CTRL_SET_TIMEOUT); } /* @@ -415,7 +415,7 @@ static int __hwahc_op_dev_info_set(struct wusbhc *wusbhc, USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE, 0, wusb_dev->port_idx << 8 | iface_no, dev_info, sizeof(struct hwa_dev_info), - 1000 /* FIXME: arbitrary */); + USB_CTRL_SET_TIMEOUT); kfree(dev_info); return ret; } @@ -455,7 +455,7 @@ static int __hwahc_dev_set_key(struct wusbhc *wusbhc, u8 port_idx, u32 tkid, USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE, USB_DT_KEY << 8 | key_idx, port_idx << 8 | iface_no, - keyd, keyd_len, 1000 /* FIXME: arbitrary */); + keyd, keyd_len, USB_CTRL_SET_TIMEOUT); kzfree(keyd); /* clear keys etc. */ return result; @@ -497,7 +497,7 @@ static int __hwahc_op_set_ptk(struct wusbhc *wusbhc, u8 port_idx, u32 tkid, USB_REQ_SET_ENCRYPTION, USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE, encryption_value, port_idx << 8 | iface_no, - NULL, 0, 1000 /* FIXME: arbitrary */); + NULL, 0, USB_CTRL_SET_TIMEOUT); if (result < 0) dev_err(wusbhc->dev, "Can't set host's WUSB encryption for " "port index %u to %s (value %d): %d\n", port_idx, diff --git a/drivers/usb/wusbcore/cbaf.c b/drivers/usb/wusbcore/cbaf.c index f06ed82e63d1..56310fc9b9c3 100644 --- a/drivers/usb/wusbcore/cbaf.c +++ b/drivers/usb/wusbcore/cbaf.c @@ -144,7 +144,7 @@ static int cbaf_check(struct cbaf *cbaf) CBAF_REQ_GET_ASSOCIATION_INFORMATION, USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE, 0, cbaf->usb_iface->cur_altsetting->desc.bInterfaceNumber, - cbaf->buffer, cbaf->buffer_size, 1000 /* FIXME: arbitrary */); + cbaf->buffer, cbaf->buffer_size, USB_CTRL_GET_TIMEOUT); if (result < 0) { dev_err(dev, "Cannot get available association types: %d\n", result); @@ -265,7 +265,7 @@ static int cbaf_send_host_info(struct cbaf *cbaf) USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE, 0x0101, cbaf->usb_iface->cur_altsetting->desc.bInterfaceNumber, - hi, hi_size, 1000 /* FIXME: arbitrary */); + hi, hi_size, USB_CTRL_SET_TIMEOUT); } /* @@ -288,7 +288,7 @@ static int cbaf_cdid_get(struct cbaf *cbaf) CBAF_REQ_GET_ASSOCIATION_REQUEST, USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE, 0x0200, cbaf->usb_iface->cur_altsetting->desc.bInterfaceNumber, - di, cbaf->buffer_size, 1000 /* FIXME: arbitrary */); + di, cbaf->buffer_size, USB_CTRL_GET_TIMEOUT); if (result < 0) { dev_err(dev, "Cannot request device information: %d\n", result); return result; @@ -536,7 +536,7 @@ static int cbaf_cc_upload(struct cbaf *cbaf) CBAF_REQ_SET_ASSOCIATION_RESPONSE, USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE, 0x0201, cbaf->usb_iface->cur_altsetting->desc.bInterfaceNumber, - ccd, sizeof(*ccd), 1000 /* FIXME: arbitrary */); + ccd, sizeof(*ccd), USB_CTRL_SET_TIMEOUT); return result; } diff --git a/drivers/usb/wusbcore/security.c b/drivers/usb/wusbcore/security.c index dd88441c8f78..66655e8f2308 100644 --- a/drivers/usb/wusbcore/security.c +++ b/drivers/usb/wusbcore/security.c @@ -168,7 +168,7 @@ static int wusb_dev_set_encryption(struct usb_device *usb_dev, int value) result = usb_control_msg(usb_dev, usb_sndctrlpipe(usb_dev, 0), USB_REQ_SET_ENCRYPTION, USB_DIR_OUT | USB_TYPE_STANDARD | USB_RECIP_DEVICE, - value, 0, NULL, 0, 1000 /* FIXME: arbitrary */); + value, 0, NULL, 0, USB_CTRL_SET_TIMEOUT); if (result < 0) dev_err(dev, "Can't set device's WUSB encryption to " "%s (value %d): %d\n", @@ -192,7 +192,7 @@ static int wusb_dev_set_gtk(struct wusbhc *wusbhc, struct wusb_dev *wusb_dev) USB_DIR_OUT | USB_TYPE_STANDARD | USB_RECIP_DEVICE, USB_DT_KEY << 8 | wusbhc->gtk_index, 0, &wusbhc->gtk.descr, wusbhc->gtk.descr.bLength, - 1000); + USB_CTRL_SET_TIMEOUT); } @@ -302,8 +302,9 @@ int wusb_dev_update_address(struct wusbhc *wusbhc, struct wusb_dev *wusb_dev) /* Set address 0 */ result = usb_control_msg(usb_dev, usb_sndctrlpipe(usb_dev, 0), - USB_REQ_SET_ADDRESS, 0, - 0, 0, NULL, 0, 1000 /* FIXME: arbitrary */); + USB_REQ_SET_ADDRESS, + USB_DIR_OUT | USB_TYPE_STANDARD | USB_RECIP_DEVICE, + 0, 0, NULL, 0, USB_CTRL_SET_TIMEOUT); if (result < 0) { dev_err(dev, "auth failed: can't set address 0: %d\n", result); @@ -317,9 +318,10 @@ int wusb_dev_update_address(struct wusbhc *wusbhc, struct wusb_dev *wusb_dev) /* Set new (authenticated) address. */ result = usb_control_msg(usb_dev, usb_sndctrlpipe(usb_dev, 0), - USB_REQ_SET_ADDRESS, 0, - new_address, 0, NULL, 0, - 1000 /* FIXME: arbitrary */); + USB_REQ_SET_ADDRESS, + USB_DIR_OUT | USB_TYPE_STANDARD | USB_RECIP_DEVICE, + new_address, 0, NULL, 0, + USB_CTRL_SET_TIMEOUT); if (result < 0) { dev_err(dev, "auth failed: can't set address %u: %d\n", new_address, result); @@ -382,7 +384,7 @@ int wusb_dev_4way_handshake(struct wusbhc *wusbhc, struct wusb_dev *wusb_dev, usb_dev, usb_sndctrlpipe(usb_dev, 0), USB_REQ_SET_HANDSHAKE, USB_DIR_OUT | USB_TYPE_STANDARD | USB_RECIP_DEVICE, - 1, 0, &hs[0], sizeof(hs[0]), 1000 /* FIXME: arbitrary */); + 1, 0, &hs[0], sizeof(hs[0]), USB_CTRL_SET_TIMEOUT); if (result < 0) { dev_err(dev, "Handshake1: request failed: %d\n", result); goto error_hs1; @@ -393,7 +395,7 @@ int wusb_dev_4way_handshake(struct wusbhc *wusbhc, struct wusb_dev *wusb_dev, usb_dev, usb_rcvctrlpipe(usb_dev, 0), USB_REQ_GET_HANDSHAKE, USB_DIR_IN | USB_TYPE_STANDARD | USB_RECIP_DEVICE, - 2, 0, &hs[1], sizeof(hs[1]), 1000 /* FIXME: arbitrary */); + 2, 0, &hs[1], sizeof(hs[1]), USB_CTRL_GET_TIMEOUT); if (result < 0) { dev_err(dev, "Handshake2: request failed: %d\n", result); goto error_hs2; @@ -470,7 +472,7 @@ int wusb_dev_4way_handshake(struct wusbhc *wusbhc, struct wusb_dev *wusb_dev, usb_dev, usb_sndctrlpipe(usb_dev, 0), USB_REQ_SET_HANDSHAKE, USB_DIR_OUT | USB_TYPE_STANDARD | USB_RECIP_DEVICE, - 3, 0, &hs[2], sizeof(hs[2]), 1000 /* FIXME: arbitrary */); + 3, 0, &hs[2], sizeof(hs[2]), USB_CTRL_SET_TIMEOUT); if (result < 0) { dev_err(dev, "Handshake3: request failed: %d\n", result); goto error_hs3; diff --git a/drivers/usb/wusbcore/wa-hc.h b/drivers/usb/wusbcore/wa-hc.h index 5b6ae3a4a755..b93d2cbdf33f 100644 --- a/drivers/usb/wusbcore/wa-hc.h +++ b/drivers/usb/wusbcore/wa-hc.h @@ -366,7 +366,7 @@ static inline int __wa_feature(struct wahc *wa, unsigned op, u16 feature) USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE, feature, wa->usb_iface->cur_altsetting->desc.bInterfaceNumber, - NULL, 0, 1000 /* FIXME: arbitrary */); + NULL, 0, USB_CTRL_SET_TIMEOUT); } @@ -400,8 +400,7 @@ s32 __wa_get_status(struct wahc *wa) USB_REQ_GET_STATUS, USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE, 0, wa->usb_iface->cur_altsetting->desc.bInterfaceNumber, - &wa->status, sizeof(wa->status), - 1000 /* FIXME: arbitrary */); + &wa->status, sizeof(wa->status), USB_CTRL_GET_TIMEOUT); if (result >= 0) result = wa->status; return result; diff --git a/drivers/usb/wusbcore/wa-rpipe.c b/drivers/usb/wusbcore/wa-rpipe.c index b48e74cc54d7..accdd15f5393 100644 --- a/drivers/usb/wusbcore/wa-rpipe.c +++ b/drivers/usb/wusbcore/wa-rpipe.c @@ -80,7 +80,7 @@ static int __rpipe_get_descr(struct wahc *wa, USB_REQ_GET_DESCRIPTOR, USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_RPIPE, USB_DT_RPIPE<<8, index, descr, sizeof(*descr), - 1000 /* FIXME: arbitrary */); + USB_CTRL_GET_TIMEOUT); if (result < 0) { dev_err(dev, "rpipe %u: get descriptor failed: %d\n", index, (int)result); @@ -118,7 +118,7 @@ static int __rpipe_set_descr(struct wahc *wa, USB_REQ_SET_DESCRIPTOR, USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_RPIPE, USB_DT_RPIPE<<8, index, descr, sizeof(*descr), - HZ / 10); + USB_CTRL_SET_TIMEOUT); if (result < 0) { dev_err(dev, "rpipe %u: set descriptor failed: %d\n", index, (int)result); @@ -237,7 +237,7 @@ static int __rpipe_reset(struct wahc *wa, unsigned index) wa->usb_dev, usb_sndctrlpipe(wa->usb_dev, 0), USB_REQ_RPIPE_RESET, USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_RPIPE, - 0, index, NULL, 0, 1000 /* FIXME: arbitrary */); + 0, index, NULL, 0, USB_CTRL_SET_TIMEOUT); if (result < 0) dev_err(dev, "rpipe %u: reset failed: %d\n", index, result); @@ -527,7 +527,7 @@ void rpipe_ep_disable(struct wahc *wa, struct usb_host_endpoint *ep) wa->usb_dev, usb_rcvctrlpipe(wa->usb_dev, 0), USB_REQ_RPIPE_ABORT, USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_RPIPE, - 0, index, NULL, 0, 1000 /* FIXME: arbitrary */); + 0, index, NULL, 0, USB_CTRL_SET_TIMEOUT); rpipe_put(rpipe); } mutex_unlock(&wa->rpipe_mutex); @@ -548,7 +548,7 @@ void rpipe_clear_feature_stalled(struct wahc *wa, struct usb_host_endpoint *ep) wa->usb_dev, usb_rcvctrlpipe(wa->usb_dev, 0), USB_REQ_CLEAR_FEATURE, USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_RPIPE, - RPIPE_STALL, index, NULL, 0, 1000); + RPIPE_STALL, index, NULL, 0, USB_CTRL_SET_TIMEOUT); } mutex_unlock(&wa->rpipe_mutex); } From ea1af42d3d4da73c9d75984f24e569515261b3fd Mon Sep 17 00:00:00 2001 From: Thomas Pugliese Date: Mon, 9 Dec 2013 14:15:14 -0600 Subject: [PATCH 76/81] usb: wusbcore: move isoc_frame_index from wa_xfer to wa_seg If multiple segments belonging to an isoc transfer are submitted concurrently, the isoc_frame_index field in struct wa_xfer can get corrupted. This patch moves the isoc_frame_index field from struct wa_xfer to struct wa_seg to prevent this from happening. Signed-off-by: Thomas Pugliese Signed-off-by: Greg Kroah-Hartman --- drivers/usb/wusbcore/wa-xfer.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/drivers/usb/wusbcore/wa-xfer.c b/drivers/usb/wusbcore/wa-xfer.c index 673ad80c1b55..6aeb52cdc3fb 100644 --- a/drivers/usb/wusbcore/wa-xfer.c +++ b/drivers/usb/wusbcore/wa-xfer.c @@ -124,6 +124,8 @@ struct wa_seg { u8 index; /* which segment we are */ int isoc_frame_count; /* number of isoc frames in this segment. */ int isoc_frame_offset; /* starting frame offset in the xfer URB. */ + /* Isoc frame that the current transfer buffer corresponds to. */ + int isoc_frame_index; int isoc_size; /* size of all isoc frames sent by this seg. */ enum wa_seg_status status; ssize_t result; /* bytes xfered or error */ @@ -158,8 +160,6 @@ struct wa_xfer { unsigned is_dma:1; size_t seg_size; int result; - /* Isoc frame that the current transfer buffer corresponds to. */ - int dto_isoc_frame_index; gfp_t gfp; /* allocation mask */ @@ -701,23 +701,23 @@ static void wa_seg_dto_cb(struct urb *urb) if (usb_pipeisoc(xfer->urb->pipe)) { /* Alereon HWA sends all isoc frames in a single transfer. */ if (wa->quirks & WUSB_QUIRK_ALEREON_HWA_CONCAT_ISOC) - xfer->dto_isoc_frame_index += seg->isoc_frame_count; + seg->isoc_frame_index += seg->isoc_frame_count; else - xfer->dto_isoc_frame_index += 1; - if (xfer->dto_isoc_frame_index < seg->isoc_frame_count) { + seg->isoc_frame_index += 1; + if (seg->isoc_frame_index < seg->isoc_frame_count) { data_send_done = 0; holding_dto = 1; /* checked in error cases. */ /* * if this is the last isoc frame of the segment, we * can release DTO after sending this frame. */ - if ((xfer->dto_isoc_frame_index + 1) >= + if ((seg->isoc_frame_index + 1) >= seg->isoc_frame_count) release_dto = 1; } dev_dbg(dev, "xfer 0x%08X#%u: isoc frame = %d, holding_dto = %d, release_dto = %d.\n", - wa_xfer_id(xfer), seg->index, - xfer->dto_isoc_frame_index, holding_dto, release_dto); + wa_xfer_id(xfer), seg->index, seg->isoc_frame_index, + holding_dto, release_dto); } spin_unlock_irqrestore(&xfer->lock, flags); @@ -737,8 +737,7 @@ static void wa_seg_dto_cb(struct urb *urb) * send the URB and release DTO if we no longer need it. */ __wa_populate_dto_urb_isoc(xfer, seg, - seg->isoc_frame_offset + - xfer->dto_isoc_frame_index); + seg->isoc_frame_offset + seg->isoc_frame_index); /* resubmit the URB with the next isoc frame. */ result = usb_submit_urb(seg->dto_urb, GFP_ATOMIC); @@ -1324,12 +1323,12 @@ static int __wa_seg_submit(struct wa_rpipe *rpipe, struct wa_xfer *xfer, struct wahc *wa = xfer->wa; result = usb_submit_urb(seg->isoc_pack_desc_urb, GFP_ATOMIC); + seg->isoc_frame_index = 0; if (result < 0) { pr_err("%s: xfer %p#%u: ISO packet descriptor submit failed: %d\n", __func__, xfer, seg->index, result); goto error_iso_pack_desc_submit; } - xfer->dto_isoc_frame_index = 0; /* * If this segment contains more than one isoc frame, hold * onto the dto resource until we send all frames. From 756a2eed67e61e9596c2b49a787441c2e0daf1e1 Mon Sep 17 00:00:00 2001 From: Thomas Pugliese Date: Mon, 9 Dec 2013 14:15:15 -0600 Subject: [PATCH 77/81] usb: wusbcore: set packet count correctly on isoc transfers This patch correctly sets the dwNumOfPackets field of the HWA transfer request for isochronous transfers with multiple segments. Previously all segments used the value that was set for the first segment which may not be correct. Signed-off-by: Thomas Pugliese Signed-off-by: Greg Kroah-Hartman --- drivers/usb/wusbcore/wa-xfer.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/usb/wusbcore/wa-xfer.c b/drivers/usb/wusbcore/wa-xfer.c index 6aeb52cdc3fb..a70e142da330 100644 --- a/drivers/usb/wusbcore/wa-xfer.c +++ b/drivers/usb/wusbcore/wa-xfer.c @@ -1259,8 +1259,11 @@ static int __wa_xfer_setup(struct wa_xfer *xfer, struct urb *urb) for (cnt = 1; cnt < xfer->segs; cnt++) { struct wa_xfer_packet_info_hwaiso *packet_desc; struct wa_seg *seg = xfer->seg[cnt]; + struct wa_xfer_hwaiso *xfer_iso; xfer_hdr = &seg->xfer_hdr; + xfer_iso = container_of(xfer_hdr, + struct wa_xfer_hwaiso, hdr); packet_desc = ((void *)xfer_hdr) + xfer_hdr_size; /* * Copy values from the 0th header. Segment specific @@ -1270,6 +1273,8 @@ static int __wa_xfer_setup(struct wa_xfer *xfer, struct urb *urb) xfer_hdr->bTransferSegment = cnt; xfer_hdr->dwTransferLength = cpu_to_le32(seg->isoc_size); + xfer_iso->dwNumOfPackets = + cpu_to_le32(seg->isoc_frame_count); __wa_setup_isoc_packet_descr(packet_desc, xfer, seg); seg->status = WA_SEG_READY; } From 40fcd88b8d49fd911518190c985112097d3a8a17 Mon Sep 17 00:00:00 2001 From: Ming Lei Date: Tue, 10 Dec 2013 15:01:42 +0800 Subject: [PATCH 78/81] USB: storage: fix compile warning This patch should fix the below compile warning: drivers/usb/storage/protocol.c: In function 'usb_stor_access_xfer_buf': drivers/usb/storage/protocol.c:155:22: warning: comparison of distinct pointer types lacks a cast [enabled by default] Reported-by: kbuild test robot Reported-by: Stephen Rothwell Signed-off-by: Ming Lei Signed-off-by: Greg Kroah-Hartman --- drivers/usb/storage/protocol.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/usb/storage/protocol.c b/drivers/usb/storage/protocol.c index f54e5fea9230..12e3c2fac642 100644 --- a/drivers/usb/storage/protocol.c +++ b/drivers/usb/storage/protocol.c @@ -152,7 +152,8 @@ unsigned int usb_stor_access_xfer_buf(unsigned char *buffer, return cnt; while (sg_miter_next(&miter) && cnt < buflen) { - unsigned int len = min(miter.length, buflen - cnt); + unsigned int len = min_t(unsigned int, miter.length, + buflen - cnt); if (dir == FROM_XFER_BUF) memcpy(buffer + cnt, miter.addr, len); From 48fc7dbd52c0559647291f33a10ccdc6cdbe4c72 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Thu, 5 Dec 2013 17:07:27 -0800 Subject: [PATCH 79/81] usb: xhci: change enumeration scheme to 'new scheme' by default Change the default enumeration scheme for xhci attached non-SuperSpeed devices from: Reset SetAddress [xhci address-device BSR = 0] GetDescriptor(8) GetDescriptor(18) ...to: Reset [xhci address-device BSR = 1] GetDescriptor(64) Reset SetAddress [xhci address-device BSR = 0] GetDescriptor(18) ...as some devices misbehave when encountering a SetAddress command prior to GetDescriptor. There are known legacy devices that require this scheme, but testing has found at least one USB3 device that fails enumeration when presented with this ordering. For now, follow the ehci case and enable 'new scheme' by default for non-SuperSpeed devices. To support this enumeration scheme on xhci the AddressDevice operation needs to be performed twice. The first instance of the command enables the HC's device and slot context info for the device, but omits sending the device a SetAddress command (BSR == block set address request). Then, after GetDescriptor completes, follow up with the full AddressDevice+SetAddress operation. As mentioned before, this ordering of events with USB3 devices causes an extra state transition to be exposed to xhci. Previously USB3 devices would transition directly from 'enabled' to 'addressed' and never need to underrun responses to 'get descriptor'. We do see the 64-byte descriptor fetch the correct data, but the following 18-byte descriptor read after the reset gets: bLength = 0 bDescriptorType = 0 bcdUSB = 0 bDeviceClass = 0 bDeviceSubClass = 0 bDeviceProtocol = 0 bMaxPacketSize0 = 9 instead of: bLength = 12 bDescriptorType = 1 bcdUSB = 300 bDeviceClass = 0 bDeviceSubClass = 0 bDeviceProtocol = 0 bMaxPacketSize0 = 9 which results in the discovery process looping until falling back to 'old scheme' enumeration. Acked-by: Alan Stern Reported-by: David Moore Suggested-by: Sarah Sharp Reported-by: Dan Carpenter Signed-off-by: Dan Williams Signed-off-by: Sarah Sharp --- drivers/usb/core/hub.c | 46 +++++++++++++++++++++++++++++++++--- drivers/usb/host/xhci-pci.c | 1 + drivers/usb/host/xhci-plat.c | 1 + drivers/usb/host/xhci-ring.c | 6 ++--- drivers/usb/host/xhci.c | 19 +++++++++++---- drivers/usb/host/xhci.h | 11 ++++++++- include/linux/usb/hcd.h | 2 ++ 7 files changed, 75 insertions(+), 11 deletions(-) diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 32e1035d4f59..6a11eff74d3c 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -2498,6 +2498,21 @@ static unsigned hub_is_wusb(struct usb_hub *hub) #define HUB_LONG_RESET_TIME 200 #define HUB_RESET_TIMEOUT 800 +/* + * "New scheme" enumeration causes an extra state transition to be + * exposed to an xhci host and causes USB3 devices to receive control + * commands in the default state. This has been seen to cause + * enumeration failures, so disable this enumeration scheme for USB3 + * devices. + */ +static bool use_new_scheme(struct usb_device *udev, int retry) +{ + if (udev->speed == USB_SPEED_SUPER) + return false; + + return USE_NEW_SCHEME(retry); +} + static int hub_port_reset(struct usb_hub *hub, int port1, struct usb_device *udev, unsigned int delay, bool warm); @@ -3956,6 +3971,20 @@ static void hub_set_initial_usb2_lpm_policy(struct usb_device *udev) } } +static int hub_enable_device(struct usb_device *udev) +{ + struct usb_hcd *hcd = bus_to_hcd(udev->bus); + + if (!hcd->driver->enable_device) + return 0; + if (udev->state == USB_STATE_ADDRESS) + return 0; + if (udev->state != USB_STATE_DEFAULT) + return -EINVAL; + + return hcd->driver->enable_device(hcd, udev); +} + /* Reset device, (re)assign address, get device descriptor. * Device connection must be stable, no more debouncing needed. * Returns device in USB_STATE_ADDRESS, except on error. @@ -4068,7 +4097,7 @@ hub_port_init (struct usb_hub *hub, struct usb_device *udev, int port1, * this area, and this is how Linux has done it for ages. * Change it cautiously. * - * NOTE: If USE_NEW_SCHEME() is true we will start by issuing + * NOTE: If use_new_scheme() is true we will start by issuing * a 64-byte GET_DESCRIPTOR request. This is what Windows does, * so it may help with some non-standards-compliant devices. * Otherwise we start with SET_ADDRESS and then try to read the @@ -4076,10 +4105,17 @@ hub_port_init (struct usb_hub *hub, struct usb_device *udev, int port1, * value. */ for (i = 0; i < GET_DESCRIPTOR_TRIES; (++i, msleep(100))) { - if (USE_NEW_SCHEME(retry_counter) && !(hcd->driver->flags & HCD_USB3)) { + bool did_new_scheme = false; + + if (use_new_scheme(udev, retry_counter)) { struct usb_device_descriptor *buf; int r = 0; + did_new_scheme = true; + retval = hub_enable_device(udev); + if (retval < 0) + goto fail; + #define GET_DESCRIPTOR_BUFSIZE 64 buf = kmalloc(GET_DESCRIPTOR_BUFSIZE, GFP_NOIO); if (!buf) { @@ -4168,7 +4204,11 @@ hub_port_init (struct usb_hub *hub, struct usb_device *udev, int port1, * - read ep0 maxpacket even for high and low speed, */ msleep(10); - if (USE_NEW_SCHEME(retry_counter) && !(hcd->driver->flags & HCD_USB3)) + /* use_new_scheme() checks the speed which may have + * changed since the initial look so we cache the result + * in did_new_scheme + */ + if (did_new_scheme) break; } diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c index b8dffd59eb25..4221dee924b5 100644 --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c @@ -331,6 +331,7 @@ static const struct hc_driver xhci_pci_hc_driver = { .check_bandwidth = xhci_check_bandwidth, .reset_bandwidth = xhci_reset_bandwidth, .address_device = xhci_address_device, + .enable_device = xhci_enable_device, .update_hub_device = xhci_update_hub_device, .reset_device = xhci_discover_or_reset_device, diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c index 9d29aa1b1bc8..8abda5c73ca1 100644 --- a/drivers/usb/host/xhci-plat.c +++ b/drivers/usb/host/xhci-plat.c @@ -69,6 +69,7 @@ static const struct hc_driver xhci_plat_xhci_driver = { .check_bandwidth = xhci_check_bandwidth, .reset_bandwidth = xhci_reset_bandwidth, .address_device = xhci_address_device, + .enable_device = xhci_enable_device, .update_hub_device = xhci_update_hub_device, .reset_device = xhci_discover_or_reset_device, diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c index fe9208a5d103..d26cd9474aa6 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -4004,12 +4004,12 @@ int xhci_queue_slot_control(struct xhci_hcd *xhci, u32 trb_type, u32 slot_id) /* Queue an address device command TRB */ int xhci_queue_address_device(struct xhci_hcd *xhci, dma_addr_t in_ctx_ptr, - u32 slot_id) + u32 slot_id, enum xhci_setup_dev setup) { return queue_command(xhci, lower_32_bits(in_ctx_ptr), upper_32_bits(in_ctx_ptr), 0, - TRB_TYPE(TRB_ADDR_DEV) | SLOT_ID_FOR_TRB(slot_id), - false); + TRB_TYPE(TRB_ADDR_DEV) | SLOT_ID_FOR_TRB(slot_id) + | (setup == SETUP_CONTEXT_ONLY ? TRB_BSR : 0), false); } int xhci_queue_vendor_command(struct xhci_hcd *xhci, diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 7fe6f664054f..6598f7ee7938 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -3709,12 +3709,13 @@ int xhci_alloc_dev(struct usb_hcd *hcd, struct usb_device *udev) } /* - * Issue an Address Device command (which will issue a SetAddress request to - * the device). + * Issue an Address Device command and optionally send a corresponding + * SetAddress request to the device. * We should be protected by the usb_address0_mutex in khubd's hub_port_init, so * we should only issue and wait on one address command at the same time. */ -int xhci_address_device(struct usb_hcd *hcd, struct usb_device *udev) +static int xhci_setup_device(struct usb_hcd *hcd, struct usb_device *udev, + enum xhci_setup_dev setup) { unsigned long flags; int timeleft; @@ -3773,7 +3774,7 @@ int xhci_address_device(struct usb_hcd *hcd, struct usb_device *udev) spin_lock_irqsave(&xhci->lock, flags); cmd_trb = xhci_find_next_enqueue(xhci->cmd_ring); ret = xhci_queue_address_device(xhci, virt_dev->in_ctx->dma, - udev->slot_id); + udev->slot_id, setup); if (ret) { spin_unlock_irqrestore(&xhci->lock, flags); xhci_dbg_trace(xhci, trace_xhci_dbg_address, @@ -3868,6 +3869,16 @@ int xhci_address_device(struct usb_hcd *hcd, struct usb_device *udev) return 0; } +int xhci_address_device(struct usb_hcd *hcd, struct usb_device *udev) +{ + return xhci_setup_device(hcd, udev, SETUP_CONTEXT_ADDRESS); +} + +int xhci_enable_device(struct usb_hcd *hcd, struct usb_device *udev) +{ + return xhci_setup_device(hcd, udev, SETUP_CONTEXT_ONLY); +} + /* * Transfer the port index into real index in the HW port status * registers. Caculate offset between the port's PORTSC register diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h index 7807f621a713..24344aab2107 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h @@ -1108,6 +1108,14 @@ struct xhci_event_cmd { }; /* flags bitmasks */ + +/* Address device - disable SetAddress */ +#define TRB_BSR (1<<9) +enum xhci_setup_dev { + SETUP_CONTEXT_ONLY, + SETUP_CONTEXT_ADDRESS, +}; + /* bits 16:23 are the virtual function ID */ /* bits 24:31 are the slot ID */ #define TRB_TO_SLOT_ID(p) (((p) & (0xff<<24)) >> 24) @@ -1760,6 +1768,7 @@ int xhci_free_streams(struct usb_hcd *hcd, struct usb_device *udev, struct usb_host_endpoint **eps, unsigned int num_eps, gfp_t mem_flags); int xhci_address_device(struct usb_hcd *hcd, struct usb_device *udev); +int xhci_enable_device(struct usb_hcd *hcd, struct usb_device *udev); int xhci_update_device(struct usb_hcd *hcd, struct usb_device *udev); int xhci_set_usb2_hardware_lpm(struct usb_hcd *hcd, struct usb_device *udev, int enable); @@ -1783,7 +1792,7 @@ int xhci_is_vendor_info_code(struct xhci_hcd *xhci, unsigned int trb_comp_code); void xhci_ring_cmd_db(struct xhci_hcd *xhci); int xhci_queue_slot_control(struct xhci_hcd *xhci, u32 trb_type, u32 slot_id); int xhci_queue_address_device(struct xhci_hcd *xhci, dma_addr_t in_ctx_ptr, - u32 slot_id); + u32 slot_id, enum xhci_setup_dev); int xhci_queue_vendor_command(struct xhci_hcd *xhci, u32 field1, u32 field2, u32 field3, u32 field4); int xhci_queue_stop_endpoint(struct xhci_hcd *xhci, int slot_id, diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h index 758ce80d085f..efe8d8a7c7ad 100644 --- a/include/linux/usb/hcd.h +++ b/include/linux/usb/hcd.h @@ -353,6 +353,8 @@ struct hc_driver { void (*reset_bandwidth)(struct usb_hcd *, struct usb_device *); /* Returns the hardware-chosen device address */ int (*address_device)(struct usb_hcd *, struct usb_device *udev); + /* prepares the hardware to send commands to the device */ + int (*enable_device)(struct usb_hcd *, struct usb_device *udev); /* Notifies the HCD after a hub descriptor is fetched. * Will block. */ From 6f8ffc0b43c1043481306ffb8a4b8f53fa1f5ead Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Fri, 22 Nov 2013 01:20:01 -0800 Subject: [PATCH 80/81] xhci: clarify logging in xhci_setup_device Specify whether we are only performing the context setup portion of the 'address device' command, or the full operation issuing 'SetAddress' on the wire. Signed-off-by: Dan Williams Signed-off-by: Sarah Sharp --- drivers/usb/host/xhci.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 6598f7ee7938..d68ec1aa473d 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -3717,6 +3717,7 @@ int xhci_alloc_dev(struct usb_hcd *hcd, struct usb_device *udev) static int xhci_setup_device(struct usb_hcd *hcd, struct usb_device *udev, enum xhci_setup_dev setup) { + const char *act = setup == SETUP_CONTEXT_ONLY ? "context" : "address"; unsigned long flags; int timeleft; struct xhci_virt_device *virt_dev; @@ -3792,8 +3793,8 @@ static int xhci_setup_device(struct usb_hcd *hcd, struct usb_device *udev, * command on a timeout. */ if (timeleft <= 0) { - xhci_warn(xhci, "%s while waiting for address device command\n", - timeleft == 0 ? "Timeout" : "Signal"); + xhci_warn(xhci, "%s while waiting for setup %s command\n", + timeleft == 0 ? "Timeout" : "Signal", act); /* cancel the address device command */ ret = xhci_cancel_cmd(xhci, NULL, cmd_trb); if (ret < 0) @@ -3804,26 +3805,27 @@ static int xhci_setup_device(struct usb_hcd *hcd, struct usb_device *udev, switch (virt_dev->cmd_status) { case COMP_CTX_STATE: case COMP_EBADSLT: - xhci_err(xhci, "Setup ERROR: address device command for slot %d.\n", - udev->slot_id); + xhci_err(xhci, "Setup ERROR: setup %s command for slot %d.\n", + act, udev->slot_id); ret = -EINVAL; break; case COMP_TX_ERR: - dev_warn(&udev->dev, "Device not responding to set address.\n"); + dev_warn(&udev->dev, "Device not responding to setup %s.\n", act); ret = -EPROTO; break; case COMP_DEV_ERR: - dev_warn(&udev->dev, "ERROR: Incompatible device for address " - "device command.\n"); + dev_warn(&udev->dev, + "ERROR: Incompatible device for setup %s command\n", act); ret = -ENODEV; break; case COMP_SUCCESS: xhci_dbg_trace(xhci, trace_xhci_dbg_address, - "Successful Address Device command"); + "Successful setup %s command", act); break; default: - xhci_err(xhci, "ERROR: unexpected command completion " - "code 0x%x.\n", virt_dev->cmd_status); + xhci_err(xhci, + "ERROR: unexpected setup %s command completion code 0x%x.\n", + act, virt_dev->cmd_status); xhci_dbg(xhci, "Slot ID %d Output Context:\n", udev->slot_id); xhci_dbg_ctx(xhci, virt_dev->out_ctx, 2); trace_xhci_address_ctx(xhci, virt_dev->out_ctx, 1); From 3d724fa513cd1bd06d3457ccda36941f3606d048 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Wed, 11 Dec 2013 05:10:33 +0000 Subject: [PATCH 81/81] USB: emi62: Provide the correct bitstream firmware Commit b8e24bfabb03 ('emi62: use request_firmware()') made emi62/bitstream.HEX a copy of emi26/bitstream.HEX. Re-do the conversion from drivers/usb/misc/emi62_fw_{m,s}.h (these headers contained the same bitstream but different firmware). This produces an identical blob to the known working version in http://people.xiph.org/~xiphmont/emagic/emi-20131209.tgz Reported-by: Monty Cc: David Woodhouse Signed-off-by: Ben Hutchings Signed-off-by: Greg Kroah-Hartman --- firmware/emi62/bitstream.HEX | 10325 +++++++++++++++++++-------------- 1 file changed, 6030 insertions(+), 4295 deletions(-) diff --git a/firmware/emi62/bitstream.HEX b/firmware/emi62/bitstream.HEX index 3c6ecc35eaab..a0f4f570f076 100644 --- a/firmware/emi62/bitstream.HEX +++ b/firmware/emi62/bitstream.HEX @@ -1,4372 +1,6107 @@ :10801000FFFFFFFFAA9955663000800100000007AE -:10802000300160010000000B3001200100803F2D75 +:10802000300160010000000D3001200100803F2D73 :108030003000C00100000000300080010000000995 :10804000300020010000000030008001000000012D -:108050003000400050003E040812100000000000F4 +:10805000300040005000581A80121000000000004C :108060000000000000000000000000000000000010 -:1080700000000000000000000000000000004004BC -:10808000800000000000000000121000000000004E -:1080900000000000000000000000000000000000E0 -:1080A000000000000000000000000000000040840C -:1080B000800000000000000000020000000000003E -:1080C00000000000000000000000000000000000B0 -:1080D0000000000000000000000000000000080098 -:1080E000C0000000000000000002000000000000CE -:1080F0000000000000000000000000000000000080 -:10810000000000000000000000000000000000006F -:1081100080000000000000000012000000000000CD +:108070000000000000000000000000000000000000 +:10808000000000000000014004800000000000002B +:1080900000121000000000000000000000000000BE +:1080A00000000000000000000000000000000000D0 +:1080B0000000000000000000000000000000014877 +:1080C000048000000000000000020000000000002A +:1080D00000000000000000000000000000000000A0 +:1080E0000000000000000000000000000000000090 +:1080F000000000000000000000C0000000000000C0 +:10810000000200000000000000000000000000006D +:10811000000000000000000000000000000000005F :10812000000000000000000000000000000000004F -:10813000000000000000000000000000000000043B -:108140008000000000000000081300000000000094 +:1081300000800000000000000012000000000000AD +:10814000000000000000000000000000000000002F :10815000000000000000000000000000000000001F -:10816000000000000000000000000000000000000F -:10817000900000000000000000120000000000005D +:10816000000000000000000004800000000000008B +:10817000801200000000000000000000000000006D :1081800000000000000000000000000000000000EF -:10819000000000000000000000000000000000845B -:1081A0009000000000000000F710011400250005F9 -:1081B0004001500094001500074001D000940025B4 -:1081C00080016002D800F6002F8002E004D8374416 -:1081D0009000000000000000C005F200CC903920A3 -:1081E0000D9803D200E78037040EF1837E00DF9004 -:1081F00031E48F79037C20DF2233C00CF022300081 -:108200007000000000000000801062008024222026 -:10821000089812E2008B8120940874022E008A01D3 -:1082200022C80892023D808B60228008B0022004A0 -:1082300030000000000000008805C800A0002000F9 -:108240000B1002C000A10024094A32024800B1000C -:1082500062C009A046CC2493492A8048302262019A -:108260007000000000000000C015A812A800220045 -:10827000089002E0008980224408B012A800A940BA -:1082800022C0089082AC009B042AC408B00270048B -:10829000600000000000000000148400E980B26467 -:1082A0004DA003EA20E9C036400EB0034400FB9025 -:1082B000B2880DBC03EC085B0038602CB06340044E -:1082C0007000000000000000E001B426DD9037409F -:1082D0004FE013F280FD003DA00D700375005E00BD -:1082E0003FA40DF9035C10EB0037200F3003B800FA -:1082F00060000000000000004010AC00E980324047 -:108300000CA183E800E90032420EB003AC48E9005A -:108310003A800EA403EC00EB00B2030EB00B100485 -:108320002000000000000000C8052E8089D12040F8 -:1083300008A002C0008180225808F5022F408B005F -:1083400020C00830437C008700224008F002320041 -:108350004000000000000000E00542019A4428A20D -:10836000081802C080A180A0000830028E00AB0077 -:108370002C400A30020C00A30020440A30023800CE -:1083800050000000000000006001320096822BA225 -:10839000885A02F200058029A0087842BE008E8427 -:1083A0002F610AD8024E10A78020280878021800F2 -:1083B000400000000000000048080800F224388057 -:1083C0002C1A03C400E058A0802E30038841E30239 -:1083D0003C400620038C00E30010000E31431202E3 -:1083E0000000000000000000401D9800EE013784EE -:1083F0009FD903F048FD1037C007B0035C00F610AA -:1084000033C00DE103ED20DF103F480FF023D0060D -:108410006000000000000000A805E402CB8030C02E -:108420000CA003E202C9003A400DB6036400EB0061 -:108430003EC00FB003ED00FB013EE00CB002EA00CD -:10844000700000000000000048119400870021C067 -:10845000286002D00085002D8048F0821C00B70003 -:108460002D000B5002DC00B7A02F80287A02D20426 -:108470006000000000000000C100BE00878021E015 -:10848000286802D70084802DE04979065309B58019 -:108490002DE20B7802DE80B7902DB0087902F00053 -:1084A00020000000000000004814CC10830128C800 -:1084B000082002C20681002CC88830620E21B3A0B9 -:1084C0002CC10BB602CC00B3002CE0083002D20461 -:1084D0003000000000000000E815A800CA40B0808D -:1084E0000C2C02F800C6203F900DA0037B01EEE0AB -:1084F0003FB40FEC03E800FA003FA00CA003FA041D -:1085000060000000000000004800E300F8092600B9 -:108510000FC183E010F8403C000F8003E001F80039 -:108520003E000F8103E004F8003E100F8003D200EC -:1085300030000000000000000810E402C9003E40C6 -:108540004F906326843902B2400C91032400F90055 -:108550003E400F90032400F1003A440F9003C20400 -:1085600030000000000000008004450089402E40DB -:1085700008920A2400B931226088948A2420B90024 -:108580002E400B90022400B90022680B9002E000FC -:108590001000000000000000180524A08D842F406A -:1085A0000BD1022400B900224A0810022C40B90065 -:1085B0002E400B90022400B9002A400B9002C60006 -:1085C00040000000000000000804140085802D40D9 -:1085D000085002040CB900A0500814220400B10095 -:1085E0002C400B10020400B128204A0B1302C201D8 -:1085F0000000000000000000B80D6000C0503E8088 -:108600000FC0432000F80030002C80232000F851D8 -:108610003E148F850B2140F8703A080F8483EE03D7 -:108620005000000000000000981DC400F9043E4006 -:108630000F9023D400FD003F500F9403F404FD007D -:108640003F418FD043E50CF9023F4A0F9203E60207 -:1086500070000000000000008805D401FD003D40CE -:108660000CD013F400D500336A1CDC833400D10431 -:108670003E500C9103E6C0DDB0336A2C9C83E600CB -:1086800070000000000000003810E009F8802E00A3 -:10869000888000E800BA0022B0088E02280088A86E -:1086A0002628088A22E20088E42230088C02CE04C0 -:1086B00030000000000000000805C400B1282E4072 -:1086C000081002C400990020424810026401918001 -:1086D0002C48081002C4C08140204A081202C2017E -:1086E00070000000000000001815A494A9022E409C -:1086F0000A90026400B90082600890026600891046 -:108700002462089002E40089022240189002C60404 -:108710006000000000000000A015E600B9043E4023 -:108720000C9013E400D1C012502890034400D900EB -:108730003E40289203E402D90032428C9012E804B1 -:1087400070000000000000002801A620F9003E4152 -:108750002D9003E400F9203E404F9001A400F90061 -:1087600036408F9207E400F100BE400F9003CA002C -:1087700060000000000000002810A000C8003E209B -:108780000C8003E040F80036122C0003E0C0F80033 -:1087900032100D8403A000F8023E080F8000CA04C6 -:1087A000200000000000000028053A908E002DA057 -:1087B00080E802FA00BE40238008E802FA008A003E -:1087C000368008A002E800BA002F800BA0038A00C0 -:1087D00040000000000000002805460283002C80B5 -:1087E000082242C680B1602EF4083822CE00A300D1 -:1087F00020C0083002AC00B1002E400B3002CA008D -:108800005000000000000000A0011E0285012DC2E2 -:10881000A84402D400BD0129401868D2DC008F8032 -:1088200025CC287342DC80B5302DC01B7202E800D5 -:108830004000000000000000A8081E04C6823DE0C1 -:108840000C4812D610F5803CA00C7003DE00E790B7 -:1088500023EA047A039E00F5803DE00F7A03EA02E2 -:108860000000000000000000080DAC009C003EC0AD -:108870000F8003E410F90036010FA003C000EB00E5 -:108880003ED84EB083EC00F9003EC00FB4438206E0 -:108890006000000000000000C005DE00CF8431E071 -:1088A0000EC843D600CD8033E0CDD9033A00FF880F -:1088B00033E00FF913FE24FD803F200CF6831000F7 -:1088C0007000000000000000A8119C00850021C479 -:1088D000284082D000D500238048C9021C00B70080 -:1088E00021C00B7102DE80B5102DC028F0022A04D1 -:1088F000600000000000000010009C00960021C0F5 -:108900000A4102F5408D0021400952029820B7002B -:1089100021C00B7006DC80B5002DC0087002040079 -:1089200020000000000000006014CC10980000C07F -:10893000880482C000910420030900028A00B30A5F -:1089400020C48B3402CC00B9002CC00030021804C3 -:108950003000000000000000F815AC00DB00B0C0E3 -:108960000E9C02C500C110B2C00DB00BA708FF00DD -:10897000B3C00FFA03FC00FD003ED40CF00B2E0434 -:1089800060000000000000008000EC04ED003E40AC -:108990000F8403E540F9403E60CEB4436400FB80A1 -:1089A0003EC20FB013EC00F9023EC04FB003E1002D -:1089B00030000000000000009010FF00CE0033C027 -:1089C0000EC0077404EC0011800CCA03FE60FF00A7 -:1089D0003FC00FF0833C00DD00B3502CF0032004B7 -:1089E000300000000000000081004C048B0B22705E -:1089F00008080367208A88A200288402E700BB00D9 -:108A00003EC00BB0022C00B900226108B0036040E8 -:108A1000100000000000000080052C008B2022E2E6 -:108A20000A8C022600A9802AC008B442ED00BB00CF -:108A30002EC00B30022C00B90020800830026000EC -:108A4000400000000000000008040E018100A0C0EA -:108A5000088102440081002881083202CC00B30062 -:108A600028C00B30020C80B10020C0083012420137 -:108A70000000000000000000800D6C00C20132C048 -:108A80002E80162C08E9003A400C8003EC00F70019 -:108A90002FC00FF00B2C00D90030400CF003600306 -:108AA0005000000000000000A00DF808FF003FC0CB -:108AB0000FC217FC00F70037000F8403FC00FF0013 -:108AC0003FC00FF003ED00FD003F400FF003E8064C -:108AD0007000000000000000C005FC00CF30174807 -:108AE0000C5903B900DF2835240D82A37C80FF00D8 -:108AF0003FC80FF203E4A0EF803FE18CD843300081 -:108B000070000000000000008010ED488934A37060 -:108B100028B02360008BC0224008B4822F40BFD110 -:108B20006FF48EBD02E700BB803AE008980A280483 -:108B300030000000000000008805C4B09100A8507B -:108B400008B202C884930024490B02024C00B3040B -:108B50002CC00B30428400B3002E000AB012220158 -:108B60007000000000000000C011AC0299182A44F7 -:108B700008B882A201BB0028600AA0126C00BB00EA -:108B80006EC00AB002E400BB002A002AB00238041A -:108B900060000000000000004011E408DAC03A6004 -:108BA0000C180AEB04DB0036E00785836C00FB0041 -:108BB0002EC00FB043E400EB003E880E18031004F3 -:108BC0007000000000000000E0419C10E9003760E8 -:108BD00087F0177000CF0137C04C9803BC00FB0032 -:108BE0003FC20FF003E400FF403FE40DD903F00063 -:108BF00060000000000000004010A400F4003040BD -:108C00000FB4039900FB003EC00D04232C08FB8821 -:108C100032C00FB003E600DB103E020FB083D00479 -:108C20002000000000000000C8052C00B950A24838 -:108C30008BB0032000D7802ED80080023C00BF807C -:108C400023E88BF002F4408B400C4203B602F200A2 -:108C50004000000000000000E0054C00B24400C8E5 -:108C60000B30128C00A38024C80B000ACC00B34444 -:108C700004C01B3602C501830C2CA00B3002F80087 -:108C8000500000000000000020011E08B790216481 -:108C90000BF8024A0497812FE40A78029E00B780FD -:108CA00021E08B7882D68687842DA00B7802C000C5 -:108CB000400000000000000048080400F20030C03E -:108CC0000F30038C00E30A3CC00F18038C00F30242 -:108CD00030C01F3001C680C3003CC00F1203DA024F -:108CE0000000000000000000400DBC00FF003F41FC -:108CF0000FF003B808FF083FC00DF0033C20FF0849 -:108D00003BD20FF003F440EF003FC40FD003D00676 -:108D10006000000000000000A805E400FE0032C270 -:108D20000C300B2600FB8036C00DA003EC00FBE0EE -:108D300032D00FB8436444DB043E800FB003E2003E -:108D4000700000000000000048119C00B700A1C0A6 -:108D50008870031000B72021C0087002DC80B33097 -:108D600031C80B7402140087402DC04B7002D20032 -:108D70006000000000000000C0009620B68020E0E7 -:108D800028F8029410B78127E2097802DE00B7A024 -:108D9000A9E80B3802760087802DA00B5802F0005E -:108DA00020000000000000004814CE10B30020C4D2 -:108DB0000820028010B30022C808B002CC11B30210 -:108DC00028C00B3002040093802CD20B1002D20476 -:108DD0003000000000000000E815A800FE4032A0AE -:108DE0000CE4039880FA0037A00DE083E800FE0051 -:108DF0003A800BA0036800D8A03F900FA003FA04AC -:108E000060000000000000004800E008F8083E0094 -:108E10000F80032000F8403E000F8003E000F804BC -:108E200030100F8003E002E8003E000F8003D20004 -:108E300030000000000000000810E400F1003240A3 -:108E40000E9083A400C9803E400E9003A400F90058 -:108E50003E400C9003E400C8003E408F90030204A3 -:108E6000300000000000000080046400B940A062EF -:108E7000081002241089002E400890022400B90036 -:108E80002E52089402C40089402E400B100360103B -:108E9000100000000000000018052400B91822444A -:108EA0000A9002AC0089102EC00A9002A400B9807A -:108EB0002E60089802E60289082E400B90020600F8 -:108EC000400000000000000008040480B120A04819 -:108ED000089002240881232C500810020480B1203D -:108EE0002C48281202E48081202C400B9802420575 -:108EF0000000000000000000B80D6140F850320092 -:108F00000E8503A1E0CA003E000E8503A000F80014 -:108F10002E009CA003E000C8283E000F80032E0115 -:108F20005000000000000000981DF440F5103F4480 -:108F30000FD003F400F1103D408FD403E450F9103A -:108F40003E450F9103D440FC003FC08FD023E60480 -:108F500070000000000000001805E620CDA8334096 -:108F60008DD0032680CD003D500C9A036400F9A0FB -:108F70007A6A0F9A63E680C9803E400F900306002C -:108F800070000000000000003810E10088E03600AA -:108F900008800A2142C8002E290CA4422000B840B3 -:108FA0002E000B8102E10088023A010BC0020E0480 -:108FB00030000000000000000805C40281082440C1 -:108FC000091002040091002C404B14024400B5101B -:108FD00029400B5002F500B5002D400BD0020201D4 -:108FE00070000000000000001811A6018900264052 -:108FF000089402240189002E401A90026C00BF02DE -:109000002F400BD002F402BD802B408BD83A0604CF -:109010006000000000000000A015E400C905364112 -:109020000D1C032400D9003E422F94036400F90074 -:109030003A400F9003C400F9003E700F100328045B -:10904000700000000000000028018408F9243E4060 -:109050000F9103E400F9003E410D1003A400F90054 -:109060003E400F9003E400C9003E640F9003CA0025 -:1090700060000000000000002810A008C880320234 -:109080000F80030000C8083A10CE8403E000FC0003 -:109090003F008FC003F080FC003F180FC043CA049C -:1090A0002000000000000000280528008E00A1809C -:1090B0000BE0022800DEC2239000A002E800BA0004 -:1090C0002E800BA002E800FA002E800BA002CA003E -:1090D000400000000000000028054C00998160C09D -:1090E0000B10020C0090102AFC0B3002CC00B300D5 -:1090F0002CC00B3002CC00B3002CC00B3002CA00D5 -:109100005000000000000000A0011C82954021C01A -:109110000B50021C8090802301097212DC00B60003 -:109120002D000B4002D000B4092D004B4082E80016 -:109130004000000000000000A8083E80DD80B1E093 -:109140000FDA030F80D48039E00B7A03DE00F5805C -:109150003D200F4803D610F6813DE08F6803EA02F8 -:109160000000000000000000081DAC00ED003E0003 -:109170000F910BEC10F8003E000EB003EC00F8006D -:109180003EC04FB003E800E9013E000F9003C20665 -:1091900060000000000000000005FE20BF8133A435 -:1091A0008C19033E00CD803FE00FF8833E00EF8036 -:1091B0003FE00FF913FA10FD803FA40FD803C00061 -:1091C0007000000000000000A8119C00BF2031C208 -:1091D000085A023C0287002D940B700A1C4086102E -:1091E0002D000B4002D400F6002D404B6002EA0433 -:1091F000600000000000000000009C00B701238018 -:109200002850021C0084002DC00B30021C00B50049 -:109210002D000B4006D040B4082D800B4802C00042 -:1092200020000000000000002014CC00B308A020A3 -:1092300008118A0E0080002C900B37020C00900061 -:109240002CC00B3042CC04A3802C500B3002C8043D -:109250003000000000000000A815BC00F98032605A -:109260000CD4033C8088003ED00FF8032800FA009D -:109270003EC00FB007EC01BB803E540FB006EA04BD -:1092800060000000000000008000EE08F9803AC095 -:109290000F9003EC00F8403E580FB043E900EB4458 -:1092A0003E000F8003E00DF8003E800F8003E000D9 -:1092B00030000000000000000110DC00CF0033404F -:1092C0000CD0033C30CC003BC02DF003D802CC00C6 -:1092D0003D000CC003F400EE0237400CE003C04434 -:1092E000300000000000000081046C18838420001E -:1092F0004A10020C00A8482E6008B002E90089401C -:109300002EC008B002E810B10120800A9003A040EE -:10931000100000000000000080052C008B82220855 -:109320000890022C1488042C0808B012E8008A0067 -:109330002EC00AB002E801B9002604089002E0003D -:10934000400000000000000008040C008380A2C060 -:109350000A92022C00A2002C00083402C8008300EC -:109360002C00280002C401BA0022C0022006C2015B -:109370000000000000000000000D6C00CA00B200F8 -:109380000C920B2C04C8043A000CB403E800C8008B -:109390002E000C8033E140E80036000C8003C0034F -:1093A0005000000000000000A01DFC00FF003D0078 -:1093B0000FD10BFC01FC003F000FF003D800FD00B3 -:1093C0003FC00FF003FC80FF003FC00FF007A8066E -:1093D0007000000000000000C015F300CF80356071 -:1093E0004E68435C00E78039C00CC1037E00CF3477 -:1093F00035E14DF2037C00DF383FC80FF803F00081 -:109400007000000000000000C018C800DB8422606B -:1094100008AC0A2C008B8022300891222C90276106 -:1094200022CA88FC22BF008B622FD009B803B00487 -:109430003000000000000000C805E280A9022440BE -:109440008234420400A90028C54832024C208330EF -:1094500020C00831020D00B3202CC40B3002F201F1 -:109460007000000000000000C005AA02B9042260DC -:1094700028B2022600898802C0083112EC008B0055 -:109480002AD008B002AC002B002EC00BB002B004F2 -:109490006000000000000000C005E200E30036208C -:1094A0000EA4636E00E1C01AC10C80036870CB008B -:1094B00036800DB0034C00FB043EC10FB003D00456 -:1094C0007000000000000000E001B804DF003F0071 -:1094D0000FE803FC00FD003F002B98033A007700E3 -:1094E00027E40FF003FC00DF003EC00DF043F8005E -:1094F00060000000000000005000A468CB203A90FB -:109500000F24A3AC00E9503AC00EB4832C08EB0042 -:109510003A900EB08BEC80FB003EC00EB00390047E -:109520002000000000000000C8010A008BA020807D -:109530000DA8022C04894028E808B2022C00AF00D4 -:109540000280087C033D803F002FC008B002360037 -:109550004000000000000000E0054900034028C072 -:109560002B284A2800A10068D20A2042A401A300A7 -:1095700002400A34020D0033002CC00A3000B8004B -:109580005000000000000000B8011A00879021E49C -:109590002BC8123A0085C02B21286802B600A78488 -:1095A00023600838801E00B7802DE00878022E0066 -:1095B000400000000000000048080800C1003854C6 -:1095C0000F26838000E03428C80E2C0B8C00E300AB -:1095D00078450E30038E80F3003CC80E30039202B3 -:1095E0000000000000000000401DB800F5023F44EC -:1095F0000D9003F800BD141FC00FE1235C449F428F -:109600003FC00FF4827D40FF103FC04F7007D0066F -:109610006000000000000000A805E802CB0038C090 -:109620003CA003EC00E9003EC00CB0032004FB2189 -:109630003E804FB403CF00CB003ECC4FB043EA0096 -:109640007000000000000000C8919800870021C051 -:10965000084002DC04B5002D002D70021C1CB7026E -:109660002DC00B7202DC0087402DCA8B7002F20401 -:1096700060000000000000008000BA0087882BE036 -:10968000187822D611A4822FE00878021200B7942D -:109690006D604B7A02DE40B7A02DE00B7806E0004B -:1096A00020000000000000004814C912838228D462 -:1096B000980006EF05B1902CC109B4020C04B30167 -:1096C0006CF00B3002CC00BB002EC00B3002D20479 -:1096D0003000000000000000E815B840CA803BA040 -:1096E0004CE502F880EE003D802CE00F3880FA0057 -:1096F0003FA90FA003E800BA023E808BA003FA0442 -:1097000060000000000000004800E010F8002602A1 -:109710000F8403E024F8003E004F80A3E030F800FF -:1097200036020F8023E00408003E000F8003D200C1 -:1097300030000000000000000810E400D900B6412D -:109740004E990BA40069103E400C9003A410C90070 -:109750003E400D9203E600F9003A400E9003C20429 -:1097600030000000000000008004640081002042FE -:1097700008149A240089006E500090022410D90227 -:109780006E400B9403A700B9002240089003E0004C -:109790001000000000000000180506009900A64116 -:1097A0000A90062C00A9096E5008910284048900D1 -:1097B0000E400B9402E549B9000A400A9002C60027 -:1097C0004000000000000000080406008100224064 -:1097D0000812220481A1002C4008160204009120E6 -:1097E0002C400B12428489B1202048081002C2018B -:1097F0000000000000000000B80D6140D8003600F5 -:109800000A8003A140E8002E000C0023A140C850AC -:109810002E140D8003E000F8503A000E8003EE0392 -:109820005000000000000000881DD400F500BF407B -:109830000FD103F444DD023D502BD123F400F91085 -:109840003F400D9103A448F9123E4E1F9003A6021B -:1098500070000000000000001815F400C5043B4033 -:109860000FD803A780FD00B3680DD843A510C9A089 -:1098700032514F5A433600C9A07A680BD003C60153 -:1098800070000000000000007818CA8888020200FA -:109890008D84222342F8002204288AA2AA9488E90F -:1098A00020A80A800A214080E22E280B8002CE04E4 -:1098B00030000000000000004805C420A104A8C03A -:1098C0000B1C2A2400390420402A1E02E480B11017 -:1098D0002A48091446040081382C5B0B1002D20080 -:1098E00030000000000000001805A412A924224046 -:1098F000299002240039000258081810E601B90026 -:10990000AA44089002240089000E410B9002C6046C -:109910006000000000000000A005E400E1012A64EE -:109920002F94132402716012604D9000C502F9005B -:109930003A400F90232402C9023A400F9002E804F3 -:1099400050000000000000006801A400D9003E6043 -:10995000AF90836488F9203E62039083A400C9001D -:1099600036600F1003C400F9007E400F9003DA0048 -:1099700060000000000000002800A100C882320042 -:109980006F0003A000D84030000E80036004F8018F -:109990003E104F808B2200F80032010E8003CA0473 -:1099A0002000000000000000280138000E00A990EF -:1099B0002FE62088009E8023800AE8032800BA0052 -:1099C00018800DEC023880BA00A28008A0038A003B -:1099D000400000000000000028056C02838020C8C1 -:1099E0000B20020C01921068C03A3C02CC103B02E2 -:1099F0000CC0283C024E00B30028C0283002CA0028 -:109A00005000000000000000A001140087422BC09D -:109A10002970229C00B6002BC20A60861C00B72168 -:109A200029C00074025C00379101E0087402A800AC -:109A30004000000000000000A8081E00C78021E0D0 -:109A40002F78029E00968039E02EF803DE30F7D0A2 -:109A50002DF20078035200F7A23BE00E7807EA02ED -:109A60000000000000000000081DB400FB000CC056 -:109A70000F3003EC10D300B4C02F80036C48FB0000 -:109A80003EC84D9003A400FB201EC00FB003C206C9 -:109A900060000000000000000005FE00CC802B2CC0 -:109AA0002FF8037E006E803BA10DD8433E00FF904F -:109AB00033E00FE933FE00CFC03FE20FD803C00010 -:109AC0007000000000000000A811B44087002104CD -:109AD0000878021C00860021C0289002DC00B71024 -:109AE00021C00F7302CC0087002DC00B5002EA008A -:109AF000600000000000000000009D00A400294854 -:109B00006AF0824C00AE00A1C42974025C40A3102C -:109B100061C20B6006C80087002DC00B5002C00454 -:109B200020000000000000002014E601A3022040F5 -:109B3000283C020C00834220C8081002CD00B3006C -:109B400028F00B3002CC0183042CC0831002C8041F -:109B50003000000000000000A815AA80EB0038C00B -:109B60000A90037C22A24032480DB00B3E00FF0059 -:109B700033F40F9003EC008F023FC00F9003EA0410 -:109B800060000000000000008000E000D9023EC03C -:109B90000EB603EC00FA203EC04F2423AC60FB005D -:109BA000A6C00E9003E400FB003CC10F9003E00050 -:109BB00030000000000000000110F802CF0033E088 -:109BC0002CF013BC002E10B1642EF0023C00FF02FA -:109BD0003FC14DEC63FE00B7003BC00CD803C0444E -:109BE000300000000000000080046C28818122E029 -:109BF0000A38023C04BAC932E02084022C00BB00BF -:109C00002EC00B9C02E781BB0422C00A9902E0002F -:109C10001000000000000000800528408880228895 -:109C200028BC42AC00BA002A80088402AC00BB0009 -:109C30002EC00BB082E890AB0062C008B012E0000A -:109C400040000000000000000804000089002A8095 -:109C500028B2020C00BA0020C00800028C00B30039 -:109C60002CC00B30204C14B30020C0083002C201BD -:109C70000000000000000000000D6800C800B2C035 -:109C80002CB203AC00FA003AC04EA503BC00FF00A2 -:109C90003FC009A003E904EF00BAC00CB001C00145 -:109CA0001000000000000000A019FC00F50035C005 -:109CB000AF3403FC00F40039C00FC2037C00FF0185 -:109CC0003FC00FF003FCA0FF003FC00FF003E8050A -:109CD0006000000000000000C005FC00FF293D20DE -:109CE0008EC1033248DC8023250EF2033CC0DF84A2 -:109CF00033C90FF203FC00CF8033400CF203300075 -:109D000070000000000000008010ECC0BB602E0856 -:109D100008810220048820204808F1822DC0830099 -:109D200022D409F502FC088B01224028B402200449 -:109D300030000000000000008805CC20B3092C8210 -:109D4000081016A010900828480A32020C00BB0028 -:109D50002CC00B3002CC02930120008A3122E20198 -:109D60007000000000000000C015AC04BB002C8097 -:109D7000088602A020A0002A600AB0102C00AB0CBC -:109D80006EC009B002CC009B0022600AB002F00451 -:109D900060000000000000000015EC00BB003E3435 -:109DA00008A00B8300D9023AE02EB00B2C00F880FB -:109DB0003EC04FB003EC00CA40B2720EB00BC004FC -:109DC0007000000000000000E001BC10FB003F003C -:109DD0000DF8137048DD4037C28DF003DC00DDC89C -:109DE00013C00FF003FC00EE407F400D70033800FD -:109DF00060000000000000004010AC00FB0132C019 -:109E00000410032040E8103AC00DB003AC08F8403D -:109E1000B2C02CB033A482DA40BA400FB003D004F1 -:109E20002000000000000000C8053C08BF8022C8D8 -:109E300008B700234488D022D0087082FC00B2E02A -:109E400003F408F50237048BD122604BFD02F200C7 -:109E50004000000000000000E0054C00B310A440EA -:109E60000800024800A0422AD00130028C00B380D2 -:109E70002CC0093102CC00890022E8033802F80026 -:109E8000500000000000000060011E00B780276441 -:109E9000684A0252008C8021E0087802DE00B78018 -:109EA0002DE21939025E30859821E40B7902D80041 -:109EB000400000000000000048080C00F3203400BF -:109EC0000CB8034880E22238C00D30038C00F30048 -:109ED0003EC00D3103EC00CB0038060F3083D202B8 -:109EE0000000000000000000401DBC00FF003B011E -:109EF0000FD0039000F6003FC00FF401FC00FF01FB -:109F000033C20EF513BC00ED003FC40FF003D006C2 -:109F10006000000000000000A805EC00FB003CC051 -:109F20000EA0016401D80032E02CB5032C00F20031 -:109F30007AC00DB4032D80C90232C00CB0032A00D0 -:109F4000700000000000000048119C80B7002DC088 -:109F50000D6002D001840021C00830021D00B7004E -:109F600021C80BF4031EC0860021C0087C035204E4 -:109F70006000000000000000C0009EC0B7902DE00F -:109F8000087806D601B48221E008780A1E00B5C020 -:109F900029E809780236C1978028B00A7A02300091 -:109FA00020000000000000004814CC00BB002CE0A2 -:109FB000093582C0C1A05120E40830028C00BBC426 -:109FC00020C00B300206009318AAB02A300A5204AF -:109FD0003000000000000000E815A800FA013DACC8 -:109FE0004CEC137810F680B3900CA0032800FE0010 -:109FF0003A810DA00F2A80DE043BA00EA0033A0494 -:10A0000060000000000000004800E000F8003E0092 -:10A010000D8002E100D8483E120F80136000F86006 -:10A020003E00078003A002E8042608058003920092 -:10A0300030000000000000000810E400F9043A407D -:10A040000C12032482C90036440F10032400F900C7 -:10A0500036400490030400C90012400C900302042F -:10A06000300000000000000080046400B98122403C -:10A0700008901A2400890022680B99022400B90074 -:10A08000224068900A24008900A24008900A20001B -:10A09000100000000000000018052400B91022E0A4 -:10A0A00008940004048B0826C00B90022404B90C09 -:10A0B00024400A1002240023022A40A810020600AD -:10A0C000400000000000000008040490B12022407D -:10A0D0000812020C108102A0500B12020480B1057C -:10A0E00000480A100204A0A100284A081200020138 -:10A0F0000000000000000000B80D6140F850BA14E4 -:10A100000C85030142C85034000F85032140F8003C -:10A1100036000E80132080E0001A080C00032E0386 -:10A120005000000000000000981DE444F9103F407A -:10A130002FD113F404F5003F400F910BE440FF28AA -:10A14000BE4E0D9683D4A2DD28374A0F9383E606D0 -:10A1500070000000000000009805E410CD003F40B2 -:10A160000FD00335025D0131440FD0032400F90004 -:10A1700032600C9883E640D900366A0C9E83260133 -:10A1800060000000000000003810E00088002E0091 -:10A190000B804202808A0022208880032008B88237 -:10A1A0002221088882E24288A8222008CE020E04DA -:10A1B00030000000000000000805C4028100684073 -:10A1C0000B10028401B900204049100A0400B508B0 -:10A1D0002146085002D4008D20254A0B500242012E -:10A1E00030000000000000001811A40089046E5423 -:10A1F0000B1012A401A900A2401890162400B90067 -:10A20000234018D002F4008D40214A0BD0024604AE -:10A210006000000000000000A015E400C9003A50F2 -:10A220008F960B8402F10130488D90032410F900C1 -:10A23000B2402C9003E640D1C036502F900B6804FA -:10A2400070000000000000002801A400F9003E603A -:10A250000F99C36400D9283E400D9003A400F94033 -:10A260003E400F9003E420F9403E400C90038A00EA -:10A2700060000000000000002810A000F801360077 -:10A280008F8003E002F80432000D80432002CC00EE -:10A290003F000FC0139002DC403F104CC0230A0463 -:10A2A000200000000000000028052800BA002280DD -:10A2B0000BE820F8004EC023A008A00368008A0025 -:10A2C0002E801FA0022A068A002EA00260030A0028 -:10A2D000400000000000000028056C00B30020C012 -:10A2E0000B3D02C003230020E001B0064C008B00B0 -:10A2F0002EC04B30028E0883802CC400348E4A005E -:10A300005000000000000000A0011C80B58061C06A -:10A310000B4002D400840823C20850025EC08401AE -:10A320002D008A0802102484086D000A03122800F8 -:10A330004000000000000000A8081E00F582216017 -:10A340000F7803D604AE8031E00D58237E00C6801E -:10A350002DE00B78038E00D7823DF00C7A036A0261 -:10A360000000000000000000081DAC00F100BAD899 -:10A370000F8003E412F800BE800E1003EC00F90019 -:10A380003E005F8003E008F8043C000F8003C20633 -:10A3900060000000000000004005FE20FF803FF04C -:10A3A0000FF803D200EF84B3610CB903FE00FF8005 -:10A3B00033E00CF8132211CD903F600CE80310003D -:10A3C0007000000000000000A8119C00F5002DC0E6 -:10A3D0000B0002D40484202340085A02DC00B4009D -:10A3E000210028C2021E0486042D8808D0022A04F7 -:10A3F000600000000000000010009C00B5002D402F -:10A400000B7002F420A70421C00A5002DC00BE0039 -:10A4100021C0087012000085002D4088680A0400E1 -:10A4200020000000000000006014CC00A1002EC03D -:10A430001B0806C420800020981A1002CC00B10826 -:10A4400020000800020C0182C02CAC2890221804C5 -:10A450003000000000000000A815BC00B3003E4022 -:10A460000FBA03E502E9043290AEB003FC10FB40E2 -:10A47000B2000C800B2C0282183FA00CD0032E04DB -:10A4800060000000000000009000EC04FB013E4072 -:10A490000FB643E400F8003E80019003EC00F88121 -:10A4A0003ED00DB453E000F9403E400FA003E00061 -:10A4B00030000000000000008010DC02CD8033601E -:10A4C0002CDA03FC00EC0033400FF2037C04FE00A6 -:10A4D00032000CC8033C00CE0031800CD1032404B0 -:10A4E000300000000000000091046C0009002A64A4 -:10A4F000088E02C210A0103E100B9802EC00B900AA -:10A5000002D808BE2220008900225008A002204064 -:10A51000100000000000000080052C000B202240ED -:10A5200008A002E542AB0422180BB0026C00B30095 -:10A5300020040801020004A8402210088002200024 -:10A54000400000000000000008040C0883002840C0 -:10A55000080402C402A8002C000B1202CC00B000B8 -:10A5600020C04030020C008B00A8C008300202114D -:10A570000000000000000000800D6C00C9003340A6 -:10A580000CB003EC02EB0032400FB0036C00FA0099 -:10A5900032000C80032080C80030000C80032003B0 -:10A5A0005000000000000000A019FC00FD003F402A -:10A5B0000FC213F000F4003F004FD403FC00F5007D -:10A5C0003FC08FF003FC40FF0037C02FF003E806C8 -:10A5D0007000000000000000C005F000CC00330057 -:10A5E0000ED00B3300CC0033E00FC0837C00CF20B3 -:10A5F0007B098CF803FE50CF383FE10DC203F00019 -:10A6000070000000000000008010E2009808208028 -:10A61000089802200088D022E00EB4227D199F699C -:10A620002E900830922881DB642EE18816A2E00487 -:10A6300030000000000000008805C80090242001C0 -:10A640000810160082830128C10B02820CE0A310BF -:10A65000280E1B9202848493202EC0083102E2014E -:10A660007000000000000000C015A81098002280B3 -:10A6700008900200608A102AC00A20026C18BB00F1 -:10A680006E602B900246208B002EC208B182F0042F -:10A6900060000000000000004011E402CB00B24066 -:10A6A0002C920327008800BAC00F88032C00EB040B -:10A6B0003AA0CF2CA3ED009B003CF02D8C33D004AE -:10A6C0007000000000000000E001B404EF003FC093 -:10A6D0000D5103F000F18137C00EF4039C10CF0040 -:10A6E0003D800CEC07B808FF021FC40FC803F80038 -:10A6F000600000000000000040109E00C3003840D1 -:10A700000C9203A480FB203AC00D94032C40FB0064 -:10A710003E010F8003E500EB003AC00D840B1004EE -:10A720002000000000000000C8052C088B0222C099 -:10A7300008920321008B4822C00BB7023D403F0125 -:10A7400022740B90022804BF00B2C00B85023200B5 -:10A750004000000000000000E005400180002800EB -:10A76000082C128840B04008C00B18020E00B3003D -:10A7700028201130020C00B3002400090006380024 -:10A78000500000000000000020011200848021A081 -:10A790002868123A00848025E08B58021E40B78258 -:10A7A00021A60B78021A00B78021200B580208005E -:10A7B000400000000000000048080800C8213809D7 -:10A7C0000C28038001F10038C00D85020C00FB004D -:10A7D00038850F10038C00EB103CC80D30031202BB -:10A7E0000000000000000000401D9800FC013F80B8 -:10A7F0000F6803D040FC003BC00DC003FC20FF00ED -:10A800003BC50FF00BB440FF183F000FF103D0061B -:10A810006000000000000000A805E400EB00B0416B -:10A820000CA003E004CA04B0E00EB003EC80CB201F -:10A8300032810CA003EE00DB003E000EB0032A00C4 -:10A84000700000000000000048119404870021C03F -:10A85000486002F000870021C0087002FCA0832835 -:10A86000A380086002DC0087202DC00B7002120458 -:10A870006000000000000000C0009C02A380216076 -:10A88000086802D200878021E0297802DE80879064 -:10A8900021A0194802FE0097802DE00A388230007E -:10A8A00020000000000000004814CC01838020C07C -:10A8B000082042C0308370A0C0893402CC028300DB -:10A8C00060C0290002CE0083002CC80BBC02120419 -:10A8D0003000000000000000E815A900EAE2329014 -:10A8E0002CE003FB02CEC032800FE403E8008A00B4 -:10A8F00033880D64C3FA00DA003D900EE00B3A0491 -:10A9000060000000000000004800C024F8083E126B -:10A910000FC003E048F0003E000E8093C000F80036 -:10A920007E010E80C2E040F8007E008F8403D200DA -:10A9300030000000000000000810E500C1013248AE -:10A940000C9803E640C90032400F90036600C9002E -:10A9500018610C90036420F9053E400C90830204BA -:10A9600030000000000000008004662089002052B2 -:10A970002810C22602A90022400B900A2700A90035 -:10A9800022700890022408B9002E400A900A200084 -:10A990001000000000000000180524028D00234074 -:10A9A00008D1028420890022600B11F224B08100BA -:10A9B0002A460890426408B9002E40089202060018 -:10A9C0004000000000000000080414808520234897 -:10A9D0000852028408810020400B12020480A1204A -:10A9E0002849289002040031202E4008320202013A -:10A9F0000000000000000000B80D6000C850B21454 -:10AA00000CC003A140C800B2000785032140C85014 -:10AA10003A150C85036140F8513E002C85032E0346 -:10AA20005000000000000000981DC448F9103E448A -:10AA30004F91037400F5443E400FD103E440F910F8 -:10AA400037440FD003D400F9103FC00FD103E606FE -:10AA500070000000000000001815F6A0DD8C3378AF -:10AA60000EDA033500CDA033400DF80B3681E980B6 -:10AA700033700C9103E440F9C03EC00FDC03C60004 -:10AA800070000000000000003810E104B840203CD5 -:10AA90000C850202848A402200088F822300B8E8D5 -:10AAA0002220088802E200B8D02E000B8C02CE04CF -:10AAB00030000000000000000805C400910060485C -:10AAC0004B1002048A814060404910028DA0A141D0 -:10AAD0002050091222C480B1202C404B3E02C201FA -:10AAE00070000000000000001815A408B904A04080 -:10AAF00048B0022400890082400890A6A400B9044E -:10AB00002254299502E540B9006E400B9202C6041A -:10AB10006000000000000000A005E4009100324049 -:10AB20000F90092400899032400D9403A400E9029B -:10AB300072600D9403E401F9013E600F9003E80494 -:10AB400070000000000000002801A440F9003E4011 -:10AB50004F9003E710F9803E400F10136400F1009E -:10AB6000BE400E9003E608F9013E640F9003CA0050 -:10AB700060000000000000002800A000F80032087B -:10AB80000C010B2040C84032000E84832000F804E2 -:10AB90003E040F80032100E8003E100F8803CA0422 -:10ABA0002000000000000000280538003E0423803B -:10ABB00008EC123944A600288108E0003808BA00E1 -:10ABC0003F800BA002A8008A022E800BE002CA0080 -:10ABD000400000000000000028054800310024D09B -:10ABE000083E12AE0881A02CC00A38004C00B30009 -:10ABF0006EC00A30020C00A3006CC00B3002CA0009 -:10AC00005000000000000000A0011800B51025C091 -:10AC10002860129010A5082DC20864225818B700A9 -:10AC20002D800B7902BEC087016DC00B6002E80069 -:10AC30004000000000000000A8081E00F584352038 -:10AC40008C18029210C5803D600EC80B5A0877F32D -:10AC50003DA00FF8031EB0E7853DE00F7803EA0240 -:10AC60000000000000000000081DAC00F104BA0163 -:10AC70000FA0436009E10038400EA003A814FB2098 -:10AC80003A800FB41B4C80FB293EC00FB023C20694 -:10AC900060000000000000000005FA00CD803BE0ED -:10ACA0004EF803F202D4813BE08E98073E44EF91C8 -:10ACB0003FE04FFC07EED0CF9833E40FF803C0001D -:10ACC0007000000000000000A801980085102DC44D -:10ACD0000D1102F000852031C40B7B003840D710E5 -:10ACE0002D800B7062FEE1871439C00B6002EA040C -:10ACF00060000000000000000010BC40A5002940DA -:10AD00000B5082DC4084042DC00B10065844A71061 -:10AD10002D800B7102DC00870421C20B5002C01091 -:10AD200020000000000000002014CC0AA1012C40EB -:10AD3000891802C100A10820C00B34064000930509 -:10AD40002C140B3C86CE10830128F10B1402C8048E -:10AD50003000000000000000A815A000ED003AC07F -:10AD600007BC63ED0081403EC00E88036400EF0025 -:10AD70007E500FF002FD42CF0072C01FB403EA0400 -:10AD800060000000000000008000E80099003EE044 -:10AD90004FB483ED9009403EC00FA183A801EB01A1 -:10ADA0003E000FB113EC0CFB003AC05F2023E00023 -:10ADB00030000000000000000110F800FD043FB06A -:10ADC0000D60033E00CD0033F00FF201F000FF03F1 -:10ADD0003F030FF001FC00FB0233C20FF0E300441D -:10ADE000300000000000000081046A00B9022EA0BB -:10ADF0004AAC020E80F9C036E10BA0022A08BB0063 -:10AE00002E200EB002EC00EB0022C08BB0022040DE -:10AE1000100000000000000080012300A90028C0ED -:10AE200009B2226C4089892AC00B14062600AB02A5 -:10AE30006EE009B0066C00B30222C00BB002200025 -:10AE4000400000000000000008040800B1002CC011 -:10AE50000A30022C00BB0064C00B320A0800330029 -:10AE60006C80023046CC18A30020C00B28020211CF -:10AE7000000000000000000000056800E90038C183 -:10AE80000DB10B2C0089003AC00B90036000FF024B -:10AE90003E800FF003FC80FF0032C08F800B000368 -:10AEA0005000000000000000A011D800FD043FC0C9 -:10AEB0002FF203FC11EF003FC00FF4437000FF00BE -:10AEC0003F0046F003FD00EF003FC00FC003E8065F -:10AED0007000000000000000C005FE00FF803DE0A3 -:10AEE0000CF913DE007F80B3E00FFC03BE40CF807F -:10AEF00033F00FF8037C04CC8033A00CF00B30014E -:10AF000070000000000000008010E02088002E206B -:10AF1000088212E080A88122020B80022080A88093 -:10AF200022080B80022C028804AA2008B002200408 -:10AF300020000000000000008805EC00A3082C8021 -:10AF4000083202C420A30028400B92028400A90109 -:10AF500028C81B1282CC40A80024E00A30422201FB -:10AF60003000000000000000C011A880A8022E40A0 -:10AF7000688010C800B8402A900BA0002800AA08DA -:10AF80002A020320028C00A8882E200AB002300476 -:10AF900060000000000000004015E804FA003C409A -:10AFA0000CA003E800EB003AC00F2053A800E340D8 -:10AFB0002A400FA0036C00A88034201EB0031004A8 -:10AFC0007000000000000000E001B4009D913F808F -:10AFD0000FDA23F400CC20370007D0137400BC0034 -:10AFE000B7800BD0437C00DC043B006DF003F8001D -:10AFF00060000000000000004010A800FA803A0045 -:10B000002CA00B2002CB623E500E88032000D910EA -:10B010003E708C8033EC80D8403A020DB0031004AF -:10B020002000000000000000C8010C00398022C090 -:10B030000C9D822C10D0402EA008B8034E028A40EE -:10B040000EA00DB0033D00D09036100BF002B20000 -:10B050004000000000000000E0054C00B10060C0AE -:10B060008A18028C0880400CA0023002CE00824870 -:10B070002C802B30068C008102209009B002380011 -:10B08000500000000000000020011200B690A33024 -:10B0900008E822B21487802D600849121261959049 -:10B0A0002D610A48161E80958025200B78028800A5 -:10B0B000400000000000000048080C00F100288C4F -:10B0C0008E1003848080002C020A9A02E400D000D3 -:10B0D0003E800B91038E80C20838800DB0031202AF -:10B0E0000000000000000000401DB000F6003F44DA -:10B0F0000F21137800FF003DC00FE0037800EF043C -:10B100003F408DE803DC04F6003F000FF083D006DB -:10B110006000000000000000A805E800E880324060 -:10B120000F880B280078023E800E28032800CA8072 -:10B1300032000FA003EC00C98032800FB0032A0058 -:10B14000700000000000000048118C008F00A180FA -:10B150000B70421400B7002D410B50421400A500A3 -:10B16000A1C00B5002FC80A50021000BF2021204CA -:10B170006000000000000000C000BA00A480293078 -:10B180004B48065208B4802D200B48423200848080 -:10B1900021200B4812DE40868129A00B780A30005E -:10B1A00020000000000000004814CC00830520E0CF -:10B1B0000B34026C10B3002CC00B364A0D0DA300EB -:10B1C00020C00B3482CC02A20028000B30021204F3 -:10B1D0003000000000000000E815A920EA4030A07F -:10B1E00007A0436940FA003C800FA0030840CA0052 -:10B1F00030A00FA403E800CE003B980FA0033A0450 -:10B2000060000000000000004800D200FC083F0081 -:10B210000BC203B000FC003F000FC003F000FC00B5 -:10B220003F040FC003E000F800B6020F8003D20015 -:10B2300030000000000000000810E400D9003E6863 -:10B240004C9101E408C9003E402C9203E402C9A0DD -:10B250003E700E9003C642C9003E400F1003020428 -:10B2600030000000000000008004640089860E6049 -:10B27000089802E40889102E60089002E400890C06 -:10B280002E60089002E68889002E400B9002A000F4 -:10B290001000000000000000180524009D102F4041 -:10B2A00028D006F402AD002F6008D002F4008D0013 -:10B2B0002F400AD002E40089002E600B90020600A5 -:10B2C00040000000000000000804340085002D400C -:10B2D000085802D400A5022D40085000D400850073 -:10B2E0002D40085402C48081002C600B140282019E -:10B2F0000000000000000000B80D6140D8523E0080 -:10B300000C0503E140E8043E140C8503E140C8004D -:10B310003E140EC003E000C0023E004F80232E0307 -:10B320005000000000000000981DF400F9013E40AC -:10B330004F9013E400D9001E400F9003C410F10099 -:10B340001E400F9003E4E0FD283F400F9403E60603 -:10B3500070000000000000001805A400FD003F4040 -:10B360004D5002E4009504334028D003F400FD0062 -:10B3700033400F91033400CD4033400F98810600D5 -:10B3800070000000000000003810E010B8002E002F -:10B390000B8002E010B8002200088002E000B80034 -:10B3A00022000B8803C280888022000B8C020E04CE -:10B3B00030000000000000000804C400B1002CC0F0 -:10B3C0000B1002C400BB002240081002C401B900E7 -:10B3D00020401B90020422890020600B128202018F -:10B3E00070000000000000001815A444B9002EC031 -:10B3F0004B9002E410B9020240089142E400B98087 -:10B4000022400B9202C400994022404B9012060445 -:10B410006000000000000000A015E600B9013E58E1 -:10B420000D9003E600D10032600C9802E640F9006E -:10B43000B2400F18032400C98032500F9023280413 -:10B4400070000000000000002801A400F9003E4246 -:10B450000B9003E708F900BE480F9003E400F900E1 -:10B460003E400F9803A400E9A0BE400F100B4A0015 -:10B4700060000000000000002810A000D8013E007D -:10B480000F808B2000F8203E010F8103E000F808B8 -:10B490003A000C8003E000D84032000F80130A0409 -:10B4A0002000000000000000280528008A802F915D -:10B4B0000BEE022801BE0020800BA002EA80B648F5 -:10B4C00022800DA002FA028641A3A60BA0030A0067 -:10B4D000400000000000000028054C0093802CC0B4 -:10B4E0000B30020C10B30028C00B3802CC00B300A4 -:10B4F00028C0093002C601836020700B300A4A0060 -:10B500005000000000000000A0012E8885082D805A -:10B510004BF8061C80B70021C00B5002D400B600C7 -:10B520002960097002D0A08D0021400B3202280052 -:10B530004000000000000000A8081E00D5803DE08B -:10B540008F78031E84B7823D600F5903DE00F780B9 -:10B550002960157803DE00C78031600F7C036A0222 -:10B560000000000000000000081DAC40E9003E8023 -:10B570000FA003ED30FB0036C10F9603E400B300CB -:10B5800034400FB783EC4021003E400FB003C206A9 -:10B5900060000000000000000005FE00FF8133E0B5 -:10B5A0000FF903DE20CF813FE00778033E00FF80E4 -:10B5B0003FE004F813FE02DE8033600FF803000062 -:10B5C0007000000000000000A8119C00B70021C41A -:10B5D0000B5A02DC4886502DC00B31029460B4181F -:10B5E0002D40487002E800A51021400B71022A048A -:10B5F000600000000000000000009C00BD0021422F -:10B600000B7002FC02850025400B50029C00B70025 -:10B610002F40287102DC00A60021C00B7002000040 -:10B62000200000000000000020146D80B120A05018 -:10B630000BB206CE00A0342EF00B18028520B34AC0 -:10B640002C54883802CC10A10020B00B3002080422 -:10B650003000000000000000A815BE80F308105460 -:10B660000B8813FF00C0803E640FB4830700F9C04D -:10B670003EF00CFC13F400EA0032700FF00B2A04C9 -:10B6800060000000000000008000EC00F9003E10A7 -:10B69000079103ECC058003E440F9203E400F90008 -:10B6A0003EC08FB303E000BB00BE440FB003E00018 -:10B6B00030000000000000000110FC02CD0433E067 -:10B6C0000CC0033C08FE0033602CD002B480CF00D5 -:10B6D0003F5207F013FC00CE1033420CB003C044BD -:10B6E000300000000000000081046C0089002AB0D6 -:10B6F0000888022C00BA0036440890002600DBC0FF -:10B700002E400BB002EC0083C028400AB002E0409B -:10B71000100000000000000080052C008B002208B3 -:10B720001AA2022C10B92022400830022C04AA547C -:10B730002EC00BB012CC008B08224008B002E000F3 -:10B74000400000000000000008040C0083042A00F0 -:10B750000A08820C00B8006440083002A400B0005F -:10B760002CC08B3010C8028B002A400A3002C20164 -:10B770000000000000000000000D6C00C900320055 -:10B780001A82033C00F90032400CD103AC00EB00FC -:10B790003E400FF003ED00C30032C08CB003C00385 -:10B7A0005000000000000000A019FC00F5003F0060 -:10B7B0000D804BFC007C003F400FD20B7400DF007B -:10B7C0001D408FF003FCA0FF003F800FF003E80650 -:10B7D0007000000000000000C005FC00DF843BE0BA -:10B7E0000FF80B3E00EC8033E10C30033C80CF4877 -:10B7F00037C00E4003E0C0C791B3040CF003300023 -:10B8000070000000000000008010EF048B802241D7 -:10B810000BB0822E008880A2E00AA292AD808742FF -:10B8200023D88AAD02E0C08B00204C48A40220043B -:10B8300030000000000000008805CC58BB002880C4 -:10B840000BB2422400A8002AC00A10020460A32000 -:10B8500024D20800428C839B0120490833C2220174 -:10B860007000000000000000C015AC00AB8822A0F2 -:10B870000BB802260CA8002AC00A9202A400AB064C -:10B8800022C00AB002E8009B00024008A042300437 -:10B8900060000000000000004015EC00D3803AE09A -:10B8A0000F18010600E83038660EB8032A40EB0096 -:10B8B00036C10E9603E280DA0832802CBB031004F6 -:10B8C0007000000000000000E0019C00DF003FC0AD -:10B8D0000FD003F400DC8037600FE803FA00DF01CB -:10B8E0003FC00FC043E64CEFA03F440FA003F80059 -:10B8F00060000000000000004010AC40DB0036801B -:10B900000C98032600F8003EC00E18038402E301E1 -:10B9100038C10EB403AC80CA183AD02C30031004DE -:10B920002000000000000000C8053F40B9882E80BC -:10B9300008BC02A300B0000EC008B00620008F04AF -:10B9400023C108B9122F008380364008AD023200AF -:10B950004000000000000000E0054C00B2002CC0D8 -:10B96000093202840033002CB20A36128C08930587 -:10B9700020C00B1802ED0091806A00081002380008 -:10B98000500000000000000020011E00B7802DE0E4 -:10B990000978029740B4802FA008E8020E409782F1 -:10B9A00021E09868821A189D902DA118580208006D -:10B9B000400000000000000048080CC0F3003EC03A -:10B9C0000DB0438440F0003C820E38128C44F330BA -:10B9D000BAC11E10478E22D11038180C30831202C3 -:10B9E0000000000000000000401DBC40FF003FC000 -:10B9F0000EE003F440FC003DC40FD001F441EF1809 -:10BA00003FC41FF003F848EF1433800FC103D00682 -:10BA10006000000000000000A805FC40FB003EC0E4 -:10BA20000F98032400CB003E400FB003A800DB2892 -:10BA30003EC41F9023EC00CA0032E00C9003EA00E1 -:10BA4000700000000000000048119C80B7002DC06D -:10BA50004B50521400D4012D800B6002D800A72057 -:10BA60002DC50B4016DC00840023C0084002D20420 -:10BA70006000000000000000C0009E80B7802DE044 -:10BA80000B780A960094802D601B7806D200A78060 -:10BA90002DE00B7822DE00878221E0085802F000BA -:10BAA00020000000000000004814CC00B3E42CC0CB -:10BAB0001B2102810090002CC80B3902CE00A3008C -:10BAC0002CC00B3002CD008B2020F008B202D20433 -:10BAD0003000000000000000E815A800FEA03F8232 -:10BAE0000FE8039830D6003FA00FE003BAC0FA0079 -:10BAF0003E800FEC33F802CE00B3B82CEC83FA048E -:10BB000060000000000000004800E018F8403E001F -:10BB10000F80026084F8052E048F8041E0007802D7 -:10BB20003E000F8183E020F800BE020F8003D200A8 -:10BB300030000000000000000810E618F9203E4028 -:10BB40000F9C03E440C90032610C9013C408C90182 -:10BB50003E410F18032400C9A032400F984302044D -:10BB6000300000000000000080046500B1C02240E9 -:10BB70000B9C02E71089002844089422E4108900F5 -:10BB80002E400B9F222660898022400B910A2000C4 -:10BB9000100000000000000018052480B9002EC02D -:10BBA0004BB402E42089202240089402EC00890072 -:10BBB0002E410B90020400894022400B90020600A7 -:10BBC000400000000000000008040400B104204010 -:10BBD0008B1002E40581002840281212C4828120C3 -:10BBE0002C480B120A0482810020480B1202020129 -:10BBF0000000000000000000B80D68A0FA023E142A -:10BC00000F8503E000C80032000C8503C140C85313 -:10BC10003E140F80030148C050B2140F85032E0359 -:10BC20005000000000000000981DE400FD00BF402F -:10BC30000F5013D402FD002FC00FD103F440F910B0 -:10BC40003E440FD103F440FF00BF440FD103E6068A -:10BC500070000000000000001805E6A0FD013E4451 -:10BC60000FD103D400C50033410FDB032720D9E0F7 -:10BC7000B2700DDA83F640CF1032782DDA03060069 -:10BC800070000000000000003810E100B8002E280D -:10BC90000B8842E010D80022000B8C0A230088C0D9 -:10BCA0002228088402C28080A0223048AA820E0482 -:10BCB00030000000000000000805C400B1002C4066 -:10BCC0008B1202C400990228408B160284819130A5 -:10BCD0002058091002C5008100644D083402020199 -:10BCE00070000000000000001815AC0CB9042E48CC -:10BCF0000B9406E4009940AA400B9222A40089000C -:10BD00006040089402E4008980A65008920206046C -:10BD10006000000000000000A015E400F9983E4813 -:10BD20000F9803E520D9003A640F9483A4C0D90288 -:10BD300072404D9042E482C94036400C900B28047A -:10BD400070000000000000002801AC28F9883E4087 -:10BD50000F9913E700F9C036600F90036600F100F9 -:10BD60007E400F9907E460F90038400F9803CA003D -:10BD700060000000000000002810A000F810320051 -:10BD80000F820B2100E80036040C8603E100D80086 -:10BD900032000F80036100C80032000F00030A0464 -:10BDA000200000000000000028052820BE0022809E -:10BDB00028EC021904820003800DE482E8008A0165 -:10BDC000AA808BED823B808E9036800BE0034A0088 -:10BDD000400000000000000028054200B38020C0A1 -:10BDE0006B341640C08310247288B002EC008300CC -:10BDF00024C00B04026F099B0024C00B30020A0010 -:10BE00005000000000000000A0011400B78023E4EF -:10BE100028788274148F0061E0095012DC048722B4 -:10BE200025C81B780214009440A5C00B602268004E -:10BE30004000000000000000A8081220B780B1E018 -:10BE40008FF8031202E78035E00C6806CFC2CFB04E -:10BE500025F40F58035A02D58075FA4FF8032A02C9 -:10BE60000000000000000000081DA590F3003DC088 -:10BE70004FB013A804FB003CC00F8043EC80EB6084 -:10BE80003AC90F3003EC00E9003EC80FA003C20618 -:10BE900060000000000000000005F600EE803FE0BA -:10BEA0000D8903D240E58139E03CF907FE00CF88D7 -:10BEB0003FE00FE803F208CE8033E00CF803000007 -:10BEC0007000000000000000A8119444C6002FC0BC -:10BED000085802D0C485242190085412DC8207003F -:10BEE0002DC00B7006D4008E4821C00A60022A04BF -:10BEF000600000000000000000009C00A7402DC072 -:10BF0000084202D000AD0029C0087022DC2887005A -:10BF10002DC00B400298009700A0C40870020000DA -:10BF200020000000000000002014CC0893002CE04A -:10BF3000083C22C10081002080881502CE30830099 -:10BF40002CC00B3C02CC0493C020F44A0C820804A1 -:10BF50003000000000000000A815A000E3C01FE0B2 -:10BF60006C1083E004EB003A524CB403FE02CF00A5 -:10BF70003FC00F8443E102D8C233C00C840B2A04B3 -:10BF800060000000000000008000E900EB103EC4EB -:10BF90000E9403E400FB183EC20FB603EC00FB0155 -:10BFA0003EC00F3503C428EA423EC00F8103E000C3 -:10BFB00030000000000000000110FC40FF0033C012 -:10BFC0000CC0A33028CDA033C00CE8030C00EF0553 -:10BFD0003DC00CCA833C00CD083FC20CA003C04446 -:10BFE000300000000000000081046700BB8020C01A -:10BFF00008AA020800A10134D108A4122C008B0069 -:10C000006EC088B2022C0889802EC00AA803A04006 -:10C01000100000000000000080052C00BA80A2C0C3 -:10C0200008A80AA0008B00A2C0481102AC048B0033 -:10C030002EC00080122A088B142CC0088802E00051 -:10C04000400000000000000008040C00B20022C004 -:10C0500008B2128000AB0124C00800020C04830067 -:10C060002CC00830020700820024C00808028201A8 -:10C070000000000000000000000D6C00FB0032C05A -:10C080000CA203A000C90032C02494033C02CF00DC -:10C090002FC004800B0902CB013FC02CA003C003BA -:10C0A0005000000000000000A019DC00FD023FC0AD -:10C0B0004FE4137000FD003FC00FC283FC00FF007F -:10C0C0003FC00FF003FC00FF003FC00FC003A806F5 -:10C0D0007000000000000000C005FC20EF303F04AD -:10C0E0006C88033A42E4913F0D0D48033CC0FF02C7 -:10C0F00033440CF403FC82DF3033600DF103300075 -:10C100007000000000000000A010ED008B702E18E1 -:10C1100088224A2C82EA262E0C0BB8423D80BF9022 -:10C120002A5428B402CD00DB402A4A483002A00439 -:10C1300030000000000000008805CCB0A3006C10A7 -:10C140000900822082A0202C884B80000C40B30183 -:10C1500020480B36028CE0836424402832022201FE -:10C160007000000000000000E011AC008B002E0009 -:10C17000098080A600BA112E880BB0002C00BB02EB -:10C18000024009B002EC008B002CC808B882B00451 -:10C1900060000000000000004015EC00EB003E9243 -:10C1A0000D80030A20E9003E504580012C04F30075 -:10C1B000906009B003EC008B0226508DBC03100484 -:10C1C0007000000000000000C001BC00FF023F80C2 -:10C1D0000EF9027C22AF003F6003C00BFC10FF0091 -:10C1E0003F4A4EF003FC00F7002B600F7003F8008D -:10C1F00060000000000000004010AC00FB00B00038 -:10C200000F820BA900C90032D20FA083AC00CB1063 -:10C210003E400CB003EC00DB0032502C95031004C0 -:10C220002000000000000000C8053C04BF0222807E -:10C230000B98002900CB4022C00B24023C088F50F1 -:10C240002E500DF002FD428F5822E048B502320018 -:10C250004000000000000000E0056C00B300244036 -:10C260004B940049009080043009000E4C008380FC -:10C270002CC00930226E42838020480838023800E2 -:10C28000500000000000000020011E00B780652063 -:10C290000B78827A088CC025A34B78025E048784D1 -:10C2A0002D61897802DE048780E96208780208003F -:10C2B000400000000000000048080C00FB0034486B -:10C2C0000F3B034800934834500D00036C00C3102B -:10C2D0001CC2053003CC40CB0032400C20031202BC -:10C2E0000000000000000000401DBC20FF010340D2 -:10C2F0000FF0231C00FF003B800FB0233C02FF50D7 -:10C300003DC40FF103EC00EF00B7C00FE103D0060E -:10C3100060000000000000008805EC00FB023EE029 -:10C320000C80034802C88132000F9042ECA0FB1041 -:10C330003EE00CB103EC40FB1032401FF0032A003A -:10C34000700000000000000048119C00B7242D8000 -:10C35000087042D8108C0221400B5002DD00E7200B -:10C360002F40087002DC05B70021C00BF002120458 -:10C370006000000000000000C0009E00B7902F4049 -:10C380000A68027A00978021E00B7802DE00B7800D -:10C390002DE0087806DE00B7A021600B784230005F -:10C3A00020000000000000004814CC00B3002CC0A6 -:10C3B0000A3402C800834A20F80B3102CC00A300E3 -:10C3C0002CC0083002CC00B30020B20B2042120473 -:10C3D0003000000000000000E815A800BA003F8807 -:10C3E0002EE0435988DE0033B00F6C03E800FA00FA -:10C3F0003E802CA003E804FA0023B80FE08B3A0437 -:10C4000060000000000000004800E004F8013E0069 -:10C41000098221E000F840BE140F8481E000E800AA -:10C420003E001F8003E000F800BE000F8803D2002A -:10C4300030000000000000000810E400E10032407D -:10C440000C9043E420D9003C440890032400F901F7 -:10C450003E480F10432500C900B2400C900302046F -:10C46000300000000000000080046400B900A0401B -:10C47000089802E608A9602E490894022400B90031 -:10C480002E700B900226028900A0400A900A20001C -:10C49000100000000000000018052400B900224030 -:10C4A000089804E60099802E400AB1022400B900E1 -:10C4B0000E400B900A0400810122C0081002060001 -:10C4C000400000000000000008040480B120224861 -:10C4D000081806C400A1002C482A30020480B122AA -:10C4E0002C480B12020580816022500A14020201BE -:10C4F0000000000000000000B80D6140F850321448 -:10C500000C8503E140D8503E140E800B2140FA0008 -:10C510003E940F85032000C00032000C80032E03E0 -:10C520005000000000000000981DE441F9103D4556 -:10C530000FD003F400FF003F450DD003E440F91095 -:10C540003F440F9103E442F9103F400FD403E60645 -:10C5500070000000000000001805E400F9003E40F3 -:10C560000CD003F4088D023F400FD003E400CD004F -:10C5700033400C90032400F90032404C982306000D -:10C5800070000000000000003810E000E8002E00FD -:10C59000488002E800D0002E800B8012E002880064 -:10C5A000A2000A80122200B881222808CF020E04BD -:10C5B00030000000000000000805C400B1002C405D -:10C5C000281002C40081002C400B1002C40091000E -:10C5D000264009100254A0B52CA542085082020141 -:10C5E00070000000000000001815A400A9002E50E3 -:10C5F000589002E4809B002E458B9202E400990043 -:10C6000026440B90026408B500254A08510206042E -:10C610006000000000000000A015E400F9003E5496 -:10C620000C9043C400C9903E700F9803E400D900F9 -:10C6300034604D900A6400F90036402C9E032804B3 -:10C6400070000000000000002801A400F9003C4038 -:10C650000F9C03E630F9003E620F9003E400E9000E -:10C660003A404E9003A400790C3A400F901BCA0048 -:10C6700060000000000000002810A000F8003E004C -:10C680000C8113E108C84832003C8003C000F01060 -:10C690003E060C8003F008CC0033040CC0030A04EF -:10C6A000200000000000000028052800BA002E80AD -:10C6B00008EC42FA208E0023A008E842E800BE8081 -:10C6C0002F8008A002E800DA00228048E0020A0079 -:10C6D000400000000000000028054C00B3002CC002 -:10C6E000093482C900838020F0083082CC00B380F6 -:10C6F0002CF008B002C1208000A0320800020A001D -:10C700005000000000000000A0011CC0B7012FC8AD -:10C71000895002D80287C421E2487082DC00B70049 -:10C720002C40087202CE00970823C008700228002F -:10C730004000000000000000A8081E00F7E13DE8EE -:10C740002D6803F200C780B0E0086803DF80F68040 -:10C750003DE08C7E03DA00CC8031200CC80B2A022D -:10C760000000000000000000081DAC08FB003CC0F9 -:10C770000E8003E008F9003E400FB002EC00FA0022 -:10C780003E402FB003E400FB003CC02FB003C206C4 -:10C7900060000000000000000005FE00FF927FEA3C -:10C7A0000CF803FE00CCA03F200DF9033E00CF8023 -:10C7B00033600FF803F600EF8433E02CC803000069 -:10C7C0007000000000000000A8119C00B7002FC8F6 -:10C7D000085402D800D6042D010869021C00850007 -:10C7E00021430B70039AC08C00A30208F1022A04B3 -:10C7F000600000000000000000009C00B7012DCC8C -:10C80000087002D40094282DC208C2025C00860081 -:10C8100021800B7102DC00A71021C00848024000F3 -:10C8200020000000000000002014CC08B3002CF011 -:10C83000080502C02090802E000800824C02800073 -:10C84000A0610B3002A0008000A03088B10A48042B -:10C850003000000000000000A815BC00FF002DC83B -:10C860000C3D03E400DB023EF02C904B7C00C10049 -:10C8700032204FF013E000E80132008CAC036A0470 -:10C8800060000000000000008000EC00FB043EC2DD -:10C890004FB003E004FA403EC24E9823AC10F800BB -:10C8A0003E5007B013AC00FB003EC20F9203A00045 -:10C8B00030000000000000000110DC00CF003FC08D -:10C8C0000CC8233682CF803F800CE003EC00F920B7 -:10C8D00033C00EF003F810DC0033004CE8210044B4 -:10C8E000300000000000000081046C00AB002EC08E -:10C8F0004A8D4221008B422ED208B003EC00B8884A -:10C9000034620DB002E4008B0022C008900A20407F -:10C91000100000000000000080052C008B002EC0DD -:10C9200008A0020D0089102E08289202EC04BB001A -:10C9300022A008B0026402B30220C008A202A00034 -:10C94000400000000000000008040C00A3002EC0FE -:10C950000A90220C1080002C00180282CC00B0003B -:10C960002640093002C820800020000810068201FD -:10C970000000000000000000000D6C00CB002EC085 -:10C980000CA102240088003C000C8003EC00FB009A -:10C9900032800EB003CC80DB0032C00CA0038003D9 -:10C9A0005000000000000000A01DFC00FF003FC080 -:10C9B0004FC213D410FC003F000F0003BC00FC006A -:10C9C0003F400FF023E012FC01BF000FD0036802CC -:10C9D0007000000000000000C005FC00C78033C0EC -:10C9E0008BB403B0C0CF2E1F0C4FC3033080FF01A8 -:10C9F0003F080FF0007C00FF2133E40CE00330001F -:10CA000070000000000000008010EE008B8223F018 -:10CA10000BB5120D8888C00E980B86022100BBC092 -:10CA20002EE44BF7832F44BF9022C848A6822004EF -:10CA300030000000000000008805CC098A0020506A -:10CA40004BB20A80CC83010C8C0B230A0460B31414 -:10CA500024404B3002CC10B30020C8E9110662011B -:10CA60007000000000000000C015AC018A80A244E4 -:10CA70000BB002A10488402EA00B20022820BB404E -:10CA80002E400BB0022C08BB0022C009B00270047B -:10CA900060000000000000004015EC00C38332E09D -:10CAA0008F0003A002CBC43E28078B032100F9C0EE -:10CAB0003E100FB003EC007B0032C00DA003500409 -:10CAC0007000000000000000E0019C02FF003FE059 -:10CAD0000FF4435E80FC943F000FC02BF250FD2109 -:10CAE0007E848FF0036C0CFF003FC00E6203B80021 -:10CAF00060000000000000004010AC00EB0032407D -:10CB00002C80036900CB30B2004FB343E500CB402B -:10CB100072182CB003EC28C3213AC10F94031004FF -:10CB20002000000000000000C8053C008B202250BF -:10CB300008B002280088C02A008BB402E800DB009D -:10CB4000623008F002FC008F8022C00B9547320053 -:10CB50004000000000000000E0054C00B10020C2D1 -:10CB60004830024980834260120B3002C8008202C2 -:10CB70002C3009B002CF0183502AC00B2002B8002C -:10CB8000500000000000000020011E009D80A0E079 -:10CB90000879225E60879029A00B7802C6009281F6 -:10CBA00005E0097802DE40878021E00B29020800B9 -:10CBB000400000000000000048080C40F20030C0B7 -:10CBC000083A034404C31430C00F2203CC80C200CF -:10CBD000A4D20D3013CC20C30038C44F044312023A -:10CBE0000000000000000000401D9C00EE003FE03F -:10CBF0000F7003B402F4103FC08FA003FC007E004E -:10CC00003BC00EF083EC00F7003FC00FC003D0061E -:10CC10006000000000000000A805FC00F9003EC014 -:10CC20000FA003AA12CB0132800FB0132814F98091 -:10CC30003A4003B403EC42CB183EC00FB0032A00C5 -:10CC4000700000000000000048119D00B5002DC4D8 -:10CC50000B704B7C00840021800B70029410B2009A -:10CC600029C00B7282DC0087202DC10E70021204D5 -:10CC70006000000000000000C0009E00B7802DE0B2 -:10CC80000B68029E00838021E05B38021E00B4C066 -:10CC900025E0097832CE0097802DE00B5C4E300005 -:10CCA00020000000000000004814CC00B3442CC059 -:10CCB0000B3C02CC40930820E00B30028C10B3C038 -:10CCC00028D81B3002CC0893016CC00AB882120429 -:10CCD0003000000000000000E815A800F6103E80BB -:10CCE0004BED83B800CEE4B3A30FE0033800FE00A1 -:10CCF0003B800DA002E800DA003E800FE8023A0413 -:10CD000060000000000000004800E010F8403E0015 -:10CD10000F80136000E0003E00430803E000F808C5 -:10CD20003A000F8003E000E8403E000E8023D2006E -:10CD300030000000000000000810C400D9C0BE4050 -:10CD40000F9003E600F9003240019A032400F90035 -:10CD50003E400F9003C44009100E400F9A03020496 -:10CD60003000000000000000800464048904A26018 -:10CD70008B9D80A600B98022404898022400B9000B -:10CD80002E408B9002E49489602E400B940B20007F -:10CD90001000000000000000180524009908AE48AB -:10CDA0004B1002E581B91020441B94022410B900F5 -:10CDB0006E600B9002E40089002E400B9402060086 -:10CDC0004000000000000000080404808900A06802 -:10CDD0000B12028489B12020481A12120480B12259 -:10CDE0000C480B1202C481A1202C400B120202013C -:10CDF0000000000000000000B80D6000D800BE0078 -:10CE00000F050BE140F80032140F85032140F800B4 -:10CE10002E800F8513E002C8003E140F05012E037B -:10CE20005000000000000000981DE440FD00BF44D9 -:10CE30000FD103F4407D10BF4445F12BF440FD10A9 -:10CE40003F440F9103E440D9103E400FD103A606A2 -:10CE500070000000000000001805F600FD001F62D1 -:10CE60000FD8823600BDA03B680CDC8326C8D9A051 -:10CE700033600D99835620D5A82E440CD8838604A0 -:10CE800070000000000000003810E148B8002E00DB -:10CE90000B0A822220B85022BA088A2222808800F7 -:10CEA0002201080C02200088002E28888802CE0467 -:10CEB00030000000000000000805C400B1002C4054 -:10CEC0001B100A8440B10028580A3202050099401C -:10CED0002065091042C40091002C400A3082C20132 -:10CEE00070000000000000001811A400B9002E40DE -:10CEF0001B9002A580B910224808104204100900B6 -:10CF00002240089002E4009B002C400A9422C604B0 -:10CF10006000000000000000A015E400F9203E4081 -:10CF20000F9013A710F960BA502E9C0A2584D1F0F7 -:10CF3000B2600D9003E400D9003E400E9003A800BB -:10CF400070000000000000002801A40CF9903E6A67 -:10CF50008F90236600F1083C400F9C43E440F98029 -:10CF60003A440F90032404E9023E402D9113CA0075 -:10CF700060000000000000002810A000E8203E0132 -:10CF80000C0003A120E85032102C8C032100E80093 -:10CF900032020F00132088C80832000F8C03CA0029 -:10CFA0002000000000000000280528208EE32F90BC -:10CFB0000AE0063B00EE04239008E00228088A02FB -:10CFC00075908BA04158908E802A810BE0038A10C7 -:10CFD000400000000000000028054E00A3006C6027 -:10CFE00008381A8E40A08020CC0930020C05A3041A -:10CFF00028C40B30020D0183C020C00B3002CA00D0 -:10D000005000000000000000A0011E0887002D62F3 -:10D010000B70921C08A00061C00960061C80A7006C -:10D0200021C00B72025801878829C00B6012A8002A -:10D030004000000000000000A8081E00E6803D60DF -:10D040000C78429600E480A3600D78033F00E380F3 -:10D0500021E00F7B031608C78031E24F7843EA02D4 -:10D060000000000000000000081D8C01F8003C409A -:10D070000EB002EC00F8013E404E3033ED20DB01F3 -:10D08000BEC00FB403EC00FB003ED80FA003C206E5 -:10D0900060000000000000000005FE00C78423605F -:10D0A0000C780BBE00FD803FE00FEB033E00CF800D -:10D0B0003B250CF8837E40CD8033E20BF903000062 -:10D0C0007000000000000000A8119C0287001548B5 -:10D0D0000870021420B600359A49C8039C84A70042 -:10D0E00039D00A70021A08A40021C00961422A043A -:10D0F000600000000000000000009C00870021404C -:10D100000871029400B5002D400BF1225C02070863 -:10D110002C50087002500087002DC40B50420000B4 -:10D1200020000000000000002014CC0083022440F6 -:10D13000183D0A0100B05824200930028F4083E0D6 -:10D140002CC10A30420800B3016CC009081608045B -:10D150003000000000000000A8158C008B00324059 -:10D160000C2503A848F8813E800F80637C00CB80AB -:10D170003AC00CF0036C00CA02BFC00F988B2A049F -:10D1800060000000000000008000EC00F9003E504C -:10D190002FA40BC800F0403ED00FA033EC20FB04BE -:10D1A0007AE00FB003ED08E90332C00D9003E00010 -:10D1B00030000000000000000110EC40EE003EC016 -:10D1C0000CDA037004CC02B1A00EF023EC00FF00D7 -:10D1D0003720CDB073EC88FB803FC00F3003004494 -:10D1E000300000000000000081046E0088802CE107 -:10D1F00008940AA902884022D008B942EC04BB0076 -:10D200002CD40DB002ED20BBD02EC00BB002A0403C -:10D21000100000000000000080052400AB802EF00C -:10D2200029A0826D0088082204089042EC00BB000F -:10D230002A8108B002E409BA042EC14B988220006A -:10D2400040000000000000000804040083002CC01F -:10D250000A210284108200E000180A12CC00B300F8 -:10D260000CC0093002CC90B0002CC00B100282011F -:10D270000000000000000000000D6400EB003E0014 -:10D280002CB40364088800B2000CB243FC00FB001D -:10D2900056000CF001E400FB003FC00F800B0003C0 -:10D2A0005000000000000000A01DF400FF003F40FF -:10D2B0002DF061F000F40027010DB111FC00FF0218 -:10D2C00007C00FF003EC40FF003FC00FC00368062B -:10D2D0007000000000000000C005F600EF903D4C1B -:10D2E0002CC013F408FD20374C8E82837484DCC27A -:10D2F0003FD80DF203ECC0FF813F000CF803F000B3 -:10D3000070000000000000008010E6008B242E5CFE -:10D31000088D02FF48B9902F540B84823E40A080B4 -:10D320002EC40AFC42ED80B9802E600A9812E004F7 -:10D3300030000000000000008805E401A300284838 -:10D340000A0042C400B1002C490B0A4204A29121F8 -:10D350002CC90831028CC1A3002C40081802A2017C -:10D360007000000000000000C015A0208B822E4439 -:10D37000588002E400BB102E400BA1120C01891052 -:10D380002EC00AB002EC01B8802EE20AA102F0041D -:10D3900060000000000000004015EB40EB403E60E4 -:10D3A0000E8733E400B9A136C00EA80B2600DAC000 -:10D3B0003EC08DB003EC00FB853EE108B80390054C -:10D3C0002000000000000000E001B800FF022F6014 -:10D3D00003E883FC10FD801F401FD013BE40EE0405 -:10D3E0003FC00FF043FC08FD003CC00FD011F80017 -:10D3F00060000000000000004010A400DB00B2400C -:10D400000E94032400D900BAC00C2003E490FB0062 -:10D410003AC00CB003EC01FA003ED02C9803900403 -:10D420002000000000000000C80503008B00224817 -:10D430000884222C00B90022C008A002ED008BA0B5 -:10D4400021C008F002FC00B9802EC008A002320002 -:10D450004000000000000000E0054520930022F895 -:10D460000B300A8440B2002040081002C4008080C3 -:10D4700028C02839024C00B1002CC0083002B80086 -:10D480005000000000000000200136009F80216055 -:10D490000938029E00B2C02060484812D6C686D025 -:10D4A00021E0087800DE80B7822DE008F80208004D -:10D4B000400000000000000048080C20D31030C8D5 -:10D4C0000F30038400F1003040241903E4C0E04031 -:10D4D0003AC00C3203CE80B1283CC00C301392020B -:10D4E0000000000000000000401D9C00E6007FC01E -:10D4F0000EF0237440FF103F404FD003FCD2CE0407 -:10D500003FC00FF403FC00FE003FC00F7103D012B8 -:10D510006000000000000000A805EE00CB0016C06F -:10D520000D80032720CB003EC20AB053E428C181FE -:10D5300032C10EB9032C00F18035E00CB8032A0487 -:10D54000700000000000000048119C0287102D4070 -:10D550000870035C00A7002D40287002D4048704E3 -:10D56000A1D00B72021D00F70021C00D5002120461 -:10D570006000000000000000C0009E00858025E0E3 -:10D58000097802370387802FE0087812C6108D8053 -:10D5900025E80B38021E80BC8425E0085802700084 -:10D5A00020000000000000004814CD8083882CC0BB -:10D5B000083C024E01A3D22EC408B102CC008380E5 -:10D5C00024C10B30020C00B340A0D209301252002B -:10D5D0003000000000000000E815BA00CAC0368024 -:10D5E0000D67132800CE003EA00CED03E800CEE04E -:10D5F00036801EA00B2804FE00B7B20CE00B7A00A8 -:10D6000060000000000000004800E040F8102E100C -:10D610000F8003E001D80A3E000F8003C002F80823 -:10D620003A000F8003E010E820BE000F8013920044 -:10D6300020000000000000000810E500FB003E4054 -:10D640000C91032600618032400C90032400C90035 -:10D650001E400C9C03E401F9003E400F9003C20001 -:10D66000300000000000000080046700B9002C407A -:10D67000009C02A600790022402890022400890024 -:10D680002C44089802E400B9802E400B9002E0017F -:10D69000000000000000000018012400BB0026501C -:10D6A00028908224849920224049900224008900F5 -:10D6B0002E40089002E400B9602E400B9002C60490 -:10D6C000400000000000000008040600B1002E48E1 -:10D6D0000812028480B120A04809120A0480810047 -:10D6E0002C48281242C48831002C400B1802C20179 -:10D6F0000000000000000000B80D6000F850361473 -:10D700000C80032000E80032140C85032140C8502F -:10D710003E140C8003E14038003E008F8003EE038E -:10D720005000000000000000981DD400FB043D44A0 -:10D730000F5123D448ED103D444ED123F442FD0057 -:10D740003E448F9103E458FD003F500F5003E6061E -:10D7500070000000000000001805F400F9003D40D2 -:10D760000CD003F400DD023E400C9003E440C910ED -:10D77000374007D0072400E5002F6A0F700306002A -:10D7800070000000000000003810E000B8003A000F -:10D79000808002E00088002E000A8053A2802CA026 -:10D7A00022000B800A2000B8002E100980030E040E -:10D7B00030000000000000000805C400B1006C400B -:10D7C0002A1002840181802E40091002F4008D0489 -:10D7D00020400B10028400B1002C400B9802420143 -:10D7E00070000000000000001811A420B9002A40B9 -:10D7F00088B402E601A9202E480A9000A440AD405A -:10D8000022400B9012A404B9012E410B9002060491 -:10D810006000000000000000A015E400F9C03E60B8 -:10D820000C9413A602D9421C600C9E01C604C100D0 -:10D83000B2401F9002A400E9083E684F980B6804AC -:10D8400070000000000000002801A640F920387098 -:10D850000F9103E400D9803E400F9C13A400F9000F -:10D860003E400F10036410F90A3E500D9A03CA009F -:10D8700060000000000000002810A100D8043E0055 -:10D880000C8113C002D8203E002D8403E000CC0898 -:10D890003A000F8043E000F841320007818B0A0410 -:10D8A000200000000000000028053A608A002FA830 -:10D8B0000AE022E8027E482E8008A042E8048E009A -:10D8C00023A80BA882E800EE00A2804B60020A00A9 -:10D8D000400000000000000028054C0093006CC0D0 -:10D8E000083002CC0013812CC0083002CE408240A8 -:10D8F00028E00B3802CC00B31024C08B38020A0099 -:10D900005000000000000000A0011E0087202FC072 -:10D910000A7002DC0AB6002CC8887206D80086009D -:10D9200021C00B7002DC84AF80A5C00BD0022800A0 -:10D930004000000000000000A8081E00D7803DA0A5 -:10D940001C7813D602D7803DEC087E23FE00CE80E3 -:10D9500039600F7803DF00F68075E00F78032A0244 -:10D960000000000000000000081D8C00FB103E803D -:10D970001FA021CC00FA003EC00EB003E802FA005E -:10D980003E400FB013EC00EA013AC00F9003C2060C -:10D9900060000000000000000005FC00FF803F6008 -:10D9A0000899077E00DD803FE20CF803F602DF8075 -:10D9B000B3E00CF8033E41CC8033E40FF803C00021 -:10D9C0007000000000000000A8119C40B7002DC0AE -:10D9D0000D5A22DC8075002DC0087102F0208700EE -:10D9E00021C00A70021C00D42821C00B7202EA0474 -:10D9F000600000000000000000009C40B7002D0007 -:10DA0000087222F40087002DC2087002D4008780BB -:10DA100025400930025C01AD0029D04B7002C000E6 -:10DA200020000000000000002014CC00BBC82CA087 -:10DA3000092002CE00A3002CE0A83D42C2008B804A -:10DA400024400B300A6C08A340A8E00B3402C80441 -:10DA50003000000000000000A815AD00FF483C2881 -:10DA60000CA9236C808B003FC00CFC03EC00D88019 -:10DA700034400D30037C02A34038680F2403EA04CD -:10DA800060000000000000008000ED88FB003E50B8 -:10DA90000FA103EC043AC03EC00FB083E802F810B7 -:10DAA0003A410E9003AC009B08B6400F8103E000A2 -:10DAB00030000000000000000110FC00FF00B32057 -:10DAC0000C50131C09CD8333C08370003C00DC1064 -:10DAD00032600EF1432C00CE043B700CF083004406 -:10DAE000300000000000000081046780BB0162215B -:10DAF0008A89202C0080E022C00BB003D8108C044F -:10DB00002240059002AC00D88036400A90022040A6 -:10DB1000100000000000000080052600BB00220667 -:10DB20000880022E00882022C009B002A4009900BB -:10DB300062C408B0062C008880224108A0022000A0 -:10DB4000400000000000000008040C00B30020406A -:10DB50000A00820C00800020C00B3022A00081004F -:10DB6000A0C00930028C00900024400A2802020163 -:10DB70000000000000000000000D6000FB0220001B -:10DB80002C92032C02880031C00BB502A400D104F2 -:10DB900032400E90032C40C9003A408CA003000391 -:10DBA0005000000000000000A01DF400FF002F0046 -:10DBB0000FC003DC00FC003FC10FF043F000FD008C -:10DBC0003F404FD003FC00F5003F400FE003E80664 -:10DBD0007000000000000000C005D880CC00B70431 -:10DBE0004EE1033C20DF10318006F0037F00FFC0D0 -:10DBF0003BC00EF2035E00EF1033D02CF203300076 -:10DC00007000000000000000C010E90088C6205C21 -:10DC100008A45765008F522AF009FC020400BB00DB -:10DC20002DD90974836428834422848806823004B1 -:10DC30003000000000000000C805C9008010200866 -:10DC400008311204B2A30020841B34020C80B320DC -:10DC50002CC70936028C809340ACC80831283201A9 -:10DC60007000000000000000C015A9008800A2504C -:10DC700008350224008B042EC109B0022494BB0095 -:10DC80002EC00BB002CC608B002E800880003004C8 -:10DC900060000000000000000015E702CB18B28011 -:10DCA0002CAC0A2E08EB0032124EB0032B80FB0086 -:10DCB0003AC00AB003AB08EB042E480CB88300044A -:10DCC0007000000000000000E001B680FF8039CA4B -:10DCD0000DE803D640E7043B664E7003B800FF0131 -:10DCE0003FC06CF0037006E70031040FC143F80039 -:10DCF000600000000000000040108500CB40329022 -:10DD00002FB00B6480FB08BA100DB0A72D00FB04E8 -:10DD10003EC08EB0036D00DB0132408C33039004B3 -:10DD20002000000000000000C005240083E0A2D015 -:10DD300040B0022504BF80A05008F80220008B02EA -:10DD40002FD008F00224008F80360108844236006C -:10DD50004000000000000000E8054400834820C4A3 -:10DD60000900024600B301A8901930128C00A304E8 -:10DD70002EE20AB0020C00834928C0093C02380098 -:10DD80005000000000000000F0013604838021E113 -:10DD90000838121E28B39821A0193882960087836C -:10DDA0002DE2087822368C87802DE00979023E002A -:10DDB000400000000000000048080400C33030C8E4 -:10DDC0004D000B4C80F31238C00D3A028C80F300EA -:10DDD0003CC00E300B0E00C30C3AC00D30031202D3 -:10DDE0000000000000000000401DB406FF103FC00E -:10DDF0000FB013BC00FF107FC00EF1A37C00FF1218 -:10DE00003FC20FF523BC41EF183780AEC003500668 -:10DE10006000000000000000A805E400DB003EDA1E -:10DE20000C800366108B0032808CB6034A004B8056 -:10DE300032C80CB4030A10DB003EC10CB0432A0008 -:10DE40007000000000000000C811B40087042CC05E -:10DE50000D70031C08874820810D72825C00D7007A -:10DE600021CC28F0021C1087202C0008400A320424 -:10DE7000600000000000000080009600B7812DE0E7 -:10DE80000848020E04878021E00878023E0187805E -:10DE900021E01879023A0197A02D6008380220008D -:10DEA00020000000000000004814C600A3C62CC0DB -:10DEB0000930020C01830020E00930024E0093007B -:10DEC00020C04930220F6483026CD428300212042F -:10DED0003000000000000000E811AB80FAE03C8850 -:10DEE0000CE0022802CA00B3A90CA0033B10CA0030 -:10DEF000A2800CA00B3800DA003FB00CE6033A0415 -:10DF000060000000000000004800C02098083E00AB -:10DF10000F800BE100F8013C104F0003A040F80017 -:10DF20003E100E8003E000F8003C022F0493D20064 -:10DF300030000000000000000810E400C1C13240C1 -:10DF40000C98032640F90032400C98032424F90071 -:10DF50003C600C1003A400F98232400C90030204D0 -:10DF6000300000000000000080046400890022509E -:10DF70000D98022580B90022520D9C022400B900A0 -:10DF80002E600890422400B940364008900A2000D4 -:10DF90001000000000000000180524008D00234040 -:10DFA0000812022400A110A26008928A2400B9017C -:10DFB0002E46089002A400B150224028908206000C -:10DFC0004000000000000000080404848520A1D85F -:10DFD0000910020480B32020402912060400B10178 -:10DFE0002C482812020400B1202448081202020121 -:10DFF0000000000000000000B80D61428A00B3007C -:10E000000C05032140E050B2002C80022140F0506A -:10E010003C140C8513A150F85032140C85232E03A8 -:10E020005000000000000000981DF440F9103E442C -:10E030000FD40BF444F9103F504F1103F400F900D2 -:10E040003E440F9153F414F9103F440FD103E602FC -:10E0500070000000000000009805E6A0DD88B366AF -:10E060000CDC833688BDA0376A0CDA0B2502C94068 -:10E070003F784F98B3E504CDA072780CD88B261466 -:10E0800070000000000000003810E30088422231D8 -:10E09000080A0222A0B8F922100D84126A80888032 -:10E0A0002E200B0802E280A8A8A23848A8020E0081 -:10E0B00030000000000000004805C4A28100204894 -:10E0C0000812424500B100244009140224008120B6 -:10E0D0002C580B1082C4049140646C0830821205E5 -:10E0E00070000000000000001815A4008900224103 -:10E0F00008908A6480B9002250099006640899004B -:10E100002E400B9006C401B90226618890020604D5 -:10E110006000000000000000A015E400C9002240DB -:10E120002C94236400B90036400990130500C900FF -:10E130003E404F9013E5C0D90026402C94032800A0 -:10E1400070000000000000006801A402E9083C40E3 -:10E150000F900BA400F1003E410F9043A488E90406 -:10E160003E400F9003E600E1003A409F9263DA00E0 -:10E17000600000000000000028108010E001320064 -:10E180008F80032000D80830018C0003E102C8040E -:10E190003E000C800B2100C80078000F86030A00A7 -:10E1A0002000000000000000280528008E402B827F -:10E1B0000BA0023A008E80238208E20228108A0017 -:10E1C0002F9828A01228008E202E804BE4020A00EF -:10E1D000400000000000000028054C02A240208002 -:10E1E0000BB0024E4093C0A0200836028C00930072 -:10E1F0002CE20830064C12930828C00BB0020A002B -:10E200005000000000000000A0011C0882402940CE -:10E210000B70025E08840823400870061C8087008B -:10E220002D200879125C0094002DC00B304228008C -:10E230004000000000000000A8083E00E48031A17A -:10E240000F58137600D08031C00C3803BE80D781C0 -:10E250003F208C79037F01D68039E84F68032A007C -:10E260000000000000000000081DBE00FA003E0093 -:10E270008F960BA400EA003CC00F9003AC20FB403B -:10E280002E000FB203ADA0EA003EC00FA01BC204D7 -:10E2900060000000000000004005FE08DE8133A49D -:10E2A0000EFC133E00FC8013200C68033E20FFC8C8 -:10E2B0003F601DF8037E00C78033E20CD8031000D6 -:10E2C0007000000000000000A8119C00864131C4CD -:10E2D0000879429C00BC1021408535035C00B700E2 -:10E2E0002DC00872022C00A70137C00851422A0035 -:10E2F000600000000000000010008C4082002481BB -:10E3000008D8021420B50020400960021C40B70064 -:10E310002C400B3022DC00970021C408400244004E -:10E3200020000000000000006014EC009206209025 -:10E330003815028600B80060500930024E01BB005B -:10E340002E400B3002CE20B30024F048020A5804BD -:10E350003000000000000000A815BC00CA00A69410 -:10E360002C90032E00FB05B2850D90033F90FF001B -:10E370007E801FF043FC219A0033C83CB2036A043C -:10E3800060000000000000009000EC02EA403D80C8 -:10E390000F1093ED00FB403E908F3003EC80FB00AC -:10E3A0003E911CB0032C10E8003EC81F9003A5103E -:10E3B00030000000000000008010FC02E40073A0A8 -:10E3C0000CFC037C02FF1013C41CC0033C00FF00C4 -:10E3D00037E00DF003FC00ED8031C00C3263200407 -:10E3E000300000000000000084006C008AC022B1F0 -:10E3F0008AB8434A10DB2020F00A94036C00BB0764 -:10E4000022B808B002EC11E8C0B2C02A921A20006B -:10E41000100000000000000080012C00AA8022985B -:10E420000890022F03BB012A8308B24E2C04AB02D2 -:10E4300022C428B022EC09B35062C008B002200008 -:10E44000400000000000000008040C018300608010 -:10E4500008120A440093002A804A30020C00B300DC -:10E4600060C0083002CC00B30260C0080046020160 -:10E470000000000000000000800D6C00E802228017 -:10E480002CF2432C00FB00BAC008A5023C00EF00B0 -:10E4900036C04DF013FD51FB0032C00CB00320011B -:10E4A0005000000000000000A01DFC007E043F8022 -:10E4B0000F3143F002FF0037C00FF003FC08FF00EC -:10E4C0003FC00FF003FC00EF003BC00FC003E81695 -:10E4D0007000000000000000C005F240FC803F24F6 -:10E4E0000DD853D604DF323FCC4CC043FC00DF6074 -:10E4F00037C00FC4037CD0DF2033D80DF843F000C1 -:10E5000070000000000000008018E880B0012E08B4 -:10E51000889002EC208B702FCC08B382FDE0BF40C6 -:10E5200022D80B9302FDC0AF1028F008BC12F004F3 -:10E5300030000000000000008805C400B0002E017B -:10E540000A1282EC80B3002CC80A00328C00A3307F -:10E5500020D20900028C80830028D80B3412F201EB -:10E560007000000000000000C005AC01B8022E00E1 -:10E570000A9012EC108B002EC00AB000EC00B30021 -:10E5800022C10B9202CC01AB002AC002B002F004FF -:10E5900060000000000000004015E000FA0C3EC0E2 -:10E5A0000FA013EE20DB003EC02E8853EC00FB00D2 -:10E5B000B2C08FAC83AC08DB001AC04FB003C004FC -:10E5C0007000000000000000E001B800FE003FC045 -:10E5D0002DE003FE807F003FC00DD203FC00BF0191 -:10E5E0003EC00DC803FC0CFF003FC009F023F8003B -:10E5F00060000000000000004010A400FA4032C19A -:10E600000FA0032908DB003EC00E8503EC20CB00E1 -:10E610003AC00EA403EC00FB003AC20EB003100493 -:10E620002000000000000000C8052C00BA6020C0D7 -:10E630000BA0020800AF002FD00BB502FE028F0026 -:10E640002FC00D800A3C00B70023C205F02236001F -:10E650004000000000000000C0044000B18820001D -:10E660000B10020C0083002EC80B08064D408300DF -:10E6700020C00830060C0893200AE04A3002380017 -:10E68000500000000000000020105A00B59021202A -:10E690000B58423E00A7802DE00B6902DE408792B6 -:10E6A0002DE00918029E01B78029E00370023E00A8 -:10E6B000400000000000000048084400F101300064 -:10E6C0005F18030C1083003CC40E0403EC008300AD -:10E6D00030C40C31038C00F30038C80E3103120231 -:10E6E00000000000000000004015BC00FD04BF0455 -:10E6F0004F5803F808EF083FC00FF001FC00FF4C33 -:10E700003FC10FD0033C00F70037C20D7203D006A3 -:10E7100060000000000000000805E200DB0032C0DD -:10E720004DA8032C08FB007EC88FB00B6F45EBC2D1 -:10E7300036C007A003EF20CB50B2C00C79032A00EB -:10E740007000000000000000481998008F0021C0F0 -:10E750000B60035C0037002DD20B30020CA887241D -:10E7600021D0097002DD88872A23E808700232046C -:10E7700060000000000000002000B600978021E04B -:10E780000B68021E00B7802DE88B48821E80A38490 -:10E7900025E80B6802CE02878021E0087A0220007B -:10E7A00020000000000000006804CC08838220E004 -:10E7B0008B2A024840B3002CC00B30820C0083002F -:10E7C00000C1093102CC00830020C008300A1204C5 -:10E7D0003000000000000000E815E800DAA032A8D0 -:10E7E0008DA8033B00FA003E800FE4036800EA02B4 -:10E7F00036800FE403E800CA0032802CA0033A04FC -:10E8000060000000000000004801A010F800BE20D9 -:10E810008FC103E024F8003E100F8403E000F801EC -:10E820003E000F8003E000F801BE100F8003D2000D -:10E8300030000000000000000810A400F940324041 -:10E84000CF9003E400C9000E500F1A032600F90010 -:10E850003E400F9081E400F98032400C9003C204E6 -:10E86000300000000000000080046404B104224075 -:10E870000B9002E400A9002E530B920A2648B9041B -:10E880002E400B9002E400B9800250089002E00094 -:10E89000100000000000000038052400BD002340E7 -:10E8A0000BD012C40089022E400B90222400B90024 -:10E8B0002E400B9002E400B1202040689022C60058 -:10E8C000400000000000000028141400BF12A14006 -:10E8D0000B5002C400A1202C480B12020410B111ED -:10E8E0002C480B1322C400B140205A081002C20168 -:10E8F0000000000000000000B80D6140F840321434 -:10E900000F4503E140C8503E158F850321E8F868A4 -:10E910003E140F8403E1E0F02832A8CC8023EE03FC -:10E9200050000000000000009815C410F9203E407F -:10E930000F9003F400F9103E440FD103E400F920D6 -:10E940003E440FD303E400F900BE400F9403E606F3 -:10E9500070000000000000001815E400FD103340B6 -:10E960000CD0032400D9003F404CD003F600FD90AA -:10E970003A400C9003E6A0FDA837680CD883260027 -:10E9800070000000000000003810E008C8A022005D -:10E99000088002200088002E000C8012E000B88061 -:10E9A00022000D0A02E380B0C020340884034E0424 -:10E9B000300000000000000048008409A100204150 -:10E9C000089002240091002C40081002C500B1609C -:10E9D00020400810A2C420B128244A081002520185 -:10E9E00070000000000000001814A4018100A24083 -:10E9F000A89000254089012C40089402E400B90049 -:10EA00002A40099002E401B90422414890024604D8 -:10EA10006000000000000000A014A520E9003240C2 -:10EA20004C100B2600D9003E402C9803E400F9005E -:10EA3000B2400C9003E400F90036402C90036804C7 -:10EA400070000000000000004801A400E9003E4002 -:10EA50000F9003E600F9003E400E9A03E400F9002F -:10EA600036400F9003E400F9003C400F9003DA00B9 -:10EA700060000000000000000810A100F800320053 -:10EA80000F8013A000C80032048C8003A0C0F800DF -:10EA90003A000F80032000C00932004C80010A04B4 -:10EAA000200000000000000028052800BE00208093 -:10EAB0000BE0028800AA0003A00AE602FA008A001E -:10EAC00032800BA00228008E80A3802820028A00BA -:10EAD000400000000000000028056C00B348204002 -:10EAE0000B10020C00830020C00834828E049900B1 -:10EAF0000AC01B30020C02905020600830020A004D -:10EB0000500000000000000080111C80BD0A214858 -:10EB10000B52029C40A3A020800A6002CE008520F8 -:10EB200021C40B7A061E80952021900870022800CF -:10EB3000400000000000000088081E80F780B179C6 -:10EB40000FDB023E20C7A0B160CC78139600F1F035 -:10EB500039E20F7B130F00D4A031602C70032A021E -:10EB600000000000000000000815AC00F7003E4067 -:10EB70000F9003ED80FB103E400BB023EC00F9201A -:10EB80003AD80FB00BED81ED103E800F3003C20676 -:10EB900060000000000000000004BE20EE80336032 -:10EBA0000CD8831E006F8033E00FB8113204F5805B -:10EBB00033E00FF8832F40FE80B3E00CF803100021 -:10EBC0007000000000000000A8189C00BC00A144D8 -:10EBD0000810035C008F0021800BEA221C80B50125 -:10EBE00021C00BF0021E80BE0023802A70022A047E -:10EBF000600000000000000000009C20A7002340EF -:10EC00000B500A3C00A70025C00A43021000B500C3 -:10EC100021C00B70821C80B40021C0087002040067 -:10EC2000200000000000000020048E04B3002240F9 -:10EC30000914024C00830020C00B24820400B100A0 -:10EC400020C08B3A022C01B00020800A30021A0446 -:10EC50003000000000000000A8159E00EB043340C7 -:10EC60002DDC031D60EF003200CF9A032800FD0069 -:10EC700033C18BFC0B3C00FC0032800C90032A0457 -:10EC800060000000000000008000AC10F8003E4072 -:10EC90000E9823AC04FB003C000F8420ED00F9002B -:10ECA0003EC04FB003EC00FD003E800F9003E40037 -:10ECB00030000000000000002110FC00CF80334035 -:10ECC0000CD083FC00EF003F400CF1413010CD0030 -:10ECD0003FC00070133C00E400B1D00C10032004CE -:10ECE0003000000000000000A1042C008AE42A404B -:10ECF000289002EC008B003E020A80022C828904DC -:10ED00002EC10AB00A2C00890222F22A98022000A1 -:10ED1000100000000000000080052C0280142A4032 -:10ED2000089002EC08AB042E84081082801089033E -:10ED30002CC04AB0222C00AA002280089102200098 -:10ED4000400000000000000008142C008000284053 -:10ED5000081102EC0083002C810A005A880001008F -:10ED60002CC00A30020C00820020800A100202012E -:10ED70000000000000000000000D6C00C9003A40D7 -:10ED80000CD403FC00EB003E400C9203A0004D00AD -:10ED90003FC00EF0333C80E80032C00C90032003EB -:10EDA0005000000000000000A011FC00FC003D40ED -:10EDB0000F5003FC023F043B014FC4137000FD00E1 -:10EDC0003FC01FF001FC40FC003FC00FD013E8061D -:10EDD0007000000000000000C005F8E0FF803DC0AA -:10EDE0000DF382F080FF4031CB0CF303FD04EFC143 -:10EDF00033E00F7903FE00CF4233F04CF8033000CC -:10EE00007000000000000000E010E908B9812FF058 -:10EE100008F452E920BF4023F00AF302FD088B00FA -:10EE200036E00B8022E8808F4022C008B082300498 -:10EE30003000000000000000C805CC00B1802CC5E7 -:10EE4000093242C8C0B33120C1083202CCD4BB2041 -:10EE500068C00B3002CC2093602088083202320157 -:10EE60007000000000000000E015A000BB802EC074 -:10EE700008B002EA00BB0062C10AB002CC00AB00DD -:10EE80002EC00BA000E800830022C108300230042D -:10EE900060000000000000000015E890FB803EC00C -:10EEA0000DB003E210FB0032C04CB013EC00E9548B -:10EEB0003AC00FB003E600CB00B2400CB00304042C -:10EEC0007000000000000000E001B800FF003FC03B -:10EED0008FF003F000F702BFC10FF023FC00DF0644 -:10EEE00037C08FC907FA92FF043F502FF003F80094 -:10EEF00060000000000000005010AC00C9003EC2DD -:10EF00000EB023E400EB003AC80EB003EC00F900A9 -:10EF10003EC00FB403A400FB003E800FB083D004BA -:10EF20002000000000000000C80528008B742DC0E0 -:10EF300008F002E4008F0021F008F002FC10D3007A -:10EF40002EC00B90122C00EF002EC00BB602F60064 -:10EF50004000000000000000E8054800A3002CC4A9 -:10EF60000A3002C000A30068F00A3012CC04A200EC -:10EF70002CC00B3002EC00B3012EC00B3402F800A1 -:10EF80005000000000000000B0010C0087802DE858 -:10EF9000087842DA00878025E0087902CE00968062 -:10EFA0002DE00BD902DE00A7802DE00B7802FC00DB -:10EFB000400000000000000048080C40E3103CC086 -:10EFC0000A3803E800EB0038C20A3003CC00E34003 -:10EFD0003CC00F3403CD00F3203C880F3003D20235 -:10EFE0000000000000000000401DB480FF043FC886 -:10EFF0000FF083F840FF183BC00FF483FC00EE02D3 -:10F000003FC00FF0033C00EF083F800FF013D00625 -:10F0100060000000000000008805E800CB003EF220 -:10F020004DB213E804CB0132F84DB2136D20F80055 -:10F030003EC00F30032400FB003E408FB8032A007F -:10F040007000000000000000C8118C0086002CC079 -:10F05000087302D812873020CB08F2021D05B500D4 -:10F060002DC00B60035010B7092DC00BF002320405 -:10F07000600000000000000080009E0087802DE4FA -:10F08000097A02CE01878021EC0978025E80B7C040 -:10F090002DE00BF8021E00B7A02D600B78022000B7 -:10F0A00020000000000000004814EE0082802CC008 -:10F0B000083002EC008300A0C00830020C00B380CE -:10F0C0002CC10B30024E00B3002CF10B300A12049D -:10F0D0003000000000000000E815BA80C6003E8045 -:10F0E0000DA003F840CA0032800DA0136800FE0294 -:10F0F0007E800FED833910FA003F8C0FA0033A0495 -:10F1000060000000000000004800E012F8903E009F -:10F110000F8003E000F8053E000E0003E000F880D9 -:10F120003E000F8003E060F8007E000F8003D200F5 -:10F1300030000000000000000810E400C9803264C4 -:10F140000F9043E406C1043A400F9003E400E90045 -:10F1500032400F90032400C10132400C9003C204DE -:10F1600030000000000000008004640089C02240DC -:10F170000B90022400890022501B90222400810061 -:10F1800022400B90222408C9002040089402E0008D -:10F190001000000000000000180524009920224003 -:10F1A0000B1002A40089002A580B90028400A900C9 -:10F1B00022400B100A0400990222C1089082C60066 -:10F1C0004000000000000000080404009102A0C8F4 -:10F1D0000B12020480812220489B120204908901B4 -:10F1E00020400B1002040281222240081002C201BA -:10F1F0000000000000000000B80D6142DA01320199 -:10F200000F8503A140C0503A018B8523A144E850EB -:10F21000B2000F85032148D85132142C8503EE0328 -:10F220005000000000000000981DF500ED023E4473 -:10F230000F9103F440F9103E440F9103E440FD00A8 -:10F240003E400FD003F400E910BF400F9003660664 -:10F2500070000000000000001805E621C5003368BA -:10F260000F9A036F88C9C033680C9E032780D9406A -:10F270003E400F9003C510D9E836500CD003E6008D -:10F2800070000000000000003810E10888008200D3 -:10F290000B8E82EBC888E02200288842A2808A80F8 -:10F2A00022000BAA02E20088C022A9088A038E0469 -:10F2B00030000000000000004805C400810020D09C -:10F2C0000B1132848481606050081606050091207D -:10F2D00020400B1082E409912024400810C2D20182 -:10F2E00070000000000000001815A40489042240EA -:10F2F0000B9002C400A9002241009002A4008100EA -:10F3000022400B9222E58099012261089002860436 -:10F310006000000000000000A014A582819032402F -:10F320000F90136702C90032400C90232404D9C007 -:10F33000B2400F9C03E600D90036500C9003E8045D -:10F3400070000000000000006800A680F9003E4048 -:10F350000F9003E700D900BC420F9053E404F9106A -:10F360003E400F9803E604E1003E402F9003DA0090 -:10F3700060000000000000002810811048103208D2 -:10F380000C800F2102C8003A040F80076000F8408B -:10F39000B2000F840B2000D80036100C8003CA0482 -:10F3A0002000000000000000280428048E80238034 -:10F3B00008A04228008A0023A04BA002E800BA005F -:10F3C00076800BA00208008A00328008E003CA00A1 -:10F3D000400000000000000028054C00820020D002 -:10F3E0000830020C009B0028C01AB0026C00B30267 -:10F3F00020C00B30020C00A30022C0283482CA00B7 -:10F40000500000000000000020011C00870020E0E8 -:10F410000878020C00972025C00B7102DC81B72010 -:10F4200021C00B7A423C80872021C0087002E8008E -:10F43000400000000000000028080E82C780B1E0F4 -:10F440002CFA061E08D3B139604E78125EA0FFF088 -:10F4500021E00FF8031F08E3A033E00C6803EA0281 -:10F460000000000000000000081DAC40FB003EC092 -:10F470000FB203EDA8EB103A800FB0C3EC40FB00D5 -:10F480003EC00FB083EC80EB70BEC40FB0038206A9 -:10F4900060000000000000004005FE00CE80B36068 -:10F4A0000FFC837E20EFB03BE00FB8033E00CF811E -:10F4B0003FE08FF883EF40FFC233E10CF803D00048 -:10F4C0007000000000000000A8119C8287182180B5 -:10F4D0000B30021C60D71021D00B7B023C00D70000 -:10F4E0002DC00B7002DE00BF00A3C4087003AA0485 -:10F4F00060000000000000000000BC11870021C077 -:10F500000B30021C00932069C00B70021C008700A6 -:10F510002DC00B7102DC20B71021C00860028400EE -:10F5200020000000000000006014CD00834020C0D7 -:10F530004B30020C01830020C00B30020C00938082 -:10F540002CC00B3002CC01B30020C008302298043C -:10F550003000000000000000A815BF20CAC03280A3 -:10F560000FF0033E009F003A800FF00B3C00CF9855 -:10F570003EC00FF603FF00FF0031E02CB003AE04E5 -:10F5800060000000000000008000CC80FB003E50C6 -:10F590000FB003AC02FB007E500FB003EC00FB0089 -:10F5A0003EC00FB203EC20F3003EC60F9003A00054 -:10F5B00030000000000000000110FC02CF9873C86A -:10F5C0000F70033C00FF0033280FB0021C004F00F7 -:10F5D0003FC00FF003FC00FF0133C00CE403E40460 -:10F5E000300000000000000080046C008380A2F85E -:10F5F0000BB0422C00BB0032100FB0036C04AB0008 -:10F600002EC00BB012EC04EB0022C04A9482E00042 -:10F61000100000000000000080056C008A0022003D -:10F620000BB0022C00B300A2C00B3002AC00AB0444 -:10F630002EC00BB042EC00BB0022C008B022E0009C -:10F64000400000000000000008000C008B012000BA -:10F650000B30060C00B30020C00A320ACC00A30015 -:10F660002CC00B3002CC00A30022C04A0012C20101 -:10F67000000000000000000000086C008B0422C0A5 -:10F680000FF1031C00FF0432C00BF203BC00EF00BB -:10F690003EC007F003FC80FF00B2C00CA003E003F3 -:10F6A0005000000000000000A019DC00F5003FC081 -:10F6B0000FF003FC01FF023BC00FF1037C00FF00D1 -:10F6C0003FC00FF013FC40EF003FC00FC003E8063F -:10F6D0007000000000000000C015F240CC80372010 -:10F6E0000CD803B044FC083F0E0FC103FC00CC94BF -:10F6F0003F0A2EC4037D80CF103FC00FC08330006F -:10F7000070000000000000008008E0908802228164 -:10F71000089213A4403B6022180B8102FCD48100A4 -:10F720003AB00A94023D40AF632FDF0B98002004EB -:10F7300030000000000000008805E0008800204044 -:10F74000883082C000B00828800A1002CC208001D6 -:10F750002C401B06028C90936068C04A0042220134 -:10F760007000000000000000C005A002880022C058 -:10F7700008B002E420BB8826980B8042CC188A008F -:10F780002EC21B9802AC00AB002EC00B9882300436 -:10F7900060000000000000000011E3C0CB02320056 -:10F7A0002C8003AE08B9003E700FB903EC02484844 -:10F7B0003CC00F8C93EC00DB001AC00EAC031004AD -:10F7C0007000000000000000E001B200FF00BB80FC -:10F7D0000FC043B640BD003B600FE803FC00FF9440 -:10F7E0003BE40E600F6C08EF013FC00F6003F800B0 -:10F7F00060000000000000004010A100FB003E601F -:10F800000FA003ED00F9403A000F9003EC02C90489 -:10F8100032D00F90032C08DB00B6C00DB403D00427 -:10F820002000000000000000C8050000B3892EE0A1 -:10F830000BA403A401B9002E010B9042FC108950C7 -:10F84000A2C08DB4023C448F0023C008B002F20075 -:10F850004000000000000000C0040C00B0802E003A -:10F860000B1202C800BA002CC00B2002CC00A20070 -:10F8700020002B2D9A2E42830028C0082002F80079 -:10F88000500000000000000020001E04B4802DA0E5 -:10F890000B58029200B6802DE00B6802DE40A68075 -:10F8A00021242948021E80878069E0086102C8007F -:10F8B000400000000000000048180C00F0303C4CF4 -:10F8C0000F3203C880B20038800F1B03EC00E03019 -:10F8D00030040FB1030E85CB003AC00C3103D202C5 -:10F8E0000000000000000000401CBC00FC113FC4F0 -:10F8F0000FB813B004FE023F800FC003FD00DF12FB -:10F900001D040FD043BC01EF1033C40EF303D00627 -:10F9100060000000000000000805EE00CB003E0083 -:10F920000F80032800F8003E403DB003EF08C900F7 -:10F930003A000CA003EC98FB2032D20CA8032A0258 -:10F94000700000000000000048119C0087012D801D -:10F950000B40421C043700A140086002CC808700A5 -:10F960002D802E7002DCA9B72821D0087002120069 -:10F9700060000000000000002000BE0287802D60B3 -:10F980004BE8025A01B48828E08878C2DE5286C06B -:10F990002960086802DE40B392E1E828280270007E -:10F9A00020000000000000006814CC008B802EC0F6 -:10F9B0000B20024D809B2020E0083802CC00838081 -:10F9C0002CC00AB002CC08B30020C0083102520497 -:10F9D0003000000000000000E805A800CAE03E80FA -:10F9E0001FA40B7900FE003F821DE003E800CE401B -:10F9F0003B882CE403E801FA0032800CE8037A0427 -:10FA000060000000000000004811A000F8093E005E -:10FA10008FC083A018F8003C200F8803E000F8088E -:10FA20003E200E8083E101F0003C000F800B92002D -:10FA300030000000000000000810A400F94232402D -:10FA40004C98030400C9003A400F90232400B98168 -:10FA50003C400C92032400F90532406C90C3C20470 -:10FA6000300000000000000080042414B900A254FB -:10FA7000089B1A240289002240289002A400B99011 -:10FA80002E40289C822504B9002240089812E000EC -:10FA9000100000000000000018052400AD00234005 -:10FAA000085002640089002A400810026400B9006E -:10FAB0006E400890022500A9002240089106C60069 -:10FAC000400000000000000008041400B510A1442C -:10FAD0002850024480813020480812028440B180BE -:10FAE0006CC80812020480B1342048081202C20116 -:10FAF0000000000000000000B80D6140E8403290B6 -:10FB00000CC5036140C0403A140F850321B0F85082 -:10FB10003E000C85032140F840B0140C8003EE0138 -:10FB20005000000000000000B81DC404F9220E4877 -:10FB30000F1013B440FD303F444FD100E484FF0167 -:10FB40003D440FD10BE440F9303E440FD103E604AD -:10FB500070000000000000003805E400DD403F5068 -:10FB60000CD0032C00C90036400F90132704F50178 -:10FB700037400CF003F620F9A832680CD003C60019 -:10FB800070000000000000001800E00088A02E288F -:10FB9000288002200088A022000B800A6280B80022 -:10FBA0002200088002E100B8E0223A08A002CE0458 -:10FBB00030000000000000004800840281002E4058 -:10FBC00008100A4402810824400A10024580B90046 -:10FBD0002440291002C400B1082444081002C201C4 -:10FBE00070000000000000001814A40489012E50C9 -:10FBF00048B2026400910022460B90026400B901F1 -:10FC000026C009B012E400B1002640089002C604E4 -:10FC10006000000000000000A004E400C9003C40B7 -:10FC20000C90036400C90236500E93032400F9902F -:10FC300036480D9483E408F900B6400C9403E804B8 -:10FC400070000000000000006810A400E9003E40C1 -:10FC50000F9013A400E9022E61059003A400F9009F -:10FC60003A400E9043E410F90038402F9003CA0048 -:10FC700060000000000000002810A000D80132043D -:10FC80000F8043C001C800B2010C80032000C840AF -:10FC900030008C8483E000C80032006C8403CA0406 -:10FCA000200000000000000008042800BA002380A3 -:10FCB0000BEA02E800AA00228008A00228008620A1 -:10FCC00037A08DE402F800DA00228008A002CA0002 -:10FCD000400000000000000008056C00B30020C0D8 -:10FCE0000BB8024C04830020C008B0020C02830051 -:10FCF0002040283402CE908300A0C0083002CA0001 -:10FD0000500000000000000020011CC0B588214008 -:10FD10000B7002DC80A32021E04832420E908E015D -:10FD20006550097002DE20932121C0087002E800AE -:10FD3000400000000000000028181E00FF80B1A055 -:10FD40000F48027E0087A033E0287A0B1F00C48092 -:10FD500031608C5803FE00C7C833E80C5803EA0230 -:10FD60000000000000000000081DAC00FF003E0085 -:10FD70000F9023ECA0FB403EC08FB503ED80F80050 -:10FD80003C400FB003E800FB023ED00F9003C206D8 -:10FD900060000000000000006004BE00FF803FE043 -:10FDA0000FD903FE20CFC833EA8FFC033F00FD804C -:10FDB0003F600EE803F200CF802FFE0C78030000B6 -:10FDC0007000000000000000A8009C00B5022DC0DB -:10FDD0000B5842DC80CF0021C10B30121C40B40212 -:10FDE0002D46087112C800E7002DC40870036A048C -:10FDF000600000000000000000009C00B7002D0221 -:10FE00000B4602DC08970021C90A30221C00B4000E -:10FE10002D400A5082C400B7002CC8285002401060 -:10FE2000200000000000000040148C18B3002E20B9 -:10FE30000B1802CF4A83C220C10B34220C04B858DD -:10FE40002C400B2802C800A3002CC0081402480450 -:10FE50003000000000000000A805BC00FB003E8050 -:10FE60000FA002FC00DFA0B3C00EF00B3C00FBC0F3 -:10FE70003CA00EBD03EC00FF003FC00C30036A0441 -:10FE80006000000000000000A010EC00F9003E013E -:10FE90008FB143EC00F3003EC04FB013EC00FB0009 -:10FEA0003E800C8403E10073003EC10FB243E000CA -:10FEB00030000000000000000150FC10FF8037C03F -:10FEC0000CE003FC20FF0833C00FF083BC00FF00F0 -:10FED00033C02E40031C01CF0011C04CD00300449E -:10FEE000300000000000000081046C04B3022272A4 -:10FEF00008A116EC00BB0422C00BB042EC00BA19FA -:10FF0000B6D0089C4A2680DB0022C00890036040DF -:10FF1000100000000000000080052C00B9106220D5 -:10FF200048A002EC00BB0022C00BB002EC10BB00EA -:10FF300066080AA81226109B002AC028B0262000B6 -:10FF4000400000000000000008000C00B900200084 -:10FF5000083202CC04B30020C04B3002CC00B30006 -:10FF600020000800020100930028C008300642115A -:10FF70000000000000000000001C6C00F900B2400E -:10FF80000C8202DC01FF00B2C00BF103BC00F900DF -:10FF900026402E80032104CF00BBC00C9003000339 -:10FFA0005000000000000000A01DFC00FD003F40CC -:10FFB0000F8103FC00FF003FC00FF023FC00FC009A -:10FFC0002D402FC003F088FF0037C08FD003E80218 -:10FFD0007000000000000000C005FE40FF8033C23A -:10FFE0000CF8037CA0FF903FC42CB403BC80CF402E -:10FFF00037E00FF1936E44BF303F202CF863F004DC -:1080100070000000000000008010EC00EB2023F056 -:1080200008B8523D00B3002EDC08F4421C428B40DD -:1080300022C80BF6036C88BB302E0008B202E004A5 -:1080400030000000000000008805CC00BB0820C004 -:108050000830024CA0B3202680883602CCA0936062 -:10806000A4C20A32424C90B3202C0B883082E20129 -:108070007000000000000000C015AC08BB22A2C0C8 -:1080800008B0022C00BB002E9008B002EC009B0050 -:1080900022C00BB0026C00BB022E2008B002F00020 -:1080A00060000000000000004015EC00B18332C009 -:1080B0000C1A036C10FB0034C00CB003EC08DA009F -:1080C00036C00EB00B6C00FB003E280CB002D00096 -:1080D0007000000000000000E001BC00ED803FC027 -:1080E0000FD403EC00FF003FC80FB0033C00EE408C -:1080F0003FC00F7003FC00FF003F800FF003F8004B -:1081000060000000000000004010AC00FB20B0C088 -:108110000FB403AC02CB0032900EB0036C00EB0046 -:108120003AC00CB002EC00FB003E910FB00390008F -:108130002000000000000000C8052C00BB8023D7F1 -:108140000B90023C148B006A0828F000BC008300EE -:10815000BEC088F0132C00EF002E800BB007B200D9 -:108160004000000000000000E0054C00B34020D0BB -:108170000B28028C00830120C01AB8006C10A100EB -:1081800068C02A30028C00B3022E004B3002F80483 -:10819000500000000000000020011E00B7A021E0F8 -:1081A0000BECC21E04878029E40879829E40AF90C0 -:1081B00029E00A38001E00A7902D240B78028800C1 -:1081C000400000000000000048080C50FB0930C0CF -:1081D0000F20028C40C30020C00A38034C44E10049 -:1081E000AAC00E31438E00F3003C000F3003D202D0 -:1081F0000000000000000000404DBC00FF203FD008 -:108200004F7003FC00FF003DC00FF343FC40D7005C -:10821000BFC00DF4C3FC40FF003F400FF003D00689 -:108220006000000000000000A805EC00FB0032D058 -:108230000D9001EDC0FB003EC01FBA03ACC0C800EA -:1082400032E08DB443EC00FB0036A00CB0036A00B2 -:10825000700000000000000048119C00B70021C819 -:10826000086002DC20B7002DC00F74A21C28D600C5 -:1082700035C00872025C08B744A180487002120041 -:108280006000000000000000C0009E00B78020E4F5 -:10829000097826DE00B7802DE20A70128C88818072 -:1082A00021E0097802DE00B3A025A028780270043E -:1082B00020000000000000004814CC01BB8020C05A -:1082C000083042EC00B3002CC00A30220C009300AE -:1082D00024C1083002CC00B30020E008B002120430 -:1082E0003000000000000000E815A800FA08B28085 -:1082F0000DE203E800FA003F800AA003A800CE5078 -:10830000328005A003E800FA0037A80CA0037A0425 -:10831000600000000000000048006008F8003C0019 -:108320000F8801E000F8043C004F0013C000F80083 -:108330003E000F80036000F8023E010F8003D20070 -:1083400030000000000000000810E400F990124026 -:108350000C9003A400C9003E700E94332408C90099 -:108360002A400B9003E400F9003A400F9003020406 -:10837000300000000000000080046400B942226068 -:10838000081002240089032E40089002A4018104F1 -:108390003E400B9002E400B90222400E9002200001 -:1083A000100000000000000018052400B9402A4A0F -:1083B000089102A40089002E401A900A2404890022 -:1083C0002A400B9002E400B1002A400B9002060004 -:1083D000400000000000000008040400B101A848AB -:1083E000889002048081402C5018140A841089401F -:1083F0002C400B1002C400312020400A100A020158 -:108400000000000000000000B80D6140F0503A008C -:108410002CA002A142C8003E00DE002321428800B9 -:1084200038140F8503E140F85038140F05032E016E -:108430005000000000000000981DE408FD003644D4 -:108440000FD0036440F9003D500F9403E5007D40D8 -:108450003E400F9403E400F9103F400E9003E60401 -:1084600070000000000000001805E400FD403368C3 -:108470000CD003E781F90033780DD81326A0CDA0E6 -:1084800032400D9B032400F9A03C442C9007860049 -:1084900070000000000000003810E000B8A0A2103A -:1084A0001880038284B880362C2E0F02A3A0D8E057 -:1084B00036228B080342A0F8E02E28088802CE045A -:1084C00030000000000000000805C400B100A0500A -:1084D000283002C580B10820400910A24408814814 -:1084E00020400B14020480B1382C4808128282010B -:1084F00070000000000000001811A400B10022402C -:10850000089202E400B90226584A9002E408994011 -:1085100026400B90026408B9012C48089012C6044A -:108520006000000000000000A015E400F980324067 -:10853000089883E404B90130400D900B6402C9002F -:1085400032400F90032400F9001E580C9003A80439 -:1085500070000000000000002801A400F9203C4049 -:108560000F9803A400B9003E428E104B8404F9001A -:108570003E408F9003E400E9003E400F9003CA00A4 -:1085800060000000000000002810A000D8003208A1 -:108590000F8483A004C8043E008380012000C00033 -:1085A00032000F0003A000C80032104E8013CA042E -:1085B0002000000000000000280528008E90A38005 -:1085C0000BE4022800CA002F804AA013A800AA00CA -:1085D00036810BA00228008A00228008A0038A00AE -:1085E000400000000000000028054C0093C020D08F -:1085F0000B34028C008B002CF08B18024C00830093 -:1086000060C00B30028C02830028C10A3002CA000D -:108610005000000000000000A0011E00B40B69C063 -:108620000958061E8097102FC24870829C80A708A8 -:1086300025CC0B70021E8187A2ABC4087302E80030 -:108640004000000000000000A8083E10DC8421E08B -:108650000F78429F02C7883DE02F71034E00CF8004 -:1086600021E20F78839E49CFD039E80E7803EA02E1 -:108670000000000000000000084DAC40CA003600B9 -:108680008F3023ECA8EB403CC00F9643ED80FB00FD -:108690003ED88FB143ED80FB2036CA0FB0A38206CF -:1086A00060000000000000000005FE80FC8031E05A -:1086B00005AA10FE44FF903FE1CFF9173F20D78075 -:1086C0008BE40FF8033E30FF8037E00FF8004000E6 -:1086D0007000000000000000A8119C00BD1021C027 -:1086E000084A02DCC0B7002DC20CD3021C808700F0 -:1086F00029C04B72021C00B70121C00BF0122A04E2 -:10870000600000000000000000009C903400218008 -:108710000970005C0CB7002DC408501A0C009700BB -:1087200021C04B30021C00B70025C00B7002400076 -:1087300020000000000000002014CC00B000600009 -:10874000083E02CC00B3020CE02BB0020C009300F8 -:1087500028C00BB0022C10B30020D603300208044E -:108760003000000000000000A815BC00FB00B200B3 -:1087700005BE037C00FF003E200CB0033C00D98006 -:1087800033C08BF0033C00FF0037E00FF0036A04B6 -:1087900060000000000000008000EC00FB043E00D0 -:1087A0000FA423CC00FB003E81089003EC00E914E9 -:1087B0003EC00FB003EC10FB003EC00FB003E00062 -:1087C00030000000000000000110FC00FF003780B6 -:1087D0000FFA03FC00CF003F9006DC233C00FD10A5 -:1087E00033C00FF00B3C00430033C00FF003C04414 -:1087F000300000000000000081006C09BB1922322B -:108800000BBE036C008B002C900DB802AC00B100C5 -:10881000F2C00BB012AC008B0022C00BB003A04022 -:10882000100000000000000080052C10B30026207E -:108830000B9012EC018B002AC20A90022C00BB00A4 -:10884000A2C00BB0022C00AB002AC00BB002E000AB -:10885000400000000000000008040C01B3002000EC -:108860000B00028C0083002EC00B34028C00BB0076 -:1088700020C00B30020D00A300A0C00B300282010B -:108880000000000000000000000D6C00BB043680FA -:108890000FB202FC02CF0238C00EF0033C00FB0016 -:1088A00023C00FF0033D02EF0033C00FF043C003BD -:1088B0005000000000000000A01DFC00FF003F0071 -:1088C0000FF4237C00FF003FC00DD003FC00FF002D -:1088D0003BC00FF003FC88DF003FC00FF003A80689 -:1088E0007000000000000000C005F050CE1233D030 -:1088F0004C868330805F6833C40FF3833CC0CC3830 -:10890000B3080CC603F1A0FF0033240CC203F0002F -:1089100070000000000000008010EC80D22023D8FE -:108920000D96028860AF4023DC0BF6023CC28860E3 -:108930002252089122E100B724A2488A848260046E -:1089400030000000000000008805C4008100E0C481 -:108950000A00020480A320A8C01B300A0C00A0005B -:10896000280C090202C480B31C2208190302E21178 -:108970007000000000000000C015A400998062C0D3 -:108980000BA032A451AB002AC08BB0000C00A9C0D0 -:108990002A2108B822E200BB0022841BA8427004EE -:1089A00060000000000000004015E200CBC932C0AA -:1089B0000E8B132210DB0132C00FB00B2C0068812C -:1089C0003A222C8823E300FB0030308D9C83D004B6 -:1089D0007000000000000000E001BA40F7043EC251 -:1089E0000DD823D8007B0037C00F7033FC10D200A5 -:1089F00035C08FC003F400F7023FE00E8003F8009B -:108A0000600000000000000040108120C80830C055 -:108A10000C00832440C3893AC00EB00B2C08C9480F -:108A200072540F9103ED02EB8A3A628C800B1004B2 -:108A30002000000000000000C8052B048840A3C2ED -:108A400002AE1227428F4423C20BF4023D000A40BB -:108A500022E00BB502EC208F44A2408DBD233200F2 -:108A60004000000000000000E0054940838124C16F -:108A700008280201009300A0E80A30828F60B390BA -:108A800060B80B28124A0093002090092002780059 -:108A9000500000000000000020011E0287A825E011 -:108AA0000A7B021A04878021E40B78828E02969159 -:108AB00021210B6940DB40979223A089588208004E -:108AC000400000000000000048082582C30034C0B8 -:108AD0000C9B4308D0D32038C00EB0038C00B300E9 -:108AE0002080071003E000D31038180D3003520225 -:108AF0000000000000000000401DB4007F201BD0DB -:108B00000FF103F840EF003FC00FB4037C20CF0407 -:108B1000BF400FF003E410EF183DC00FE003D00694 -:108B20006000000000000000A805E800E300B2C4F7 -:108B30000CA0032400DB6832C80CB403EC80C880AE -:108B4000B6E00CA0032E00CBE0B2600CB80B2A00FC -:108B5000700000000000000048119C028700A1C8BE -:108B60000870021C08970221D4087402DCC00700B8 -:108B700021C08870021800830821C0085002120426 -:108B80006000000000000000C0009E20AD8029E0D1 -:108B90000858021E0097B021E8087802DE10158000 -:108BA00021A10848025E0087A465A0087802300071 -:108BB00020000000000000004814CF108170A8C001 -:108BC00038300A0D009300A0C1283002CC028388FF -:108BD00020E038340A4D72830024E82834821204DD -:108BE0003000000000000000E815BA40EEC0BA8076 -:108BF0000CE0033910DA0032800CA003E800DEC874 -:108C000033A00CE0037B00CA0037B10CE4233A0424 -:108C100060000000000000004800C100F8003600BD -:108C20000F8003C02038003E000F0003E000F80270 -:108C30003A240F8083A001F8043A040D8013D20077 -:108C400030000000000000000810E444C100324081 -:108C50000C9032240CC10638400D90090400D90054 -:108C60003E400F18032400F9013E400F9003C20458 -:108C700030000000000000008004640689002A50D3 -:108C800008940A2400894222500A90122500890083 -:108C90002E500B9C0A2510B9002E500B9002E000BC -:108CA0001000000000000000180524208900204268 -:108CB0000810C2AC1089082A4209900224209900A9 -:108CC0002E420AB1822C20B9006E420B9002C600DF -:108CD0004000000000000000080404008300284851 -:108CE0000812628C80810020400210028480812062 -:108CF0002C490B12060484B3026C400B1202C20111 -:108D00000000000000000000B80D41E0C8783014F9 -:108D10004C0513A142C078381E0D87830140D05006 -:108D20003C140E05030140F8783C140F0503EE03D4 -:108D30005000000000000000981DFC00FF000E44E1 -:108D40002FF1037440F9003E400D90036440FD1084 -:108D50003F440FD101F440F9013FC00FD103E606B3 -:108D600070000000000000001805E622E988B2400B -:108D70000F90032416C98C367B8F9C83A790C90063 -:108D80003E500494132450C9E03E500F9003060057 -:108D900070000000000000003810E28088A0222847 -:108DA0000B8A022A8088A42230088E0A220288A018 -:108DB0002E2888AA12229088F42E200BC8020E04B6 -:108DC00030000000000000000805D420A508214262 -:108DD0000B50821431850825400A502294408508A2 -:108DE0006D40085002540295002D480B50824201FC -:108DF0007000000000000000181584008D10234052 -:108E00000BD00034018D00234158D00234008D086E -:108E10002F5008D20274809D002F480BDC024604BC -:108E20006000000000000000A015E740E9C03240EB -:108E30000F90092600C90436401F9023A408C9409A -:108E40003E400C940B6420D9023E410F9403680409 -:108E500070000000000000002801A400F9803E40DE -:108E60000F1403C508F9003E401F9023E400F900E9 -:108E70003C40AF98038600E9003E400F100B8A008B -:108E800060000000000000002810B000DC40B300CB -:108E90000FC0033102C404B1003C40031000FC4089 -:108EA00033000CC403B100CC00B3000CC403CA04EB -:108EB0002000000000000000280528008A8022A071 -:108EC0000BA0022A008A8422A108A0022808BA0165 -:108ED000228008A02B28008A802A8008E002CA008D -:108EE000400000000000000028054C029B8120E0AB -:108EF0008B3806CE00938020C00838020C00B38067 -:108F00006CE00AB0024C00930020E0083002CA0076 -:108F10005000000000000000A001100480082102A1 -:108F20004B4406D020900821028044021000B4C0B7 -:108F30002D10484002000094892930084002E800C2 -:108F40004000000000000000A8083200D68031A0D8 -:108F50000FE80BCA00D68023A004F80B1A00FF808C -:108F6000BFA02EC813DA025E8073A02C7803EA0239 -:108F70000000000000000000081DAC00F9003E40A9 -:108F80000F90032400E9003E400E8003E400F80047 -:108F900032400FB003E401E90436400F8003C206FB -:108FA00060000000000000000005FE00CD8033607E -:108FB0000CD8433600CD8033600CD923BE004D80E1 -:108FC000336008F80B3E00FD843F600FF903C000DA -:108FD0007000000000000000A8119004DE00238053 -:108FE000086002B8208E04238008680210008E20DA -:108FF00023820840021200F6002D800B41A0EA04F3 -:1090000060000000000000000000900084002100CB -:109010000841025040940021000A5202D800850203 -:1090200025040840221808B4002D100B7840C00019 -:1090300020000000000000002014EE22930020C059 -:10904000083802EC00930020C12A2002640282103A -:1090500024F00A3C422428B3002CE00B8882C80488 -:109060003000000000000000A815AD00CB00B2C029 -:10907000ACBE036E02DB00B2C01EA003E400CA1146 -:10908000B6D0ACBC032400FB003EC0CF8403EA048E -:1090900060000000000000008000E040F8003C009C -:1090A0002F8203A000E8003E001D9013A800F900E5 -:1090B0003A00818343E800E8033E040FB003E00078 -:1090C00030000000000000000110E000D6003780F2 -:1090D0000CA003F800CE0033800DA0132008CE00B2 -:1090E00033820C40733018CE001F804FC1430044C0 -:1090F000300000000000000081047C008D0023404F -:109100000AD002F4008D00234008D4803E428D40F6 -:10911000234008F0023E408D000F400BF402204037 -:10912000100000000000000080052C009900A640FF -:10913000089006E400910020408800022408804046 -:1091400020400AB002240089000E400B8402200057 -:1091500040000000000000000804000082002080A1 -:109160000A2106C801820020800832820808830094 -:1091700060800A0012088082002C800B300A0201F5 -:109180000000000000000000000D6000D800360064 -:109190000C8423E000C80032000D820B2002C800BE -:1091A00032000E00032002C8003E000F80030003BF -:1091B0005000000000000000A01DFC00BF003FC0E8 -:1091C0000FF003FC00FF00BFC08FB003FC08FF02DC -:1091D0003FC00DF003ED00FF023FC00FF003E806B3 -:1091E0007000000000000000C001F08CFF003D6036 -:1091F0002CB2837C90DF3831E00FF8033C00FF2075 -:109200003FC40EF4037C00F48033000DF803F0003B -:1092100070000000000000008010E120BB622E42C0 -:1092200028F4423E408F4422E00BB0837F44BFC10C -:109230002DDC2AF6023F45B880226188B802E0049E -:1092400030000000000000008805C580B2182EC85C -:109250002930320C08B32020C04B92020C00B340DE -:109260002CC08934124C00B00024C1493002E20104 -:109270007000000000000000C011A400BA0C2EE035 -:10928000A9B0062C008B00A2C00B90006C00BB00A4 -:109290002EC00B30026C00BA8026F008B002F00439 -:1092A00060000000000000004011EE00FBC43E78AA -:1092B0002DB0036C08FB0032C08B24832C00FB0014 -:1092C0003EC08FB00B6C08B2E016608DB023D004A6 -:1092D0007000000000000000E001BE98FF403FC0A9 -:1092E0000E7003DC00FF003FC00FE003FC00FF0036 -:1092F0003FC00EF003AC00FE00B9C00FF003F80051 -:1093000060000000000000004010AD00FA403ED0B8 -:109310000EB203EC00C3003EC00CA0032C01FB0006 -:109320003CC00EB803EC00DA003AD04FB023D004B2 -:109330002000000000000000C8052C00BA002CC06E -:1093400008F407BC14DF003EC01AA052BC00BF04E2 -:109350003FC08AF003BC00FA0022C80FB003F2003D -:109360004000000000000000E0054801B1006CC2B0 -:109370000A3042CC0083052CC00830028C01B304B3 -:109380002CC00A30228C00808028C00B3022F800CC -:10939000500000000000000020011E08B7806FE0B0 -:1093A0001878028E40B7802DE00A78029E00B780C0 -:1093B00029E10A78029E01BC8029E40B7802C800EA -:1093C000400000000000000048080940F1203CC4B3 -:1093D0000E3902CC00C3002CC40892038C88B31051 -:1093E0002CC40EB0078C00C20838C00F3043D20224 -:1093F0000000000000000000401DBC10FC007FC009 -:109400000FF083FC21DF083BC08F9001FC21FF0C93 -:109410003FC20FF103EC00EF0077C01EF00390068F -:109420006000000000000000A805E801F90032C05B -:109430000FB203EE90DBE13AC04D38132D30FB0044 -:109440003EE04FBA432C40FA003FC08CB003EA0024 -:10945000700000000000000048119C00B10021C015 -:109460000B7102CC20A72821C00B70135C08B71029 -:109470002DC44B34831CC1B7022DC01A7002D20414 -:109480006000000000000000C0009A20B4C425A2C3 -:109490000B7806DE00838029E01BF8025E80A7A01F -:1094A0002DC80A72021E00A68028E0087802F0008B -:1094B00020000000000000004814ED00B34024C369 -:1094C0000B3042CC00A30020C01B34024C00B30080 -:1094D0002CC04B30020C00B3882CD40A3002D204CA -:1094E0003000000000000000E815B800FE40B7A002 -:1094F0000FA003E800DA003A800FE2036800FA00E8 -:109500003E800FA00B2800EEE03FB004A003FA0459 -:1095100060000000000000004800E004F0083A107D -:109520000F8403E010F8003E004F8083E000F80055 -:109530003C000F80038000F8403E090F8003D200FA -:1095400030000000000000000810E420E900324470 -:109550000C90032400F9003E400F9013E400B90082 -:109560001E400C10032400C9A03C640C900382042C -:1095700030000000000000008004640089002268C0 -:109580000813022408F9002E481B9002E400B900D9 -:109590003E400C90022408F9402E600A9006E0003C -:1095A000100000000000000018012400A900204065 -:1095B0000890022400B9012E400B9002E400B9008B -:1095C0002E40089222240089002E40089002C600F6 -:1095D0004000000000000000080404808121E050E9 -:1095E00028160A0480A1402C404B1422C400B1006C -:1095F0002C500914020404B1002C400A1002C201CC -:109600000000000000000000B80D6140E85032008A -:109610008C80022000B8003E000B8033E010F80080 -:109620003E000C80032008CA003E000C8003AE03FD -:109630005000000000000000981DFC40FD102F416C -:109640004F9103E440F9403E404FD063E500F940BC -:109650003A502E94036500ED003F500F9003E6064C -:1096600070000000000000001815E600F9E033501B -:109670000CDA03A600D9803F400F9103A600F988B9 -:109680003E680CDE036600ED003B690C9003C600EB -:1096900070000000000000003810E108B8E0202051 -:1096A000188E26E10080A02E004B8842E150B84081 -:1096B0002E2A0D0A022008B8002E140D8002CE04B6 -:1096C00030000000000000000805C500B160204027 -:1096D0000831A2C50091482C401B12028400B10041 -:1096E0002C500916020500A3042840081002C201EC -:1096F00070000000000000001805A400B9082070E8 -:10970000289002E40089002E400B9002E408B9037F -:109710002C402990026400B9002E62099002C60410 -:109720006000000000000000A005E500F9D0B27064 -:10973000089003E400D9043E400F9003A410F902FE -:109740003E400D902B6400E98D3A600C9003E804D4 -:1097500070000000000000002801A400F9803E42D3 -:109760000F9003E400F9003E400F9A03E400F90073 -:109770003E402F1003A400F9223C404F9003CA0042 -:1097800060000000000000002800A000F04032004F -:109790000C8003C000F80032201F8003E000C800E6 -:1097A00032000C80022000C8C03E000C8003CA04B6 -:1097B000200000000000000028152810BA0023A097 -:1097C0000AE402E800BA002BA10BA002E800AA00FC -:1097D0002A810AA003E808DE002E800AA002CA003F -:1097E000400000000000000028054C00B304A0B1B8 -:1097F000083622CC00B30020E40B3002CC008300FA -:1098000020C00818020C0091012CC0083006CA00C4 -:109810005000000000000000A0011CC8B32121C2BC -:109820002A7002DC00B7A029C00B7202CE00A7810B -:1098300029C04A7402FE0097012CC00A7012E80089 -:109840004000000000000000A8081E80F7C031E0C2 -:109850000C4803DE11F78021E00B7A03DE00C380A1 -:1098600033D86C78033E00D6803DE00C7803EA02E2 -:109870000000000000000000080DAC08FB803EC0A6 -:109880000FD003EC04FB3C3EC00FB6076C01FB009D -:109890003ED00F9407EC01EA003EC00FB003C206B1 -:1098A00060000000000000000001FE00CFA43B604B -:1098B00008D9037E00CF803F254FFC87BE00CF80B4 -:1098C0007FFC0CFC037C00F69033E00FF803C00033 -:1098D0007000000000000000A8119C088F282140A3 -:1098E00008D0021C40A72031041B7802DC80D7007E -:1098F0002FC41AD0021E48B60061C00B7006EA04DD -:10990000600000000000000000008C008730694407 -:109910000850220C0087012D448B70068C108700A4 -:1099200029C90850021C44A60061C00B7002C00087 -:1099300020000000000000002014CD00838860405B -:109940000010024C002B002C411B3002CC00930075 -:109950002CC00A30420C00B24020F10B3002C80487 -:109960003000000000000000A815BD41CFC0BAF0D3 -:1099700028901B6C08CF002CC00FF003AC008B00AC -:109980003FC06CB04B2C01FB4022C80FB003EA046F -:1099900060000000000000008000EC04FB043FD4E5 -:1099A0000F1003AC00FB0032C05FB003EC00FB04FF -:1099B0003EC04F1013EC00FB883EC04FB003E000E8 -:1099C00030000000000000000110DC00C70033621E -:1099D0000CC00B3C00EF0033E01CF0133C08F70018 -:1099E00031C00ED803BC00FE003DC60CF003C044DD -:1099F000300000000000000081046C00CB0322470F -:109A00000898422C009B002AC00AB0022C00BB041C -:109A10002AC00AB002AC08FA002E6008B002E0408A -:109A2000100000000000000080052C009B0020407A -:109A30000898022C00BB0022880830022C00BB00D2 -:109A400022C08A9202AC00AA802EC008B006E000B4 -:109A5000400000000000000008040C008300A0404B -:109A60000810020C00B30028800A32120C00B30464 -:109A700028C00A30228C20B2002CC0083002C2015B -:109A80000000000000000000000D6C02CB00304020 -:109A90001C94032C00EF0032C088F08B2C00FB00DC -:109AA00033C0AEF003AC80EA013EC02CB003C0036B -:109AB0005000000000000000A01DFC00FF002F402F -:109AC00007D283FC00DF043FC00FB003FC00FF009F -:109AD0003FC00FD00BEC00EE003F400FF003E80654 -:109AE0007000000000000000C005F500CF083F48EE -:109AF0000FC39370D0DC303FD80CB2033CC0FF40A2 -:109B000033C42CF1036250FC3433000F5C03F000CB -:109B100070000000000000008010C4808B002F5AED -:109B20000BA61221C089702FDC08F2C23DD0BF40C5 -:109B300037DC88F50A2080E8102A160B9002E00432 -:109B400030000000000000008805C00083082C449D -:109B50000B02020C0080002CC80833428C90B330FA -:109B600028C84A3212800CB0A028280B1202E20149 -:109B70007000000000000000C015A2008B002E48FD -:109B80000BA022202088802EC028B00AAC00BB0089 -:109B90002EC00AB002A000AB822AA00BB202F004D1 -:109BA00060000000000000004015E700CB003EC050 -:109BB000CF9C0B2100D8883EC00CB003AC00FB004A -:109BC0003AC00EB043E840F8803A600F9803D004E2 -:109BD0007000000000000000E001B400FF000FE092 -:109BE00007A103E802FB003FC00F70237C00FF02C7 -:109BF00035C04DB0037420FC013F000FF803F8009E -:109C000060000000000000004010A500CB00BA403A -:109C10000C140B2F22C94032C08EB003AC00FB00E5 -:109C20003EC00EB003E400C90032002C90031004C3 -:109C30002000000000000000C80124008F00224026 -:109C40002CA54229008B04A3C10DF00A3C00BF00E3 -:109C50003FC008F0016900DA0522D00894037200C1 -:109C60004000000000000000E0056040830120C0CB -:109C70000900022000826022C00830424C10BB0262 -:109C80002CC008B01205009B002082093202380067 -:109C9000500000000000000020011690878020E0A6 -:109CA0000858021614848121E02939025E00B78029 -:109CB00028E00878027A80968121E009F8024800BD -:109CC0004000000000000000480808098B103844DC -:109CD0004D25120C00C21022C80A3803CC00F31024 -:109CE0002CC00C30038AC0D91032402D1003120250 -:109CF0000000000000000000401DBC80FF003F404D -:109D00000FF003F440ED003FC00EF303BC04FF006E -:109D10003FC20FF00BD400FF10BF800EF003D0063F -:109D20006000000000000000A805FA00CB023EC061 -:109D30000F9003A000CB003ACA0CB313AF24CB485A -:109D40001EC80FB6032C00FA003EC00F9003EA00B5 -:109D5000700000000000000048119C0887202DC4FE -:109D60000B5012DC0487002CC00870A21D00A74015 -:109D700025CB8B74821C00B7002DC10B7002D2045E -:109D80006000000000000000C0009A0187902DE0F4 -:109D90000B7802CE0086802DE4297A029E8087A06F -:109DA0006DE80B78021E00B5802D600B7802F00084 -:109DB00020000000000000004814CD0083022CE0C9 -:109DC0000B3002CC0083E02CC00830020C00A30052 -:109DD00024C00BB0020E20B3082CC00B3002D204FA -:109DE0003000000000000000E815B882CA003EA85C -:109DF0000FE003F8028E803E800DA05BA800CA0031 -:109E00003E800FA0033B80FE422F800FA803FA0480 -:109E100060000000000000004800E020F8003E0064 -:109E20000F0603C000F8113E000F0003E000F80029 -:109E300036000F800BE000F8043E200F8103D200B3 -:109E400030000000000000000810E400F9003E406F -:109E50000C9A032440C9C03E404C90032400F900F2 -:109E600036400790032400C90432600F9003C204F7 -:109E7000300000000000000080046400B9022E40A1 -:109E80000A9202250289E02E409890022400B9002F -:109E900022400990020400D90022440B9C02E000F9 -:109EA000100000000000000018052C00B9002C4034 -:109EB000089002242889002C40689042240CB104A8 -:109EC00026400B900A2C8081002240CB9282C60053 -:109ED000400000000000000008040400B1202C48ED -:109EE0000A1202048081212C4C0811020408B110CE -:109EF000204C09120224019120A0480B1002C2013B -:109F00000000000000000000B80D41E0F8503E14D1 -:109F10000C85032140C8503E1008068301F0F86804 -:109F200036100F05032940C85032940F8503EE0305 -:109F30005000000000000000981DF400F9103F449C -:109F40000FD10BF440FD122E4C03920BE400F920CC -:109F50003E4C0F9103FC00FD103F440FD003E6067A -:109F600070000000000000001805F620C9013E4006 -:109F70000FD0033C00BD0032630C9E432700E9C0B4 -:109F80003E680C98033400F9103F400FD003C60020 -:109F900070000000000000003810C220D8002E0021 -:109FA0000B80522804B8002238088803620088F029 -:109FB0002E3A488F0A2000B0802E000B8002CE047B -:109FC00030000000000000000805C48081002C4023 -:109FD0000B10020400B10020424814420580A12069 -:109FE0002C440810820400B1202C400B1002C20146 -:109FF00070000000000000001815A50199002E4017 -:10A000000B90022440BB0122410890122400A900B9 -:10A010002C400810402408B9406E500B9202C60430 -:10A020006000000000000000A015E714C9053E41D3 -:10A030000F900B2404F908B2402C900A2400E90088 -:10A040003E402C90032700F9803E600F9003E80407 -:10A05000700000000000000028018488F9003E48DC -:10A060000F9903E600F9023C40AF1003E412D90453 -:10A070003E400F9003E500F9C03E640F9083CA0094 -:10A0800060000000000000002810A100C8003E0091 -:10A090000F80032100C840B2000C80032010C800CC -:10A0A00032000C8003E080F80432002C800B0A049C -:10A0B000200000000000000028052800CA002E80B3 -:10A0C0000BE80A38108EC022800DA00228000A0476 -:10A0D000028028A002FB00BA0037B048EA020A005A -:10A0E000400000000000000028054C0093012CC037 -:10A0F0008BB0420C909B2020C04830422C00830043 -:10A1000020C0083002CD40B30024C80838020A003D -:10A110005000000000000000A001140087002DC0C6 -:10A120000B24061600930821C80931020C8087A071 -:10A1300021C0187202DC00B7B424E30878022800BA -:10A140004000000000000000A8081E0297A03DF09B -:10A150000F48033E00D68030E02C7A021E82C3F006 -:10A1600033EC0C7C03D600F78035E00CD8032A02D0 -:10A1700000000000000000000819A5A0FB003ECA76 -:10A180000F8003EC02EA003EC60FB40BED40FB006B -:10A19000BEC00FB643E000FB023E800F9003C20634 -:10A1A00060000000000000000005FE02CF883FE0D4 -:10A1B0000CB903FE00DD8133E08CFC033F04CF804B -:10A1C00033E24FFC033E00CFC033640CF803C00001 -:10A1D0007000000000000000A811944087002FC10B -:10A1E0000D69A2D040BC0023C008F0029C0087008B -:10A1F00021C00B700A3C048710214C086002EA045D -:10A20000600000000000000000009E0087002DC0DC -:10A21000096202D800970021C40870020C40970020 -:10A2200021C40B30025800A7082180086082C000BA -:10A2300020000000000000002014E42583002CC052 -:10A24000092202CC20B20020C028B0028C0093006A -:10A2500020C00B30426C20830820E208B802C804FA -:10A260003000000000000000A815A400CF003FC08F -:10A270000D9C03E800DB8033C00CF00B3C06DF00D4 -:10A28000B3C00BF0076800EF4032A80CA803EA0443 -:10A2900060000000000000008000EC00FB002EC009 -:10A2A0000F9403C540FA303EC00FB0036C00EB00C2 -:10A2B0003EC00F3013AD40FB023ED00FB403E000B0 -:10A2C00030000000000000000110E400C70031C1B0 -:10A2D0008CD0033400CD003DC00CF0017C00DB01CC -:10A2E0003DC04CF00B3002C30032000FD0030044DD -:10A2F000300000000000000081046E408B002AC086 -:10A30000288442228088803AC00DB002AC088B00BD -:10A310002EC008B00223208B0022308B8C022040FC -:10A320001000000000000000800524008B0022C007 -:10A330000838862A0089802AC008B002CC009B0019 -:10A340002EC008B04226008B0022710B8C02200028 -:10A35000400000000000000008040C00830028C03A -:10A360000832420000810028C00930528C08830066 -:10A370002CC018300600008300A0000B0002020170 -:10A380000000000000000000000D74028B0033C0CC -:10A390000C920B2002C8003BC00CF503FC00DF014F -:10A3A0003FC104F0332140CF0032000F800B000387 -:10A3B0005000000000000000A019FC00FF003FC09A -:10A3C0000FC403F0009C003BC00FF003FC00FF0033 -:10A3D0002FC00FF003F080FF003F000FC003E8061E -:10A3E0007000000000000000C005F0C0FFA0312494 -:10A3F0000EF0631004EF643FC04CF3031C80DF08D1 -:10A4000037C00FF003F0A0FC0031082CD203F0009D -:10A4100070000000000000008010E100BBC1224875 -:10A4200008FD022E0097002FC24871237E40BF0016 -:10A4300021C54BF502EF00BB4036E008A802E0045E -:10A4400030000000000000008805C584B311A2C9D7 -:10A450000A30020001B33028C40832420C00A308BD -:10A46000A0CA0A32828010B0412411083102E201F0 -:10A470007000000000000000C015A500BB0022E134 -:10A4800028B0022C809B002EC008B0026C00B300E4 -:10A4900022C00BB000EC20BB0026C0088002F004F4 -:10A4A00060000000000000004015E340F70432C0E7 -:10A4B0004EB0232E20EB001EC00CB0012C00FB0080 -:10A4C00036C01FB003E140FB0036980C9003D00467 -:10A4D0007000000000000000E001B604FF023FC071 -:10A4E0000FF003FE00EF023DC00FF023FC00FF0061 -:10A4F0003FC04FF003FC00F4003B400FA013F800F6 -:10A5000060000000000000004010AA20EB1036C0E0 -:10A510000DB007EC20DB0032C00CB0026C20EB0069 -:10A520003EC10DB003E020DBA032904CB00B100414 -:10A530002000000000000000C8052D008F8020C111 -:10A54000087012CF008F00A3C00DF0023C008F00F6 -:10A5500037C088F002EC00880020400880023200FA -:10A560004000000000000000E0054C00A3802481B2 -:10A57000093006CC40930028C108B002CF40A300A8 -:10A580002CC0093002CD00904060402810023800F5 -:10A59000500000000000000020010E00878023E032 -:10A5A000487902DE41978029E01978069E0087806D -:10A5B00025E0087802D203838021A0086802080001 -:10A5C000400000000000000048080C00A30034C058 -:10A5D0000D3042CC01D3103AC50C3903CC00E30452 -:10A5E0003CC40D3003CE00D00030400C30031202CA -:10A5F0000000000000000000401DBC00F7003FC04C -:10A600001FF053FC00EF0837D10FF0837C00F740B8 -:10A610003FC10FF103D000FF00BF840FC803D00675 -:10A620006000000000000000A805E000FB003EE024 -:10A630002CBE83EC00EB403EC00FB403ED20FB10BA -:10A64000B6D20FB483EC00DB8036C10C90212A0017 -:10A65000700000000000000048119400B7002FC0F7 -:10A660000836020C0887302DD98B7286DD00B320A6 -:10A6700021C80B7402D0028400A00028200212041A -:10A680006000000000000000C0009A00B7802DE0CC -:10A69000087A029D00A7A02DE00B78029E80A7807B -:10A6A00021E4087A269E18830421E008780A7000C5 -:10A6B00020000000000000004814CC00B3002CE093 -:10A6C0005830120E8283002CC00B3002CC01B30034 -:10A6D00020C10B3002C00888D2202008000252049A -:10A6E0003000000000000000E815B860FA003F826A -:10A6F0000CA003FA00AA001E808FA003E800F2005D -:10A7000032801FA003E800DA003688ACE0037A0448 -:10A7100060000000000000004800E100F8003E205A -:10A720004F8003E100F0003C000B8003E000F802E2 -:10A730003A000F8043F100FC0A3D000FC003920075 -:10A7400030000000000000000810E600C9903E4004 -:10A750000F9203E400D9003240049007E700F9109B -:10A7600030400C9043E409D98022402C100B0204A5 -:10A7700030000000000000008004646089C02E40AA -:10A780000B9826C58089002240289012E710B90056 -:10A790003640289012C583C980B640089002200038 -:10A7A00010000000000000001805040089402E4140 -:10A7B0004B9002E4009900A2400A9002E500B90023 -:10A7C000E241089042E4009D50AB4A08D0260600C2 -:10A7D00040000000000000000804048281202C508A -:10A7E0000B1002E400814020504A1432C400B140F2 -:10A7F0002451181412D40085402D4008500602013F -:10A800000000000000000000B80D6140C8003E00DC -:10A810000F8002E000D80032000A8002E010F80049 -:10A820003200048003E000D8003A000CC0032E037D -:10A830005000000000000000981DF440F9103F4156 -:10A840000F9403F500F9403E500D9403E510F940D4 -:10A850003E504F9403C500E94136500F9403E6067D -:10A8600070000000000000001805F600FDA83A4046 -:10A870000CD8233600E9A03E780F9E03B680CDE2C7 -:10A8800032680C9B0336824DA037688C9803060013 -:10A8900070000000000000003810EBA0B84020203D -:10A8A000088502215188C02E290B8E02E100D8E0D4 -:10A8B00022320D8D23614898D4A2102884020E0400 -:10A8C00030000000000000000805C500B3002A4A5F -:10A8D00028104EA408A16828440B1402C50081402A -:10A8E000A0500810020402912A204428144A0201B0 -:10A8F00070000000000000001815AC80B900224074 -:10A90000489006A400A9002E400B9022E400990074 -:10A9100022400910026402990022400890020604B5 -:10A920006000000000000000A015E400F9003858A5 -:10A930000C90538414A9043E400F9003E400C90016 -:10A9400032400C90032404D900B6404C900B2804EC -:10A9500070000000000000002801A400F9023E4938 -:10A960000F10436400D9003E400F9003C400F10271 -:10A970003E400F9003C402E9043C400F1C03CA0090 -:10A9800060000000000000002810A180C8203E00E8 -:10A990008C800B2000E8023E000F8003A082C800DC -:10A9A0006C000F80032010C80032020C80030A04E0 -:10A9B00020000000000000002805380086002E80DE -:10A9C00068A8803A008A002E800BA002F8008A0056 -:10A9D0002E800BA00A3A008E10238008A0030A00E4 -:10A9E000400000000000000028054D0083002CC03E -:10A9F0000838000C6023002CC00B3002CC408300D0 -:10AA00002CC00B30020C028A80A0E028300A4A00D9 -:10AA10005000000000000000A001162087022DC198 -:10AA20004870127C00A7202DC90B7200DC0087083B -:10AA30002DC41B32021D01874221C208700228006A -:10AA40004000000000000000A8083E02C7803DEC66 -:10AA50000C58031E00E7803DEC0F7F039600C78073 -:10AA60002DE20779030A06C38030208C38036A027E -:10AA70000000000000000000081DAC00FB003EC00C -:10AA80000F10438C00DB383ED80FB003CC04FB44DE -:10AA90003EC08FB613EC02FF023E000FB003C206A9 -:10AAA00060000000000000000005FA00FF8031E3B4 -:10AAB0000EF823FE02DF80B7E20EF8037E006DD0B1 -:10AAC00033E00CF89B76C0DF84B3E004F803C000E9 -:10AAD0007000000000000000A8119040B70221C4DF -:10AAE000087B42DC00870021C40B300010808D0001 -:10AAF00023C00DF20204428F0029C8287002EA0424 -:10AB0000600000000000000000009400B60023C0B8 -:10AB10000A72028C00870021C00A30020401A702D9 -:10AB200021C0087042008A870021C0287002C0003E -:10AB300020000000000000002014C500B000A0D0DC -:10AB400008B002C9428B0020C00B302204008300F1 -:10AB5000A0C0493002454093C0A8D4003502C804C3 -:10AB60003000000000000000A815AC00BB0031C0A0 -:10AB70000EB023CD00DF0037C00EF0016800E30007 -:10AB800033C01CF0034500DAC892D42CB403EA04A5 -:10AB900060000000000000008000E520FB003EC0D7 -:10ABA0000FB003EC00FB003EC04FB003AD00FB0054 -:10ABB0007EC01F3003A480E9203CC00F3203E000B8 -:10ABC00030000000000000000110DC00C70033C2AC -:10ABD0002CF0033E20DB0013C00C70033C80EF041C -:10ABE00073C10FF0223000C600B2C00CF003004465 -:10ABF0003000000000000000810069008B44A2C109 -:10AC000088B0036C008B0022C028B00A2D00BB0066 -:10AC100062C00BB00226028B8022C008B003204025 -:10AC20001000000000000000800528018A0822C0F2 -:10AC300008B2026C409B0028C048B0162904B90134 -:10AC400022C049B006AE098B8022E048B002200045 -:10AC5000400000000000000008040002820022C042 -:10AC600088B0024400830028C00830020800B10008 -:10AC700020C00B30028C00838020E008300A0201E3 -:10AC80000000000000000000000D6400CA0033C096 -:10AC90000CB2032C00DF003BC04CF5132C04EF007A -:10ACA000A3C00DF003A840CB00B2002CB0030003FA -:10ACB0005000000000000000A01DF000F4003FC0A4 -:10ACC0000FB103F000FF0037C00FF003FC00FF00DE -:10ACD0003FC007F00B7C08FF013F000FF003A80600 -:10ACE0007000000000000000C005F0C5ED333BCC53 -:10ACF0000CF0033040FF253FCC0CF3833CD0DF4801 -:10AD000037304CF303FD80CF2833D80CF1033000EB -:10AD100070000000000000008010ECD0BB3120CC9F -:10AD200088F3422050BF902FC40AF6027DC08F40A6 -:10AD300026408FF602FD00FF0839C808F602A0047D -:10AD400030000000000000008805C480A12028C950 -:10AD500008309A0009B3002CC02030024C908320A8 -:10AD600002080B3312CD80932024D808342222010C -:10AD70007000000000000000C011AE00BB1022C037 -:10AD800008B00226013B016EC008B0024C088B00DF -:10AD9000A2890BB002EC00AB006AC128B002B0047B -:10ADA000600000000000000040156E00E8C13AC0DD -:10ADB0002CB0432600FB063EC10CB00B2C02CB008E -:10ADC00034229FB043EC009B0236C18CB0031004C8 -:10ADD0007000000000000000E001BC00FC803DD0DD -:10ADE0002FF003FC00FB003DC0073003BC00EF0464 -:10ADF0003FE05EB001FC00FF001BC00FF003F80055 -:10AE000060000000000000004010AC00CB013EC913 -:10AE10000CB0172084EB00B2C10DB0036C00C3006E -:10AE200032500FB0030C40C3007EC00C300310043E -:10AE30002000000000000000C8052C008A582EE009 -:10AE400048F0022D00EF0123C008F0223C048F607F -:10AE500036540BF00A3D408F002FC008F0037200FB -:10AE60004000000000000000E005400089802C1038 -:10AE700008B0024900A3A024C00930024C0083C9D5 -:10AE800020904230124D0083006AC0093002380021 -:10AE900050000000000000002001160085806D6257 -:10AEA000087E025640278025E01978060E00838030 -:10AEB00061A00B78024E0087826DE009790248009C -:10AEC000400000000000000048082C02C3613C88DC -:10AED0002CBA124910E32C36C00D30534C44C30039 -:10AEE00020010F31034C00C3013CC02DB1031202FD -:10AEF0000000000000000000401DBC00FF003F00FB -:10AF00004FF109B000FF003BC00EF401FD24FF40EB -:10AF1000BFC007F003BC006F103FC41EF183D00612 -:10AF20006000000000000000A805C400E804320032 -:10AF30000CB603E802CB0036CA0FB503AD00FB2008 -:10AF40003E400FB303EC80FBA832C68CB6032A0048 -:10AF5000700000000000000048119402E60020008C -:10AF6000087302DC0087702DD00BF0021C84B72020 -:10AF70002DC00B7082DD24B74034C9287282920440 -:10AF80006000000000000000C000BE02AC80A120F4 -:10AF9000087900CE04878065E00B7A029E00B790A6 -:10AFA0006DA00B7802DE00B78021E0087802300047 -:10AFB00020000000000000004814ED82ABE020E417 -:10AFC000083002EE0483002CC11B30020C08B300D1 -:10AFD00064F60BB002CC04B30026C0083002920421 -:10AFE0003000000000000000E815BB80EE4931A0F1 -:10AFF0002CA003FA00CA0236800FA003A800FA02B0 -:10B000003F900FA063E800FA0032800CA0233A04BE -:10B0100060000000000000004800E00AE8003E0870 -:10B020000F8003E350F0003E000F8013E000F800B3 -:10B030003E000F8003E001F8017E000F8003D20084 -:10B0400030000000000000000810E440C9A13240B8 -:10B05000201101A640C98436400D900344004100F0 -:10B0600032400F900B2400F9003E404C10030204C4 -:10B070003000000000000000800464008982A240CB -:10B08000089C02250089C82240089042240089209B -:10B0900022600B90022410B9002E4008900360003B -:10B0A000100000000000000018052400890422CAD6 -:10B0B0000A900A2502892020402810026401A90074 -:10B0C000224B0B90022401B9002E41289002060069 -:10B0D00040000000000000000804049081A0204807 -:10B0E0000A320204808100204408110204D0A12009 -:10B0F00020400B11020600B1312C48081402420115 -:10B100000000000000000000B80D6142C854321475 -:10B110000E85032144C828B21A4C86936114E85066 -:10B1200022140F86832140F0401E140C00032E03CE -:10B130005000000000000000981D7444F5103F44CA -:10B140000D91037440F9003E480B9203E4C2D910FC -:10B15000BF400F9203E504F9303E440F9443E606E6 -:10B1600070000000000000001805F622CDA1336138 -:10B170000CD8D33410CDA83E608E9C93A708CD8008 -:10B1800033400E9AD336A0C98032600C9903060072 -:10B1900070000000000000003810E3888AA020281A -:10B1A000088022201288402C28088A022200880069 -:10B1B00022000B8C03210088D0A23E288D020E04B1 -:10B1C00030000000000000000805CE20A1482052F9 -:10B1D000291002240381002C520A1012851091407C -:10B1E000A4400A128244009128244028120202013D -:10B1F00070000000000000001815A400A9142240EF -:10B20000099002A40189042C4008900224009900AE -:10B2100022444B10422414990026400810020604D0 -:10B220006000000000000000A015E440E940B27892 -:10B230000D900B2422C9033E410E9003A402D900B5 -:10B24000165806900B6402D90036400C900B280467 -:10B25000700000000000000028018400D9803E4AF0 -:10B260000E90036420F9083E410F9003E400E108CA -:10B270003E400F9003C400E10038400F9003CA0025 -:10B2800060000000000000002810A009F040B0108D -:10B290004C000B2000F8003A001C0003E000C8003E -:10B2A00036000C80032000C80032000F80030A041F -:10B2B0002000000000000000280528003E8823A28E -:10B2C00048E0001980BE882E800DA042E8008E0064 -:10B2D000239008A00A3A00DA0036800BA00A0A0080 -:10B2E000400000000000000028054C00B38020E072 -:10B2F0002830C20F10B34028C00B3002EC1183403D -:10B3000028D20A30020CC0830020C00B30020A0091 -:10B310005000000000000000A0011C00B60021C089 -:10B320000820C21C10B5002DC80A7202DC40850836 -:10B3300029A21A72220C00933005C40B3222280075 -:10B340004000000000000000A8081600B280312074 -:10B350000C58031E00F78039F80B7C22CE40CF80BA -:10B360009B602E3B031A00C7A811E00F78032A0246 -:10B370000000000000000000081DA400FA003EC00C -:10B380000F9023E800FB003ED02DB603ED02F9003C -:10B3900032400DB007EC00FB603EC80FB503C2069B -:10B3A00060000000000000000005FE00FF8033A0E8 -:10B3B0000CF80B3240CE8137F00CBC03FE00FF844A -:10B3C00033E02CF883E602CF8533F00CFC03001445 -:10B3D0007000000000000000A8119C00BE0035C6EF -:10B3E0002830023040870023C0087A02DC00BE000B -:10B3F00023C0087012FE00870021C008F0022A0452 -:10B40000600000000000000000009520B6002080D1 -:10B410000831025C01870025C0087202DC00B6001A -:10B4200021D0097002D408930020C00870020000E7 -:10B4300020000000000000002014C400B0E02460E0 -:10B440000820064801800020C0083002CC04B30068 -:10B4500020840B3002E8009B0020C0083002080462 -:10B460003000000000000000A815AC00B9E03280F8 -:10B470006CB0236F00C30037C13CF003FC00FA003E -:10B48000B0C009F003EC10DF0073C00CF00B2A0011 -:10B4900060000000000000008000EC10F8003E4258 -:10B4A0000F2403A860F8003CC10FB003EC00F94082 -:10B4B0003E8004B023E100EB003EC00FB003E0008B -:10B4C00030000000000000000110F400EE003D30EC -:10B4D0000CC0031400CCA0B3C04C70035C10DF00A0 -:10B4E0003F000CF003F800CF0023C00CF003004035 -:10B4F000300000000000000081046400BA812E5872 -:10B500000888022780892022C028B0022C00888366 -:10B510002E2005B062E3008B002AC008B003604013 -:10B52000100000000000000080052600B9812E40B8 -:10B53000088C062600880022C008B0166C00988887 -:10B540002E2008B004E3010B0028C00830022000C0 -:10B55000400000000000000008040400B0002CC0FF -:10B5600028000E0010800020C00832020C00800469 -:10B570002E20093002C412830028C0083002420184 -:10B580000000000000000000000D6C00FA003E000A -:10B590002C910320008A0033C00CF0037C00D800FB -:10B5A0002E400CF003E080CF003BC00CF003000302 -:10B5B0005000000000000000A01DFC00FC013F4006 -:10B5C0000FC013F000F4003FC10FF423FC08FC008F -:10B5D0003F000FF003F040FF003FC00FF003E8060C -:10B5E0007000000000000000C005FC20CD1039C82C -:10B5F0000DC1033C80EF9023D80FF800FE00CF80F0 -:10B600001FD00FF903FF00E7C033C40FF003B000F1 -:10B610007000000000000000C010FE02894023F00E -:10B620000885103C008B00A3DC4BB282EC208B0021 -:10B6300026C04BB002EC10B9042AC90BB580F00447 -:10B640003000000000000000C805CC00816428C460 -:10B6500009B20A0CF0A32020C80B3202EC028308C6 -:10B660002CC8093202CC80ABA020C80B3200B2013A -:10B670007000000000000000C015AC10890022C05E -:10B6800008B2122C020B0022C00BB802EC008B0097 -:10B6900026C04BB046EC00B9000AC00BB002F00463 -:10B6A0006000000000000000D015EC10C9E03AC0B6 -:10B6B0000D28032C00EB1032C00F8203C400CB0016 -:10B6C0003EC10FB006EC08E900B2C00FB013900401 -:10B6D0007000000000000000E0019C00F5A03FC0E9 -:10B6E0000FE803FC08FF003FC08FC003FC00FF0011 -:10B6F00037C00FF003FC00FF043EC00FF003F8005A -:10B7000060000000000000005010AC00F94034C0A0 -:10B710000DB4032C00DB403EC02C80036408FB10FA -:10B720003EC68FB003EC00F98032C00CB00B14049D -:10B730002000000000000000C8053E20E9C837D402 -:10B7400048AA221C008B006FE0088582ED40BB8474 -:10B750002FC04BB803AD40B30023D408F70232002A -:10B760004000000000000000E0014C00B164A4C0F3 -:10B7700009200A0C04B8006CC0083802C840B38025 -:10B780002CD10B3002CC04B30028C00830023A00A0 -:10B790005000000000000000B0011E00A58025E060 -:10B7A000883A121E00A6902DE2087902DA00B782CC -:10B7B0002DE00378829E00BCC129E00878022C109D -:10B7C000400000000000000049080C00F30034C0F5 -:10B7D0000D3E030C00F0402EC00C3043C800F300B7 -:10B7E0003CC0073003CC80F20038C00C300312029A -:10B7F00000000000000000004019BD20F7003FC21B -:10B800000FF10BDC20DE043FD207F013F840FF00FD -:10B810003FC007F003FC00FD0037C00F7003D006E7 -:10B820006000000000000000AA05CF00DC003ECA56 -:10B830000FA000AC92C90032C00FB011A408FB00E9 -:10B840002EC04FB023EC00F9003EC40FB003EA0055 -:10B850007000000000000000C8919C00840001C03E -:10B860004B70221CC0870021C04B70021C00B70126 -:10B8700025D80B7022DC00B6002DC00B7222F2041A -:10B88000600000000000000080009E809780A9E01A -:10B890000BF802CE08858029E80BFC021700B78060 -:10B8A0002DE08B7802DE00B4C02DE80B7902E000B9 -:10B8B00020000000000000004814CC008308A0C055 -:10B8C0008B3C024C008300A0C01B3C0A0F29B30034 -:10B8D00024C00B3002CC00B3802CC00B3002D20449 -:10B8E0003000000000000000E815A800DE003A80EB -:10B8F0000FEA02E800CE003A800FE0033800FA00B9 -:10B900003E800FA003E800FE003E800BA003FA0477 -:10B9100060000000000000004800E000F804BA01E8 -:10B920000F820B8004F8803E000F86036000F80051 -:10B9300036000F8023E100F8003E000F8003D200A4 -:10B9400030000000000000000810E401F90032405F -:10B950000F9003E400490032400B9003240049009B -:10B960003C400D9003E408C9003E600C90030204C3 -:10B97000300000000000000080046400B940A264B0 -:10B980000B18022500D15036504E900A24028940EF -:10B990003A51089402E52289442E6028900A20003A -:10B9A000100000000000000018012400B10822402F -:10B9B0004B9282A500A90822500A10020C00A9404F -:10B9C0006E500B9402C40489446C488810024600EF -:10B9D000400000000000000000040400B140E0400E -:10B9E0001B140A0400B90024401A10220400A1000C -:10B9F00028400A1012C40081026C40081202420161 -:10BA00000000000000000000B80D6008B000320027 -:10BA10004F8002A150E05032140EA5232140E8507F -:10BA20003E140F8503E140C8501E140C85436E037D -:10BA30005000000000000000D819E500FD403E5015 -:10BA40000F7403A5005D003E500A5013F400D900A6 -:10BA50003A500D9013E400FF003E500F9103A606EC -:10BA600070000000000000001805F690BDE8236B90 -:10BA70000BDA0B3680C9003268469043E400490077 -:10BA800032680C90032440F90032600C9C03C6011C -:10BA900060000000000000007810E100B8E0A21192 -:10BAA0000B8E0A232288802A31288802620088802F -:10BAB000A23028888A2200B8A8A23908CA02CE0477 -:10BAC00030000000000000004805C50821000040CB -:10BAD0000314828580AD0821529850823423850852 -:10BAE00021520850065400B520215A095402D201AF -:10BAF00030000000000000001811A400B9612240CD -:10BB00000B90060400AD00694008D0027400850067 -:10BB100001400070067404B500234009D002C60439 -:10BB20006000000000000000A014A400E900324002 -:10BB30004F950BA400E90032408C90032400C9000B -:10BB400032400C90036408F90032403D9003E80451 -:10BB500070000000000000006801A408F9003E40E9 -:10BB60004F908BE404D9013E400D90036400D9014D -:10BB70003E400F9003A400F9003C400E9003DA0011 -:10BB800060000000000000002810A000F8403620EF -:10BB90001784032021C8007E022C80432000E80285 -:10BBA0003E010F8003E000C8401E000F8003CA045E -:10BBB000200000000000000028052A88B60223A00B -:10BBC0000BEC422B00D2806EB108A0220800EA04E0 -:10BBD0003A809FA003A8008A042E800BA802CA0006 -:10BBE000400000000000000028054C00B200A4E165 -:10BBF0008BB432474583902CF44B38120E44A3018A -:10BC00002CC04B3002CE0093006CC00B3802CA002F -:10BC10005000000000000000A0011C00B74421C239 -:10BC20000B5402540587002C409B6C021810A7048B -:10BC300029C00A70029B0097040D800B6082E80007 -:10BC40004000000000000000A8081E00F38035E05E -:10BC50000B3802521084802DA00FF80B1E00E680D6 -:10BC60001DA00B6803FE02D6803DE00F7803EA02B8 -:10BC700000000000000000000A1DAC00FB003EC1F7 -:10BC80008B900B800AB8012E000CB003E800FA007C -:10BC90003EC00FA043EC00EB003E800FA623C20283 -:10BCA00060000000000000000005FE00FE80332060 -:10BCB0004EC912F650EF903FE00C1900B642CF216A -:10BCC0003FE00EF902E6C0FF803FE04CDC0340009D -:10BCD0007000000000000000AA119400B70081402D -:10BCE00008030214C487012DC8086A12384087026D -:10BCF0002DC0087112D280B7002D800860022A047E -:10BD0000600000000000000000009C00B7102180CF -:10BD100008F4129404A6002CC018D202144886100D -:10BD20002D800A6132D400B6182DC40858020010C4 -:10BD300020000000000000002014C400B30020C058 -:10BD400040B022040082810CC008300A0A008A0038 -:10BD50002EC008A002C400BB002E800820020804E8 -:10BD60003000000000000000A815AC00FB00A0C0DF -:10BD7000249423AC10EBA00EC00CB0022E20C900FE -:10BD80002E400E9003EC00F9803E406CA00B2A047C -:10BD900060000000000000008000CC00FB003EC0FE -:10BDA0008990032C00FB023E404FA0036D01FB4134 -:10BDB0003EC08FB403E800FB203E500FA403E00018 -:10BDC00030000000000000000110FC00C320B2C0E1 -:10BDD0000DD0033800CD003F800DF003FC00FD02C4 -:10BDE00036000CD0033F08FC0412C00CA003C04472 -:10BDF000300000000000000080046C028BC822C0EC -:10BE000008980A2A4089202E018EB012EC80BBF0DF -:10BE100022E508BD022E00BB9022ED08A202E00040 -:10BE2000100000000000000080052C008B012200A3 -:10BE300049A81E04008B012EC0499002E400B900FD -:10BE400022400A90022C00B9002A40088002E0003B -:10BE500040000000000000000804040081002040B1 -:10BE6000082002040083002CC00A2042CC00B3004A -:10BE700020C00230020884B3040840082002C21126 -:10BE80000000000000000000000D6C008B00B2807C -:10BE90000DB1032402CB013EC04D9043E400F900F4 -:10BEA000B2002E900B2C80F800BAC02C8003C00387 -:10BEB0005000000000000000A01DF4007D003FC005 -:10BEC0000F7203D400FF003FC00EF147FC00FF00DB -:10BED0003BC00DF013FC50FF0037C00FE003E80635 -:10BEE0007000000000000000C005F0C4CC333F0427 -:10BEF0002CF6033860CC90B3200FF123F060FF01E3 -:10BF000023C80CF28A3C81DF303F640CD803300434 -:10BF100070000000000000008010E0C28A302E187F -:10BF200008F530A594582222214BF302E1009F70BE -:10BF30002BE40AF4121D40AF722C492F3082A00668 -:10BF400030000000000000008805C48080A02C980C -:10BF5000083222080082002800033202C084B30C99 -:10BF600020C05832928C30A3202EC0481242620169 -:10BF70007000000000000000C015A8008B002E20FB -:10BF800008B00A200198002A220BB002E6009B00AC -:10BF900022C00AB012AC04AB002EC003B002F00005 -:10BFA00060000000000000000015E500C8003EB081 -:10BFB0000CB0032900C8003A204FB003E220FB0177 -:10BFC000B0C00CB0032C00FB023C410C9043480471 -:10BFD0007000000000000000E001A280FE403E0072 -:10BFE0000FF063EC00BFC417420FF003EC00FF003A -:10BFF0001FC10FB0035C00FB003F404FF000B800D2 -:10C0000060000000000000004010A502C8003E9043 -:10C010002CB00B0106CB013E505FB0132110CB00BA -:10C020007EC00CB00B2C00CB0032C00C900310046F -:10C030002000000000000000C80528018BD02C342F -:10C0400048FF023000AA042E690FF0036810DF00D9 -:10C050002FD40DF0023E005F04B6C008B00372009A -:10C060004000000000000000E005699081802C0085 -:10C0700048B802080999004CB00B30020C008B0044 -:10C080002CC009B0400C40830000400A90023000F0 -:10C0900050000000000000002001160084882DE4FC -:10C0A0004839021600B4802DE00A7B065E009780B6 -:10C0B0002DE20978021E90978025648A7802480054 -:10C0C000400000000000000048080D0081102C9680 -:10C0D0000831230C0090203CC41BB8020840C30068 -:10C0E0002CC40D30030E40C31030C04E10071A127E -:10C0F0000000000000000000401DBC007D053FC5A1 -:10C100000FB10BF400EF001F450FF043FC01FF409F -:10C110003DC41FF006FC10FF003BC12DF103D0060B -:10C120006000000000000000A805EC04CB043EA065 -:10C1300044B6032804CB8032800FB3936008FB2001 -:10C140003ED21FB3032D80FB617E408C98032A00F2 -:10C1500070000000000000004811840C86052DC00E -:10C1600008F4828C908500A1C00BF0025C003700BF -:10C170002DD00B71021CC8B7482D400A7002120462 -:10C180006000000000000000C0009E0087802DA11C -:10C1900060784A16D0A78029E00B78529601B790B4 -:10C1A0002DE80B7A225E40B7A02FE14850223000E4 -:10C1B00020000000000000004814CC1083842CC034 -:10C1C000083002A41083CB28E00B302A4F409300A4 -:10C1D0002CC00B30024C10B3022CC0AA3002120447 -:10C1E0003000000000000000E815B800CEA03F803D -:10C1F0004CA02B3A00CE403BB80FA003B900BA00C8 -:10C200003E800FA0036800FA007E801CA00B3A0459 -:10C2100060000000000000004800E002F8003E045A -:10C220008F0003E04AF81026180F8003A080F80260 -:10C230003E008F000BA000F8023E000F8013D200DA -:10C2400030000000000000000810E420C900324067 -:10C250004D99032400C9023E680F90022400E900B2 -:10C2600030408C90030440C9003E400C900302040F -:10C270003000000000000000800464208906225085 -:10C280008B9CC22400D9012E400B90422408B90196 -:10C2900022460D900A260289002C400A1002200036 -:10C2A00010000000000000001801060091404270DC -:10C2B0000B90122C028B002E400B1022E410B100C8 -:10C2C000A240489012240899022E400890020600CD -:10C2D0004000000000000000080404929120E048A3 -:10C2E0000B1202040291102CC00B100684C0B11076 -:10C2F0002048891102058091402E442A94020201AF -:10C300000000000000000000B80D6140D85030145B -:10C310000F850B21E080403E000F878BE10CF86C0D -:10C3200032008406832004D8283E100C00032E031C -:10C330005000000000000000981DF440AD103F4583 -:10C340000F9103FC187D201F410F900374C0F92149 -:10C350003E440F9201E440E9003D484FD003E60619 -:10C3600070000000000000001805F780FDE0337049 -:10C370000CDA032620C94031400E9A032400F980CC -:10C380003B600F9C8336A0F9A1B0400F9103C6001B -:10C3900070000000000000003810E290B8A02228D1 -:10C3A00028880A220288A02200088802C280B88851 -:10C3B00022040B8E032280B8D02A200B8802CE04E0 -:10C3C00030000000000000000805C580B161005881 -:10C3D00048168A04A0890122401A14880420B1401A -:10C3E00028400B100A0420B12C204A0B1202C20173 -:10C3F00070000000000000001815A590BB40204010 -:10C40000089002244089426258081002E500B903EE -:10C4100022C00B9002A41431002A440B9002C604DF -:10C420006000000000000000A010A500F9013240EB -:10C430008C90032700C19430400E90032400F90033 -:10C440003A400F90032400F9003260079027E80576 -:10C4500020000000000000002800A418F900BE44DD -:10C460000F9003C400F900BE618F9003A400F10097 -:10C470001E400F10032408F9007E400F9003CA00ED -:10C4800020000000000000002810A181F800320404 -:10C490000C00D32100D8043A149C80032101C80069 -:10C4A00036000C80132010C80032002C8003CA0410 -:10C4B000200000000000000028043A00BE8423850C -:10C4C00008EC8368048A002F904DA0022801DA004E -:10C4D00023B00AA0022A08DA0122800FA002CA00B3 -:10C4E000000000000000000028054C00BBF020C048 -:10C4F000083C0A0C00930128C88930064C008302CE -:10C500002CF60830020400A30020C00A3002CA0042 -:10C51000500000000000000020011D11B300A0C069 -:10C520000850025C1087016D814932521EC387009A -:10C5300028E00A32261F00370023E00B7202C800F1 -:10C54000400000000000000028081200B7823120DF -:10C550000808370F08D7E03960197A0B5E0C83B2F0 -:10C560007DE00C7A0B3E02AFA0B1E00E7A03CA0266 -:10C570000000000000000000081DA010FB003EC0ED -:10C580006FB043EC11FB003E400FB503EC20FB50B5 -:10C5900036000FB543E5A1DB783EC00FB403C206F9 -:10C5A00060000000000000004005FE00FFA03FA06A -:10C5B0000DC9133E00CFD03DE802FF133E00CF82ED -:10C5C0003F600CFC233E10EF8033F20CFC83100024 -:10C5D0007000000000000000A8119C40B5012DD0A3 -:10C5E0000858021C4057102D5A283102BC019710E0 -:10C5F0002D000A70028404CF0029C00AF0022A0428 -:10C60000600000000000000000009000B72A2D82AA -:10C610000842223C0087110DCC8832021D00970091 -:10C620002CC40830021400A70023C0097082000047 -:10C6300020000000000000006014C020B0202C503A -:10C640000810022DC093E22C210830020E0893003E -:10C650002C400A30028C0093002AC00B30021804D0 -:10C660003000000000000000A815AC00F8C03E80BB -:10C670002CA00B3F00C7603ED00CF00B3C00CF005D -:10C680003E800CF00B2C00EF0033C10DF00B2A04A0 -:10C6900060000000000000008000EC40F3403E50CD -:10C6A0008EB403EC10FB003E090FB013EC42EB001C -:10C6B0003C008FB013C411E3003EC00EB003E00095 -:10C6C00030000000000000000110FC00FC8031225E -:10C6D0000CA8033C00CF0033A00EF003DC00CF0019 -:10C6E0001FF00CF003F400CF0233C00CF002005432 -:10C6F000300000000000000081046F00BBC0227009 -:10C700000AB9422C108B00761183B002EC10AB00FA -:10C710002EB00AB003EC048B00A2C028B002204067 -:10C72000100000000000000080056540B820224491 -:10C7300058340A2C008B0022844BB002EC008B0092 -:10C740006EC008B042E6048B0002C0083002A001AF -:10C7500040000000000000000C000000B10020C0FC -:10C760000A300A0C008B0324800B3002CC00A3009B -:10C770006C000A30028D00830020C0183002820055 -:10C78000000000000000000000086400F800300015 -:10C790004CA00B2C02CF0022400EF503FC00CF0171 -:10C7A0003E000CF012DD02CF0233C04CF00B8003D0 -:10C7B0001000000000000000A419F000FC003F4041 -:10C7C0000FB103DC00BF013F000FF223FC10FF009C -:10C7D0003F000FF001F484FF003DC04FF0136806E6 -:10C7E0007000000000000000C005FE40DF8033C87C -:10C7F0000CF8033C0A9FC03FF008B8023E00FF80DF -:10C800003FD80CF9612E406F903FE48FF1833000E8 -:10C8100070000000000000008010EC048B8023F00A -:10C8200008B8023D40AB000E084822826C20BB00D5 -:10C830002FD048B0022C00BB002EC10BB002300438 -:10C8400030000000000000008805CC028301A0C574 -:10C8500008B04A4CA0802428C80932024C00B30812 -:10C860002ED129B23A0C84A3212CC84BB20A320132 -:10C870007000000000000000C015AC088B0022C052 -:10C8800008B0024C008821242109B0466C00BB0688 -:10C890002EC009B0022C10BB002EC00BB002300419 -:10C8A00060000000000000004015EC00CB0032C02A -:10C8B0000CB9026C00CBC83AC02D900B2C08FB00C1 -:10C8C0003EC00D30422C00EB003EC00FB013000400 -:10C8D0007000000000000000E001BC00EF003DC05F -:10C8E0000FF003BC06EF823F404EC983BC00FF003F -:10C8F0007FC01CF0137C00FF043FC00FF003F80062 -:10C9000060000000000000004010AC00FB023EC0D0 -:10C910000EB003AC20D8403EC08C900B2C00FB0026 -:10C920003EC90DB033EC08FB023EC00FB00B5404FF -:10C930002000000000000000C8052C00B3002FC03C -:10C940000B3012FC0088A02E402894022C10BB044F -:10C950002DC028B002EC00BB002EC00B72063200C6 -:10C960004000000000000000E0056C00B3002CE077 -:10C970000A1002CD0093002CC008B0024C00B30096 -:10C9800028C0083002CC00B3002CC00B30023A00A3 -:10C99000500000000000000020011E40B7802DE282 -:10C9A0000B5802DE0297812FA00868025E00B78153 -:10C9B0002FE0087902DE00B7812DE00B78023C0001 -:10C9C000400000000000000048080C00F3003CC0DC -:10C9D0000E3203CC80D3003CC40C39034C08F31A4C -:10C9E0003CC60D3003CE20F3083CC00F300352028A -:10C9F0000000000000000000401DAC00FB002EC045 -:10CA00000BB003CC20EB003C800FB041AC00FB002E -:10CA10003CC20FB003EC40FB003EC00F3003D00619 -:10CA20006000000000000000A805EE02C38030CEC8 -:10CA30000D9803ACA0C380B2C00FB003EC00FB00A4 -:10CA40003ED24FB0092E084B013EC024B003EA008D -:10CA5000700000000000000048119C00870121C008 -:10CA60004850124C00870035C04B6002DC04B7010F -:10CA70002DC00B70021C0087002DC10C7202F20445 -:10CA80006000000000000000C0009E00878023E0DE -:10CA900008F802DE808F8121E04B7812DE043780B7 -:10CAA0002DE80BF8023E1887802FE0097902E0009C -:10CAB00020000000000000004814CC008300A0C04B -:10CAC0002830424C00830024C00B3806CC04B3004D -:10CAD0002CC00B30020C0283002CC0083002D204A0 -:10CAE0003000000000000000E815A800CA003180F6 -:10CAF00008E0029802CE0033840BEA03E800BA0093 -:10CB00003F810FA0032800CA003E800DE003FA0415 -:10CB100060000000000000004800E000F8003E0057 -:10CB20000E8423A000F8003A100F8003E000F80004 -:10CB30003E100F8013E000F8003E000D8003D2008D -:10CB400030000000000000000810E401F9003E4041 -:10CB50000C9A13E400C9003E400C9823E480F900CD -:10CB60003E402C98036400F9003E400C9003C20440 -:10CB7000300000000000000080046404B9002E4072 -:10CB8000689C22E40289017C508D9822E480B920BF -:10CB90002E5048100B2500B9442C40289000E0008E -:10CBA000100000000000000018052400B9002E50FD -:10CBB000089002E40489002E500A9202E400B900B1 -:10CBC0002C400891022400B9002E40089002C600B3 -:10CBD000400000000000000008040500B1012C40E6 -:10CBE000483002E40081002A404B1002C400B1002A -:10CBF0000CC00890020C00B3002E40481202C20183 -:10CC00000000000000000000B80D6000B8013E0008 -:10CC10001C8007E150C8502E141E8503E141F850D6 -:10CC20003E140C85132148F8503E140C8543EE0346 -:10CC300050000000000000009819C400F9003E51A7 -:10CC40000F5003E500FD003F401DD003F410F90034 -:10CC50003E500F50009400F9003D400F9103E6064E -:10CC600070000000000000001801E450CD003160A9 -:10CC700004D0033680C1422E501F9403E500E90220 -:10CC80002E720A90220508E9403E50409C0326007F -:10CC900070000000000000003810C28288002215D9 -:10CCA000088002235888A02E280BAA42E28288809E -:10CCB0002E382888022280B8A03A2808CD020E0417 -:10CCC00030000000000000000805C4008100A640FC -:10CCD00028100A242695000D400B50027400850888 -:10CCE0002F4079D2AA1400A5012F4038500212011A -:10CCF00070000000000000001815A4048900264000 -:10CD000008910224109D082F400BD002F4008D02E0 -:10CD10002F4009D0003400BD000B401870020604FB -:10CD20006000000000000000A015C400C9053641E5 -:10CD30004C90632400D9003E400B90034408C90086 -:10CD40003E401510032400E9003C400C90032804E9 -:10CD500070000000000000002801A404F9003A401F -:10CD60004F9803E400E9993E404F9003E420F90A0C -:10CD70003E400E90436424F9083A420F908BDA004B -:10CD800060000000000000002810A000C800120091 -:10CD90000C8043E000C84032000F8453E010F800DC -:10CDA0003E000D80232000D8003E000F80030A04BF -:10CDB0002000000000000000280538028200A18841 -:10CDC000086022C8008A4036A10BA002E910BA44CC -:10CDD0002C800CA41229028A442E980BA4020A006B -:10CDE000400000000000000028054C10830020E0F7 -:10CDF000183092C408934020E00B3002CD00B340BD -:10CE00002CC00B3A42CD0083402CD00B38024A0094 -:10CE10005000000000000000A0411C00870021C05D -:10CE2000287002D1009D8025C24B6002DC08B70249 -:10CE30002CC00A7402FE0087002DC00B340268006B -:10CE40004000000000000000A8081E00C78431E078 -:10CE50000C6803D600978031A00F5813DE08F782C4 -:10CE60003DA00FF80BDE00C7803DE00F788B6A0213 -:10CE70000000000000000000081DAD80F3003EC16E -:10CE80000FA023C002E9003E810F8003EC00FB00ED -:10CE90003EC00DB0132C00EB003EC00FB003820269 -:10CEA00060000000000000000005FF32C780336012 -:10CEB0000F78033EC84E8023640CF8033A00CE80FE -:10CEC00013EC06D8033A00DE8033A40CC803D0006C -:10CED0007000000000000000A8119C00871001C035 -:10CEE0000B7002185084002B4408601298008613BF -:10CEF00021C4885002188086002180086102EA045B -:10CF0000600000000000000000009C00870021403D -:10CF10000BF1025C800600210088D0025C008700D3 -:10CF200020898AF1021C0887102181884802C600E6 -:10CF300020000000000000002014CC108304A0C1D9 -:10CF40000B300A480C88066038080442EC018B0458 -:10CF500022C108300A2C008B002280002002D80455 -:10CF60003000000000000000A815BC00C3002280B3 -:10CF70008F9003640ACB02B2F2203512640AC90012 -:10CF8000B2400EA003240AC900A2402CA003EE0464 -:10CF900060000000000000008000EC00FB003C800E -:10CFA0000F9003A500DB403ED04DB413A408FB0155 -:10CFB0003EC01CA0036C00FB043E504FA403E000E5 -:10CFC00030000000000000000110FC00FF0033C032 -:10CFD0000CE8432600DF80B3E00FF8037C00CD00AF -:10CFE00033040CE0233440CD0023400CE003E00484 -:10CFF000300000000000000081046C10BB00A2D2D1 -:10D0000008280204608B1922C60EB18A2E408B902C -:10D0100022C108A4822C008B90226448A402E00064 -:10D02000100000000000000080052C00BB00220062 -:10D0300008912E24009B0022C08BB012200488008F -:10D040002240081022200088012AD0088042E000F7 -:10D05000400000000000000008040C00B304208021 -:10D060000810060410830020C08BB012000082005C -:10D0700020C02810420906820028C0082002C201F0 -:10D080000000000000000000000D7C00BB003240EA -:10D090002CB0032400D30032C05FB5030C02C100E2 -:10D0A000B2000CB00B0500C100B8C02C8013E00327 -:10D0B0005000000000000000A01DDC00FF001FC0A9 -:10D0C00087F001F400FF003FC00E7043FC107F00AA -:10D0D0003FC00F7003FC00FF0037C00FE003E806FD -:10D0E0007000000000000000C005F184FE6131D82E -:10D0F0000CB2C3FCE0CC807BC00EF1037CE0CC839F -:10D100003F200FF0CB3244DC843F254CF24330000B -:10D1100070000000000000008010E448B01022DC25 -:10D1200008B602FD92888523F440F102ED00882DB7 -:10D130000E600BBC122C10A8822E000AFC22A00448 -:10D1400030000000000000008805C080B32228C025 -:10D15000083082CC0188002CC04A3202CC00010188 -:10D1600028004BB002A00080002C090834026201A4 -:10D170007000000000000000C015AC04B2102AC10D -:10D1800008B002EC10898022C008B002EC088800C8 -:10D190002E4083B002A040B9802C210AB002F004D6 -:10D1A00060000000000000004015EC00FA00BAC06A -:10D1B0002CB043EC00C0803EC08EB0034C0CC810B5 -:10D1C0003E808FB0038210D8823E280CB00B5004F2 -:10D1D0007000000000000000E001B680FD0237C1D1 -:10D1E0000FB003FC00FD003EC00FB053FC02FF0176 -:10D1F0002FA48BF0837C00AD022F40037003B80096 -:10D2000060000000000000004010AC00FB0432C0D1 -:10D210004CB0232C00F8403EC20CB0032C00FB4164 -:10D2200032C20FB0432D00C8503E400CB00B10046A -:10D230002000000000000000C8052F90B95003C076 -:10D2400018F01A3C00B9322DE038F0603C04F900C7 -:10D250003EF00B7C802C00D9C02E400DF002320035 -:10D260004000000000000000E0054B24B21002C1A5 -:10D270002830026C04B2C12CC00830000C00B2008F -:10D280002824033C0A000082C82CA0083002380081 -:10D29000500000000000000020011600B48021E4CE -:10D2A000487B025E00B6806DE24879221E40AC8465 -:10D2B0002DE00BFA00524096802DE8193802080044 -:10D2C000400000000000000048080840F310B0C40F -:10D2D000083A024C90F3103CCC0831030C49B040A2 -:10D2E00030050F3007214043013EC21C304312027B -:10D2F0000000000000000000400DBC10FC103FC505 -:10D300000FF101BC04FF043FC40FB14BFC64F700F4 -:10D3100037C00F7253AC44FF013FC90FF403D0066E -:10D320006000000000000000A805EC08FA003EE0E4 -:10D330000CB0032C00CB023ECA0FB2072E00DB025A -:10D3400032080F31032C00CB043E800C35032A0039 -:10D35000700000000000000048119400B5002DC8C6 -:10D3600008700A1C2287002DC90BF2829C80A6003F -:10D37000098B0B700A1C0285002D40087002920474 -:10D380006000000000000000C0009E00B7802CEC90 -:10D39000087B025E4085892DEC8B7B024E848F805A -:10D3A00025640BFA02120897806FE1087A023000B8 -:10D3B00020000000000000004814CC20B3642CC002 -:10D3C0000830060C10838A6CC05B3042CC00AB1076 -:10D3D0002CF20B30020D0093042CD508300A920475 -:10D3E0003000000000000000E815BB00FEC03E80D9 -:10D3F0002CA0036800C6403F800FA0026800CE4406 -:10D4000036904F60031B70DED83FA00C20033A0417 -:10D4100060000000000000004800E040F8103E00FE -:10D420000F8003A010F8423E101F8003A000E80CFC -:10D430003A041F8003E000E8457E022F8003D200FB -:10D44000300000000000000008106400E980324055 -:10D450000F900B0408D98036400F10132408F900F0 -:10D4600072700F91132410C9103E690C90030204CE -:10D47000300000000000000080046408B9802240F1 -:10D480000B1002240089C422520B90422400B900E0 -:10D4900022E00B90122404D94A2E60089003600009 -:10D4A000100000000000000018052400B118224000 -:10D4B0000B900224008B2026490B90026400B900D7 -:10D4C000A2400B908A24008B002C40A890020600FA -:10D4D000400000000000000008040484B120A048BF -:10D4E0000B11060400830000404B11020449B110E7 -:10D4F00028400B1002244191002C500810024201D8 -:10D500000000000000000000B80D6940E85032142F -:10D510000F869321E2C800360A0B868B61A8F8407B -:10D5200022800F82A32108C8023E000C80432E03F4 -:10D530005000000000000000981DF448FD123E4419 -:10D540000F1203C4007D011E400B9203E480F520FE -:10D5500036400F9003D4907D003D400F9403E606C3 -:10D5600070000000000000001801F6C1DD88327272 -:10D570000C98032622DD003F622C998346A0C94007 -:10D58000B2400FD8032400FD0033512CD88306008D -:10D5900070000000000000003810E3C288C0223094 -:10D5A000088C4222118A012E00088852230080A391 -:10D5B0002A004B804222A0B80022280884028E0450 -:10D5C00030000000000000000805C400812D204844 -:10D5D000681480042081002E400B12120424812044 -:10D5E00020400B94320490B900204048104A0201B8 -:10D5F00070000000000000001815A40089202240DF -:10D60000089012240089002E4008900224088940C6 -:10D6100022500BB0022420B909A2440890028604CB -:10D620006000000000000000A015E400D908B2402E -:10D630004C10230404D9C13E408F900B0408C14014 -:10D6400012400F90432404F14130780C90032804D9 -:10D65000700000000000000028018664F9803E4050 -:10D660000F900BE400F9983E402F1003A402F9102C -:10D670003E400F900BE640F9903E600F9003CA00C9 -:10D6800060000000000000002810A000C841320027 -:10D690000C80072010C8103E0C0E8003E004C80068 -:10D6A000BA000F81432000F8703E000F000B0A04FF -:10D6B0002000000000000000280539028E20A38011 -:10D6C00028E00A3810AE043DA18EE002F8008E007A -:10D6D00076800B60037800BE402F820BA003CA0047 -:10D6E000400000000000000028054D008B8822C08B -:10D6F0001830020C0083442CD01B3012CC0683005F -:10D7000020C10B30820C01B3002C400B30020A0008 -:10D710005000000000000000A0011C00850020CC8B -:10D720000870061C84A70129C00B7222DC80873494 -:10D7300061800B10025C00B7002DC00B7002E80086 -:10D740004000000000000000A8080E008C8031E0BE -:10D750000CFE023F00C5802DE00E7803DFA0C7A0BD -:10D7600021600F78031E80F7803DE00F78032A02C6 -:10D770000000000000000000081DAC00F9003EC0E1 -:10D780000FB003EC00FA003EC006B003EC80FB28AB -:10D7900036D84FA003EC10FA003E500F3003C206FB -:10D7A00060000000000000000005FA00CC80B3E03B -:10D7B0000FF8033E00CF903F604FF8C33E00EF806C -:10D7C00033F00C7A033E70C59033F10C78030000FF -:10D7D0007000000000000000A811B800870021C000 -:10D7E0000B704A1C0087102DC04B710A3C448F12ED -:10D7F00021860D72021E008700234008700A2A0449 -:10D80000600000000000000000009C00840025C0B3 -:10D810000B710A0C00A7122D840B700A1C00B708AC -:10D82000234009F31A5C869708254008700200001F -:10D8300020000000000000002014CC20812026C021 -:10D840000B30022C0082422C800B30220C089B8073 -:10D8500020E00920024D08920024E508300A08045F -:10D860003000000000000000A815AE82CAE0B7C07A -:10D870000FF0133C0AC9C83E400FF0033C04FF847C -:10D8800032C00D90137C00D900F6C02C10032A047E -:10D8900060000000000000008000E400F3003AC1D6 -:10D8A0004FB003EC00F9083C000F3013EC00EB0420 -:10D8B000BE180F9023AC60E9023A404F9003E0009D -:10D8C00030000000000000000110FC00CA0033C05E -:10D8D0000CF003FC00CD027F400CF0423C00CF086E -:10D8E00037100FD003FC10CD083F662CD90300443D -:10D8F0003000000000000000810463808BE022C043 -:10D9000008B022EC00D8806E2068B01A2C01FB0011 -:10D9100022180B88434C0088A02CC01D9002204088 -:10D920001000000000000000800108808B2022C051 -:10D9300008B022EC0088882E6248B01ACC008B0018 -:10D9400026C04A8802EC0008842E4009900220007C -:10D95000400000000000000008040000830060C0D8 -:10D96000083002CC0090066C000830028C00A30442 -:10D9700020008B00064C2180006CC049100A020177 -:10D980000000000000000000000D6C00CA00B2C1E1 -:10D9900088B403EC10C8002E000CB00BBC088F003C -:10D9A0003600068003EC80C8023FC10C90030003E0 -:10D9B0005000000000000000A01DF000FF003FC06C -:10D9C0000F7283FC18FC033F008F70037C00FF0084 -:10D9D0003D000FC0238C06FC003F400ED003E8063C -:10D9E000700000000000000000C541037040DC1022 -:10D9F00037040DC1037040DC1037040DC1017040C5 -:10DA00009C10171405C1037040DC1017040DC031C1 -:10DA1000000000000000000000C5440571015C40EA -:10DA2000571015C40521015C40571015C401710140 -:10DA30005C40171005C40571055C41571015C011F5 -:10DA400050000000000000000080020120804820FB -:10DA500012080482012080482012080482012080DC -:10DA600048201208048201208048201208048020E7 -:10DA7000000000000000000000800000600058006E -:10DA80001600058001600058001600058005600042 -:10DA900058001618018001600058005600058020CB -:10DAA000000000000000000000C5480522011C80A5 -:10DAB000472011C80472015C80572011C8047241CC -:10DAC0005C80572011C80472011C80472015C031AA -:10DAD000500000000000000000C540006000180079 -:10DAE0000600018000600018000600018000600050 -:10DAF0001800060001800060001800060001803157 -:10DB0000000000000000000000C548042201088059 -:10DB10004220108804220108804220108004230142 -:10DB20000880422010880422010800422010802131 -:10DB3000000000000000000000C54A05428150A01E -:10DB4000442C110B04428110E05428110200428140 -:10DB500010A04438110B0542811021142815003102 -:10DB6000500000000000000000800C01570054C06D -:10DB70001530044C01130054C01570054C015300BE -:10DB800054C01530854C01130054C0153005402198 -:10DB90004000000000000000008000004000100075 -:10DBA000040000400010001062040001080441005D -:10DBB0001000441811000010001080040001012022 -:10DBC0000000000000000000004560020800820024 -:10DBD00020800860021800820020800820000820B1 -:10DBE000820000808020021800820020800801311D -:10DBF000500000000000000000C54005640158000E -:10DC000056001580056001580056401580056001DA -:10DC100058005600158005600158007600158031C7 -:10DC2000000000000000000000C540036000D800B4 -:10DC300036000D80036000980036001D88056000E6 -:10DC4000D80016000D80036000D88046000D80319A -:10DC5000000000000000000000C5420430810C20DC -:10DC6000430810C20430810C22410818C2043089D4 -:10DC70000C20030810C20430810C20430810C0108F -:10DC800050000000000000000080000030000C0088 -:10DC9000030000C00030000C00030000C000300092 -:10DCA0000C00030000C00030000C00030000C001A5 -:10DCB00000000000000000000080020130804C20C5 -:10DCC000130804C20130804C20130804C3013080C3 -:10DCD0004C20130804C20130804C30130804C021CA -:10DCE000000000000000000000C5420560815820CF -:10DCF0005608118205608158205608118300608102 -:10DD0000582046081182046081183056081580306A -:10DD1000500000000000000000C5420020800820E4 -:10DD20000208008200208008200208008200308063 -:10DD300008200200008200208008200308008031B3 -:10DD4000000000000000000000C5420460811820AF -:10DD500046481192046081192046281182003481BE -:10DD60001820464811920460811820430811801140 -:10DD7000000000000000000000C5600458015600CB -:10DD80005580156004580116005580016004180183 -:10DD90005600458011600458011600418011403141 -:10DDA000500000000000000000800601418050602B -:10DDB00014180506014180506004180506004180D2 -:10DDC00010601418050601418050601418050020E9 -:10DDD0000000000000000000000002010080402060 -:10DDE0001048041201008041201008040201048040 -:10DDF00040205048041201008440201008040020F4 -:10DE0000000000000000000000C546035180D460FF -:10DE100030180D46035180D56035180D4603058036 -:10DE2000D46015180D46031180D46035180D4031AB -:10DE3000500000000000000000C5460571805C60D5 -:10DE4000971815C60571815C20571815C603708197 -:10DE50005C60571811C60531815C60771815C031B8 -:10DE60000000000000000000004546037180DC60F7 -:10DE700037180DC6037180DD60371805C60175813E -:10DE8000DC6037180DC60371845C60171819C01167 -:10DE900000000000000000000045460571815C6044 -:10DEA000571814860571815C60571805C6043181C6 -:10DEB0005C60571815C60571805C60431815C01169 -:10DEC00050000000000000000000020120804820F7 -:10DED0001208048201208048201208048201708008 -:10DEE000482012080482012080482017080480007E -:10DEF0000000000000000000000006016180586082 -:10DF0000161841860161801860063C058604618010 -:10DF10001860161801860061805860561815801028 -:10DF200000000000000000000045400570015C009A -:10DF3000570015C00470015C00570010C004700049 -:10DF40001C00470011C00470015C00470001C011B3 -:10DF500050000000000000000045420060801820D2 -:10DF60000608018200608018200608008200608098 -:10DF70001820060801820060801820060801801120 -:10DF8000400000000000000000054204208108203D -:10DF90004208108204208108204208118204208057 -:10DFA00008204208108204208108204208008011C5 -:10DFB00000000000000000000045420540815020A4 -:10DFC000540815020540811020540C154200408170 -:10DFD000502044081102054081102014080500114A -:10DFE00050000000000000000001030150C0543048 -:10DFF000150805420150C05430150C05430150C0AE -:10E000005430150C05420150C05430150C05401019 -:10E010000000000000000000000008004200108026 -:10E0200004200188006200108004001108004200F2 -:10E03000108004200108004201108004200100002B -:10E040000000000000000000004542020080802027 -:10E050002008080202208080202028000202008080 -:10E060008020200A080202008000202008080011F9 -:10E07000500000000000000000454005600158000D -:10E08000560005800560015808560015800760029B -:10E090005800564015800560031800760015801161 -:10E0A000000000000000000000C540036000D80030 -:10E0B00036000D80016000D80A36000D8005700919 -:10E0C000D80136000D80036000D80057000D800095 -:10E0D00000000000000000000000000430010C00FF -:10E0E000430010C00030010C00432010C004600148 -:10E0F0000C00434050C10430010C00460010C00029 -:10E1000000000000000000000000000030000C00D3 -:10E11000010000C00030000C00030000D00020000F -:10E120000C00034000C00030000D00020000C000E1 -:10E1300000000000000000000000050131404C50CC -:10E14000131004C40131404C50131404C511314163 -:10E150004C50131404C50131404C50131404C0003A -:10E1600000000000000000000000230568C15A30D4 -:10E17000568C11A30468C11A30568C11A30568C0CF -:10E180005A30468C11A30468C15A30168C15800091 -:10E190000000000000000000000000002000080057 -:10E1A00002000080002000080002200090002000F3 -:10E1B00008000240008000200009000200008000EA -:10E1C0000000000000000000000008446201188404 -:10E1D0004621118844621118844601118844621056 -:10E1E0001884462111884462111884062111800088 -:10E1F0000000000000000000000000455011540421 -:10E200005501114045501114004501114044500082 -:10E2100014044500154044501114045501114000E8 -:10E2200000000000000000000000082142085082A9 -:10E2300014208508214208508204208508214208C4 -:10E2400050821420050821420850821420850000C5 -:10E25000000000000000000000000A01028040A051 -:10E260001028040A01028040A01028400A01028000 -:10E2700040A01028440A01028040A0102804000099 -:10E28000000000000000000000000C035300D4C098 -:10E2900035300D4C015300D4C035100C4C035300E5 -:10E2A000D4C035300D4C035300D4C035300D400080 -:10E2B00000000000000000000000080572015C8002 -:10E2C000172005C80672015C80572015C80272012C -:10E2D0005C80572015C80572015C80372011C00092 -:10E2E00000000000000000000000231840C61231AA -:10E2F000848C21230848C61230840C61231048C244 -:10E300001231848C01230848C61231048C6100004C -:10E31000000000000000000000003FFF4FFFD3FF9F -:10E32000F4FFFD3FFF4FFFD3FFF4FFFD3FFF4FFF23 -:10E33000D3FFF4FFFD3FFF4FFFD3FFF4FFFD0000CD +:1081900000000000000000000000000000000000DF +:1081A000009000000000000000120000000000002D +:1081B00000000000000000000000000000000000BF +:1081C00000000000000000000000000000000000AF +:1081D0000000000000000008049000000000000003 +:1081E0007F100034000D00034000D0003400050073 +:1081F000074001D00074001D00074001D00074004A +:108200001D8007E001B8006E001B8006E0013837D2 +:10821000C490000000000000C001FC80FB3036C8A4 +:108220004E0903FC84FF103BC00EC8072280FF22CA +:1082300033C00FC8336E00FB803F200DC253D48083 +:10824000CC3A3F000CF103F0007000000000000089 +:108250008000ED60BF6023F00D82123C608F7023C0 +:10826000F0088802A540BFD063D60B88022E0CBB55 +:10827000802E20888D02E64080602E300AB11220C8 +:1082800004300000000000008805CC80A3402CC40E +:108290004A00128C88A32220C40A904204A9A30099 +:1082A00024C88B8002CC00B3002E01090802840090 +:1082B00080202C100A3242220170000000000000D1 +:1082C000C015AC04B3002AC00808A28C008B00A221 +:1082D000C1109842A700BB0166C10B8002AC04BB71 +:1082E000002E000BB812E40289080E400AB00230DA +:1082F00004600000000000000010AC00EB003EC075 +:108300004AB823EC18EB0032C00E2C122210EB00FE +:1083100026C04F0043ED00FB002E240D8013E40027 +:10832000C8D07C120EB003400470000000000000B2 +:10833000E100BC00FF0035C04FE0037C08FF0117DF +:10834000C24DC003F408F7003BC007C0037C80FFA8 +:10835000243F400CF001F404BC083F280FF00378E0 +:1083600000600000000000004010AC08FB043AC8A8 +:108370000F9403EC10F30034C00EB0036104FB0053 +:1083800036C00EA3032C80FB723E020F8A03E40268 +:10839000C9802A500FB003D0042000000000000064 +:1083A000CA443C00BF0003C00880037C00BF003FFC +:1083B000E20890436000BF0037C00890016D00BB29 +:1083C000402C100BB042D7C089002A7C0BF002F27F +:1083D0000040000000000000E2054C00B30020D582 +:1083E0004A00000C0493000CF00B09020801B320B2 +:1083F00028C00A0C0A0E00B3002430090002C6107F +:10840000804220008BB002F8005000000000000005 +:1084100022011E00B79421E448D9125E40B790298A +:10842000E08B6912D68037822CE8084A025E00B7DA +:10843000A42D200B7902D608869029A00B7902D8AA +:10844000004000000000000048000C00FBA028E8ED +:108450000E2A028C00D30064C00F00430EC4F30048 +:1084600078EC0E0A430E2073E03C024F0003C44038 +:10847000C30038C00F3003D202000000000000002B +:10848000401DBC00FF00BCCC0EB003EC20FB003C48 +:10849000C20C20036C50F30036C40F4003FC08FFED +:1084A0001A3F800FF001E430FF023FC00FF063D0AD +:1084B0000660000000000000A815EC40FB00B2D8E8 +:1084C0000CB0012D20DB013AC88C3803A800FB4812 +:1084D0003EC90F8003EC40FB013E000F0803A408D7 +:1084E000FA80B2800FB1026A007000000000000044 +:1084F00048191C80BF3021CA08F00A0C808F502117 +:10850000C20870509C00B70039C40B40029C04B7ED +:108510002025400B70021480B60021800BF8021257 +:108520000460000000000000C0009E00B7B021EC15 +:108530000B7812DE8497800DE028F802DE00B790F9 +:108540002DE40B68825E80B7A029200B48029600BC +:10855000B78021E10B7A027040200000000000008B +:108560004804CC00B30020C00B38028C04830028E0 +:10857000C08839024C40B30428C01B10028C01B3E0 +:108580000424884B31020400B38020F20B30020235 +:108590002430000000000000E805A800FA00328046 +:1085A0000FE803E800DA013A808CED03FB04FA00DF +:1085B0003E800F6C03FBC8BEC21F800FE503A800FE +:1085C000FE4833804FA0037A0460000000000000E2 +:1085D0004800E000F8003C000C81936000F8013690 +:1085E000100F8003A020F8002A018F8413E100F807 +:1085F0001836000F8013E000F8203E140F8003D2DD +:1086000080300000000000000800E400F100AA40F3 +:108610000C90032400E10038401C9003E400F9A012 +:108620003A40479A93A280F8103E400B9403E640EC +:10863000F9C03E680B100302843000000000000007 +:108640008004E404B9002240089002240489003622 +:1086500040089002E404B9802E404F94036110E872 +:10866000402E400B9042E604B9002E400B900220B1 +:10867000001000000000000018042400B90022408F +:108680000A10520404A9042A4008B002E401B90007 +:108690002E400B9002A80DB8402E40099402E50030 +:1086A000B9042E400B9002060040000000000000BC +:1086B00008040480B12020C80A10420490812004DC +:1086C000C8083026C400B1202C480B90024501B1E7 +:1086D000402C400B1282C400B12B2C4A0B12820298 +:1086E0000100000000000000B8082148F8503200E6 +:1086F0004E850B2140A8522A00088023E140F80053 +:108700003A140FA043A800F8003E000F8203E000D7 +:10871000F0203E884F820B2E035000000000000026 +:108720009819E440F91134442DD003E450791038FD +:10873000442FD003F510F9103E45065003E500E93B +:10874000403F400FD043F500FD283F400F9283E6A5 +:1087500006700000000000000801E600D9903769AB +:108760004D90236780D9E037680ED007A4000586B6 +:108770003E660D50232600C9823D400DD8073602C3 +:10878000CDC033600C9C03060070000000000000A8 +:108790003810E28088A22210288A82238488A022AE +:1087A00014488042820088402E30088002A200D8FF +:1087B00090260008840A2100C8A0A214288C020E6A +:1087C00004300000000000000805C52091402C4442 +:1087D0001810028504B1400C400A10068430814014 +:1087E0002C4859101A046081092E401B14022500E0 +:1087F00091E02060081602000170000000000000F7 +:108800001815A40081002A41089002A400A1002AA2 +:108810004108B08224118B002E40189102A00498C8 +:10882000202E541B90822C0089102244889002062E +:108830000460000000000000A015E400D9003E40E4 +:108840004C9003A410F9003E408E1002A4C2C9004F +:108850003E400D16130184C8203C600F90120400A6 +:10886000D94032500C9003288470000000000000B2 +:1088700028018400F90036404F994A44009900B419 +:10888000400F9013E600F9003C400F9003E300F81E +:108890000136400C9903E402F9803E604F900BCA08 +:1088A00000600000000000002810A000D8003C007C +:1088B0001D80032000E80032000C8483E010E820D3 +:1088C00032008E84032180C8003A190F0403E0248B +:1088D000F0023C000F80138A04200000000000001A +:1088E000280528028A010FA268A00028008A0077C4 +:1088F0008068E012E800DE00368108E0037A08AE06 +:10890000C42F8008ED02FA00BEA03B800BA0420AF3 +:10891000004000000000000028854C0093002CC09F +:1089200088B0020C14A30420C4183802EC1093542D +:1089300028C00A00024E00834968C0023942CE4076 +:10894000B3002CE60BB0028B0050000000000000CA +:1089500020011C0887202C8018F2221C008710217F +:10896000C0087082DC8096802DC00A40027D4027BE +:10897000646DD0486042D805B60429C04B72022805 +:10898000004000000000000028083E88D7E03DE0DD +:10899000087C423E00E38220E00C6803DF04D780BD +:1089A0003BE04E480A5E80C7C219E00E7803D60845 +:1089B000F7803DE00FF803AA02000000000000006D +:1089C000081DAC40FB407E800E3683ED40DB603EF0 +:1089D000800FA003ED28DA0032C40CB00BCC00FBF2 +:1089E000003EC00E8013E010F8003E000FB153C2ED +:1089F00006600000000000004005FE00FFC033E0FC +:108A00000CF9037F04CFD03FE40FB803FE00FF94BE +:108A10003FE00FC8037E10F3803BE00FF803FE48F1 +:108A2000ED80332404F803300070000000000000E3 +:108A3000A8119C80BF04212808F8021EC0CF9021F5 +:108A40004C0B5A42DE00B7802CE80B04021C00B726 +:108A5000A035108F7113DEC0841021800D71022AA1 +:108A6000046000000000000080409C08B70025C89A +:108A7000087102CC80970029C08B7206DC08B50013 +:108A80002DC80B40021C40BF1021C00B7402D480C3 +:108A9000A7402141087002040020000000000000EF +:108AA0006014CC00B3002400083482AC1183002091 +:108AB000004B1826CF20B1062CC10B32020E08B392 +:108AC0008824320A301284088000A034283002182A +:108AD0000430000000000000A811BC00FF00B640F8 +:108AE0002CF443FC01DF003A00039203FF88F900F5 +:108AF0002FC01B0E4B2E90FBE030320B9802EC087F +:108B00006BC032C008F0093E0460000000000000A5 +:108B10008000EC00F3003AC00FB0016C00FB003A9B +:108B2000100FB403EC00F0003CC00F800BAD20FB35 +:108B3000403E1007A863E000FB803ED80FB003E082 +:108B400000300000000000000110FC00FF00720077 +:108B50000FF023FC00DF003F400FC003DC008F005C +:108B600033C10CC003BE00FF903B280E59032E00FA +:108B70007B0032C40FB003D00430000000000000BE +:108B8000C1046C00BB0062A00FB002EC098B002E88 +:108B9000300BA803AC00FAC122C1088C022C00B330 +:108BA000812A000D88B22200B3C022C80BB04261F6 +:108BB000401000000000000080056C00BB01226234 +:108BC0000BB002EC048B002EA2498826EC00A88092 +:108BD00022C028820AACA0BB0822C008800A2884D0 +:108BE000B9C0A2000BB002E000400000000000008D +:108BF00008040C00B31020480A3202CC8083012400 +:108C0000000B02068C60A02020C80801020C00B3F3 +:108C10000028000920020880B100A0800B30024229 +:108C2000010000000000000000096C00FF00A20E1F +:108C30000BF103FC08CF203EC00F8003FC84A8206A +:108C4000B2C88C8003AC44FB703AC00E90032CA4D5 +:108C5000FB00B2400FB003C0035000000000000052 +:108C6000A01DFC00FF263E000FB613ED00FB103FD9 +:108C7000000FC113AC80F8123EC64F4243FC04FF04 +:108C8000313F000FF003EC00FF00BFC08FF003E89E +:108C90000670000000000000C001FC40FC8036C8E7 +:108CA0000F0903C200F8C033CC2C4C036390E09052 +:108CB0003AC00D500B3C04DF643FC88DF1432C00DB +:108CC000D50033C045F223700070000000000000A2 +:108CD0008010ED80BA0221DE8B8222E020B0002BD2 +:108CE000EC098002E340BA202FDC0898122C008B9C +:108CF000512AD00872222E008D8021D008B6822001 +:108D000004300000000000008805CC40B92824C0D1 +:108D10004A12128885A82020C00B2202C091A1000F +:108D200028C20B00128C40A32020C40B300A0C1167 +:108D3000990020C5090102620170000000000000D6 +:108D4000C011AC00B88022C00B8802EE01B8C12A65 +:108D5000C01BA806E200BB802EC08A8002AC00AB1C +:108D6000002EC00AB0022C00990024C008800230F6 +:108D700004600000000000004015EC00B08036C028 +:108D80000EA813E285F3C032C00E9C23E724E882CC +:108D90003AC10F9403AC02EB003EC00FB0032E109B +:108DA0005100B2C00DB0035004700000000000007C +:108DB000E001BC00FF003FC08FD003F004FD043F82 +:108DC000C04CC003F010FC001FC00DD1231C00C715 +:108DD0000039C00DF083FE44ED003BC00F7403F872 +:108DE00000600000000000004010AC00F901BAC1B2 +:108DF0000CB003A108FA0030C88F94032500F900D5 +:108E00003CC00F0483EC00FB003EE00F710B2C40D4 +:108E1000FD0837C04E9103900420000000000000C0 +:108E2000C8053C00B90023C00890022400C80037E0 +:108E3000F00B80016400490233C0849C033C00BFF6 +:108E4000020FD008F4020E10BD8033E008900A3201 +:108E50000040000000000000E0054C00B00620C00B +:108E60000800428400A00020F00B0022CC009000FB +:108E700028C0023D028C00B3002CC29A38020604BE +:108E8000B11220E00830023800500000000000005D +:108E900020011E00B68021E028EA02368086906517 +:108EA000E01BDA065E019E8425EC0A78025E00B7BC +:108EB000802DE008794A1640BD8025E00838020878 +:108EC000004000000000000048080C00FB0028E003 +:108ED0000818028A88A1A020C21F2A23E6C8F0C071 +:108EE0003AED4E34028C08F3811EC00E30030EC0E2 +:108EF000F100B0CA0E210392020000000000000041 +:108F0000401DBC08FE103FD20FE003EC04FF147EAE +:108F1000C00FB123FC01EE003AC40DB013BC00FF3A +:108F2000003FC00EF083FC0CFD103BC02FE103D0CE +:108F30000660000000000000A805EC40F08032D080 +:108F40000CA0036C00F38032DA0FB003EC00FB00DE +:108F50003ECC4C98132C10FB043EC40CF283A6109C +:108F6000DD203FD10CB003EA0070000000000000DB +:108F700048119C80B70021C80C7002DC08B70021A2 +:108F8000C80E7022D800B7002CC20A700A1F08B79A +:108F90000039C80A70021400C5692CCA2A7002D2AE +:108FA0000460000000000000C0009E00BF8164E17A +:108FB0000878025A01BF8021EC4B78469F08378021 +:108FC0002DE88818021E81B7B02DE0097A028E00C4 +:108FD00095A02DE4087802F00020000000000000B9 +:108FE0004814EC00B36020C008B602CC00B30120E6 +:108FF000C08AB086CF00BB106CC10A38020C01B326 +:109000000228C00BB00A0C0081002EC00AB482D224 +:109010000430000000000000E815A800FE40B68003 +:109020000CE4037880FE7432800BE603F900FE0046 +:109030003E800CE0032800FA003E804DA003A8000B +:10904000DA043E800CE403FA046000000000000033 +:109050004800E000F8003E002E8023E000F8013CCC +:10906000000E8003E020F8203E018F8903E000F825 +:10907000003A100E8001E000E8407E004F8003D2ED +:1090800000300000000000000810E402C9017E402A +:109090002C900B2400F9003E68059013A404D9001D +:1090A00032410E9103E400F9003E600E900324006B +:1090B000F10032406890438204300000000000005C +:1090C0008004640089006E400890422400B9002E9C +:1090D000708890032400B9002240089812E400B977 +:1090E000002E400A900A2600B980A2400890122063 +:1090F00000100000000000001805240089042C4026 +:109100000890022401B9002A400BB002A401B90062 +:10911000E0400A9082A400B9002C480A98022480FA +:10912000392022402A900286004000000000000002 +:109130000804048081002C480810120410B1042C8B +:10914000D80A10020400B1002048081002C480B1FF +:10915000222C508A328205A0B12A204A0A128202A9 +:109160000100000000000000B80D6150C8522E142C +:109170000C85032140F8503A001F8503A140F850A8 +:1091800032140E8003A140F8503C800E0203208070 +:10919000FA2032080E8213AE0350000000000000D7 +:1091A000981DE450FD003E440FD003F400FD003E46 +:1091B000448DD001BD00FD023E440FD400E4487947 +:1091C000143E500F92A2F408FD003E4A0DD283E6F1 +:1091D00006700000000000001805E700F9103A6E64 +:1091E0000CB103E440F9443B618E9403E400E94090 +:1091F00032660FDA0BA728C9E03F680CDA83B32088 +:10920000EDA0337908D8034600700000000000008C +:109210003810E200B8A02E38088A02E288E8812ED1 +:1092200014090A03E280B88032300B85022101A8BC +:10923000F4382A080ECA2390C8543438088A920E8B +:1092400004300000000000000805C500B1002840FF +:10925000191002C400B12028400B1006C420A1A29E +:109260006C480B1002840881202C50091002C404A1 +:10927000B1002458083C02420170000000000000C8 +:109280001815A401B9202C40099002E410A9402E21 +:10929000400B9002A400B1012A400B94022400A9C3 +:1092A000002A4001105264008900264000980246BE +:1092B0000460000000000000A015E400F9613A40DD +:1092C0000D9083E520F9013A402E9002E440E90137 +:1092D0009E400F9403A40089003E402D9002E608B2 +:1092E000B90136402C9001680470000000000000B5 +:1092F0002801A400F9003E402E9003E480F9003CD0 +:10930000400C9C23E400F90036400F10438400F920 +:10931000023E400E90038080F9003C402F90038A6B +:1093200000600000000000002810A000C8403601C6 +:109330000D8403E100E8403E080C8003E100F800E2 +:1093400032008F8003A010F80032040E808360008A +:10935000F8003E000C00030A04200000000000009A +:10936000280528008A01228008A024E8000A002F8E +:10937000801AA0022800BA0016800BE0032808EA31 +:1093800000339008EC1B2280C6142F9108A0434A9A +:10939000004000000000000028054C00930024C09D +:1093A000093012CC04A3046CC00930028C00B30055 +:1093B0002CC01330028C00B300E6B80A380244080F +:1093C00082502CD23A30028A005000000000000087 +:1093D000A0010E8097B421C4497102DE8187212D3E +:1093E000D00B7B021C01BF2029C40B30025C00A7FC +:1093F000A121C04A708A0C8184002DD00A5002E855 +:109400000040000000000000A8081E82DFA034EC2D +:109410000D7902FE80E7E82FA0097A029E00F7A2EC +:1094200025EA0B48039E04FFC065E40E68035F0055 +:10943000E4803DE00EF803AA0200000000000000F6 +:10944000081DAC48EB053ED90EB203EC00FB603EB4 +:10945000C00EB283AC00F350A6C04FB003AC00FB0B +:10946000803FD80DA003EC0AF9003EC00D900342E6 +:1094700006600000000000000005FE00BB903EE01A +:109480000839039E20CF8277E01FF803EE00FFC06B +:109490003FE50DF903EE00FB9037A008F80F1E0022 +:1094A000CC9433600DF803C0007000000000000091 +:1094B000A8119C00B7902FE4087A021E008F122595 +:1094C000D80BBB021E00B7002DE8087D82DE40BB32 +:1094D000A027900A76025C80850037C44D7103EAAC +:1094E000046000000000000000009C00B7202DC0B8 +:1094F00029F222BC80970025410B70129C00B7080E +:1095000029C0084212DC40B70029C0096022DC10E3 +:1095100080002140097002C000200000000000000F +:109520002014CC00B3C02EC00834822D0093002438 +:10953000C00B30020F8013002CC00A34A2EC00B321 +:109540000028C00B0002CC00810020C00930028935 +:109550000430000000000000A811BC00FFE03FC084 +:109560000CF483BD00DF0836400B7542FC20FF8001 +:109570003BC02C3C03FC00BF00BEC08D900BAC0276 +:10958000CA0022800DB002EA046000000000000062 +:109590008000EC00FB081EC00FB013EC00EB003A9B +:1095A000100FB023AC01FB003EC03C8403EC00FB79 +:1095B0000026400E940B2C00F9403E900E9013E0D4 +:1095C00000300000000000000110DC02CF003FC0AE +:1095D0000DF00B3C20CF003D000EF0079C01CF02A8 +:1095E0003EC00FC4033C00CF000FC00E44031F0257 +:1095F000CC003F802C7003004430000000000000CD +:1096000081046C008B022EC00DB0022C00AB000652 +:109610002008B003FC00AB002EC00F8006BC00ABDE +:10962000043AF00C88022C00C9803A9208900AA0F3 +:10963000401000000000000080052C00AB002EC090 +:109640000930022C008B0026600BB002AC008B00AE +:109650006EC00BB0422C009B004CE00A90222C0004 +:109660008AC22C4008B042200040000000000000E8 +:1096700008040C00830D2CC60931020D81A31124AE +:10968000008AB1E24C80A3002CCC0B02028C80A398 +:109690004808C008000A0D00810028C00830028276 +:1096A0000100000000000000000D6C00CB202FC85E +:1096B0008DF6132DB08F0036400FF002ADA88F103D +:1096C0003FCA0B80922C10DB403FC00E00032D04DC +:1096D000C8023E400CB00300035000000000000030 +:1096E000A01DFC00FF003FC80EF103EC84FF2037F3 +:1096F000000DB203BCA0FF003EC90E8003FD11FFA8 +:10970000003BC00EC003FC80ED003BC00FF043687F +:109710000670000000000000C001FC90CC923BC825 +:109720000DF0837310FF2837CA4FB203FC00DF200F +:10973000B3C40D6843FE14CB8433E00D7803BE0040 +:10974000FF8037A00CF30330007000000000000021 +:109750008000FC48822103F40FF64220048A602B2B +:10976000DA0BF9023F048F5223D54D8802AE00DB9D +:109770008036C00880022004B80022600D7403E027 +:1097800000300000000000008805CCA0800108C067 +:109790004B30824290A3082CC81A30228D009300CF +:1097A00024C809A0120C04AB0062C009B002CC00AE +:1097B000B3002880083606A20170000000000000F7 +:1097C000C015AC00880822C00A301A001182000AB5 +:1097D000C00BB0422C008B0026C0099102EC20BBCC +:1097E0002866C00880026000B8002A4081B006F8F0 +:1097F00004600000000000000015EC02C8043AC03C +:1098000089B0036800E9C11EC10E3003EC00DB0023 +:1098100036C10D00230E00EB8032C8CD3032EC088B +:10982000F3003C800CB006800470000000000000D3 +:10983000E0019C007C003FC00BB043FD00BEC4377C +:10984000C01FF0035C00FF013BC00EC803BF20DF58 +:10985000003FD00FC013B0007C00B7400FF01BB02A +:1098600000600000000000004010AC0CD84132C085 +:109870000EB007A8016940B2C08DB0A3EC08F30098 +:1098800032C00F8003ED00FB483AC00DB0832C00BE +:10989000FB203E800F7023D0042000000000000059 +:1098A000C8053C00880023C008F0062C10885137FA +:1098B000C008F0077D608F0237C00B8C002D00B30D +:1098C0000038C00880822000B8002E500BF0003213 +:1098D0000040000000000000E0054C00980028C097 +:1098E0000A30028404A30000C06839060C109320DB +:1098F00022C09B01A08F14331428C0093C020C0124 +:1099000093402C880B3002B800500000000000008B +:1099100060011E10878029E00878023E00839024B1 +:10992000E0087810CE04079125E083C9021E04B731 +:10993000842BA408484212CCB4802D640B78021901 +:10994000004000000000000048002C00D01028C893 +:109950000E3B028400E34030C80C38628C00530098 +:1099600030C41F00238C3CF38018C00D30030E80E0 +:10997000D3103C800F300392000000000000000074 +:10998000401DBD00F912B4C007B003CC004A0077F7 +:10999000C00E71436C00F3003FD01FD053AC68FB86 +:1099A000183DC00FC013F050FC043F400FF403906B +:1099B0000660000000000000A805ED40F8043ED25B +:1099C0000FB313E010F900B2CC0EBA036D80DB02C6 +:1099D00032DC4F00036C04F30236400EB003CC00BF +:1099E0004B003C800CF1036200700000000000009E +:1099F00048119C00B4002DC90B7082DC00BC04210E +:109A0000C44B37020CA08F7421C00B40021C81B7DD +:109A1000202BC0084002D00284002D400AF202121E +:109A20000460000000000000C0009E80B4C02DE46F +:109A30000B7A02D200B58821E80A7802DE4097004E +:109A400021E80BCC465E28B7C421F00A7802FE0854 +:109A500097842DA00878027000200000000000000C +:109A60000814CC00B0C02CC09BB002CC20B3602244 +:109A7000C00B30028C00830120C01B06164F00B3C0 +:109A8000A02AF0080002E00090002C400A300202F8 +:109A90000430000000000000E815A810FEC03E8061 +:109AA0000FA003F908FE4022800EA003E800D200B8 +:109AB00032808FE0035800F60033B00E2002E80C2D +:109AC000D2023C800CA0037A046000000000000079 +:109AD0004800E000F8203E010B8003E000F0403E2B +:109AE000005780230000F8003E000F8403A03038A8 +:109AF000003A080FC403F000EC003F100F8003D2BF +:109B000000300000000000000810E400D9013C48CB +:109B10004C900B2401C9C03240AC9003E400D94002 +:109B200030400D9A032284C81432400E9003240062 +:109B3000C90082682C90030204300000000000007D +:109B40008004640089002E4008902224008902824B +:109B500040089002E740898036418D1802A024A871 +:109B600004624008948324008901227208900B202B +:109B700000100000000000001805040099002A40B1 +:109B8000289012040089002240089002A420990025 +:109B900022401890062001880862400A9002341082 +:109BA0008D812341081002060040000000000000E3 +:109BB0000804048081042C48081202040283202037 +:109BC00048081202C48083602448193462A504A1A5 +:109BD00002604008D00254008D0029400812820221 +:109BE0000100000000000000B80D6140D8503A802C +:109BF0000C85022144885032144C8043E000D80088 +:109C000022140C80032000C800A2000E8003200054 +:109C1000C80033000C82032E035000000000000037 +:109C2000981DE444FD003E440F9103F410FF103EE4 +:109C3000440F9103E440F9103E440BF013E510F992 +:109C4000403F4A2F928AA4A2F92836400F9283A659 +:109C500006700000000000001811E6C0C1003F6956 +:109C60000C9A436C00FDA03E782CD807D602D596FE +:109C700032780D90032700FDA0355006D403E5008F +:109C8000FD40B3400F98A3460070000000000000A4 +:109C90003810E3C288882E14A88AC222A0B8C02C2B +:109CA00024488402E10098C4203C088A822380B8BA +:109CB000042220088803A200B8A022000B88020E0C +:109CC00004300000000000000805C480A1206C40A2 +:109CD0000A14024404A1682C48081402C5008160DB +:109CE00020481990028581B14024680A1242C4803C +:109CF000B92020408B10824201700000000000005B +:109D00001805A410A9006EC00A10022414B9002E70 +:109D100040089012E40099002240088006A060B933 +:109D2000092260089002A400B90002400B10060648 +:109D30000460000000000000A005E400E9803E414E +:109D40000E90036400E9C03E400C9002E400C9009C +:109D500022410D8002A304F14036400E9002E4003F +:109D6000F10012400F900368047000000000000032 +:109D70002801A400D9223E420D9003E400B9C43C5E +:109D8000400F9003E400E902AE400F804B6210F9EF +:109D9000203E400F9003E400F9027E410F9013CA69 +:109DA000006000000000000028008000C8003800AB +:109DB0000F8020E000A82032000C8007E080C8005F +:109DC00038000D80832110F86032008E80B32008A7 +:109DD000F8003E000C8003CA0420000000000000D0 +:109DE000280528048A00339043A02228008E80761C +:109DF0008008E1031900868022800D60017800BE92 +:109E00000036800CE402A810BEA02F800DA0020A2C +:109E1000004000000000000028114C0403042CD472 +:109E20000B30024C01A3C420C02835028600838079 +:109E300028C00838060E9430C0A2C00B3C020C00AB +:109E4000B3802C480830028A005000000000000057 +:109E5000A0010C048F8021C11B72421EC083882187 +:109E6000C01828061021863821C019F7025DC0B439 +:109E70004127D00878C69C00B7002F6009720228DD +:109E80000040000000000000A8081E02C7802DA0AE +:109E90000F3E03FE80A780A1E00C7802940085A00D +:109EA00039E40C78131E90B58431E00FF8871E0456 +:109EB000F7803D600C3B03AA020000000000000098 +:109EC000081DADE4FB543E800FB423EC32FB003E92 +:109ED000D84FA003E400F9003EC00F3033EC04F289 +:109EE000013EC00FB203FE10FB683C410FF04382FD +:109EF00006600000000000004005FE00CFE43FE4E3 +:109F00000CFC037E80CF8133FA0FF803F600FF804C +:109F10003FE20F79033E40F48033600CE8033E00DB +:109F2000FF8033600CF883500070000000000000D8 +:109F3000A8119C00D7A02DC408BA023CA0872021FC +:109F4000C00F5203D400B6102DC08B73035C40B415 +:109F5000B02B482841020C00BF1835462872422A0F +:109F6000046000000000000018009C0087412D44A0 +:109F70000A73029CC481006DC88B7002D400B700C4 +:109F80002DC00BF0469C55B42025401860821C0063 +:109F9000B700234008704644002000000000000085 +:109FA0006014CC0093002C400BB0020C8280C020C7 +:109FB000C00A10020400B3002CC01B3000CD01B059 +:109FC00040AC78888C060D60B34C241208300A1817 +:109FD0000430000000000000B815BC00C7002E408F +:109FE0000EF02ABF00C8C8BFC00B9002E404BF0037 +:109FF0003FC00FB20AAC00F88034490CB90B3F00E7 +:10A00000FBC030F00CF0036E0460000000000000A4 +:10A010008000CC00FB803E412CB013AC00F8003E29 +:10A02000C10FA003E800FA403EC00FB00B6D40F82E +:10A03000103A400FB003EC10FE403EC00FF003E1B9 +:10A0400000300000000000000010EC0CDF003B803E +:10A050000FF00B3C08E70833C00BD023740054000A +:10A0600033C00FF083BE20FD0C3B602CE0033C00AE +:10A07000CF1233500C300380043000000000000089 +:10A0800081046C04AB0022A00BB0060C00AB403680 +:10A09000C00BA8026600B80036C10B3443EE00B214 +:10A0A00000226008B4828C048A21224008B0022079 +:10A0B000401000000000000080052C009B002A20BA +:10A0C0000BB0022C0088C522C00B8882E601BB08B9 +:10A0D00022C00AB282AC60B8024AC408B1022C00A5 +:10A0E000830022C008B002A0004000000000000071 +:10A0F00008040C00AB2020010B32062C00A000202D +:10A10000C0090422C400B20024C18BB0024C00B0CC +:10A110000062C0483002AC10820020C00830020249 +:10A120000100000000000000000D7C08DF2A3A005A +:10A130000FF5123C10C900A3C00F8053EC01DA00E8 +:10A1400033C00EB003AC04F8703AC00C60432C422C +:10A15000CD00B2402CF0038003500000000000004E +:10A16000A019FC00FB013D000FB417FC003C003FB0 +:10A17000C04FC0037408FE003FC04FF003FC08F856 +:10A18000303FC00FF003FC04FC003D000FF003E87B +:10A190000670000000000000C005F490EF003FD8FA +:10A1A0000EF3032C01D48037CC0D89431250EC2CD4 +:10A1B00032050DB0533CD4C5947FA08FF0433000DE +:10A1C000DC0033000C4807F00050000000000000E5 +:10A1D0008010E6408B702FDC08F7020C808A20008C +:10A1E000C84A2202A0008A48225888FD02AD02A96E +:10A1F000201EA00380022C048B0022C04C88076024 +:10A2000004300000000000008805C000232C2CC989 +:10A210000230020C68A0282CD00912028400A02170 +:10A22000201819302280D083060CA00BB006001233 +:10A23000A000200029000EA2017000000000000014 +:10A24000C011A8308B002EC04A300A2C14A0800AFE +:10A25000C108888687008300224908B006A040AB69 +:10A260002022200B800A0C04AB0222C0888002F05E +:10A2700004600000000000004015EF40EB063EC007 +:10A280000EB0032C02F9A03EC00D8C03AA10E940C9 +:10A29000B2480DB043AD00CB862E200F3003240012 +:10A2A000F98032C00D0CC290047000000000000064 +:10A2B000E0019400FF003DC00DF0037C00DF00379B +:10A2C000C00FE003F000FE203F400F7003FE00FFD0 +:10A2D000827F000FC003F904DE20BD000FD90B7C84 +:10A2E00000600000000000004010AC01CB003EC048 +:10A2F0002CB00B2C00E8403EC00F94072900C94049 +:10A30000B2C00FB0030102CB0032044FF04334C09F +:10A31000B51A3FC10F8093D0042000000000000058 +:10A32000C80528008F002FC008F0023C04D8002B7D +:10A33000C00C804560007B5822C80BFA0161408B3D +:10A340000032044BCE0228003A402E070B90022622 +:10A350000040000000000000E0054C0083014CC0FC +:10A360000B3002EC1090002AC00A8006C00483045F +:10A37000A289193006CC00830020900B30C248001F +:10A38000B24024200B0900B800500000000000007B +:10A390002001060487A42DE0093802DE009E8129F1 +:10A3A000E0087852FAC0968001A08B3A22CE408F06 +:10A3B000B025A00B08025608B5902DE44BD8220C0E +:10A3C00000400000000000004808080283802EE8DA +:10A3D0000B3813CE41D31028C00E3A02C6084B40AA +:10A3E00030600D3B27CFC4C3A030000F304348403E +:10A3F000F2003C040F020392020000000000000083 +:10A40000401DB800FF003FC40EF1033C00FF0133C4 +:10A41000C04DB1077C90FF003F4003F1037000FB8B +:10A42000103B000FC00BB400FD003FC40FD00390E1 +:10A430000260000000000000A805EC04FB843AC2A2 +:10A440004CB4932C04E9003AC48D08032E00CB01D0 +:10A4500032808FB283EC00CB8032000FF9033C10C6 +:10A46000DF81B3E08CA003EA007000000000000070 +:10A4700048119408B70424C81A304A1D00B7012DAA +:10A48000C08870061C00820021804B7612DC008799 +:10A490000029408B40021000BC002001287003B24C +:10A4A0000460000000000000C0009A00B3902DE49A +:10A4B0000979021E80A7802CE819F8125E018780B6 +:10A4C00025E04B7806D200978021620B3A021E00ED +:10A4D000B78629F0086806E00020000000000000B0 +:10A4E0004814CFC0B30024C08A30320C00B3082C0B +:10A4F000C00830120E20830024F10B3006CE0083FA +:10A500009028600B002A2180B008280008370292AA +:10A510000430000000000000E815B900FA003E8099 +:10A520004DA0032800EE413E800DE00378008E40F0 +:10A5300027A80BA003FB02CA8233A00FA013290097 +:10A54000FA403A800C6C03FA04600000000000003E +:10A550004800C000F8003A000C8003E008F8003E14 +:10A56000008F8023A042F809BA104F8003E060F802 +:10A57000003E200FC003F000FC0027008F800392F4 +:10A5800000300000000000000810E50089003E4097 +:10A590006E9003A408C9003C400D90032410F9A05C +:10A5A00032420C9013C400C9003E400F9003E440B7 +:10A5B000C9203E52CF900902043000000000000084 +:10A5C0008004660089042E400890022400D9003AD5 +:10A5D00041089005A400B940A2400D9002E54689CB +:10A5E000002E400B9012E500A9C82E618B944220EA +:10A5F000001000000000000018012400A9006C40B9 +:10A600004810228403A9002E40099002E404B108F6 +:10A610002840189802E50089002E400B9002F42093 +:10A620008D002F400B944286004000000000000087 +:10A6300008040480A1242C481812020480A10028D8 +:10A6400048081002840091202048091202C4948115 +:10A65000002C610B5A82D4A0A5282D4A0B900282AF +:10A660000100000000000000B80D6002E8502E1448 +:10A670000E8503A140A8503E140D85018140F8527B +:10A6800032940C8013C142C0513E008F8203E0809F +:10A69000C8203F080F8003AE0350000000000000F8 +:10A6A0009819F450D9113E448F9143E440DD003AAB +:10A6B000444FD027B400FD123F444F9143F440FD76 +:10A6C000003F410F9283E4A0F9283E4A0FD0036671 +:10A6D00006700000000000001811F680E9C03E7806 +:10A6E0008F9B03A780C94036780F1023E504DDA4B3 +:10A6F00033620FDA03F660C91033400E9893E630E8 +:10A70000C9C932788CD00B06007000000000000030 +:10A710003810E00088E22E300B88422340A0A122AE +:10A72000380B8A02E280AAE022300B8023AB028839 +:10A73000A02A000B8C02E30088E023380880020E78 +:10A7400004300000000000000805C500A14428589E +:10A75000431622848181202C58491080C48191485D +:10A760006C4A0B14024484810160400A5286D4A0D2 +:10A770008500A150689006D2017000000000000022 +:10A780001805A60089002E400B90020400A9602243 +:10A79000400B9502E410B1004E400B9066AC8089EE +:10A7A000002A600B9052F40085002140089002C6F8 +:10A7B0000460000000000000A005E620E9003E4023 +:10A7C0000F9003A410C90036400F9401E520D94032 +:10A7D000BA688F9007E600C91032620E9002E41842 +:10A7E000C90032400C9003E8047000000000000033 +:10A7F0002801A400F9043E400B90036400F9003ED8 +:10A80000408F9003E400E90272680F9003E600F9BC +:10A81000013E420F9003C402F9043E404F90031AD8 +:10A82000006000000000000028008002C800320024 +:10A830000C80036000C84036000F8403A000D8508D +:10A84000B2108C8103C120C8003E000FC013F00479 +:10A850004C003F000F80030A0420000000000000AD +:10A8600028152A008A04228128A01228008A01368D +:10A87000800BA0102810CE0123810CA812FB008AA7 +:10A88000013B8083A042E8108A002F800B60420ABF +:10A89000004000000000000028054C008300A0C01C +:10A8A00018B000CC009B0024C00B30066C00A3083D +:10A8B00028C8093002CC438B002C800B3002CC021C +:10A8C00083012CC04B30004A005000000000000003 +:10A8D000A0010C24879421E4183102DC8097102514 +:10A8E000CD0BF2027C00A00028E0187002DC01878A +:10A8F000342940094002D00484042D004BD0226842 +:10A900000040000000000000A8081600CFA070E979 +:10A91000187B03FF4097A035E80F74025E20E480A7 +:10A9200039A02D7803FE00C7803DE05F6843C20078 +:10A93000C4841D600F78036A02000000000000005C +:10A94000080DA4003B002ED80FB4032D8AEB623A09 +:10A95000D00FB2870CD0D80032C04F9043EC00FB30 +:10A96000083E408F9003FC00FF043F800F002B82C5 +:10A9700006600000000000000005F600FFA03EF4A5 +:10A980000EB803EE084BF07FF40CF923EE487890F4 +:10A9900032E40CF903FE00FF803FE41C79032E40F3 +:10A9A000FF8033E02C7807000070000000000000FA +:10A9B000A8119400B3000CE50B3802FE808F806173 +:10A9C000C42878004E00F48425A80C7002CC04B38F +:10A9D0009025400C41835240B410A3000C52036AEE +:10A9E000046000000000000000009400B7216DC862 +:10A9F0004B7002DC42A73129C4087202DC00B72880 +:10AA00002480087006D420B7012DC1086002508050 +:10AA1000B4082162097406800020000000000000D4 +:10AA20002014C704B3002CC00BB002CC00A30260FA +:10AA3000C00838024E44A0C02491083002C000B3C0 +:10AA4000002460081C024C88B3C020A008000A88BB +:10AA50000430000000000000A815AC00FF002FC06B +:10AA60004FF013FC08E78A3FC00CF5C2FE10BBC0D4 +:10AA700032D40C3013E304BF002E6208B9026E001A +:10AA8000FB0132A44D9402AB046000000000000002 +:10AA90008000EC60FB001EC00FB013EC005B003ABE +:10AAA000C00FB041EC007B45BA402EB015E001FB71 +:10AAB000003E500EC003F040FC203F508F900160DC +:10AAC00000300000000000000110F400FF003FC053 +:10AAD0008FF0031C02CF0036C00DF0037C007F2AEC +:10AAE0003F800FF8139021CF003F620CE00330004D +:10AAF000F8003F000FD00380443000000000000049 +:10AB000081046411BB002EC00BB0022C00DB0432A8 +:10AB1000C00EB002EC00BB842E400BB94222428B27 +:10AB2000012C720A90422C00BB002EC28F8806E0D6 +:10AB3000001000000000000080012400BB006EC077 +:10AB400048B0422C008B0026C00AB012EC00BB407B +:10AB50002EC80BB0122C008B002E480A30026C005D +:10AB6000BB002E804B9802E0004000000000000077 +:10AB700008040400B3006CC24B31020C509B20202F +:10AB8000C00A3212CC80B3006C0C0B31020C428331 +:10AB9000082E400A00020080B0002C410B10024237 +:10ABA0000100000000000000000D6400BB403FCC2D +:10ABB0000EF0833DA0CF2037C00CF7C3FD48F30053 +:10ABC0003E880FB413A5008F303E400CA003608078 +:10ABD000F8003E000F9023C003500000000000006A +:10ABE000A019F400FF293FC90FF013FC94EF123BAA +:10ABF000C08EB207FD04FF103F0C0FF003F000FB06 +:10AC0000203D400FD043FC40FF043FC00EC043E84E +:10AC10000670000000000000C005FCA2C7203F2411 +:10AC20000CF0033C80CC0933D10CF123FC20DF363F +:10AC30003FC00E4803FE00FF8037E40D780311A0EB +:10AC4000CF0037C80CF00330017000000000000096 +:10AC50008010FF008FD12E080DB6123D45F96427F4 +:10AC6000D088BA14CC048F4023F00B88022E04BB8A +:10AC700080AEC008B80A210088D0222028B0022067 +:10AC800004200000000000008805CC0093002E0086 +:10AC90000A34828CA0A00824D8093102CC20B33217 +:10ACA00028D04A8002CC0CBB00224089B0026080D0 +:10ACB000930024D00B3002A20130000000000000FD +:10ACC000C011AC009B002E2009B04A2C02A0000647 +:10ACD000C009B000EC00AB002AC00B88026C00BBBE +:10ACE000202AE241B82A600A980026000BB002B878 +:10ACF00004600000000000004015EC08DB023E206C +:10AD00004CB0032C028B2012C029B012EC00FB00C7 +:10AD10003AC00E8803ED20FBC834F00DBA0347603B +:10AD2000C90036400FB00B90047000000000000016 +:10AD3000E0019C00EF000F000F3000FC00DF90BB33 +:10AD4000C0CEF003FC04CB0017C00FC003BC84FFCF +:10AD50000037C00ED063B800EA003A800C300370B0 +:10AD600000600000000000004010AC00FB02320058 +:10AD70000FB0532C00FA0032C08FB0072C00FB003C +:10AD8000B2C00F8007AC80DB247ED00EB0237404E9 +:10AD9000DD08B5400CB003100420000000000000E6 +:10ADA000C8053C00BFC0A0001BF0023F60EA502372 +:10ADB000C008FA07FC00DF0063C04818022D00B38A +:10ADC000006EC00D3A032400828032800DF0033201 +:10ADD0000040000000000000E0054C14B359208042 +:10ADE0000930022E05B0442EC0093482EC00AB04B9 +:10ADF00020C00921B28E0493C024C00A18064C005A +:10AE0000925020C008300270005000000000000086 +:10AE100020011E00B78061E00B780A5E01B1A02D11 +:10AE2000E00A78025E00079021E018C8021E00B711 +:10AE3000802DE08AD8023EC085802120197822002A +:10AE4000004000000000000048080C00F3942010AF +:10AE50004B30070C00F3003EC80F3003CC0023102A +:10AE600000CB0520028C60930A2EC40A01074C8097 +:10AE7000D20130C02C300B5A02000000000000004C +:10AE8000401DBC00FF010F400FF013BC00EF267304 +:10AE9000C20CB083BC40FF183DC04AC103FC00FB9C +:10AEA000123FC44DC10BFC81FD003F200FF003D0C9 +:10AEB0000660000000000000A805EC20CB483E0022 +:10AEC0000CB0032D20E980FAC80DB003EE00DB249E +:10AED00076F38E8033EC44EB103EC00F9003E80411 +:10AEE000DC00B3610CB0032A007000000000000019 +:10AEF00048118D0087202F012870020C848D0431A9 +:10AF0000CCC97202DD00373321D8084002DC00B71B +:10AF1000203DC0095022F000970021800AFC0292D7 +:10AF20000460000000000000C0001E8287B02D20D9 +:10AF30000839021E41A78024E0097A328E8207A0D8 +:10AF400025E08B48021E00A7E12DE04B5800DA00F7 +:10AF5000A0802460087A0230002000000000000079 +:10AF60004814CC0083002C000830028C009300228F +:10AF7000C1093042CC00830060C0081A02CE04B37D +:10AF8000E028A0091C824B08A38024A02A30029A42 +:10AF90000410000000000000E815A800CA002F8877 +:10AFA0000CA0132800EE002E802DA003E800DA008C +:10AFB00076800EE803BB80EE402FA28FE603EB867F +:10AFC000FA8037820C20073A04600000000000007D +:10AFD0004800E000F8401E000F800B6100E8C03A16 +:10AFE000000E8003E001F8007E101E8103E008F8E7 +:10AFF000003E000D8003C028DC503B000F8003D2D0 +:10B0000000300000000000000810C402C9003E42E9 +:10B010000F1003A600C9013A400E9401E410F10498 +:10B0200032400F9A232060F8040A420E9013240045 +:10B03000C10032400F900302043000000000000005 +:10B0400080046708A9006E400890022782890026C4 +:10B0500040089C03A410B90036409B1C1A2304B876 +:10B06000003A400E10022402C9A0A2400B900A2010 +:10B0700000100000000000001805258089042C4005 +:10B08000089002848199402E401A9006E401B9008C +:10B09000A6411B90822100B8102E400A920AA401FA +:10B0A0008F2223400B9002060040000000000000A9 +:10B0B00008040480A3202C4109120204808120246A +:10B0C000480A3602C480B12004C84B14020500B1FE +:10B0D0000528500A90020502850021400B12020249 +:10B0E0000100000000000000B80D6000C8006E14F0 +:10B0F0002C8502A140C8503A140E8002E140B050A5 +:10B1000032000B80032000FA003E000E8003A002F4 +:10B11000C80013000F82032E03500000000000003F +:10B12000981DE448F9143F400C9103E442FD1036A9 +:10B13000440D9123A448F91138440FD003E5143984 +:10B14000427B408ED001F500A9403E50079683E631 +:10B1500006700000000000001801F680DDAE3A50D5 +:10B160000D9A0B7680CF8832702DDA03A701E99211 +:10B1700037680D9403E700EDA03A500FD003E702C3 +:10B18000CD8033680CD883060070000000000000FA +:10B190003810E100884020200C8C02230088E02237 +:10B1A00030088402E300B8E022148D8802E300B87E +:10B1B000502EA88B8022E34888502200088C020E73 +:10B1C00004300000000000000805C44091002A4837 +:10B1D0000914820520810820580911028588B14090 +:10B1E000A040081202C580A10028400B1802C484A8 +:10B1F000A10024500810920301700000000000001C +:10B200001815AC109B002240089002040689042007 +:10B2100040099002E401B902224189A082E0A0B96C +:10B22000282E440BB002E402B90026402810020682 +:10B230000460000000000000A015E400D9003840C0 +:10B240000D90032400C9A0A2408D9003A400F90032 +:10B2500036400C8413E200E9003A500F9C02E68469 +:10B26000E900B6400C9003280470000000000000C4 +:10B270002801A400E1003E680E1003A400F1283A62 +:10B28000400E9003E400F9003E420F8023E200F9F3 +:10B29000003E400F9123E440C1003A400F900BCA9A +:10B2A000006000000000000028108000C80032008C +:10B2B0000C8003A020C8403E000E81636000F004B3 +:10B2C0003C010C8403E000C8003E000E8003C10076 +:10B2D000D81032000C80230A042000000000000077 +:10B2E000280538608E0022800AA0023880BE003A0D +:10B2F0008008E0022800BA00239818EC02F820AE7B +:10B300000022800BE482E802CE4428800DA00A0AC5 +:10B310000040000000000000280540008204A0C09A +:10B320000930028E0483506CC00A30860C00B300D2 +:10B3300028300A3612CC80810024C00B3206CC00A3 +:10B3400080886460281002020050000000000000A5 +:10B35000A0011012844021C80A72021000B7002D0B +:10B36000CC0838121C00B3302000087182FE00A403 +:10B370008021C80B7002DC0187002C420951022099 +:10B380000040000000000000A8081200C28031F850 +:10B390004CFC139209C7803CED1E78271E00F78CE9 +:10B3A0007920087A03DE8184803DE00E7803FE2058 +:10B3B000C58135602C58032A0200000000000000FF +:10B3C000081D8000F8043ED00FB013E000FB023AE5 +:10B3D000D00FA00BAC40FB003A002FB003CC00F024 +:10B3E000003AC40FB003FC41F3003A400F5093C23F +:10B3F00006600000000000000005F600CC813FFC64 +:10B400001CF8037640EF923FE48CF803BF10FF80F6 +:10B41000B3200EF913FE24FD9437E01CF903EE006F +:10B42000CD80B3E00C580200007000000000000066 +:10B43000A811944080002FC4087202DD08D7002DA7 +:10B44000CC08DE035C00B7042180C87083DC00B444 +:10B45000A02FC00C7002DE80870021C20A51422A50 +:10B4600004600000000000000000900084002DC86F +:10B47000487002540CA7002CC08972025C00B31003 +:10B4800020000A7006DC00B4202DC0087002DC80A9 +:10B49000930020C0085002000020000000000000BF +:10B4A0002014C00080002EC0083002C408A2422C24 +:10B4B000C10920024C00B3002080083C228C20B03F +:10B4C000082EE0083810CF0A9340A0F00A100208B6 +:10B4D0000430000000000000A815A800C1003FC013 +:10B4E0002CF0036800AA003FC02D80037C00FF0001 +:10B4F00032000EB012ED24FA0827C810B8A2FF607F +:10B5000098A0A2E00C50032A046000000000000094 +:10B510008000C906F8413EC00FB003E9105A203E32 +:10B52000C00E8003EC00F3007E010FB093ED00F835 +:10B53000403EC00EB003FC00E3083CC20FD013E055 +:10B5400000300000000000000110F302CC003BC2FC +:10B550000CF023AE40DF8139C006D003FC00FF04AD +:10B5600031410CF003FC00CCA037C20CF0037C048A +:10B57000CD0033F00CD00308443000000000000080 +:10B5800081046000888022C00AB002E900AB442E2A +:10B59000C0088802EC00BB00A2700AB402CC00A074 +:10B5A0002022C00FBC02CC0A8B80A2C00D900220CA +:10B5B00040100000000000008005200089802AC0A3 +:10B5C00008B002CC0688602EC00A9806EC01BB00C9 +:10B5D000223102B202ECA08A0026C048A802EC0484 +:10B5E000A9802240089002200040000000000000D6 +:10B5F00008040000800020C00A3042CC0080012CEA +:10B60000C01A1202CC00B30020004A3002CC00A0C5 +:10B610000008C00B2006ECA0A300A04029100002E7 +:10B620000100000000000000000D6000C8503BC099 +:10B630000CB003AC00C9003BC00E9283FC00BF00FD +:10B6400012000CB003EC00882616C00C80175C803A +:10B65000E90132402CD0030003500000000000003C +:10B66000A01DD000FC203FC00FF003FC00FC003FF9 +:10B67000C00D8003FC08FF003F000FF003FC10F832 +:10B680004037C00EE021FC08DF003F400FD003E050 +:10B690000670000000000000C005FCC0FF217124FE +:10B6A0000FF183F240FF0037C49FF2473D04C720EB +:10B6B00033C00C7823FE40E81027C40FF2133C84FB +:10B6C000C48133204CF023700070000000000000A3 +:10B6D0008010ED40BF5462C80BF602E000BBD022E0 +:10B6E000F01FF9123D809F812BE00AB812E8008F0D +:10B6F0000422D008B38ABF428B8222E0288C022029 +:10B7000004300000000000008805CC00B3282808A1 +:10B710000B30068080B30224D10B30028D80931051 +:10B7200020CE8B3002CC84A1212CCC0A300A4C00D4 +:10B73000930028C0083C02220170000000000000B5 +:10B74000C015AC10BB026AE00BB002E108BB042AD2 +:10B75000C00AB0128C009B002AC00BB106C8808BB7 +:10B76000826AC10A3002AC1888102A480880023068 +:10B7700004600000000000004015EC00FB00AA304F +:10B780000FB003A800F301B6C10BB002AC084B0028 +:10B79000B2C00FB802EC10A9813EC00FB0030C007C +:10B7A000CBA018D00CB00310047000000000000003 +:10B7B000E001BC08F70037000FF003FD00FF003781 +:10B7C000C00FB0077C00E7003EC00AF003FE00F7A0 +:10B7D0000036C00CF003FC00FF8037E00FA003B878 +:10B7E00000600000000000004010AC00DB003600EC +:10B7F0000EB0036900DB093AC01F3023EC08CB20F0 +:10B8000034C02FB003EC40EB483EC44DB08B6C000D +:10B81000CB0032900F3003900420000000000000A5 +:10B82000C8053C008F00220048F0222C008F002326 +:10B83000E08BF5103C008F8023F08098032D44DBD3 +:10B840000023D408F8023C00830022C00BA48232FB +:10B850000040000000000000E0054C0093002400C0 +:10B860000B30028400B30128F60934328C01B3D0C6 +:10B8700024E80A310A860083002AE00030028C00A6 +:10B88000830028C08938A278005000000000000022 +:10B8900020011E00979423E0093802320097A1216D +:10B8A000E40B78021E40B7A025EC08FC023A009396 +:10B8B000B821E00878829E4087C029A00B58024832 +:10B8C000004000000000000048082C00DB0034208D +:10B8D0000F3A038E00F3B028C40B3A03AE40F3A036 +:10B8E00034EE0F30238400E3F038C00CB00B8E42EE +:10B8F000C30038C00F3063D2020000000000000017 +:10B90000401DBC00EB423AC41EB10788D1E3003FA2 +:10B91000C58FF163AC10CB503BC30FD103C800BB44 +:10B92000203BC02EF1031C00FF0037C04FD1039015 +:10B930000660000000000000A805EC40FB44B2C017 +:10B940004FB3432400DB1036C04CBE226D20CB50D9 +:10B950003EC94CB0132400CF2033C03DF0232CC08F +:10B96000D8003E408F30032A007000000000000025 +:10B9700048119C04B76021C18BF0A2141087000FFE +:10B98000C80D710A1D0087002CCC48702A9C0087C6 +:10B990000C21C00C72020CA287002DC00B70021289 +:10B9A0000460000000000000C0009E00B38021E0A1 +:10B9B0000B7A02DE00B78105E40879025C8087A07B +:10B9C0002DE008F806B600878020E40A7B121E905E +:10B9D00097882DE00B780E3000200000000000005A +:10B9E0004814CC00B30020D00BB0026E34A3002C5E +:10B9F000C10930024C0083002CC04810028D8083A6 +:10BA0000C000C08A30120C0080002C160B380212C5 +:10BA10000430000000000000E815A800FA00338898 +:10BA20000FA0037990FA0136801CA0036800CA00B9 +:10BA30003E812CA00BB90CCEE2B2808EA00B280068 +:10BA4000DA803CB00FE0833A0460000000000000A0 +:10BA50004800E000F0003E000F8003A000C8002E68 +:10BA6000000F8423A000F0403E100F8403E102F891 +:10BA7000483E100C8003C010F8803E000F0003D237 +:10BA800000300000000000000810E400D900364239 +:10BA90000F90032418F9103C48689213E400A91190 +:10BAA000B2600E91032600C90032600C1003240816 +:10BAB000C9003E400C90230204300000000000004A +:10BAC00080046400890022400B9002A40889002EA3 +:10BAD00042489402E40089802270081422A402895A +:10BAE000422A7028900A2400A9002E40289002A023 +:10BAF000001000000000000018050400990026C096 +:10BB00000390022401A9000E400A9046C40A89004D +:10BB100020480A900205808141A05888900224089C +:10BB20008D802FC008980206004000000000000031 +:10BB300008040480812020400B1202840081242C00 +:10BB4000580A3222C584A100205008B0028508811D +:10BB500040205A0816820400A5002D400812828257 +:10BB60000100000000000000B80D6140D8503614FC +:10BB70000F85230140E8003E000E8043C008CA0044 +:10BB800032800E80032000C00032082C02032008FF +:10BB9000C8003F000C82032E03500000000000008C +:10BBA000981DE440F9103F400F9143F404F9103E12 +:10BBB000440D1103E44459403E504F5043D402FD1C +:10BBC000403E400F900BE500F9003E404FD003E6A9 +:10BBD000067000000000000018056660C9E03244ED +:10BBE0000F9C03E400DD843F688FD842E6A0DDA40B +:10BBF00033680D70032500C9E0B2680C9AC32600B3 +:10BC000099003E400F9A03060070000000000000FB +:10BC10003810E3008880AA208B8802E288B8012EC1 +:10BC2000000B8402E2B088502214088002828088CF +:10BC3000E0B63A08CEA2210888002E000BC4020EFE +:10BC400004300000000000000805C48081606848DE +:10BC50005B1602C420A1406C500B1402C400A1006A +:10BC600024400B90221490854221505B501A1500FD +:10BC700095002D400B510A82017000000000000069 +:10BC80001815A40189002A400B9046E400B9012E42 +:10BC9000400B9020E400B900264018B802A4028DA1 +:10BCA000082F408BD00224008D202F480BD0028615 +:10BCB0000460000000000000A015E400C90032404C +:10BCC0000F9002E41049003E400F9002E400E901A9 +:10BCD00036400F18132410C98232407F902324006D +:10BCE000D9203E720F9003A80470000000000000ED +:10BCF00028018402F10116404F9003E510F9082E47 +:10BD0000400F9013E400C9013A401F9003E400F98A +:10BD10002034408C9003C408F9003E600F10034AA1 +:10BD200000600000000000002810A008F8003E009D +:10BD30000C80036000E8003E024F8013E000D0005A +:10BD40003E000E81033000CC4033000CC00B20209D +:10BD5000E8003E100FC003CA0420000000000000ED +:10BD600028052804BA00228008A0022800BEC86F57 +:10BD7000800BE122A8008E202F800BE02368008A30 +:10BD800000228008E00229008A002EA80BA000CA29 +:10BD9000004000000000000028054C00B30024C053 +:10BDA0000930020C00B3C12CE00B38562C101300E4 +:10BDB0002EC00A386A2000880020000980224C42E8 +:10BDC000A3002CE00B2480CA0050000000000000FB +:10BDD000A0011C08B7242FE00939021C01B6002D70 +:10BDE000900B60928E0086822DC20BF0025C06875B +:10BDF0000060C02970025C0086002DC00B6002E864 +:10BE00000040000000000000A8081F40F3E43DE8E7 +:10BE10000D790B1EC067802DE00F70431D80D5008B +:10BE20003D600E78031E00CD8031E00DC8034E004A +:10BE3000E5803DE00F4803EA02000000000000003A +:10BE4000081DAC80FB0070C06EB613AD40FA003E1A +:10BE5000C00F20432D1859003E0003B00BE000FA3C +:10BE600000BE000EB013AC00F8003EC00F8003C24D +:10BE700006600000000000000005FE40FF803FE675 +:10BE80000FF8232E04FF903FE40DBA03FF40CF804C +:10BE900022E10C39433210EC9033208EC803F200BB +:10BEA000DF803F600FF803C000700000000000005A +:10BEB000A8119C40B7903CE00B3A034E80F3B12DA3 +:10BEC000044C3823AE00808034E84D78023E8087F1 +:10BED000A029C0087002C08086022D410B7002EAC2 +:10BEE000046000000000000000009C4837012DC9DC +:10BEF0000B72221C84B5160DC4194042DC808700E9 +:10BF000020C888730A9C80B50029C00A4802C00274 +:10BF100095002D420B5802C00020000000000000D8 +:10BF20002014CC00B3002AE00B30024C20A10124E5 +:10BF3000C10800028C008100248009380A608092C8 +:10BF4000402A000A3002C00080C82C720B1402C8BC +:10BF50000430000000000000A815BC00FF002FF412 +:10BF60008FF0033C00B9003E40099003FC02C3017E +:10BF700032C048B813A100BA002A000AA007EC009A +:10BF8000DBC83E900FA202EA04600000000000003F +:10BF90008000EC00FB023EC40FB063EC01F8403EB1 +:10BFA000400B8003CC00FA423EC00FB500AC58E90C +:10BFB000823EC01D9003EC04FA003E800FA003E017 +:10BFC00000300000000000000110FC0CDF007FC00A +:10BFD0002CF0037C01C70033408FD003FC00D80055 +:10BFE00015440CE01B3C00CB0E33C05C62021C020B +:10BFF000C5002B800FC08780443000000000000087 +:10C0000081446C10BB002EC008B0520C01FAC4224F +:10C01000610B88036C0088472A000E1C02200288EE +:10C0200000AA0028900A2C04A80022900B8002E0AD +:10C03000401000000000000080012C00BB002EC159 +:10C040000830126C0088882A300BB802EC009B087C +:10C050002A4008B80220008210220008A022A00076 +:10C060008B002A020BB002E000400000000000003C +:10C0700008000C00B3202CC20836022CC0A00820F7 +:10C08000000B3346CD28802028C00B32020C2081C3 +:10C090003028C00810028100AA002800033002C224 +:10C0A0000100000000000000000C7C00FB282ECCEA +:10C0B0000C70537D098800BA000F8003FD80DA60A0 +:10C0C0003A508CA2832C804B2030C028A003A100C2 +:10C0D000C9003A000F9003C00310000000000000E8 +:10C0E000A01DFC04FB007EC90BB603FCC0F80C3F8E +:10C0F000004FC3432C00B8383F8E5EF043E010F889 +:10C10000303F010FD0037000FC0037000DD007E96D +:10C110000360000000000000C005FCE0CC8033C0DC +:10C120000DF083FC80DC9433C01CF1037D8CFF3068 +:10C130003F308FC8037E10CF9039A08DF803AE003A +:10C14000D58013E00C5803F00160000000000000EF +:10C150008010DD08880023C408FC02ECA8CB202155 +:10C16000C20DF7121C40DF3022A00B88022E04DB28 +:10C170002122C008B8222E00B9802A600A8802E075 +:10C1800004300000000000008845CC10802C28CA34 +:10C190006830028D009B2028C4083202CC10B30006 +:10C1A00024080B80426C0083002ACA3AB0028C0437 +:10C1B000B00428C0081002E30130000000000000B5 +:10C1C000C0158C028040AAC008B002EC009B202A57 +:10C1D000C088B002AC009B0026E00380822C289B24 +:10C1E0002022E10BB202AC80B8802AC10A9802F08A +:10C1F00004600000000000004015EC00C8503AC088 +:10C200000DB003EC00DB88BAC008B0036C08FB007B +:10C2100036600F8C636C00CBC03A800EBE03AF84D7 +:10C2200079803A88049801D0047000000000000072 +:10C23000E001BC00FC8035C04FF003DC00EF0037AC +:10C24000C0AFF0031C016F0013000FC123FCB8FF47 +:10C250000437C00CF8437E04FD003F040FD003F800 +:10C2600000600000000000004010AC00C8403AC070 +:10C270000CB003EC00FB4038C10EB0432C08C300E7 +:10C280003E400E82036D00DB4032C15FB4A3ED205F +:10C29000C94032E08F984390042000000000000065 +:10C2A000C8053C00880023C028F5C2FC00B3042365 +:10C2B000C148F022BC06AF000E40080002CD00BB12 +:10C2C0000120C0083002EE0081E034A00B90023261 +:10C2D0000040000000000000E0054C02800028C083 +:10C2E000093C024C00B3002CC00AB0020C008301D0 +:10C2F0002C000A0502CD58BB0020000A3D02CF40A9 +:10C30000212060C0091002F8005000000000000069 +:10C3100020011E00848028E4887842DE00B7906502 +:10C32000E4887A429E40A7902DA00A4822DE04B7F6 +:10C33000802360487842FE80AF9065E00BE802C839 +:10C34000004000000000000048080C00C80038C091 +:10C350000C3003CC00FB003CC00EBA030C00C30041 +:10C360003E004E2202CCC0FB4030C00A3003CE80DB +:10C37000E14130C90F3003D202000000000000008C +:10C38000401DBC20FC0037C20EF123EC40FF043AF4 +:10C39000C00FB023FC00FF043EC00DA003FC58FFFB +:10C3A00000BFC006F083DC62DF003FC00FF0031067 +:10C3B0000660000000000000A805ED80C9013EC035 +:10C3C0008CB207AE04CB803AC84CB2032C84CB307D +:10C3D000B0E00D880B2C00EB0030000CBC832D80EE +:10C3E000FB0032C00C9003EA047000000000000063 +:10C3F00048119C4087002CCC0876823C8287002123 +:10C40000C28D32820D4CA72821800840021D80BFBA +:10C410002035400972435CA0B70029C0087002D2E1 +:10C420000460000000000000C0008E0084802DE049 +:10C43000087802DEC08F8028EC287B0A9E948384D3 +:10C4400023E00958509E10A7B023E00B78021E206D +:10C45000B78021E0097802F0002000000000000011 +:10C460004814CC02821C2CC02830024C0083C0200F +:10C47000C00830020C00A30060D2081D020F20BBD0 +:10C480002424C00B3C024F00B38028D8093202D2CA +:10C490000430000000000000E811A800CE843E80B7 +:10C4A0000CA003E800CEC03A8008A003A800CA0090 +:10C4B00033800DEC033B80EE8233800AC08710404E +:10C4C000F6C03390AD6403FA006000000000000085 +:10C4D0004800C002F8003C001F0403A004F8303EEE +:10C4E000000F8003E000F8003E040F8093E000F8A6 +:10C4F000103E002C8403E000F8183E100E8003D29A +:10C5000000300000000000000810E400D9003E40A8 +:10C510000E9003A410F9003E400490032400410053 +:10C520003E400F9113E108F8003240088983A200D1 +:10C53000C98032400C900B02003000000000000067 +:10C540008004640289002E400D90022400B9002E60 +:10C5500040489002A400890022408B9442E220B817 +:10C5600000A240089402E504A990346008900220DB +:10C5700000100000000000001805241099002E4053 +:10C580000A9002E400B90024400A10020400A90045 +:10C590002A400B9082E001B80020403A9002A44467 +:10C5A0008904226208980206004000000000000092 +:10C5B0000804048A81002C480932064480B1002C0A +:10C5C000480A12028480A12020500B1402C500B139 +:10C5D0004020500A2402C900A3002440081102028E +:10C5E0000100000000000000B80D6140D8503E146A +:10C5F0000E8003E140F85136142E85432142E85065 +:10C600003A000F8012E000F80032001E8043A000C4 +:10C61000C80132000C80032E03500000000000000F +:10C62000981DE440FD003E444E1103A440B5003E79 +:10C63000440D9103E440D9103F400F5003E500F949 +:10C64000403F400D4403F100F5023DC02FD203E608 +:10C6500006700000000000001805E700E9003660E1 +:10C660000DDA03E640F9403E680C9A03662089A083 +:10C6700033400E9007A600F9803E500CCA03F380A9 +:10C68000C50233400CC003C600700000000000006B +:10C690003810E30488A22038088002E340B0802EDE +:10C6A00028088A82238088802200DB88026204B8FE +:10C6B000B02EA8888EA2EA8088002A002888038EDF +:10C6C00004300000000000000805C582A9082C52B3 +:10C6D0000B1402C480B1210C5288140244209169C9 +:10C6E00020400A1082C6E0B10C2C48080102E193F8 +:10C6F000A10124410A1002C20170000000000000E4 +:10C700001815A40089042240089000E40039020EA4 +:10C71000400810622400910062408B8002E054B90E +:10C720000C2E4009B652EC00A9002A400A928086DD +:10C730000460000000000000A011E400E160364049 +:10C740000D9023E400F9303E402C90436406C9006C +:10C7500032490E8D93E000F9002E402C9403C7401F +:10C76000E92030550E9003E804700000000000003E +:10C770002801A400F9001E400F9003E400F9803C5A +:10C78000404F9003E400E904BE400F88336200F993 +:10C79000C23E482E8833E200D9003E600D8003CAB5 +:10C7A00000600000000000002810A000C8003E004B +:10C7B0000D8003A004E840BA000C8003E004C80028 +:10C7C0003A000E8C03E000F80232000E8003612074 +:10C7D000F80032160F8003CA042000000000000099 +:10C7E000280528008A002E8008E20328008A0022FB +:10C7F0008008A002E8048A002EA209E802FA04BE1A +:10C8000000A28008CD823320B6C037A04BC882CAB0 +:10C81000004000000000000028056C00830026C0D6 +:10C820000938024C00B30024C0083002EC00830039 +:10C8300028E00B3002CE81B30062C0083C024F00FA +:10C84000B3A020B0033002CA005000000000000076 +:10C85000A0010C4187342DC00860029E40B7A02D76 +:10C86000C0087302DC0087202DC00B7082DD85BFFD +:10C870008163C8887B021C00B74065001B7202E818 +:10C880000040000000000000A8081E00C7813DE035 +:10C89000DD7003FE80F7903FE02C7903FE80C7A097 +:10C8A00039E00F7A02DE84F7C231F20C79035E04BC +:10C8B000F78431600F7E03EA0200000000000000F0 +:10C8C000081DAD0AFB607ED40F30036C00CB003234 +:10C8D000DE2FB203ED421B603EC10DB103EC50F7F9 +:10C8E000803DD82E3203EC30FB003E400FB003C237 +:10C8F00006600000000000000005FF00CBD03FF004 +:10C900004CF813FE00CF883FE00CF8433F00CFC83F +:10C9100033E00CF803FE00FF803FE02CF803BE205C +:10C92000C78033E00CF80100007000000000000038 +:10C93000A801BC4087903DC0084002DC80D7002D94 +:10C94000C00C30037C00871021C41E7020DC44B76B +:10C950000039C00C71021C40D70229400870022A1D +:10C96000046000000000000000009C0087322DC021 +:10C97000087002DC0187002CC02B700A5C00830069 +:10C9800023C0087002DD00B7002DC40BF0029C200C +:10C990008718294008708200002000000000000075 +:10C9A0002014CC00830228C0081002CC0883402E3B +:10C9B000C02A30020C008B0020F20A3002CE00B3F5 +:10C9C000882AD00A30060C0092002878083C4208D9 +:10C9D0000430000000000000A815BC02C7002FC0F2 +:10C9E0002C9002FC028FD83FC04BF0027C02CF009B +:10C9F00020F208B013EE80FF003FD42EBD83AC00C0 +:10CA0000CB803AA0ACB8032A04600000000000000C +:10CA10008000EC00FB103EC00F8403EC10FB003ED6 +:10CA2000C001B003EC00FB00BEC00EB023EC08FB5D +:10CA3000103FC00DB403ED04F9001E14CFB083E025 +:10CA400000300000000000000110FC00CF0030C0EA +:10CA50000C4003AC00FF003FC02CB003BC00FF0043 +:10CA6000B3E00DFA037E80CF0033C00CFC43FF20FF +:10CA7000FF003F4008F803C0443000000000000001 +:10CA800081046C10AB002AC00A8E422C04BB002E1D +:10CA9000C008B0026C00BB003AC00E30020D088323 +:10CAA0000222C00ABC02EF00BBC02C680AB902E037 +:10CAB000401000000000000080050C008B0022C028 +:10CAC00008B802AC00BB022EC008B002EC00BB00EC +:10CAD000264819B0026D008B0022C00AB002EC0497 +:10CAE000BB1C2E200AB002E0004000000000000045 +:10CAF00008140C00AB2028C00A00020C0093042C80 +:10CB0000C10830024C00B300244109B8020C028372 +:10CB100001A0C00A3002CC1093002C000A3002C2DF +:10CB2000010000000000000000057C00CF2833C099 +:10CB30000CA046AC11BF003FC05CF043FC00FF04FA +:10CB400032400DB0036C08CB0431C00CB033ED4063 +:10CB5000FB043E400EB003C0035000000000000084 +:10CB6000A015FC00FF003FC00FC023FC01FF003FE9 +:10CB7000C04FF0877C00FF0039400EF003FC00FF3F +:10CB8000003FC00F7003DC80FF003D400F7003E8E2 +:10CB90000670000000000000C005FC40EB483EC2EB +:10CBA0000E0903BC60C02035240ED2132C60FB6A32 +:10CBB00033C00FCA032220C08037C00DF0037C00B1 +:10CBC000EF0033240FC803300070000000000000A5 +:10CBD0008010DD008F602FD808A202FD80C870226F +:10CBE000002CFD07DC84BF6023D20BBD022300882C +:10CBF00080A22088B0223400BB5022C80BB0022093 +:10CC000004300000000000008805CC40A3032CC2C3 +:10CC10000A00428C82A30A24800B3002CC90B3001D +:10CC200028D80B10028C02900020C00B10424C0040 +:10CC3000B30424C00B300EA20170000000000000FD +:10CC4000C015AC109B042CC0F89806EC00AB8026F5 +:10CC50002008902AAC10BB000AC01BB022AD00987F +:10CC6000402A704BB0022C00B300A6861BB082B0E5 +:10CC700004600000000000004015EC00EB003EC026 +:10CC80008E9803AC08E8C036304FB042EC00F98013 +:10CC90003AC08F88422010C81030F00F30136C104B +:10CCA000EB0036F00FBD03900470000000000000A0 +:10CCB000E001BC00EF047FC00FF043DC00C4003B88 +:10CCC000408BDC037C10F99036C24FF9236241ACF3 +:10CCD00001134004B003E400FF003BC00FC0037821 +:10CCE000006000000000000040108C12CB00F2C079 +:10CCF0000F8003AC08D9003A800F1203AC00E100AA +:10CD000032C00C9003ED02C8403ED00F90132C02AD +:10CD1000DB003E500CB403100420000000000000B3 +:10CD2000C8053C008F0017C00890023C088D002207 +:10CD30005408B4033C00890023C0403502CC248051 +:10CD40000022744CB0022C008F002ED40AB00A329C +:10CD50000040000000000000E0014C02830024C0FD +:10CD60000900028C0190006A410A30204E10310205 +:10CD70002CC0092006CE00800060E00A30820C083A +:10CD800083082CD009B00278005000000000000099 +:10CD900020011E0487B020EC09E9028E589DB02BBB +:10CDA000A5405B06DE4095942DE4197B06DE0084E9 +:10CDB0008060E00A780A161087802D680B79024897 +:10CDC000004000000000000048080C00CBA024E058 +:10CDD0000F2A038E00D2D038FA0F18C3CE2431B0F8 +:10CDE0003CE50C3B17CE04C08238C29E10030C00F9 +:10CDF000C3013EC00D81035202000000000000008C +:10CE0000401DBC00EF103EC20EB1232CC1AB013659 +:10CE1000800FB0232D90E98472C862F117FC00FCEA +:10CE2000003BC41DF003EC00EF083FC80EF1039077 +:10CE30000660000000000000A805EC80FBA43AC8D2 +:10CE40000E90032C04CA0030602D1A276C84CB602E +:10CE500032D20CA0132D84CB023EC00DB803AC809F +:10CE6000CB8132800CB003AA0070000000000000EB +:10CE700048119CA4B72873C208F0023CC08F00314F +:10CE8000C00970829C80870C20D80970221C3084D5 +:10CE9000003DC0087002142487A021C0087012123F +:10CEA0000460000000000000C0009E40B39529E926 +:10CEB0000A68029ED086F0A3E00878129E44A382FE +:10CEC00021E80B38020E1087802FE00B18028E022B +:10CED000870021E0087802300020000000000000F8 +:10CEE0004814CC00B30024C04830020C04838020D6 +:10CEF000D00910028C06A38020C00B30020C0280E7 +:10CF00004028D20A30020C018300223C088702121A +:10CF10000430000000000000E815A818FA003A806C +:10CF20008EE4422802CE8033804DA083E800EAA040 +:10CF3000B2800AA00A2800CE182F800FA013A800E4 +:10CF4000CA0032902CAC0B3A0460000000000000D4 +:10CF50004800E000F8043A000F8083C008E8033A74 +:10CF6000000E8022C000D0007E10A48003C000F814 +:10CF7000003E100D8403C000F800BE000F80015277 +:10CF800000300000000000000810C402C900364054 +:10CF90000C90036402890432420D9203E642C900F8 +:10CFA00032700E120B2408C9003E450E9903E402AC +:10CFB000C10032500494030204300000000000005D +:10CFC0008004640089006E400890022400890022D9 +:10CFD000540B9003E6008900224008900A2400893F +:10CFE000003848089082E404D900224008900220CA +:10CFF00000100000000000001805240089012C40EA +:10D000002810426400A1042250019042E4008904E7 +:10D0100020420A9042340089006E400A9000E400E9 +:10D02000890023400AD002060040000000000000F2 +:10D030000804048081242C480810020480A12028C0 +:10D04000400B100285808120204808506214028124 +:10D05000032E40881682C4A0912821402A50020243 +:10D060000100000000000000B80D6140C8502E14FF +:10D070000C85036140E850B2154D8002C000485055 +:10D08000B2151A80133008C8003E000E8203E080FB +:10D09000C02030000E400B2E0350000000000000A6 +:10D0A000981DE440F9103E440FD003E448DD1037EA +:10D0B000400FD407E440FD103E450F9403E508FD02 +:10D0C0000239D00FD043F4A0F9283E4B0D9283E6ED +:10D0D00006700000000000001805E680C9A632684E +:10D0E0000C9003A681E9E93B400E58033620C9A005 +:10D0F00037780DDA033626C50037690EDE03A682BF +:10D10000CDC033500FD003060070000000000000B7 +:10D110003810E3A488A9223A08080022A0B8E53014 +:10D120002028802243A008E82A3D08A46220008825 +:10D13000002E10088E0323A088A020280B8A820EC0 +:10D1400004300000000000000805C4409140204465 +:10D150000890A28510A1202C420B14128C01911072 +:10D160002C4809110AC40081002C500B1112C50172 +:10D17000B14024480B180E020170000000000000AE +:10D180001815A400910022410894422400B14020C7 +:10D190004049B262240099000A40089002E5808963 +:10D1A000002E4009B0022480B90026504B900206A0 +:10D1B0000460000000000000A015E402D900B240A5 +:10D1C0002C9513A410E900BE608F900BA410590099 +:10D1D0001E409D9423E402890034400F9003E6082A +:10D1E0007900B64007980328047000000000000092 +:10D1F00028018400E9023C402F9802E400F9423AF9 +:10D20000680A1003E410E9003E400E900F2600F972 +:10D21000043E400E1C03E600C1003A500F9983CA39 +:10D2200000600000000000002810A000E8003A00A4 +:10D230000C84032000D84232040C8813E000C8009C +:10D2400030000C040B0000D80036000E80230000D4 +:10D25000C88032000C80010A042000000000000099 +:10D26000280528108A002E8028202228008A0023E2 +:10D27000B088E0022810DA00A3B408E81028008E75 +:10D280002023A048ED1A2800DE0023900AE0020ABD +:10D29000004000000000000028054C00A30028C04A +:10D2A00008300A0C00930020C22A3022A400BB00E0 +:10D2B00008E018090A4C00930224E80208064C0012 +:10D2C000930020D80A90024A00500000000000009D +:10D2D000A0011C8087042DC00870020E0087102555 +:10D2E000000A60025E009700298208501254008FE5 +:10D2F0008061D00804025C01B708A9A00A508268C6 +:10D300000040000000000000A8083E80E78038E4EC +:10D31000087E031F00DF80B1211E7803DC04F38048 +:10D320005BE10828035E00D78035600E68034E007D +:10D33000DF8031E00EF80B6A020000000000000000 +:10D34000081DAD02FB743ED04FB283ED007B683AFE +:10D35000008D8003A420DB0136806FB0418400EB98 +:10D36000003CC00FE683BC40DB00B6800FB00382F8 +:10D3700006600000000000000005FF20DFC03BE663 +:10D380000EF813FF44C7823BE00FF903BE10CFC86D +:10D3900033608DEB033E00DB823FE00CD8033E4060 +:10D3A000CE8033E40FF8030000700000000000009E +:10D3B000A811BC40870021E40B78A2CE90C7B02012 +:10D3C000E80B2892B68887A020640B3503140087E9 +:10D3D000B239C02CC0035E02CF0031CE0B76122AC8 +:10D3E000046000000000000000009C00A31029C899 +:10D3F0000B7402DC808F0029CC0A30061480871061 +:10D4000021C00B66025C0087002DC00B51021C80FE +:10D41000960021C05B748200002000000000000024 +:10D420002014CC08A30020C00BB802CC008B40A86D +:10D43000C08B08228C02830060C00B304204008342 +:10D440004028FC8A00026E008300A0D08B380208BE +:10D450000430000000000000A811BC02EF003BC037 +:10D460004FF802FC02CF0038120E98022C00CF00B9 +:10D4700032C0099003640281C03ED00F90073C0384 +:10D48000D90032600F88032A046000000000000009 +:10D490008000CC00DB003EC08FB003EC00FB023606 +:10D4A000C04F9002E400FB00BE900F9C13EC00E91B +:10D4B000183AD004D503EC40E9003A008F8003E02D +:10D4C00000300000000000000110FC00CF003DC152 +:10D4D0008CF0032C00EF0AB3122C7023140A4F00B7 +:10D4E00035600DB0030400CD8007E80CC4032C00A8 +:10D4F000CD0031E22CE003004430000000000000C9 +:10D5000081046C02AB022EC00EB0022C008B0032E4 +:10D5100030009C036C008B04223608344A2C0889A6 +:10D520009020B80F8400AC02890036A008A4022025 +:10D53000401000000000000080052C008B002EC071 +:10D5400008B0020C008B0022D10888122600A3002C +:10D5500026400BB00226008B0026C05810122C0467 +:10D5600082802A49083002200040000000000000AC +:10D5700008040C00A3142CC81A348A0C848340229B +:10D58000C80803624CC0A36020400A30020C008B24 +:10D590004508C00B10028CA08300264008300A0208 +:10D5A0000100000000000000000D7C00CF402FD2E1 +:10D5B0008CF6033C22CF4032D64CA6C13DA0874812 +:10D5C000360D0FB1022442CB6016C00CD0032C8064 +:10D5D000CA0032C00C3003000350000000000000FD +:10D5E000A019FC00FF203ECA0EB003EC20DB343A49 +:10D5F000C80F8003E410DB213E180DF203FC80FF0E +:10D600003035C00FC013EC00FF003BC00FF003E843 +:10D610000670000000000000C011FC00FB0B2FCAC8 +:10D620008DF203FA0096803BC40DF1037C80EC8000 +:10D630003B080CC2037402CC803F480EF00330A0BC +:10D64000D5803F400CF803F000700000000000009F +:10D650008008EE40BF802FF00BF722EE208A802357 +:10D66000FC8875123D00880022002880022408886A +:10D67000006F5000F502290089002E540D9011A072 +:10D6800004100000000000008805CC00B3002CC18D +:10D69000093082CC82BB0028C0493202CD00B800DC +:10D6A0002C500901020C4080006C4409300220001B +:10D6B000B0002C40183006E20170000000000000AD +:10D6C000C001AC00BB012EC00BB002EE00AA004AA4 +:10D6D000C008B052EC00980226400980026C01AAF2 +:10D6E000042E4009B0022200A9802E41099002F0C8 +:10D6F00004600000000000004005EC00FB003EC09C +:10D700000DB003CE84FA001AC08DB043EC00F002D5 +:10D710003F000DD1033500CB482E402FB0092280A9 +:10D72000F9C81EE008B1E2D004700000000000005B +:10D73000E001BC007B003FC00FF023FC00DE0024B2 +:10D74000C04FF0032C00EC203B000E98039402DD48 +:10D75000003F404EF001F800DD003CE40FD803B874 +:10D7600000600000000000004000ACC0FB2032C898 +:10D770008DB003EC00F9003AC22C30036C04D802DF +:10D780003C448D1003AD03EA003C400C7023E400E0 +:10D79000C8403AC00DBC0350042000000000000047 +:10D7A000C8013D00BF4223F00DF002E500E2013761 +:10D7B000F108F00E3DC0A8002E542890022C008ADB +:10D7C000053B4148F5038C00890022D40E9502F2F6 +:10D7D0000040000000000000E0054C00B30420C041 +:10D7E000893002CC40B2002CC44830022C02A20086 +:10D7F0002C2019201A8008B0006C40083002C400A8 +:10D8000081002C40083002F80050000000000000A9 +:10D8100020011E00B7A0E1E0097802DF04AE802DF0 +:10D82000E00879021E1087902C282968028281B4B2 +:10D83000802D60087810BC008F802D600B6802C8B6 +:10D84000004000000000000048000C05F39230CAC0 +:10D850000D3003CC00F3003CC00C30020C80700093 +:10D860002C400D20038900B1003E402C3003EC50C9 +:10D87000C3203C400C3003D2020000000000000036 +:10D88000401DBC00FF003CC00EB083EC40EA0036F7 +:10D89000C20FB083AC00F8003E480EE00B7A80CF98 +:10D8A000003B440FF003ECC0FF0003440EE003D044 +:10D8B0000660000000000000A805EC00FB233EC845 +:10D8C0001DB003EE00CA003EC80CB2032D90C88400 +:10D8D00036002DB00360189B8033500CF203E20039 +:10D8E000C98032400CB8032A00700000000000001C +:10D8F00048119C00B7280CD2287302FC0086042C27 +:10D90000CC2870830C20950120000930121004856A +:10D91000002152087502D8008700214008600212D9 +:10D920000460000000000000C0009ED4B7B109E10F +:10D93000087822DE0095802DE008780A5E4294C0C7 +:10D9400021600878025A0087802D68087A02D70083 +:10D95000978020600978023000200000000000005D +:10D960004810CC00B3002CC008B002CD8092002C2F +:10D97000C008B002CC009080A04009360248028363 +:10D98000A0AC402A3006CE029304A04009200A121F +:10D990000430000000000000E815A800FA003A80FA +:10D9A0000DA003FB02DE803E800CA0032800CE8089 +:10D9B00032800CA4037800CEA43F800CA007F900AD +:10D9C000DE0032802DE0023A04600000000000001A +:10D9D0004800E100F8007C000F8003E040E8103CC4 +:10D9E00001CF800F2000E8003E000E04039000E805 +:10D9F0000020000D8007E000E8003E040E8003D206 +:10DA000000300000000000000810E400F9107E4122 +:10DA10000E90032400F90036680E900FA408C90088 +:10DA20003A400C900B2412E9003E442C90036424ED +:10DA3000F9022E400C9003C20430000000000000E8 +:10DA400080046510B9803E4008900A2600B1102A73 +:10DA500072089007640289402E40289012250089A0 +:10DA6000453E500D900A2500B9402E40289403E011 +:10DA7000001000000000000018052400B9002E402E +:10DA80004890422601B94026400A904284018B0802 +:10DA90002C4009D0823432A9086E4208100224209A +:10DAA000B9082C40189082C6004000000000000019 +:10DAB00008040480B32028480812020401B1002899 +:10DAC00058081202058981402C5808560615808195 +:10DAD0004028500914020580B1402C5A081402C293 +:10DAE0000100000000000000B80D6800F8002E00E2 +:10DAF0002E85032148F80036008E0502A00880001C +:10DB00003E000D800B1004E0002C004C8003400010 +:10DB1000F0003E080C0003EE03500000000000007F +:10DB2000981DE440F9103E440F9103F400FD003EBF +:10DB3000440F9103E440FD033F441F911BE440FD6B +:10DB4000013F500E9403F440FD003F400FD003A668 +:10DB500006700000000000001815F400CDA07168E8 +:10DB60008D9803D400CD0033600C988F2720C940D6 +:10DB70003E780C9E8B2720D11130608C9C032500B1 +:10DB8000F9403E780F90034600700000000000004E +:10DB90003810E01088012201088C22E80088022A4F +:10DBA00014088C0B239088A02EB0088C4223008888 +:10DBB000A0362A188A022200B8A02E340BCA820E80 +:10DBC00000300000000000000805C400814024501F +:10DBD000091682C400A9002040081292540885004A +:10DBE0002F4C09521214809D002150085422148099 +:10DBF000B5002D480BD00242057000000000000067 +:10DC00001805A4028901A240489002E402A9002A52 +:10DC1000406890026410AD002F4128500234008DFE +:10DC200044274039D0023500BD142F400BD00246A6 +:10DC30000460000000000000A005C400C9003640D8 +:10DC40002D9003E700E1E032400C900B6402C9081C +:10DC50003C500C90022602D9C032400C9013270091 +:10DC6000F9203E400F90036804700000000000009F +:10DC70002801A402F90038400F9003E680D9A03CA7 +:10DC8000400F1003A400D9103E400F9003C492F936 +:10DC9000213C402E900FE680F9803E400F90038A91 +:10DCA00000600000000000002800A040E8103E04D2 +:10DCB0004E80032080D8603A020C80132000F84088 +:10DCC00036102D8003A008E84032000D0003210229 +:10DCD000C840B2000FC003CA0420000000000000CA +:10DCE00028113B1086012FA00DA00238008EE023E2 +:10DCF000A208A0022800BA80228008A00228008280 +:10DD0000002A8028A0022A048A8022A00B6002CA6E +:10DD1000004000000000000028054380A2002CA065 +:10DD20000830022E00920028C02830022C00B38058 +:10DD300024C009300A8C00A30060C008300A4C00DF +:10DD4000830020E00B2002CA005000000000000009 +:10DD5000A001100086002DC0093A0235008600217E +:10DD6000C00873021000BF8821000870021C088FD1 +:10DD7000002BC00820125E20878821830B6002E8F8 +:10DD80000040000000000000A8081200E5813DA04E +:10DD90002C7A0B1E00D48038E00CFA0B1E00F680A3 +:10DDA00034E00D28038A00E68031200C78037A04E1 +:10DDB000CE8431E04F7843EA00000000000000000C +:10DDC000080D8000F8003EC00FB523E400F00436D3 +:10DDD000400FB687E000F2003E001FA00BE800FAFB +:10DDE000003E000EA003A800FA003E800FB003C260 +:10DDF00004600000000000000005F600CC8033A0A5 +:10DE00000CFC033E00FC8037E00FB9213E00FD8290 +:10DE100033E02CF8037E10DF843DE00CF803F600BD +:10DE2000FD803F600CE8230000700000000000004F +:10DE3000A8119840841021C00870021080B40021FD +:10DE4000C80B7A021000FD0021040870021C4287F2 +:10DE5000002DC4486102D680B5002F040861822AD3 +:10DE6000046000000000000000009000810021809C +:10DE70000830021C10BC0825804B300E1C00B4007A +:10DE800020C0082002580096002F000A7002D0809F +:10DE9000B4182D4009F80200002000000000000026 +:10DEA0002014C8028000A0C00830220BC0B0C022DD +:10DEB000800B30020000A004220028A0022B008A60 +:10DEC000002C0008A006C000B0C22C0009BC1A0833 +:10DED0000430000000000000A815A000C80032C0F7 +:10DEE0000CF00B2600F9C036000FF0132C10BB40CD +:10DEF000F2C00890036700D9803EC0089002EC0091 +:10DF0000FBD03EC0298C002A046000000000000005 +:10DF10008000E000F8443CD02FB003E400F9203E3C +:10DF2000400F3003E000FB083E000F9013E442F97D +:10DF3000103EC00F8003EE00FB003E800E8203E027 +:10DF400000300000000000000110E008FC8032E416 +:10DF50000EF0037400FC003F400CF00B3C00FE0090 +:10DF60003FC00DC1032020CC1033000CD10358005A +:10DF7000CE002FC00FD1030044300000000000008D +:10DF800081446200B0402AF108B0122608B8C82EB9 +:10DF9000700AB0022000BA002E00288003224088B8 +:10DFA0000120000A800228008A012E808B90022026 +:10DFB000401000000000000080052600B828224222 +:10DFC0000830026600B8802E3088B0022C00B901FB +:10DFD0002EC0889002A400890022C0089002240C60 +:10DFE00089012E401B8002600040000000000000FC +:10DFF00008040000B00028C02830020000B0002C47 +:10E00000400A30020000B1002C0008100A04008110 +:10E0100001A2C008000A048081002C001B000A0233 +:10E020000100000000000000000D6000F800324018 +:10E030000EF0236408F8002E000CF0032C00F8000A +:10E040003EC00C80032002C80432001C9003200054 +:10E05000C8013E419F904340035000000000000073 +:10E06000A01DF000FC0C3FC00FF003F010F4003FC7 +:10E07000000FF423F000FC003F000EC003B000FCD2 +:10E08000003F000FC003E100FC003F011F5003E808 +:10E090000670000000000000C00DF0D0FF203ED050 +:10E0A0008EB003ECA0DB283ECC0CB303AD08F83CEB +:10E0B00032230E48237A00FD943FE00F7833EE08B8 +:10E0C000BF803FE40FF90330007000000000000043 +:10E0D000A000ECC8BFD10FC80C2682FD248F002EF3 +:10E0E000990AF2621DD099612271888802AC00B849 +:10E0F000222E204B8803A00080002E080B80236076 +:10E1000004300000000000008805CC04B3030CCCF0 +:10E110000A1312CC14A30E0C580A33028C10A3203D +:10E12000A00A18900248A0B02024800A2002CC093E +:10E13000A1002C800B3242A2017000000000000000 +:10E14000E011AC20BB002EC04B80A2EC00AB004E17 +:10E15000462AB0022C049B802A608A9C02AC00B93B +:10E16000812E400B9802A3008A002E400B8004F001 +:10E1700004600000000000004015E100FB043EC008 +:10E180000EB403EC0ADB022ED10EB003AC00FB820E +:10E1900032281E0C036800B9003E404FB043ED002A +:10E1A000EA003E400F800390047000000000000071 +:10E1B000C001B818FF021FC00CE203FC00DF032FF0 +:10E1C000A10F7003FC04AB0437422DD0027C00FC8D +:10E1D000003F800FC003B000FD003F800FF00378C8 +:10E1E00000600000000000004010A900DB003CC0FF +:10E1F0002E94016C11CB00B8C00CB0036C00EB0185 +:10E200003210079203A800F8003E0C07A203AD00ED +:10E21000D80032000C8003D0042000000000000071 +:10E22000C8052808BF002FC08880023C08EF0322E1 +:10E23000000DF5003C008B822260039C022C10B97B +:10E24000B022F00B90022000BB0022E20DB002F2DF +:10E250000040000000000000E0054000B3022CC0B8 +:10E260000830026C00830020C0093404EC00A800D0 +:10E2700022F00B00028800B30028E00B1402A0007B +:10E28000930020C008B002F8005000000000000019 +:10E2900020011E04B7802DE80878020EC8A790213F +:10E2A000A81938529EC1878021E20BD9829E00B600 +:10E2B000A02D200B68021E00B4C12120094802C80D +:10E2C000004000000000000048000C80B3103EE059 +:10E2D0000E3A074E00CB903A610D3803CED1E1984B +:10E2E00030A48F10038800BAA13C8407000382D4B5 +:10E2F000D10072800C3003D2020000000000000048 +:10E300004015BC04FF003FC00FC223ECB0FF003239 +:10E310000406B4237C10BF003E840FB0037C40FF92 +:10E320000033400FF003FC00FE00BF400FC803D0D5 +:10E3300006600000000000008805E400CB333EC802 +:10E340004CB003AC90DBA036C00EBA436C00C900E1 +:10E350003E400F000F2800FB003E400F18436000B6 +:10E36000FA003E404F080B2A007000000000000039 +:10E3700048119C1007082CCA0820021C2087283F3F +:10E38000808AF0021D4087042DC00B70021C00B66D +:10E39000002D800B60031C00B5002D800B70021255 +:10E3A0000460000000000000C0008E0087A02DE483 +:10E3B0000A58021E01839021700B79029E0185C0CC +:10E3C0002DE04B58121A00B6802D200B4802520047 +:10E3D000B4802D200B480230002000000000000017 +:10E3E0004814EC0083002CC08836020C0283006CB9 +:10E3F000C00B300AAC009BE06CC80B32020C01B3BE +:10E40000002CC00B30020C10B3402CC00B3C82120D +:10E410000430000000000000E815B802CA003E8089 +:10E420000EE48B2800CA0033950FA007A802CE4047 +:10E430003FB00FE4822800FA003E800FA02368005E +:10E44000FA403E814FA4E33A04600000000000005F +:10E450004800E080F0003C002F00026000E8003C33 +:10E46000000E80012000E8045E040F8003E000FC41 +:10E47000013F100FC403B000FC093F000FC003D2DE +:10E4800000300000000000000810E400A920364021 +:10E490000E90034404D9003E400D9003E404C900EB +:10E4A00032408F900BE408F9003E440E9803E600DA +:10E4B000F9003E400F9003C204300000000000004D +:10E4C0008004640089002240189002240089002EF4 +:10E4D00040089402E400D90422400B1C0B6400B9EC +:10E4E000942C50089C02E414B9900E400B9002E06A +:10E4F00000100000000000001805240289002640DA +:10E500004A9002640099042E40089882E400890031 +:10E510006A400A9282E400BD012F5012D602F440F4 +:10E52000BD000F400BD002C60040000000000000FC +:10E530000804048081202048081202048081222CD3 +:10E5400048A81206C490912028500B90024500B5AF +:10E55000406D40085012D404B5022D400B5002C249 +:10E560000100000000000000B80D6140C800361432 +:10E570000A85034140D8502E140C8503C140C85071 +:10E58000BA000E8023E00078003E000E8003E00415 +:10E59000F8003E000FC003EE035000000000000032 +:10E5A000981DF440D9103E4407F103E440F9103FB0 +:10E5B00044AF9103E440FD1037500FD003E400F95D +:10E5C000003E400F9003E4A0F9283E4A0F9283E6F4 +:10E5D00006700000000000001805E6D4FDA23A70A5 +:10E5E0008C9E032680C9A032680CDB4327809DA245 +:10E5F000B7400F50036500FD003FC107D003F5048D +:10E60000FD402FC00CD003C60070000000000000C9 +:10E610003810E388B8502238088E00A2A088E8227B +:10E62000384888036210A8E83C000B80036280B879 +:10E63000012E800B8021A200B0842E2A288A82CE4F +:10E6400000300000000000000805C440B100285858 +:10E6500080134005008140205228160285809BC20D +:10E6600064418B98020400B1092C401B1020C400A7 +:10E67000B1002C40481002C20570000000000000EC +:10E680001815A584B900204008900224000100203C +:10E69000500890426400A910AE580398026400B973 +:10E6A000002E400B9046A410B9002E41089002C6DF +:10E6B0000460000000000000A011E700F9002A40FB +:10E6C0002C940B2402C900B2440C90032404D9807A +:10E6D000B6418F18032400F9603E400F9603E40012 +:10E6E000F9803E428C9003E80470000000000000B6 +:10E6F0002801A600F1003E400F1C03C400F9003EB3 +:10E70000408F9023C410F900BE400F900BE400F935 +:10E71000003E40079023E400F9203E408F9003CA5A +:10E7200000600000000000002810A100F800BE00FA +:10E730000E84032000C80032000C00832000F80083 +:10E740003E000C8003A000F80036100F8043E00864 +:10E75000F80032000F8003CA04000000000000002F +:10E7600028052800BA00228048A0036800AA002AD1 +:10E770008008E003680082002F8008E6022804BEBB +:10E780004023800BE802EA00BE0122800BE002CAAF +:10E79000004000000000000028054C01930120C14A +:10E7A0000A30020C00A30020C08838420C00A300ED +:10E7B00024C00A3E428C00B24C24E04B3802C441D3 +:10E7C000B30022C00B1002CA00500000000000007D +:10E7D000A0011C00B70020C9487002DC40A7142C1F +:10E7E000C82830825CC185002DE02AF0121C80B759 +:10E7F000A021820B7082D411B68021404B5002E8D8 +:10E800000040000000000000A8081E80D58029EA12 +:10E810004E3A070E80E3B031FC0C48030E41E7800E +:10E820003DE00E78039E80F4C435E00F7827DE00CB +:10E83000F580B1E00F5803EA00000000000000007E +:10E84000081DAC0031043AC40FB5936D08FB403A83 +:10E85000C8638023EC98E9003EC00DB043EC00F3A0 +:10E86000803E404FA003EC00F8683E408F9803C202 +:10E8700004600000000000000005FE60EB903EE434 +:10E880000FB8003F40CB807FE00EFB032E40CB80D3 +:10E890003FE00F79432E60CA8133648FD903FE00B5 +:10E8A000FF8133E00FD98B000070000000000000F2 +:10E8B000A8019C00878119E40BFA135E8087B22DB2 +:10E8C000EC0D79019E00D5902DF80B78037E08ABF6 +:10E8D0009129850B5102DC48B64021400B50022A99 +:10E8E000046000000000000000008C14B5206DC81A +:10E8F0000B72025C80872069C0885302CC819750DC +:10E900002DC80BF70ADCC0840121441B7022DC00F7 +:10E91000B50021C40B50860000200000000000005C +:10E920002014CF3091002CC00B34024C0083002CFB +:10E93000F20B10220C0091002CC80B180ACD01A379 +:10E940000028600B2102CE20B840A0540B1802080A +:10E950000430000000000000A811BD00F9002FC025 +:10E960000FF4027C12CF033FC20EB003FC049B02E3 +:10E970002EF20FA40BDC00CE00B0C88FA403EF0072 +:10E98000F88032F51FDD032A04600000000000005B +:10E990008000EC40E9003AC00FB103CC00F3003E28 +:10E9A000C00DB409EC18F9103E104FB10A6C80F993 +:10E9B0008936820BA603EC50F9503EC01F900360CD +:10E9C00000300000000000000110FC00FDA03DC070 +:10E9D0000C70832C00EF0235C00DE203FC04FF0233 +:10E9E0002DE08EF0033C10DC003F800CD803FC00CF +:10E9F000DE1833F04FD003C04430000000000000A8 +:10EA000081006C00B9002EC04CB0036C008B023644 +:10EA1000C00DAC12EC0079002E300D3D42AC0089E7 +:10EA2000881A100D8602EE04BB4022E00B9002E033 +:10EA3000401000000000000080052C01B9002EC02D +:10EA400008B042AC000B0526C0099420EC00B98048 +:10EA50006EC488B0822C009B822E42088102E48022 +:10EA6000B80022C10B9002E000400000000000004E +:10EA700008040C10B1252CCA083446CC08830024A5 +:10EA8000C20B0252CC8183002C0019B242AC8081AF +:10EA9000082880090002C440B10020C00B1002C247 +:10EAA000010000000000000000056C00B9003FD02C +:10EAB00008F607BCC2AF3075DC0D1602FCE0B95099 +:10EAC0003ECC0CB0232C10D9003E000C9003EC007F +:10EAD000DE0132C00F9003C00350000000000000B0 +:10EAE000A019FC00FD103FCA2EF6036D949F303A2A +:10EAF000C90C8393FC80FF117E190BB103FC40FD10 +:10EB0000083B000FC003FC807700BFC00F5003E834 +:10EB10000670000000000000C001FC00F49437C83B +:10EB20000D69637C10FF6237C00DB4037C60D48034 +:10EB30003F400F48233200CE00BF408FD10330E06A +:10EB4000FF303B600FD803B00070000000000000F1 +:10EB50008010ED20B82423F449A2023F408F5123B6 +:10EB6000DA08F6123D809B802E494B80034000D985 +:10EB70000122740BD5022100BF422E490B9C02E0FA +:10EB800004300000000000008805CD80B82028C1B6 +:10EB90001BA0024C0093202CD80B3402CC00900117 +:10EBA0002CC61AA00268088300A4400B10020000C3 +:10EBB000B31028420B1402A20170000000000000F4 +:10EBC000C015AC00B8602AC01BA08EAC019B052606 +:10EBD000C003B0426C009B802EC003A00669009960 +:10EBE00080AAC00B900263003B002E584B9002F0AD +:10EBF00004600000000000004011EC04F880BAC07E +:10EC00000F30036C10DB0336C08FB003EC08D880E4 +:10EC10007EE00688034108CBA03E640F900B2A00DB +:10EC20007B003A010F900390047000000000000088 +:10EC3000E001BC00FC8432C00CF9035C10EF003B27 +:10EC4000C00C70039C00EC013FE44FD103F100F3D2 +:10EC50000533600FD003BC04FF003F210FD003F841 +:10EC600000600000000000004010AC00C8403AC640 +:10EC70000DB4036C00F30034C00EB0036C00E91057 +:10EC80003AC00F84032C60CB0032600C500361004B +:10EC9000CB003E900E90A3900420000000000000E6 +:10ECA000C8053C02880101F020B0013E003F00335E +:10ECB000C00BF0323C08898022C0011512AC008BD9 +:10ECC0000022C048DB022F408F002E0108D4803282 +:10ECD0000040000000000000E0054C00080008F0C3 +:10ECE0000800124C00330124C04A30024C00A0201E +:10ECF00028C00B10024604830420C02918020440D7 +:10ED0000B3002C400A1C42B100500000000000007B +:10ED100020011E018D8021E018C8021E00B3A02131 +:10ED2000E01B38020E01A78021E009D840D64087B9 +:10ED30008001E0095902160097842D6008584000B0 +:10ED4000004000000000000048082C40C00038C40B +:10ED50000C30274C20F30134C10E3A034CC4E000C0 +:10ED600018C80F34034440C30030C00D90032E0078 +:10ED7000F3003E400E10019A020000000000000067 +:10ED8000401DBC00F9000ED40EB003EC20FB203F68 +:10ED9000C40FF103EC60DB103FC04FF003A446FB4F +:10EDA00000BDC00ED00BB400EF483F400F5003D061 +:10EDB0000660000000000000A805EC00F80032D456 +:10EDC0000F8003AD00EB0822D20CB6036C00F2807A +:10EDD00036C00EA0032810CB00B2C00FD6032810F7 +:10EDE000FB203E404F99132B0070000000000000F4 +:10EDF00048119D10B40121C18BC0021CA0BF042783 +:10EE0000C80875021CC0B60021C008F04218108F57 +:10EE10000021C00B54A21C00B7042D410B5202125A +:10EE20000460000000000000C0009E80B688A5E0DD +:10EE30000B78129E81A79025E48878021E80BF80FF +:10EE400024600B68021E00878461E00A1A0A1A0017 +:10EE5000B7A02DE00BDA0230002000000000000017 +:10EE60004814CC00BAC0A4C00B34020C00B3002478 +:10EE7000C008B00E2C00B39820600933022C00A308 +:10EE8000C820C00B10020C00B3002CF00B100212B3 +:10EE90000430000000000000E815A800FE80368164 +:10EEA0000BE003A800EA00B28008A0036800FE009F +:10EEB00036A01FE8133B82CEE022808EA0033800EC +:10EEC000BA003FA20FA0033A046000000000000057 +:10EED0004800E000F8203A10078003C100F800382D +:10EEE000002F8003A001F8423E050E800BE080D881 +:10EEF000003E000F8403E100F8003E000F840BD2B7 +:10EF000000300000000000000810E400C9003A5082 +:10EF10008F9083A402D100B2404C90232408C901F1 +:10EF20003E400C90032400C10032400F140A2520FB +:10EF3000E9003E420F9003C20430000000000000D0 +:10EF40008004640A890022700B90122580C9002277 +:10EF5000400A9003640089202C400A900A2400890A +:10EF6000C132400B9802060089902E400B9412E0AB +:10EF700000100000000000001801040089006A422F +:10EF80000A1002A4008900A2400A9002240009008D +:10EF90002E4058100224008980AA600B9002A4041D +:10EFA000A9002E400B9402C60040000000000000A3 +:10EFB00008040480810060480B10020481812060F5 +:10EFC000480A1202448881000E590A140205008181 +:10EFD000C028504930028C8401602C500B1002C2B2 +:10EFE0000100000000000000B80D6140C0542A007C +:10EFF0000E8503A000C85032151E05222142C8000C +:10F000003E000C80030004C8003A004F8503A14075 +:10F0100068003E000F8003EE035000000000000077 +:10F02000981DE440FD033E440FD003E448E9103E40 +:10F03000450F9113E440FD003F440FD003F402FD5F +:10F040004033500FD4237440F9103F400F5403E66F +:10F0500002700000000000001805E400F901336AA6 +:10F06000099003B634F9C832640C9A03E6A0DD00B7 +:10F070003C700F9003A500898033320FD8133C00F9 +:10F08000FD0070500FD0030600700000000000006B +:10F090003810E280B8A822100888022100B8C020E9 +:10F0A000300D8E87838888002E340B8A822280DC84 +:10F0B000E022380B80022000F8A82A280B80020EDC +:10F0C00000300000000000000805C420B10020400E +:10F0D0000A92928411B1246858091102C420910146 +:10F0E0002C481B500274849548AC480B94020404CD +:10F0F000B10224480B10020205700000000000005D +:10F100001811A400B12022400A90062C01B9002A4F +:10F1100040099002A4009B082E480B121A74009517 +:10F12000452E600390022400B9002E400B90020689 +:10F130000460000000000000A015E400F9803040E9 +:10F140000E1603A400B90432400D9002E400D94029 +:10F150002E401F9803E580D900AE6007100B2601F2 +:10F16000B900A6400F900B280470000000000000BA +:10F170002801A400F900BE40AC9203E400F900B4F9 +:10F18000400F9003E400E9003E600F9003A480F973 +:10F190000032000F9083E685E10032440F1003CA6D +:10F1A00000600000000000002810A000F8003200FD +:10F1B0000F8013E094E00032000C80036000C80070 +:10F1C0003E000D80432008F80032000F8003E0402D +:10F1D000F80032004C8023CA042000000000000028 +:10F1E00028052800BA0023800BA002FB046A002235 +:10F1F000800AA003680A8E883A8008A0020800BA34 +:10F2000000B72203E402FA008A00228008E802CA5A +:10F21000004000000000000028054C00B3006041E1 +:10F22000033002CC41A30004C00B30022C00A380A9 +:10F230002CC00938020C00B300A0C00B3402CC80F3 +:10F24000A10020C0083802CA0050000000000000E1 +:10F25000A0011C40B70061000B7102DC00A3002577 +:10F26000C81938025C80A7000FE80964221000B3B7 +:10F270000025C80B6002F200850123E8087082E8CF +:10F280000040000000000000A8081E20FF80A1A090 +:10F290000F7A42DA00E7E835F02F7B621E82E680C3 +:10F2A0001DE00DF80B1E00F78031F00F7803DE0C27 +:10F2B000EF8031F82C7803EA000000000000000025 +:10F2C000081DAD84FB683E000FB003E800FB00FAA8 +:10F2D000D80EB503ED00DB003AC08EA003E000FBC2 +:10F2E000403EC00BB043C404EF02BFC00FB003C226 +:10F2F00004600000000000000005FE42C7383364CF +:10F300000E7C035E00DFA037F00DF803FF20CF81F5 +:10F3100033E20CD803BE007FC033E00CF9037E005B +:10F32000FD803FE00FF803C0007000000000000007 +:10F33000A8119C0087A021140871021410D7203551 +:10F34000C00C7003BC0085082BC04D4602D100B72D +:10F350000021C00860020880F5203DCA0F5403EA6E +:10F36000046000000000000000009C118F01208458 +:10F370001AF0021800A73465C0097102DC008E0083 +:10F3800029C00850069C00BF882DC40A6026582456 +:10F3900097006DC09B7002C00020000000000000BC +:10F3A0002014CC008B4020001830020000BB022447 +:10F3B000C0083020CC0081C028C00B0482E010BB04 +:10F3C000A02CE00A20060000B30028C00A10028822 +:10F3D0000430000000000000A815BC00CF1032006F +:10F3E0000EF00B2400EF0037C00DF003FC06C150F7 +:10F3F0003BC00CB403AC00F8C0BEC82EB0036E0115 +:10F40000FB002DC04B9002EA0460000000000000E9 +:10F410008000EC04FB003E000FB003AD009B003EFB +:10F42000C00F3003AC00F8002EC005B403ED00F8A7 +:10F430004032C0090003E091E3003EC00F9011E0AC +:10F4400000300000000000000110EC00EF0033204D +:10F450004FF003B400EF033AC00FF0033C00DC00B0 +:10F4600031C08DF803FE04CF0032C80CF00B1C0035 +:10F47000CF9333C08C4002004430000000000000F5 +:10F4800081046C00BB00A2040B30020E00AB002A0A +:10F49000C009B0036C08A8C036C008BC02EF02ABBC +:10F4A000D020E008B82226108B0022C0209C022029 +:10F4B000401000000000000080052C00BB0026006A +:10F4C0000AB002A208AB006AC00BB00A0C008B8025 +:10F4D00022C009B102EC40880822C008B802260008 +:10F4E0008B0022C0089802A000400000000000002D +:10F4F00008040C00B30024000BB0020001830020BC +:10F50000C00930024C00000424C00830064C0080C2 +:10F51000002CC008000200418300A2C008100A822B +:10F520000100000000000000000D7C00EF08260034 +:10F530000EF002A000E7003BC00FF5433C02DA00EA +:10F5400032C00DB003EC00CB00B2C00CA0032810F9 +:10F55000CB0032C00C80038003500000000000008C +:10F56000A00DFC00FB003B000FF003F000FF023F8A +:10F57000C00DF203BC00F4003FC00FF003FC00F725 +:10F580000033C00F6003F088FF003FC04FD0036816 +:10F590000670000000000000C005FC40FC313B0884 +:10F5A0004FF943EF00DF3032210F94077D80EF38B1 +:10F5B00032091C3803F221FD0033C40CF002FC00B8 +:10F5C000DF0033C00FF003300070000000000000C7 +:10F5D0008010EC888B6022E50EB222EC80AF112AFD +:10F5E000200BB113AC488B4534CC48B0026B00BA49 +:10F5F000823600088822C0048800A2088B88622016 +:10F6000004300000000000008805CC00A130280074 +:10F610000B3202CC00A3222C008B1206C880A30060 +:10F620002002CA3006C401B10068800920028800A7 +:10F63000830020C20B000AA201700000000000003D +:10F64000C015AC008B6162C00BB202E800AB022AAD +:10F65000611B9002A800AB0020C00AB0026C04BA83 +:10F66000002E40899002E608980022000BB002B0FC +:10F6700004600000000000004015EE00F8013A04AC +:10F680000FAC03EC90FB023EE00B90426780A8C4F5 +:10F690002248228603E140B8022A40299003EC0266 +:10F6A000C94832400FB01390047000000000000001 +:10F6B000E001AC40FB001FA20EF882FC08FF003FF7 +:10F6C000C00FFA439644D4913F400DC003FA00FFA7 +:10F6D0000825800EE003D000EA003F800FC00378C9 +:10F6E00000600000000000004010AC00E1203A5033 +:10F6F0000F90032C00EB0876050EB027E010EA40CF +:10F70000B2C00CA4432500F80032080F8043E80083 +:10F71000D108EE400F0003D00420000000000000DC +:10F72000C8052C008B0022D00B90822C0087402231 +:10F73000608BB002E000D85022D00CA0036C00B364 +:10F74000C83ED00BB80225088A202A808BB882F2E6 +:10F750000040000000000000E0056400A0C024C0DC +:10F760000938022C0083032000103022CC008300D3 +:10F7700060080A30824C00B1C000D10B380284808E +:10F7800082012080033802F80050000000000000D1 +:10F7900020011640849825E00B7A02FA48A32061E4 +:10F7A000240B7900CEC093A421A60B7812DE80B67C +:10F7B000802D240B4B021A40858121600B4802C822 +:10F7C000004000000000000048080C00E2A0B4FE69 +:10F7D0004BB80B0E00A3B024A80E1B02CEC1C3C0B1 +:10F7E00030682E3A474E80F18030800F22838000AF +:10F7F000C21038804F0007D2020000000000000055 +:10F80000400DBC10FE043BC107F0031CC8DF2A0BEF +:10F81000C48FD143F8027F003FC00CF10F3C00F2CF +:10F82000113F411F5203BC0EED143F400FF803D0AF +:10F830000660000000000000A805E400E900328036 +:10F840000EBE4B6F00CB827AC02CB0032C00C900D7 +:10F8500032002C10032C08C00026406C9013241298 +:10F86000C8013E000FB80B2A007000000000000025 +:10F87000481194008D0021800B70823C2083322936 +:10F88000C008F0201400800023000850069C04D714 +:10F89000022880086002081087002DC00B40021269 +:10F8A0000460000000000000C0009E00A78021E06E +:10F8B0000B5C121E0487820DA00978160200B4802A +:10F8C00025E00B78029E00848021220808021201A4 +:10F8D00084C02D200B080230002000000000000032 +:10F8E0004814CC008342A0D80B34820C00A3022021 +:10F8F000E008B0020C88B32124D80B3E028C0093A0 +:10F900000828C00838022C058B012CE00B300212AD +:10F910000430000000000000E815A800EE0033905D +:10F920000FA00B6800CA017FA80CAA033A12FEE2DE +:10F9300037B00FEE021800CA4036A008A08B28008E +:10F94000CA812EA00FE0033A04600000000000000E +:10F950004800E000F8083E000F8003A202D8403EB5 +:10F96000080F8013E0404840B8040884036100FC9D +:10F97000003F004FC003F100FC003F040FC003D262 +:10F9800000300000000000000810C400F9003050F2 +:10F990004CB9036C18F90036400E9C23A4024100B8 +:10F9A000B2440E9A03A680C9003A600A9003A4806C +:10F9B000C90034400C9003C2043000000000000075 +:10F9C0008004640089402278089402E410B9003C65 +:10F9D00062189482A40089C82270481E016780D1F1 +:10F9E00000BC42081002252089022240089002E053 +:10F9F000001000000000000018052400B12822407B +:10FA000008B082640439412E480A90020418A920E3 +:10FA100022424A90022C0489042B4802D002B40AE4 +:10FA20008D8023C048D002C60040000000000000C6 +:10FA3000080404808120A048281002C400B1242AB0 +:10FA4000400812428580A120A048089002440095F9 +:10FA50002C2D5A0A728214A085A8214A085282C20B +:10FA60000100000000000000B80D4140F8503200D5 +:10FA70008C05036140F8512E000A85022000E850F1 +:10FA80003214068517A000C8203A080E8203A08011 +:10FA9000C82032082CC203EE035000000000000012 +:10FAA0009819F440FF103F440BB003E400F9103DF7 +:10FAB000400FD103F4589D103F444FD003D500F9B7 +:10FAC000003E408D9003E4B8F928BA6A0F9003E62F +:10FAD00006700000000000001801E700FD883E608D +:10FAE0008FD0032401DD8073400FD803A604CDA27C +:10FAF00033781CD0033401F5883B680CDA47378033 +:10FB0000CD8832620CDA03060070000000000000AD +:10FB10003810E380B8802E140B0A822280B8F8A235 +:10FB2000000B8FA383E088EB22A9088812A005B8F8 +:10FB3000002AAA88801362828880222888A4020E64 +:10FB400004300000000000000805C500B10A2C4187 +:10FB50000B10060420A10000408B1046C401911137 +:10FB600024586890C20400B100A85009140A0595F1 +:10FB7000A108A04228110A02017000000000000044 +:10FB80001815A418B9202E500B90062409B900228C +:10FB9000408B9102840099642440589002A420BBB9 +:10FBA000002A4009B0020501A900224088920206FD +:10FBB0000460000000000000A015E600F9403E408F +:10FBC0004F980B2480D90022720B9803E484D9004B +:10FBD000B6700899022400B9002A400D94C225008D +:10FBE000A90022400C9403280470000000000000CB +:10FBF0002801A680F9083EC00F9143E400F9003EB9 +:10FC0000500F9803A500E9003A640F9003E400F94F +:10FC1000003C406E9003E420D9003C400F9082CA23 +:10FC200000600000000000002810A000E8003E0076 +:10FC30004F840B2000F80036010E8003E000C8401E +:10FC400032102D8003E054C80036100F0483E050BA +:10FC5000D80412000C000B0A042000000000000071 +:10FC6000280528008E422EA28BEA022808BE89377A +:10FC70008448E01228028EC023B04D6062F80086EE +:10FC80000023800BE002F8000E00228008E4020A44 +:10FC9000004000000000000028054C00A3002C805C +:10FCA0001BB09A4C109B8024C00A30000C049B208F +:10FCB00020D60830028E08A30424C0193402C707D6 +:10FCC000AAA4A0C04834020A0050000000000000AE +:10FCD000A0010E0087002DC00B40025C40B314252C +:10FCE000E0087A029EC09240A000496002CE028ED7 +:10FCF0000121C08B5402C408864021C88810022804 +:10FD00000040000000000000A8081EC0E4803DE2A2 +:10FD10000F58035E90B6A235E00E7C231C00D680FF +:10FD200031E0847803DE00C78035E00F6803DE0031 +:10FD3000E38033E82C78032A020000000000000072 +:10FD4000081DAC90FA007E400F9003AC01FB003C14 +:10FD5000410F300B2D04EB013EC00EB003EC00FA56 +:10FD6000003FC00F8003EC00E9603EE40F9003C247 +:10FD700006600000000000000005FE20FF903E200D +:10FD80000CA9072E44C99130A00CB8632F44CBA115 +:10FD900036208CF8033600CF8233E00CF8232E0097 +:10FDA000CEC03BE00C6803000070000000000000C3 +:10FDB000A8119C84B3542CF428BA8A3E4081A0290F +:10FDC000B00F7842AE00839033E80DE100854082A9 +:10FDD0002423C60D71035EE087002BC10D44022A67 +:10FDE000046000000000000000009C0835146DC095 +:10FDF0008872325C8084302B880A70425CA891083B +:10FE000025C80970024C22830A61C009200204003F +:10FE1000870021C0086002000020000000000000F0 +:10FE20002014CC10B3856CDC0834024D21810028ED +:10FE3000024A3112EF0C91C220F00830428E00824B +:10FE40004020C8192802228183C028D409000A084A +:10FE50000430000000000000A815BC00FBA03EC05C +:10FE60008C04127D10CF023A5008C0427D525801D6 +:10FE7000362269D0132A00888232F009B8822F0016 +:10FE8000C9C823C00C8A032A0460000000000000D7 +:10FE90008000EC00B9403C504F8023AC12FB002A9C +:10FEA000C06D8013AC00E804BA100F8003E800F3C3 +:10FEB000083C800F9083EC04F9602CC20F8083E033 +:10FEC00000300000000000000110DC00EC2C3FF0CE +:10FED0008CFA8BBC00FE003F000F79033C00CE087B +:10FEE0000BC20CF003BC00FC0033408C7A033A00D8 +:10FEF000C50033C04CC803004430000000000000BF +:10FF000081046C0088C02EE00894022C00BB80663F +:10FF10003016B0022C00DA4C22F008F003EC00EBB3 +:10FF2000C022680094022C02A98022C0080C02A002 +:10FF3000401000000000000080052C00AB042EC023 +:10FF400008A4062C04AB102E604380826C018180D3 +:10FF5000280A089100E000B88002E00880022D80A5 +:10FF600088C022C00882022000400000000000007B +:10FF700008040C0080442CC828A0220C04B3262CB2 +:10FF8000C88801060CE09120200C380422C048A348 +:10FF900042A0810800020C80810020C0280002825B +:10FFA0000100000000000000000D7C00A9403E445C +:10FFB00008B1032C40EA492E0D0BB6137D80C940D1 +:10FFC000BAD00CB403AC00F80032400C800B200017 +:10FFD000C500B2C00C800300035000000000000008 +:10FFE000A01DFC04FC003DC50BF100FCD0772937B7 +:10FFF0000C8E7403FC08FD693FD80FF003BC00EFC2 +:10801000003F4007C003F040FD003FC00FC003E831 +:108020000670000000000000C00DFCC0DC803FC8EE +:108030000F48037C20FF6837E00EF1039C00BF204F +:1080400037E00CC8133C40ED60BBE42C434B70A000 +:10805000CC2C3F090FD843700070000000000000D6 +:108060008000EDC0B8802FF40F98023F00BF42227D +:10807000CA08F4023E00BFD0226028880A3D808DE5 +:108080004022C80881022180DBC02EA50B98422027 +:1080900004300000000000008805CC10B0002CC0A7 +:1080A0000B2002CC00B32026C08A36128C41B300CC +:1080B0002E400800020D81A13022C889A24208206A +:1080C000B0002C400B902662017000000000000000 +:1080D000C015AC00B8502EC00A9002AC00BB002204 +:1080E000C008B0622C10BB042AF04A88020C008140 +:1080F0000022C009B8802600B8802E210B900230E3 +:1081000004600000000000008015EC00D8C03EC0F4 +:108110000B8003EC00FB0036800EB003AC00FB00CC +:108120003CE00C0C032C00E90010C00C8C03060092 +:10813000F8CD3E220F18034004700000000000003C +:10814000E001BC00FF003EC00FF0037C00F7023FDF +:10815000E40F70037C04B70037400DC003FC00FD42 +:108160000037D00EC043F400DF003F808FDA03F801 +:1081700000600000000000004010AC00F8103AC0A1 +:108180006DA613EC00CB003AD00FB0032C10DB101F +:1081900036D80D8403EC06C9083AC00E8603A860E1 +:1081A000F8203A400C900354042000000000000026 +:1081B00098053C00BB4023D00830023E10AF0020A1 +:1081C000C00BF0023C008F502EC8068A02FC008DC6 +:1081D0002482D60832022D083A4022800D90036294 +:1081E0000040000000000000E8054C00B02028C25C +:1081F0000804028C00130228C00B30020C3093805C +:1082000024D0092002CC00914008C02A1402810029 +:10821000900068000818023A0050000000000000BA +:1082200070011E00B4A021E008C8129E00B3822194 +:10823000E00B7A0A1E0097802DE10A4802CE409595 +:108240009029E40858029A00B78821E00958025C96 +:1082500000400000000000004A000C00F08038C41C +:108260000C25038C20930038C40FB0030C80D3007E +:1082700034C00D0413CC0899002AC00E21038804D1 +:10828000F30038C00C11831202000000000000004F +:108290004215BC00F4003FC30EC0031C00AF4A7F70 +:1082A000C40FB203FD01EF103F840FC003FC00E9CF +:1082B0000037C20EF1477C00F7003DC00F5003D0DD +:1082C0000660000000000000AA15EC08F8003ECA95 +:1082D0000F9003EF21FB807A408FB2A12F00CB607B +:1082E0003EC00FB003EDA0E93032C02DB003E40072 +:1082F000F8003E000FB003EA00700000000000002C +:10830000C8919D00B4012DC80B7002CC808F202134 +:10831000C08B76035D00870A2DC00B4022FD008DC7 +:108320001023C8085012D400B7002DC00B7002F201 +:10833000046000000000000081009E00B4802DE079 +:108340000B7C02DE40A7822DE00B3A028E00879064 +:108350002DE00B58025E00A5A265E0086882DA00F5 +:1083600095802D600B7802E00020000000000000E6 +:108370000884CC00B0092CC00B3802CC0083002E3E +:10838000C00B30424C0083002CA00B0402CC0081B7 +:1083900000A0C008B006CF80B3102CC40B3102C3BC +:1083A0000430000000000000E805A800FE803E80C8 +:1083B0000FE813E800EA003FB00FA003A802C200D4 +:1083C0002F880FE003E800EA0036000CE003F920F4 +:1083D000DE803FA04FA803FA046000000000000008 +:1083E0004800E000F8103C100F8083E100E8002214 +:1083F000060F0013E001F8003E000F8083E000F854 +:10840000003E000F8423E000F8003E100F8003D2EE +:1084100000300000000000000800E400F9103E44B5 +:108420000D9003E400F9003E400C90122400F91076 +:1084300032408F9003C400C90032100C9C0124000C +:10844000F9103E700F9002C20430000000000000DE +:1084500080146400B9C02E48089102E400B9002ECF +:10846000400D90036700B9802A600B9902E40081F7 +:108470000022402C90122520B9482E520B9402E085 +:10848000001000000000000018052400B9002E4074 +:10849000689046E400B9002EC0089002A460B900BC +:1084A00022480B9006E4028900A040089002A61022 +:1084B000B9000E400B9002C6004000000000000012 +:1084C00008040480B1002C48081002C484B1202C98 +:1084D00040091202C480B12028400B1002C48089D8 +:1084E0002020404B120A8484B1202C488B1002C2F9 +:1084F0001100000000000000B80D6140BA002E001D +:108500000C8003E808F8503E140C85032000B800E6 +:1085100032000FA003E140C85032140CA503A14063 +:10852000F8003E000FA003EE035000000000000022 +:10853000880DE440FD003E440FD003E440B9113FF4 +:10854000400F91036444F9103F400FD003E440FD15 +:10855000103F108CD1037440FF103F440FD003E64E +:10856000067000000000000008056620ED00336979 +:108570004D50435600F9A034400F9A0B3400DD8073 +:108580003B400B5003E400F90032E00ED003F4004E +:10859000FD003F400CD003C600700000000000004A +:1085A0007810E280880422100B80022009B8F022A3 +:1085B000000B8E12A000B8522E000B8002E005B80E +:1085C000AA233E0D8002E000B8003A00088002CEE7 +:1085D00004300000000000004805C420A900A444A5 +:1085E000099002C500A1082C400B11820400B100C3 +:1085F00028400A1042C400B500A140081002C4007F +:10860000B1012C40081020D20170000000000000D1 +:108610001815A400890422400B9000AC0039002AF0 +:10862000400B1002A400B9002E480B9012E400B9D0 +:10863000002160099222E428B9000A50089006C679 +:108640000460000000000000A015E400E9003640CE +:108650000D9003E400F9003E480F90032400D90078 +:108660003A780E9803E400B900B2400E9223E60077 +:10867000B9503E702C9003E8047000000000000028 +:1086800068018400F9003E404F9C236400F90436E1 +:10869000480F9003E400F9003E600F9203E400F9F4 +:1086A000003E408F9083E444F90078640F9003DA31 +:1086B00000600000000000002810A000F8003E004C +:1086C0000F8203A040E8003E000D800320C0C88058 +:1086D0003E120F800360007C0033000D8013E01019 +:1086E000C8643E080C8203CA042000000000000099 +:1086F00028052800B6E00FA00B60823800AA002EE3 +:108700008008A042BA00AE202F880BE5022800BAEC +:10871000D8378008EC02F8048E002F900DE002CAD2 +:10872000004000000000000028054C00B0242C6030 +:108730000B38028E80AB002CC00930020D0800807F +:108740006CD00B3402CC00B8C02000483412CC40AE +:1087500083002CE00A3502CA00500000000000002F +:10876000A0011C40B7002D028B60029E0087202FC5 +:10877000E00872029E00A4002DC00BF8029CC0B35A +:1087800002A5C0085086FE0087002FD0097002E8BD +:108790000040000000000000A8081E00F4803D20FA +:1087A0000F58039E0067803DF80D38021A10448070 +:1087B0003DE00F5803DE20B48033A02C6803D600C0 +:1087C000C7813DE00C7803EA0200000000000000D1 +:1087D000081DAC08F8003E008F80036C003B123E81 +:1087E000CA0FB503C800F8047EC00F90036C80FB6D +:1087F000043A400F9023C800F9013CC00FB003C2F7 +:108800000660000000000000C005FE00AC9031488A +:1088100008F803FA00CF803FE00CFC133E04FC8014 +:1088200035A00C7803BE00DF803B2024F8032E40E7 +:10883000CF8033E003F903D0007000000000000097 +:10884000A811BC0080000100087202D00087002D32 +:10885000C80AF0029840F50061410074021C00B49F +:108860000021C80860023E20860821D80F5002EA85 +:10887000046000000000000018009C00A40021001B +:10888000085002D80097002DC08871021400B00073 +:10889000259008C0829C40930029A1886002141290 +:1088A000874029400B6002C4002000000000000047 +:1088B0006014CC0080D0A000081C02C00093002CE3 +:1088C000D00AB0268000B30024E40808028C00B06F +:1088D0000202410808020301810028421A0042D81E +:1088E0000430000000000000F815BC00E8C0328031 +:1088F0000CB503E4009F003DE00CF00B2400F800F1 +:1089000036E00C2503BC05D8022A0008BA022A006A +:10891000C1023A508B9003EE04600000000000009A +:108920008000EC00FB083E800FA103EC04EB022E5C +:10893000C60FB0174400E8003A400F80026C00FBFD +:10894000003EE00F9093E100D90026708F9001E186 +:1089500000300000000000000010FC00FC03372481 +:108960000DF803E000FF003FC18DF00B3800CC0094 +:108970003FC00FFA033C0CFC043B800CA003942086 +:1089800089053B004FD023C00430000000000000E8 +:1089900080046C00B006201388A802EB00BB002EF8 +:1089A000C008B0022A00A8802EE00B941A2C00BB4D +:1089B00000A240299802E200A98422200B9802E03C +:1089C000001000000000000080052C00B80022000C +:1089D000098202E600BB002EC00BB0022600888090 +:1089E0002EA00BA0022C00B3002A00099802EA2056 +:1089F000A9802A609B9882E00040000000000000EF +:108A000008040C00B8002000090802C400B30026C6 +:108A1000C0003002000081002C410B00020C00B0AD +:108A20000020C00B0002C880A80020410B1002C229 +:108A30000100000000000000000D6C10F850B200B2 +:108A40000D8003E000FB003DC00DF0132402C806BA +:108A50003E800FA0033C04FB0078800CA003E400E0 +:108A6000E9001A400F9003C003500000000000000E +:108A7000A01DFC00F4203F000EC002F001FF003FEB +:108A8000C00FF023F000FD003FC00FC003FC00FC4E +:108A9000003F409CC003F040FD003F400FD043E842 +:108AA0000670000000000000C005F000ED23B7488C +:108AB0000CE1C37CC0DD8037E00FCB03FE08FC284F +:108AC0003FF01CFB237C01FF1477E24FE8237C007E +:108AD000C48033482CF822300070000000000000F1 +:108AE0008010E0E0C9C0225B8896222D00892222F6 +:108AF000CA0B9E22E2A0B9612CE0889F023D85BF8F +:108B000060265048A0023C008800225008B0022095 +:108B100004300000000000008805C080B11020442F +:108B20000BB202CED081082CC00B01028C08B30816 +:108B30002CC90810628C60B33224800AA0026C0336 +:108B40009A01264448B04262017000000000000013 +:108B5000C015A4A08B0222E00BB062AC9899002A49 +:108B6000C20B9806E400BB022EC00891422C10BB39 +:108B7000006E800A80026C001B00064048B80A7034 +:108B800004600000000000000011E700A1007678FA +:108B90000FB003E810D9003ED04B9E13AC08B8A02C +:108BA0007EC608A8022C01BB0026304E20034C18BC +:108BB0009980B4404C3A034004700000000000006B +:108BC000E001B200FDC53BC04CD0036A02ED0633A4 +:108BD000C40FD053F800FC907FC10F7803BC04FF92 +:108BE0000037640CF103A400EDA13B400BF083B807 +:108BF000006000000000000040108C00CB203E719F +:108C00000FB3039802FB0236480F9003EC20F800E4 +:108C10003ECC0484032C00DB043C100FA003EC00CA +:108C20009B0032400C9003D00420000000000000A4 +:108C300088052C028B482EE00B34036B008BF52249 +:108C4000F20B9C03AF00B8502EC008B0027C008F1E +:108C5000000E5D0B8002F54083502354089C02E611 +:108C60000040000000000000E0044C0081812E4024 +:108C7000032C020433990020F04A2880CC40B00035 +:108C800026100820024C0083002CC0092002CC00D2 +:108C9000A00228400808027A0050000000000000EE +:108CA00020010A0085802DF80BDA02D64085A0212C +:108CB000E00B48069204B5802D210800024E008783 +:108CC000A42D600B6802DEC2AD902B60285882DCB8 +:108CD000004000000000000048084C40C3102C6C0D +:108CE0000F300386A2F9B0B0E00F2983CE44F380A1 +:108CF0003CAC0C30030C00C3003CD50F2003CEC1AC +:108D0000E010B8400C0003D2020000000000000098 +:108D1000C01DBC00EB003ECC0F32036408F9003BE1 +:108D2000900FF043E440FB343F8107D103AD20EBCB +:108D3000207FC40FE103FC50CD1035400FD003D08D +:108D40000260000000000000A805E404FD043D40AE +:108D50002D30023C00C9013EC04FB843EC10FB006F +:108D600032400FA023EC80CB3632804DA8032C106C +:108D7000CB0032400C90036A00700000000000003D +:108D8000C8119008B5002DC0085002BC0285042D02 +:108D9000C08E6006D804B70421400B7002FC80AF7F +:108DA0002821C00B70020640870021500850023273 +:108DB000046000000000000080009E20B7802B703F +:108DC00008F8061E0087802DE00B7032DE04378421 +:108DD00025E00B6806DE80878021A11B68021E400B +:108DE0009F80206008580220002000000000000042 +:108DF0004814CC20B3002C8088B4228D0083902CA2 +:108E0000C00A3802CE08BB2024D00BB302CC00A38A +:108E10000060D20B202A04089350204008170A0251 +:108E20000430000000000000E815BA00BAA03F843A +:108E30001CE00B38408E062E800BE303F880FEE426 +:108E4000B7900FEC02E8008A00A3A009E4032A020D +:108E5000DEC0F3800C6C033A0460000000000000E8 +:108E60004801E000F8403E000F8413E000F8002EB7 +:108E7000300A8403E004F8003A020F8013E000F89F +:108E8000003E040D8083E040E8203E002F8003D2A6 +:108E900010300000000000000810A400F9003C643D +:108EA0004E90832480C90032E00F10032500F900A2 +:108EB00032440F92236400C10032400C9013E4004E +:108EC000C90022400C9003020430000000000000A2 +:108ED00080046400B9202E404896222500D9C0A203 +:108EE000700B98022400B940A2704B90022400D964 +:108EF00000A2402C9422E4028900A240289413206E +:108F0000001000000000000018012400B9002E40ED +:108F10000A900204008180A2440B910225001940AE +:108F200062400BB402440089002040089082C401D2 +:108F300083022840489082060040000000000000A4 +:108F400000040580B1006C5108141A05009300203C +:108F5000408B14020500B12020500B1406048091B0 +:108F6000202040091002C4A88100284A08904A42E3 +:108F70000100000000000000B80D6000F8003E0095 +:108F80000E80032801C85032948BA0032000B050FB +:108F900032800F80076151C85022000C0003E0842A +:108FA000C8043A080C00032E035000000000000023 +:108FB000989DF440BD413F500FF403F510FD003E75 +:108FC000400FD403F400FF102F404FD440A448F9C1 +:108FD000123F5A8ED283F4A8F52C374A0FD283A6BB +:108FE00012700000000000001805E680FD283F4CCC +:108FF0000F50033C44CD403FD00DD0021401FDA0E2 +:10900000314003D003E789F9907E500C9403E6C009 +:10901000C910326D0F9102C6007000000000000000 +:109020003810E080B8012E0C8B8482204288A06E1C +:1090300020088003600098E82200098002E3C0E86D +:10904000D02E28088A23E284D8A0223D0BC802CE65 +:1090500000300000000000004805C5B0B1002C48F9 +:109060000B13020402B1202E40881022C400B11458 +:1090700024400B1052C400B1212D480A5202D500E1 +:10908000BD00AD400B5202D2017000000000000094 +:109090001855A500B9822E498BB012241099022EC2 +:1090A0004008B200650099802644099102E409A9AC +:1090B000042E460AD402B400BD402F400BD002C695 +:1090C0000460000000000000A015E740F9802E6257 +:1090D0000F9C42240099012E682C92026400B94032 +:1090E000B6600F9A03E400B9002E703E9906E402C0 +:1090F000F9003E400F9803E80470000000000000F3 +:109100006801A600F9003E401F12ABE400E9903E62 +:10911000490E9803E400F1003A400D9803E400F989 +:10912000013E60059013E400592032408F9103DA2C +:1091300000600000000000006810A000C8083E01A8 +:109140000F84630022E8203E130F8403E1C0D84C53 +:1091500032000C8443E000F80022100F840300006A +:10916000C800B2000CC0030A042000000000000088 +:10917000280528008E002F864BE00239088E202D0E +:10918000900BED92F8028EE0A39808E002E808BA8E +:1091900000628008A00228000280028048E0034AA2 +:1091A000004000000000000068054C0083102CF017 +:1091B0000A142A0D1AB30124D00BBC32CC080300C8 +:1091C00020C80B3002CC00B30222C00930020C11BF +:1091D000830020C02820020A005000000000000088 +:1091E00020011E0185002D000B7002183286002D13 +:1091F000C00B6016FE04860027A08B7042DC80B78F +:1092000080210108F80A1800860820A008E80A68EA +:10921000004000000000000028083E02C6803DE03B +:109220000F48030604F58235E00F7803DA00D38097 +:109230003160077803DE20F3B081E04F68070E024B +:10924000CF8031E00C78132A0000000000000000FD +:10925000081DADA0F9003F000FB053F810A9003E63 +:10926000000F8001EC00FB023AC00CB003EC00FBE5 +:10927000743C000F2003E800FA003E800F3003C268 +:1092800006600000000000004005FE028F8035E00F +:109290008DD9032EC4F68032A40CB803DE00CF9023 +:1092A0003CE40CB803FE65FF800FEC8FF803FE0072 +:1092B000C58033E00F68031000700000000000005C +:1092C000AA119C8084B0202029730A0E82A2A0A239 +:1092D000A04F3B038784B2802CA00A7D02DE80F77A +:1092E000202506087002C840840035800B60036AA0 +:1092F000006000000000000000009C10863827C0BD +:1093000049540654401D2021CA096140F880B72005 +:109310002F00897012DC81B7042DC90A6002CC00CD +:109320008D002DC00BF8020400200000000000009A +:109330006014CD288000240009B0224C02A1012035 +:10934000301B2302AF20B3082C801B3000CC04A3B9 +:1093500001263008AC22E80280082E804BB4025867 +:109360000430000000000000A815BC108B8036F00F +:109370002DBC0B6C01DA0422407D9422E400AB4446 +:109380002EC009B802FC00BF003EF0CA9202E402FF +:10939000CB006E400F84012E04600000000000002E +:1093A0008000EC00FB003AE02EBC039808EA40364F +:1093B000438C9003A4442A403E100EB583EC14FB6A +:1093C0000026000E9203E040FA0016000F8013E022 +:1093D00000300000000000000110EC02FA803FE2C3 +:1093E0000FB00B2400EF92BBE01CD0037400CF053C +:1093F0003B400FC8035C00CF0032C24DC123344054 +:10940000CF0017440CD1830004300000000000009E +:1094100081046C008B842E540BBC0A29808B803213 +:1094200000089C03A700AB842E7C0B80022C10DB71 +:1094300001360008800220008200220008900224E9 +:10944000001000000000000080050C0089106690EC +:109450000BB8026E12A34120040A9822E200891977 +:109460002EC04B31226C08830022C00990022400D8 +:1094700089002A400880022000400000000000000F +:1094800008100C0080202C0E1B300204418020208C +:10949000121816420050A0402C881B30020C8193F9 +:1094A00000240008102A000A8800280028000A0268 +:1094B0000100000000000000000C7C11E80026986C +:1094C0000FB013210CEB603AD82884A2E180C820A9 +:1094D0003E5E1F82037C00CF0032C04D8007250016 +:1094E000C90032400C900300015000000000000051 +:1094F000A111FC00F8131E000BF001F0D0F9191FA8 +:10950000084FC013A100F8623FC00BC407ED00FF75 +:10951000003F000FC023F0A0FC0033000FD003E891 +:109520000670000000000000C005FC00FF0C3F209A +:109530000CC9033200CF383FD00F4803FCA0CE2225 +:1095400033000FC1033C00FF003DC44CC0238CE43A +:10955000FF10372008F103F0007000000000000049 +:109560008010FE00BF802E74052202A210DF612F42 +:10957000D08B90023DA4AA9022F40B07121D20BBB1 +:10958000C02FD8889782FD80EF72220828F623E04A +:1095900004300000000000008805CC40B3002C001F +:1095A0000882022200830108CC8B2082CC0090002C +:1095B00020004B12020D80B3402CD80820428C8032 +:1095C000B3202602183326E20170000000000000DC +:1095D000C015AC09BB002E60088002A2009B002EC3 +:1095E000C00BAC022C00BA0622C20B9402AC10BB1A +:1095F000002EC108A802EC00AB00220008B006F063 +:1096000004600000000000009015EC00FB043E60C8 +:109610002882130E08CB003AC00F8C03EC11DB201C +:10962000B2904BA80B2C00BB002CC00C8813AC00D4 +:10963000F300360648B012C40470000000000000B9 +:10964000E001BC00FB083D408FEA01F400FF012F60 +:10965000C00FD022FC04AF003FC08FE9037C00FFA5 +:10966000003FC00F9043FC20EF023F008FF003B893 +:1096700000600000000000005010AC08EB00124039 +:109680000F90032820AB003AC08F8583AC10F350B5 +:1096900032904C34136C00FB003EC00C98032C40FD +:1096A000EB8032120DB00B500420000000000000CF +:1096B00088013C100F05A2500C100222108F0023CD +:1096C000C00B88123C009B8222C008B0023C008F75 +:1096D000A02FC008B0023C088F02200008F003262B +:1096E0000040000000000000E0054D20930020B283 +:1096F0000B10020100A30068C00B8402AC00B38011 +:1097000020400A30024C00A3042CC00800020D00C7 +:10971000A3002024083002380050000000000000A0 +:1097200070011C20978023600878123A00839129E9 +:10973000E40B59021E00979020FC0A78021E008755 +:10974000902DE01959021E80838061A008780218CC +:10975000004000000000000048080C40D3323006F2 +:109760000F30030464E30138C41F30078C18F10084 +:10977000304C0E30034C00E3002CC00C20030E00D4 +:10978000E30032080CB103120200000000000000E8 +:10979000401D9C80EF103D444FF107CC00FF083680 +:1097A000C6CFB003FC009700BECC0DB103FD04FF93 +:1097B0000C3FD29EE04BFD20FF023F800EF013D005 +:1097C0000660000000000000A815ECC0CB283EC0D9 +:1097D0000F8003EC00FB0132E90C28032C00FB0096 +:1097E00032C00CB4832C01EF00B2C80C20036D0012 +:1097F000CB103E000FB203EA007000000000000032 +:10980000C8919CC487602DC00B6002DC00B7122099 +:10981000CC0A70021CC0B300A0C0C870221C80B764 +:109820002421C84850020C8087102D400B7282F210 +:10983000046000000000000081008E0287802DE09F +:109840000B7812DE00B7A021E008F88E1E40B78822 +:1098500021E00838021E40B3A120E848F8825E02E9 +:1098600087802D220B7902E000200000000000001C +:109870000804CC0483022CD40B3002CC00B300A02B +:10988000C08A38060C00B38020E14839122C00B39E +:109890000022C008B0826C0083002C480B3002C24A +:1098A0000430000000000000E805A800CA003FA046 +:1098B0000FE403D800FA0032800CE8032800FA40D5 +:1098C00032A82CA0092808F20032800CE4036800BA +:1098D000CA003F800FA003FB0460000000000000EE +:1098E0004800C000F8013E120B8003E040F8003E43 +:1098F000004F8403E004F0083E004F0003E000F84E +:10990000413E002F8403A000F8003E000F8003D2E8 +:1099100000300000000000000800E600C9123E50C0 +:109920008F9083E420C1003A410F9003E400F900D6 +:1099300030680C90032400D9003A400E98032400AC +:10994000C9903E690C1003020430000000000000C2 +:109950008004674A89802E500B9002E480A900227F +:10996000400B9002E400B9012240089002241089C3 +:10997000002240089302242289422C604890022051 +:1099800000100000000000001815240099002E406F +:109990000B9002E40089002A400B9002E400B90019 +:1099A000234008D002240099002A400A900624404F +:1099B00089412E400890020600400000000000008F +:1099C00008040C8091202C480B1002C400A1202018 +:1099D000480B1002C480B120A14908524A0480817A +:1099E00000204848120A048081202C4028120202DC +:1099F0000100000000000000B80D6008D8043E809F +:109A00000F8503E000C0503A140FA503E140F802AF +:109A100032802CC5032140DA003A140E85432140E0 +:109A2000C8523E140C850B2E0350000000000000AD +:109A3000881DE444E9103F444FD002FC00F9123E77 +:109A4000440FD003E440FD103E444F9103E440E94D +:109A5000403E440FD103E440F9123F400F9103E62A +:109A600006700000000000000805F6A0FD80B3406D +:109A70000C10031400FDA032400FD103E400F58662 +:109A800033602C9A832404FDA822400D5043F40037 +:109A9000FD0033400F90030600700000000000003E +:109AA0007810E100B80022002880022000B800A24F +:109AB000000B8A12E000B80422140884022000B8C7 +:109AC000402000888002E000B800A2000B80020E57 +:109AD00004300000000000004805C400B1422040EE +:109AE0000810020400B14020400B1006C400B14031 +:109AF00024400810024404B1006040091002C40070 +:109B0000B10020400B1002120170000000000000A4 +:109B10001815A400B90222600894022400B9012299 +:109B2000400B9006E400B92026400894026408B96E +:109B3000002240089202EC08B90422410B100206F0 +:109B40000460000000000000A015E410F100326085 +:109B50000C940B2500F90032408F94D3E400F900F7 +:109B600036404C900B6400F10032400D9212E4003C +:109B7000F90032400F900B28047000000000000034 +:109B80006841A400F9003C408F9203E400F9003ED4 +:109B9000400F9C03E400F900BA402F9023A400F981 +:109BA00008BE40CF9003E410F1013E410F9003DA6C +:109BB00000600000000000002810A0C8F8003E036C +:109BC0000C8403A110E80032008C8583E000C00003 +:109BD000380C2C00036000C8003C000D80022010EF +:109BE000C820B2020F8003CA042000000000000059 +:109BF00028053910BE046FA008A0023A008200A216 +:109C0000808DEC03A8008A00238008A02228008E03 +:109C1000CC2F8008E8C2B8008E6023900BA002CA47 +:109C2000004000000000000028054E08B0722CD053 +:109C300028B0068C01A10220C0083802CC008300A5 +:109C400020C02930024C0081002CC00832020C4098 +:109C5000830020F40B3002CA005000000000000016 +:109C6000A0011C00B4002DD048F2021E2185202046 +:109C7000E80972028E808F0120C00972020E80876F +:109C8000002DCC1858028E00850021C00B7202E80E +:109C90000040000000000000A8081E00B4802DE075 +:109CA0000C78839A00EDD031F40C6A03DE82C78011 +:109CB00039E00DF8835EC2C5803DE80C68031200F0 +:109CC000CF8031E00F7E83EA020000000000000038 +:109CD000080DAC08F8003CC00FB303EC00F9023EDD +:109CE000C80FB003ED40FB00BE800EB303EDC0FB18 +:109CF000003ED22E8003EC02F9003EC00FB003C23A +:109D00000660000000000000C005FE00F09133E096 +:109D10008FF803FE00FD803FE00C78833F00CF808A +:109D20003FA00CF8033E00CD803FE00FF813FE107B +:109D3000FF803F200FF943D00070000000000000BA +:109D4000A8119C00B4C131C00B7002D410E5202FC3 +:109D5000C80F40035C0087002D800870021C4087FC +:109D6000102DC00B7602DC80B7002DC00B7002EA0C +:109D7000046000000000000010009C00B62221D00A +:109D80000B7082D840B5022DC08865020C00871880 +:109D90002C040830028C0285002DC00B70469010F8 +:109DA000B6002D000B7022C400200000000000004F +:109DB0006014CC08B200A4C00B3042C610A1002C25 +:109DC000C00A00024C0083002C080830028C00837B +:109DD000002CC00B1882C400B0002C400B3012D8ED +:109DE0000430000000000000F815AC0038003250CC +:109DF0000FF003E620FD003FC008D0023C02CB80FC +:109E00003C502CF00ABC00C9003FC00FBE03AC00A0 +:109E1000FA022EF74FF003EE04600000000000008D +:109E20008000EC00F1003AF00FB003E900F9013EC8 +:109E3000C00F9013EC00F9003E550FB0016C00FB11 +:109E4000023EC00F9073E000F8413E000F3001E089 +:109E500000300000000000000010FC00FC0033C0D7 +:109E60001FF013F008FD023FC08DC0033C00CFA0DF +:109E70003F800C70033C10FC0037C00FE003B000C3 +:109E8000FE003FC00CF0030404300000000000009E +:109E900084046E00B9C2A2F00BB042EB00B9002EF0 +:109EA000C00F18036C00D9812EB00AB0422C00BA42 +:109EB000C62EC00B8C02E300B8C03CA00DB002203F +:109EC000001000000000000080052F00B88022E292 +:109ED0000BB002E620B9002CC008B8020C008B00C1 +:109EE0002E3048B0022C00B9C02EC10B8802EE10F3 +:109EF000B9C02E2019B00220004000000000000070 +:109F000008040C00B00020C00B3006C00091002CEB +:109F1000C04980024C0491002C008A300A0C04B124 +:109F2000002CC01B00124910B1002E200930020283 +:109F30000100000000000000000D6C00B82022C0ED +:109F40008BF003E008FD003FC00CA0033C00CB00F9 +:109F50003E004CF00A3C00B90037C10FA003E000FE +:109F6000FA003E000DF00B0003500000000000005E +:109F7000A01DF001FC403F804FF002F000FD003FCB +:109F8000C10FC003FC00FD003F004FF063FC00FD6B +:109F9000043FC00FC003F080FC007B000FF043E8DB +:109FA0000670000000000000C005F800C81033046F +:109FB0000C40023400C8851FC02DD903FCC0DB282B +:109FC00037640FDB033E00FF253FC80EF203FE207F +:109FD000FFA437C40CC80330047000000000000068 +:109FE0008010E80088202200088812260489822E2A +:109FF000F448B802FCC498C2227C4B9D422608BF9C +:10A000001877E408F182EF00BBD022D80890836073 +:10A0100002300000000000008845C804A0002400B1 +:10A020000A00020C0082042CE0081002CC8083009D +:10A0300024000B1006C801B3202CC0293202C80826 +:10A04000B10024D00882026201700000000000000C +:10A05000C015A800A80C26000A80022C148A026EE3 +:10A06000E008B0024C08A80026200B9C02E400BBCC +:10A070000422C019B002E801BB1102C0889002F0AE +:10A0800000600000000000000015EC02EA40B6602D +:10A090002E980B2002C8023EC00D9803EC02DB880C +:10A0A000B6210F8803AC08FB002CC00EB043E5803E +:10A0B000F06036C00C01434804700000000000004E +:10A0C000E001BC00D6013B6485D903F00CFF003EE3 +:10A0D000C10FFC21EC00D7903B400F50033C00FF28 +:10A0E000003FC08EF003F440FD883FC02FD00278BF +:10A0F000006000000000000040108C00DA403C408E +:10A100000F10034800F9223CC20E9083EC02DB04DE +:10A110003A080F8487E800CB003EC40EB003ED0080 +:10A12000E8423AC00F800B1004200000000000003D +:10A1300088052C088A002E428B90022818BB4922E1 +:10A14000D038BC82FC00E8022262CB9C00EF60DFCA +:10A15000002FC00BF002EC00094037C00B90023218 +:10A160000040000000000000E005481011002CA095 +:10A170000B2002440090C06434283402CC00938445 +:10A1800028400B0800CE0093002CC20A3002C00009 +:10A19000B24022C00B20023000000000000000008E +:10A1A00070011A4085802DA00B68061680BD902591 +:10A1B00024187B42DE40A08021E00B6802D6009785 +:10A1C000902DE00B7802CE4092806DE40B7802086F +:10A1D000000000000000000048082800D1803C88F2 +:10A1E0000B22034E80F2A13C242A3903CC40D3AC8D +:10A1F00038C50F3082C800D3003CC00E3013C000F9 +:10A20000F10038C00FA0031A060000000000000093 +:10A21000401DB810FD343E800FE003EE0072003A9E +:10A22000000FB063EC40F8223EC00FF003D440FFB3 +:10A23000003FD20FF003EC00CF0037C00FF003D087 +:10A240000620000000000000A805EE00EB0036E04C +:10A250000DB0032000F08033C008B8032C80CB0081 +:10A2600032800FA0136E08CB2832E00DB483E200D9 +:10A27000CA003EE00CA803020070000000000000CD +:10A28000C8118C04830021C04870021000B702215D +:10A29000C04A70020D48D40035C00E6002DC00A731 +:10A2A0004029C0097202D410A6022FC808700212F9 +:10A2B000006000000000000080009E00A78020E0F9 +:10A2C0000A38021A00B58021E008F8225C818380F8 +:10A2D00021A10B78825A1083A020E80A7B02DA00C1 +:10A2E00097C02DE408E802080020000000000000EC +:10A2F0000814CC00831020C00A30020808B3702074 +:10A30000F80A30424C04931426C40A3802CC00A345 +:10A310000028C0AA3002CE40B3882CC028300A12D0 +:10A320000430000000000000E815A900EA80B690A3 +:10A330002F240B3904BEC033920CA00B6818CEC07A +:10A3400033800FE9437800CA0032800FA013F84829 +:10A35000DE003E800CE0023A002000000000000019 +:10A360004800E024F8003E120D8093B028F800BCAD +:10A37000000F8403A000F0003E020E8000E000F811 +:10A38000013E000D8003E000E8003E000F8003D294 +:10A3900004200000000000000810E400F900B27082 +:10A3A0000F90010400C9003E400C9803E404E90842 +:10A3B0003A480C9A03E400F90036400B100B268053 +:10A3C000F18032400F9003C2042000000000000022 +:10A3D00080046400B90022610B9002240889002ED9 +:10A3E000400D9A02E408A90022780D9406E410B901 +:10A3F0000022500B90022580B98036400B9002E07D +:10A40000000000000000000018052400B5002342F1 +:10A410000BD00EB40089042E60089102C404B90464 +:10A420002AC0089402E410B10026420A90022400D7 +:10A43000B92162400B9002C60040000000000000FD +:10A4400008040500B54021504B5006940281002CB1 +:10A4500060291406C500A1222051891402C400B14C +:10A460002020480B14020401B10004500B1002C25A +:10A470000100000000000000B80D6008B8003200C4 +:10A480008F8003B00088003E000C8003E000E804E9 +:10A490003A000C8002E000F85036000F80032004E0 +:10A4A000F80112004F8007EE075000000000000086 +:10A4B000981DE510F9403E500F94026501FD013DE5 +:10A4C000504F5013E500FD101F5007D443D400F93E +:10A4D000101E440F9403D500FD403E500F5283EEF2 +:10A4E00006700000000000001815E440F9603F44C9 +:10A4F0000FD0C3E430F9013E420CD003E780DDA069 +:10A5000033400CD003FC00C9903F681E9103340017 +:10A51000FD003E680C94030E007000000000000077 +:10A520003910E000B8422E090B8402E104BE002E6F +:10A5300010088022C280884022000A8002E000A821 +:10A54000D02E104B8A036000BA002E30088A028693 +:10A5500000300000000000004005C580B1606CD0F4 +:10A560000B1000DC0CB5002C41081002C5809110C6 +:10A5700068C0083002E40C81222C5008104204000C +:10A58000A1002C5A28900252102000000000000068 +:10A590001815A400B9002E410B9012F480BF002EB4 +:10A5A00040089002E400A96060420A9412E500A904 +:10A5B000002E400B90026420B9000E40099002C6A4 +:10A5C0000420000000000000A005E400F9003E4166 +:10A5D0000F9023E400F9003E400C9003E404D1C046 +:10A5E000BA700C9803C400C9003E400E9003254089 +:10A5F000E9403E400C10036800200000000000000D +:10A600006801A414F9003E400F9023E408F9A03C2F +:10A61000C22F9003C400D9803E700F9143E400F92B +:10A62000003E401F9013E620F9A03C404E90039A54 +:10A6300004200000000000002800A000F8003E02F6 +:10A640000F8013200CFC013E000C8003E000C8507A +:10A6500032000F800B2008F80032002C8043E040CD +:10A66000F8023A008F80030A042000000000000076 +:10A67000A88528083A000F804BA1022800BA822E34 +:10A680008848E402E800AE90A3900BE0003800BADE +:10A690000037A008A002F8009EE022800BA0234211 +:10A6A000000000000000000028054C1033002CD0F2 +:10A6B0000B14020C00B2912CD0083E024C008340D7 +:10A6C00024C20B36008C00B30020C009B002CE00BB +:10A6D000B3CC68C00B300202005000000000000044 +:10A6E000E0011C88B7252DC08B581A1C08B6002D18 +:10A6F000C0087402DC40A50025C01B78029408B78E +:10A700008025E30A7102DC00978321C88BF102489F +:10A710000060000000000000A8081F00F7E27DE0D4 +:10A720000F58431E18F6807CE02C68025E90C380B0 +:10A7300035E00FF8039E04FFA120A10D7803D60099 +:10A74000F78039F80F78030A0600000000000000C7 +:10A75000481DAC00FB407F410F1003EC04FA003EA3 +:10A76000D00FA003ED00E9002A000FB0036400FB46 +:10A77000403EC00DB003E400D30036C00F3803C222 +:10A7800006600000000000004005FE48CFC03360B6 +:10A790008CC843D600CC943FB00DF8037F00DF8017 +:10A7A0003F600FD803DE00CFCA3D600CF8133A4477 +:10A7B000DD803FE00FF8431800200000000000009B +:10A7C000A8119C008F1133C0484112C44884112C39 +:10A7D000EC2ABA033C40D7482D410B6002D400D785 +:10A7E000013DC00DF0035A0084182DC00B70036AA0 +:10A7F000002000000000000000408C08870021407D +:10A80000094002D400A4922DC80962825C0087002E +:10A810002DC00B5002FC0087002D040870021C8024 +:10A82000B5002DC00BF00200002000000000000069 +:10A830006010CC0083002040090022C700A0412CFA +:10A84000C14B08022C0093402C7C0B3802C720938C +:10A85000002CC00930024F84B0802CC00B32105045 +:10A860000420000000000000AA15BC02CF00B24086 +:10A870000D1003E824EBC13EC02D98137C0AC2439F +:10A880003EB00FA903E920CF003EC08CF0030D209D +:10A89000FAC03FC00F74012A0060000000000000F1 +:10A8A0008000EC00FB023A408E9003E8145B503CC1 +:10A8B000504E8403EC00F8403E80078103EC08F31F +:10A8C000003AC09F3003EC00CB203EC00FB023E81D +:10A8D00004300000000000000190FC00FF003F4039 +:10A8E0000FD0033820CF0832C10ED003FC00FE0881 +:10A8F00031E50EE4033A00FF0033800FF02B240013 +:10A90000CCA03FC00FF00300443000000000000066 +:10A9100080046C00BB003A690B906E0800834136DE +:10A9200040C888C6EC00884036800DA8036E50BB36 +:10A930000036C00BB0022400D9082EC00BB003E0D3 +:10A94000401000000000000080052C00BB002E60BD +:10A95000038002200089012258089822EC01AB00F4 +:10A9600022000A10022800BB0022400BB00228007F +:10A970008A002EC00BB042200050000000000000F2 +:10A9800008040C00B30028408B0002024089012417 +:10A99000D2281002CC00831024200808024E00B3F5 +:10A9A00004A0C00B3002088892002CC00BB002C279 +:10A9B0000000000000000000000D6C00FF003E00E1 +:10A9C0000F80022010895022D82E9622FC00EB40E6 +:10A9D00032C00A90032800FF0022000FB0032CA011 +:10A9E000C8003EC00FB003000610000000000000C9 +:10A9F000A019FC00FF0C3B000FC0027090FD003E50 +:10AA0000C90F96C3FC00FF003FC00FF003FC04FF1A +:10AA1000043FC00FF003EC00FC003FC00F7003E8E0 +:10AA20000670000000000000C005DC80FB283F002D +:10AA30000CC10BF102ED0037302CF103B240FF00E6 +:10AA4000BBC00F4806B200FC803BCC0CF00370800A +:10AA5000DF2833040FF40330007000000000000012 +:10AA60008010FF40BF602E210882022000A9282A02 +:10AA70000009FA022000BF5123D8099802E430B03F +:10AA80000023D008F5A225A48F423C100BB00A2069 +:10AA900004300000000000008805CC00B3082C0042 +:10AAA00028001AC084200024C84B3142C000930201 +:10AAB00020C6080006C081B3002CD8093202A0408D +:10AAC0009301244C0B3202220170000000000000B0 +:10AAD000C011AC00BB022E0A0880826000A8002EC4 +:10AAE000E01BB00262013B0022C1099002E200BB00 +:10AAF0006026C108B02A26009B042E210BB002302C +:10AB000004600000000000004011EC10FB003E104B +:10AB1000088413EC02A90436200FB003EE80FB007A +:10AB20003AC00CA003A28079401EC08CB0636A10AA +:10AB3000D30036A207B0030004700000000000003C +:10AB4000E001BC00FF003E204D41039C00FD20AB16 +:10AB5000000CF003B800F7003FC04DC903F400FF3C +:10AB6000003BC02EF000F000EF003F004B7003F8F8 +:10AB700000600000000000004010AC80EB007E1080 +:10AB80002E8403EC00E00032500FB0862500DB205D +:10AB90003AC00DB063E110FB4838C10F30032C04FC +:10ABA000FB0832C00CB00B90042000000000000035 +:10ABB000C8053C008F006429288003EC02E804A843 +:10ABC0005608FC07E0000FA0BFC00B9502A000BB19 +:10ABD0000537C089F00A0DC8BF082A8008F0023284 +:10ABE0000040000000000000E0054C01B30224E03A +:10ABF0000A30128003A300A80002B822C000B300EC +:10AC000028C10B04020800B94028C00B300203041D +:10AC1000B34420004A300238005000000000000019 +:10AC200020011E2017A065EC083802C241B3922B08 +:10AC3000640A38023601B7902DE003F8009A00B597 +:10AC4000802DE08978121E00B78029E00A7802087A +:10AC5000004000000000000048080C0073B024C849 +:10AC60004E300A8002E20038940E31A2C800730010 +:10AC700018C40500030000F30038C007B10300004A +:10AC8000F30130410EB0039202000000000000000A +:10AC9000401DBD00EF1026C803B103E000EA817833 +:10ACA000C50CB5E3DC00C3003EC10FF083B000FF6C +:10ACB0000037C00DF403E400F7003F400DF003D06F +:10ACC0000660000000000000A805ED10CB283EC083 +:10ACD0000DB013AC10FB003A8004B403AC00FB04CD +:10ACE0003EC00FA4B3E000FB8032C00FB003E80009 +:10ACF000FB48B2800FB043EA007000000000000083 +:10AD000048119C02874438C08D30024C00FF00215E +:10AD1000C00870039C00B35021D44E6202D000BF23 +:10AD20000035D4097022D800BF2221C00B7202D294 +:10AD30000460000000000000C0009E4087802DE0FD +:10AD4000097802DE00B68029A1287A32DE0037A019 +:10AD500025E0097806D200B78021E80B7902DE00F1 +:10AD6000B79021E00B7902F0002000000000000005 +:10AD70004814CC04830128C089B00A4F00B20020D7 +:10AD8000C4883016CF00BB0420C10A3206C200B30B +:10AD90000024C0093042EF10B30020C00B3002D2B3 +:10ADA0000430000000000000E815A8004A003E80C2 +:10ADB0002DA00BAA80FE002B800CA043FB30FA00D4 +:10ADC0003E800FA083FA04FE1822800FA003FA84AD +:10ADD000F20033A20FA003F20460000000000000A4 +:10ADE0004800E000F0003E002F8003A020FC023E5F +:10ADF000001F8403A000F8403E004F8001E040F8AF +:10AE0000403E000D8013E000F8003E000F8003D2AA +:10AE100000300000000000000810C600D9003640D5 +:10AE20000F900B0400C90036686C9403E420B990BD +:10AE300036400C9403E40029803E400F9003242008 +:10AE4000C90036400F9003C204300000000000002B +:10AE500080046650890020500890022409D90020FF +:10AE600048489006E40499A022400DB822640009E5 +:10AE70005032400B9002279089402A400B9002E00C +:10AE80000010000000000000180124009900664234 +:10AE90000AD0123400850026404A9002E401B9012C +:10AEA0002440589012C40029402E400B100A2480E0 +:10AEB000890526410B9002C60040000000000000FA +:10AEC00008040480812061480852021481952020E2 +:10AED000400A3602C400B12000484110424401A19A +:10AEE0000024480B12120480812028480B1202CA49 +:10AEF0000100000000000000B80D6000D8503600CE +:10AF00000E852321428C5434140E8002E140F85007 +:10AF10003614048003E144E8507E150F8503214276 +:10AF20004A0036140F8003EE0350000000000000BA +:10AF3000981DC440F9101E444E9103E440F9103F9F +:10AF4000C00D9103F400D9143E440F90037400DD4A +:10AF5000007A440F9103F440F9383F440F9383E79C +:10AF600006700000000000001801F680F9A43F6898 +:10AF70000E9E436780D9E43F410FD8430400EDC0E3 +:10AF800036400C9003E400D54032400C9003F400AE +:10AF9000DD0032402C9A03C60130000000000000A2 +:10AFA0003810E000E8C02E144D8F2223C0F8F0AA1C +:10AFB000000C8003A2A0D8822200088002E800D8FA +:10AFC000802A00088002E80888A83600488A82CED5 +:10AFD00004300000000000000805C500B1482E4004 +:10AFE0000A122244009104A4410A940624009142CA +:10AFF0002441091002E40191202440091002C401F7 +:10B0000091002C40091402C2013000000000000031 +:10B010001815A400A9002E404810022400B940AA27 +:10B020004018B002E40899002240199046E4809943 +:10B03000042E40099002E40199042650099002C6AA +:10B040000460000000000000A011E400F9063C408C +:10B050000A90036402D900B6500E90232601F9002D +:10B060003640299483E400D94836400D9003C70048 +:10B07000D1073A50CD9003E8042000000000000002 +:10B080002801A408E9003E408F9003C408F1003A6B +:10B09000688F9003A441F900BE400E9003E400F9CC +:10B0A000C038402E9003E640E9003E68069003CA8F +:10B0B00000200000000000002810A000D8053E007D +:10B0C00007800B2000E8403E100D82036000C8009E +:10B0D000B2008D8303E000D8503A001E8003E124C3 +:10B0E000F800B2000F8003020420000000000000FE +:10B0F000280538008A042F846AA00BE8088E003DDA +:10B100008088EC036810A601368008A800C8108E5D +:10B1100010228008A002FB20BE512A800BA00282D0 +:10B1200000000000000000002805412193002CF0E1 +:10B130003930060C00A300280828BC022C008380AC +:10B140002AC0083000CC009A8028C00A3002CD0006 +:10B15000B30462C10B30020A00500000000000007E +:10B16000A0011E0407112CD00A3222DCC187006D19 +:10B17000D00834027C00A70824C8087002DC800FC5 +:10B180000021C4087306DC00B20061C80B3A0288D3 +:10B190000440000000000000A8080A0057812DA00C +:10B1A0002D7C023E82E3E03BE00C78031E20C7804A +:10B1B000B9E82C7803FF80D6803BEC027A03DE00EE +:10B1C000F78131EC8F7C030A0200000000000000D0 +:10B1D000081DAC00FB001E8023B683EDA0DB643E9F +:10B1E000C00EB003EDC0F2003ED40AB003EC30EE66 +:10B1F000643EC007B0C3E800FB013EC80FB803C2FD +:10B2000004600000000000000005F600EF803BE055 +:10B210000FF8637E04CFC0B7200EF803FC00C78090 +:10B2200033F00CCC03FE08F7C133E04FF803B24013 +:10B23000FFA031E60CF803100470000000000000CD +:10B24000A8119C00EF0221402D70021C00F710296C +:10B2500040087022FCC0A7003DC0084002DC00B7D7 +:10B260004021C00B7002DA80B72429C648F0022AB8 +:10B27000066000000000000000009C00A700288479 +:10B280000B30020C00930025800A6102DC01A7103C +:10B2900024C0084082DC009F0025C40B7002942566 +:10B2A000B73223C41B700200002000000000000021 +:10B2B0002014CC0CA300200029300A0C00A3006C41 +:10B2C00000081042CD10AA00ACC0000402CD00BBA3 +:10B2D0001024C0033042C309B3002CD00A30021836 +:10B2E0000030000000000000A8158000EF003A4088 +:10B2F00007F0433C009FC0B6140E8006FC01CB0152 +:10B3000037C0ACB402FC00D90137C04BF013AE0813 +:10B31000FB0033D02EF00B2A00600000000000007C +:10B320008000EC00FB053E400F3003AC14FBA03A5C +:10B33000C00F8443EC01F9403EC00FA203EC21F999 +:10B34000003AC00FB003E420F000BAC00DB003E033 +:10B3500000300000000000000110F800D70135683F +:10B360006DF0033C01E70033C00DC003FC24CF02A5 +:10B3700037C00DD202FC00DF0133C05E70331C18F1 +:10B38000CF4131C20CF0034040300000000000000B +:10B3900081006C008B0022522AB0036C00AB0028A5 +:10B3A000C00A8C02EC108BE022C00F8002CC008B14 +:10B3B0008022C008B0022A10D98022C0C8B002E0A2 +:10B3C0004010000000000000800524019B00268042 +:10B3D00029B0620C00AB016A00089802CC009B8384 +:10B3E0002EC0CBB412EC038B8028C00AB006A2009A +:10B3F0008B0262C008B002E00050000000000000B4 +:10B4000008040C01831420000A30024C0083002A37 +:10B41000400A1000CC02930028C00A2002EC00036E +:10B420000020C00830160080910060C0083002C2C1 +:10B430000100000000000000000D6C00DB00368001 +:10B440002DF0033C00AF003A800D8003FC005B0050 +:10B4500037C0099003FC00DF0033C00AF003A420CA +:10B46000CB00B3C08CB0034002100000000000000D +:10B47000A01DFC04FF200F0027F003FC00FF002D9F +:10B48000000BD027FC00EF0037C00FC043FC00FFCB +:10B49000003FC00DF00BE000F5003FC01FF003E8D7 +:10B4A0000730000000000000C001F4C0FC227FC093 +:10B4B0000CD0433600C48134C01C8907F280CF8091 +:10B4C00033600F79033CE0CF0833480DC403F050DC +:10B4D000DC9037CC0FF803F0007000000000000093 +:10B4E0008010E990B8807EE488990A2608A9802215 +:10B4F000F42C9903A702898022340B9A037D00DF84 +:10B50000482B60080502E500822022C48BB002E0CF +:10B5100006300000000000008805C500B0102CC0F7 +:10B520002A0002A408A804E0800B0002C441B2046F +:10B53000A40A0BB0028C81832060509812128B8079 +:10B5400089002CC80B3002E20170000000000000EE +:10B55000C011AC20BB022AC00A8802A408A980A29C +:10B56000E11B9C22E600B84026300B9002CC0193F0 +:10B57000042A40399882EC148B652AC00BB202F879 +:10B5800000600000000000004015E700B8482E00F1 +:10B590000E88438400E3C136E80F9C12E280F3C0BA +:10B5A00036705FA823AC01CB0422404D8403E20037 +:10B5B000D8003EC00F9003D00470000000000000CF +:10B5C000E001B309FE103E810DC003740CFF003D85 +:10B5D000C18CD0831400CD203A400DCA017C00FFFD +:10B5E000001F400EC023F246FE8437C00FD803F878 +:10B5F00000600000000000004010AC00DD023D4093 +:10B600000E9003AC00EB483ED00C8063A208CA0049 +:10B6100032080CB003AC08EB003E400CD483582039 +:10B62000F94232C00CB003D004200000000000003A +:10B63000C8052802DB002EE0283A022E00DB6076E7 +:10B64000E00D8C02E000880236586815837C08BF44 +:10B65000002D60089002A900B30523C008B002F2D3 +:10B660000040000000000000E0054C1080000CC10C +:10B67000081C82060093C020F60A200208009300EE +:10B680002460093C020C0083002C60090112004078 +:10B69000B000E0C0083002700010000000000000A0 +:10B6A00020410A4086812DE058180A16A09780256F +:10B6B000E9197882D600978025A019F8025E00B7B4 +:10B6C000802D602848129600B48021E0287802C8B6 +:10B6D000041000000000000048080C0081303CC24B +:10B6E0000E00028400E34028E84C29030C00D3003C +:10B6F00034C40D31038C08E3003C460C2003008069 +:10B70000F20032C00C3003D2021000000000000032 +:10B710004019B800FF102FC00FC023C4807F103E17 +:10B72000C00FB103DC00E7003F8006F143FC00FFDF +:10B73000087D500EE123B408FE103FC40FF003D083 +:10B740000460000000000000A805E402CC003E00F8 +:10B750002CC0030401CB0033602C9013E80073006D +:10B76000B2C10FA003EC80FB283E541FD003FE02A1 +:10B77000C98032C00FB003CA007000000000000092 +:10B780004811800086002D800820021408870029B7 +:10B7900040087002DC00B70021C00B60025CA0977B +:10B7A000202D480B5002DC108D0021C80B7002D2F6 +:10B7B0000660000000000000C0009F0085812C6032 +:10B7C000185802DE20B78228605A7852DE10BF80F7 +:10B7D00021E04B7806DE40B7A02D699B7812CE00A1 +:10B7E0008780E1E40B7802C0002000000000000028 +:10B7F0004814EE0083002CC20836028C0883F068DF +:10B80000400A3E02CD40B30020E00B32064C009BC4 +:10B81000000C400B3002CD80830820C00BB102DA4F +:10B820000030000000000000E815B800CE083FB06E +:10B830000CE423DA02DE40BBB20EE243FA00FE0063 +:10B8400033900BE003E800FA003E810BE013F908A7 +:10B85000CE4032800FA803FA047000000000000000 +:10B860004800E02498083C040F000B6000F8402ECC +:10B87000030D8003E000F8003E060B8003E000D8D3 +:10B88000003C00038C23E100F8007E000F8003D20F +:10B8900000600000000000000810E402C9003E4003 +:10B8A0008C90032500E98032440F9402E420F900D3 +:10B8B00032700F9A43E400F90032400C1033241028 +:10B8C000F9013E400F900302042000000000000038 +:10B8D0008004640089822E40289002248281C0A2C4 +:10B8E000700B9C02E4003142A2600B9482E400B928 +:10B8F000002A400894A22500B9002E400B900A208F +:10B9000000100000000000001805240089642E408B +:10B91000089042A400896022420B9002E600B980A0 +:10B9200022400B9002A404B9002240289002240473 +:10B93000B9002E400B90020E0040000000000000F5 +:10B940000804058081002CC1481002A40281002057 +:10B9500040833402C400BB0020D00B1402C480B169 +:10B9600020A06818141A0D00B1402C500B10020AC8 +:10B970000500000000000000B80D6000C8003E0097 +:10B980008C800BA004E8003200078003E000F80080 +:10B9900032001F8003A140F85032000C80032000C9 +:10B9A000F8003E000F80032E03500000000000004E +:10B9B000981DF446FD403F5023D4137404F5023F14 +:10B9C000500FD403FD00BD002F500FD003E440F909 +:10B9D000103F440FD403F508FD063E500FD283E616 +:10B9E00004700000000000001805E640ED043E4829 +:10B9F0000CB283F400C10032408CD0033400FD004F +:10BA000037400FD003E620F9883D620CD803FE24AE +:10BA1000C1003E780FD00306007000000000000057 +:10BA20003810E10088402E1008C423A00888062A98 +:10BA3000140880036004B80022000B8002E200B802 +:10BA4000802E00088C02E38088022E380B88020EBC +:10BA500006300000000000000805C580A1C02D7060 +:10BA6000085042C400A90020E02A100A0410B100C6 +:10BA700024404B1006C420B1086E400B1682C4202F +:10BA800081002C500B928252002000000000000028 +:10BA90001811A400A9012E4028D020A404A9002A2E +:10BAA000401AB0122400B90C22420B9402E400B9EF +:10BAB000006E400B9602E41189206E400B90024606 +:10BAC0000020000000000000A015E4C0A9C03E5006 +:10BAD000089C83E402E900B2402A92122640F94011 +:10BAE00036700F9403E404F9013C400F9803E6021A +:10BAF000C9223E400F1002680470000000000000E0 +:10BB000028018604D9401C400F9223A4B0DB043CDA +:10BB1000C00D9A03E400F9003E440F9003E400F9DD +:10BB2000003E422C9023E480F9003E408F92039225 +:10BB300000600000000000002810A100C8203200B2 +:10BB40004CC08B2002C83132202D8403E104F84818 +:10BB5000BA000F8903E000C80032000D81132010E5 +:10BB6000F8003A000F8123020420000000000000CA +:10BB7000280528000E40228028A40219005280A225 +:10BB8000804DED82E800B64223BD0BE802E804DAFE +:10BB900000378008E0023A20BA0022800BA80A0A87 +:10BBA000004000000000000028054C00838060C0B9 +:10BBB0000829020D00924024C008B402CC00B30052 +:10BBC00068E01B3002CC00930124C06938026C008D +:10BBD000B3002CC00B30020A00500000000000002F +:10BBE000A0011C4083C020400828069C189C022409 +:10BBF000C0097002D400B70021C00B7002CE40977C +:10BC0000B0254008781A5800BFA265C80B780220FA +:10BC10000440000000000000A8080E028780B1A0C8 +:10BC20000C68031A08D69235E4287842D610F580BD +:10BC300039A00F7823DE30D3A235A04DE8035E0093 +:10BC4000F7D03DF80FF003220200000000000000D2 +:10BC5000081DAC00FB043E000BA0034804FA413A67 +:10BC6000500FB003E400F1003EC00FB003ED88FBBD +:10BC70004D3E000FF003BC08FB203AC00FB003C2DA +:10BC800004600000000000000005FE00DC80B3E05E +:10BC90000CD803CE00C8A031A08DE903BE00B2804D +:10BCA00033E00CE8437E040F8131E40CD803F60046 +:10BCB000FF803FE00FF803000420000000000000B8 +:10BCC000A8119C00B4403540085082DE80D49021F9 +:10BCD000E00D5102D440B6B02B900EE5029C40D747 +:10BCE00022195C0D7002D800B7202DC00BF0036A3A +:10BCF000042000000000000000009C009310218040 +:10BD0000085802DCC0940023D00870A0D420B502EB +:10BD100029800960820C00870225C0194002D400E6 +:10BD2000B7006DC00B700200002000000000000092 +:10BD30002014EC00B3C02001481802CC028144A0BA +:10BD4000C0893802C780B1002C094A0062AC09934F +:10BD5000012840193002CD10B3902CC00B3002C81E +:10BD60000420000000000000A815BC20DB6222E0D7 +:10BD70006CA003E400980032C0EC9823AE08FB08E6 +:10BD80003A780990037C10CF0026400CB003EC00F9 +:10BD9000FF803FC00F90032A0460000000000000F5 +:10BDA0008000EC20FB483C610FA043ED00F8243EEE +:10BDB000500F9083E400FB003A500F8043EC08FBE7 +:10BDC000003E400F4003F000FB003EC10F900360B7 +:10BDD00000300000000000000110FC00DDA03280F7 +:10BDE0000CE001FC00DC9139C03C40033400FF80D2 +:10BDF0003F000FD007FC00CB003D400CE003382093 +:10BE0000CF023DC00CD00308443000000000000009 +:10BE100081046C000140220028A002CE86836422A7 +:10BE2000F4088C0F6400BB102E600B9C03AC01DB8C +:10BE3000003E60088F0223408B003AC00D1043681B +:10BE4000401000000000000080052C009900A2C0F6 +:10BE5000089002A607980002C24888022C00BA0285 +:10BE60006E600A9802EC008B012E600890020500BB +:10BE70008B002EC008B1022000400000000000002E +:10BE800008040C1081002040281026CC808020A0BF +:10BE9000CC1814420400B2206C400B00028C0083CA +:10BEA0000028402800020000830028C009B0024298 +:10BEB0000500000000000000000D6C00D900228089 +:10BEC0000C9003AC80DA292AD22880022400FB20BF +:10BED0003E000F9002FC008F002E400C800B2002D1 +:10BEE000CF003EC00CB00300035000000000000073 +:10BEF000A01DFC00FD003F000FD063FC49F5003E93 +:10BF0000C00BC001F4007F403F401FD003BC00FFC6 +:10BF1000003F400FC003F000FF003BC00FF003E8FC +:10BF20000470000000000000C001F240ECA03FE0FF +:10BF30000D48037D80F480336C0EC8033200DD9021 +:10BF40003BA02DF003FCC0FF003BE08EF0033C045F +:10BF5000EC6031000CF003B0007000000000000045 +:10BF60008010EC00D9C12EE10D88023C80F88036AB +:10BF70007D18A00228B0EA202220087702FD50BBDD +:10BF80008022400BF4423D808831221208F602E004 +:10BF900004300000000000008805CC0080112EC194 +:10BFA0000800024D80B80020000A0282000099209B +:10BFB00022C0093082CC00B30028CA0B34820D2085 +:10BFC0008000A08C083482A20170000000000000F4 +:10BFD000C015AC4099802EC20994022C00A980267D +:10BFE000600838422220BA4162463BB002EC01BBF5 +:10BFF0008022400BB0460C1888C0222208B006F000 +:10C0000004600000000000004015CC00C9813CC164 +:10C010000CA9236C00B28032780A8A0B26009901A1 +:10C0200030E00DB003EC00B9003AC01EB0032C00A4 +:10C03000CB8032610CB0139004700000000000004F +:10C04000E001BC10DD003FC20FE803AC00FE003D84 +:10C05000400FC043F810EF14B7E00CF003FC00F5FC +:10C06000023F444FB04BFC02D4043D402FF003F894 +:10C0700000600000000000004010AC00F9083E60C5 +:10C080000DA003AC00E85032000C8403A500E900C9 +:10C090003AD80FB0032C00F9003AC00F30032C003F +:10C0A000CB443ED40EB003D00420000000000000BA +:10C0B000C8052C08B9802EC00A30423C008904769D +:10C0C000600890622000820422D008F0437C00BB0C +:10C0D0008222400BF0423C008AC02EC108F002F2DE +:10C0E0000040000000000000E0054C10B2D02CC061 +:10C0F0002918028C04A100249C0810028000A101D0 +:10C100000CC12B30528C04B30128404B30024C0040 +:10C1100090202C200A3002F800500000000000009F +:10C1200020411E00B7A225E88A68021E00858025EE +:10C130008088E8023E0085802FE4287802DE00B780 +:10C140008061E00378025E82B7822DE0087802C841 +:10C15000004000000000000048080D00F0103C8086 +:10C160000D10838C00E25026040C11038840EB0074 +:10C170003CC40F30038C00F30838400730036E4096 +:10C18000D0083C880E3043D20200000000000000BE +:10C19000401DBC00FB343CC94EB023ED20FB043FE6 +:10C1A000C88F70534C00EB1031C50EF4036D00F3D3 +:10C1B000003FC00FF40BBC00CD003FC00FF483D094 +:10C1C0000660000000000000A805CE04C904B0C14C +:10C1D0000F98136C90CB023EC04FB063E400F18027 +:10C1E00012C00CB503ECC0CF8332400FB3232DA493 +:10C1F000FB003E000FB4032A0070000000000000A6 +:10C2000048119C00870021C02D60021C00D7003916 +:10C21000C00B6002DC00B50021C02A7012CC808700 +:10C220000035C00B72521C00B7002D410B320212B8 +:10C230000460000000000000C000BE0081C0232098 +:10C240000BD8025E0006C02DA00B7C12DE08BF805A +:10C25000A1E22A7A02DE00938025600B781E5E50F0 +:10C26000B7802DA00B7802300020000000000000F5 +:10C270004814CE00836020C00931022C00930028AE +:10C28000C01BB006CC80B34820F00A3002EC00930B +:10C290008024C00BB0024C10B3C82CD28B300212D9 +:10C2A0000430000000000000E815BB00C6C4318166 +:10C2B0000FE0036800CE803FA20BE803F900FE40C8 +:10C2C00031806EA007E800DA0026810FA002680125 +:10C2D000F6E03D920FA0033A046000000000000069 +:10C2E0004800E0C2F8043E140F8013E010F8013E4D +:10C2F000100F8043E000B8003E00478003E002E8F2 +:10C30000103E000F8007A000F8002E000F800BD217 +:10C3100000300000000000000810E400F901324085 +:10C320008C9003E400C90036420F9003A400C900BA +:10C330003E420D90036400D9003E400F900B640014 +:10C34000F99032410C90030204300000000000001C +:10C3500080046400B9C8A2600A9202E40089402EF9 +:10C36000580B90020400D9002E42089002E4048980 +:10C37000002E400B90062404B9082A404890122051 +:10C38000001000000000000018052400B91022442D +:10C39000089002E400890022458B9002A4008900E5 +:10C3A0002A40099002E40099802E400B9026240038 +:10C3B000B9012270091002060040000000000000D0 +:10C3C00008040408B12020400A1002C48083002C15 +:10C3D000504B1002240091002E40081202C48181AB +:10C3E000A26C400B12020480B9202A4829120202D2 +:10C3F0000100000000000000B80D6140F80032802C +:10C40000088003E142C80032001F8503A140C850E4 +:10C410003A008D85036140D8003E000F050321409E +:10C42000F85032140D850B2E035000000000000060 +:10C43000981DF404FD103F400F5003C440FD003F21 +:10C44000510FD003F400FF013D400F9103E440FD84 +:10C45000103F4A0F9103E440FD103F440E9103E664 +:10C4600002700000000000001805C500CD0031403A +:10C470000DD043E400CD0033404F1102E404C1006D +:10C480003D400C9003E400EDA432500F9003E40013 +:10C49000FD003F400F9003C6007000000000000048 +:10C4A0003810E208D8003201008012C0004800367F +:10C4B000800B8A02E000A8002E000F8002E00088B6 +:10C4C0005034280B8002E000B8002E000B8002CE12 +:10C4D00004300000000000000805C48081002640F0 +:10C4E000091802C408210028408B1002C400B101C1 +:10C4F0002E40181002C400A10120481B1002C400E5 +:10C50000B1006C400B1012C201700000000000006E +:10C510001811A4009980A242489002E400A92A269A +:10C52000440B9082C481B9002E400B9042C4008914 +:10C530000026400B9002E400B9012E410B9002C688 +:10C540000460000000000000A015C520C984307000 +:10C550000D9013E402E90032700F9403E400F940F7 +:10C560003C480C9003E400E10032400F9001E400ED +:10C57000F9903E600F9026E8047000000000000073 +:10C580002801A500F1043A448F9003E410C9043E49 +:10C59000600F9003E400E9203E400F9003E410F99F +:10C5A000903E400F9003E400F9803E640F9007CA6C +:10C5B00000600000000000002810A100C8043A003C +:10C5C0001E80038003C8402A041F800320008800C7 +:10C5D00032300C80032000F8003E000C8003E000A5 +:10C5E000C8803E200F8003CA042000000000000025 +:10C5F00028053800AED0378008EC463800D6042332 +:10C60000A00BA0417804FA0037800DA002A810EE1C +:10C61000212E8008A002E8088E802FA08BA002CADD +:10C62000004000000000000028014C0283C0A8E880 +:10C630004A36028C0013A028C20B30060C00B3004F +:10C6400024840930020C00B32028C0093002CC0039 +:10C6500083802CC00B3002CA0100000000000000E3 +:10C66000A0013C44AF4025C248F8821CC89F082165 +:10C67000C08BF8025C00BFB02780093A029C00A57D +:10C68000022DE8097002CE8085082DC20B7302E8E6 +:10C690000040000000000000A8081E00C782A9E0BA +:10C6A0000A78029E40978439A00B7A833F80D79105 +:10C6B00035A00D7A091E44F7803DE82D7A03DE820D +:10C6C000C6803D204B7B23EA0200000000000000F2 +:10C6D000081DAC00D3003EC10F3003ED80E3003EE7 +:10C6E000800FB621EC08DB213E800FB5036C40F9CA +:10C6F000003EDC0EB203ED40F9023E800FB003C2F3 +:10C7000006600000000000000005FE00CF803DE054 +:10C710000FC843FE00FE843FE00DF8C3FF10AF904A +:10C7200035A00CFC033E14EC843FF00EFCC3FF0864 +:10C730004F8033E40CF8030000700000000000009C +:10C74000A8119C00D7A22DC40C41C2DC00740025A6 +:10C75000800F7242DC90D7382D980A70021C048634 +:10C76000003FC00D7002CC00860837C62870022A30 +:10C77000006000000000000000009C0087602DC2E7 +:10C780000A5002DC00B61025C2097086DC30970022 +:10C7900025800830025C0087082DC0087002CC405C +:10C7A0008600210009700A0004200000000000003B +:10C7B0002014ED8093000CE1281802CC08A000247E +:10C7C000121A3402CF0493402C800AB0224C02810A +:10C7D0008028E0283002CC008882242008B002089B +:10C7E0000430000000000000A815BF20C9E02CF1B3 +:10C7F0000EBD03FC00B940364009F502FD40FF8044 +:10C8000036A208F00B7C00EB802FE00AF043FC021C +:10C810008BD032F00DF0032A04600000000000000D +:10C820008000EC10FB003EC80F9413EC00F940367A +:10C83000401FB003EC10FB013ED00FB003AC00F979 +:10C84000003EC40FB001EC00F9043E480FB003E015 +:10C8500000300000000000000110FC00DF003FC0BD +:10C860000CE007FC00FC0A27004FF003FC00FF0867 +:10C8700033800CF0002C005F0033C00CF001FC0092 +:10C88000FE0023400FB00300443000000000000011 +:10C8900081046C008B862EE0488F02EC08B8A0362D +:10C8A000304BB003AC0C9B023CA00CB0436C00B10D +:10C8B0000028C00DB012EC10B980A2610BB00220AC +:10C8C000401000000000000080052C009B882EE036 +:10C8D00008A002EC01BB8026620BB002EC00B301A1 +:10C8E0002A2108B0122C00B80022C008B012EC14A3 +:10C8F000B98422A20BB002A000400000000000009A +:10C9000008040C0493002CE0080002CC09910020DC +:10C91000400B30064C0413002600083002CC04B251 +:10C92000002AC0013000CD00B00020800B300A0288 +:10C930000100000000000000000D6C00DB246EC050 +:10C940002CA002FC00BA0426404FF057FC003F0127 +:10C950003A002CF0013C00DB0033C084F003FD08FA +:10C96000FA0032000FF00300015000000000000048 +:10C97000A019DC00EA403F0007C003FC04FC003FB4 +:10C98000400FF0039C00FF003F000EF0037C00FD11 +:10C99000003FC10FF003FC84F4003F000FF003E8F8 +:10C9A0000470000000000000C001F080FF0003C21E +:10C9B0000FC2033E00DFC03EC04DDB02B0C0DC3022 +:10C9C0003FE00FDB23F620FF2633E00F52035E002B +:10C9D000FF8033C04C4903300070000000000000AD +:10C9E0008010E1E0B70823F00BAD0A2E009A042E68 +:10C9F000B0098F03A040B9302EA00B9F03A700BB46 +:10CA00008026E00BDD022E00BB8022F40A9202A0F9 +:10CA100004300000000000008805C880B31024C066 +:10CA20000B8002AC00A3242CD0081006C080B201F9 +:10CA30002CEA4B0012C204B31008C00A90020C008A +:10CA4000930424C0098202A20170000000000000CB +:10CA5000C015A500BB0022C00B8002AC08BB182E7D +:10CA6000E0188802EC01BA002E800B9886E200BB29 +:10CA70000022C40B90026C00BB00A6C00B9000B05B +:10CA800004600000000000004011E700FB00B2C09D +:10CA90000FA803AC02EB003E600D9E03EC00D840F3 +:10CAA0003E400F8843E200FB2032C00F100B6F9016 +:10CAB0005B8236C02D080190047000000000000069 +:10CAC000E001B708F7003FC00FF9037C08CF823CB4 +:10CAD00000AFD021BC08FD103F808FC003A400F739 +:10CAE00001BFC007D003BD30FFA438C00EDA03F881 +:10CAF00000600000000000004010A800FB00B2C170 +:10CB00000E8103EC40FB443AC10E9503E000CB419B +:10CB1000324D0F8103E020C90072E84491036D009B +:10CB2000CB023EC00C8003900420000000000000F7 +:10CB3000C8052400BF0033C4081D038C00BB983611 +:10CB4000484D9822ED40DB0036B00B9802E300DB45 +:10CB50000032E088D8022C02C3802FC008900372F4 +:10CB60000040000000000000E0014400B30020F09D +:10CB70001808024F84B1C024C0890602C400910085 +:10CB800020F01B1882C60093002CD1081E020E4410 +:10CB900093942CC0082002B8005000000000000050 +:10CBA00020011E04B78020E20868069E80BF84250D +:10CBB000A8096802C60093A065E40B7812DE009312 +:10CBC00000A1E008D8021ED0A7802DE008F8024896 +:10CBD000104000000000000048080800B32030C0EA +:10CBE0000A2202CE40F3A03CE80B3002C100D0C1C3 +:10CBF00030C00B2113CC21D3002CC02C100B0C8087 +:10CC0000D3613CC82C200392020000000000000009 +:10CC1000401DBC00FF403BC00FE003FC00F7507F0D +:10CC2000C42EF003FC40FE003FC00FF047FC00FFA5 +:10CC3000007DC20FD001BC805F003FC00FF003D069 +:10CC40000260000000000000A805E400FBC032C83C +:10CC50000EE003ACA0EB2032408CA0132C00D900D6 +:10CC60003E600CB003E800FA8030C03C9203EF60F5 +:10CC7000C32031C40CA0032A007000000000000093 +:10CC800048119C00332021DA0B70439C01B5002130 +:10CC9000000AE0021C00B7002FC00D70039C00B614 +:10CCA0000031C8085702DC00875021C00A70429248 +:10CCB0000460000000000000C0009A11B79021E05D +:10CCC0000B6882DE08A78024600870121208958025 +:10CCD0002D60096C02DE00B18023E00A5862FE007C +:10CCE00097A021E809E802301020000000000000B1 +:10CCF0004814CD00B30020C08B3C028C00BB002444 +:10CD0000C41A3D022F88B3482CE0893E028D8093DF +:10CD1000D9A440881002CC0493C820C00B300292E2 +:10CD20000430000000000000E815B940FA00B280AD +:10CD30000FE003E800EA8037A00CE8133B08DE01AF +:10CD40003F820CE043FA80FE8031280CA003F00201 +:10CD5000C4C0B2800DE0033A04600000000000008F +:10CD60004800E000F8003E100B8083E000F8303A05 +:10CD7000006D8083E144B8043E100F8013E000F89A +:10CD8000003A104F0403E300E8103E000E8003D287 +:10CD900000300000000000000810E400C900384026 +:10CDA0000F1A032E00FBA036600C9803E604D10096 +:10CDB00036480E9102E600F9003E000C99036240ED +:10CDC000F800A0680C90030204300000000000008E +:10CDD0008004640289042E64889402A500B980202E +:10CDE000640D9C02E642890022600B9C02E410B9AB +:10CDF000403A50089C022720B900224008100360E6 +:10CE00000010000000000000180504008900224006 +:10CE10000A9082254CB9000240089602E41089006D +:10CE20002650139402E440B9082E4008908A24004A +:10CE3000B9012A40089002060040000000000000EE +:10CE40000804058081402CC80810068400B1042025 +:10CE500049091442CC89812020500B1446C400B1EA +:10CE6000002AC02814020101B0042840389402426C +:10CE70001100000000000000B80D600088003A00BA +:10CE80000E80232000F850B2000C8012E140D850F0 +:10CE900036000E8003E000F8002E000C8053600482 +:10CEA000F8003A000C80032E035000000000000040 +:10CEB000981DF440F9443E440FD403E400F1003FD0 +:10CEC000440FD453F444FD102F400FF403FD00FD34 +:10CED000403B100FD423D1047C4336500F5003E65F +:10CEE00006700000000000001805A600F9102E6270 +:10CEF0000FD283E400BD423E610FD003F6C0C9A249 +:10CF00002B400CD0033400F9813E6808C143FA007D +:10CF1000F5803F620C140306007000000000000062 +:10CF20003810E12088112E100B8002E000B8822E0C +:10CF3000100B8000E3C488F022000B800A2000E878 +:10CF4000402F14088802E200B8002E000888028EE4 +:10CF500004300000000000000804C500A1002C40BF +:10CF60000B1002C418B1226CD10B1026C40081082A +:10CF70002A408810020404B5C00F400B020241A0F1 +:10CF8000B1402C40081202021170000000000000A5 +:10CF90001815A40089062E400B9012E400B9402E0B +:10CFA000400BB082C402894422400A90022400A9A6 +:10CFB00000274809B012EC18B9012E4040900286B3 +:10CFC0000460000000000000A015E784E9013E4075 +:10CFD0000F9003E400F9003E720F9003E7608910A0 +:10CFE0003A400C90032400F9443C402D9003E76044 +:10CFF000F9713E40289003280470000000000000F2 +:10D000002801A448A9003EC00F9A43EC00F9207EF5 +:10D01000C80F9A07660079807E400F1C03E700E97D +:10D02000A03E40468003E020F9003C400F9003CA38 +:10D03000006000000000000028108000F8003A00A6 +:10D040000F8003A008E8403A100C8303A1C0F04011 +:10D050003E060F8403E100F8003B000F810320002F +:10D06000F810B2004C800B0A042000000000000001 +:10D0700028052800BA002EB00BE802E9003E900215 +:10D080008108E4127800BA002DB089E822F80CBAC1 +:10D09000006E8003C5033000BA0022A808A0228ACF +:10D0A000004000000000000028054C00B30028E804 +:10D0B0001B31128CC4A3922C408834068E0093003E +:10D0C0002CF01931A2CC04B30028800138024C00A6 +:10D0D000B38020E00AB012020050000000000000FF +:10D0E000A0011C00B7142D420B6002DC00B78127A1 +:10D0F000E01860025818B7222D80097022DC00B7B2 +:10D10000002D800B3B021DD0BF8028C08AF202A0F8 +:10D110000040000000000000A8081F80F7A039E2CE +:10D120000F68039E00ED843DE24478039E00F7B44F +:10D130002DE00D6803D600F68039E00F79035E908C +:10D14000F78131602E7C032A0200000000000000FD +:10D15000081DAD00FB423EC80FA003EDA0BB003888 +:10D16000C80FB0036800FB113E4009B041EC00FA63 +:10D17000023EC00FB20BED803B0036400DB02342A3 +:10D1800006600000000000000005FF00CFD033E47F +:10D190004FF903DE40DC8036E40CB913FE00CF907B +:10D1A00037E50FF843FE00CF923FA40F78031F002E +:10D1B000C58033600CF82000007000000000000003 +:10D1C000A811BC000F1021810B600384008B082183 +:10D1D000600A7B0398008B1029840E6422DC40D700 +:10D1E000022D840B70021C00851821400AF022AA2F +:10D1F000046000000000000000009C00A71469C04B +:10D200001A6012FC01A4102DC00A52024540870C7E +:10D2100021801B6082D400860325E01B70025C40E5 +:10D220009D0029400870020000200000000000005E +:10D230002014CD00A30028C01B20228C11A300685D +:10D24000F60A3C068200838028840A8C82CC4492B1 +:10D25000002CC00B30024E00910028400A3002889A +:10D260000430000000000000A815BE22EF04BAC080 +:10D270000F1493EC02F1C33EF00E90836600CFD200 +:10D2800032500F9C03CB00C9803E280FB0034F00E3 +:10D29000D1C0AAC00C71032A046000000000000085 +:10D2A0008000EC20DB0026800FA003EC081B00367A +:10D2B000C00F8601E540FB023A480E9403EC80F172 +:10D2C000843E004FB003ADC0EB2036C00FB023E06A +:10D2D00000300000000000000110DC00CF003F60C3 +:10D2E0000CE0833E80ED0833D08F50039E00DF00BA +:10D2F00033400CC0033000CC1033680CF0033C8486 +:10D300008D9030400CF00308443000000000000015 +:10D3100081046C008B022CF408A8620C808B802A9C +:10D32000600F9C022E008B0020600D98022C80D88C +:10D330000014400834122E008B8232400DB003607E +:10D34000401000000000000080052C008B002ED053 +:10D3500008B8022C008A8422C00B8802E4A0830053 +:10D3600022620A98022800890022000AB1062C00D5 +:10D37000AB00224008B00260004000000000000046 +:10D3800008040C02A3002CC10820020C028B002808 +:10D39000C20A00024410831022400B10060C0091B8 +:10D3A00004AA002830022C00A101204009B002424A +:10D3B0001100000000000000000D7C008F003EC046 +:10D3C0002CA0032940A84032CC8B8002E000CF4043 +:10D3D00032000E800A2000880022400CB0032C048A +:10D3E000EB00B2408CB0034003500000000000008E +:10D3F000A01DFC00DF003F400FE003FC80FF283D44 +:10D40000C00BC103B014FF003F000DD003DC00FCD3 +:10D410000037400FF021FC001D007B408FF003E03F +:10D420000670000000000000C005D200DF0031A03F +:10D430004DF0433200CE141B680EDA23B2C02F0029 +:10D440003FC22CE8033C40FD083BC84CF0833CA0A5 +:10D45000CF0033C40CF307F00070000000000000A0 +:10D460008010E2008FC022A008FD422F008B7022A6 +:10D470001E48890227C08F5A2E50483002BDC0BDB9 +:10D480004023C548F4823D2C877022C008F103E098 +:10D4900004300000000000008805E00093102681A1 +:10D4A0004930028040832028400A10028000A324D3 +:10D4B0002CCA0832820C00912820CA1B32020C8828 +:10D4C000830920C8093202E2017000000000000058 +:10D4D000C015A3148B04268908B002AC228B882ABD +:10D4E00020089882A610AB002ECA08B082AC00B902 +:10D4F0000022C029B00A2C018B0022C009B022F002 +:10D5000004600000000000004015E300DB0034E28E +:10D510000DB003A300CA80BA700E8803A600EB000A +:10D520003E900CB5032C00FB10BAC00EB0032C02C9 +:10D53000CB0232C009B002D004700000000000002D +:10D54000E001B008FF00BBE00F70036500F4003598 +:10D55000400F40035400DF003E400FF803EC00F79B +:10D56000013DC10E3003EC00FF003FC08EF003B858 +:10D5700000600000000000004010A040EB083E806A +:10D580000DB003E000C8003A510F82036420DB00B5 +:10D590003D820CBC032C10DB0072C00DB1030C20CB +:10D5A000D30032C00FB00B50042000000000000078 +:10D5B000C805010087C02EA808F112C540880022C6 +:10D5C000400B84022700AF002EC008BC123C008B29 +:10D5D0000123C028F54A3D28DF0033C04BF0033259 +:10D5E0000040000000000000E0054880A3902C00EF +:10D5F000083002C100920428000B14124300B30447 +:10D600002C300AB00A8C00930060C0083C060E0162 +:10D61000B3002EC08B300638005000000000000020 +:10D620002001120087802D24087802D200958021E5 +:10D63000A00B68025A2087802D661A7C029E008704 +:10D640008021E11879029E40B780A1E00B78024862 +:10D65000004000000000000048080000E3A03C403B +:10D660000C3003C422D90038D40F30836840F30053 +:10D670003C800A32028C00DB00A2C40C30030C0098 +:10D68000F3003CC00FB103120200000000000000D4 +:10D69000400DB000FF103F400EF003FC00ED003FD6 +:10D6A000C00F3013BC407F103FC12DF0037C00FB46 +:10D6B000403FC20EF4837C00DF003FC20FF00390B6 +:10D6C0000660000000000000A805EC00DBA032C0EE +:10D6D0000DB703E000CA043E800FB8032C10FB0016 +:10D6E00033008DB0032C80E9403ED20FB4032D806F +:10D6F000EB20B2C00FB203EA00700000000000008F +:10D7000048119000B71011C0087082D80A87012D07 +:10D7100080897003D808B70A21402C70020DC0859B +:10D720000179C80B32020D208F2821C00B7282D2E2 +:10D730000460000000000000C0409610979023E0B5 +:10D74000097A02D60097802DF00B78821E00B3B0C4 +:10D7500021A00878021E00A5802DE00B7A021E8011 +:10D76000A7B021E80B7902F00020000000000000C3 +:10D770004814C000B30020E2083002C64093702C69 +:10D78000C0093C028E00B30020D80818020C0081AA +:10D79000902EC00B302A2C108300A0C00B3002D278 +:10D7A0000430000000000000E811B900DA0233B8CC +:10D7B0000DA003F800DEC03FB04FEC063840FA0081 +:10D7C000B3900C6C0B2808EA017E800FA0032800A0 +:10D7D000EA0032800FA003FA04600000000000009D +:10D7E0004800E000F8403A000F8403E100E8023E00 +:10D7F000000F8403E140F8003E000F8103E000F8D1 +:10D80000003A000F8003E000F8003E000F8003D2D2 +:10D8100000300000000000000810E420F9C03E7055 +:10D820000E9002E480C90032420C9883A484F9006F +:10D83000B2600C90832400C9003E400C1A02240000 +:10D84000C100B2400F9001C204300000000000008F +:10D8500080046500B9812C600D94C2C7088900223C +:10D86000400895C7A400B9002870A8940A2400892C +:10D87000042E4028902A2600890022400B9002E0C6 +:10D88000001000000000000018052400B9402E40E0 +:10D890000A9002E5008100A040099042EC00B1002E +:10D8A00022580890A2040289002E40089002A4A0E9 +:10D8B000890022400B9002C60040000000000000DA +:10D8C00008040400B1202EC0891202C480812020E7 +:10D8D00040611042C500B120284818904204808160 +:10D8E000282C4808128284A0812020480B1282C272 +:10D8F0000100000000000000B80D6800F8002E00D4 +:10D900000E8003E008C85032140D8017E804F85068 +:10D9100032144C050B2140C8203E000C8703A1C2E5 +:10D92000C80032148F8203EE035000000000000094 +:10D93000981DF400F1103D400F9102D442FD103FBC +:10D94000510E5413B500F91035442FD003E450FDA7 +:10D95000283E4E0F90036400F9383E440F9283E650 +:10D9600006700000000000001815F400FD003D40A6 +:10D970002CD003B600F9823E400CD003F400F980AD +:10D9800033700C50033400C9C03E400CDA031680DB +:10D99000C9403E622C988306007000000000000021 +:10D9A0003810E000B8002E000880022800B8502689 +:10D9B0000008A002E800B8002A342AAA0A20008839 +:10D9C000C02E2A0880222100A8802E000880020E86 +:10D9D00004300000000000000805C400B1002E4023 +:10D9E0004810068D00B1002C40281002C400B14040 +:10D9F0002C48081082440081602C4028140A0440FE +:10DA000081202C400810020201700000000000007C +:10DA10001805A440B9002E4008B0022400B9282EF1 +:10DA200050089022E400B9002E600B124264008975 +:10DA3000002C400990022400A9002C400810024646 +:10DA40000460000000000000A005E600F9003C4270 +:10DA50000C9003A740F9403E700C9802E540F90095 +:10DA60003E400C98036406C9012E400C9003240428 +:10DA7000C9003E400C900B2804700000000000001C +:10DA80002801A400F9003E400F9083E610F900360B +:10DA9000680F9C03E600F9003A400E9893A400F941 +:10DAA000003E400E9083C400F9003E400F90038A70 +:10DAB00000600000000000002800A000F8003E0404 +:10DAC0000C80032102C84032000F8003E100F00007 +:10DAD0003E020C80032000F8003E000C00032000F2 +:10DAE000C80032000F80030A04200000000000007C +:10DAF00028153A00BE022FB008681238008A042A9E +:10DB0000800BE042FB20BA002F9108E0022800BA07 +:10DB100000268008EE0A38008A0022800BA0028AC4 +:10DB2000004000000000000028054200B3002CC2A5 +:10DB300028380A4800830422C00B1002CD80B300AD +:10DB40002EC0081C022400B3002CC00834120E4062 +:10DB5000830020C00B30120A0050000000000000BB +:10DB6000A0011100B7002FC00870A24E008FB02195 +:10DB7000CC0B6012DC10B7302DC008D0821480B7F7 +:10DB80001225C8286002140087B221CC0B3102A8EC +:10DB90000040000000000000A8081200F7803DE0EF +:10DBA0000C38035600C790B1E40F7803DE00F790FD +:10DBB0001F602C480B16A0F7803CF40C38031E00A5 +:10DBC000CFA0B1E80F7B032A020000000000000094 +:10DBD000080DA000F8003EC00BB003AC00F3213EDE +:10DBE000C807B002E400FB203F400F8003E480FB45 +:10DBF0000036D00FA003E008FB423ED80FB003C2AE +:10DC000006600000000000000005F080CF8031E1D8 +:10DC10000CF803DA10EF803FE40FD803FE10FF8208 +:10DC20003FE04CD81B1620CF803FE04CD830EE4070 +:10DC3000FFC0B3F40FF803C0007000000000000044 +:10DC4000A8019820834021C0087102DC8487202D20 +:10DC5000C00B6002D960F7002DC008F08214048761 +:10DC6000002DC008F0031E00B72021C08B7002EA0F +:10DC700004600000000000000000B0008700218068 +:10DC8000087002F50427002DC08B7002DC00B7007D +:10DC90002C50084002140087002DC00850025C047C +:10DCA000B700A1C08B7002C000200000000000007F +:10DCB0002014C80080000080083002CE0083C02CF1 +:10DCC000D04B3002CE00AB022C4048BC0204008393 +:10DCD000002CC00810020008B30020C0093002C8A0 +:10DCE0000430000000000000A8158340C80030C0C8 +:10DCF0002CB003EC00EF883FE607B183E100BF00E2 +:10DD00003EE00CB8033400CF003FC02CB0036810D5 +:10DD1000FF0033C00FF003EA0460000000000000C1 +:10DD20008000E400F1403EC00FB403ED40FB083E2C +:10DD3000C00FA003E520FB003EE00DB083E400F33C +:10DD4000003EC00F8003C400FB003EC00F3003E064 +:10DD500000300000000000000110F000CA0033E0B5 +:10DD60004EF0033400FF003FC08FE803F000FF00D7 +:10DD7000B1400CE0033400EF00B3C00CF0033800F6 +:10DD8000CF003DC00AF00300443000000000000056 +:10DD900081046222889022E0083C022E08BB012EFA +:10DDA000C00BA0026600BB0022A008A9022400BB91 +:10DDB0000022C0282C02A200DB002EC00AB002A064 +:10DDC000401000000000000080052200980022C8DA +:10DDD0000A98022704BB002EC00BB102E200BB0070 +:10DDE00022E208B002A400AB0020C00A888223000F +:10DDF0008B002EC008B002A0004000000000000010 +:10DE000008140400914022C00810020C00B3002C3A +:10DE1000C04B28224004B30020C028300A0404B3B9 +:10DE20000060C0080002842093002CC00A300282E7 +:10DE3000010000000000000000056000DA40B28030 +:10DE40000E90032400FF003FC08FA003E009FF00F5 +:10DE5000324008A00B3400EB0031C00C8003288056 +:10DE6000C7003FC00CF0030003500000000000009A +:10DE7000A015D000EC203F000FC00BFC10FF013FAD +:10DE8000C00FE003F400FF003FC00FF003F400FFF9 +:10DE9000003FC04FC001F008FF003FC00FF003E893 +:10DEA0000670000000000000C005FC00CC90372088 +:10DEB0000EF013BD04D4C1332C4CD9233260FF20A3 +:10DEC0003DE04FC103B640CD0037E00CE28B10C0FF +:10DED000CD0033C60FD803300070000000000000F2 +:10DEE0008010EE088A20220008B7022D008A00B6B2 +:10DEF0003C0899022784BF682E820B01022440D976 +:10DF00004220C08AAC022DC28248A2D00B820220DD +:10DF100006300000000000008805CC008804268040 +:10DF20002A30C2A580A92128008A00020000A3107F +:10DF30002CC80B0002C490834224C1080002408810 +:10DF4000A360A8C00B00C222017000000000000006 +:10DF5000C015AC068A0022E048B0022E02AB802E2B +:10DF6000204A8C022620BB006E800B30C246049BE8 +:10DF70000AA2C00A80126C40A8002AC00B8C023092 +:10DF800000600000000000004015EC00C10936618F +:10DF90000E3203AB20F8843A782E98032600EB006B +:10DFA0003E404F9003E200C94036E00CB4036E00DF +:10DFB000EB003AC00F88031004700000000000005E +:10DFC000E001BC00FD003F400FFA13F810DC04270D +:10DFD000400D5043F400FF003F400FD903B000F95B +:10DFE000013FF00FF023B200D4A037C00FC00BF8F0 +:10DFF00000600000000000004010AC20EB10F200B8 +:10E000000EB4032180C9403A480F9013E120FB0071 +:10E010003EC00C84032400FB0136E00C740B9C0012 +:10E02000CF0032E00F8403D0042000000000000085 +:10E03000C8051E008B80204008B802838081A02282 +:10E04000780B9183E300BF000EC10AB4036404B9E6 +:10E050005032C00AB2022000880023D40B8802F29A +:10E060000040000000000000E0054C42A0802000BD +:10E070004800020D0680802AD0030002C800B300C9 +:10E080002CC00836024000B90222C28B26020C10B6 +:10E09000010224C04BA102F80010000000000000A3 +:10E0A00020011E088E8021210828C29E008E80211A +:10E0B000600B78029E20B7822FA10A78025E00B51D +:10E0C00091A1E00B290232448680A5E00B4C02C8E6 +:10E0D000001000000000000048080C00E100228051 +:10E0E0000E000B2400C04428AD0F2002C800F3002E +:10E0F0001CC00C0103484CF20430C00F15038040D3 +:10E10000C10014C80F0003DA021000000000000074 +:10E11000401D9C40F7003FC08FC003E400FA013F60 +:10E12000C00FF023FC08FB003F800FF001FC10FF44 +:10E13000003FC00ED103FC42FE803BC00FC003D0A5 +:10E140000660000000000000A805EC40C8003EC0CA +:10E150000F9003EE08CB0032C00FA023E603CB4C98 +:10E1600032400FB007E800F90016400CA00B6C001D +:10E17000CF0232C50C8003020070000000000000D6 +:10E1800048119C8084042DC10B4040DC0087042191 +:10E19000C04B7012FC018F6029400B70139C00B5BE +:10E1A00000A3400A60020000840021C0084002125F +:10E1B0000660000000000000C0008E0087802DA2D5 +:10E1C0000B4C16D608978821A04B6802DE04A78066 +:10E1D00021E00B4802DA04B68225600AE8621E00DC +:10E1E000878020E8084802080020000000000000A6 +:10E1F0004814CC008B806CF00B3C02CE469BC020B8 +:10E20000E40B3C02CC20A30028E00B30028D80B14F +:10E210008022440A210A03828080A0C008060A12D4 +:10E220000030000000000000E815A802CE803FA0EA +:10E230000FE003FA40DEC0B3900FEA13F908EA04D6 +:10E2400033828FE403FB08FEA036A00CAC0B6B827C +:10E25000C6A032802CE4033A0470000000000000E5 +:10E260004800E000F8903E020F8083E100E8203E85 +:10E27000030F8203E140D8003E200F0093A040F836 +:10E28000003E108F080BF000FC003E000F8003D210 +:10E2900000600000000000000810E400E9003640C3 +:10E2A0000F9407E600F980B0400C9403E440F900B5 +:10E2B00032400F940BA40071C032402C94232402EE +:10E2C000C90032400C90030204200000000000004E +:10E2D00080044400890022400B9802E660B90022C5 +:10E2E000600A9C02E624B90436400B98002400B969 +:10E2F00080A25208900224008940224068940220A3 +:10E30000001000000000000018052400A9002640AD +:10E31000039402E401B9102255089022E400B100F0 +:10E3200026400B90002C09B900226008900A1C04BA +:10E330008D08A0400810820E004000000000000080 +:10E3400008040600810020500B1242C480B1042052 +:10E35000500A1402C500B12224400B12220401B15C +:10E3600040205008100A15008540285008140A0A59 +:10E370000500000000000000B80D6000E850360005 +:10E380000F8502E140F85032000CA023E010F85055 +:10E39000B2140FA503A148FA00B2000C80032004B8 +:10E3A000C40232000C00032E0350000000000000E5 +:10E3B000981DE500FD003F400FD103D444F5003F18 +:10E3C000510FD403F500F9103B400FD100F510F5C3 +:10E3D000407F400F542BE500F94036500FD003E644 +:10E3E00004700000000000001805F610BD40334026 +:10E3F0000FDA033780CD003F400FD003F400E9A0CF +:10E400003E400CDE17A408FDC033418DDA1326A070 +:10E41000F9A832780CB40B06007000000000000070 +:10E420003810E100B8A036200B8A82A2802AA82EDC +:10E43000000B8012E004B8A12E284A8E022AA0BA4E +:10E44000C022280885022108B8E8A23C08C8020EAC +:10E4500006300000000000000805C500B900204A91 +:10E460000B1402058001002C410B1002C404A14AC8 +:10E470002E420814028410B160A04A091002440020 +:10E48000B501294018D2021200200000000000004F +:10E490001815A400B92126400B9602A410A9002E3D +:10E4A000400B9612E420B9002E410A90422400B994 +:10E4B0000022410898226400B9202B4128D402068A +:10E4C0000020000000000000A011E400F9E0325834 +:10E4D0000F98032640C9403E580F9C03E400E90012 +:10E4E0006E400C9A02A600F94432400D9A0B6484E7 +:10E4F000F900BA400C180328047000000000000066 +:10E500002801A400F9003E500F9003E600F9043EF4 +:10E51000480F9003E440F9003E650F9981E450F9FB +:10E52000203E408F9003A480F90034400F9203D224 +:10E5300000600000000000002810A000F8403E101D +:10E540000E84036008C8003E080F8083E028E804BA +:10E550003E000C8403211CF04832000B0003E00253 +:10E56000C00032000CC00B020420000000000000BC +:10E5700028053800B2882E8008E0037A808E002FAC +:10E58000A00BE802F910BA002C8028E4022800BE93 +:10E590004023B808E802E804CA20A28008E8020A7A +:10E5A000004000000000000028054C01B3002C4092 +:10E5B00008B8426C0283002CE00B3800CF40B30057 +:10E5C0002CC008B40A0C00B340A2820A3902CC0065 +:10E5D0009380A0C02920020A005000000000000023 +:10E5E000A0011D00B7002D64287402400087052D8E +:10E5F000900B7402DC10B7302DC80834061C80B7AD +:10E6000000A1C00A7002DE80830001000960822040 +:10E610000440000000000000A8081A00F7803D60D8 +:10E620000ED80B5E00C7803DE00F6803DE10F7A92F +:10E630007FE84878031F30FF9433A00E7803CF247F +:10E64000D680B1E00DF84322020000000000000077 +:10E65000081DAC00BB000C400FB003EC08F9003EF5 +:10E66000000F9041EC00FB617ED00FB003EC80FB0B +:10E67000403F9B0CB003ED90FA003C000EB003C28B +:10E6800004600000000000000005DE00EF80336041 +:10E690000DD8033640EF903EE00FF903FE00FF80F7 +:10E6A00033FE0CFA03FE00CF80B3E00FF803FE0048 +:10E6B000CD8033E00FC843C0002000000000000000 +:10E6C000A8119C0085083540087003522087112C42 +:10E6D000EC0B7102D000E70035C4087402DC4087FF +:10E6E0001021C00B7002FC80850821000B4182EADA +:10E6F000062000000000000000009800AF0023503A +:10E700000950021C80A70129C01B6006DC40B7101D +:10E7100021C84A5202DC00830021C00B7002DC13C6 +:10E72000840025C00B5802C000200000000000003B +:10E730002014CC0081802440083E026E0089002C09 +:10E74000C00BB402CA80A30024C00A0402EC4082B9 +:10E750000A20C00B3002CD1080C0A4000B1C02C8E0 +:10E760000020000000000000A8158400EB8033406A +:10E770000D8C832600E9A03E788F9083E100FF0096 +:10E7800031D10E8423FC00CB8232C08FB002FD4019 +:10E79000CB80B6C00FA403EA0460000000000000B4 +:10E7A0008000EC00FB003E400FA003E000F9013EBA +:10E7B000420F9003E554E3003EC8059303EC80FB51 +:10E7C000C13EC00F2003CC48F3083A000FA043E03D +:10E7D00000300000000000000110F000CF003F40BA +:10E7E0000F30012C0ACD1033000FD0831400CB0260 +:10E7F00033C00CE103EC10CD0033C00CF0333C000F +:10E80000EA0033C00CF083C8443000000000000070 +:10E8100081046E008B002E400BBC022E000B0022E8 +:10E82000300B9C022780AB002AC008B802EC00899C +:10E83000C020E008AE022C088A00220008B042E89E +:10E84000401000000000000080052E008B042E40C8 +:10E850008B8C02AE10890022700B8C02A2008B01FF +:10E8600022C0088002EC108288A27009B8022C082D +:10E87000890020C0288022E0104000000000000035 +:10E8800008040C0481002C400B200280008104A0AD +:10E89000504B000A8000A3012AC1201002CC14832F +:10E8A0000022C00820020C008100E000080002C223 +:10E8B0000500000000000000000D6800CB003E4095 +:10E8C0000F900BAC80C90032100F8003A400CF0260 +:10E8D00031C00C8013FC02CD0033C02C90033C02ED +:10E8E000E800B2C00C9003C003500000000000001C +:10E8F000A01DFC02F5003D408FF0236D00FF003F9E +:10E90000040FC003701CFF013FC04FC003FC00FD9B +:10E91000003FC00FE00FFC18FC003F000FD003E8E1 +:10E920000470000000000000C005FE00D7020F3098 +:10E930000CF2017E0644303F200EF0027C84FD2064 +:10E9400027080CD0013600FF6033CC0BF1132CC428 +:10E95000FF300FCD0CF403F0007000000000000049 +:10E960008010EE008FC02E0008FC022E008A302896 +:10E970005208F6823C68BD903234489C122600CF83 +:10E980004023CC0BF6023D00BF102FCC88F602E0EE +:10E9900004300000000000008805CC0093102C0813 +:10E9A0000931024C009B2064580331624C81A10064 +:10E9B00020004814024400933024C00B33028D849D +:10E9C000B3206CC02A3602E2017000000000000093 +:10E9D000C015AC109B022E410BB002A4009A004A55 +:10E9E0006088B0526C01B9002600089122EC08BB87 +:10E9F0000026C00BB002AC00BB056EC10AB002F02D +:10EA000004600000000000004015EC00DB013E3017 +:10EA10002D30034760D8A016388FB0036C00790200 +:10EA200031600CC80A6600BB00B6C00FB00BAC006A +:10EA3000FB013EC10EB003D00470000000000000D6 +:10EA4000E001BC10EF083F240CF0037620EE903577 +:10EA5000400E7003AC00FD00BB640F88133480CB04 +:10EA6000003BC00FB0036C08FF003EC00DF003F880 +:10EA700000600000000000004010AC01FB8032107C +:10EA80000EB003ED00CB503E408CB0432C10F9008B +:10EA900032600C400B2600C30436C00C30032C003F +:10EAA0009B00B0C00CB003D00420000000000000A8 +:10EAB000C8050E80BF042A4000F500E60082D2227D +:10EAC000400DF0223C00950236400A80022E008F55 +:10EAD0000037C00AF0423C008F0023C028F002F249 +:10EAE0000040000000000000E0054E00B3002220BE +:10EAF0004A3000CC0081C028000830020C10A10070 +:10EB000028801830220404830024C0083002CC0876 +:10EB1000930020C0083006F80050000000000000FC +:10EB200020011E00B78029A0087802FE208D8029D0 +:10EB3000E55B38421E40A18125A80879023700878D +:10EB40008025E00A780ADE81878025E5487802C8BA +:10EB5000004000000000000048080C00B310301214 +:10EB60000E3012CCC0C30038800C31060C40F100CE +:10EB700038800C30430442C30036C00C3203CEC090 +:10EB8000DB0030C00C3003D20200000000000000A7 +:10EB9000401DBC00FF103D844FF103D040FC1033FA +:10EBA000805DB183FC50DD0A25890FB803D400FFD6 +:10EBB000103FC00FF4033C40FF003BC00FF003D0F8 +:10EBC0000660000000000000A805EC00FB203E00ED +:10EBD0000FB5032920F90032A00CB083EC0049C81E +:10EBE000B2C08CA0036400FB0812EA0CB00B2C80AE +:10EBF000FB202ED26CB643EA047000000000000037 +:10EC000048119C00B7492D000B30821001B50283DA +:10EC1000C01A7222DD41850061C01820201400BF97 +:10EC20004035D00D34021D20B72825C1087482D28A +:10EC30000660000000000000C0009E0437A02D20E8 +:10EC40000B7A121601B38021E20878429E0085807B +:10EC500020E11868025600B7A025E0087A021E00DD +:10EC6000B7902CE5887A02F0002000000000000038 +:10EC70004814CC00B3006C241B30020000B000200C +:10EC8000F80A3002CC00810020D81820020400B31A +:10EC90000024C00930020C00B30026C0083002D2A4 +:10ECA0000030000000000000E815A800FA003D80D8 +:10ECB0000F200B2880FE0033A00CA003E802CA023C +:10ECC00032902CE4037800FA0032800CA003280074 +:10ECD000FA003E800CA003FA006000000000000073 +:10ECE0004800E100F0003E004F8003E080F8003E65 +:10ECF000000F8023C000F8023C000FC0836000B802 +:10ED0000003E000F8023E018F80136000F8003D288 +:10ED100000300000000000000810E600F921326019 +:10ED20000C90032C44F900B2400F901B2400E90022 +:10ED30003E400C1003A400F90032400F10332410A1 +:10ED4000F10032400C90030200300000000000008F +:10ED500080046400B940A2410890022480E90022A6 +:10ED6000400B9012240089006E411890422400B993 +:10ED7000042A410B90036400F9002A400A900A20FB +:10ED8000001000000000000018012480B942624811 +:10ED900028900A2400B10022400B10022410B9026E +:10EDA0002E4008D002A400B10022400B900224049F +:10EDB000B9002240081002060040000000000000D8 +:10EDC00008040C00B12060400812020400A12020B9 +:10EDD000400B1202048091202D680852120400B1E9 +:10EDE00028284A09128244A0B12C284A0A12820219 +:10EDF0000100000000000000B80D6000F8003214AF +:10EE00000C80032000F85032140F85030140F800F5 +:10EE10002E0028C003A000F82430080F8223208091 +:10EE2000F82032080C82032E03500000000000007E +:10EE3000981DE408F9103F408F9113E400ED103F56 +:10EE4000500F9103E440A5103E440F9103F404F9E0 +:10EE5000283E4B0B92A3E4A0E9283E4A0F9283E69A +:10EE600006700000000000001805F400CD003340DB +:10EE700080D001F400A50026400F90032600F18801 +:10EE80003E680D98834400C9C03A400C980324089A +:10EE9000F9A032780F9A030600700000000000000D +:10EEA0003810E0028800A200088002E0000A002278 +:10EEB000000B80022000B8402E14088043300088E8 +:10EEC000A0222A0A8A42A005B84232380B80020EDC +:10EED00004300000000000000805C4039100244035 +:10EEE0000B1002C411B10420411B10224500B500D3 +:10EEF0002540095002540181402C400914924400DD +:10EF0000B140244C0B140A420170000000000000C4 +:10EF10001815A400990024420B9002E401992026C0 +:10EF200040CB90026400BB002F410AD0023400891C +:10EF30000026400B1002E400310062400B900246B4 +:10EF40000460000000000000A015C400D901365084 +:10EF50002F9003E660F98036520B900A6400F900A6 +:10EF600036400D9003640209003E400D900364009A +:10EF7000B900B6400F900368047000000000000064 +:10EF80002801A400E1003A410C9023E620E900BAF0 +:10EF9000700F9003A400F9003E400D1013A700F974 +:10EFA000003A400E9043A408F9003A400F90038ABB +:10EFB00000600000000000002810A020F8003200CF +:10EFC0000F80832100F0003A11098003E000C8019E +:10EFD00030010C8003B000D00034000D800320000D +:10EFE000C80032000C80030A04200000000000006A +:10EFF00028053800BE00228003E8021A08BE482215 +:10F00000800AA003B800CA0822800FA40208008A60 +:10F010000022808DA0022800DA002A8108A0028A3E +:10F02000004000000000000028054400B30020401C +:10F030000B30020800B06468C108B022CC0C938089 +:10F0400000C04836028800B30024C00830060C0116 +:10F05000A3022CC008B0020A00500000000000000B +:10F06000A0011408B50021400B38821C21B70023F1 +:10F07000E84A72269E408F81AB404270523800A30E +:10F080002220C44931021E0AB7222DE8087202A8C4 +:10F090000040000000000000A8081200F68021E0F7 +:10F0A0000B780B1E00B4823BE84C7C13FE02978069 +:10F0B00033A00838039A00F78835E20C78E30E0095 +:10F0C000E3E834F80C3C232A0200000000000000B2 +:10F0D000081DA804F1003E420FB013EC00FB00BE77 +:10F0E000CC1EB607ED80FB0036000FB0436800CBA6 +:10F0F000303ED80FB60BED40CB003AC02FB603C25E +:10F1000006600000000000000005F240FB913D4C4D +:10F1100080F803DE40C6801BF04FFD07FF00CD8066 +:10F1200033E00C6803BA00FF8033E007F8033F10B8 +:10F13000CF803FE00CFC03000070000000000000E6 +:10F14000A8119000B5C02D40086202DC20D6022133 +:10F15000C88F7002DC81B50081440D61221804B7AC +:10F160000035C00B7002BC00A7012DC0087003EA77 +:10F17000046000000000000000009001B6012FC0F4 +:10F18000187002DC0A961029C14B7006DC1085004D +:10F1900025800860821A20A30025C00B31025C4044 +:10F1A00087002DC008700200002000000000000051 +:10F1B0002014C800B1002C40882002ED008A602095 +:10F1C000C00A3002CC04B10024002824020A003313 +:10F1D0000024C00BB002CC00A3002CC088300288F1 +:10F1E0000430000000000000A815A000FB003EC68F +:10F1F0000C8003E50009C8ABE20BF002FC004A00FA +:10F2000036C0089003A600FF0033C00FF0037C0057 +:10F210008F002FC028F0022A0460000000000000C8 +:10F220008000E100FA013EC00F8003EC00F9403E8F +:10F23000C007B003EC00FA003A400F9023E500FB52 +:10F24000003EC00FB003AC00FB003CC00FB023E099 +:10F2500000300000000000000110F000FC203FC062 +:10F260000CC803FC20CD81B3C24FF003FC00CA00E0 +:10F270003C800CD0823601FF003FC00FF0033C08F9 +:10F28000CF043AC05CB003C044300000000000006E +:10F2900081046204B8402C60088902EE80A9602ACB +:10F2A000C00BB0038C00AA402E000810022681EB90 +:10F2B0000026C08BB0136C00DB002EC03DB002E016 +:10F2C000401000000000000080052300BB032EC892 +:10F2D00009B002EE008B1026C00BB002EC00A800B3 +:10F2E0002EC0088822A480BB002EC04BB0220C0088 +:10F2F0008B002EC00BB002E00040000000000000B8 +:10F3000008040000B2002EC0292802EC01A002204F +:10F31000C0093002CC00A0002C40080042840093B9 +:10F32000006CC00B30064D0093002CC0083002C2A8 +:10F330001100000000000000000D6000F8202FC048 +:10F340000DB003EC00CB0033C00BF003FC18E80059 +:10F350002E80088003A400BF003FC00FF0433D1182 +:10F36000CF033EC15DF023C0035000000000000049 +:10F37000A01DF000FC103F400EE003FC00FC003F2D +:10F38000C00FF003BC00FC003F002FC0037400EF6F +:10F390000027C00FF003FC18FF003FC00FF003E888 +:10F3A0000670000000000000C015FC889C293F0882 +:10F3B0000FD283EC00FF083F280FCA033C41CF2047 +:10F3C000732C0CC0033020CF6033D80F78033F80FC +:10F3D000DD9233C80F5003300070000000000000C1 +:10F3E0008010E54088402E048B9402E400B9000EA2 +:10F3F0007F8F9E836582CF683E508D04922F04D309 +:10F400004074DC0DA2022040890022F00B980220FB +:10F4100004300000000000008805C809A0852C0108 +:10F420000B0010CC40A2082C00DB110289009330A5 +:10F4300020050813028008A36060C00AB082088417 +:10F44000812020D00B1002A20170000000000000FB +:10F45000C015A41288806E200B8882EE00BA812E1F +:10F46000605A9802A2008B002A6008111A2C00BB77 +:10F470000022C008B80A2800812002C00B9002B008 +:10F4800004600000000000004005ED00D9803E202F +:10F490004F9800EB20FBE02E600B8C62AE208B00BF +:10F4A000226008BC03A020EB0022C10A180B250033 +:10F4B000D900B2C00F900B90047000000000000053 +:10F4C000E0019488FF003F010FD001F008DD013F0B +:10F4D000420740035C00AF003F400FF800F000DF40 +:10F4E000003FC00FC023F450FD803FC00FD0037811 +:10F4F00000600000000000004000AC00D9003E4069 +:10F500000F9403A820CA403A400F9403EA08FB0076 +:10F510003A004CF6232C30CB0036C00D9003A102EC +:10F52000D900BAC00F9803100420000000000000AA +:10F53000C80524008A002E400B9502E0088880222E +:10F54000708F8C02E000BF02200008B8020E00DFBE +:10F550000023DD0898822A00898023C00B501A32CC +:10F560000040000000000000E00544008305244145 +:10F57000091002CE0083902C801B2482CC00BB009B +:10F580002C8008040804018B0022C02812026C8021 +:10F59000814824C40B100238005000000000000015 +:10F5A00020013E4286802D600B6802F6908D8021FE +:10F5B000220B5802D740B79021E00849921E53977A +:10F5C0008121E048C80A5222858825E00B580208AC +:10F5D000004000000000000048080C00830034C018 +:10F5E0000F0003CE20C3307C940B3483CC14F30281 +:10F5F0003C800C04030460C300B0C00C1003EC009A +:10F60000C9003CC40F1103120200000000000000FA +:10F61000401D9C00EE013FC04FE103D440F5167A37 +:10F62000C04EF003F41037053DC00FC00BDC40FFA7 +:10F63000003BC20ED007BC02EF003BC60FD003D088 +:10F640000660000000000000A805F400DD8433809F +:10F6500004F0036C02CB027EC01FA053EC00CB2051 +:10F6600034400CD00B2010EB001EE00F300B2C00B0 +:10F67000C10032C00F9103EA0070000000000000DA +:10F6800048119C0087002180086000140085002D2F +:10F69000800B7052D404832829C02850035000875F +:10F6A0004025C80F60020400A7003DC80B5202D2DB +:10F6B0000460000000000000C0008E00958021E082 +:10F6C0000938021E11A7802DF00B7852CE0A9795AB +:10F6D00021E0195C020E00A78029C80BF8021E2049 +:10F6E0008D8021E00B5802F0002000000000000097 +:10F6F0004814CC0082E0A0E82930060E50AB802CE4 +:10F70000F00B3142CC00930028C40998024C2883A6 +:10F710000024C00AB0020D00A25828C00B1002D26B +:10F720000430000000000000E815B900DE8031A0C0 +:10F7300009E20B7804EEA42FA48BEC02D800DA00C7 +:10F7400027810DEC061B00EA043E800BE0033B0022 +:10F75000CEC022800FA003FA046000000000000069 +:10F760004800E080F8103E050E8803E00898403E0F +:10F77000000F8483E140E8003A020E8043E140F844 +:10F780000036000F8003E020F8003E000F8003D217 +:10F7900000300000000000000810C400E9003E40F6 +:10F7A0000C90030420E99032680E9803A400C10075 +:10F7B00030400C94832408C9003E400C9003A40000 +:10F7C000C90030500C1A0302043000000000000091 +:10F7D0008004640089402E5028900A240889061667 +:10F7E000610B9C02E420A90036400D90022760A91D +:10F7F000002E4028901A24008900364028980220C4 +:10F80000001000000000000018052C00A9082EC2FE +:10F810000910002400A9000640899606E600890028 +:10F8200022C00890022402890024400890020C069D +:10F830008300224008900206004000000000000003 +:10F840000804050081442C500814020580812064BE +:10F85000701B1402E480A120644019120A0480A1E4 +:10F86000002C5018140285008140244040100202F0 +:10F870000100000000000000B80D6000E0003C0046 +:10F880000D80020000AA5036000F8003E140C852EC +:10F8900072140C05162008C8503E010C8003A00409 +:10F8A000C800B2000C800B2E0350000000000000C6 +:10F8B0009819F502FD403FD00FD423F444FD147F86 +:10F8C000500FD407F440F9103F5007D123F440F90A +:10F8D000401E5007D00B7500FD023E500FD403E6CA +:10F8E00006700000000000001805F600C9A83E726E +:10F8F0000F9803E6C0FDA0B3400FD0037780CD90F2 +:10F900007F400FDAA31690A9C032604CB1032400E7 +:10F91000C100336A0BDA030600700000000000002B +:10F920003810E34088E02E300B8D02F340B8E876C3 +:10F93000004F800A228088906E288F8A036144F8E5 +:10F94000E13E2A08880342A0DCA03E100B850A0E87 +:10F9500004300000000000000805C4A085082D4800 +:10F960001B5282D480B11420400B18020582810002 +:10F970006C420B12820400A16021500B50021490C3 +:10F98000952C28400B1002020170000000000000BE +:10F990001815A4018D442F400BD402F404B9082299 +:10F9A000400A92022C8489002E400A14026C80A91D +:10F9B000012A4009500A5C028D602A400B904206E1 +:10F9C0000460000000000000A015E662C9023E5479 +:10F9D0000F9003E400F94022460B98036720C90109 +:10F9E0002E690B940B2520A90022402D920A262275 +:10F9F00099002A408F900328047000000000000046 +:10FA000028018602F9003E400F9003E680F1A03EF7 +:10FA1000620F9883C620F9003E490F9083E400717D +:10FA2000023E400E900BE680F9803E400F9003CAE4 +:10FA300000600000000000002810A010C8003E0078 +:10FA40004F8043B000C84132000F80032102C8023A +:10FA50003E104C80030120C8003B000CC003B000E6 +:10FA6000CC0432000F80030A0420000000000000D4 +:10FA7000280528008A802E800BA002F8048E00231F +:10FA8000B20EE082F9048A002E810CE00A3A80DA94 +:10FA90000022B608A00228008E002A800B600B0A04 +:10FAA00000400000000000002805440293812CC0A3 +:10FAB0004B3002C80083CA20E019B0068C008104D4 +:10FAC00044400834020D0083002A0008000A8040E8 +:10FAD000880020C00B30024B0050000000000000E6 +:10FAE000A001040297082DC00B6006CA00830921FB +:10FAF000C00A7002DC0085312D680930021C1493A5 +:10FB00002020C008F0429C028F0029400370122878 +:10FB10000040000000000000A808160096843DA0E8 +:10FB20000F78039A028780B1E00B7803B600C5A076 +:10FB300035610C78131E02C78029000C4803900021 +:10FB4000C48031600F58036A02000000000000000A +:10FB5000081DA400EA003E800FA003E808FB003E59 +:10FB6000800F9013E408F9003C502EF003E808FBE6 +:10FB7000403EC00B30136C00FB003E400F3003C210 +:10FB800006600000000000000005D600CD8033E0D4 +:10FB90000CF803FA00FD803FA00DF803FA40CDD029 +:10FBA000777E0CE8431E00CFD83FE00CC8033AC470 +:10FBB000CC8033E00CF8030000700000000000006F +:10FBC000A81194028D0021C0086003D81035208B45 +:10FBD000D40D6403D8C085002F4E0764029C02D761 +:10FBE000302F040DF10B5440AF0035400870022A4D +:10FBF0000060000000000000000094408418218094 +:10FC0000087002DA20B5000900087002D4048500EB +:10FC10006D4C8960025C4097006DC00940025880BD +:10FC20008488254008D00200002000000000000069 +:10FC30002014C6488000208008AC02A800B100A8AB +:10FC400088092202864281006C520B2002C752832F +:10FC5000002C000834826700A3802040083002088E +:10FC60000430000000000000A815A300CBC0B24083 +:10FC70002C9082E600BB80BE78088E02EE008D00DC +:10FC800027600D900A6F009F022E0009B403678061 +:10FC9000CA40E4C00C30032A0460000000000000E9 +:10FCA0008000E080FB223E400F8013E400FB803E9A +:10FCB000400F9003E500F9003E400E7023AC20FB9E +:10FCC000003EC08F8003E920F9083E400FB013E0EA +:10FCD00000300000000000000110F000C6003200FB +:10FCE0000FD1833440CF003D400CD003DE500D00D7 +:10FCF00073400CD1037C408702B3000DF403240051 +:10FD0000CE2032400CD00300443000000000000040 +:10FD1000810461228A0022000B8040250089C32EC5 +:10FD2000200A9803A100890036408894020F01AB95 +:10FD30000032C008040A2900A902A2400DB00A201E +:10FD400040100000000000008005000089002261D2 +:10FD50000B900225019B882E60088802E800B10202 +:10FD600024401890022C00AB0120C108B4422C00A2 +:10FD7000820022C008B00220004000000000000005 +:10FD800008040000010020400B000A044683012CF7 +:10FD9000401A000680008100244008200A0C01A3BC +:10FDA0000024000880020000A10020400930020267 +:10FDB0000100000000000000000D6002C8002200E9 +:10FDC0000F90022500DA003E400C9002CC00FD00AE +:10FDD00037400C10132C02AF0032C00DB0032C00C2 +:10FDE000CA0032404C900B0001500000000000009F +:10FDF000A01DF000FC003F0007C003F41CF4003F0E +:10FE0000001FC023B0029D013F408FC007FC02FFCE +:10FE1000007B000FC003F000FD003F400F7003E8BF +:10FE20000670000000000000C005FA00CB803F24EF +:10FE30000AC103FC24CD20370A0CC2833080DC02C7 +:10FE40003FCC0DD9033C58DF3033C80DF4233C4080 +:10FE5000FF003FC54FF023B000700000000000001D +:10FE60008000EC020B822E080DB702FD0083180AF9 +:10FE7000580A84A2A5A089302255081262BD908F2D +:10FE80006221D648F3023CC5BF482FD84BB702E0E9 +:10FE900004300000000000008805EC0083002E897B +:10FEA000280002ECA08922288208120228409A0821 +:10FEB00028C888B20A0D109310A0C82830024C0040 +:10FEC000B3602CC40B30C2E20170000000000000DF +:10FED000C015AC408B002E8008B102EC028B0020D4 +:10FEE000D00A9002AC000B0126400894028C008BD3 +:10FEF0000022C008B0022C10BB002EC00BB002F0D4 +:10FF0000046000000000000000148C20CB023E2D95 +:10FF1000088003EC08C9801E040CB00301085018C7 +:10FF20003E400C04032C00DB0132C00CB00B2C084B +:10FF3000BB003EC00FB00380047000000000000052 +:10FF4000E100BC00FF003F600FC023EC00FFC0BE1B +:10FF5000608FC923F650ED80B850AFC003FC00FF9E +:10FF6000003FC10EB003FC04FF023FC00FF003F8D6 +:10FF700000600000000000004010AC00EB00328088 +:10FF80000D90032C0089003E988C30036180FA406C +:10FF90003E402CA5032C00FB013CC02C30032C0060 +:10FFA000DB0232C00FB003D00420000000000000CC +:10FFB000CA002E808B82A0C08C90023C008BF02265 +:10FFC000C20D800227008B1022400880223C00BF17 +:10FFD000002FC008F0023C00BF01A3C00BF012F2DA +:10FFE0000040000000000000E0054C00B31C204071 +:10FFF0000800062C009B0020D00820024C00A30023 +:108010002CC008100A0C00BB0028C00930020C005C +:10802000B30020C00B3002F8005000000000000038 +:1080300022111E0097A021A00879021E009790210E +:108040006009E8223E00AF8421E4485C021E00B7CC +:10805000902DE00978001E09B39021E40B7802D836 +:10806000004000000000000048182C40B3B032402F +:108070002C81130C42D100B0C08C30034820E301A6 +:108080003CC00C30030C00F3103CC0CD320B0C4054 +:10809000D30030C00F3003D2020000000000000007 +:1080A0004015BC00E7003F800BF103FD006D00327E +:1080B000401F7007D841C3103BC00FD103FD00FF24 +:1080C000103FC00EF003EC10FF083FC30FF003D0C9 +:1080D0000660000000000000A815EC04FB023E4012 +:1080E0000BA003AC00DB0036800DB003AC00E80051 +:1080F00036C12E90032C00CBA036DC0FB0032D68C8 +:10810000FBA092C20CB103EA007000000000000066 +:1081100048119C0837002DC00BE0021D80B70423D6 +:10812000000A40021C18840025C01850320D80A39C +:108130003021CC0B34821C10B73021C8087002D219 +:108140000460000000000000C0009E20B7802D6089 +:108150000BFC229E008D8025A008F8229200B4809E +:1081600025E008F8021E0087B021E0097A021E18F7 +:10817000B38021E0087802F0002000000000000039 +:108180004804C520B3012CD80B3C022C08B90020B0 +:10819000030A00822208900D26E40810020C00A3B6 +:1081A0000022C00B30026C00B30022C0283002C293 +:1081B0000430000000000000E8059900FA023F903A +:1081C0000FEC23A800DA0035800DE002BA02FEC2EF +:1081D000B6A00EE40B2800CA00B2800FA00B280046 +:1081E000FA0032800CA003FA0460000000000000D6 +:1081F0004800E000F8003E000F8203E000F8003E77 +:10820000000F8103E040E8103A004F8483E000F85B +:10821000003A000F0003A000F8003E000F8003D2D8 +:1082200000300000000000000800E500C9023E40E8 +:108230000F90232400C90032682F10032400E91492 +:1082400032400D900B0400D9001E400C9003240016 +:10825000C90036400C90030204300000000000000A +:108260008014640089012E404B9012240089C2A220 +:1082700060889003640089C1A240481603640289A3 +:10828000002E40089022240089003E4028900A20B9 +:1082900000100000000000001804240089022E4095 +:1082A0000B1002240089102240899002AC00A10822 +:1082B0002240099802A40089002A40089002240064 +:1082C000890026400810020600400000000000005F +:1082D0000800240081002C410B120204818120221D +:1082E00048081202C481812402480A900284A081B5 +:1082F000286C4A0812D204A181282C4A0812820252 +:108300000100000000000000B8086140C8002E1401 +:108310000F850B2142CA5022140D8543A140E8501D +:1083200030000D8502A1C0D8203A082C820B208293 +:10833000C82034098C82032E035000000000000086 +:10834000980DFC02F9003F404FD103E440F514BF03 +:10835000440D51235C40F5101F4E4D50036408F945 +:10836000283E4A8F9283E4A0F9283A4B0F9283E685 +:1083700006700000000000000805F440FD003040D9 +:108380000C90032400DD003B400E900374005D0060 +:1083900036640DD000A600F94032780C99032440D1 +:1083A000C99032500F9B03060070000000000000CF +:1083B0003810E280B800220108800A200088002AD4 +:1083C00000088002200088002220088A8BE100B883 +:1083D000802230280D022200D8E422280B8F0A0EBA +:1083E00004300000000000000805C480B100A04077 +:1083F0000810020400890008400A904244009100DD +:10840000205828900285008120A04C09120A04807F +:108410009140A0400B10020201700000000000001B +:108420001815A400B9022040089002040089012216 +:1084300040289022040089102240089002E400B1F4 +:108440000022408190020400910022400B9002061D +:108450000460000000000000A015E500F10032609B +:108460002C92132402D1103A400E12036604D90054 +:10847000B6400D1903A400F9003240099001240010 +:10848000D90222400F900328047000000000000071 +:108490002A01A500F9003E640F1003E400F9813EB3 +:1084A000668F9023E480F9043E408F9003E404F942 +:1084B000003C400E9003E400F9003E400F1003CA58 +:1084C00000600000000000002A10A000F8243E0018 +:1084D0002C84032000B8203E008C8003A000708212 +:1084E00032000F80032008F80032002C800B200897 +:1084F000C8003E000C8003CA0420000000000000F9 +:1085000028052804BE803A8008A00228048E006D49 +:10851000900DA0023A008E80A2800EE00B6800BA97 +:1085200000228008A0022800DA002E8008A002CADB +:10853000004000000000000028814C00B1002CC069 +:108540000830020C18A3022C108830068281A0008B +:108550002AC00B300A4C00B30020C01AB0028C01B4 +:1085600083002CC0083002CA005000000000000048 +:1085700020011C10B40A2BC80831261C0086002DCF +:10858000C00972021D00A54029C00A60025C88B3C0 +:108590002025C80A72029C8097202CE8807202E88D +:1085A000004000000000000028081600B5803DE2F1 +:1085B0000C7A8B0EC0A7812C200CFC039202EF805A +:1085C00039E40BD8011F00F780B3F48E79038E00D5 +:1085D000C7C43DE82C7B03EA020000000000000055 +:1085E000081DAC00F8003EDD87B603EDCCE9003E87 +:1085F000400FB007CC100B0036D80F8043AD80FB86 +:10860000283AC00DB4036CE2EB603ED40FB003C255 +:1086100006600000000000004005FE00FE903FE5FF +:108620000EF8033E10FF9017600FFC037A00EE80F7 +:1086300037E20E780FFF40EF881FE00CF883FE80D2 +:10864000CFD0B3F00CF8C3100070000000000000A1 +:10865000A8119C40B4100FCC0072021C00B6020995 +:10866000C028F0029800A60021C00B6003FC02871E +:10867000002DC0087002DE008F1021C008F0036AD0 +:10868000046000000000000080009400B6022FC2C9 +:108690001A30801C00B60801400AF002180087005A +:1086A00021C00BD0029C10870029C0087002DC4456 +:1086B000871064C00870020600200000000000005F +:1086C0006014CE60B0002CC008340A0C08B004005E +:1086D000400830A28980A26220E00B000ACC088307 +:1086E000006CC0083052CC00830024C0083002580F +:1086F0000430000000000000A815AE00F8003FD0D4 +:108700000EFC033C00F90092840FFC03640080001F +:10871000B7C30FB883BC04EF003FC03CF003FC02BA +:10872000CF0037C028F0132A0460000000000000CA +:108730008000EC00F8413EC80F3203EC00F8003A2C +:10874000C40FB103C400F90036C00FE40BEC04FB06 +:10875000003EC10FB043EC04FB003AC00FB003E48D +:1087600000300000000000000110F400FC803FC059 +:108770001FF0033C08FB0033802EF013A404CB0051 +:10878000B9C02CD80B3C00FF003FC00970002C047E +:10879000FF003FC00FF003C00430000000000000E5 +:1087A000C1006C00B8802EC00BB0036C00B9162855 +:1087B0007208B0222740DB0022C008BD822C08BB13 +:1087C000002EC048B0022C00BB002EC10BB002E04E +:1087D000401000000000000080052C00B8602EC092 +:1087E0000BB0022C00B1002A844A3022AC209880C1 +:1087F0002AC0083002AC003B002CC00AB002AC0812 +:10880000BB002EC00BB042E00040000000000000A2 +:1088100008040C01B0002CC00B30024C04B0002A3C +:10882000800830020000100428C00820428C00B3E9 +:10883000002CC042300A8C00B3002CC08B3002C226 +:108840000100000000000000000D6400F8503FC06F +:108850000BF0033C00FA0432800EF023AC00D90088 +:108860003BC00C9003BC04FF003DC02EF00B3C004D +:10887000FF043FC00FF003C00350000000000000E1 +:10888000A01DFC00FC003FC007F003FC047C02B507 +:10889000000FF003F000FC0037C00FF0137C00FF66 +:1088A000003FC00DF0036D00FF003FC01FF003E864 +:1088B0000670000000000000C005D200D580330A19 +:1088C0004CF803F200FC0037261FCA03BCC4CF20BB +:1088D00033E40F78033E44CF003BCE9F6813D000B3 +:1088E000CD80B3600FFA83F0047000000000000038 +:1088F0008010E080C928223008B222EA01B8822024 +:10890000504F9C00A8D1DB10A6E017B803EC80DB29 +:10891000081FD00BB802F600FB8022400BB00260AB +:1089200004300000000000008805C4208180200081 +:108930008B3082C000B01028088B1130C48490287E +:1089400024C80B30024C00831004C80B3002CC004A +:10895000B30024400B3002E2017000000000000070 +:10896000C015A600810022100BB012EA20BB002A1D +:10897000700A9C026200988826C802B2028E088B98 +:108980001822C00BA002EE203B0026400BB0027064 +:1089900004600000000000004015E000CB003280C1 +:1089A0000FB003E700B8523E204B0C43EF829BC050 +:1089B00032C00BB0026C018B802EC00BA083E6008E +:1089C000FB0036400FF003D00470000000000000F0 +:1089D000E001B002FF043F900CF101F4087D803704 +:1089E000000FC0239800F7002BE00FF823FC06FBD4 +:1089F00083BFC087D003DC00EF003BC00FB001F89D +:108A000000600000000000004010A600CB00338092 +:108A10000FB003E110F240B2003D94172D44FA412B +:108A200032C09FB0232C02CB4032C04F90033D0098 +:108A3000CB003E400FB003100420000000000000F7 +:108A4000880526008B7120D5039902E000BB8022A7 +:108A5000601C80036000B80222C20B32022C018F1E +:108A600002D7C00BA0036D4053802EC00EF043729E +:108A70000040000000000000E005680280002400C3 +:108A80000B3526C200B09020C08800024F20B302F0 +:108A900060E21B38020C00880060C00B34824C027C +:108AA000A1902C400B30023001500000000000006B +:108AB00020013A088CA02D204B7802DA00B29021D8 +:108AC00066487902DE40B791A1E0DBF8021E4084DF +:108AD0009001E08BF9025E0197802D600A780048D2 +:108AE000041000000000000048080C00800024046E +:108AF0000F3203C4A0F14230C42C31024400F11102 +:108B0000A0C00B300B0C42830000C00F30034C029E +:108B1000E3003C400B3001120200000000000000A6 +:108B2000C01DBC00FCA533C00FD003FC01BF003F3B +:108B3000C40E7103740075103FC005F003DC40FFE4 +:108B4000043FC00FF043FC007F003F400EF003D015 +:108B50000460000000000000A804E800F204B380F4 +:108B60000FB80B2C00EB8032C00C20132E08CB0169 +:108B700032C50FB103EC48C81032FA8C38033C9070 +:108B8000CB003E400FB013C2047000000000000094 +:108B9000C8109800F60061810BF0021C00D700B7E6 +:108BA000800C7002BC108F0021C88B7243FC88DCE3 +:108BB0000037C80D50021C2287002DC00B7002D355 +:108BC000046000000000000080009E00B680A9A0A4 +:108BD0004B7C025E30A38821F00878021600858065 +:108BE00021E00B7802DE008780A1E408D8024E0065 +:108BF00097802D700B7802C8002000000000000054 +:108C00004814EC00B20028C00B10024E90930222D0 +:108C1000F00838428C42830422E44B38028E4083B1 +:108C20000020C00938224E2193002EE00B3002DBD9 +:108C30000430000000000000E815A801FA003B899C +:108C40000FA0027808AE4023802C6C0B3A008E8C6B +:108C5000B2000B8082E0028E0022800CE8027B8052 +:108C60009A803E800FA003FA04700000000000000C +:108C70004800E009EC0036210B8013A100F8603EAB +:108C8000000F8103E000F8003E000F8043E010F881 +:108C900000BE000F850B8000E8103E000F8003D25D +:108CA00000600000000000000810E402C902304823 +:108CB0000C9913A402C9003E420C908F2400F900C5 +:108CC00032280C8803E000C900B2400F9003E7008F +:108CD000C9103E400C1003020420000000000000F8 +:108CE000800464018980A248289242C50089402EF0 +:108CF000402C90062500B9002250089802C4008933 +:108D00000176404B9202E50289002E400D900360EF +:108D100000100000000000001805240C8520A2406F +:108D2000089006E50089402E40099042A4A0310039 +:108D30002250189102E400810022400B9006E400CA +:108D400089002E400990020E004000000000000043 +:108D50000004150085402040081426E40081002C02 +:108D6000401810028480B120A050081402E502814E +:108D70004020480B1006CC0081012C500914024AF7 +:108D80000500000000000000B80D60008C003200FB +:108D90000C8023E000C8003E140D8012A144F8515D +:108DA00032002C8003E000880422140F8007E000CA +:108DB000C8003E000D80032E03500000000000009C +:108DC000989DE400F9003F500FD003DC01BD423F05 +:108DD000504FD4437441FD103F101FC413F100FDE8 +:108DE000407E440FD043F501FD003F400F9403E661 +:108DF00004700000000000001805F400DF05336176 +:108E00000F50533410FD0433444F500376C1CDE06E +:108E100033600CCE03F6C0E1C0B6648F500B3682CF +:108E2000CD003E444C9EC3C601700000000000000F +:108E30003810EA2880A0B2040B8A836000FA00365A +:108E4000288B8003E3C8C8842214088A02E280D8F1 +:108E50008234341B8003600488002E200A8E42CEA8 +:108E600006300000000000004805C480810804416D +:108E70000B92020400B1002C400B18022400B160D8 +:108E800026400A1602C500A1C020480B90024700E8 +:108E900091012C48181202D201600000000000006D +:108EA0001815A40C8B04A2500B91022404A9012EC6 +:108EB000420B9002A400A90026600A9002E60081FD +:108EC0000022408BB002240899102E401A9002C64E +:108ED0000020000000000000A015E500C900364099 +:108EE0000F10022500B1002E600F10122402B9A04D +:108EF000A4402E9103E600A90022400B19806404CF +:108F0000D9812E404C9003E814700000000000004E +:108F10006801A40AE900BE480F980BE400F9C436C2 +:108F2000701F9203E690C1903A408D8803E400F9E7 +:108F3000903E400B9803E640E9003E400F9003D27C +:108F400000600000000000006810A102D820B210EC +:108F50000C80832140C858B2104C800B2000F8428E +:108F600032000F8003E002D80072001C8000200055 +:108F7000F8043E000F8003020420000000000000FF +:108F800028053804CE41238008E0023910AE402283 +:108F90008008E0021A00BA002BAD038002E800CA84 +:108FA000002A800AE0021800BA001A800BA0034AC7 +:108FB000004000000000000068056C128900A0E07D +:108FC0000838020D88830004E00838320E2531018C +:108FD00024E08B3802E401830020C00830028C00BA +:108FE000B3002EC00B30020A005000000000000049 +:108FF000A0011420862029B008F0823E04A7002199 +:10900000708870921C20BD0069C00B7602D4808FDE +:109010002129E00A60869801B7002DC80B3B026049 +:109020000440000000000000A8083E00C7A0B0E017 +:109030002C780B1A00C38037E02878031A08F590C3 +:1090400035E00F7C12D682C79021E40878039E0099 +:10905000F5803DF10F7803220200000000000000BF +:109060000819A400EE8036C14FD003C800FB003EB3 +:10907000510FB003E408F1603EC00FB003C500EB30 +:10908000103EC00FB0096C00FB003AC00FB003C225 +:1090900004600000000000000001FE00FD88336055 +:1090A0000FF903CE40D78437700CD8233600C5881B +:1090B00033E04FF813F728DF8037E20C58033E0007 +:1090C000FF903FE00CF803000020000000000000CB +:1090D000A9119C08F600A1000B6302D6308541312E +:1090E000C80850231C00D520B1800F7003B400C7FE +:1090F0000021C00F40A35840B7003FC40AF0022A25 +:10910000062000000000000000009C40B71021D2A3 +:109110000B7002DC42860025610851025000950068 +:1091200025C0097082D400870024C00850025C006A +:1091300095042DC00870020000200000000000000F +:109140002014CC08B2D020E04B0802C4008080205C +:10915000F0081A028548811020400A3002C6109398 +:109160000020C00A1C020D40B30068C40AB0020906 +:109170000030000000000000A815AC01FE0032F035 +:109180000F8803E600C8C836F628A60A6D009D00C1 +:1091900032000BB003F603C70037C0089C0A6E000C +:1091A000BB002FC00CF0032A046000000000000088 +:1091B0008000E401EB403E804FC103E400B8083A70 +:1091C000408FA4136C20F9003E700FB003A440EB55 +:1091D000003EC00F9223E800F9803EC00FB063E06C +:1091E00000300000000000000110FC08CE0833C071 +:1091F0000FDA033000E40435C00DA0032800C500D9 +:1092000033000BFA03F403CB0031C00CD403142059 +:10921000CD8023C10CF002084430000000000000A3 +:1092200081044410CBD022C00B94022284B8C60221 +:1092300040082802A580890022600BB80264008BD8 +:10924000002AC0C800036600810000C00DB00AA853 +:10925000401000000000000080052C001300224098 +:109260008B24022A00BB82224000AC0284008900C9 +:1092700022220BB002C4009B002AC008B0022E00BC +:109280008B102AC008B002A01040000000000000AF +:1092900008040C10830020010B20020080B1002084 +:1092A000C108200288018100A0000B300244019B0C +:1092B0000028C008B002480689002AC0093002828E +:1092C0000500000000000000008D6C00C300B2C06B +:1092D0000FB0032820FA00B1400DA007A000CD0078 +:1092E00022000FB003F4009F003BC02CB00B240001 +:1092F000C900BAC00CB00380035000000000000099 +:10930000A01DFC06FF02AFC00FC003F010FC003F21 +:10931000C09FE013F000FD043F404FF0037400EFE6 +:10932000003FC08FE002B401FD0437C00FF0436876 +:109330000470000000000000C005FC00C720B3C896 +:109340001CF1037C20CF0A3FD00DF0037C808F32CC +:1093500033C40FF1833CE0CF1033C40DF2833CE201 +:10936000C78017CC4CF38330007000000000000071 +:109370008010E3408868223008060201A188C40EEC +:109380001408878001C0285002048B8602A19888A7 +:10939000412A040A8482BD808B082BC488F40360B0 +:1093A00004300000000000008805CC088240201036 +:1093B000082112440482042C0889900244218B0065 +:1093C00024888BA00040848930224888B002CC08D1 +:1093D0008820A4C800320A220170000000000000AA +:1093E000C015A000890022C1889062280889082E33 +:1093F000C008A0022808A80026420B9002CC508A80 +:10940000222A860A8002EC0088842AC108B026300D +:1094100004600000000000004015F002CF0033C0DF +:1094200048F84379008DC03F308D60837860C45820 +:1094300037200F58137B02CCC431200C4403EC02BC +:109440008B8036C024B012100470000000000000B1 +:10945000E0019C00F4103D006FC913D412FE903F50 +:10946000F00FDA23F414FF023BF00FEA23B600FFFB +:10947000823FE18FF403BC00FF003FC0AF7003F8F0 +:1094800000600000000000004010A000CA00320888 +:109490001CA003A520CB40BA101FB003AC00EB000A +:1094A00072900CB4032904C95232500CB4030C005E +:1094B000F84032C10EB00B50042000000000000044 +:1094C000C8052D80898022D90890222A008854223C +:1094D000C08B80222019C80022408D801A2410D20F +:1094E0004422810D80037C00B00037C088F0023236 +:1094F0001040000000000000E0054E008100A0F0D8 +:109500000890028902800022C00B0022A000B00057 +:1095100020400800020400826020800800020C083D +:10952000B20022C0083002380050000000000000E5 +:10953000200103108E902324086B0216608F802177 +:10954000280BF9061E408F8023A44979023A409DDA +:1095500090236409F8025E40BE9024E42879020852 +:10956000004000000000000048080C42C009300024 +:1095700028020384008A2030C48B11038450B30076 +:1095800020C00CA4220400CB4030C50C30030E4098 +:10959000F31030C40CB00312020000000000000001 +:1095A000401DB004FB043DC00FF243F804FD013F31 +:1095B0000C0F6103F848F4003D010FD003C800FC14 +:1095C00004BD040B4803FC18FF143FD50DF00390B5 +:1095D0000660000000000000A805E000F90132C0AC +:1095E0008E90032802D10032C00DA80B0800E800BD +:1095F0002E400C980B2E02CA00B2A06C80232D8046 +:10960000CA8032D00CBA032A0070000000000000AB +:1096100048119C00B600A3000860020400860429DB +:10962000000850421404A7000D804A600200008127 +:109630000021400870029D42860120C0083282123B +:109640000460000000000000C0009200BC806320A5 +:10965000820802520084C22320880C0233008480D6 +:109660002F21894C02121494C56421084C020E80EB +:109670009782A1EC08790230002000000000000071 +:109680004814CD44B30020C00830024D8003882820 +:10969000C0083C060F00A3432CC21B38020F009BDE +:1096A0008864D008B8028C10930020C008300A12D9 +:1096B0000430000000000000E815AA00FA0532801E +:1096C0008EA00B6900CA4032A03CA8032A00EA26FB +:1096D0003EB00DA1632820CA4036A00CE013280933 +:1096E000DE0032802CA0033A04600000000000007D +:1096F0004800F020F4003F000F4023B000EC003F92 +:10970000061EC213F088FC203F048EC003F080ECDC +:10971000403B0C0FC0A3E000E8003E004F8003D2A6 +:1097200000300000000000000810E400F9003240A2 +:109730000C90032400C98032400F9053E410C900FC +:1097400032400D9003E400F90036408F900324105E +:10975000C9013C400C9003C204300000000000002E +:109760008004474489002040089002250A81102285 +:1097700040489003C40089007640289002E410B964 +:1097800040B2400B9003640089002E41089042E0F3 +:10979000001000000000000018052402BD0023484E +:1097A00008D0061D048D0029C04AD022F40085008F +:1097B000614018D012FC00BD40A3404BF0020401F0 +:1097C0008B002E40089002C6004000000000000000 +:1097D000080436808520A34808520A148185202970 +:1097E00048085202B48085202548885202D480B5AA +:1097F0002021480B520244A281002C4A081282C246 +:109800000100000000000000B80D6000F8512200C7 +:109810002C85022148C800BA140F8512E142C850B5 +:1098200022000C0003E000F85032000745032080BE +:10983000C0013E082C8203EE03500000000000002F +:10984000980DE440F1103E44079143E458F9113477 +:10985000444F9102E450F9103C4F0F9383E4F0F928 +:10986000113A4F0F9103E4A0FD283E4A0F9283E680 +:1098700006700000000000001805F6A0CDA0B36837 +:109880008C9A033680C5A022600C9A232604F9A086 +:1098900032660C9A830620C5A022600C9B032648E2 +:1098A000C9003E780C9A030600700000000000001A +:1098B0003800E10088442295088512A142884002C0 +:1098C0009008840223A0BA4022A0088E92A3A0A8E8 +:1098D000402A1008AE02234088002E380884120E59 +:1098E00004300000000000000815C4008B12224064 +:1098F00008900244008140A05008110A0500B110F0 +:10990000A04808900204008140205028110244829F +:1099100081002C50081102020170000000000000BC +:109920001815A40289402240089412A50089282213 +:10993000490894022448B9142240089402A440A182 +:10994000502A50089142640089402E4008100206B7 +:109950000460000000000000A015E400C9003070A1 +:109960002C100B6600C94032500C90032620F9C021 +:1099700032700C90032620C90032400C9C03640016 +:10998000C9413E402C900B280470000000000000EC +:109990002801A400F9043E480F9003E488F900343C +:1099A000412F9C03E410F9003E442F9903E410F981 +:1099B000003E500F104BA410F9203C400F90034A7A +:1099C00000600000000000002810A000C8003E1049 +:1099D0002C80032002C04032001C040F2100C00470 +:1099E00038000F80032108C86030100F800220006B +:1099F000F80032000C8003CA0420000000000000C0 +:109A000028051A2082042F8008A00238008E8022A8 +:109A10008008E00228008A0022810B20022800DE54 +:109A2000E436800BA0422800BA04228008A002CAB3 +:109A3000004000000000000028054C0083012C803D +:109A40000830022E608290A0C04830020C028300D1 +:109A500028C00B300A2C0083C220C00B302A2C00F7 +:109A6000B300A0C0083002CA00500000000000008F +:109A7000A0013C0087012DC208F3123C008F012198 +:109A8000C86872221E04872021C40B70023C849F88 +:109A90000025C44B70021C04B78121C8087202E87B +:109AA0000040000000000000A8001E00C7813CA08C +:109AB0004C7A0B1A00C68030E008F8820E40CFF0D6 +:109AC00039E80F3A031E20C78031E30F38231F08FF +:109AD000FFC033F20C7E03EA020000000000000029 +:109AE0000815880A7B003EC10B3423C810FB023ED8 +:109AF000CA0FB743EC80FB002EC20BB483EDD0FA43 +:109B0000003ED90FB383EC80BB203ED82FB403C2F4 +:109B100006600000000000000005FE00F59131A085 +:109B20000CFC03FE00C48131EE8DF80A3E30CF8478 +:109B300033E02CF883FE10FE8033E00CF9193F4827 +:109B4000CFC033E004FC03C0007000000000000040 +:109B5000A8119C08B7A121C8087102F0A085202196 +:109B6000CE0870023C808F002BC5087102DC10B457 +:109B70000021C10AF3820C00870129C00871026A22 +:109B8000046000000000000000009D00BD2127824D +:109B9000007002FC048C00A7CCA870023C08AF0047 +:109BA00021C0087002DC00B70021C40870161C0A2E +:109BB0008F0021C0087002C00020000000000000DB +:109BC0002010C800BB4424E208B102C280018024F6 +:109BD000D08830020F52839128E4883D02CED0B065 +:109BE000B2A2C00A34120C02830028C00830024816 +:109BF0000430000000000000A815AC00FB01E440A8 +:109C00002CF043E5008A8837E000FA023D00EF00BF +:109C100033D10CF403FD00F94033E80CFC013C04A3 +:109C2000CF0233C02CF003EA046000000000000003 +:109C30008000EE08F9103AD00FB093EC00FB0B3A1D +:109C4000C08EB083EC80FB097EC80FB213EC00F924 +:109C5000003EC28FB24BCC04FB003EC00FB003608D +:109C600000300000000000000110FC00FF0833C0BD +:109C70001CF0037040C4C033C20FF0031C10C700B7 +:109C800031C00C70031C00C54133C00CF0232C0004 +:109C9000CF00B3C06CF0038044300000000000002F +:109CA00081046A00B99032F108B0020A10D900228A +:109CB000C10BB0022C00CB0622C088B0122C008849 +:109CC0008022C10DB0022C00830022C108B046E002 +:109CD000401000000000000080012E00B90022F0BA +:109CE00008B01264008A0022C00B30422C008B00A6 +:109CF00022C008B0022C008A0022C088300A2C0042 +:109D00008B0020C008B002E000400000000000000E +:109D100008040C04B102E4C108B022200293002020 +:109D2000C00B30120C028302A0C028300E0C02803F +:109D300000A0C049300A0C028B0020C0083002C2CB +:109D40000100000000000000000D6C00F92432C08A +:109D500008F0036400C800B3C01FF00B3C008F0084 +:109D600033C04CF0433C08C30031C00CF0033D4805 +:109D7000CF0031C00CF00380035000000000000051 +:109D8000A01DF004F9413BC04FF003F011FD003F6E +:109D9000C0877027FC00EF063FC00FF002FC08FCF4 +:109DA000003FC047F043FC0077003FC00FF003E8DE +:109DB0000670000000000000C005D200C701370C8B +:109DC0000FE823104AC4C031300CC9033446CF1009 +:109DD00033D00CF4033C58CF0033C02DF1033E02C6 +:109DE000CF213FE40FF203300070000000000000BC +:109DF0008010E4840B40224C0BA8022CC08B202244 +:109E0000C84A32022480832020C008300220008B00 +:109E10002132CA4832022C308F902E880BBD12207E +:109E200004300000000000008805CE20A340E04878 +:109E30004B20220C0282002A00082002048080208D +:109E400020C80802020C00800C60000820122C8838 +:109E500083002CE80B30026201700000000000005B +:109E6000C015AE00AB01A2600BA002200181002250 +:109E7000C00A901204208A0822C108A00228008883 +:109E800000244408A202AC008B042E8803B00270A8 +:109E900004600000000000004015EC00EA90322849 +:109EA0000FB6032008C9043AC04C90222400CB40CE +:109EB00032A80CB2032C00CB80B2E00CB00B040033 +:109EC000CB003EC04FB00B500470000000000000FB +:109ED000E001BC00DF803B810FF0C3FC00BE011F2E +:109EE000000FE023F400FF003FB04FF043D402FF27 +:109EF000913AE04EF0037C0CFF002F800F3003B846 +:109F000000600000000000004010AC01CA00725068 +:109F100004B4032C82CB0032E00CB8032704C8C879 +:109F2000B2A20C88032C00C1003E002C301B2C0474 +:109F3000FB103EC00FB00310042000000000000022 +:109F4000C8052C040350A2E00834423300880020E6 +:109F5000100D840325008A40229008A5022C008958 +:109F6000A43A4008B0022C00BF842E800BF052327D +:109F70000040000000000000E0056C808180248823 +:109F8000893C2621009000200208808200209B004E +:109F9000224088B0120C0883802CC00810020C00EC +:109FA000B3802C400B30023800500000000000004D +:109FB00020013E0A85A0A56008FB823E849F816344 +:109FC000E089791252809782216C187802120087FA +:109FD000A129E0085B021E00B7C02D600B780208C3 +:109FE000004000000000000048080C00810826C264 +:109FF0002C32130EA4D200B0001C21122402D12056 +:10A0000030C80C10030C00C2103C800C23030C4021 +:10A01000F3003C480F300B1202000000000000006B +:10A02000401DBC00FD20BB40077202F010ED103F48 +:10A03000C40FD163B480EF003FC80FF003D800FE17 +:10A04000343FC40FEB43FC00FF087F400FF183D087 +:10A050000660000000000000A805EC00C800338086 +:10A060008F28032000490232C00F90032000CB004C +:10A0700032404CB00B2C00CB8032C00E9E0324002B +:10A08000FB203EC00FB0032A00700000000000005B +:10A0900048119C008D0121C00B60021D00D60021DB +:10A0A000000BE00200008304204008704234028765 +:10A0B0000123C028510A1C04B7302DC00B72039233 +:10A0C0000460000000000000C0009E00A64021A027 +:10A0D0000B68020E008F8021E00B78021610A5801D +:10A0E00021E00818021E00838021A00878021F00CA +:10A0F000B7802DE00B380230002000000000000087 +:10A100004814EC12A16420E60B20020010904A20B3 +:10A11000204B00420400830020C20830028C0083E0 +:10A120000420C00830020E00B3002CE04B30029235 +:10A130000430000000000000E815B800EEC03390C5 +:10A140000FA01B0800CA40B2820FA00B2802CA0051 +:10A15000B290ACA0032900CA40B2808EA4032A00AA +:10A16000FA003FA80FA00B3A0460000000000000B6 +:10A170004800E20290003E000F8803F100FC023F1D +:10A18000200FC803C100F0003E008F00016002F8FC +:10A19000083E000F8083E000F8002E008F801392AD +:10A1A00000300000000000000810E402C900B264A2 +:10A1B0000F9103E404C90032406C90032502C9905A +:10A1C000B0400C90032420C9A03E404C9023E400F2 +:10A1D000F10092400C100302043000000000000067 +:10A1E000800464008980A2400B9642E50489002225 +:10A1F00040089002240809412240489042240489E2 +:10A20000802640089002E400B90022400894022011 +:10A2100000100000000000001805250089202240E1 +:10A220000B9002F4848500214048500224208D08C0 +:10A23000234008D00294008D0029400AD002A408CF +:10A24000B90028401890C20600400000000000003D +:10A2500008040500810020510B1002F58085C1A182 +:10A260005008540A050685402150885402950085FF +:10A27000442D502A5412C501B100085008100202A2 +:10A280000100000000000000B80D6000CA503280DC +:10A290000F8003E802C80132002CC0032000C8026E +:10A2A00032002C800BA000C8003A004E4023A008CA +:10A2B000F8003A002C800B2E035000000000000034 +:10A2C000981DDC04FD403F504F9063E440F1023E96 +:10A2D000410F9013F504F9413E500F94436502F984 +:10A2E0004136504D9403F400F94137404F9403E652 +:10A2F00006700000000000001801FC00CDA83370BB +:10A300000FD013F688CD0032504F142307A0C9C0D8 +:10A3100032780C9E033702CDC032640F98032400BC +:10A32000CD0032402CDA030600700000000000006F +:10A330003810E20888EB22300B8012E804A0A02A33 +:10A34000200B8A0A23008880222800C842238080AC +:10A35000D420280980022294A8002A008885020EB1 +:10A3600004300000000000000805C4A0830024D8C9 +:10A370008B1002E514890A21480B52025480854053 +:10A3800025580956024502812020500B1402043042 +:10A39000810020400810024201700000000000000F +:10A3A0001815A4128900A6400B9042E498A9802BAE +:10A3B000400B510255009D08274809F602440081D0 +:10A3C00004224019918A2480A9002A40089002465C +:10A3D0000460000000000000A015E702C904365820 +:10A3E0000F9003C500C90032400F90136402C900EA +:10A3F00036402D900B6604C9E0B2488F9847240080 +:10A40000C90072400C1003680470000000000000D6 +:10A410002801A508F9213A400F9003E604F9003E0F +:10A42000404F9883A400E940BA600E9003A480F9DD +:10A43000A33E480F980BE400F9001E400F90038ADA +:10A4400000600000000000002810A248C820320868 +:10A450001F8083E122C80133002CC0033004CC40AC +:10A46000B1000C44032012C84132002D840B60005F +:10A47000F800B2004C800B0A04200000000000002D +:10A4800028053A00A600239003E492F800820036E3 +:10A490008008A0036800CA00228308A00228038A5B +:10A4A00000228008A0022800B68022800DE8020A5F +:10A4B000004000000000000028056E00824220C01D +:10A4C0000B3402CD09800020000800020002980031 +:10A4D000202028000A0410818020C008B0022C002F +:10A4E000B30022C01831020A005000000000000032 +:10A4F000A0013802A30021401B7002DC2084056506 +:10A50000E008F0027C10970024C0083002548887CD +:10A510000921E80933021C80B60863C809381228EB +:10A520000040000000000000A8081E00C7A0A1E035 +:10A530000B7803FE00C58233200C48031E01DF8028 +:10A5400031200C48030640878231F80D7B035F0001 +:10A55000F38031F20C60032A0200000000000000CA +:10A56000081D9C00FB012F4007B003E804F9003EE2 +:10A57000C10FB003E006E8023AC00FB001A410F921 +:10A5800040BED006B003EE00FA003CD80FA003C2D4 +:10A5900006600000000000000005F600CF8833646C +:10A5A0002CF803FE02C4B033208CD8033200CCB4A4 +:10A5B00033A00CC8031620CFC033F00CF803FE0004 +:10A5C000CD803FE00FD803000070000000000000C5 +:10A5D000A811B5048712A1500A7412C44084112333 +:10A5E000C028E0021C02A711215848700A14008DEF +:10A5F0000023C00B7002FC4086002DC00B50022AC5 +:10A600000460000000000000000095008740210069 +:10A61000187102DC009528E1020850023C42A72292 +:10A62000218088410214008500A1C0097102DC006C +:10A63000B5102DC00B4002000020000000000000FB +:10A640002014C41083842011083002C310912020EC +:10A65000C00828120000A08420400830020426838D +:10A660000020D00B3002CC00B2002CC00B0002083E +:10A670000430000000000000A815AD00CF88B2E84B +:10A680000C3013CEC2D08232000C0E0B2000C888D2 +:10A69000B2402CBA433702CB00B3C02CF003FC12FB +:10A6A000FB007FD10F300B2B046000000000000086 +:10A6B0008000ED02F1403E410FB023ED00E8013E85 +:10A6C000C80FB013EC04DB003C800F0403E440F936 +:10A6D000003CC20EB003EE004B413EC00FB003E0A1 +:10A6E00000300000000000000110FC004B0032426E +:10A6F0000CF0033680CD0033004CC0833C04F700DF +:10A7000032400CB1431400CD8033C00CF003FC0088 +:10A71000FF00B3C20CA003004430000000000000A2 +:10A7200081044F028B80203008BC02201089002257 +:10A73000C000B0036004B800A290288C1A24028BD9 +:10A740008322C108B002FC00B36020C00DA003E06A +:10A75000401000000000000080052E00ABC0226009 +:10A7600008B8022900880120000890022000B800E3 +:10A7700022C008B002E4008124A2C009B046EC0067 +:10A78000B90022C008900220004000000000000034 +:10A7900008042C00A100A04108B00A205388002022 +:10A7A000C028A0024C00B30020008800028400836F +:10A7B0000420C0283002CC00B30262C0091002C2DB +:10A7C0000100000000000000000D6C00E900220004 +:10A7D0000CB0030004C900B2000C90032C00F3007D +:10A7E000B2C08CB003B4028F0023C004F003EC08A5 +:10A7F000F90033C00C80030003500000000000008B +:10A80000A01DFC10DD043F000FC023F090FD002FC1 +:10A81000C00FE043D000FC003F008FC0227400FD59 +:10A82000043FC00FF003FC00FF063FC00FC043E829 +:10A830000670000000000000C005FC80EF2011C081 +:10A840000E7203BDB0CF31BFCC02F003FCC6CF0106 +:10A850000BC50FF1033C04EF6133D807F0033480DC +:10A86000CD3073CC0FE80330007000000000000012 +:10A870008018E90088692210088C00218488412210 +:10A88000108886920100886222104B870221A088DE +:10A890006020100B86A235A0AB60A1C40BB80220CB +:10A8A00004300000000000008805CDA8334120C618 +:10A8B0004A31008C10933328CC2934128C50931CCD +:10A8C000288401204A4C41831024CC4B31424C4017 +:10A8D000911024C00B8002220170000000000000D3 +:10A8E000C005A820900222000880002030B8082669 +:10A8F0000001808220201808424003910260000875 +:10A9000001A6000B80006C10BB0126C04B900A30E2 +:10A9100004600000000000000011FD00FD4133A1B3 +:10A920000ED203B502DF423B010FD443B500CD4048 +:10A930001BC40D78037002EC0017A10FE80B2C026A +:10A94000D99026C00FAC0300047000000000000086 +:10A95000E001B800EE001F644FE003D810C41833C4 +:10A96000C00CA0A1B809E60936220F8823BC00FB61 +:10A97000003B640FD9039C00E3043BC00FF403F8D1 +:10A98000006000000000000040108D00C940B6804B +:10A990000F1003A720FB50B6084C14036522D940C2 +:10A9A000B6800EA00B0000D800768228A023640099 +:10A9B000C90412C08E800390042000000000000033 +:10A9C000C8052B608A09205008A023E900B8C022DE +:10A9D000F008AC0228048AC222500890062C008B92 +:10A9E000042251089402E4048B0437C0081842265C +:10A9F0000040000000000000C0044B0082C8244357 +:10AA00000B260A8800B08022E40B20426900A29045 +:10AA10002840E810020C00BB002850889082C40136 +:10AA2000830020C00A1002BA00500000000000009D +:10AA300020104E80810021A8085802D601B79068E6 +:10AA4000200359825600A5842DA2186922020034E1 +:10AA50008029A8086806C614858225E00858821C4B +:10AA6000004000000000000048084800C2F03440E8 +:10AA70000F20038880F81030C027210B4880EA207F +:10AA800038000C00120C087300B8400C12234C0262 +:10AA9000433430C00E110392020000000000000099 +:10AAA0004015AC90F9012E884B90116400FB1032D8 +:10AAB00000009103A400C90032C44DB043E004C8B3 +:10AAC0000036890FA803ED00F9143EC00F1043D0E3 +:10AAD00006600000000000000805E800C8003A0019 +:10AAE0000C0053A000E80132010E80532010C80072 +:10AAF0003A400C90032010E804B6008480032D1225 +:10AB0000CB002ECA049003EA007000000000000091 +:10AB10004C198C00870221C00870020C00830021B0 +:10AB2000C00830624C048300218048E0123C00875A +:10AB30000021C00870021C00850124D00A5002F2D6 +:10AB4000046000000000000020009A00808028209F +:10AB5000084C22D200A48024300B4802520084C04A +:10AB600021200948681300A48060200908025600CB +:10AB700097802DE0885802E01020000000000000BF +:10AB80006C04CC00838020D80830024C4083002421 +:10AB9000D109B9424E00830020C18930420C0083A4 +:10ABA000F0A0D9193622660691000CC10A1002C223 +:10ABB0000430000000000000E815E802CAA52A9150 +:10ABC00028A803EA02AA00B6A00FA00A2A92CA8304 +:10ABD000BA8029A0032B00EA4066902DE40B6A801E +:10ABE000DA003E800CE003FA046000000000000080 +:10ABF00048018000FC003D000FC003B014FC003B86 +:10AC0000120EC043B114FC003D000EC003F020F44E +:10AC10000031000E4413A000E80636004F8013D226 +:10AC200000300000000000000810A400D1003660D1 +:10AC30001C180B4600D98030402C98058600C18036 +:10AC400092400D10034402890032700C98012400D8 +:10AC5000C90430400C9003C2043000000000000022 +:10AC60008004640089002240089402248089012223 +:10AC7000404891022400D990224108901224108962 +:10AC800000324008951224028100A2410D9042E05A +:10AC90000010000000000000380524029D0023443D +:10ACA00008D2067480B52023401AD00635908D0254 +:10ACB0002F4419D00274008D00634018D402A411EF +:10ACC0008900224008B002C60040000000000000D9 +:10ACD00028140480852021680852021480A520A130 +:10ACE000480A7238148095242D4828520214808511 +:10ACF00020214808520684808120204A091002C27F +:10AD00000100000000000000380D6140D850B2146E +:10AD100028A0036140F85032944E85042142C85067 +:10AD20003C140D800361408850B2142CC509A14029 +:10AD3000C850321C0C8003EE0350000000000000DD +:10AD40009815E440F9103A440F9103E440D9143EB9 +:10AD5000440D91436440E91032440793C3E450D159 +:10AD6000107E440391015444FD143E400FD003E68D +:10AD700006700000000000001805F680DDA03368B2 +:10AD80001EDA033690CDA03B680AD823760CED80FE +:10AD90002B620B9902A780F9E137680CDA03278050 +:10ADA000C9A222684C5003C60070000000000000D9 +:10ADB0003818E1408850221408802260008804225C +:10ADC0000008042601008850221008AF02230088E2 +:10ADD000C0A0108884022380A0402A100880124E50 +:10ADE0000430000000000000480084008101204081 +:10ADF0000A1402450081412C500B14020504A100E5 +:10AE000028408210028440A132805009140204C4F8 +:10AE100091106444281002D201700000000000006C +:10AE20001804AC02810022C1089002440289022663 +:10AE30004109900A240C8904225008902624008994 +:10AE40000022410910222440B9012E4008900246F8 +:10AE50000460000000000000A015E41089003240EA +:10AE60000A900B241089001E409B90022410290098 +:10AE70001A400E9441A4002900124005904126007A +:10AE8000D90024400C9003E804700000000000008A +:10AE90004801A402A900BC400F9003A404F9003AA1 +:10AEA000410E90838400F9003C400E9002C408E9F2 +:10AEB000003A402E900BE600E1043A400F92035A0C +:10AEC00000600000000000000810A020D80036023A +:10AED0000E00A3E018C00030030F803320004000B4 +:10AEE000320D0F040BA002C80232028C8203200232 +:10AEF000C80416004E80010A042000000000000073 +:10AF000028053B008ED8238008E002F8808E1023AD +:10AF1000A20BE0827A208E3023A10BE00228008E63 +:10AF2000002B8808E44238008E04238008A0020A1F +:10AF3000004000000000000028056F4093C6244038 +:10AF40000A3802CC008301ACF00BB4024C04A3809D +:10AF500028D04B30024C00AB042AC02A300AAC1077 +:10AF6000930020C10A31020A0050000000000000D6 +:10AF700080111C0082002142887406DC0B86022DA1 +:10AF8000800B702A5800A600A9C00B70025C88A72D +:10AF90002029C00A70029C109720A1C808D8022856 +:10AFA000004000000000000088080E00D7803760D5 +:10AFB0000E6813FE00CF803DE00F78231E00EF8265 +:10AFC00031E00F3CC37E04EF80B1E00EE803BE80A9 +:10AFD000D7E033EA0E78032A0200000000000000E8 +:10AFE0000815AC00FA013E000FB003E004F800328F +:10AFF000800F8043AC0AD80036400FB0032C0CDB26 +:10B000000026C109A0136C40EB403ADC0F900BC244 +:10B0100006600000000000004004BE00CF8133E95C +:10B020001FF913B650EF801FE404C8037E006D8142 +:10B0300033640CF81B3E202F8893E80FFB032E800F +:10B04000CFC073E02CD903D00070000000000000D6 +:10B05000A8189042891821C01F710214C0F7202738 +:10B06000404071121800872021804871023C0887F7 +:10B070002021820B61A21E44DF0131C8087302EA5D +:10B08000046000000000000010008C00870021C850 +:10B090000B70029C0987022D829940020400A509C9 +:10B0A00021401970021C00870525484B72020C4094 +:10B0B0008700A1C0485002C400200000000000002A +:10B0C0006804C120894CA0B40A38022200A1D0240F +:10B0D00030098002274481C62214093D2A0F028BC1 +:10B0E000C0A6200B24000C10938120C0483006D845 +:10B0F0000430000000000000B815A10089C132D161 +:10B1000003BC03A92089413E6085BC8B2540EB41EF +:10B11000A2A00DF0133E20CF9036304FBC0B3C0068 +:10B12000CF8033C10CB103EA0460000000000000CE +:10B130008000ED00F8013CD00FB303E882D8203640 +:10B14000802EB213E100FA007EC82EB003EC80DB43 +:10B15000103A084FB223CC02FB103AC00F9003E420 +:10B160000030000000000000A010F000CD103342BD +:10B170000CCA237C00CF00336206F0013A00CF08EE +:10B1800033801CF0813C00FF0033A00CCA01FC049A +:10B19000CF003FC00FF003C00430000000000000EB +:10B1A000A1046D408848A231081002201088B42202 +:10B1B000A00880006A848820225208B00A2C10BBA4 +:10B1C0000032B3888002EC00DB002EC00B9012E14D +:10B1D0000010000000000000000500108A0122A0FD +:10B1E00008B0426020800020441A801AE442A00681 +:10B1F0002200783002AC00BB00A24408B012EC0080 +:10B200008B000EC00B9002E0004000000000000028 +:10B21000081400088000208108300240128000A03D +:10B220004008B002C000820000800830028C00BBE1 +:10B23000002000082002CC8093002CC00B3002C2FA +:10B240000100000000000000000D6000CA14320080 +:10B250000CB0034C00CA0032000E0012A000C00067 +:10B26000700028F013AC00FB0032402C1043EC00BF +:10B27000CF003FC00F9003C003500000000000004B +:10B280002015F002FC001F00677003B000FC003FB7 +:10B29000002DC0033010FC01BF000F70037C00F7CD +:10B2A000043B000FC013FD10FF003DC00FF003E88A +:10B2B0001270000000000000C005F4C0CF803360B1 +:10B2C0000EC9133650CE863F080CC0033E02D7800D +:10B2D00039E00FF8133E40C7303BCE0DF6033D88F2 +:10B2E000CF3133E40F78033000700000000000001D +:10B2F0008010E5D0DB807260889202E4108A802E94 +:10B30000344A8C032E00AB8002E00BB8022C808FF5 +:10B310006013D84A76029D84AF3022480B8812A071 +:10B3200004300000000000008805C4008B002400E9 +:10B330004A0002AC8083002C01280402AC008B017F +:10B3400020C003B0020C80834020C1A834228D139A +:10B350008320ACC80BB00262017000000000000046 +:10B36000C01586009B04AE000A9002EC000B142E60 +:10B37000C602B1126C00AB202AC10BB0422C008B6C +:10B380000226C10AB002AC00AB042A400B9002F0C6 +:10B3900004600000000000000011E700C301364017 +:10B3A0000E88132402CA001E202C8E0B2C00CB000A +:10B3B0002AC00FB8032E06CB003AC04CB013AC0C19 +:10B3C000CB003EC80FB043500470000000000000E6 +:10B3D000E001B408FF91334009DC01F4207E022E25 +:10B3E000400D9801BC80EF80B7E48FF40BFE407FE6 +:10B3F00000B9C04EF003FC08F70037C00FE002B8F8 +:10B4000000600000000000004010A144CB023200A8 +:10B410000D800A6D00EB04109028220B2CC2CB206B +:10B4200076C00EB103EC01CB0632C10C30032C0206 +:10B43000CB003ED00CB00310042000000000000040 +:10B44000C8052148AB0020000095234C08BB012211 +:10B45000C008B2020C08838892D5283402EC028F0F +:10B460002023C04DF0017C00DF002EC00D300372A0 +:10B470000040000000000000E00544008310206050 +:10B480000925020008A0004C000B0C224F1293402B +:10B4900000C0093E02EC00AB80A4C00930222C0899 +:10B4A000B3010C8108300238005000000000000099 +:10B4B00060011609B78021640878061200B4822D55 +:10B4C000A41B69067E04179225E6097806DE80A78C +:10B4D0009025E00979505E04B7922F6109C80248AF +:10B4E000004000000000000048082500C300B00331 +:10B4F0000DA3420940E100BC400F11034C001300B2 +:10B5000020C0093203CC10A30026C48D302B0C8040 +:10B51000F3007C800C3001120200000000000000EB +:10B52000401DBC00E7103D012FF142E800F59003FB +:10B53000C10CF1439C04EF083BC20CF081DCA0DF9E +:10B54000003BC33FF083FC05DF0C3D400FD103D02F +:10B550000660000000000000A805F400CB80304029 +:10B560002CA003E000F88032C02EB80B2C46D3008C +:10B5700030C00C30030C00DB4832C01FB4032C88F1 +:10B58000CB4832800C30132A00700000000000000D +:10B590004811B40087012140087042D008B4002946 +:10B5A000C00870021C00870021C80C720A1C848F1E +:10B5B0004009C48F73129C40832021C0086002920E +:10B5C0000460000000000000C0009601AF80212050 +:10B5D000086802DA00BD8021E00978021E008F8829 +:10B5E00083E229F8825F8087A025E00B3A120E5093 +:10B5F00097A421A02978023000200000000000005C +:10B600000814CC02A1810000487002C800B1002CCF +:10B61000F80931420C10830020E00838124E0083F4 +:10B62000006AC00B30028C04930020E009380292BB +:10B630000430000000000000E815B940EE20308022 +:10B640000CA003E800FA0033B00DE4033288CC808C +:10B6500023000DC0036202CA0036800FA0432806F3 +:10B66000DA0033A00D6A033A046000000000000015 +:10B670004800E0009801BE000F8003F000BC0038D5 +:10B68000040880A3E000F8003E000F8013A000E053 +:10B69000003E000E0003C000E800BE044E8007D24A +:10B6A00000300000000000000810E480C9003E687F +:10B6B0000C90036400C9003E400C9043E000C800B9 +:10B6C00032000C80132000C90036400C9003640047 +:10B6D000810032400490130204300000000000009A +:10B6E0008004650689402E601A142A052089002EE0 +:10B6F00040089002C408C102204008101A240089A2 +:10B7000010324108901224008904364088940A209F +:10B7100000100000000000001805042089552E408C +:10B7200008D50234008D002E40189002E4009900E4 +:10B730002640089002040A8900264038900A240016 +:10B74000A90020400A90820600400000000000008E +:10B750000804050081002F400AD402340085012C22 +:10B7600040081042E40699002240081002050081BA +:10B770004028500814120500A14024505A1002021B +:10B780000100000000000000B80D6000C8043E0089 +:10B790000880032142CC003E002C8002E000D8004B +:10B7A000B6002C80022002C80036000C8003600224 +:10B7B000E80032008E80032E0350000000000000DD +:10B7C000981DF500F5003E40879003E400F1003D30 +:10B7D000500F5403D100EC403F100BC443F100F96B +:10B7E0004036500F9413E510D9443D402DD003E668 +:10B7F00006700000000000001805F660CD023B4016 +:10B800000CD003B440FD063E400C90036604C98290 +:10B81000B6620F180B3600CD4032610C9023240A1B +:10B82000C90032404CD04306007000000000000008 +:10B830003910E380D80022000D80022294B8002E37 +:10B84000000D80032100884022000BC42221508873 +:10B85000802222088002201080012A000A80034EE4 +:10B8600004300000000000000005C60089002A40E6 +:10B8700088100A8408B10029400A700AB5008F4078 +:10B8800029C00BF4022400812028448910020404FA +:10B8900081022A400810020201700000000000002E +:10B8A0001815A600992022400990122480B9002F73 +:10B8B0004403D002F4008D002B410BD002261089E6 +:10B8C000042A4009906E240089002A400A94024606 +:10B8D0000460000000000000A215E600C900384224 +:10B8E0000C1013A60479083A78069203A408C9003C +:10B8F0003A608F98230602C9023A400D9003040073 +:10B90000C90038400C9003280470000000000000BB +:10B9100028018410F980BE404F9002E400F9003CF9 +:10B92000608D92032442E91032500F9403E400F931 +:10B9300000B6412E1003E400F9002E400F9003CA18 +:10B9400000600000000000002810A008C8003E10A1 +:10B950000F88032008F8C01E102C4003F200CC0012 +:10B960003F000CC0132002C00030000C802B2010C0 +:10B97000C00432000F80030A042000000000000011 +:10B98000A8053A8086E02FA01BE0023A80BA042E78 +:10B990008008A0038808C2002E8108600228108E4B +:10B9A00081038008E00178008E040380096803CADF +:10B9B000004000000000000028054C0083602C447B +:10B9C0000B38020F80B1002CE5033010CC1083003F +:10B9D0000CC02930220409911024C0C830004C0446 +:10B9E000930224C00B31020A005000000000000046 +:10B9F000E001188087002D400B74421C01B5012C1A +:10BA0000C00B6002B00094042F2009C0021490976C +:10BA10000025C80870024C80972025C0097002E8F4 +:10BA20000040000000000000A8083A82C6802D6097 +:10BA30000BF80B1A00F5803DE08F7803DE02C7801B +:10BA40002DE00D780B1702DF8024F82CFD035E0C2F +:10BA5000D7E035E00F68032A020000000000000074 +:10BA6000481DAE40FA043E400F8013EC04F9003E3E +:10BA7000C10CA013C010E8003C004E8043C42089D4 +:10BA800000BAC007B621ED06EB68BACC0F2013C28E +:10BA900006600000000000004005BE00C680316066 +:10BAA0002D780B3E48EC923D600C58035A40D580EF +:10BAB00031610C58233600CF823FE00CF803FF6061 +:10BAC000CF9033F00C520300007000000000000023 +:10BAD000A811B8848614B5C00870021EC0C4002D19 +:10BAE0004008400214D0861021804C62423440A5A8 +:10BAF0000035C0287042DCC28F3023C00850022AB3 +:10BB00000460000000000000020098288E00A5409C +:10BB100008F1021864B4006D42085002180185084B +:10BB20002140095822540085102DC4097002DC04FC +:10BB3000970025C00844020010200000000000000B +:10BB400060148C00828024C00880022D00804A2C62 +:10BB500042080A420600928420A08828424400A39A +:10BB60000624C00B3002CC10930424C10900020843 +:10BB70000430000000000000A815BC00CB003640D7 +:10BB80000CB4132C00F9003EA00CA2030408C280E0 +:10BB900030A80D2A035400CB003FC00DF003FC0871 +:10BBA000DF0037D00CB0032A046000000000000062 +:10BBB0008000E000FB103A400EB003ED90F9117EDA +:10BBC000804FB053E840E9003E400F9003A608F9CB +:10BBD000013AC00CB013CC00EB023AC68EB803E0B9 +:10BBE00000300000000000000110F00CCE003FE02B +:10BBF0002CF0833A48CD0135800C6012340ACE0017 +:10BC0000B3802CE00B7400C910B3C10FF01B3C00D3 +:10BC1000CF00B7C02CE0030044300000000000005B +:10BC200081046E1088802CC01898022D8081003607 +:10BC30009108B0036800C9002240089002240083E4 +:10BC40008036C00B30022C02830020C00820036025 +:10BC50004010000000000000800506008A802E458C +:10BC6000288802240288020202088002A2009800AA +:10BC700022000880122400890122C10AB0026C004F +:10BC8000AB0022C1089012600040000000000000DC +:10BC90000804000080002CC04808120080800224A4 +:10BCA00000081842AC028B8022E008B8120402831C +:10BCB0000020C00B30420C00A30160C048100242BB +:10BCC0000100000000000000000D6808CA002E40BE +:10BCD0000880030000C80632000C8002A000D800D3 +:10BCE00032000C80037400CB0022C00FF0033C0034 +:10BCF000EF0037C00C80014003500000000000003E +:10BD0000A019FC00FC043FC00FC003E100FC003B95 +:10BD1000000FD0037C00EF002FC00FF011F410FDD6 +:10BD2000023DC04FF003DC00DF043FC00FC043E919 +:10BD3000067000000000000000C541027020DC1009 +:10BD400067040DC10270209C1037040DC1067040BD +:10BD50004C10371415C1037040DC1013040DC107DB +:10BD60007040DC1037040DC03100000000000000FE +:10BD700000C5440571215C40571015C40571055C70 +:10BD800040571015C40671014C4057100DC4057181 +:10BD9000055C40531015C40771015C40571015C075 +:10BDA00011500000000000000080020120804820A7 +:10BDB0001208048201208048201208048201208099 +:10BDC00048201208048201208048201208048201C1 +:10BDD000208048201208048020000000000000009D +:10BDE000008400016000580056000580016004587E +:10BDF0000016000580012001580016000580016032 +:10BE000000580056000580016000580016000180AF +:10BE1000200000000000000000C5480572115C8091 +:10BE2000172015D80532111C804720148800720194 +:10BE30001C80572005C80472015C80572015C8017A +:10BE400072015C80572415C01150000000000000F2 +:10BE500000C140006000180006000180402000186A +:10BE6000000600019000600018000600418000609C +:10BE70000018000600018000600018100600018014 +:10BE8000310000000000000000C5480422010880C5 +:10BE900002201088046201088042201088002001DE +:10BEA00008804220008804220108004220108800F7 +:10BEB00022010880423010803100000000000000A4 +:10BEC00000C54A05428150A00428150A0552811078 +:10BED000A04428111A00408010A05428050A0542E9 +:10BEE0008151201428150A01428150A054281500C0 +:10BEF000315000000000000000800C01534054C08D +:10BF00001530055C01574054C01530055C015300E5 +:10BF100055C01574054C01530055C01574054C01EE +:10BF2000530054C0113001402110000000000000F7 +:10BF300000800000400010000400010000400010DC +:10BF40000004000100004200100004001100004045 +:10BF50000010C104000100004000100001100101A8 +:10BF6000200000000000000000C560020800820000 +:10BF7000208008200208008200208008200208009B +:10BF80008200208400200208008200208408200211 +:10BF9000080082002180080111500000000000000C +:10BFA00000C54005600158009600159005640258D0 +:10BFB0000056005590056001D900164015800560B7 +:10BFC0000159007640158005600158005600158023 +:10BFD000310000000000000000C440036000D800F1 +:10BFE00036004D80036000D80036000D80076200E7 +:10BFF000580036000D80076000D88016000D8003C1 +:10C000006000D80036001D803100000000000000F4 +:10C0100000C5420430810C20430810C20430810C5A +:10C0200020430810C20430C10C20430810C206305F +:10C03000810C20430810C20430810C20430818C032 +:10C04000115000000000000000C0000030000C0093 +:10C05000030000C00030000C00030000C0403000AE +:10C060000C00030000C00030000C00030000C00002 +:10C0700030000C00030000C00000000000000000C1 +:10C080000080020130804C20130804C20130804C33 +:10C0900020130804C22530814C20130804C201304B +:10C0A000804C32530804C20130804C20130804C075 +:10C0B000204000000000000000C5420562815820B9 +:10C0C000560815820460815820460815820160C117 +:10C0D000582046081582016081583056081582059F +:10C0E00060815820560805801150000000000000B3 +:10C0F00000C542002080082002080082002080083D +:10C1000020020800820020800C200208008200200B +:10C110008008200308008200208008200208008098 +:10C12000210000000000000000C5420466811820C4 +:10C13000460811820464811820460811820060813B +:10C140000C204608118200608119204308118204E6 +:10C1500060811920464801801100000000000000A5 +:10C1600000C56005580156005580156004580156F9 +:10C170000045801160005800060045801560015898 +:10C1800001160001801560055801560055800540D4 +:10C19000115000000000000000800601498010607E +:10C1A00014180506017980506014180106014180B9 +:10C1B000506004180506014180106014180506013E +:10C1C00041805060141805002000000000000000AD +:10C1D0000080020104804020100804020004044092 +:10C1E000201008040201008440201008040201000D +:10C1F00080412010080402110080412010480400F2 +:10C20000000000000000000000C546035180D4601B +:10C2100035180D46021180D46035180D4603118083 +:10C22000D46035180D46035180D46035180D46038F +:10C230005180D46035180D403150000000000000DE +:10C2400000C5460570815C60071815C60471811C25 +:10C2500060171815C6053181DC60571815C60571C1 +:10C26000801C60771815CE0571815C60571815C069 +:10C2700011000000000000000005460271809C6172 +:10C2800077180DC60271809C6037180DC20331808B +:10C290005C6027180DC60371809C6017180DCE03D3 +:10C2A0007180DC6037180DC0110000000000000034 +:10C2B0000045460575815C60771815C60575815C7B +:10C2C00060571815C60531810C60571815C60571E1 +:10C2D000815C60431815C60571815C60571815C0F4 +:10C2E00011500000000000000040020120804820A2 +:10C2F0001208048201208048201208048201208054 +:10C300005C20120804820120804800170804820182 +:10C310002080482012080480000000000000000077 +:10C320000000060163805860161805860161805878 +:10C33000601618058601618158601618058601612E +:10C34000805860561805860161805860161805806F +:10C3500000000000000000000045400570015C0086 +:10C36000170015C08574011C00470011C00570013D +:10C370005C00530010C00570015C00570014C90434 +:10C3800070011C00570015C0115000000000000093 +:10C390000045420060C01820060801820060801835 +:10C3A00020060801820020801830020800821060F8 +:10C3B000801820060800820060801820060801808E +:10C3C0001100000000000000004442042081082009 +:10C3D0000208108204208108204208108204208173 +:10C3E0000820460811820420810820420811820496 +:10C3F0002081082042081080110000000000000089 +:10C400000045420540C550201408150004408150E5 +:10C4100020540811020500801020450C11420440F0 +:10C42000815020140C15420440811020540815003E +:10C4300011500000000000000040030150C04430D3 +:10C44000150C05430150C04C30150C05432150C05C +:10C450005430150C05430150C05430150C054301F0 +:10C4600050C05420150C05400000000000000000E2 +:10C47000000008004200048004200108004200047B +:10C48000800420010800020010000400010800429E +:10C490000010800400010800420010800420010008 +:10C4A00000000000000000000045420200808420DF +:10C4B0002008080202008084202008080202008070 +:10C4C00080A0202808020200808020202808020284 +:10C4D00000808020200808001150000000000000AB +:10C4E0000045400560415800560015800560015820 +:10C4F0000056001580052001D80056001580056003 +:10C50000015800760015800560015800560015801E +:10C51000110000000000000000C540036000D800CA +:10C5200026000D80026000D80036000D80076001F3 +:10C530005C0036000D80036000D80057000D8002BB +:10C540006000980036000D80000000000000000030 +:10C550000000000430210C00430010C00430010C26 +:10C5600000430010C00430011800430010C0043024 +:10C57000010C00460010C00430010C00430010C044 +:10C5800000000000000000000000000030000C006F +:10C59000030000C00035080C00030000C6001400B2 +:10C5A0000800034000C00030000D40020000C00041 +:10C5B00030000C00030000C000000000000000007C +:10C5C0000000050131404C50131404C50131C04C2A +:10C5D00050131404C50531414C50131404C50131E6 +:10C5E000404C70531404C50131404C40131404C036 +:10C5F00000000000000000000000230568C15A3060 +:10C60000568C15A30569C15A30468C11A70168C024 +:10C610001A30568C11A30468C11A30168C15A30465 +:10C6200068C15A30568C11800000000000000000E4 +:10C630000000000020000800020000800024000824 +:10C6400001020000800024000880026000800020B9 +:10C650000009400220008000200008000200008045 +:10C66000000000000000000000000844621118846F +:10C67000462111884462091884462111886062109D +:10C68000180446011188446211188006011188447B +:10C690006211188446211180000000000000000093 +:10C6A00000000045501154045501154044501154E8 +:10C6B00004450111404050105404450115404450B8 +:10C6C0001114001501154044501154045500114037 +:10C6D0000000000000000000000008214208508215 +:10C6E0001420850821420050821420850820420829 +:10C6F0005082152005482142085082142081402193 +:10C700004208508214208500000000000000000054 +:10C7100000000A01028040A01028040A010284409F +:10C72000A11028040A01028040A00028000A01028A +:10C730008040B01028000A01028040A010280400A8 +:10C74000000000000000000000000C035300D4C0F3 +:10C7500035300D4C035300D4C035300D4C0353001D +:10C76000D4C02130084C035300D4C03530084C03EA +:10C770005300D4C035300D40000000000000000020 +:10C780000000080470015C80072025C90472015C68 +:10C7900080472015C8007205DC80572015C8057237 +:10C7A000011C90672015C80572011C80572015C018 +:10C7B00000000000000000000000231848C21231F1 +:10C7C000848C61031840C81231848C61031848C4FA +:10C7D0001031840C41231848C61030040C61231812 +:10C7E00048C61230848C21000000000000000000C8 +:10C7F00000003FFF4FFFD3FFF4FFFD3FFF4FFFD38C +:10C80000FFF4FFFD3FFF4FFFD3FFF4FFFD3FFF4F5E +:10C81000FFD3FFF4FFFD3FFF4FFFD3FFF4FFBD0049 +:10C820000000000000000000000000000000000008 +:10C8300000000000000000000000000000000000F8 +:10C8400000000000000000000000000000000000E8 +:10C8500000000000000000000000000000000000D8 +:10C8600000002CDB0B36C2CDB0B36C2CDB0936C21A +:10C87000CDB0B36C2CDB0B36C2CDB0B36C2CDB0B64 +:10C8800036C2CDB0B36C2CDB0B36C2CDB0B32C00AE +:10C8900000000000000000000000333C4CCF1333C8 +:10C8A000C4CCF1333C4D4E9333C4CCF12B3C4CCF34 +:10C8B0001333C4CCE9333C4CCF12B5C4CCF1333C78 +:10C8C0004CCF1333C4CD3100000000000000000045 +:10C8D00000003B7E4EC793B7E4EDF9237E4E4793AD +:10C8E000B7E4EDF93F7E4EDE1237E48DF93B7E4E24 +:10C8F000DF93F7848DF93B7E4EDF93B1E4EDB90011 +:10C9000000000000000000000000010270409C11C7 +:10C91000670419C30270409C10270409C1027040CB +:10C920001C10271401C10270409C50070409C10269 +:10C9300070409C10671411C000000000000000004F +:10C940000000040571015C40571015C40571015CBD +:10C9500040571015C60571015C40571010C4057191 +:10C96000015C64031055C40571015C40571015C08B +:10C9700000000000000000000000020120804820AC +:10C9800012080482012180482012080480012080BE +:10C990004820120805C2012080482417080482019B +:10C9A00020804820120804800000000000000000E1 +:10C9B00000000000600018004600118400600018AC +:10C9C00000060001800060011800061091800060E0 +:10C9D000001846461801800060001800061001800B +:10C9E00000000000000000000000080473011C802B +:10C9F000072001C80472011C80472011C80472017D +:10CA00001C80472211C80472011C80072011C80431 +:10CA100072011C80072811C0000000000000000007 +:10CA2000000000006000180006000180006000188F +:10CA30000006000180006000180006000180006010 +:10CA40000018004604018000600018000600018004 +:10CA5000000000000000000000000D04220108801A +:10CA600002200090042781088042201098042401AD +:10CA7000088042481088042201094042601088045E +:10CA8000220108C0024010800000000000000000E9 +:10CA900000002A044B8112A004A8012A044A811232 +:10CAA000A044A8112A04488012A04488012A044AFC +:10CAB00081122004AC112A044A8112B0449C110056 +:10CAC000000000000000000008C00C00530014C06B +:10CAD0000530014400530014C00530040C0053001D +:10CAE00014C005B0014C00530016C00130014C00C9 +:10CAF000530014C001380040100000000000000086 +:10CB000008C0001040001000040001100044801014 +:10CB10000004000110004600000004600100004015 +:10CB200000116002400100104000106001501040F0 +:10CB3000300000000000000008C04002000080003B +:10CB40002000080802000080002000080002000009 +:10CB500080002000080002000080000000080002A1 +:10CB600000008000210008403000000000000000AC +:10CB700008C04004600118004600118004600118DC +:10CB80000046001180046001C80046001980006062 +:10CB90000018006600118004600118000600118072 +:10CBA000300000000000000010010002600098004A +:10CBB00026000981026001980026000980066200B3 +:10CBC0004800262001C00260019800070009800289 +:10CBD0006000980026001182100000000000000094 +:10CBE0004045420430810C20430810C20430858C3B +:10CBF00020430810C20430810C20434811820430C5 +:10CC0000818D20460810C20430810C20430C10C0D6 +:10CC100011500000000000004004000030000C0033 +:10CC2000030000C00010000C00030000C000300032 +:10CC30000800030000800030000C80020000C000EB +:10CC400030000C00032000C0104000000000000075 +:10CC50004000020030800C21030800C20030800C2C +:10CC600020030800C20430C10C20030C10C20030A5 +:10CC7000800CB0430800C20030800C20032810C094 +:10CC800000000000000000004045420460811820C0 +:10CC900046081182046080182046081182006081D5 +:10CCA00018204608118204608018200608118204AA +:10CCB00060811820460C11C01150000000000000D7 +:10CCC00040014200208008200208008200208008E5 +:10CCD00020020800820020800C20020800C20020F0 +:10CCE000800820420800820020800820020801807D +:10CCF0000000000000000000500142046081182084 +:10CD0000460811820460801820460811820060C124 +:10CD10000C20460C10C204608018304208118204B6 +:10CD200060811820460810800040000000000000CC +:10CD300040454004500114004500114004500014C7 +:10CD40000045001140005000040045000040045020 +:10CD5000001400010011400450011400450000427D +:10CD600001500000000000004800060041801060F3 +:10CD7000041801060041801060041801060041807B +:10CD800010600418010600418010600418010600BC +:10CD90004180106004180100100000000000000035 +:10CDA0004800020100804021100804020100804078 +:10CDB0002010080402010080402110080402010034 +:10CDC0008040301008040211008440201008140034 +:10CDD0000000000000000000404546035180D46080 +:10CDE00035180D46035180D46035180D4603518027 +:10CDF000D46035100D46035180D44035180D4603DC +:10CE00005180D46035180D40115000000000000022 +:10CE10000001460471811C60071811CE0471811C49 +:10CE200060471801C60471819C60471819C60471D7 +:10CE3000801C60671811C60471811C60471811C0FE +:10CE400000000000000000004000460271809C606D +:10CE5000271809C60671801C60271809C601318091 +:10CE60001C60071809C60271809C60071809C61269 +:10CE700071809C60331801C00000000000000000B9 +:10CE80005045460571815C60571815C60571805C78 +:10CE900060571815C60131810C60171810C605714E +:10CEA000815C60031815C60571815C605318188297 +:10CEB0001050000000000000404012012480482073 +:10CEC0001208048201248048201208048201208074 +:10CED0005820520C0582012080492002080482015A +:10CEE000208049201248048001000000000000005A +:10CEF00040040600618018600618018604618018ED +:10CF00006006180186006181486006181486006179 +:10CF10008018604218018600618018600618008041 +:10CF200001000000000000000045600478011E00C0 +:10CF3000478011E80078011E00478011E004780165 +:10CF40001E00438011E00478011E00038015E004F8 +:10CF500078011E00478011C0105000000000000042 +:10CF600040011200648018200608018200648018C5 +:10CF700020060801820060801830020801820060EB +:10CF80008019304208008200608019200648018024 +:10CF90000000000000000000400142042081082041 +:10CFA000420810820020810820420810820420815B +:10CFB00008204608108204208108204208118204BB +:10CFC00020810820420810800000000000000000BE +:10CFD0004045420440811020440811020040811065 +:10CFE000204408110204408010204508010204403A +:10CFF000811021000C11020440811020440801001E +:10D0000011500000000000004000030050C0143028 +:10D01000050C01430050C01430050C01430050C002 +:10D020001430050C01430050C01430050C014300BE +:10D0300050C01430050C014000000000000000004A +:10D040004000080042041080042001090042011041 +:10D050008004200108004200100004200108004262 +:10D06000001000040001080042001080042011009C +:10D0700000000000000000004045420200808020C7 +:10D08000200808020200800020200808020000801A +:10D0900080A0000A08020200808034622808020290 +:10D0A00000808030200C08001150000000000000BB +:10D0B000400140046001180046001180046003181C +:10D0C000004600118006600198004600118004604F +:10D0D00001180066001180046001180046001180EC +:10D0E0000000000000000000400100026000980005 +:10D0F0002600098002640098002600199002600052 +:10D100001D00260001C0026000990006401980023F +:10D110006000980066000180000000000000000030 +:10D120004045600438010E00438010E00438010ED1 +:10D1300000438010E00438011A00438011A0043835 +:10D14000010E00028040E00438010E004380188088 +:10D1500011500000000000005004010030400C108D +:10D16000030400C90030400C10030400C10030402B +:10D170000810030400810030400C78021400C10044 +:10D1800030400C100304008000000000000000008C +:10D190004000050031400C50031400C50035400C20 +:10D1A00050031410D50031410D50031410C5003147 +:10D1B000400D48435410C50031400C40431000C29C +:10D1C00001000000000000004045430460C1183029 +:10D1D000460C11830461C11830460C01870460C1FC +:10D1E0001830460811830460C11820060C0183041E +:10D1F00060C11830460C1180105000000000000083 +:10D2000040014000200008000200008000200008CB +:10D2100000020000810020000880020000C0002001 +:10D220000008404330008000200008000200008019 +:10D230000000000000000000400148446211188412 +:10D240004621118844630118844621018804621133 +:10D250001804462110C8446211180543018188440E +:10D2600062111884462111800000000000000000B7 +:10D27000404540045001140445011140445001143C +:10D28000044501014045001014044503004044508A +:10D2900011140401054140445011140405010140DA +:10D2A00011500000000000004000082042081082D9 +:10D2B00004208108004200108204208108004208F6 +:10D2C000108205208108204208108A0520050820C8 +:10D2D00042081082042281000000000000000000CB +:10D2E00000000A01028040A01028040201028040D0 +:10D2F000A01028040A01028040A00029040A0102AB +:10D300008040A40028040A01028040A8102B1400C9 +:10D31000004000000000000040454D035340D4D0C1 +:10D3200035340D4D035340D4D035340D4D035340A7 +:10D33000D4D021344D4D035340D4D96134040D036E +:10D340005340C0D835370D40115000000000000098 +:10D350004001480472001C80472011C80472011C5F +:10D3600080472011C80472009C80472019C80072B1 +:10D37000011C88672011C80472015C82472211C019 +:10D3800000000000000000000000230848C2123125 +:10D39000848C61231040C01231848C61031048C416 +:10D3A0001031848C41231848C61030040C412318D6 +:10D3B00048C61230848C010000000000000000000C +:10D3C00000003FFF4FFFD3FFF4FFFD3FFF4FFFD3B0 +:10D3D000FFF4FFFD3FFF4FFFD3FFF4FFFD3FFF4F83 +:10D3E000FFD3FFF4FFDD3FFF4FFFD3FFF4FFFD004E +:10D3F000000000000000000000000000000000002D +:10D40000000000000000000000000000000000001C +:10D41000000000000000000000000000000000000C +:10D4200000000000000000000000000000000000FC +:10D4300000002CDB0B36C2CDB0B36C2CDB0B36C23C +:10D44000CDB0B36C2CDB0B36C2CDB0B36C2CDB0B88 +:10D4500036C2CDB0B34C2CDB0B36C2CDB0B36C00B2 +:10D4600000000000000000000000335C4CD71333C4 +:10D47000C4CCF1333A4AD69333C4CCF12B3A4CCFD7 +:10D480001333C4CCE9333C4CCF12B5A4ACC9333C04 +:10D490004CCF1335C4CD690000000000000000002F +:10D4A00000003B7E4EDF93B7E4EDF93B7E4EDF9309 +:10D4B000B7E4EDF93B7E4EDE1237E4EDE13B7E4E04 +:10D4C000DF9231848DD93B7E4EDF93B1E4EC610075 +:10D4D00000000000000000000000008404A1832C74 +:10D4E000030A1082C134108F004009140203149102 +:10D4F0000008420B1882C40031CA0C520210808509 +:10D5000000218228400A10000000000000000000F6 +:10D5100000000A0402014080732810480706010435 +:10D52000A44121140844061140807020140A04020A +:10D5300000C88441211C08061201C080602014002C +:10D5400000000000000000000000028404218208A6 +:10D5500053021080C500814A0442021400042021B5 +:10D5600080A872221C88C406A1428C52221C888585 +:10D570002621C08850221800000000000000000092 +:10D5800000000244000101006200100004000101DB +:10D590002040001C00440401022062001C8004049E +:10D5A00080892050081480042401C1005000180014 +:10D5B0000000000000000000000002803820040C81 +:10D5C000310A00000218208CA810280888C1141005 +:10D5D000C600220308020108B0000C21020082806C +:10D5E00008004908000200000000000000000000E0 +:10D5F00000000001008008200300040243200040D6 +:10D600000020000442011080842011080400000062 +:10D6100000442420090840030090C42020080C0284 +:10D6200000000000000000000800088108200488B5 +:10D6300002220808C32A90408410200480C22620B9 +:10D64000498822220C08C126A0C98C122A048843CA +:10D650000EA0CB8810220C02000000000000000089 +:10D6600008000A4032000180312800000112808D3C +:10D670008400280C080132008C8002200C08012E46 +:10D6800000C38002200408430200408010200402EE +:10D690000000000000000000080008870A2104883C +:10D6A000112A1C0A06222140A0422A1088850AA1BC +:10D6B00006A462221C0AC40221808C5222144886CD +:10D6C000222008A8602A14020000000000000000C8 +:10D6D000000008450601898063201C884034110140 +:10D6E000A450281848040E014B8073281C8A040695 +:10D6F00091490463201C8A06260185807020180247 +:10D7000000000000000000000800008500B1452C6A +:10D71000700214C00708214900420114820500115B +:10D72000840052021C00C40021C42C53021C02813C +:10D7300004A1CD0850021402000000000000000007 +:10D74000081012043401CC0073401C9045040148B9 +:10D7500004604118C0440401050473481450473460 +:10D7600001452062081CC2040C81C700738018C2E6 +:10D770000400000000000000080010841021CC28E4 +:10D7800042021412C51021840440001C80840091C0 +:10D79000000873821C90050C01CF0C400214304528 +:10D7A00020A1C0085002100200000000000000008C +:10D7B000000000450C8100000108080005189105D3 +:10D7C00004000104400618000224704004004000D8 +:10D7D00001C4240088040043100040200088000099 +:10D7E0000000000000000000000012852431020C3F +:10D7F00002C20410C42821490C02C004B2061C2035 +:10D80000030850420C800104A1490C00C20C1043D3 +:10D8100024A0C10810420000000000000000000029 +:10D820000010A2002000CD000040042001100009DB +:10D830000402490C92073000000033080C924100AA +:10D8400080CC0000000C00432880C20010000000C3 +:10D850000420000000000000000030105080000094 +:10D86000100000F00010800000008000D0808000D8 +:10D8700000000080109080800000000080109080E8 +:10D880000000000000C01080000000000000000048 +:10D890003C3C10808000000000001090A080000040 +:10D8A000000040109080A000000000C0109080A0F8 +:10D8B00000000020801090A0A00000000080108FC9 +:10D8C0000F0000000000000000002CC2E481803F37 +:10D8D000D9BFD998719D428000267FE672AB7C3A11 +:10D8E000400019802648DD3C91C026402640383152 +:10D8F000DB61C01999BFC980000000000000000072 +:10D90000000010801014800684979686960690007A +:10D910003FA1280102901200801788169E90900463 +:10D92000100036BEBE9E861612848013BE97AE804F +:10D93000000000000000000000000000000008825D +:10D940008184214000000008A13801780000000017 +:10D9500008B8217268800000000898448868800038 +:10D96000000008B80178014000000000000000003D +:10D9700000003FFFFFFFC0000000003FF7AFFFC007 +:10D98000000000003FFFFFFFC0000000003FFFFF5E +:10D99000FFC0000000003FFFBFFFC000000000000C +:10D9A000000000000000000000003FFFFFFFC0007B +:10D9B0000000003FFFFF7F40000000003FFFFFFF2F +:10D9C000C0000000003FFFFFFFC0000000003FFF5D +:10D9D0002FFFC00000000000000000000000000059 +:10D9E00000003FFFFFFFC0000000003FFFFF7FC0BF +:10D9F000000000003FFFFFFFC0000000003FFFFFEE +:10DA0000FFC0000000003FFFFF7F8000000000001B +:10DA1000000000000000000000003FFFFFFFC0000A +:10DA20000000003FFFBFBFC0000000003FDFBFDFBE +:10DA3000C0000000003FEFFFFF80000000003FDF5C +:10DA4000FFFFC00000000000000000000000000018 +:10DA500000003FFFFFFFC0000000003F3EAFFFC0DF +:10DA6000000000001FFFDFFFC0000000003FE7FED6 +:10DA7000EFC0000000003FFFFFDFC000000000001B +:10DA8000000000000000000000003FFFFFFFC0009A +:10DA90000000003FFFFFFFC0000000002FF7FFFF66 +:10DAA000C0000000002FFFFFDFC0000000003FF7B4 +:10DAB000DFF7C000000000000000000000000000D0 +:10DAC000000002C400B1C32C50091482C43091C7B5 +:10DAD0002460081C820734914C04430A10C2840459 +:10DAE000918424520B1802C424B1C32C400A108024 +:10DAF0000000000000000000000008050201C480D2 +:10DB000060201C08442201C08450019C08070A01BF +:10DB1000C08472201CC8041211448041011C80077B +:10DB20000811C4007000100000C0000000000000D8 +:10DB3000000000862C214A0C52021C80042021CABD +:10DB40001062021C81470421C32051011C80042C57 +:10DB500001CB0452031440C72031C80C502210805E +:10DB600001200000000000000000000620018900E4 +:10DB700052001480042801450462001080463011D0 +:10DB80000D00420114C0440011050050001C004467 +:10DB90002801490070001080000000000000000013 +:10DBA000000008C002300C8C30220888C226000811 +:10DBB0008020220C88810210C48010220C084002B0 +:10DBC000104888012304C8420210468C122200002B +:10DBD0000010000000000000080002000080C820C3 +:10DBE000110900804110900824300804424100903F +:10DBF000C420000804420010804C20230904C243C2 +:10DC000030804020110800020000000000000000E9 +:10DC1000080008810220C98C122004484122000912 +:10DC20008830200C88030E00498C10220C88402E6E +:10DC300000C984132104C8C32200CB8C3222000007 +:10DC400004000000000000000800080102004B80F2 +:10DC5000322108884102100F8010218C08410200F7 +:10DC6000878410200488000200478010210C88411E +:10DC70001610468030200002000000000000000066 +:10DC800000000AC422A108A4722A140A8502818411 +:10DC9000A042281C0AC5029140B8732910CAC402C8 +:10DCA000A180A4422A14CA85229180A8702A180251 +:10DCB0000080000000000000080008041E01C88069 +:10DCC00043201808453E010C8061209C48061281C3 +:10DCD000C08073001088060201C800422010C807E7 +:10DCE0000211CD80512014820000000000000000CD +:10DCF000080000C42421C80C420114000028104C64 +:10DD000008520214804524294004720010C00524E2 +:10DD1000114408430114C04724204808720210002F +:10DD200000000000000000000810000710110600AD +:10DD3000720018D04620014D00714010500730117C +:10DD4000C300714110B0052C01490043001C50452F +:10DD500030018C0061401842040000000000000007 +:10DD6000000030C50021C00C40011412440431846D +:10DD700024408014A1C70001400840011420052060 +:10DD800011C002608218008724114008404210022E +:10DD90000000000000000000000002000C80C4240D +:10DDA00031480C000108C14100004900420308103D +:10DDB000802021090C02021880C12430080C420185 +:10DDC0001080832011080000000000000000000007 +:10DDD000000010C10420480C1242040083003148A6 +:10DDE00000024104A0070C20400012C20C80C12098 +:10DDF00020C80012C10CB0412000490802420000B6 +:10DE000000000000000000000010800100108100F0 +:10DE100030400820030010C12002000480403090F0 +:10DE20000114024004804020000904320108A003CC +:10DE30000410080022400000043000000000000030 +:10DE40000000300010800000004000F000000000E2 +:10DE500000108000F00080800000200000F010A082 +:10DE6000000000200000F00010000000208000CC26 +:10DE700040000000000000003C3C10A080000000BA +:10DE80000000109080C040000000001090808000D2 +:10DE900000000000109080800000000000109080C2 +:10DEA000E00000000000108C0800000000000000EE +:10DEB0000000094DB1E90026402A7FE3F25498C0E2 +:10DEC0003FE64000014291D0C013E5876383B8CD9F +:10DED000F900267F0000352ED503403FD9BFB18021 +:10DEE00001F0000000000000000004021614001CF5 +:10DEF000A83F881600808480379EBAA05010021276 +:10DF0000001796972650101082801E80DEBE941453 +:10DF100002108017BE819400000000000000000085 +:10DF200000000000000008A84494288000000008B9 +:10DF30009421445100000000088442410100000087 +:10DF40000008A17223414000000008B80178324067 +:10DF5000000000000000000000003FFFFFFFC000C5 +:10DF60000000003FF7FED7C0000000003FFFD7DFF2 +:10DF7000C0000000003FFF7FFFC000000000377FAF +:10DF8000FFFFC000000000000000000000000000D3 +:10DF900000003FFFFFFFC0000000001EFFDE77C053 +:10DFA000000000001FEFFFFFC0000000003FFFFF68 +:10DFB000FFC0000000003FFFFF7FC0000000000026 +:10DFC000000000000000000000003FFFFFFFC00055 +:10DFD0000000001FCFDFFFC0000000003FFFFFBFB9 +:10DFE000C0000000003FFFFFBFC0000000003FFF77 +:10DFF000FFBFC000000000000000000000000000A3 +:10E0000000003FFFFFFFC0000000003FFFFFFFC018 +:10E01000000000003FFFFFFFC0000000001FFF1FC7 +:10E020007FC0000000002FDFFFCFC0000000000015 +:10E03000000000000000000000003FFFFFFFC000E4 +:10E040000000003FBFAFFFC0000000003FFFFFFF28 +:10E05000C0000000003EDE7FFFC0000000003FFF68 +:10E06000FFF7C000000000000000000000000000FA +:10E0700000003FFFFFFFC0000000003F7FFFFFC028 +:10E08000000000003FFFFFFFC0000000003FFEBE99 +:10E090007FC0000000003EFFD77FC00000000000EE +:10E0A0000000000000000000000000000000000070 +:10E0B0000000000000000000000000000000000060 +:10E0C0000000000000000000000000000000000050 +:10E0D0000000000000000000000000000000000040 +:10E0E00030002001020000003000438E00000000DC +:10E0F0000000000000000000000000000000000020 +:10E10000000000000000000000000000000000000F +:10E1100000000000000000000000000000000000FF +:10E1200000000000000000000000000000000000EF +:10E1300000000000000000000000000000000000DF +:10E1400000000000000000000000000000000000CF +:10E1500000000000000000000000000000000000BF +:10E1600000000000000000000000000000000000AF +:10E17000000000000000000000000000000000009F +:10E18000000000000000000000000000000000008F +:10E19000000000000000000000000000000000007F +:10E1A000000000000000000000000000000000006F +:10E1B000000000000000000000000000000000005F +:10E1C000000000000000000000000000000000004F +:10E1D000000000000000000000000000000000003F +:10E1E000000000000000000000000000000000002F +:10E1F000000000000000000000000000000000001F +:10E20000000000000000000000000000000000000E +:10E2100000000000000000000000000000000000FE +:10E2200000000000000000000000000000000000EE +:10E2300000000000000000000000000000000000DE +:10E2400000000000000000000000000000000000CE +:10E2500000000000000000000000000000000000BE +:10E2600000000000000000000000000000000000AE +:10E27000000000000000000000000000000000009E +:10E28000000000000000000000000000000000008E +:10E29000000000000000000000000000000000007E +:10E2A000000000000000000000000000000000006E +:10E2B000000000000000000000000000000000005E +:10E2C000000000000000000000000000000000004E +:10E2D000000000000000000000000000000000003E +:10E2E000000000000000000000000000000000002E +:10E2F000000000000000000000000000000000001E +:10E30000000000000000000000000000000000000D +:10E3100000000000000000000000000000000000FD +:10E3200000000000000000000000000000000000ED +:10E3300000000000000000000000000000000000DD :10E3400000000000000000000000000000000000CD :10E3500000000000000000000000000000000000BD :10E3600000000000000000000000000000000000AD -:10E37000000000000000000000002CDB0FB6C2CD42 -:10E38000B0B36C2CDB0B36C2DFB0B36C2CDB0B7E76 -:10E39000C2CDB0B7FD2CDB0B36C2CDB0B36C0000E4 -:10E3A00000000000000000000000333C4FCF13339A -:10E3B000C4CCF1333C4CCF133FC4CCF1333C4CFFC5 -:10E3C0001333C4CFFD333C4CCF1333C4CCF1000026 -:10E3D000000000000000000000003B7E4EDF93B70D -:10E3E000E4EC793B1E4EDF93BFE48DF93B784EFFA2 -:10E3F00093B7E4EDFD3B1E4EDF93B784EDF90000CB -:10E4000000000000000000000000010270409C10AD -:10E41000271C09C10130401C10670409C10270416A -:10E420009C11071401C10270409C50071C01C000E0 -:10E4300000000000000000000000040571015C40C5 -:10E44000571055C40131005C40571015C4057101C7 -:10E45000DC4017181DC40571055C4057101DC00035 -:10E4600000000000000000000000020120804820A1 -:10E4700012000482012080482012080482012080BA -:10E48000482012080482012080486012080480009D -:10E490000000000000000000000000006000180004 -:10E4A0000600418000600018004600018000600006 -:10E4B0001000061001800060001820461001800046 -:10E4C00000000000000000000000080472011C8031 -:10E4D000472011C80472011C80072011C804730072 -:10E4E0001C80472011CC0472011C80472011C00001 -:10E4F00000000000000000000000000060001800A4 -:10E5000006000184006000180006000180006040E1 -:10E510001800060401810060001800061401800044 -:10E520000000000000000000000008042201088034 -:10E530004270108C04220108C002201088042200BE -:10E540000880425010080422010900424010800057 -:10E55000000000000000000000002E044A8112A00C -:10E5600044A8112A044A8112A004A8112A044B804D -:10E5700012A04488012E044A811220049801000050 -:10E58000000000000000000008C00E00530014C08E -:10E590000530014C00530014E00530014C005300DD -:10E5A00004C00530004C00030014C00530004010CA -:10E5B000000000000000000008C00400400010003F -:10E5C0000458010400400010000400010000410054 -:10E5D00004004458104400000011800450104030E2 -:10E5E000000000000000000008C0400200008000A1 -:10E5F0002000080040000000002000080002000089 -:10E600008400000008400200008000200008403024 -:10E61000000000000000000008C040006001180079 -:10E6200046000180066001980046001180046001E8 -:10E630001800460011800420011800660011803087 -:10E640000000000000000000100140006000980081 -:10E6500026000980026001980006000C800260001C -:10E660001800060001800260009880060001820008 -:10E6700000000000000000004045420030810C20F6 -:10E68000430810C22430818C20030810C20420806B -:10E690000C20030818C20430810C20430818C01154 -:10E6A00050000000000000004000000030000C009E -:10E6B000030000C04030000C000300008000300068 -:10E6C0000C00032000C00030000C00032000C0003C -:10E6D00000000000000000004001021030800C200B -:10E6E000030800C20030800C20030800C201208013 -:10E6F0000C20032C00C20030800C30432C00C000E2 -:10E7000040000000000000004045420460811820E5 -:10E710004608118204608018204608118204608136 -:10E720001820460C11C20460811830460C11C0112B -:10E73000500000000000000040014200208008203E -:10E740000228008200208008200208008200208029 -:10E7500008200208018200208008200308018000B0 -:10E7600000000000000000005001420460811820F9 -:10E7700046281182046080182046081182046081B6 -:10E780001820460810820460811820430810800079 -:10E79000000000000000000040454004500114004B -:10E7A00045001140250000140045001140045001AF -:10E7B00014004500004004500140000100004211D7 -:10E7C000500000000000000048000600418010607A -:10E7D0000418010600418010600418010600418001 -:10E7E0001060041801060041801060041801000048 -:10E7F00000000000000000004800020500804021E9 -:10E80000100804000100804020100804020100806C -:10E810004020500814021100844020100814000009 -:10E820000000000000000000404546015180D46017 -:10E8300035180D46035180D46015180D46035180DC -:10E84000546015180D46035180D46035180D4011E1 -:10E8500050000000000000000001460471811C60AF -:10E86000451811D60471811C60671811C6047181A6 -:10E870009C60471811C60471811C60671811C000A4 -:10E8800000000000000000004005460271809C600E -:10E89000271809C60071809C60671809C60271803C -:10E8A0009C61271801C60271809C60071801C00096 -:10E8B00000000000000000005045460571815C60CA -:10E8C000571855D60171815C60571815C6057181BE -:10E8D0005C60571818C60571815C60431818821176 -:10E8E0005000000000000000400452012080482039 -:10E8F00012480490012080492012080482012480DB -:10E9000048201248009201208048201748048001C6 -:10E910000000000000000000400006006180186058 -:10E92000063C0186006180186046180186006180FF -:10E930001860061801860061801860461801800181 -:10E9400000000000000000000041600478011E008B -:10E95000478011E02478011E00078011E00478014F -:10E960001E00478011E00438011E00478011C011CD -:10E9700050000000000000004001120060801820DC -:10E980000648019200608019200608018200648018 -:10E9900018200648019300208018200648018000B6 -:10E9A0000000000000000000400142042081082017 -:10E9B000420810820420810820020810820420816D -:10E9C00008204208108A0460810820420810800054 -:10E9D000000000000000000040454204408110207B -:10E9E00044081102044081102004081102044081EF -:10E9F0001021440801020450811020040801001174 -:10EA000050000000000000004000030050C014301F -:10EA1000050C01430050C01430050C014300508028 -:10EA200014300508014A0050C014300508014000A8 -:10EA300000000000000000004000080042001080BC -:10EA40000420010800420010800420010800420058 -:10EA500010800420110000420010800420110010DA -:10EA6000400000000000000040454202008080207D -:10EA70002008080200008080202008080202008090 -:10EA80008020200808020200808020200808001151 -:10EA9000500000000000000040014000600118002C -:10EAA00046001180066001180046001180046001D4 -:10EAB00018004600118004600118006600118010E3 -:10EAC00000000000000000004001400264009800C7 -:10EAD0002600099006600198002640098002600027 -:10EAE0009800260000900260009800070001800056 -:10EAF00000000000000000004045600438050E00E2 -:10EB0000438010E04438010E00438010E0043801D7 -:10EB10000E00438018A00438010E004680188011B2 -:10EB200050000000000000005000010030400C10B8 -:10EB3000030400C50030400C10031400C100304035 -:10EB40000C10030400874030400C100204008000C9 -:10EB500000000000000000004004050035400C509B -:10EB6000031400D50431410C50035C00C500310092 -:10EB70000C50031000940031400C50431000C200B0 -:10EB800000000000000000004045430520C118308F -:10EB9000460C11970060C01830461C11830460C1F8 -:10EBA0001830520C11870460C11830460C118011C6 -:10EBB000500000000000000040010000214008005B -:10EBC00002000080002000080002000080002000F9 -:10EBD0000800020000800020000800020000800001 -:10EBE0000000000000000000400148442201188499 -:10EBF0004621119800621018844420118844621143 -:10EC00001884422111804462111884462111800029 -:10EC100000000000000000004045400450111404B2 -:10EC2000450011410050101400450111404450119D -:10EC30001404450101404450111404050101401120 -:10EC40005000000000000000400008204208108230 -:10EC50000420010820420810820420810820420874 -:10EC6000108204228108205208108A0422810000A8 -:10EC7000000000000000000000040A01028440A11E -:10EC80001028000A01028040A01028040A01028016 -:10EC900040A0102C140A00028040B0102C14000078 -:10ECA000000000000000000040454D035340D4D058 -:10ECB00035300C4D035340D4D035340D4D03534003 -:10ECC000D4D035340D4D021340D4D035340D40111D -:10ECD00050000000000000004001080472011C8088 -:10ECE000472015C80472011C80472011C804721106 -:10ECF0001C80472611C84472011C90672611C00071 -:10ED000000000000000000000000230840C612318F -:10ED1000848C01030848C61230840C61231848C251 -:10ED20001231848C01030848C61231048C010000A2 -:10ED3000000000000000000000003FFF4FFFD3FF75 -:10ED4000F4FFFD3FFF4FFFD3FFF4FFFD3FFF4FFFF9 -:10ED5000D3FFF4FFFD3FFF4FFFD3FFF4FFFD0000A3 +:10E37000000000000000000000000000000000009D +:10E38000000000000000000000000000000000008D +:10E39000000000000000000000000000000000007D +:10E3A000000000000000000000000000000000006D +:10E3B000000000000000000000000000000000005D +:10E3C000000000000000000000000000000000004D +:10E3D000000000000000000000000000000000003D +:10E3E000000000000000000000000000000000002D +:10E3F000000000000000000000000000000000001D +:10E40000000000000000000000000000000000000C +:10E4100000000000000000000000000000000000FC +:10E4200000000000000000000000000000000000EC +:10E4300000000000000000000000000000000000DC +:10E4400000000000000000000000000000000000CC +:10E4500000000000000000000000000000000000BC +:10E4600000000000000000000000000000000000AC +:10E47000000000000000000000000000000000009C +:10E48000000000000000000000000000000000008C +:10E49000000000000000000000000000000000007C +:10E4A000000000000000000000000000000000006C +:10E4B000000000000000000000000000000000005C +:10E4C000000000000000000000000000000000004C +:10E4D000000000000000000000000000000000003C +:10E4E000000000000000000000000000000000002C +:10E4F000000000000000000000000000000000001C +:10E50000000000000000000000000000000000000B +:10E5100000000000000000000000000000000000FB +:10E5200000000000000000000000000000000000EB +:10E5300000000000000000000000000000000000DB +:10E5400000000000000000000000000000000000CB +:10E5500000000000000000000000000000000000BB +:10E5600000000000000000000000000000000000AB +:10E57000000000000000000000000000000000009B +:10E58000000000000000000000000000000000008B +:10E59000000000000000000000000000000000007B +:10E5A000000000000000000000000000000000006B +:10E5B000000000000000000000000000000000005B +:10E5C000000000000000000000000000000000004B +:10E5D000000000000000000000000000000000003B +:10E5E000000000000000000000000000000000002B +:10E5F000000000000000000000000000000000001B +:10E60000000000000000000000000000000000000A +:10E6100000000000000000000000000000000000FA +:10E6200000000000000000000000000000000000EA +:10E6300000000000000000000000000000000000DA +:10E6400000000000000000000000000000000000CA +:10E6500000000000000000000000000000000000BA +:10E6600000000000000000000000000000000000AA +:10E67000000000000000000000000000000000009A +:10E68000000000000000000000000000000000008A +:10E69000000000000000000000000000000000007A +:10E6A000000000000000000000000000000000006A +:10E6B000000000000000000000000000000000005A +:10E6C000000000000000000000000000000000004A +:10E6D000000000000000000000000000000000003A +:10E6E000000000000000000000000000000000002A +:10E6F000000000000000000000000000000000001A +:10E700000000000000000000000000000000000009 +:10E7100000000000000000000000000000000000F9 +:10E7200000000000000000000000000000000000E9 +:10E7300000000000000000000000000000000000D9 +:10E7400000000000000000000000000000000000C9 +:10E7500000000000000000000000000000000000B9 +:10E7600000000000000000000000000000000000A9 +:10E770000000000000000000000000000000000099 +:10E780000000000000000000000000000000000089 +:10E790000000000000000000000000000000000079 +:10E7A0000000000000000000000000000000000069 +:10E7B0000000000000000000000000000000000059 +:10E7C0000000000000000000000000000000000049 +:10E7D0000000000000000000000000000000000039 +:10E7E0000000000000000000000000000000000029 +:10E7F0000000000000000000000000000000000019 +:10E800000000000000000000000000000000000008 +:10E8100000000000000000000000000000000000F8 +:10E8200000000000000000000000000000000000E8 +:10E8300000000000000000000000000000000000D8 +:10E8400000000000000000000000000000000000C8 +:10E8500000000000000000000000000000000000B8 +:10E8600000000000000000000000000000000000A8 +:10E870000000000000000000000000000000000098 +:10E880000000000000000000000000000000000088 +:10E890000000000000000000000000000000000078 +:10E8A0000000000000000000000000000000000068 +:10E8B0000000000000000000000000000000000058 +:10E8C0000000000000000000000000000000000048 +:10E8D0000000000000000000000000000000000038 +:10E8E0000000000000000000000000000000000028 +:10E8F0000000000000000000000000000000000018 +:10E900000000000000000000000000000000000007 +:10E9100000000000000000000000000000000000F7 +:10E9200000000000000000000000000000000000E7 +:10E9300000000000000000000000000000000000D7 +:10E9400000000000000000000000000000000000C7 +:10E9500000000000000000000000000000000000B7 +:10E9600000000000000000000000000000000000A7 +:10E970000000000000000000000000000000000097 +:10E980000000000000000000000000000000000087 +:10E990000000000000000000000000000000000077 +:10E9A0000000000000000000000000000000000067 +:10E9B0000000000000000000000000000000000057 +:10E9C0000000000000000000000000000000000047 +:10E9D0000000000000000000000000000000000037 +:10E9E0000000000000000000000000000000000027 +:10E9F0000000000000000000000000000000000017 +:10EA00000000000000000000000000000000000006 +:10EA100000000000000000000000000000000000F6 +:10EA200000000000000000000000000000000000E6 +:10EA300000000000000000000000000000000000D6 +:10EA400000000000000000000000000000000000C6 +:10EA500000000000000000000000000000000000B6 +:10EA600000000000000000000000000000000000A6 +:10EA70000000000000000000000000000000000096 +:10EA80000000000000000000000000000000000086 +:10EA90000000000000000000000000000000000076 +:10EAA0000000000000000000000000000000000066 +:10EAB0000000000000000000000000000000000056 +:10EAC0000000000000000000000000000000000046 +:10EAD0000000000000000000000000000000000036 +:10EAE0000000000000000000000000000000000026 +:10EAF0000000000000000000000000000000000016 +:10EB00000000000000000000000000000000000005 +:10EB100000000000000000000000000000000000F5 +:10EB200000000000000000000000000000000000E5 +:10EB300000000000000000000000000000000000D5 +:10EB400000000000000000000000000000000000C5 +:10EB500000000000000000000000000000000000B5 +:10EB600000000000000000000000000000000000A5 +:10EB70000000000000000000000000000000000095 +:10EB80000000000000000000000000000000000085 +:10EB90000000000000000000000000000000000075 +:10EBA0000000000000000000000000000000000065 +:10EBB0000000000000000000000000000000000055 +:10EBC0000000000000000000000000000000000045 +:10EBD0000000000000000000000000000000000035 +:10EBE0000000000000000000000000000000000025 +:10EBF0000000000000000000000000000000000015 +:10EC00000000000000000000000000000000000004 +:10EC100000000000000000000000000000000000F4 +:10EC200000000000000000000000000000000000E4 +:10EC300000000000000000000000000000000000D4 +:10EC400000000000000000000000000000000000C4 +:10EC500000000000000000000000000000000000B4 +:10EC600000000000000000000000000000000000A4 +:10EC70000000000000000000000000000000000094 +:10EC80000000000000000000000000000000000084 +:10EC90000000000000000000000000000000000074 +:10ECA0000000000000000000000000000000000064 +:10ECB0000000000000000000000000000000000054 +:10ECC0000000000000000000000000000000000044 +:10ECD0000000000000000000000000000000000034 +:10ECE0000000000000000000000000000000000024 +:10ECF0000000000000000000000000000000000014 +:10ED00000000000000000000000000000000000003 +:10ED100000000000000000000000000000000000F3 +:10ED200000000000000000000000000000000000E3 +:10ED300000000000000000000000000000000000D3 +:10ED400000000000000000000000000000000000C3 +:10ED500000000000000000000000000000000000B3 :10ED600000000000000000000000000000000000A3 :10ED70000000000000000000000000000000000093 :10ED80000000000000000000000000000000000083 -:10ED9000000000000000000000002DFB0FB6C2CDF7 -:10EDA000B0B7FD3FFB0B36C2DFB0FB6C2CDB0B7E3C -:10EDB000C2CDB0B7FD3FFB0B36C2CDF4B7FD0000AE -:10EDC0000000000000000000000033FC4FCF1333B0 -:10EDD000C4CFFD3FFC4CCF133FC4FCF1333C4CFF90 -:10EDE0001333C4CFFD3FFC4CCF1333F4CFFD0000F1 -:10EDF000000000000000000000003B7E4EDF93B7E3 -:10EE0000E4EDF93FFE4EDF93B7E4EDF93B7E4EC7EC -:10EE100093B7E4EC61231E4EDF93B784EC610000EE -:10EE20000000000000000000000000C524A14A24EA -:10EE3000630114024400810B2871021082403811D2 -:10EE4000410450081882873831C32C520A10000040 -:10EE5000000000000000000000000845128144800E -:10EE600071211C0A071A8102A0522014480712813E -:10EE7000C680602008884702014A80702010000088 -:10EE80000000000000000000000002C52C014A0044 -:10EE900052091C800724210808710210804520A116 -:10EEA0004928520114C0450091C4007202100000AC -:10EEB0000000000000000000000002072001C10067 -:10EEC0007109108007000101007008188007000117 -:10EED000892052010C8046308145046000100000FA -:10EEE0000000000000000000000008C202200088AE -:10EEF00020220008C22280408802220008820AA044 -:10EF00000CA802220008800A00808C022200000067 -:10EF10000000000000000000080002430000402044 -:10EF200030080440413010C8000000000203001007 -:10EF3000C000110800C2431080C020010800020078 -:10EF40000000000000000000080008C30A20C18C77 -:10EF500012220488013620C3081228040801040084 -:10EF60004AA8220104C8412630C0880221000200BC -:10EF70000000000000000000080008000A10C18026 -:10EF800032210C88430280448012290408420A90EE -:10EF90008A8000200448030A1082800020000200BA -:10EFA000000000000000000000000A8702A180AC01 -:10EFB0004329148A8402A100AC412010080626319E -:10EFC00080A46020144A44328181AC602A18020077 -:10EFD0000000000000000000080008072201C580B2 -:10EFE00073211CC8072A010C807220104847261183 -:10EFF000C58073201C88072A1149807020140200E4 -:10F000000000000000000000080000451031C90C9D -:10F0100073021CC04704010A0C510A1082472031B8 -:10F02000C80072021C40053011C4007201180200B1 -:10F030000000000000000000081010062401450434 -:10F04000518118904714010404718810120534018D -:10F050004404514018D0073801C404520114C204BA -:10F060000000000000000000000000870021890C63 -:10F0700060011CD0452401C10C42010000C52031B3 -:10F08000410840001880450021410C70421CC2001C -:10F090000000000000000000000002011C80C420ED -:10F0A00031081042420880C62031090020031C901C -:10F0B000C42001490C424310804420310810000054 -:10F0C0000000000000000000000030832030480CE9 -:10F0D00032401090812420C80432401020C3208088 -:10F0E000C800024A0CA0012410C8083241100000D8 -:10F0F0000000000000000000001090030000C904A0 -:10F10000304000900020008000104010004020108F -:10F11000C20000800820430810810032400CC00467 -:10F12000200000000000000000003000400000004F -:10F13000100000F01020000000100000F0108040CF -:10F140000000004000F01090800000000000C000AF -:10F1500000000000000000003C3C108090400000D7 -:10F1600000801090A09000000000001090808000AF -:10F1700000000000109080900000000040108F0FF1 -:10F180000000000000000000000024C6BA06C01CF9 -:10F19000492861142B1C0E403FD9BFD9AABC1A5F65 -:10F1A0000010A6503B61B325BC4019BFFFE98000A9 -:10F1B0000000000000000000000010921494800C79 -:10F1C000073F2B948614848028000049140486127B -:10F1D0008000412734D0908492002D8A211E800027 -:10F1E000000000000000000000000000000008A275 -:10F1F000B10101000000000884B17828000000007F -:10F2000008B13214140000000008A8235421400063 -:10F21000000000000000000000003FFFFFFFC000F2 -:10F220000000002FFFFEF7C0000000002FD7FEEF08 -:10F23000C0000000003FFF7FFFC000000000000092 -:10F24000000000000000000000003FFFFFFFC000C2 -:10F250000000000FEF77FFC0000000003EFFFEEF50 -:10F2600040000000003FFFBFFF4000000000000022 -:10F27000000000000000000000003FFFFFFFC00092 -:10F280000000003FFFDFFFC0000000003FFFFFFF66 -:10F29000C0000000003F7F2FFFC000000000000002 -:10F2A000000000000000000000003FFFFFFFC00062 -:10F2B0000000001FFFFFEFC0000000001FEFEFEF96 -:10F2C000C0000000002FFFFFFFC000000000000092 -:10F2D000000000000000000000003FFFFFFFC00032 -:10F2E0000000003FFFEFFFC0000000002FAFDFFF76 -:10F2F000C0000000003FEFFFF7C00000000000006A -:10F30000000000000000000000003FFFFFFFC00001 -:10F310000000003FDFDFFFC0000000003FFFFFFFF5 -:10F32000C0000000001FFFDFFFC000000000000061 -:10F330000000000000000000000002C424A1002C16 -:10F34000520B18C2862CA18038620A0840C42CA136 -:10F350000828420B14008514A10828430A10000055 -:10F3600000000000000000000000080412010380FB -:10F3700061201008071241428070201C08041A0105 -:10F3800084814020180846368105806320100001E2 -:10F390008000000000000000000000842421000C18 -:10F3A00052021400872821810872061C82842021C1 -:10F3B0004818420354804530254A18530210000172 -:10F3C000200000000000000000000804220101806D -:10F3D000422018C8442201808442201C8804220153 -:10F3E0000080402010884436014080410010000019 -:10F3F0000000000000000000000000C00820000C19 -:10F4000022030440810020840803000080C2002001 -:10F41000C408000308888216A040883222800000B9 -:10F42000000000000000000008000201008004202D -:10F4300010080CC2121084C82212080402030088AB -:10F440000021000C0C404130008420100800020014 -:10F450000000000000000000080008820620088C60 -:10F4600032220C888126204D882322808883062022 -:10F4700008880023048A8136204B8832220000004D -:10F4800000000000000000000800080202000980DF -:10F49000322004886022008984002008980002003D -:10F4A000008000200008023A8048803020000200DE -:10F4B000000000000000000008000AC41AA180A893 -:10F4C000412A10CAC71AA104AD712A184AD406B13C -:10F4D00000A8712A100884262906AC522A100200BE -:10F4E0000000000000000000080008042A0141801C -:10F4F00042201C00040A01098451201C8844020196 -:10F5000008804020104A4702014880632010020012 -:10F510008000000000000000080000C41021810CE1 -:10F5200041020C00C020610D0E72021C40C4083163 -:10F530000418420210808720B1C40C53021000004E -:10F540000000000000000000081020072401CC008B -:10F55000724014000424010800734110C0073011E8 -:10F56000CC007101100204208146104240100204B8 -:10F570000000000000000000080000C51021000885 -:10F5800062021C90C52421000C70821C10C4203122 -:10F59000880240061C008500A1000C4042000200C9 -:10F5A000000000000000000000002205148001207F -:10F5B00030080C42060080012451080C02410080F2 -:10F5C0004C2000080C304204000420000800000019 -:10F5D0000000000000000000000010C62420000C05 -:10F5E00032C20480C73020000C53C20410C22870FD -:10F5F0000C0902024C80810430090C024210000008 -:10F60000000000000000000000108001380002002F -:10F6100012400C200734040200630108100024107B -:10F620000400020104820108800910024010000455 -:10F6300030000000000000000000302010800000BA -:10F64000208000F02010800000208000D08000008A -:10F650004000000000301000800000000000CC409E -:10F6600000000000000000003C3C10808000000012 -:10F67000000010908080000000000010908000903A -:10F68000800010000010A0800000002000108C08F6 -:10F6900000000000000000000000341ABE178000C7 -:10F6A0003E40266FBAE32480001659BD828182D87D -:10F6B000800000199986806480C03FD9998000013C -:10F6C000F000000000000000000006160294001682 -:10F6D000C01694829016108021182828020A020869 -:10F6E00080000000000282801400011411A040007C -:10F6F000000000000000000000000000000008847E -:10F700000284A8800000000891228441A2082401FC -:10F7100030000000000000000008840144010000E7 -:10F72000000000000000000000003FFFFFFFC000DD -:10F730000000003EF7FFF7C0000000002FE7B7FF12 -:10F74000C0000000002FFE7FF7C000000000000096 -:10F75000000000000000000000003FFFFFFFC000AD -:10F7600000000036BFFEDFC0000000000FF7DFFF23 -:10F77000C0000000003DB7B7EFC00000000000006F -:10F78000000000000000000000003FFFFFFFC0007D -:10F790000000001FDFDFFFC0000000000FDFDFFF01 -:10F7A000C0000000003FEFFFFFC0000000000000AD -:10F7B000000000000000000000003FFFFFFFC0004D -:10F7C0000000003FBF7FFFC0000000003FFF7FF749 -:10F7D000C0000000003FDFFFFFC00000000000008D -:10F7E000000000000000000000003FFFFFFFC0001D -:10F7F0000000003F7EFFFF40000000003FFEFFFFD3 -:10F80000C0000000003FFFFFFFC00000000000003C -:10F81000000000000000000000003FFFFFFFC000EC -:10F8200000000037FF6FFFC0000000003FFFFFFF38 -:10F83000C0000000003FFFFFFFC00000000000000C +:10ED90000000000000000000000000000000000073 +:10EDA0000000000000000000000000000000000063 +:10EDB0000000000000000000000000000000000053 +:10EDC0000000000000000000000000000000000043 +:10EDD0000000000000000000000000000000000033 +:10EDE0000000000000000000000000000000000023 +:10EDF0000000000000000000000000000000000013 +:10EE00000000000000000000000000000000000002 +:10EE100000000000000000000000000000000000F2 +:10EE200000000000000000000000000000000000E2 +:10EE300000000000000000000000000000000000D2 +:10EE400000000000000000000000000000000000C2 +:10EE500000000000000000000000000000000000B2 +:10EE600000000000000000000000000000000000A2 +:10EE70000000000000000000000000000000000092 +:10EE80000000000000000000000000000000000082 +:10EE90000000000000000000000000000000000072 +:10EEA0000000000000000000000000000000000062 +:10EEB0000000000000000000000000000000000052 +:10EEC0000000000000000000000000000000000042 +:10EED0000000000000000000000000000000000032 +:10EEE0000000000000000000000000000000000022 +:10EEF0000000000000000000000000000000000012 +:10EF00000000000000000000000000000000000001 +:10EF100000000000000000000000000000000000F1 +:10EF20000000000030002001020200003000438099 +:10EF300000000000000000000000000000000000D1 +:10EF400000000000000000000000000000000000C1 +:10EF500000000000000000000000000000000000B1 +:10EF600000000000000000000000000000000000A1 +:10EF70000000000000000000000000000000000091 +:10EF80000000000000000000000000000000000081 +:10EF90000000000000000000000000000000000071 +:10EFA0000000000000000000000000000000000061 +:10EFB0000000000000000000000000000000000051 +:10EFC0000000000000000000000000000000000041 +:10EFD0000000000000000000000000000000000031 +:10EFE0000000000000000000000000000000000021 +:10EFF0000000000000000000000000000000000011 +:10F000000000000000000000000000000000000000 +:10F0100000000000000000000000000000000000F0 +:10F0200000000000000000000000000000000000E0 +:10F0300000000000000000000000000000000000D0 +:10F0400000000000000000000000000000000000C0 +:10F0500000000000000000000000000000000000B0 +:10F0600000000000000000000000000000000000A0 +:10F070000000000000000000000000000000000090 +:10F080000000000000000000000000000000000080 +:10F090000000000000000000000000000000000070 +:10F0A0000000000000000000000000000000000060 +:10F0B0000000000000000000000000000000000050 +:10F0C0000000000000000000000000000000000040 +:10F0D0000000000000000000000000000000000030 +:10F0E0000000000000000000000000000000000020 +:10F0F0000000000000000000000000000000000010 +:10F1000000000000000000000000000000000000FF +:10F1100000000000000000000000000000000000EF +:10F1200000000000000000000000000000000000DF +:10F1300000000000000000000000000000000000CF +:10F1400000000000000000000000000000000000BF +:10F1500000000000000000000000000000000000AF +:10F16000000000000000000000000000000000009F +:10F17000000000000000000000000000000000008F +:10F18000000000000000000000000000000000007F +:10F19000000000000000000000000000000000006F +:10F1A000000000000000000000000000000000005F +:10F1B000000000000000000000000000000000004F +:10F1C000000000000000000000000000000000003F +:10F1D000000000000000000000000000000000002F +:10F1E000000000000000000000000000000000001F +:10F1F000000000000000000000000000000000000F +:10F2000000000000000000000000000000000000FE +:10F2100000000000000000000000000000000000EE +:10F2200000000000000000000000000000000000DE +:10F2300000000000000000000000000000000000CE +:10F2400000000000000000000000000000000000BE +:10F2500000000000000000000000000000000000AE +:10F26000000000000000000000000000000000009E +:10F27000000000000000000000000000000000008E +:10F28000000000000000000000000000000000007E +:10F29000000000000000000000000000000000006E +:10F2A000000000000000000000000000000000005E +:10F2B000000000000000000000000000000000004E +:10F2C000000000000000000000000000000000003E +:10F2D000000000000000000000000000000000002E +:10F2E000000000000000000000000000000000001E +:10F2F000000000000000000000000000000000000E +:10F3000000000000000000000000000000000000FD +:10F3100000000000000000000000000000000000ED +:10F3200000000000000000000000000000000000DD +:10F3300000000000000000000000000000000000CD +:10F3400000000000000000000000000000000000BD +:10F3500000000000000000000000000000000000AD +:10F36000000000000000000000000000000000009D +:10F37000000000000000000000000000000000008D +:10F38000000000000000000000000000000000007D +:10F39000000000000000000000000000000000006D +:10F3A000000000000000000000000000000000005D +:10F3B000000000000000000000000000000000004D +:10F3C000000000000000000000000000000000003D +:10F3D000000000000000000000000000000000002D +:10F3E000000000000000000000000000000000001D +:10F3F000000000000000000000000000000000000D +:10F4000000000000000000000000000000000000FC +:10F4100000000000000000000000000000000000EC +:10F4200000000000000000000000000000000000DC +:10F4300000000000000000000000000000000000CC +:10F4400000000000000000000000000000000000BC +:10F4500000000000000000000000000000000000AC +:10F46000000000000000000000000000000000009C +:10F47000000000000000000000000000000000008C +:10F48000000000000000000000000000000000007C +:10F49000000000000000000000000000000000006C +:10F4A000000000000000000000000000000000005C +:10F4B000000000000000000000000000000000004C +:10F4C000000000000000000000000000000000003C +:10F4D000000000000000000000000000000000002C +:10F4E000000000000000000000000000000000001C +:10F4F000000000000000000000000000000000000C +:10F5000000000000000000000000000000000000FB +:10F5100000000000000000000000000000000000EB +:10F5200000000000000000000000000000000000DB +:10F5300000000000000000000000000000000000CB +:10F5400000000000000000000000000000000000BB +:10F5500000000000000000000000000000000000AB +:10F56000000000000000000000000000000000009B +:10F57000000000000000000000000000000000008B +:10F58000000000000000000000000000000000007B +:10F59000000000000000000000000000000000006B +:10F5A000000000000000000000000000000000005B +:10F5B000000000000000000000000000000000004B +:10F5C000000000000000000000000000000000003B +:10F5D000000000000000000000000000000000002B +:10F5E000000000000000000000000000000000001B +:10F5F000000000000000000000000000000000000B +:10F6000000000000000000000000000000000000FA +:10F6100000000000000000000000000000000000EA +:10F6200000000000000000000000000000000000DA +:10F6300000000000000000000000000000000000CA +:10F6400000000000000000000000000000000000BA +:10F6500000000000000000000000000000000000AA +:10F66000000000000000000000000000000000009A +:10F67000000000000000000000000000000000008A +:10F68000000000000000000000000000000000007A +:10F69000000000000000000000000000000000006A +:10F6A000000000000000000000000000000000005A +:10F6B000000000000000000000000000000000004A +:10F6C000000000000000000000000000000000003A +:10F6D000000000000000000000000000000000002A +:10F6E000000000000000000000000000000000001A +:10F6F000000000000000000000000000000000000A +:10F7000000000000000000000000000000000000F9 +:10F7100000000000000000000000000000000000E9 +:10F7200000000000000000000000000000000000D9 +:10F7300000000000000000000000000000000000C9 +:10F7400000000000000000000000000000000000B9 +:10F7500000000000000000000000000000000000A9 +:10F760000000000000000000000000000000000099 +:10F770000000000000000000000000000000000089 +:10F780000000000000000000000000000000000079 +:10F790000000000000000000000000000000000069 +:10F7A0000000000000000000000000000000000059 +:10F7B0000000000000000000000000000000000049 +:10F7C0000000000000000000000000000000000039 +:10F7D0000000000000000000000000000000000029 +:10F7E0000000000000000000000000000000000019 +:10F7F0000000000000000000000000000000000009 +:10F8000000000000000000000000000000000000F8 +:10F8100000000000000000000000000000000000E8 +:10F8200000000000000000000000000000000000D8 +:10F8300000000000000000000000000000000000C8 :10F8400000000000000000000000000000000000B8 :10F8500000000000000000000000000000000000A8 :10F860000000000000000000000000000000000098 -:10F870000000000000000000300020010200000035 -:10F880003000430C000000000000000000000000F9 +:10F870000000000000000000000000000000000088 +:10F880000000000000000000000000000000000078 :10F890000000000000000000000000000000000068 :10F8A0000000000000000000000000000000000058 :10F8B0000000000000000000000000000000000048 :10F8C0000000000000000000000000000000000038 :10F8D0000000000000000000000000000000000028 :10F8E0000000000000000000000000000000000018 -:10F8F00000000000000000000030C00000000030E8 -:10F90000C000000000000000000000000000000037 +:10F8F0000000000000000000000000000000000008 +:10F9000000000000000000000000000000000000F7 :10F9100000000000000000000000000000000000E7 :10F9200000000000000000000000000000000000D7 :10F9300000000000000000000000000000000000C7 :10F9400000000000000000000000000000000000B7 -:10F95000000000000000000000000030C030C000C7 +:10F9500000000000000000000000000000000000A7 :10F960000000000000000000000000000000000097 :10F970000000000000000000000000000000000087 :10F980000000000000000000000000000000000077 :10F990000000000000000000000000000000000067 :10F9A0000000000000000000000000000000000057 -:10F9B00000000000000000000030C030C030C03047 -:10F9C000C000000000000000000000000000000077 +:10F9B0000000000000000000000000000000000047 +:10F9C0000000000000000000000000000000000037 :10F9D0000000000000000000000000000000000027 :10F9E0000000000000000000000000000000000017 :10F9F0000000000000000000000000000000000007 :10FA000000000000000000000000000000000000F6 -:10FA10000000000000000000000F00000000000FC8 +:10FA100000000000000000000000000000000000E6 :10FA200000000000000000000000000000000000D6 :10FA300000000000000000000000000000000000C6 :10FA400000000000000000000000000000000000B6 :10FA500000000000000000000000000000000000A6 :10FA60000000000000000000000000000000000096 -:10FA70000000000000000000003FC0000000003F48 -:10FA8000C0000000000000000000000000000000B6 +:10FA70000000000000000000000000000000000086 +:10FA80000000000000000000000000000000000076 :10FA90000000000000000000000000000000000066 :10FAA0000000000000000000000000000000000056 :10FAB0000000000000000000000000000000000046 :10FAC0000000000000000000000000000000000036 -:10FAD0000000000000000000000F0030C030C00F28 +:10FAD0000000000000000000000000000000000026 :10FAE0000000000000000000000000000000000016 :10FAF0000000000000000000000000000000000006 :10FB000000000000000000000000000000000000F5 :10FB100000000000000000000000000000000000E5 :10FB200000000000000000000000000000000000D5 -:10FB3000000000000000000000136B00C000CF2C8C -:10FB40004000000000000000000000000000000075 +:10FB300000000000000000000000000000000000C5 +:10FB400000000000000000000000000000000000B5 :10FB500000000000000000000000000000000000A5 :10FB60000000000000000000000000000000000095 :10FB70000000000000000000000000000000000085 :10FB80000000000000000000000000000000000075 -:10FB900000000000000000000000000F000F000047 +:10FB90000000000000000000000000000000000065 :10FBA0000000000000000000000000000000000055 :10FBB0000000000000000000000000000000000045 :10FBC0000000000000000000000000000000000035 :10FBD0000000000000000000000000000000000025 :10FBE0000000000000000000000000000000000015 -:10FBF00000000000000000000030C00F000F0030C7 -:10FC0000C000000000000000000000000000000034 +:10FBF0000000000000000000000000000000000005 +:10FC000000000000000000000000000000000000F4 :10FC100000000000000000000000000000000000E4 :10FC200000000000000000000000000000000000D4 :10FC300000000000000000000000000000000000C4 :10FC400000000000000000000000000000000000B4 -:10FC500000000000000000000000003FC03FC000A6 +:10FC500000000000000000000000000000000000A4 :10FC60000000000000000000000000000000000094 :10FC70000000000000000000000000000000000084 :10FC80000000000000000000000000000000000074 :10FC90000000000000000000000000000000000064 :10FCA0000000000000000000000000000000000054 -:10FCB00000000000000000000030C03FC03FC03026 -:10FCC000C000000000000000000000000000000074 +:10FCB0000000000000000000000000000000000044 +:10FCC0000000000000000000000000000000000034 :10FCD0000000000000000000000000000000000024 :10FCE0000000000000000000000000000000000014 :10FCF0000000000000000000000000000000000004 :10FD000000000000000000000000000000000000F3 -:10FD10000000000000000000000F000F000F000FA7 +:10FD100000000000000000000000000000000000E3 :10FD200000000000000000000000000000000000D3 -:10FD300000000000000000000000000000000000C3 -:10FD400000000000000000000000000000000000B3 +:10FD30003000000100005FA73000800100000003D8 +:10FD40003000400E00000000000000000000000035 :10FD500000000000000000000000000000000000A3 :10FD60000000000000000000000000000000000093 -:10FD70000000000000000000003FC00F000F003F27 -:10FD8000C0000000000000000000000000000000B3 -:10FD90000000000000000000000000000000000063 -:10FDA0000000000000000000000000000000000053 -:10FDB0000000000000000000000000000000000043 -:10FDC0000000000000000000000000000000000033 -:10FDD0000000000000000000000F003FC03FC00F07 -:10FDE0000000000000000000000000000000000013 -:10FDF0000000000000000000000000000000000003 -:10FE000000000000000000000000000000000000F2 -:10FE100000000000000000000000000000000000E2 -:10FE200000000000000000000000000000000000D2 -:10FE3000000000000000000006335D80C000FDAC43 -:10FE400002000000000000000000000000000000B0 -:10FE500000000000000000000000000000000000A2 -:10FE60000000000000000000000000000000000092 -:10FE70000000000000000000000000000000000082 -:10FE80000000000000000000000000000000000072 -:10FE90000000000000000000000000000000000062 -:10FEA0000000000000000000000000000000000052 -:10FEB0000000000000000000000000000000000042 -:10FEC0000000000000000000000000000000000032 -:10FED0000000000000000000000000000000000022 -:10FEE0000000000000000000000000000000000012 -:10FEF00000000000000000000030C00000000030E2 -:10FF0000C000000000000000000000000000000031 -:10FF100000000000000000000000000000000000E1 -:10FF200000000000000000000000000000000000D1 -:10FF300000000000000000000000000000000000C1 -:10FF400000000000000000000000000000000000B1 -:10FF5000000000000000000000000030C030C000C1 -:10FF60000000000000000000000000000000000091 -:10FF70000000000000000000000000000000000081 -:10FF80000000000000000000000000000000000071 -:10FF90000000000000000000000000000000000061 -:10FFA0000000000000000000000000000000000051 -:10FFB00000000000000000000030C030C030C03041 -:10FFC000C000000000000000000000000000000071 -:10FFD0000000000000000000000000000000000021 -:10FFE0000000000000000000000000000000000011 -:10FFF0000000000000000000000000000000000001 -:108010000000000000000000000000000000000060 -:108020000000000000000000000F00000000000F32 -:108030000000000000000000000000000000000040 -:108040000000000000000000000000000000000030 -:108050000000000000000000000000000000000020 -:108060000000000000000000000000000000000010 -:108070000000000000000000000000000000000000 -:108080000000000000000000003FC0000000003FB2 -:10809000C000000000000000000000000000000020 -:1080A00000000000000000000000000000000000D0 -:1080B00000000000000000000000000000000000C0 -:1080C00000000000000000000000000000000000B0 -:1080D00000000000000000000000000000000000A0 -:1080E0000000000000000000000F0030C030C00F92 -:1080F0000000000000000000000000000000000080 -:10810000000000000000000000000000000000006F -:10811000000000000000000000000000000000005F -:10812000000000000000000000000000000000004F -:10813000000000000000000000000000000000003F -:108140000000000000000000001374C0C000F0EC4C -:1081500040000000000000000000000000000000DF -:10816000000000000000000000000000000000000F -:1081700000000000000000000000000000000000FF -:1081800000000000000000000000000000000000EF -:1081900000000000000000000000000000000000DF -:1081A00000000000000000000000000F000F0000B1 -:1081B00000000000000000000000000000000000BF -:1081C00000000000000000000000000000000000AF -:1081D000000000000000000000000000000000009F -:1081E000000000000000000000000000000000008F -:1081F000000000000000000000000000000000007F -:1082000000000000000000000030C00F000F003030 -:10821000C00000000000000000000000000000009E -:10822000000000000000000000000000000000004E -:10823000000000000000000000000000000000003E -:10824000000000000000000000000000000000002E -:10825000000000000000000000000000000000001E -:1082600000000000000000000000003FC03FC00010 -:1082700000000000000000000000000000000000FE -:1082800000000000000000000000000000000000EE -:1082900000000000000000000000000000000000DE -:1082A00000000000000000000000000000000000CE -:1082B00000000000000000000000000000000000BE -:1082C0000000000000000000001986108030823D90 -:1082D000800000000000000000000000000000001E -:1082E000000000000000000000000000000000008E -:1082F000000000000000000000000000000000007E -:10830000000000000000000000000000000000006D -:10831000000000000000000000000000000000005D -:108320000000000000000000000F000F000F000F11 -:10833000000000000000000000000000000000003D -:10834000000000000000000000000000000000002D -:10835000000000000000000000000000000000001D -:10836000000000000000000000000000000000000D -:1083700000000000000000000000000000000000FD -:108380000000000000000000003FC00F000F003F91 -:10839000C00000000000000000000000000000001D -:1083A00000000000000000000000000000000000CD -:1083B00000000000000000000000000000000000BD -:1083C00000000000000000000000000000000000AD -:1083D000000000000000000000000000000000009D -:1083E0000000000000000000000F003FC03FC00F71 -:1083F000000000000000000000000000000000007D -:10840000000000000000000000000000000000006C -:10841000000000000000000000000000000000005C -:10842000000000000000000000000000000000004C -:10843000000000000000000000000000000000003C -:108440000000000000000000376525E48000B088CF -:10845000AB40000000000000000000000000000031 -:10846000000000000000000000000000000000000C -:1084700000000000000000000000000000000000FC -:1084800000000000000000000000000000000000EC -:1084900000000000000000000000000000000000DC -:1084A00000000000000000000000000000000000CC -:1084B00000000000000000000000000000000000BC -:1084C00000000000300020010202000030004300E4 -:1084D000000000000000000000000000000000009C -:1084E000000000000000000000000000000000008C -:1084F000000000000000000000000000000000007C -:10850000000000000000000000000000000000006B -:10851000000000000000000000000000000000005B -:10852000000000000000000000000000000000004B -:10853000000000000000000000000000000000003B -:10854000000000000000000000000000000000002B -:10855000000000000000000000000000000000001B -:10856000000000000000000000000000000000000B -:1085700000000000000000000000000000000000FB -:1085800000000000000000000000000000000000EB -:1085900000000000000000000000000000000000DB -:1085A00000000000000000000000000000000000CB -:1085B00000000000000000000000000000000000BB -:1085C00000000000000000000000000000000000AB -:1085D000000000000000000000000000000000009B -:1085E000000000000000000000000000000000008B -:1085F000000000000000000000000000000000007B -:10860000000000000000000000000000000000006A -:10861000000000000000000000000000000000005A -:10862000000000000000000000000000000000004A -:10863000000000000000000000000000000000003A -:10864000000000000000000000000000000000002A -:10865000000000000000000000000000000000001A -:10866000000000000000000000000000000000000A -:1086700000000000000000000000000000000000FA -:1086800000000000000000000000000000000000EA -:1086900000000000000000000000000000000000DA -:1086A00000000000000000000000000000000000CA -:1086B00000000000000000000000000000000000BA -:1086C00000000000000000000000000000000000AA -:1086D000000000000000000000000000000000009A -:1086E000000000000000000000000000000000008A -:1086F000000000000000000000000000000000007A -:108700000000000000000000000000000000000069 -:108710000000000000000000000000000000000059 -:108720000000000000000000000000000000000049 -:108730000000000000000000000000000000000039 -:108740000000000000000000000000000000000029 -:108750000000000000000000000000000000000019 -:108760000000000000000000000000000000000009 -:1087700000000000000000000000000000000000F9 -:1087800000000000000000000000000000000000E9 -:1087900000000000000000000000000000000000D9 -:1087A00000000000000000000000000000000000C9 -:1087B00000000000000000000000000000000000B9 -:1087C00000000000000000000000000000000000A9 -:1087D0000000000000000000000000000000000099 -:1087E0000000000000000000000000000000000089 -:1087F0000000000000000000000000000000000079 -:108800000000000000000000000000000000000068 -:108810000000000000000000000000000000000058 -:108820000000000000000000000000000000000048 -:108830000000000000000000000000000000000038 -:108840000000000000000000000000000000000028 -:108850000000000000000000000000000000000018 -:108860000000000000000000000000000000000008 -:1088700000000000000000000000000000000000F8 -:1088800000000000000000000000000000000000E8 -:1088900000000000000000000000000000000000D8 -:1088A00000000000000000000000000000000000C8 -:1088B00000000000000000000000000000000000B8 -:1088C00000000000000000000000000000000000A8 -:1088D0000000000000000000000000000000000098 -:1088E0000000000000000000000000000000000088 -:1088F0000000000000000000000000000000000078 -:108900000000000000000000000000000000000067 -:108910000000000000000000000000000000000057 -:108920000000000000000000000000000000000047 -:108930000000000000000000000000000000000037 -:108940000000000000000000000000000000000027 -:108950000000000000000000000000000000000017 -:108960000000000000000000000000000000000007 -:1089700000000000000000000000000000000000F7 -:1089800000000000000000000000000000000000E7 -:1089900000000000000000000000000000000000D7 -:1089A00000000000000000000000000000000000C7 -:1089B00000000000000000000000000000000000B7 -:1089C00000000000000000000000000000000000A7 -:1089D0000000000000000000000000000000000097 -:1089E0000000000000000000000000000000000087 -:1089F0000000000000000000000000000000000077 -:108A00000000000000000000000000000000000066 -:108A10000000000000000000000000000000000056 -:108A20000000000000000000000000000000000046 -:108A30000000000000000000000000000000000036 -:108A40000000000000000000000000000000000026 -:108A50000000000000000000000000000000000016 -:108A60000000000000000000000000000000000006 -:108A700000000000000000000000000000000000F6 -:108A800000000000000000000000000000000000E6 -:108A900000000000000000000000000000000000D6 -:108AA00000000000000000000000000000000000C6 -:108AB00000000000000000000000000000000000B6 -:108AC00000000000000000000000000000000000A6 -:108AD0000000000000000000000000000000000096 -:108AE0000000000000000000000000000000000086 -:108AF0000000000000000000000000000000000076 -:108B00000000000000000000000000000000000065 -:108B10000000000000000000000000000000000055 -:108B20000000000000000000000000000000000045 -:108B30000000000000000000000000000000000035 -:108B40000000000000000000000000000000000025 -:108B50000000000000000000000000000000000015 -:108B60000000000000000000000000000000000005 -:108B700000000000000000000000000000000000F5 -:108B800000000000000000000000000000000000E5 -:108B900000000000000000000000000000000000D5 -:108BA00000000000000000000000000000000000C5 -:108BB00000000000000000000000000000000000B5 -:108BC00000000000000000000000000000000000A5 -:108BD0000000000000000000000000000000000095 -:108BE0000000000000000000000000000000000085 -:108BF0000000000000000000000000000000000075 -:108C00000000000000000000000000000000000064 -:108C10000000000000000000000000000000000054 -:108C20000000000000000000000000000000000044 -:108C30000000000000000000000000000000000034 -:108C40000000000000000000000000000000000024 -:108C50000000000000000000000000000000000014 -:108C60000000000000000000000000000000000004 -:108C700000000000000000000000000000000000F4 -:108C800000000000000000000000000000000000E4 -:108C900000000000000000000000000000000000D4 -:108CA00000000000000000000000000000000000C4 -:108CB00000000000000000000000000000000000B4 -:108CC00000000000000000000000000000000000A4 -:108CD0000000000000000000000000000000000094 -:108CE0000000000000000000000000000000000084 -:108CF0000000000000000000000000000000000074 -:108D00000000000000000000000000000000000063 -:108D10000000000000000000000000000000000053 -:108D20000000000000000000000000000000000043 -:108D30000000000000000000000000000000000033 -:108D40000000000000000000000000000000000023 -:108D50000000000000000000000000000000000013 -:108D60000000000000000000000000000000000003 -:108D700000000000000000000000000000000000F3 -:108D800000000000000000000000000000000000E3 -:108D900000000000000000000000000000000000D3 -:108DA00000000000000000000000000000000000C3 -:108DB00000000000000000000000000000000000B3 -:108DC00000000000000000000000000000000000A3 -:108DD0000000000000000000000000000000000093 -:108DE0000000000000000000000000000000000083 -:108DF0000000000000000000000000000000000073 -:108E00000000000000000000000000000000000062 -:108E10000000000000000000000000000000000052 -:108E20000000000000000000000000000000000042 -:108E30000000000000000000000000000000000032 -:108E40000000000000000000000000000000000022 -:108E50000000000000000000000000000000000012 -:108E60000000000000000000000000000000000002 -:108E700000000000000000000000000000000000F2 -:108E800000000000000000000000000000000000E2 -:108E900000000000000000000000000000000000D2 -:108EA00000000000000000000000000000000000C2 -:108EB00000000000000000000000000000000000B2 -:108EC00000000000000000000000000000000000A2 -:108ED0000000000000000000000000000000000092 -:108EE0000000000000000000000000000000000082 -:108EF0000000000000000000000000000000000072 -:108F00000000000000000000000000000000000061 -:108F10000000000000000000000000000000000051 -:108F20000000000000000000000000000000000041 -:108F30000000000000000000000000000000000031 -:108F40000000000000000000000000000000000021 -:108F50000000000000000000000000000000000011 -:108F60000000000000000000000000000000000001 -:108F700000000000000000000000000000000000F1 -:108F800000000000000000000000000000000000E1 -:108F900000000000000000000000000000000000D1 -:108FA00000000000000000000000000000000000C1 -:108FB00000000000000000000000000000000000B1 -:108FC00000000000000000000000000000000000A1 -:108FD0000000000000000000000000000000000091 -:108FE0000000000000000000000000000000000081 -:108FF0000000000000000000000000000000000071 -:109000000000000000000000000000000000000060 -:109010000000000000000000000000000000000050 -:109020000000000000000000000000000000000040 -:109030000000000000000000000000000000000030 -:109040000000000000000000000000000000000020 -:109050000000000000000000000000000000000010 -:109060000000000000000000000000000000000000 -:1090700000000000000000000000000000000000F0 -:1090800000000000000000000000000000000000E0 -:1090900000000000000000000000000000000000D0 -:1090A00000000000000000000000000000000000C0 -:1090B00000000000000000000000000000000000B0 -:1090C00000000000000000000000000000000000A0 -:1090D00030000001000044723000800100000003F5 -:1090E0003000400C00000000000000000000000004 -:1090F0000000000000000000000000000000000070 -:10910000000000000000000000000000000000005F -:109110000000000030008001000000053000A001C8 -:1091200000000000300000010000E15A00000000D3 -:0C91300000000000000000000000000033 +:10FD700000000000000000000000000030008001D2 +:10FD8000000000053000A00100000000300000016C +:10FD900000006B9700000000000000000000000061 +:04FDA000000000005F :00000001FF // VERSION= 1.0.0.191 // DATE= 2002oct28