From 09507369af5e2f814a4cce3dd2a114f1ca2153e1 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Mon, 13 Jul 2020 16:27:13 +0200 Subject: [PATCH 01/10] add change-channel tool --- common/pids/Cargo.toml | 8 ++++++++ common/pids/src/lib.rs | 4 ++++ tools/Cargo.lock | 25 +++++++++++++++++++----- tools/Cargo.toml | 1 + tools/change-channel/Cargo.toml | 12 ++++++++++++ tools/change-channel/src/main.rs | 33 ++++++++++++++++++++++++++++++++ tools/usb-list/Cargo.toml | 1 + tools/usb-list/src/main.rs | 4 ++-- 8 files changed, 81 insertions(+), 7 deletions(-) create mode 100644 common/pids/Cargo.toml create mode 100644 common/pids/src/lib.rs create mode 100644 tools/change-channel/Cargo.toml create mode 100644 tools/change-channel/src/main.rs diff --git a/common/pids/Cargo.toml b/common/pids/Cargo.toml new file mode 100644 index 0000000..2668815 --- /dev/null +++ b/common/pids/Cargo.toml @@ -0,0 +1,8 @@ +[package] +authors = ["Jorge Aparicio "] +edition = "2018" +license = "MIT OR Apache-2.0" +name = "pids" +version = "0.0.0" + +[dependencies] diff --git a/common/pids/src/lib.rs b/common/pids/src/lib.rs new file mode 100644 index 0000000..05443fd --- /dev/null +++ b/common/pids/src/lib.rs @@ -0,0 +1,4 @@ +#![no_std] + +pub const LOOPBACK: u16 = 0x0309; +pub const PUZZLE: u16 = 0x0310; diff --git a/tools/Cargo.lock b/tools/Cargo.lock index 9d6fbe9..0ee2f71 100644 --- a/tools/Cargo.lock +++ b/tools/Cargo.lock @@ -122,9 +122,19 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +[[package]] +name = "change-channel" +version = "0.0.0" +dependencies = [ + "anyhow", + "consts", + "hidapi", + "pids", +] + [[package]] name = "consts" -version = "0.1.0" +version = "0.0.0" [[package]] name = "crc32fast" @@ -158,7 +168,7 @@ dependencies = [ [[package]] name = "dk-run" -version = "0.1.0" +version = "0.0.0" dependencies = [ "anyhow", "arrayref", @@ -174,7 +184,7 @@ dependencies = [ [[package]] name = "dongle-flash" -version = "0.1.0" +version = "0.0.0" dependencies = [ "anyhow", "ihex", @@ -516,6 +526,10 @@ dependencies = [ "wasmparser", ] +[[package]] +name = "pids" +version = "0.0.0" + [[package]] name = "pkg-config" version = "0.3.17" @@ -768,7 +782,7 @@ dependencies = [ [[package]] name = "serial-term" -version = "0.1.0" +version = "0.0.0" dependencies = [ "anyhow", "consts", @@ -932,9 +946,10 @@ checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" [[package]] name = "usb-list" -version = "0.1.0" +version = "0.0.0" dependencies = [ "consts", + "pids", "rusb", ] diff --git a/tools/Cargo.toml b/tools/Cargo.toml index 363ef4e..cdf9600 100644 --- a/tools/Cargo.toml +++ b/tools/Cargo.toml @@ -1,5 +1,6 @@ [workspace] members = [ + "change-channel", "dk-run", "dongle-flash", "serial-term", diff --git a/tools/change-channel/Cargo.toml b/tools/change-channel/Cargo.toml new file mode 100644 index 0000000..0a2cd35 --- /dev/null +++ b/tools/change-channel/Cargo.toml @@ -0,0 +1,12 @@ +[package] +authors = ["Jorge Aparicio "] +edition = "2018" +license = "MIT OR Apache-2.0" +name = "change-channel" +version = "0.0.0" + +[dependencies] +anyhow = "1.0.27" +consts = { path = "../../advanced/common/consts" } +hidapi = "1.2.2" +pids = { path = "../../common/pids" } \ No newline at end of file diff --git a/tools/change-channel/src/main.rs b/tools/change-channel/src/main.rs new file mode 100644 index 0000000..938def1 --- /dev/null +++ b/tools/change-channel/src/main.rs @@ -0,0 +1,33 @@ +use std::env; + +use anyhow::{anyhow, bail, ensure}; +use hidapi::HidApi; + +fn main() -> Result<(), anyhow::Error> { + let args = env::args() + .skip(1) // skip program name + .collect::>(); + ensure!(!args.is_empty(), "expected exactly one argument"); + + let api = HidApi::new()?; + let dev = api + .device_list() + .filter(|dev| dev.vendor_id() == consts::VID && check_pid(dev.product_id())) + .next() + .ok_or_else(|| anyhow!("device not found"))? + .open_device(&api)?; + + let chan = args[0].parse::()?; + if chan < 11 || chan > 26 { + bail!("channel is out of range (`11..=26`)") + } + const REPORT_ID: u8 = 0; + dev.write(&[REPORT_ID, chan])?; + println!("requested channel change to channel {}", chan); + + Ok(()) +} + +fn check_pid(pid: u16) -> bool { + pid == pids::LOOPBACK || pid == pids::PUZZLE +} diff --git a/tools/usb-list/Cargo.toml b/tools/usb-list/Cargo.toml index d4c33fa..6025478 100644 --- a/tools/usb-list/Cargo.toml +++ b/tools/usb-list/Cargo.toml @@ -7,4 +7,5 @@ version = "0.0.0" [dependencies] consts = { path = "../../advanced/common/consts" } +pids = { path = "../../common/pids" } rusb = "0.5.5" diff --git a/tools/usb-list/src/main.rs b/tools/usb-list/src/main.rs index 0cbe641..4068a52 100644 --- a/tools/usb-list/src/main.rs +++ b/tools/usb-list/src/main.rs @@ -6,8 +6,8 @@ fn main() -> Result<(), Box> { let suffix = match (desc.vendor_id(), desc.product_id()) { (0x1366, 0x1015) => " <- J-Link on the nRF52840 Development Kit", (0x1915, 0x521f) => " <- nRF52840 Dongle (in bootloader mode)", - (0x2020, 0x0309) => " <- nRF52840 Dongle (loopback.hex)", - (0x2020, 0x0310) => " <- nRF52840 Dongle (puzzle.hex)", + (0x2020, pids::LOOPBACK) => " <- nRF52840 Dongle (loopback.hex)", + (0x2020, pids::PUZZLE) => " <- nRF52840 Dongle (puzzle.hex)", (consts::VID, consts::PID) => " <- nRF52840 on the nRF52840 Development Kit", _ => "", }; From 0ccfbc01831197d06b9a066dec93a7b36a605b18 Mon Sep 17 00:00:00 2001 From: Mirabellensaft Date: Mon, 13 Jul 2020 16:48:13 +0200 Subject: [PATCH 02/10] make binary size its own chapter --- embedded-workshop-book/src/SUMMARY.md | 1 + embedded-workshop-book/src/binary-size.md | 39 ++++++++++++++++++ .../src/building-program.md | 40 ------------------- 3 files changed, 40 insertions(+), 40 deletions(-) create mode 100644 embedded-workshop-book/src/binary-size.md diff --git a/embedded-workshop-book/src/SUMMARY.md b/embedded-workshop-book/src/SUMMARY.md index 57d06d9..be45db6 100644 --- a/embedded-workshop-book/src/SUMMARY.md +++ b/embedded-workshop-book/src/SUMMARY.md @@ -5,6 +5,7 @@ - [Beginner Workbook](./beginner-workbook.md) - [Parts of an Embedded Program](./parts-embedded-program.md) - [Building an Embedded Program](./building-program.md) + - [Binary Size](./binary-size.md) - [Flashing the Program](./flashing-program.md) - [Viewing Logs](./viewing-logs.md) - [Running the Program from VS Code](./running-from-vsc.md) diff --git a/embedded-workshop-book/src/binary-size.md b/embedded-workshop-book/src/binary-size.md new file mode 100644 index 0000000..cda6ef1 --- /dev/null +++ b/embedded-workshop-book/src/binary-size.md @@ -0,0 +1,39 @@ +# Binary Size + +ELF files contain metadata like debug information so their size on disk is not a good indication of the amount of Flash the program will use once it's loaded on the target device's memory. + +To display the amount of Flash the program will occupy on the target device use the `cargo-size` tool (part of the `cargo-binutils` package): + +``` console +$ cargo size --bin hello -- -A +hello : +section size addr +.vector_table 256 0x0 +.text 9740 0x100 +.rodata 4568 0x270c +.data 8 0x20000000 +.bss 2124 0x20000008 +.uninit 0 0x20000854 +``` + +This gives you a breakdown of the program's static memory usage per *linker section*. + +The `.vector_table` section contains the *vector table*, a data structure required by the Cortex-M ISA. The `.text` section contains the instructions the program will execute. The `.rodata` section contains constants like strings literals. These three sections are contiguously located in Flash memory -- Flash memory spans from address `0x0000_0000` to `0x0010_0000` (1 MB). + +The next three sections, `.data`, `.bss` and `.uninit`, are located in RAM -- RAM memory spans the address range `0x2000_0000` - `0x2004_0000` (256 KB). These sections contain statically allocated variables (`static` variables). + +Another other useful tool to analyze the binary size of a program is `cargo-bloat`: + +``` console +$ cargo bloat --bin hello +File .text Size Crate Name +0.7% 13.5% 1.3KiB std ::fmt +0.5% 9.6% 928B hello hello::__cortex_m_rt_main +0.4% 8.4% 804B std core::str::slice_error_fail +0.4% 8.0% 768B std core::fmt::Formatter::pad +0.3% 6.4% 614B std core::fmt::num::::fmt +(..) +5.1% 100.0% 9.4KiB .text section size, the file size is 184.5KiB +``` + +This breakdowns the size of the `.text` section by function. This breakdown can be used to identify the largest functions in the program; those could then be modified to make them smaller. diff --git a/embedded-workshop-book/src/building-program.md b/embedded-workshop-book/src/building-program.md index 9d43de4..bcc1ae2 100644 --- a/embedded-workshop-book/src/building-program.md +++ b/embedded-workshop-book/src/building-program.md @@ -20,43 +20,3 @@ The output of the compilation process will be an ELF (Executable and Linkable Fo $ file target/thumbv7em-none-eabi/debug/hello hello: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, with debug_info, not stripped ``` - -## Binary size - -ELF files contain metadata like debug information so their size on disk is not a good indication of the amount of Flash the program will use once it's loaded on the target device's memory. - -To display the amount of Flash the program will occupy on the target device use the `cargo-size` tool (part of the `cargo-binutils` package): - -``` console -$ cargo size --bin hello -- -A -hello : -section size addr -.vector_table 256 0x0 -.text 9740 0x100 -.rodata 4568 0x270c -.data 8 0x20000000 -.bss 2124 0x20000008 -.uninit 0 0x20000854 -``` - -This gives you a breakdown of the program's static memory usage per *linker section*. - -The `.vector_table` section contains the *vector table*, a data structure required by the Cortex-M ISA. The `.text` section contains the instructions the program will execute. The `.rodata` section contains constants like strings literals. These three sections are contiguously located in Flash memory -- Flash memory spans from address `0x0000_0000` to `0x0010_0000` (1 MB). - -The next three sections, `.data`, `.bss` and `.uninit`, are located in RAM -- RAM memory spans the address range `0x2000_0000` - `0x2004_0000` (256 KB). These sections contain statically allocated variables (`static` variables). - -Another other useful tool to analyze the binary size of a program is `cargo-bloat`: - -``` console -$ cargo bloat --bin hello -File .text Size Crate Name -0.7% 13.5% 1.3KiB std ::fmt -0.5% 9.6% 928B hello hello::__cortex_m_rt_main -0.4% 8.4% 804B std core::str::slice_error_fail -0.4% 8.0% 768B std core::fmt::Formatter::pad -0.3% 6.4% 614B std core::fmt::num::::fmt -(..) -5.1% 100.0% 9.4KiB .text section size, the file size is 184.5KiB -``` - -This breakdowns the size of the `.text` section by function. This breakdown can be used to identify the largest functions in the program; those could then be modified to make them smaller. From eae0da01539d33bddf9db60fd850f55ac31897ba Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Mon, 13 Jul 2020 16:56:04 +0200 Subject: [PATCH 03/10] update hex files --- boards/dongle/loopback.hex | 1909 ++++++++++++++++++----------------- boards/dongle/loopback.rs | 78 +- boards/dongle/puzzle.hex | 1960 +++++++++++++++++++----------------- boards/dongle/puzzle.rs | 64 +- 4 files changed, 2149 insertions(+), 1862 deletions(-) mode change 100755 => 100644 boards/dongle/puzzle.hex diff --git a/boards/dongle/loopback.hex b/boards/dongle/loopback.hex index 0306aae..a1c6635 100755 --- a/boards/dongle/loopback.hex +++ b/boards/dongle/loopback.hex @@ -1,22 +1,22 @@ -:10100000F0BE03206D25000053460000534600004B -:101010005346000053460000534600000000000005 -:101020000000000000000000000000005346000027 -:1010300053460000000000005346000053460000E5 -:101040001526000025260000534600004928000010 -:10105000534600005346000053460000534600002C -:101060005346000053460000534600007928000014 -:10107000534600005346000053460000534600000C -:1010800053460000534600005346000053460000FC -:1010900053460000534600005346000053460000EC -:1010A00053460000534600005346000053460000DC -:1010B00053460000534600000000000000000000FE -:1010C00053460000534600005346000053460000BC -:1010D00053460000534600005346000055290000C7 -:1010E0005346000053460000534600000000000035 -:1010F00000000000534600000000000053460000BE -:101100000D1800000400000004000000D3180000C7 -:101110000F180000AD1800006465766963656964A6 -:101120003D0000006C120000000000006C12000086 +:10100000B0BE0320C92A00001B4C00001B4C00008E +:101010001B4C00001B4C00001B4C0000000000009B +:101020000000000000000000000000001B4C000059 +:101030001B4C0000000000001B4C00001B4C00007B +:10104000712B0000812B00001B4C0000A52D00001F +:101050001B4C00001B4C00001B4C00001B4C0000F4 +:101060001B4C00001B4C00001B4C0000D52D000049 +:101070001B4C00001B4C00001B4C00001B4C0000D4 +:101080001B4C00001B4C00001B4C00001B4C0000C4 +:101090001B4C00001B4C00001B4C00001B4C0000B4 +:1010A0001B4C00001B4C00001B4C00001B4C0000A4 +:1010B0001B4C00001B4C0000000000000000000062 +:1010C0001B4C00001B4C00001B4C00001B4C000084 +:1010D0001B4C00001B4C00001B4C0000B12E0000FC +:1010E0001B4C00001B4C00001B4C000000000000CB +:1010F000000000001B4C0000000000001B4C000022 +:101100008D180000040000000400000075190000A4 +:10111000B11800004F190000646576696365696461 +:101120003D000000D412000000000000D4120000B6 :101130000000000000000000200000000800000087 :101140000200000000000000000000000800000095 :101150000300000001000000200000000800000063 @@ -25,891 +25,988 @@ :10118000506F7765723D2B3864426D206170703D01 :101190006C6F6F706261636B2E6865780A00000087 :1011A00074110000090000007D1100002000000003 -:1011B00072656365697665642020627974650000F4 -:1011C000B011000009000000B91100000500000086 -:1011D000734572724F6B20284352433D282900000B -:1011E000D611000006000000DC1100000100000024 -:1011F000DD110000010000000000000020000000E0 -:1012000000000000020000000000000002000000DA -:1012100000000000030000000100000020000000AA -:101220000C000000020000000000000000000000B0 -:1012300006000000030000002C204C51493D000036 -:101240003812000006000000290A6469646E2774E1 -:10125000207265706C79202D2D206368616E6E653B -:101260006C2077617320627573790A0030303031F9 -:101270003032303330343035303630373038303942 -:10128000313031313132313331343135313631373A -:101290003138313932303231323232333234323520 -:1012A0003236323732383239333033313332333306 -:1012B00033343335333633373338333934303431EC -:1012C00034323433343434353436343734383439D2 -:1012D00035303531353235333534353535363537CA -:1012E00035383539363036313632363336343635B0 -:1012F0003636363736383639373037313732373396 -:10130000373437353736373737383739383038317B -:101310003832383338343835383638373838383961 -:101320003930393139323933393439353936393759 -:101330003938393930780B010032353234323332B2 -:10134000323231323031393138313731363135316D -:0C135000343133313231313236000000CC -:10135C00F0B503AF2DE9E00F8B688A460969D0E937 -:10136C000069012B02D1012903D077E0012940F05B -:10137C00D480B9F1000F53D0DAF8141006EB090E33 -:10138C00019300224B1C3146344602960D4615F94A -:10139C00010BB0F1FF3FC6B229DC754505D048788A -:1013AC008D1C00F03F0C294602E04FF0000C7146FA -:1013BC0006F01F0BDF2E07D9714508D011F8010B71 -:1013CC0000F03F080D4605E04CEA8B160FE04FF09D -:1013DC000008714648EA8C1CF02E06D371450FD0DC -:1013EC0011F8010B00F03F060CE04CEA0B362946D5 -:1013FC00013B17D0121B8E450A440C46C6D10BE09C -:10140C00002629464FF4E01000EA8B4040EA8C108D -:10141C000644B6F5881FEBD14A46DDE901361AE0E1 -:10142C00002218E0019BB6F5881F02D14A46029EA5 -:10143C0011E0029E3AB14A4505D04A4505D2B05654 -:10144C0010F1400F01DB304601E0002000220028A3 -:10145C000CBF4A460646012B0CD19146B9F1000F40 -:10146C000BD0A9F1010009F0030C032807D20020CE -:10147C00324625E0DAE9060154E000203BE0ACEB13 -:10148C0009030020B64632461478557804F0C0049F -:10149C009678D178802C05F0C00408BF0130802CE0 -:1014AC0006F0C00408BF0130802C01F0C00108BF59 -:1014BC000130802908BF013004320433E4D1764670 -:1014CC00BCF1000F17D0117801F0C001802908BFC2 -:1014DC000130BCF1010F0ED0517801F0C001802910 -:1014EC0008BF0130BCF1020F05D0917801F0C001AA -:1014FC00802908BF0130DAF80CE0A9EB0001714536 -:10150C000BD2B9F1000F15D0A9F1010109F0030CB0 -:10151C00032911D2002133462FE0DAF81C104A4679 -:10152C00DAF81800CB68314603B0BDE8000FBDE80F -:10153C00F040184700213BE0ACEB09040021B04619 -:10154C0033461D785E789A7805F0C005D878802DE2 -:10155C0006F0C00508BF0131802D02F0C00208BFA3 -:10156C000131802A00F0C00008BF0131802808BF7B -:10157C00013104330434E4D14646BCF1000F17D0DA -:10158C00187800F0C000802808BF0131BCF1010FB1 -:10159C000ED0587800F0C000802808BF0131BCF193 -:1015AC00020F05D0987800F0C000802808BF0131E8 -:1015BC009AF82000C21E18BF0246A1EB090000EBEE -:1015CC000E0100200C46DFE802F0080205020024A0 -:1015DC00084602E0480801314C08451C013D08D082 -:1015EC00DAE90602DAF80410126990470028F5D0FF -:1015FC0013E0DAE906014A46CB683146DAF804B062 -:10160C00984750B9DAE906650134013C09D02A69DA -:10161C003046594690470028F7D00120BDE80E0F00 -:10162C00F0BD0020FAE7D4D4F0B503AF2DE9000FDC -:10163C008DB0D1E9023BD1E900A6D1E9045C0321CC -:10164C008DF830102021059100216B4A04910B92EA -:10165C0003AA0A920891039006910293C3B1B34571 -:10166C0088BFB346BBF1000F2DD0DAF80410026826 -:10167C005318802B00F2B280DAF80030A1B3024488 -:10168C0013F8014B01391471026801320260F5E75D -:10169C00B44588BFB446BCF1000F14D0DAF804107E -:1016AC0002685318802B00F29980DAF80030E34678 -:1016BC00002978D0024413F8014B013914710268E7 -:1016CC0001320260F4E74FF0000846450AD90AEBF4 -:1016DC00C8005AF838104268DDE90A03DB689847FD -:1016EC0000287BD100207AE00298544601964FF0F6 -:1016FC00010800F110094FF0000A6646029800EB51 -:10170C008A0148680590087F8DF83000886804903D -:10171C00D1E9052062B1022A0CD0B04268D205EBA7 -:10172C00C002364B52689A4204D155F8300000681A -:10173C00012200E00022CDE90620C968D9F800009A -:10174C0061B102290CD0B04252D205EBC0012B4A38 -:10175C004968914204D155F830000068012100E03D -:10176C000021CDE9081059F8100CB04240D255F8C0 -:10177C00301005EBC0004268084604A9904768BBCE -:10178C00D84530D204EB0A00D0E90212DDE90A0395 -:10179C00DB6898470AF1080A09F1200908F10108E9 -:1017AC000028ABD01AE00DF110093446002605EBE9 -:1017BC00C60155F836004A684946904770B906F19B -:1017CC000108D84512D20AEBC600D0E90212DDE9B5 -:1017DC000A03DB68984700284646E8D001200DB084 -:1017EC00BDE8000FF0BDA246019E6EE726466CE7F1 -:1017FC00314600F054FCFEDE001100009D2000007C -:10180C007047E0B502AF0068802909D202687F2AD0 -:10181C0018D80244117101680131016000203DE0CB -:10182C000022B1F5006F01924FF002020CD28B092D -:10183C0062F39F118DF80510062161F35F138DF88B -:10184C00043028E0012029E00B46B1F5803F62F31B -:10185C009F130ED28DF806308B0962F39F13090B80 -:10186C000E228DF8053062F31F118DF8041003223F -:10187C0011E08DF80730F02343EA91438DF80430E2 -:10188C008B09090B62F39F1362F39F1104228DF8ED -:10189C0006308DF8051001A900F018F802B080BDD3 -:1018AC00F0B503AF4DF8048D86B00068EC4691E8B6 -:1018BC0074416346614683E87441FFF7B5FE06B098 -:1018CC005DF8048BF0BD006800F000B8D0B502AF35 -:1018DC0003689C18802C01D90120D0BD42B103446F -:1018EC0011F8014B013A1C71036801330360F5E7F1 -:1018FC000020D0BD80B56F46017839B1032902D1E3 -:10190C004178012904D100F0C5FBFEDE00214170B5 -:10191C00064901220978C9B2002908BF03220270C6 -:10192C004270B1FA81F0400980BD00BF94F10320F0 -:10193C0080B56F46C8B0DFF8D0A601210AF10500CA -:10194C00D0E84F2F002A40F04083C0E8421F002A05 -:10195C00F6D10AF104000121D0E84F2F002A40F003 -:10196C004183C0E8421F002AF6D1CC4E0DF1240B66 -:10197C00DFF8A41632204FF000080922C6F8FC004C -:10198C005846CDF82480FFF7A1FFC5480DF1F409A6 -:10199C0042AC022541683A9100683D90DFF8800620 -:1019AC00DFF878164591CDE943193AA942912AA955 -:1019BC002F95CDE92D54CDE92B50DFF868062A90F0 -:1019CC005846FFF731FEDFF86016D6F8FC0001260A -:1019DC002F96CDE92D8400F07F00CDE92B582AAD50 -:1019EC00CDE94291DFF844162A9129468DF8F4008E -:1019FC005846FFF719FE05F12A00029005F129005F -:101A0C00019005F124008DF8C0802D94CDE92BB404 -:101A1C00CB46039005F13400DFF83C96059005F1B8 -:101A2C002C00069005F11000079005F11C002A947B -:101A3C0004909DF8C000DFE810F006009E029E02A4 -:101A4C0022003B0009008DF8C4801DE09DF8D800F1 -:101A5C00DFE810F0410192029102470107005100AA -:101A6C004B009DF8E000810700F04581032840F011 -:101A7C0083829DF8E100012840F03F817CE29DF8D3 -:101A8C00C400012800F07882DAF8100060B1016817 -:101A9C005AE8042F824204D14AE80412002AF3D1F6 -:101AAC0017E0BFF32F8FEFE703208DF8C4005DE242 -:101ABC009DF8D000DFE810F0390060025F023D00B5 -:101ACC00060013009DF8DC0081071FD0032844D0CA -:101ADC0052E20221C1702E908DF8C4601AE09DF87C -:101AEC00E40080B1032871D046E29DF8DC000128A7 -:101AFC0040F08D8140E29DF8E40048B1032840F0AD -:101B0C003B82389D0DE1DDE935015DE0359823E040 -:101B1C00379D05E12B9850F8041B02F0C3FC079885 -:101B2C008DF8D08032902C983190ADF8D4803298CA -:101B3C0033900698FFF7DEFE18B103208DF8D00025 -:101B4C0089E04FF48070ADF8D100012000064ED032 -:101B5C0003988DF8DC80359036909AF80600C0B268 -:101B6C0010B102286FD019E202F030FC5FFA80FB52 -:101B7C00BBF1000F58D0BBF1010F64D0BBF1020FC9 -:101B8C0040F0FD8136984549006800680330C1F883 -:101B9C00F80044488AF80760066002F0CDFCCDE9F5 -:101BAC0042012046022101F0D9FFDFF888142046BB -:101BBC0001F0EEFF01990DF1F40B02988DF8DC6049 -:101BCC008DF8E48036913590CDE937019AF807000D -:101BDC0000F00300DFE810F0E20104001400210023 -:101BEC0005208DF8D00003208DF8E40033E02B485D -:101BFC0001688DF8D0609DF8D10080F001002CE0D8 -:101C0C008AF80780379880F800802648D0F8F803C7 -:101C1C00389900F00100087001E08AF807808DF80F -:101C2C00E4609DF8D20091E702F0CAFB02F084FC5C -:101C3C00CDE942012046022101F090FFDFF8F813B4 -:101C4C00204601F0A5FF04200DF1F40B8DF8D00017 -:101C5C0003208DF8DC000021022082B2022A01D17F -:101C6C00042083E1ADF8BC00ADF8BE102E99CA7803 -:101C7C00023A8DF8C420D2B2032A08D3CA78023AA9 -:101C8C0051FA82F212798DF8C620012200E000226E -:101C9C0000048DF8C52007D00020CEE00C140040C5 -:101CAC00600000100810004011F8030F821E51FA5A -:101CBC0082F0D2B2013152083AB10B78013A057870 -:101CCC0001F8015B00F80139F6E707988DF8D88028 -:101CDC0033902D983290DDE932013490ADF8DC80F0 -:101CEC0035910598FFF706FE08B103203BE1CDF8CE -:101CFC00E080349837908DF8E1809AF80800012143 -:101D0C00C0B2022808BF032102288DF8E0108DF81C -:101D1C00E11001D1042026E1069D8DF8E480379571 -:101D2C003895002100208DF80861012905D0625CEE -:101D3C00013106FA02F21043F7E708B1C049086016 -:101D4C009AF8060000F00300012800F00381A8BBFC -:101D5C0002208AF8060002F0EFFBCDE94201204692 -:101D6C00022101F0FBFEB749204601F011FF286863 -:101D7C00A84900680330C1F8F800AD4801464FF49B -:101D8C008040C1F80003D1F8F80140F48010C1F88C -:101D9C00F8019AF80700C0B201280FD103208AF885 -:101DAC000700A348466002F0C7FBCDE9420120467C -:101DBC00022101F0D3FE2046A349C9E002F006FB44 -:101DCC00C5B2002D00F0B880012D00F0C380022DAB -:101DDC0040F0E78096484FF000618AF80860C0F840 -:101DEC00FC12466202F0A8FBCDE94201204602211A -:101DFC0001F0B4FE9549204601F0CAFE20468DF84C -:101E0C00086102F0C5F98DF8E4608DF8DC809AF871 -:101E1C0008000122C1B2012908BF032201298DF853 -:101E2C00DC2001D106209EE06FF0030151FA80F016 -:101E3C00B0FA80F08DF8D860400908902B980168B2 -:101E4C0001394A1C01D00160FAE702268049479605 -:101E5C004D46CDE9458BCDE943680DF1E80842913B -:101E6C00DFF8F0910499CDF80091CDE93E583D9101 -:101E7C009DF8C4102B984A1E18BF012201297849DD -:101E8C003B92764A08BF11463A912146FFF7CCFBAC -:101E9C00BDF8BC00734A01284FF0020008BF0320B4 -:101EAC003B90BDF8BE10704808BF104627F82E1C9A -:101EBC006E494796CDE9456B012644910321439128 -:101ECC006B4942916B493A904091A7F12E012B98A6 -:101EDC00CDE93E912146CDF8F480A9464FF000089B -:101EEC00FFF7A2FB9DF8C50098B19DF8C60007F856 -:101EFC00190C2B9860494796CDE9458BCDE9436881 -:101F0C004291A7F11901CDF8F8903D912146FFF7C8 -:101F1C008BFB2B9802225949FFF7D8FC0898002814 -:101F2C003FF4F8AD2B9821225549FFF7CFFC2B98A5 -:101F3C0002C802F0B7FAEDE502F042FA02F0FCFA40 -:101F4C00CDE942012046022101F008FE4D49204610 -:101F5C0001F01EFE20468DF8086102F019F90320ED -:101F6C008DF8E40005208DF8D80005208DF8C00010 -:101F7C0002F071FB5DE5FEDE00F08CF8FEDE02F097 -:101F8C00DBFA42ACCDE942010021204601F0E6FD2E -:101F9C002A49204601F0FCFD584610E001F0C4FF30 -:101FAC00FEDE02F0C9FA42ACCDE942010021204626 -:101FBC0001F0D4FD3449204601F0EAFD28462146C3 -:101FCC0002F020FA02F05AFAFEDEBFF32F8F02F075 -:101FDC00B3FA09ACCDE909010021204601F0BEFDA0 -:101FEC000A490BE0BFF32F8F02F0A6FA09ACCDE93A -:101FFC0009010021204601F0B1FD0549204601F000 -:10200C00C7FD02F021FBFEDE98F103206100000009 -:10201C00560000000C140040181100009B24000016 -:10202C00341100002411000001430000A011000035 -:10203C000810004058000000570000005900000034 -:10204C0080E100E05A0000005B0000005D00000031 -:10205C00C01100005D1300001F2400006C12000072 -:10206C00D0110000D1110000D4110000F8110000B3 -:10207C00E011000071230000401200004812000023 -:10208C004A1200005C0000005E00000002F0DDBAA5 -:10209C000068FEE780B56F4600F006F8FEDE80B5FE -:1020AC006F4600F001F8FEDE80B56F4602F03EFA96 -:1020BC00FEDED4D4F0B503AF2DE9000F83B0D0F819 -:1020CC0000E09246BD680A461EF001014FF02B0B52 -:1020DC0001EB050608BF4FF4881B1C4680465FEADF -:1020EC004E7103D44FF0000A002254E0BAF1000FF5 -:1020FC000BD0AAF101010AF0030C032907D200212D -:10210C001346BCF1000F2BD142E0002140E08DE8DA -:10211C007000ACEB0A060021914613461A785D78E4 -:10212C00987802F0C002DC78802A05F0C00208BF63 -:10213C000131802A00F0C00008BF0131802804F072 -:10214C00C00008BF0131802808BF013104330436B8 -:10215C00E4D1DDE900454A46029EBCF1000F17D0E0 -:10216C00187800F0C000802808BF0131BCF1010FC5 -:10217C000ED0587800F0C000802808BF0131BCF1A7 -:10218C00020F05D0987800F0C000802808BF0131FC -:10219C0006EB0A00461AD8F80800012818D1D8F81E -:1021AC000C90B14514D95FEA0E702AD40292A9EBB7 -:1021BC00060198F8202000208946032A08BF012236 -:1021CC00DFE802F0490245024FF00009084642E000 -:1021DC0040465946534600F09EF828B10126304639 -:1021EC0003B0BDE8000FF0BDD8F81C102A46D8F893 -:1021FC001800CB68214603B0BDE8000FBDE8F040E5 -:10220C001847D8F804005946029601260190302050 -:10221C00C8F80400534698F820000090404688F80F -:10222C00206000F078F80028D9D198F82020AA4630 -:10223C000298032A08BF0122A9EB000100200D46D9 -:10224C00DFE802F03A0237020025084634E048087D -:10225C0001314FEA5109461C013E08D0D8E906026B -:10226C00D8F80410126990470028F5D0B6E7029A06 -:10227C00404659465346D8F8046000F04CF8002804 -:10228C00ACD1D8E906012A46CB68214698470028EC -:10229C00A4D109F10105D8E9069834460126013D7F -:1022AC002FD0D8F810204846214690470028F6D069 -:1022BC0095E7480801314D08461C013E08D0D8E985 -:1022CC000602D8F80410126990470028F5D085E76B -:1022DC00D8E906022146D3685246D8F804409847FC -:1022EC0000287FF47BAFD8E9069A01350126013D21 -:1022FC0009D0DAF810204846214690470028F6D03D -:10230C006DE700266BE70098002688F820000198FE -:10231C00C8F8040063E7F0B503AF4DF804BD1C46E4 -:10232C0015460646B1F5881F08D0D6E90602126993 -:10233C00904718B101205DF804BBF0BD4DB1D6E952 -:10234C0006012246CB6829465DF804BBBDE8F04087 -:10235C00184700205DF804BBF0BD80B56F46FFF751 -:10236C00A3FEFEDEF0B503AF4DF804BDA2B00688A7 -:10237C0002AD0C46802106F00F0000F157020A282E -:10238C0038BF00F13002284602F0BAF90020B0EB59 -:10239C00161F28D0310901F00F0101F157020A294B -:1023AC0038BF01F13002B0EB162F8DF886201DD00E -:1023BC00300A00F00F0000F157010A2838BF00F175 -:1023CC0030010020B0EB163F8DF8851011D0300B8A -:1023DC0000F157010A2838BF00F130018DF8841044 -:1023EC007C20042107E07F20012104E07E200221D3 -:1023FC0001E07D200321009141F234312B18C0F211 -:10240C00000120460222FFF755FE22B05DF804BB06 -:10241C00F0BD80B56F468CB00A460178642915D39F -:10242C0048F21F50C5F2EB10A1FB00036FF06300E4 -:10243C005B0903FB001041F26C21C0F20001C0B239 -:10244C0031F81000ADF82D00242003E00A2906D243 -:10245C0026200B4603F1300102AB195408E041F27F -:10246C006C20C0F2000030F81100ADF82D002520D2 -:10247C00C0F12701009102A90B1841F26C21104602 -:10248C00C0F200010022FFF715FE0CB080BDB0B504 -:10249C0002AFA2B000680DF1080E8C468123002219 -:1024AC0000F00F0101F157040A2938BF01F1300483 -:1024BC000EEB0301B2EB101F01F8024C30D00409F3 -:1024CC0004F00F0404F157050A2C38BF04F1300551 -:1024DC00B2EB102F01F8035C27D0040A04F00F04B0 -:1024EC0004F157050A2C38BF04F13005B2EB103F4C -:1024FC0001F8045C1ED0040B043B04F00F0404F13F -:10250C0057050A2C38BF04F1300501F8055C010CA5 -:10251C00B2EB104F0846C3D1581E81280ED31CE0D5 -:10252C00981E013B812809D317E0D81E023B812855 -:10253C0004D312E0181F033B81280ED2C3F1810192 -:10254C00009141F234310EEB0003C0F20001604601 -:10255C000222FFF7AFFD22B0B0BDFFF7FEFEFEDE9C -:10256C0080B56F461B481D4A016841F080710160BF -:10257C00194800214160016811400131016018487F -:10258C000121C0F8101501601648816001601648E1 -:10259C001649091A21F0030102F001F914481549F2 -:1025AC00091A21F00302144902F059F802F04FF80D -:1025BC0012484FF48A51124C124D01600161AC4229 -:1025CC0002D201CC8047FAE7FFF760FDFFF7B0F9C4 -:1025DC00FEDE00BFFCED00E0001000E0FEFFFF009F -:1025EC000800004000B0004000F00320ACF10320D4 -:1025FC00ACF103202CF203208C480000080500509D -:10260C007C4800008C48000080B56F4601F0A0FCAF -:10261C00BDE8804001F0CABCF0B503AF2DE9C00B9A -:10262C0001F08AFF6C46CDE900012046042101F03F -:10263C0095FA7949204601F0ABFA784A906B00067E -:10264C0005D000209063D2F80402400406D4106830 -:10265C00000607D04FF0040810461BE091464FF0DF -:10266C0002081AE0104650F8481F090602D04FF035 -:10267C0000080FE0104650F80C1F090602D04FF06E -:10268C00010807E0104650F86C1F090600F0C080E6 -:10269C004FF0030891460021016001F04DFF6E469A -:1026AC000446CDE900010D463046032101F056FAEF -:1026BC005B49304601F06CFA28880C22411C6FF300 -:1026CC001F30225430462980564901F061FADFE868 -:1026DC0008F003722B482100DDE9000100250A886F -:1026EC00531C6FF31F3285540B8001F025FF6C4691 -:1026FC00CDE900012046022101F030FA4E49204676 -:10270C0001F046FA4FF000600421C9F8080246486F -:10271C00857161E0DDE9000104240A88531C6FF324 -:10272C001F3284540B8070E0DDE9000102240A881A -:10273C003D4D531C6FF31F3284540B80A879000657 -:10274C0066D101F0F9FE6C46CDE90001204602216C -:10275C0001F004FA3649204601F01AFA0120A8715A -:10276C0053E0DDE90012032013885C1C6FF31F3368 -:10277C00C8542D4914808A79D2B2022A48D14FF418 -:10278C008042C9F80422D9F8002122F48012C9F839 -:10279C0000214FF00062C9F8082200228A710872E9 -:1027AC0001F0CAFE6C46CDE900012046022101F081 -:1027BC00D5F91E4926E0DDE9000101240A88531CE5 -:1027CC006FF31F32845418480B808179C9B20129E8 -:1027DC0004D002291CD10221017216E0C179C9B2C0 -:1027EC00012915D10021C9F86C1081710221C17128 -:1027FC0001F0A2FE6C46CDE900012046022101F059 -:10280C00ADF90C49204601F0C3F9BDE80C0BF0BD45 -:10281C0001F08AFBFEDE00BF480000000011004002 -:10282C00490000004E00000098F103204D0000000C -:10283C004B0000004C0000004A000000DCB504AF67 -:10284C0001F07AFE6C46CDE900012046042101F02E -:10285C0085F90449204601F09BF9034800210160E9 -:10286C00DCBD00BF4700000018310040DCB504AFF0 -:10287C002F480168C90741D1C16BC90722D000217B -:10288C002F4CC1632D490A88931C013204EA03338F -:10289C002C4C23600A8091B20C22B1FBF2F202EBB9 -:1028AC004202A1EB820103290CD8DFE801F00207F8 -:1028BC00020721494FF480724A6003E01E494FF42D -:1028CC0080720A60016CC9071FBF002101644FF4BC -:1028DC000031C0F80412416CC9071FBF00214164CC -:1028EC004FF48021C0F80412816CC9071FBF00216E -:1028FC0081644FF40021C0F80412DCBD01F01CFE11 -:10290C006C46CDE900012046002101F027F9094968 -:10291C00204601F03DF908484FF4805101604021F8 -:10292C0001604FF48071416001F08EFEFEDE00BF4D -:10293C0004B10040460000000805005000F00320E0 -:10294C0000F0FF0040B50040F0B503AF2DE9000FDB -:10295C0093B001F0F1FD0AACCDE90A010421204647 -:10296C0001F0FCF8DFF82C1E204601F011F9D84AD2 -:10297C00D2F85401000604D002F5AA704FF00709F2 -:10298C003DE0104650F8FC1F090602D04FF0080934 -:10299C0035E0D2F82401000604D002F592704FF015 -:1029AC0003092CE0D2F85801000604D002F5AC70F3 -:1029BC004FF0040923E0D2F85C01000604D002F5C4 -:1029CC00AE704FF005091AE0D2F82C01000604D0C5 -:1029DC0002F596704FF0000911E0D2F838010006AC -:1029EC0004D002F59C704FF0010908E0D2F81001F8 -:1029FC00000600F06B8402F588704FF0020900218C -:102A0C009246016001F098FD0AAE0446CDE90A0138 -:102A1C000D463046032101F0A1F8DFF87C1D30464D -:102A2C0001F0B6F828880C22411C6FF31F30225499 -:102A3C0030462980DFF8641D01F0AAF80820DFE891 -:102A4C0009F005090B070F110D13140000200CE001 -:102A5C0003200AE0012008E0022006E0062004E042 -:102A6C00042002E0052000E00720DDE90A121388AB -:102A7C00DFF82C8D5C1C6FF31F33C854148098F84E -:102A8C000200811ECAB2032A28BF0121C9B2012942 -:102A9C0011D0022914D1DFE819F009000E01AE00A3 -:102AAC00BA0047001F01A401F500AB01DFF8F40CDC -:102ABC0000214181E0E1B9F1070F08BF002802D0E5 -:102ACC0001F084F8FEDE01F097F80005F8D501203E -:102ADC0088F8020001F030FD0AACCDE90A010221B0 -:102AEC00204601F03BF8DFF8C01C204601F050F8FE -:102AFC0098F80000002800F0BF8198F80100002829 -:102B0C0000F0BA8198F80200002800F0B58104208A -:102B1C0088F802000020A8F8000013B0BDE8000FF0 -:102B2C00BDE8F04001F0B8B8DFF8780C4089002817 -:102B3C00C6D1684E01220025D6F800905FFA89F0C4 -:102B4C00C109B2EBD01F0C4618BF0224B5EBD01F45 -:102B5C0008BF0C46D6F804A0B368022CF068D9B2B2 -:102B6C0041EA00210991D6F810E07169B269F66961 -:102B7C005FFA8EFC4CEA012BD2B242EA0622089292 -:102B8C00CDF81C9040F04B818DF83050CDE90A55B2 -:102B9C005546DDE9089601F0CFFC0DACCDE90D01F1 -:102BAC000021204600F0DAFFDFF8001C204600F080 -:102BBC00EFFF0798214601F001F92846214601F064 -:102BCC00FDF8DFF8EC5B30462146A8475846214615 -:102BDC00A84748462146A8473D490120086501F011 -:102BEC00ABFC0AACCDE90A010221204600F0B6FF8D -:102BFC00DFF8701E3DE101F09FFC0AACCDE90A0143 -:102C0C000221204600F0AAFFDFF85C1E31E1DFF85C -:102C1C006C6E7089012800F0218102287FF450AF7E -:102C2C00D14601F089FC0AACCDE90A01022120460B -:102C3C0000F094FFDFF8341E204600F0A9FFB089A5 -:102C4C00002800F01D81234DD5F880014030C5F8D7 -:102C5C008001B489412CC0F0168101F06DFC0AACE6 -:102C6C00CDE90A010221204600F078FFDFF8001EB2 -:102C7C00204600F08DFF4020214601F09FF8B089DE -:102C8C0040381AE100F0B8FFC10500F1D48080058E -:102C9C0040F1E58601F050FC0AACCDE90A010221B5 -:102CAC00204600F05BFFDFF8E81D204600F070FFC7 -:102CBC0008480021CFE001F03FFC0AACCDE90A0145 -:102CCC000221204600F04AFFDFF8A81DD1E000BF2A -:102CDC000470024080740240DAF86854CAF86854F0 -:102CEC0015F0040608D0DFF8940D0078C0B2022865 -:102CFC007FF4E6AE00F0E8FFA8072AD501F01CFC33 -:102D0C000AACCDE90A010221204600F027FFDFF8CA -:102D1C00841D204600F03CFF01F00EFC0AACCDE90E -:102D2C000A010221204600F019FFDFF86C1D204635 -:102D3C0000F02EFFDFF8440D01210170DFF8400D8B -:102D4C008188C08889B280B288421EBFD348802156 -:102D5C0001606EB101F0F0FB0AACCDE90A01022171 -:102D6C00204600F0FBFEDFF8341D204600F010FF7B -:102D7C00680318D5CA48866A804601F0DDFB0AACA8 -:102D8C00CDE90A010221204600F0E8FEDFF8101D13 -:102D9C00204600F0FDFE06F07F00214601F00EF803 -:102DAC000020C8F8280028030DD501F0C5FB0AAC9B -:102DBC00CDE90A010221204600F0D0FEDFF8E41C28 -:102DCC00204600F0E5FE280756D501F0B5FB0AAC0D -:102DDC00CDE90A010221204600F0C0FEDFF8C81C34 -:102DEC0047E013B0BDE8000FBDE8F04000F06CBF49 -:102DFC0001F0A2FB0AACCDE90A010221204600F049 -:102E0C00ADFEDFF8801C204600F0C2FEDFF86C0C33 -:102E1C004178022980F02386002141702CE0C9F30F -:102E2C004112002A51D0022A4CD0012A7FF4ACAEB8 -:102E3C004FF480724AE001F07FFB0AACCDE90A0145 -:102E4C000221204600F08AFEDFF83C1C204600F0F0 -:102E5C009FFE93480121C0F8AC100DE001F06CFB13 -:102E6C000AACCDE90A010221204600F077FEDFF81A -:102E7C00E81C204600F08CFE13B0BDE8000FF0BD3E -:102E8C0000207081F8E701F057FB0DF12808CDE91F -:102E9C000A010221404600F061FEDFF8B81C4046F2 -:102EAC0000F076FE2046414600F088FF00F0EAFF75 -:102EBC0004F07F00C5F884010020B0810120C9F81E -:102ECC000000D9E74FF4007200E0002209F00F0671 -:102EDC00032E3FF659AE04F001040493069400232C -:102EEC00DFE806F00A0205084FF4803304E04FF4E3 -:102EFC00003301E04FF4403342EA0304C4F30122EF -:102F0C00260A1C0C012A059337D00396002A069E2C -:102F1C007FF43AAE5FFA8AF255460C2ACDF808B027 -:102F2C0000F25382DFE812F00D0035015102190155 -:102F3C0051020601BE00E70052016401AB01980189 -:102F4C00A100002E00F041820998000402BF0898ED -:102F5C0080B2022840F03982022C00F01182012C40 -:102F6C0000F01B82002C40F030820298000440F0EC -:102F7C002C824FF0000E04204EE106995FFA8AF085 -:102F8C00049A554622283AD0DDF82090212821D0E9 -:102F9C00202808BF002948D0059A002406F0030019 -:102FAC00ADF840400F94CDE900B940EA1220099EDB -:102FBC002A4641EA002111A8334601F0D7FA9DF8C0 -:102FCC004400022840F022828DF830400320CDE9E5 -:102FDC000A4429E20029DFD0012CDDD10998000434 -:102FEC0004BF1FFA89F00728D6D11FFA8BF0B0F571 -:102FFC00807F28BF4FF0000CCED2022027E0DDF8F6 -:10300C0020900029C8D1012C08BF5FEA0940C3D128 -:10301C00099880B203289CBF1FFA8BF0FF28BBD8FD -:10302C0062F3082CC2F3400011E0012CB4D10998D2 -:10303C00000404BF1FFA89F00728ADD11FFA8BF0EA -:10304C00B0F5807F28BF4FF0000CA5D203208DF87F -:10305C002A000F98ADF828C0CDF82B00BDF8400021 -:10306C00ADF82F000120099EDEE1002E00F0AD81AD -:10307C00022C40F0AA810998000402BF089880B283 -:10308C00022840F0A281029801F0A7FAC2B2022AEB -:10309C0000F09B8100F0010E0A20BDE004E200E08C -:1030AC0080740240002E00F09081002C40F08D8145 -:1030BC0001F0A8FAC1B20C2900F087814FF0FF3162 -:1030CC0051FA80F2062A00F2808104210220DFE806 -:1030DC0012F007005201A3007C017C016E01780103 -:1030EC000498000604BF02985FEA004040F06D812E -:1030FC00012100F0A4BC56EA040140F0668101F005 -:10310C0081FAC0B20C2800F06081032800F02981FC -:10311C00022800F02881069E0128554640F0558172 -:10312C000498000604BF02985FEA004040F04D810D -:10313C0001211EE1002E40F04881099880B27F28C1 -:10314C0000F24381002C40F040810898029908431A -:10315C00000440F03A8105205CE0002E40F03581FF -:10316C000898000440F03181099880B2002800F0E2 -:10317C00DD80022800F0BF80012808BF002C40F041 -:10318C0024810298000440F020814FF0000E0820AA -:10319C0042E0002E40F01981032C00F016810898B3 -:1031AC00000440F01281099880B2002800F0CD8014 -:1031BC00012808BF002C40F008810298000440F060 -:1031CC0004814FF0020E0020002125E0002E00F0BB -:1031DC00FC80089880B2012808BF002C40F0F580D4 -:1031EC00099802990843000440F0EF80012013E095 -:1031FC00002E40F0EA80099880B2FF2800F2E580AA -:10320C00002C40F0E280089802990843000440F03A -:10321C00DC800620DDF810E0049AC9B2120642EAFE -:10322C0001415FFA8EF241EA02210844CDF82900EF -:10323C00002002998DF828000898C1EA0040CDF8CA -:10324C002D009DF82A00BDF82810BDF82F80DDF860 -:10325C002B4041EA004632E1002E40F0B680012CB2 -:10326C0040F0B380089A120401BF0002090208431F -:10327C005FEA004040F0A98009200499CCE7002EB9 -:10328C0000F0A380029884F00103002180B2B0F515 -:10329C00807F4FF0000038BF0120099A92B21A4388 -:1032AC00089B9BB283F001031A43B2FA82F25209D3 -:1032BC00104008BF8646002800F0878000220320BB -:1032CC0004920022029200220892A5E7DFF8AC07D4 -:1032DC000078C0B201287FF4CFADDFF8A407818855 -:1032EC00C08889B280B288423FF4C6AD92464FF096 -:1032FC000609FFF787BB44EA0E00000665D16FF0A4 -:10330C00020050FA81F24FF0020E0820032AFFF45B -:10331C0083AF069ECAB2012A3FF47EAF5546022AFD -:10332C0053D14FF0020E0820022175E7022C4CD12C -:10333C00029801F052F90491C1B2022945D000F073 -:10334C0001014FF0010E082066E7022C3DD10298D6 -:10335C0001F043F9C2B2022A37D000F0010E00206E -:10336C005AE7022105E0069E5FEA0B4055462CD138 -:10337C000021072064E30298000426D100215EE3BB -:10338C00029801F02AF90491C1B202291DD000F073 -:10339C0001014FF0010E04203EE7029880B2B0F517 -:1033AC00807F12D2714604204FF0020E34E704984D -:1033BC00000604BF02985FEA004006D102200221F9 -:1033CC002AE70298000400F0398303982A460599ED -:1033DC00DDF808B000F00300CDF800B040EA112091 -:1033EC00DDF82090CDF8049046EA0021099E11A842 -:1033FC00334601F0BBF89DF84400022806D10020AA -:10340C008DF83000CDE90A0003200DE01198CDF8BD -:10341C003500BDF84800ADF839000D980A90DDF87C -:10342C003700CDF82B00022003283FF4B4AB9DF8F5 -:10343C002A10BDF82820DDF82B4042EA0146E0B303 -:10344C00DFF83856012827D06878022858D104F4C0 -:10345C007F00C6F30745B0F5003F69D106F47F4005 -:10346C00B0F5807F40F0A68101F066F80AAECDE998 -:10347C000A010221304600F071FBDFF83C163046A1 -:10348C0000F086FB2846314600F098FC2046314679 -:10349C0000F097FCFFF7A0BB687802283CD13006FF -:1034AC0052D001F049F80AACCDE90A0100212046BE -:1034BC0000F054FBDFF80816ADE2BDF82F8026F0C3 -:1034CC007F404FEA142A4FEA1049C0F30720DFE887 -:1034DC0010F00B00E2008B00CA007300F8001E0114 -:1034EC00D6004B017F00560101F026F80AACCDE95D -:1034FC000A010021204600F031FBDFF854168AE265 -:10350C0001F01AF80AACCDE90A010021204600F0BE -:10351C0025FBDFF898157EE201F00EF80AACCDE938 -:10352C000A010021204600F019FBDFF8901572E229 -:10353C0001F002F80AACCDE90A010021204600F0A6 -:10354C000DFBDFF86C1566E26FF0010050FAA6F087 -:10355C00C1B2022928BF0220C6F30744C0B200281A -:10356C0000F07781012800F0418100F0E5FF0AAD01 -:10357C00CDE90A010221284600F0F0FADFF84415E3 -:10358C00284600F005FB04F00100294600F016FC6B -:10359C00C6F30020294600F011FC00F0CDFF0AAC68 -:1035AC00CDE90A010221204600F0D8FADFF81815FF -:1035BC00204600F0EDFA12E100F0BEFF0AACCDE9B6 -:1035CC000A010021204600F0C9FADFF8501522E26A -:1035DC0000F0B2FF0AACCDE90A010021204600F050 -:1035EC00BDFADFF8F81416E200F0A6FF0AADCDE93B -:1035FC000A010221284600F0B1FADFF82815284606 -:10360C0000F0C6FA4046294600F0D8FBE0B2042888 -:10361C0000F21882DFE810F00500B501C9011602AE -:10362C00AA0100F089FF0AACCDE90A01022120466B -:10363C0000F094FADFF80015204600F0A9FA504685 -:10364C00214600F0BBFB5FEA0A6000F0E98100F064 -:10365C0073FF0AACCDE90A010021204600F07EFA86 -:10366C00DFF8D814D7E100F067FF0AACCDE90A0106 -:10367C000021204600F072FADFF8A414CBE100F030 -:10368C005BFF0AACCDE90A010021204600F066FA86 -:10369C00DFF85014BFE100F04FFF0AACCDE90A018E -:1036AC000221204600F05AFADFF89C14204600F064 -:1036BC006FFA0120214600F081FBDFF89004012114 -:1036CC00B5E100F039FF0AACCDE90A010221204630 -:1036DC0000F044FADFF83014204600F059FA48465E -:1036EC00214600F06BFBE5494878002800F01F816B -:1036FC00012800F0BF8000F01FFF0AACCDE90A01E1 -:10370C000021204600F02AFADFF8001483E100F0D3 -:10371C0013FF0AACCDE90A010221204600F01EFA83 -:10372C00DFF8C413204600F033FA4846214600F077 -:10373C0045FBD2484078002800F00D81012800F0AC -:10374C00B180CE48B9F1000F00F03A81C0784845FD -:10375C0045D000F0F1FE0AACCDE90A01002120466B -:10376C0000F0FCF9E14956E100F0E6FE0AACCDE9C7 -:10377C000A010021204600F0F1F9D9494BE100F093 -:10378C00DBFE0AACCDE90A010021204600F0E6F987 -:10379C00D14940E10000000001000000450000009C -:1037AC0022F2032098F10320030000000700000020 -:1037BC00CF3D000000F0C0FE0AAECDE90A010221A7 -:1037CC00304600F0CBF9BB49304600F0E1F9284611 -:1037DC00314600F0F3FA2046314600F0EFFA13B010 -:1037EC00BDE8000FBDE8F04000F046BB00F0A4FEC1 -:1037FC000AACCDE90A010221204600F0AFF9B34929 -:10380C00204600F0C5F9688900287FF459A90126E3 -:10381C006E8100F091FE0AACCDE90A01022120462E -:10382C0000F09CF9AA49204600F0B2F9974908F13A -:10383C000300C1F880020720C1F884028E480146BB -:10384C00D0F8FC0140F00200C1F8FC018E64FFF7D7 -:10385C0013BB00F071FE0AACCDE90A01022120462F -:10386C0000F07CF99B49204600F092F908F1030026 -:10387C000721DCE0B9F1000F00F0B58088784845ED -:10388C003FF4FAAA012081F80290487000F054FE2F -:10389C000AACCDE90A010221204600F05FF99C49EF -:1038AC00FFF7E7BAB9F1000F99D0B9F1010F40F069 -:1038BC00A88072480546867800F03EFE0AACCDE939 -:1038CC000A0102214FF00209204600F047F989490C -:1038DC00204600F05DF96D494FF001080F2085F886 -:1038EC000380AE7085F801900E46C1F89000092057 -:1038FC00C1F894000020C86200F01EFE0AACCDE9AD -:10390C000A010221204600F029F97B49204600F0EB -:10391C003FF90A2021460A2500F050FA7748C6F8EC -:10392C0094015548C6F89851C0F8048057E7B9F18E -:10393C00000F3FF4A1AA012081F80290487000F01A -:10394C00FBFD0AACCDE90A010221204600F006F984 -:10395C007149FFF78EBA00F0EFFD0AACCDE90A0110 -:10396C000021204600F0FAF8664954E000F0E4FD2E -:10397C000AACCDE90A010021204600F0EFF86A49B3 -:10398C0049E000F0D9FD0AACCDE90A01022120463C -:10399C0000F0E4F86649204600F0FAF8B8F1120F8E -:1039AC0028BF4FF01208634840E000F0C5FD0AAC98 -:1039BC00CDE90A010121204600F0D0F85B492AE04C -:1039CC000646857800F0B8FD0AACCDE90A01022163 -:1039DC00204600F0C3F84649204600F0D9F80120F3 -:1039EC00B5707070FBE60020487000F0A5FD0AACC5 -:1039FC00CDE90A010221204600F0B0F84549FFF755 -:103A0C0038BA00F099FD0AACCDE90A010021204634 -:103A1C0000F0A4F83A49204600F0BAF8FFF7DCB8F9 -:103A2C004748B8F14B0F28BF4FF04B08414613B035 -:103A3C00BDE8000FBDE8F04000F0C6B9032102203C -:103A4C00FFF7EABB00F078FD0AACCDE90A010021D2 -:103A5C00204600F083F83B49204600F099F800F02E -:103A6C0097F9FEDE2E000000390000002F00000048 -:103A7C00300000003A0000000470024098F103206E -:103A8C00ACF103200600000004000000807402402A -:103A9C000500000033000000340000003500000079 -:103AAC003600000037000000380000002A0000003B -:103ABC002B0000002D0000002C0000002300000053 -:103ACC002900000024000000250000002700000051 -:103ADC002800000026000000080000002200000062 -:103AEC00210000002000000015000000180000005C -:103AFC001B000000190000001A00000014F2032043 -:103B0C00170000001600000010000000110000005B -:103B1C001400000013000000120000001F00000041 -:103B2C001E000000090000000F0000000C00000047 -:103B3C000B000000B4F103200D0000000E0000008B -:103B4C00C6F103200A0000001D00000020F2032033 -:103B5C001C0000003100000032000000F0B503AF83 -:103B6C004DF804BD094A1268D0E900342588920941 -:103B7C006E1C6FF31F3559552680D0E9003118465D -:103B8C005DF804BBBDE8F04000F09AB9041000E009 -:103B9C00F0B503AF4DF804BD8AB27F2A0AD3D0E941 -:103BAC00003441F0800125886E1C6FF31F35595588 -:103BBC00D1092680D0E9002003885C1C6FF31F33E9 -:103BCC00D15404805DF804BBF0BDD4D4E0B502AF91 -:103BDC0000F092F900F0B0FC6C46CDE900012046F3 -:103BEC000021FFF7BBFF03492046FFF7D1FF00F090 -:103BFC002BFDFEDE43000000F0B503AF2DE9F00B0A -:103C0C002248D0F80080C0F8008000F095FC01AC90 -:103C1C000546CDE901010E4620460321FFF79EFF24 -:103C2C001B492046FFF7B4FF30880A22411C6FF372 -:103C3C001F302A54204631801649FFF7A9FF029EF7 -:103C4C0040F6FF7127F81A8C358828466FF31F3021 -:103C5C0088420DD1019CA7F11A09012204F6FF71CB -:103C6C00484600F07BFC09F101002146012204E0EA -:103C7C00019902220144A7F11A0000F06FFCA81C64 -:103C8C003080404604B0BDE8000BF0BD007402402B -:103C9C004200000062000000DCB504AF08480121BE -:103CAC00016000F049FC6C46CDE900012046022180 -:103CBC00FFF754FF03492046FFF76AFFDCBD00BF46 -:103CCC000475024041000000F0B503AF2DE9C007B8 -:103CDC00DFF8A4A0BAF80450BAF80600401B01049F -:103CEC001CD084B23F2C28BF3F2454FA85F081B2FB -:103CFC00E8B2B1F5807F13D9DAF80090C0F5807680 -:103D0C00DFF8788009EB00013246404600F0A5FC54 -:103D1C00A11B08EB06008AB2494606E0012625E005 -:103D2C00DAF8001022460144144800F096FC2819D9 -:103D3C00AAF8040020064FF0010617D000F0FCFB97 -:103D4C006D46CDE9000128460221FFF707FF0C491B -:103D5C002846FFF71DFF2046294600F02FF809489A -:103D6C000649016044600848066002260748067050 -:103D7C00BDE80C07F0BD00BFACF1032000C0032070 -:103D8C0040000000287602400C70024098F103209D -:103D9C00E0B502AF00F0B0F800F0CEFB6C46CDE918 -:103DAC00000120460021FFF7D9FE03492046FFF70A -:103DBC00EFFE00F049FCFEDE3D000000C0B200F05A -:103DCC0069B880B200F066B8F0B503AF4DF8048D59 -:103DDC0082B0234E8046708990BB234C88B20D462E -:103DEC0040280AD9206820F004002060A5F140008A -:103DFC00B08102204025708104E000F043F80220DD -:103E0C00C6F80A0000F098FB6E46CDE9000130467A -:103E1C000221FFF7A3FE15493046FFF7B9FE2846ED -:103E2C003146FFF7CBFF124905F07F00486011487F -:103E3C00C1F800800121215002B05DF8048BF0BD67 -:103E4C0000F07AFB6C46CDE9000120460021FFF71B -:103E5C0085FE04492046FFF79BFE00F0F5FBFEDED5 -:103E6C0098F103203B000000007202403C0000006F -:103E7C000076024004FEFFFF0148012101607047FB -:103E8C00507002400248016841F004010160704723 -:103E9C0000720240F0B503AF4DF804BD0246D1E903 -:103EAC0000031C880626651C6FF31F3406551D8005 -:103EBC00D1E900015DF804BBBDE8F04000F000B8AA -:103ECC00F0B503AF4DF804BD0C880023661C42F01E -:103EDC0080056FF31F34B3EBD21F08BF02F07F05D0 -:103EEC00B3EBD21F05554FEAD21534462A460E8045 -:103EFC00ECD15DF804BBF0BDDCB504AF0848002183 -:103F0C00016000F019FB6C46CDE90001204602214E -:103F1C00FFF724FE03492046FFF73AFEDCBD00BF45 -:103F2C00047502403F000000E0B502AF00F004FB56 -:103F3C006C46CDE9000120460021FFF70FFE034936 -:103F4C002046FFF725FE00F07FFBFEDE440000005C -:103F5C00DCB504AF00F0F0FA6C46CDE90001204668 -:103F6C000421FFF7FBFD0D492046FFF711FE0C481D -:103F7C000168090611D00021016000F0DDFA6C46E1 -:103F8C00CDE9000120460221FFF7E8FD0549204656 -:103F9C00FFF7FEFD044801210170DCBD5300000059 -:103FAC00000100405400000094F10320F0B503AF71 -:103FBC002DE9C00B00F0C0FA6C46CDE9000120469B -:103FCC000421FFF7CBFD5D492046FFF7E1FD5C487E -:103FDC004FF000080168090602D04FF000090FE00D -:103FEC00014651F8042F120603D04FF00109084680 -:103FFC0006E050F8081F090600F095804FF0020902 -:10400C00C0F8008000F098FA6E460446CDE9000135 -:10401C000D4630460321FFF7A1FD4A493046FFF714 -:10402C00B7FD28880C22411C6FF31F3022543046F8 -:10403C0029804549FFF7ACFDDDE900010A88531CD6 -:10404C006FF31F3200F802900B80404DA878811E50 -:10405C00CAB2032A28BF0121C9B271B1012967D1A3 -:10406C002A78002A114618BF01217ABB98F0010268 -:10407C002CD101212970002144E0B8F1000F4FD15F -:10408C00B9F1000F57D1334849F275310322016061 -:10409C00C0F81421016001212F48016000F04CFA96 -:1040AC006C46CDE9000120460221FFF757FD2B4954 -:1040BC002046FFF76DFD2A4800210078A5F8011075 -:1040CC00C0B2002818BF0120287029E0687890BB86 -:1040DC0018EA010024D1B9F1020F2CD1012068702B -:1040EC0000F02AFA6C46CDE9000120460221FFF7C8 -:1040FC0035FD17492046FFF74BFD2978A878B1FA12 -:10410C0081F1490960B159B9687848B10420A870A7 -:10411C0000202880BDE80C0BBDE8F040FFF7BCBDCB -:10412C00BDE80C0BF0BD4FF003094FF001088CE714 -:10413C00FFF72EFEFEDEFFF749FDFEDE4F0000000E -:10414C001C010040020000005200000022F203207B -:10415C005100000000EC06400075024050000000C9 -:10416C0094F1032007484FF4803101604FF48051E3 -:10417C00C0F83C124FF4807103480160034800F012 -:10418C0007B800BF04B300400C0500503613000004 -:10419C00D0B502AF002201230021012A05D0845C96 -:1041AC00013203FA04F42143F7E709B10148016035 -:1041BC00D0BD00BF00E100E0B0B502AF154D00244A -:1041CC00B4F5C67F04D0281900F036F88434F7E72C -:1041DC0011480F2101234160082101600F498160C2 -:1041EC008121C1600E490A6863F302020A6040F241 -:1041FC0002214FF4822281620A49C16200210163CB -:10420C000949425009490A4A42500A48BDE8B0409F -:10421C00FFF7BEBF40C103200C150040080000068C -:10422C006C16004021100100F4FCFFFFF8FDFFFFAD -:10423C00094004083713000009490A69026051E873 -:10424C00043F934207D141E80402002A1A4608BFF2 -:10425C0000F0FFB9F2E7BFF32F8F1A46EEE700BF6D -:10426C0098F10320BCB504AF4FF0804001250560E8 -:10427C0000F062F96C46CDE9000120460221FFF7FF -:10428C006DFC05492046FFF783FC04480560044893 -:10429C00BDE8BC40FFF77CBF5500000004030040A4 -:1042AC0038130000B0B502AF0C4D0024B4F5C67F36 -:1042BC0004D02819FFF7C0FF8434F7E70848012120 -:1042CC0001604FF4607101600648074901600748BE -:1042DC00FFF75EFF064880210160B0BD04F00320AB -:1042EC0004030040047302402194C0013813000001 -:1042FC0004E100E0007800F07F02052A1ED00A28B5 -:10430C001ED00F281ED014281ED019281ED01E28EF -:10431C001ED023281ED028281ED02D281ED032288F -:10432C001ED037281ED03C281ED041281ED046282F -:10433C001ED04B280CBF134A114A1AE01F4A18E032 -:10434C001D4A16E01B4A14E0194A12E0174A10E005 -:10435C00154A0EE0134A0CE0114A0AE00F4A08E035 -:10436C000D4A06E00B4A04E0094A02E0074A00E065 -:10437C00054AD1E90601CB6811460222184700BF55 -:10438C0057130000391300003B1300003D130000CD -:10439C003F130000411300004313000045130000BD -:1043AC0047130000491300004B1300004D1300008D -:1043BC004F1300005113000053130000551300005D -:1043CC00014801210160704704100040BCB504AFE6 -:1043DC000A48046800F0B0F86D46CDE900012846A3 -:1043EC000321FFF7BBFB06492846FFF7D1FB20460C -:1043FC00294600F007F8204602B0B0BD5015004029 -:10440C0060000000F0B503AF4DF804BD0C46054646 -:10441C00D1E900010C260A88531C6FF31F32865415 -:10442C0020460B801449FFF7B3FB05F00F01082061 -:10443C00DFE801F0070D0F091521212121110B13C4 -:10444C00160000200CE003200AE0062008E0012002 -:10445C0006E0022004E0052002E0072000E0042032 -:10446C00D4E9001213885C1C6FF31F33C8541480FA -:10447C005DF804BBF0BDFEDE5F000000E0B502AFEE -:10448C0000F05AF86C46CDE9000120460021FFF7F8 -:10449C0065FB03492046FFF77BFB00F0D5F8FEDEF9 -:1044AC003E000000E1B3F0B503AF2DE90007DFF8E3 -:1044BC00749082460C46B9F80650B9F80400401BBB -:1044CC0000F58070010424D080B2A04238BF0446AD -:1044DC0054FA85F0E9B280B2B0F5807F0FD9D9F8E3 -:1044EC000080C1F5807608EB01005146324600F0A1 -:1044FC00B4F8A01B0AEB060182B2404604E0D9F8DE -:10450C00000022460844514600F0A7F82819A9F8E3 -:10451C000600054880210160BDE80007BDE8F040B9 -:10452C00704700BFACF1032004E200E080B56F4699 -:10453C0000F08AF8FEDED4D4064905480968C9B2F1 -:10454C000029054918BF00F5805018BF023170478B -:10455C0000D0032004ED00E090F103202AB110F804 -:10456C00013B013A01F8013BF8E77047F0B503AFA6 -:10457C004DF804BDD6B201F00104C1F30745D7E9EB -:10458C000212062E11D00A2E20D1012D08BF002CAC -:10459C001CD112041AD18AB2FF2A17D8017100213A -:1045AC0083700170190A417014E0012D0ED16CB1A9 -:1045BC008CB2FF2C0AD803F47F44B4F5085F05D104 -:1045CC000171012142804370017003E00021818060 -:1045DC00022101605DF804BBF0BD024680B2FF28E9 -:1045EC0001D9002107E0C2F30310002128B10828EB -:1045FC0001D1012002E002207047002002F00F01DF -:10460C007047D4D44FF0FF3151FA80F10C200A29B5 -:10461C0018D8DFE801F006080A0C0E101214171750 -:10462C0016000120704702207047032070470420B9 -:10463C0070470520704706207047072070470820F8 -:10464C0070470B207047FFBEAABE62B6704772B6A9 -:10465C00704740BF704720BF704700F0A3B8042AD2 -:10466C0038BFFFF7FABFB0B502AFA2F1040C0123BB -:10467C0003EB9C0313F003030ED08E4604465EF846 -:10468C00045B012B44F8045B1FD163462046714642 -:10469C00BCF10C0F04D212E01346BCF10C0F0ED37C -:1046AC000D68103B0560032B4D6845608D68856077 -:1046BC00CD6801F11001C56000F11000F0D802F0D6 -:1046CC000302BDE8B040FFF7C8BF4D68022B456040 -:1046DC0007D1A2F1080308310830BCF10C0FDFD26E -:1046EC00EDE78B680C318360A2F10C030C30BCF14C -:1046FC000C0FD5D2E3E70B4611461A4600F08FB8E3 -:10470C001346D2B2042938BFFFF7F5BFD0B502AFBC -:10471C00A1F1040E42EA0363012443EA024304EBD1 -:10472C009E0443EA022314F0030410D08446012CA7 -:10473C004CF8043B10D174466046BEF10C0F1ED2EF -:10474C0001F00301BDE8D0406046FFF7D4BF0C4632 -:10475C00BEF10C0F13D2F3E7022C436007D10830E3 -:10476C00A1F108048446BEF10C0F08D2E8E783607F -:10477C000C30A1F10C048446BEF10C0FE0D3C0E95F -:10478C000033103CC0E902331030032CF7D88446B8 -:10479C0001F00301BDE8D0406046FFF7ACBF00223A -:1047AC00FFF7AEBFF0B503AF4DF8048DA2B3531EA7 -:1047BC0002F0030C032B14D20022BCF1000F2BD0FF -:1047CC008B5CBCF1010F835426D0531CBCF1020F3F -:1047DC00CE5CC65420D00232895C81545DF8048BC7 -:1047EC00F0BDACEB020E01F10108441C6FF00302AA -:1047FC0008EB0206A5180432F378EB7033792B71B1 -:10480C0073796B71B379AB710EEB02030433EFD197 -:10481C000432BCF1000FD3D15DF8048BF0BDD0B5E0 -:10482C0002AF12B3531E02F0030C032B01D2002271 -:10483C000FE0ACEB020E421C6FF00303D4180433F0 -:10484C00A17161712171E1700EEB03040434F5D197 -:10485C001A1DBCF1000F1ABF8154BCF1010FD0BD61 -:10486C000244BCF1020F517000D1D0BD9170D0BD8B -:10487C00B142000071420000C541000071410000CE -:10488C0040C003200000000012010002EF020140B2 -:10489C002020090300010000000109024B00020165 -:1048AC000080FA080B00020202010009040000015A -:1048BC000202010005240010010524010301042457 -:1048CC0002020524060001070581034000200904AB -:1048DC000100020A00000007050202400000070563 -:1048EC008202400000000000A12000000000020035 -:1048FC0003000000010000000280250000000008F9 -:040000030000256D67 +:1011B000696E76616C696420484944207061636B94 +:1011C00065740A726571756573746564206368611E +:1011D0006E6E656C206973206F7574206F66207267 +:1011E000616E6765202831312D3236290A6E6F779E +:1011F000206C697374656E696E67206F6E2063681A +:10120000616E6E656C200A00ED110000190000008F +:10121000061200000100000072656365697665646E +:101220002020627974650000181200000900000097 +:101230002112000005000000734572724F6B2028D8 +:101240004352433D282900003E12000006000000E2 +:1012500044120000010000004512000001000000DF +:10126000000000002000000000000000020000005C +:101270000000000002000000000000000300000069 +:1012800001000000200000000C000000020000002F +:101290000000000000000000060000000300000045 +:1012A0002C204C51493D0000A01200000600000017 +:1012B000290A6469646E2774207265706C79202D28 +:1012C0002D206368616E6E656C2077617320627596 +:1012D00073790A00303030313032303330343035C9 +:1012E00030363037303830393130313131323133D6 +:1012F00031343135313631373138313932303231BC +:1013000032323233323432353236323732383239A1 +:101310003330333133323333333433353336333799 +:10132000333833393430343134323433343434357F +:101330003436343734383439353035313532353365 +:10134000353435353536353735383539363036314B +:101350003632363336343635363636373638363931 +:101360003730373137323733373437353736373729 +:10137000373837393830383138323833383438350F +:1013800038363837383838393930393139323933F5 +:1013900039343935393639373938393930780B01FC +:1013A0000032353234323332323231323031393147 +:1013B0003831373136313531343133313231313200 +:0413C00036000000F3 +:1013C400F0B503AF2DE9E00F8B688A460969D0E9CF +:1013D4000069012B02D1012903D077E0012940F0F3 +:1013E400D480B9F1000F53D0DAF8141006EB090ECB +:1013F400019300224B1C3146344602960D4615F9E2 +:10140400010BB0F1FF3FC6B229DC754505D0487821 +:101414008D1C00F03F0C294602E04FF0000C714691 +:1014240006F01F0BDF2E07D9714508D011F8010B08 +:1014340000F03F080D4605E04CEA8B160FE04FF034 +:101444000008714648EA8C1CF02E06D371450FD073 +:1014540011F8010B00F03F060CE04CEA0B3629466C +:10146400013B17D0121B8E450A440C46C6D10BE033 +:10147400002629464FF4E01000EA8B4040EA8C1025 +:101484000644B6F5881FEBD14A46DDE901361AE079 +:10149400002218E0019BB6F5881F02D14A46029E3D +:1014A40011E0029E3AB14A4505D04A4505D2B056EC +:1014B40010F1400F01DB304601E00020002200283B +:1014C4000CBF4A460646012B0CD19146B9F1000FD8 +:1014D4000BD0A9F1010009F0030C032807D2002066 +:1014E400324625E0DAE9060154E000203BE0ACEBAB +:1014F40009030020B64632461478557804F0C00437 +:101504009678D178802C05F0C00408BF0130802C77 +:1015140006F0C00408BF0130802C01F0C00108BFF0 +:101524000130802908BF013004320433E4D1764607 +:10153400BCF1000F17D0117801F0C001802908BF59 +:101544000130BCF1010F0ED0517801F0C0018029A7 +:1015540008BF0130BCF1020F05D0917801F0C00141 +:10156400802908BF0130DAF80CE0A9EB00017145CD +:101574000BD2B9F1000F15D0A9F1010109F0030C48 +:10158400032911D2002133462FE0DAF81C104A4611 +:10159400DAF81800CB68314603B0BDE8000FBDE8A7 +:1015A400F040184700213BE0ACEB09040021B046B1 +:1015B40033461D785E789A7805F0C005D878802D7A +:1015C40006F0C00508BF0131802D02F0C00208BF3B +:1015D4000131802A00F0C00008BF0131802808BF13 +:1015E400013104330434E4D14646BCF1000F17D072 +:1015F400187800F0C000802808BF0131BCF1010F49 +:101604000ED0587800F0C000802808BF0131BCF12A +:10161400020F05D0987800F0C000802808BF01317F +:101624009AF82000C21E18BF0246A1EB090000EB85 +:101634000E0100200C46DFE802F008020502002437 +:10164400084602E0480801314C08451C013D08D019 +:10165400DAE90602DAF80410126990470028F5D096 +:1016640013E0DAE906014A46CB683146DAF804B0F9 +:10167400984750B9DAE906650134013C09D02A6972 +:101684003046594690470028F7D00120BDE80E0F98 +:10169400F0BD0020FAE7D4D4F0B503AF2DE9000F74 +:1016A4008DB0D1E9023BD1E900A6D1E9045C032164 +:1016B4008DF830102021059100216B4A04910B9282 +:1016C40003AA0A920891039006910293C3B1B34509 +:1016D40088BFB346BBF1000F2DD0DAF804100268BE +:1016E4005318802B00F2B280DAF80030A1B3024420 +:1016F40013F8014B01391471026801320260F5E7F5 +:10170400B44588BFB446BCF1000F14D0DAF8041015 +:1017140002685318802B00F29980DAF80030E3460F +:10172400002978D0024413F8014B0139147102687E +:1017340001320260F4E74FF0000846450AD90AEB8B +:10174400C8005AF838104268DDE90A03DB68984794 +:1017540000287BD100207AE00298544601964FF08D +:10176400010800F110094FF0000A6646029800EBE8 +:101774008A0148680590087F8DF8300088680490D5 +:10178400D1E9052062B1022A0CD0B04268D205EB3F +:10179400C002364B52689A4204D155F830000068B2 +:1017A400012200E00022CDE90620C968D9F8000032 +:1017B40061B102290CD0B04252D205EBC0012B4AD0 +:1017C4004968914204D155F830000068012100E0D5 +:1017D4000021CDE9081059F8100CB04240D255F858 +:1017E400301005EBC0004268084604A9904768BB66 +:1017F400D84530D204EB0A00D0E90212DDE90A032D +:10180400DB6898470AF1080A09F1200908F1010880 +:101814000028ABD01AE00DF110093446002605EB80 +:10182400C60155F836004A684946904770B906F132 +:101834000108D84512D20AEBC600D0E90212DDE94C +:101844000A03DB68984700284646E8D001200DB01B +:10185400BDE8000FF0BDA246019E6EE726466CE788 +:10186400314600F0CEFEFEDE00110000F925000036 +:101874000068002818BF02F0E5BF70470068002820 +:1018840018BF00F009B870477047006818B100210C +:10189400017003F0C6B970470021017003F0C1B9AB +:1018A4000068002818BF02F0CDBF7047E0B502AF52 +:1018B4000068802909D202687F2A18D8024411716D +:1018C40001680131016000203DE00022B1F5006FA4 +:1018D40001924FF002020CD28B0962F39F118DF832 +:1018E4000510062161F35F138DF8043028E0012010 +:1018F40029E00B46B1F5803F62F39F130ED28DF8B9 +:1019040006308B0962F39F13090B0E228DF8053004 +:1019140062F31F118DF80410032211E08DF80730D3 +:10192400F02343EA91438DF804308B09090B62F3E9 +:101934009F1362F39F1104228DF806308DF8051071 +:1019440001A900F018F802B080BDF0B503AF4DF85E +:10195400048D86B00068EC4691E8744163466146A4 +:1019640083E87441FFF798FE06B05DF8048BF0BD80 +:10197400006800F000B8D0B502AF03689C18802C52 +:1019840001D90120D0BD42B1034411F8014B013A01 +:101994001C71036801330360F5E70020D0BD0168C2 +:1019A40001394A1C08BF70470160F9E7F0B503AF7D +:1019B4002DE9E00F0446007CDFE810F00700090180 +:1019C4000B010D0015004A0043000020A082D4E959 +:1019D4000001C4E9020104F1140000F01FF978B118 +:1019E40002200321EFE0204610F8181F061F8A0783 +:1019F4000ED0032940F0EB80717901290AD1E6E089 +:101A0400A068264646F8140F0021304640F8041F0B +:101A14000021717179490122497AC9B2022908BFAA +:101A2400032202297271027002D102200421CAE049 +:101A34000020A04604F10C0BC6F800B008F81C0FF7 +:101A440014E0264616F8140F012840F08C80BEE0FE +:101A5400A04618F81C0FA8F1080628B1032840F086 +:101A6400B680D4F818B003E0D6F800B0C4F818B0C3 +:101A740001AB0121002200208DF80410012A05D0B9 +:101A84009D5C013201FA05F52843F7E708B15C498A +:101A94000860DFF868A19AF8070000F00300012845 +:101AA40000F08680B0BB02208AF8070003F002F839 +:101AB4000DF10409CDE901010221484602F00EFBB3 +:101AC4005049484602F024FBDBF800000068C11CC2 +:101AD4004D48C0F8F8144FF48041C0F8FC12D0F817 +:101AE400F41141F48011C0F8F4119AF80810C9B245 +:101AF40001290FD103218AF808100121016002F0A5 +:101B0400D9FF01ADCDE901010221284602F0E6FA30 +:101B14003E494AE002F004FFC5B2D5B3012D47D0D7 +:101B2400022D57D138484FF001094FF000618AF86F +:101B34000990C0F8F812C0F8209002F0BBFF01AD84 +:101B4400CDE901010221284602F0C8FA30492846AD +:101B540002F0DEFA01A88DF8049002F0C1FD002025 +:101B640088F80090307025480122407AC1B20129DA +:101B740008BF03220129327002D10220062122E08B +:101B84006FF0030151FA80F0B0FA80F001214009AE +:101B940019E002F0BFFE02F08DFF01ADCDE90101B5 +:101BA4000221284602F09AFA1A49284602F0B0FAAD +:101BB40001208DF8040001A802F092FD0320052104 +:101BC40088F8000002202174BDE80E0FF0BD00F07B +:101BD40013FDFEDE02F06EFF01ACCDE90101002130 +:101BE400204602F07BFA0C49204602F091FA28467E +:101BF400214602F0B1FE02F0EBFEFEDE9AF1032074 +:101C040080E100E05B0000000C1000405C0000007C +:101C14005E0000005D0000005F00000080B56F46BC +:101C2400017839B1032902D14178012904D100F0A6 +:101C3400E3FCFEDE00214170064901220978C9B2A5 +:101C4400002908BF032202704270B1FA81F04009F2 +:101C540080BD00BF98F10320DCB504AF04460078D2 +:101C6400012810D002F00CFF009020B10221019055 +:101C7400C170012104E06846FFF712FE0020032131 +:101C8400217002B0D0BD00F0B7FCFEDE80B56F4617 +:101C9400ADF50A7DDFF8D8A801210AF10500D0E8E6 +:101CA4004F2F002A40F03784C0E8421F002AF6D1A3 +:101CB400002001218DF843000AF10600D0E84F2FDF +:101CC400002A40F03584C0E8421F002AF6D10AF108 +:101CD40004000121D0E84F2F002A40F03684C0E8E8 +:101CE400421F002AF6D1D04E32200DF14409DFF80C +:101CF40094180922C6F8FC00002011904846FFF70A +:101D04003AFECA480DF5047864AC02250DF5007B53 +:101D14004168809100688490DFF87008DFF86818E3 +:101D24006791CDE9651833A93895CDE93654CDE9E5 +:101D34003450DFF85C0833904846CDF890B1FFF793 +:101D4400ABFCDFF85018D6F8FC000026CDE964811E +:101D54000121389100F07F00CDE93664CDE9345695 +:101D640045460DF1CC08DFF8301833918DF8100298 +:101D740048464146FFF790FC0DF1CB010DF14300BD +:101D84008DF86C6135908DF8B661CDE96651CDE979 +:101D9400640904F13D00049004F124000B9004F163 +:101DA40018000A9004F13A00019004F139000090FF +:101DB40004F13400079004F13C000C9004F110008D +:101DC400089004F12C000D9008F11000039008F124 +:101DD4009800029008F190000F9008F10C00069012 +:101DE40008F1A4000E9004F127004FF001090990B6 +:101DF40008F1A1008DF8CB60CDE9335105909DF831 +:101E04006C01DFE810F00B006D036D033600440035 +:101E140028001B0039011D0011001F008DF870619E +:101E240036968DF86E6129E05C9C2078002847D0B6 +:101E340028468496FFF729FD09204BE15C9804E1CC +:101E44005C9C3FE15C9C2078A0B328468496FFF715 +:101E54001CFD0A203EE19DF87C01DFE810F04700FC +:101E64005903410305003C009DF88001012841D13C +:101E74004EE39DF87001012800F04A8302F000FE51 +:101E8400849080B18DF870618DF8606157900E98E0 +:101E9400FFF7E2FE849008B1599021E02846FFF74D +:101EA400E7FC042016E12846FFF7FAFC03208DF82E +:101EB40070010FE184F800901321DFF8F00604E0CC +:101EC400DFF8E4062A2184F8009002F095FD2670DC +:101ED40002F0A7FE04E09DF88001012827D117E352 +:101EE4000F988DF87C615D9033985C908DF88061DB +:101EF4005D985E909AF80A00C0B2012818BF0320CA +:101F04008DF8800140F06680494841240346D0F8AA +:101F140078045E9900F07F000A680432C3F8082749 +:101F2400444A1460C3F8009008718DF880619AF8EF +:101F34000A00C0B202284FD18DF87C918DF88091AF +:101F440002F0B8FD0DF5047B0546CDE984010E468B +:101F54005846022102F0C2F8DFF844165846DDF86C +:101F64005C819DF8604102F0D3F830880B22411C5B +:101F74006FF31F302A5422463180DDE984563146FE +:101F8400284602F045FA08F1040228463146234661 +:101F940002F0A2FD9DF8600180AD0128AB4618BF98 +:101FA400402824D157980079A0F10B010F2900F2A1 +:101FB400E980052084AD4FF001090026DFE801F037 +:101FC4004108282C22303C2E40263E2024321E2A52 +:101FD4000A2036E0032006E080AD03208DF880015E +:101FE4000420AB4684AD8DF87C01052072E0359C5D +:101FF40084AD5C944FF00109002624E74B2020E0D7 +:102004003C201EE019201CE041201AE0322018E098 +:102014000F2016E0502014E0142012E0282010E0D5 +:102024001E200EE046200CE00C140040600000105E +:102034003470024040770240232002E0372000E061 +:102044002D208DF86D0134985C90017829B12846D3 +:102054008496FFF713FC06203CE0D14A80F80090F8 +:102064005A908DF86E919DF86D11C2F8FC1002998A +:102074008DF88061CDE95C010E98FFF797FCC0B242 +:10208400022801D1072025E08DF86E615A98067068 +:1020940002F0C7FD069C2046FFF781FC0220CDE933 +:1020A40088B9CDE9866629468590DFF8F8048490DE +:1020B400DFF8E0048190059880902046FFF7ECFA61 +:1020C400359C5C942078002845D028468496FFF7F8 +:1020D400DCFB08208DF86C019DF8B601DFE810F0F8 +:1020E4000A00000200020C00150025002100540122 +:1020F40023001F008DF8BC610D98FFF7ADFD84909F +:1021040020B36890649C6F9400E06F9C2078002852 +:1021140044D028468496FFF7B8FB042039E06F9C2E +:10212400D4E16F9817E16F9CBDE19DF8C801DFE829 +:1021340010F04400EF01D701480006001E009DF88E +:10214400D40181071CD0032853D0E1E12846FFF7CE +:102154008FFB03201DE084F800903699039802F069 +:102164004BFC267002F05DFD8DF86E61B8E69DF8BB +:10217400DC0110B1032875D0CAE1DDE973016FE019 +:10218400739835E0359C84AD5C944FF001090026CA +:102194004BE68DF8B60102F046FD30E684F8009077 +:1021A400659802C802F028FC267002F03AFD0898EF +:1021B4008DF8C861709066986F90ADF8CC61709896 +:1021C40071900C98FFF72AFD18B103208DF8C8010F +:1021D40005E04FF48070ADF8C901012002E0002150 +:1021E400022084E000064ED007988DF8D4617390E5 +:1021F40074909AF80700C0B210B102286DD084E13F +:1022040002F08EFB5FFA80F8B8F1000F57D0B8F1F6 +:10221400010F62D0B8F1020F40F063817498D8497D +:102224004FF00109006800680330C1F8F800DB488A +:102234008AF80890C0F8009002F03CFCCDE98401D3 +:102244002846022101F04AFFD949284601F060FFDF +:10225400009901988DF8D4918DF8DC617491739094 +:10226400CDE975019AF8080000F00300DFE810F0EA +:102274004D0104001400200005208DF8C80103203E +:102284008DF8DC01ABE7BE4801688DF8C8919DF874 +:10229400C90180F001002AE08AF808607598067088 +:1022A400BE48D0F8F803769900F00100087001E008 +:1022B4008AF808608DF8DC919DF8CA0192E702F073 +:1022C40029FB02F0F7FBCDE984012846022101F045 +:1022D40005FFB849284601F01BFF042000218DF8B2 +:1022E400C80103208DF8D40102204FF0010982B205 +:1022F400022A01D105204CE7ADF8B001ADF8B211C6 +:102304006899CA78023A8DF8B721D2B2032A08D361 +:10231400CA78023A51FA82F212798DF8B92101226F +:1023240000E0002200048DF8B82101D0002441E02F +:1023340011F8030F821E51FA82F0D2B20131520811 +:102344003AB10B78013A047801F8014B00F80139ED +:10235400F6E767986F90017829B128468496FFF7CD +:102364008DFA062015E708990F2280F800906990ED +:10237400CDE96F01DDE97C018DF8CC61CDE9710116 +:1023840078A9049802F051FC0D98FFF70FFB05465D +:10239400C0B2022806D180AD0720AB4684ADF8E672 +:1023A4000C1400406998067002F03BFC05F001042F +:1023B40080ADAB466598FFF7F2FA02257F4989950F +:1023C400D946CDE9876B0DF5FC78CDE9855684AE09 +:1023D4008491DFF8ECB1DFF8ECA10999CDF80CB2E7 +:1023E400CDF80882CDF804A280919DF8B7116598C4 +:1023F4004A1E18BF0122012974497F92724A08BFFC +:1024040011467E913146FFF747F9BDF8B201ADF8A8 +:10241400B401BDF8B0016E4901284FF0020008BFB5 +:1024240003206B906B4808BF08466B498995CDE93A +:102434008759354686910321859100266749849101 +:10244400674983910B996A906598CDE981B1CB4630 +:102454000A9980912946FFF71FF99DF8B8014FF0BA +:10246400010988B19DF8B9018DF8F80165985D49B5 +:10247400CDF82492CDE9876BCDE9859684912946E0 +:10248400CDE9808AFFF708F9659802225649FFF7DB +:1024940072FADFF8DCA0BCB1659821225349FFF73A +:1024A4006AFA649C6F94207828B128468496FFF7D2 +:1024B400ECF908206DE684F80090659802C802F0F3 +:1024C4009BFA267002F0ADFB649C6F942078002880 +:1024D4003FF464AE28468496FFF7D7F9092058E6FE +:1024E400FEDE02F0E7FA84ACCDE984010021204647 +:1024F40001F0F4FD3049204601F00AFE4046214631 +:1025040002F02AFA02F064FAFEDE01F0B5FFFEDE04 +:1025140000F072F8FEDEBFF32F8F02F0CBFA33AC7B +:10252400CDE933010021204601F0D8FD114918E01E +:10253400BFF32F8F02F0BEFA33ACCDE93301002193 +:10254400204601F0CBFD0C490BE0BFF32F8F02F0C6 +:10255400B1FA33ACCDE933010021204601F0BEFDD0 +:102564000649204601F0D4FD02F056FBFEDE00BF12 +:102574009AF103206200000063000000570000008D +:102584000C14004018110000F72900003411000059 +:10259400241100004D480000A01100000810004064 +:1025A4000000000008120000C3110000B011000078 +:1025B40059000000580000005A00000028120000D2 +:1025C400C51300007B290000D4120000381200005B +:1025D400391200003C120000601200004812000092 +:1025E400CD280000A8120000B0120000B2120000B2 +:1025F40002F013BB0068FEE780B56F4600F006F8F2 +:10260400FEDE80B56F4600F001F8FEDE80B56F4651 +:1026140002F04AFAFEDED4D4F0B503AF2DE9000F80 +:1026240083B0D0F800E09246BD680A461EF001016E +:102634004FF02B0B01EB050608BF4FF4881B1C461B +:1026440080465FEA4E7103D44FF0000A002254E042 +:10265400BAF1000F0BD0AAF101010AF0030C03290F +:1026640007D200211346BCF1000F2BD142E0002118 +:1026740040E08DE87000ACEB0A0600219146134659 +:102684001A785D78987802F0C002DC78802A05F028 +:10269400C00208BF0131802A00F0C00008BF013128 +:1026A400802804F0C00008BF0131802808BF013130 +:1026B40004330436E4D1DDE900454A46029EBCF108 +:1026C400000F17D0187800F0C000802808BF01312F +:1026D400BCF1010F0ED0587800F0C000802808BF6C +:1026E4000131BCF1020F05D0987800F0C0008028B9 +:1026F40008BF013106EB0A00461AD8F80800012881 +:1027040018D1D8F80C90B14514D95FEA0E702AD4C8 +:102714000292A9EB060198F8202000208946032A9A +:1027240008BF0122DFE802F0490245024FF0000928 +:10273400084642E040465946534600F09EF828B108 +:102744000126304603B0BDE8000FF0BDD8F81C10D8 +:102754002A46D8F81800CB68214603B0BDE8000F1C +:10276400BDE8F0401847D8F80400594602960126FF +:1027740001903020C8F80400534698F820000090D7 +:10278400404688F8206000F078F80028D9D198F8FD +:102794002020AA460298032A08BF0122A9EB0001BF +:1027A40000200D46DFE802F03A0237020025084611 +:1027B40034E0480801314FEA5109461C013E08D073 +:1027C400D8E90602D8F80410126990470028F5D019 +:1027D400B6E7029A404659465346D8F8046000F0DA +:1027E4004CF80028ACD1D8E906012A46CB6821462A +:1027F40098470028A4D109F10105D8E90698344680 +:102804000126013D2FD0D8F8102048462146904794 +:102814000028F6D095E7480801314D08461C013ED2 +:1028240008D0D8E90602D8F80410126990470028A5 +:10283400F5D085E7D8E906022146D3685246D8F890 +:102844000440984700287FF47BAFD8E9069A013505 +:102854000126013D09D0DAF8102048462146904768 +:102864000028F6D06DE700266BE70098002688F86C +:1028740020000198C8F8040063E7F0B503AF4DF8F1 +:1028840004BD1C4615460646B1F5881F08D0D6E996 +:1028940006021269904718B101205DF804BBF0BD2F +:1028A4004DB1D6E906012246CB6829465DF804BB42 +:1028B400BDE8F040184700205DF804BBF0BD80B5CA +:1028C4006F46FFF7A3FEFEDEF0B503AF4DF804BD7F +:1028D400A2B0068802AD0C46802106F00F0000F17C +:1028E40057020A2838BF00F13002284602F0F0F9F6 +:1028F4000020B0EB161F28D0310901F00F0101F1BF +:1029040057020A2938BF01F13002B0EB162F8DF8B7 +:1029140086201DD0300A00F00F0000F157010A286C +:1029240038BF00F130010020B0EB163F8DF8851060 +:1029340011D0300B00F157010A2838BF00F13001E3 +:102944008DF884107C20042107E07F20012104E01D +:102954007E20022101E07D200321009141F29C317F +:102964002B18C0F2000120460222FFF755FE22B0C8 +:102974005DF804BBF0BD80B56F468CB00A460178A3 +:10298400642915D348F21F50C5F2EB10A1FB0003D4 +:102994006FF063005B0903FB001041F2D421C0F225 +:1029A4000001C0B231F81000ADF82D00242003E07E +:1029B4000A2906D226200B4603F1300102AB195432 +:1029C40008E041F2D420C0F2000030F81100ADF864 +:1029D4002D002520C0F12701009102A90B1841F216 +:1029E400D4211046C0F200010022FFF715FE0CB0FE +:1029F40080BDB0B502AFA2B000680DF1080E8C46E0 +:102A04008123002200F00F0101F157040A2938BF85 +:102A140001F130040EEB0301B2EB101F01F8024C7C +:102A240030D0040904F00F0404F157050A2C38BF10 +:102A340004F13005B2EB102F01F8035C27D0040A2F +:102A440004F00F0404F157050A2C38BF04F13005D3 +:102A5400B2EB103F01F8045C1ED0040B043B04F0FD +:102A64000F0404F157050A2C38BF04F1300501F8AE +:102A7400055C010CB2EB104F0846C3D1581E8128E7 +:102A84000ED31CE0981E013B812809D317E0D81E01 +:102A9400023B812804D312E0181F033B81280ED285 +:102AA400C3F18101009141F29C310EEB0003C0F2AD +:102AB400000160460222FFF7AFFD22B0B0BDFFF770 +:102AC400FEFEFEDE80B56F461B481D4A016841F0DC +:102AD4008071016019480021416001681140013191 +:102AE400016018480121C0F8101501601648816082 +:102AF400016016481649091A21F0030102F037F95A +:102B040014481549091A21F00302144902F08FF8F8 +:102B140002F085F812484FF48A51124C124D0160AC +:102B24000161AC4202D201CC8047FAE7FFF760FDB5 +:102B3400FFF7ACF8FEDE00BFFCED00E0001000E0A3 +:102B4400FEFFFF000800004000B0004000F003203A +:102B5400ACF10320ACF103206CF20320544E0000CE +:102B640008050050444E0000544E000080B56F46E6 +:102B740001F096FCBDE8804001F0C0BCF0B503AFA5 +:102B84002DE9C00B01F096FF6C46CDE9000120460B +:102B9400042101F0A3FA7949204601F0B9FA784AF0 +:102BA400906B000605D000209063D2F80402400424 +:102BB40006D41068000607D04FF0040810461BE046 +:102BC40091464FF002081AE0104650F8481F0906D3 +:102BD40002D04FF000080FE0104650F80C1F090611 +:102BE40002D04FF0010807E0104650F86C1F0906A8 +:102BF40000F0C0804FF0030891460021016001F00D +:102C040059FF6E460446CDE900010D4630460321C6 +:102C140001F064FA5B49304601F07AFA28880C2204 +:102C2400411C6FF31F30225430462980564901F06D +:102C34006FFADFE808F003722B482100DDE9000198 +:102C440000250A88531C6FF31F3285540B8001F052 +:102C540031FF6C46CDE900012046022101F03EFA25 +:102C64004E49204601F054FA4FF000600421C9F89F +:102C740008024648C57161E0DDE9000104240A88C0 +:102C8400531C6FF31F3284540B8070E0DDE90001A4 +:102C940002240A883D4D531C6FF31F3284540B8069 +:102CA400E879000666D101F005FF6C46CDE9000124 +:102CB4002046022101F012FA3649204601F028FA92 +:102CC4000120E87153E0DDE90012032013885C1C45 +:102CD4006FF31F33C8542D491480CA79D2B2022A23 +:102CE40048D14FF48042C9F80422D9F8002122F4D3 +:102CF4008012C9F800214FF00062C9F808220022AE +:102D0400CA71487201F0D6FE6C46CDE90001204636 +:102D1400022101F0E3F91E4926E0DDE90001012466 +:102D24000A88531C6FF31F32845418480B80C179EE +:102D3400C9B2012904D002291CD10221417216E032 +:102D4400017AC9B2012915D10021C9F86C10C171E9 +:102D54000221017201F0AEFE6C46CDE9000120466D +:102D6400022101F0BBF90C49204601F0D1F9BDE87C +:102D74000C0BF0BD01F080FBFEDE00BF490000003B +:102D8400001100404A0000004F0000009AF10320A7 +:102D94004E0000004C0000004D0000004B000000FD +:102DA400DCB504AF01F086FE6C46CDE90001204697 +:102DB400042101F093F90449204601F0A9F90348DC +:102DC40000210160DCBD00BF480000001831004054 +:102DD400DCB504AF2F480168C90741D1C16BC907ED +:102DE40022D000212F4CC1632D490A88931C013243 +:102DF40004EA03332C4C23600A8091B20C22B1FB09 +:102E0400F2F202EB4202A1EB820103290CD8DFE8C3 +:102E140001F00207020721494FF480724A6003E07F +:102E24001E494FF480720A60016CC9071FBF00215C +:102E340001644FF40031C0F80412416CC9071FBF8C +:102E4400002141644FF48021C0F80412816CC90749 +:102E54001FBF002181644FF40021C0F80412DCBDBF +:102E640001F028FE6C46CDE900012046002101F066 +:102E740035F90949204601F04BF908484FF48051CF +:102E84000160402101604FF48071416001F0C4FE93 +:102E9400FEDE00BF04B100404700000008050050FA +:102EA40000F0032000F0FF0040B50040F0B503AF90 +:102EB4002DE9000F93B001F0FDFD0AACCDE90A0144 +:102EC4000421204601F00AF9DFF85017204601F0EA +:102ED4001FF9DB4AD2F85401000604D002F5AA70A7 +:102EE4004FF007093DE0104650F8FC1F090602D0D8 +:102EF4004FF0080935E0D2F82401000604D002F5A9 +:102F040092704FF003092CE0D2F85801000604D067 +:102F140002F5AC704FF0040923E0D2F85C0100061E +:102F240004D002F5AE704FF005091AE0D2F82C0176 +:102F3400000604D002F596704FF0000911E0D2F8B3 +:102F44003801000604D002F59C704FF0010908E036 +:102F5400D2F81001000600F0778402F588704FF073 +:102F6400020900219246016001F0A4FD0AAE044664 +:102F7400CDE90A010D463046032101F0AFF8DFF830 +:102F8400941D304601F0C4F828880C22411C6FF3CC +:102F94001F30225430462980DFF87C1D01F0B8F838 +:102FA4000820DFE809F005090B070F110D131400C1 +:102FB40000200CE003200AE0012008E0022006E0E3 +:102FC400062004E0042002E0052000E00720DDE9FB +:102FD4000A121388DFF8448D5C1C6FF31F33C85446 +:102FE400148098F80200811ECAB2032A28BF012166 +:102FF400C9B2012911D0022914D1DFE819F009005E +:103004000E01AE00BA0047002501AE01F500B5017E +:10301400DFF80C0D00218181EAE1B9F1070F08BF47 +:10302400002802D001F092F8FEDE01F0A5F80005B8 +:10303400F8D5012088F8020001F03CFD0AACCDE986 +:103044000A010221204601F049F8DFF8D81C204685 +:1030540001F05EF898F80000002800F0C98198F8A3 +:103064000100002800F0C48198F80200002800F054 +:10307400BF81042088F802000020A8F8000013B0E3 +:10308400BDE8000FBDE8F04001F0AEB8DFF8900CE9 +:1030940080890028C6D16B4E01220025D6F8009005 +:1030A4005FFA89F0C109B2EBD01F0C4618BF0224A5 +:1030B400B5EBD01F08BF0C46D6F804A0B368022CA9 +:1030C400F068D9B241EA00210991D6F810E071699B +:1030D400B269F6695FFA8EFC4CEA012BD2B242EA7D +:1030E40006220892CDF81C9040F055818DF830509E +:1030F400CDE90A555546DDE9089601F0DBFC0DAC37 +:10310400CDE90D010021204600F0E8FFDFF8181C8E +:10311400204600F0FDFF0798214601F0F7F8284605 +:10312400214601F0F3F8DFF8045C30462146A84755 +:1031340058462146A84748462146A8474049012009 +:10314400086501F0B7FC0AACCDE90A01022120466A +:1031540000F0C4FFDFF8D81B47E101F0ABFC0AAC78 +:10316400CDE90A010221204600F0B8FFDFF8C41BB4 +:103174003BE1DFF8AC6BB089012800F02B81022819 +:103184007FF450AFD14601F095FC0AACCDE90A01B9 +:103194000221204600F0A2FFDFF84C1E204600F07A +:1031A400B7FFF089002800F02781264DD5F880016B +:1031B4004030C5F88001F489412CC0F0208101F031 +:1031C40079FC0AACCDE90A010221204600F086FF11 +:1031D400DFF8181E204600F09BFF4020214601F036 +:1031E40095F8F089403824E100F0C6FFC10500F1EC +:1031F400DE80800540F1F58601F05CFC0AACCDE987 +:103204000A010221204600F069FFDFF8001E204673 +:1032140000F07EFF0B480021D9E001F04BFC0AAC22 +:10322400CDE90A0102210225204600F057FFDFF80C +:10323400C01D204600F06CFFDFF8BC0D8572D7E09E +:103244000470024080740240DAF86854CAF8685482 +:1032540015F0040608D0DFF8A00D0078C0B20228EB +:103264007FF4E0AE00F0D8FFA8072AD501F022FCD5 +:103274000AACCDE90A010221204600F02FFFDFF855 +:10328400901D204600F044FF01F014FC0AACCDE987 +:103294000A010221204600F021FFDFF8781D2046B4 +:1032A40000F036FFDFF8500D01210170DFF84C0DFE +:1032B4008188C08889B280B288421EBFD5488021E7 +:1032C40001606EB101F0F6FB0AACCDE90A010221FE +:1032D400204600F003FFDFF8401D204600F018FFF1 +:1032E400680318D5CC48866A804601F0E3FB0AAC33 +:1032F400CDE90A010221204600F0F0FEDFF81C1D92 +:10330400204600F005FF06F07F00214600F0FEFF96 +:103314000020C8F82800280311D501F0CBFB0AAC23 +:10332400CDE90A010221204600F0D8FEDFF8F01CA6 +:10333400204600F0EDFEDFF8C00C01218172280761 +:1033440056D501F0B7FB0AACCDE90A0102212046AB +:1033540000F0C4FEDFF8CC1C47E013B0BDE8000F5A +:10336400BDE8F04000F058BF01F0A4FB0AACCDE981 +:103374000A010221204600F0B1FEDFF8841C204639 +:1033840000F0C6FEDFF8700C4178022980F029862F +:10339400002141702CE0C9F34112002A51D0022AC5 +:1033A4004CD0012A7FF4A2AE4FF480724AE001F0BF +:1033B40081FB0AACCDE90A010221204600F08EFE11 +:1033C400DFF8401C204600F0A3FE93480121C0F81A +:1033D400AC100DE001F06EFB0AACCDE90A0102214C +:1033E400204600F07BFEDFF8F01C204600F090FE43 +:1033F40013B0BDE8000FF0BD0020B081F8E701F084 +:1034040059FB0DF12808CDE90A010221404600F0DC +:1034140065FEDFF8C01C404600F07AFE20464146B7 +:1034240000F074FF00F0D6FF04F07F00C5F88401BB +:103434000020F0810120C9F80000D9E74FF40072A0 +:1034440000E0002209F00F06032E3FF64FAE04F011 +:103454000104049306940023DFE806F00A02050839 +:103464004FF4803304E04FF4003301E04FF4403371 +:1034740042EA0304C4F30122260A1C0C012A059320 +:1034840037D00396002A069E7FF430AE5FFA8AF2A4 +:1034940055460C2ACDF808B000F25582DFE812F048 +:1034A4000D00370153021B0153020801C000E9005B +:1034B40054016601AD019A01A100002E00F043827F +:1034C4000998000402BF089880B2022840F03B82A9 +:1034D400022C00F01382012C00F01D82002C40F01D +:1034E40032820298000440F02E824FF0000E042035 +:1034F40050E106995FFA8AF0049A554622283AD098 +:10350400DDF82090212821D0202808BF002948D0A8 +:10351400059A002406F00300ADF840400F94CDE96D +:1035240000B940EA1220099E2A4641EA002111A866 +:10353400334601F004FB9DF84400022840F0248245 +:103544008DF830400320CDE90A442BE20029DFD076 +:10355400012CDDD10998000404BF1FFA89F0072863 +:10356400D6D11FFA8BF0B0F5807F28BF4FF0000C46 +:10357400CED2022027E0DDF820900029C8D1012C0A +:1035840008BF5FEA0940C3D1099880B203289CBFF1 +:103594001FFA8BF0FF28BBD862F3082CC2F340005B +:1035A40011E0012CB4D10998000404BF1FFA89F07A +:1035B4000728ADD11FFA8BF0B0F5807F28BF4FF0FC +:1035C400000CA5D203208DF82A000F98ADF828C06E +:1035D400CDF82B00BDF84000ADF82F000120099E66 +:1035E400E0E1002E00F0AF81022C40F0AC8109989C +:1035F400000402BF089880B2022840F0A481029817 +:1036040001F0D4FAC2B2022A00F09D8100F0010E4A +:103614000A20BFE004E200E08074024001000000E0 +:10362400002E00F09081002C40F08D8101F0D2FA40 +:10363400C1B20C2900F087814FF0FF3151FA80F2BA +:10364400062A00F2808104210220DFE812F007003C +:103654005201A3007C017C016E01780104980006EC +:1036640004BF02985FEA004040F06D81012100F040 +:10367400A8BC56EA040140F0668101F0ABFAC0B27E +:103684000C2800F06081032800F02981022800F052 +:103694002881069E0128554640F05581049800066D +:1036A40004BF02985FEA004040F04D8101211EE111 +:1036B400002E40F04881099880B27F2800F24381AF +:1036C400002C40F04081089802990843000440F01F +:1036D4003A8105205CE0002E40F035810898000412 +:1036E40040F03181099880B2002800F0DD80022882 +:1036F40000F0BF80012808BF002C40F0248102980C +:10370400000440F020814FF0000E082042E0002E1B +:1037140040F01981032C00F016810898000440F051 +:103724001281099880B2002800F0CD80012808BFDA +:10373400002C40F008810298000440F004814FF00E +:10374400020E0020002125E0002E00F0FC800898E5 +:1037540080B2012808BF002C40F0F5800998029936 +:103764000843000440F0EF80012013E0002E40F0F5 +:10377400EA80099880B2FF2800F2E580002C40F02E +:10378400E280089802990843000440F0DC80062097 +:10379400DDF810E0049AC9B2120642EA01415FFA68 +:1037A4008EF241EA02210844CDF829000020029952 +:1037B4008DF828000898C1EA0040CDF82D009DF846 +:1037C4002A00BDF82810BDF82F80DDF82B4041EA0F +:1037D400004634E1002E40F0B680012C40F0B38066 +:1037E400089A120401BF0002090208435FEA00407C +:1037F40040F0A98009200499CCE7002E00F0A380B2 +:10380400029884F00103002180B2B0F5807F4FF06C +:10381400000038BF0120099A92B21A43089B9BB258 +:1038240083F001031A43B2FA82F25209104008BF2E +:103834008646002800F0878000220320049200229C +:10384400029200220892A5E7DFF8AC070078C0B224 +:1038540001287FF4CDADDFF8A4078188C08889B240 +:1038640080B288423FF4C4AD92464FF00609FFF798 +:103874007BBB44EA0E00000665D16FF0020050FAEB +:1038840081F24FF0020E0820032AFFF483AF069E54 +:10389400CAB2012A3FF47EAF5546022A53D14FF0F3 +:1038A400020E0820022175E7022C4CD1029801F087 +:1038B4007DF90491C1B2022945D000F001014FF015 +:1038C400010E082066E7022C3DD1029801F06EF942 +:1038D400C2B2022A37D000F0010E00205AE70221BA +:1038E40005E0069E5FEA0B4055462CD100210720D7 +:1038F40068E30298000426D1002162E3029801F0F3 +:1039040055F90491C1B202291DD000F001014FF014 +:10391400010E04203EE7029880B2B0F5807F12D2F7 +:10392400714604204FF0020E34E70498000604BFE9 +:1039340002985FEA004006D1022002212AE7029899 +:10394400000400F03D8303982A460599DDF808B089 +:1039540000F00300CDF800B040EA1120DDF820901B +:10396400CDF8049046EA0021099E11A8334601F0DF +:10397400E6F89DF84400022806D100208DF83000B6 +:10398400CDE90A0003200DE01198CDF83500BDF80B +:103994004800ADF839000D980A90DDF83700CDF8ED +:1039A4002B00022003283FF4A8AB9DF82A10BDF891 +:1039B4002820DDF82B4042EA0146F0B3DFF8385600 +:1039C400012829D0687802285AD104F47F00C6F36C +:1039D4000745B0F5003F6BD106F47F40B0F5807F1A +:1039E40040F0AA8101F066F80AAECDE90A0102218D +:1039F400304600F073FBDFF83C16304600F088FBDD +:103A04002846314600F082FC2046314600F081FC15 +:103A1400DFF824062121CCE2687802283CD1300664 +:103A240052D001F047F80AACCDE90A010021204642 +:103A340000F054FBDFF80816AFE2BDF82F8026F043 +:103A44007F404FEA142A4FEA1049C0F30720DFE809 +:103A540010F00B00E2008B00CA007300F8001E0196 +:103A6400D6004B017F00560101F024F80AACCDE9E1 +:103A74000A010021204600F031FBDFF854168CE2E5 +:103A840001F018F80AACCDE90A010021204600F043 +:103A940025FBDFF8941580E201F00CF80AACCDE9BF +:103AA4000A010021204600F019FBDFF8901574E2AA +:103AB40001F000F80AACCDE90A010021204600F02B +:103AC4000DFBDFF8681568E26FF0010050FAA6F00C +:103AD400C1B2022928BF0220C6F30744C0B200289D +:103AE40000F07981012800F0438100F0E3FF0AAD82 +:103AF400CDE90A010221284600F0F0FADFF8441566 +:103B0400284600F005FB04F00100294600F0FEFB06 +:103B1400C6F30020294600F0F9FB00F0CBFF0AAC05 +:103B2400CDE90A010221204600F0D8FADFF8181581 +:103B3400204600F0EDFA14E100F0BCFF0AACCDE938 +:103B44000A010021204600F0C9FADFF8501524E2EA +:103B540000F0B0FF0AACCDE90A010021204600F0D4 +:103B6400BDFADFF8F81418E200F0A4FF0AADCDE9BD +:103B74000A010221284600F0B1FADFF82815284688 +:103B840000F0C6FA4046294600F0C0FBE0B2042823 +:103B940000F21A82DFE810F00500B701CB01180229 +:103BA400AC0100F087FF0AACCDE90A0102212046EE +:103BB40000F094FADFF80015204600F0A9FA504608 +:103BC400214600F0A3FB5FEA0A6000F0EB8100F0FD +:103BD40071FF0AACCDE90A010021204600F07EFA0B +:103BE400DFF8D814D9E100F065FF0AACCDE90A0189 +:103BF4000021204600F072FADFF8A414CDE100F0B1 +:103C040059FF0AACCDE90A010021204600F066FA0A +:103C1400DFF85014C1E100F04DFF0AACCDE90A0110 +:103C24000221204600F05AFADFF89C14204600F0E6 +:103C34006FFA0120214600F069FBDFF890040121AE +:103C4400B7E100F037FF0AACCDE90A0102212046B2 +:103C540000F044FADFF83014204600F059FA4846E0 +:103C6400214600F053FBE4494878002800F0218104 +:103C7400012800F0C18000F01DFF0AACCDE90A0163 +:103C84000021204600F02AFADFF8001485E100F054 +:103C940011FF0AACCDE90A010221204600F01EFA08 +:103CA400DFF8C413204600F033FA4846214600F0FA +:103CB4002DFBD1484078002800F00F81012800F046 +:103CC400B380CD48B9F1000F00F03C81C07848457D +:103CD40047D000F0EFFE0AACCDE90A0100212046EE +:103CE40000F0FCF9E14958E100F0E4FE0AACCDE94A +:103CF4000A010021204600F0F1F9D9494DE100F014 +:103D0400D9FE0AACCDE90A010021204600F0E6F90B +:103D1400D14942E1020000004600000062F20320A3 +:103D24009AF103200400000008000000174300007B +:103D34002F0000003A00000000F0BCFE0AAECDE9FE +:103D44000A010221304600F0C9F9B949304600F0B1 +:103D5400DFF92846314600F0D9FA2046314600F012 +:103D6400D5FA13B0BDE8000FBDE8F04000F02CBB5D +:103D740000F0A0FE0AACCDE90A010221204600F0C1 +:103D8400ADF9B249204600F0C3F9A88900287FF4B0 +:103D940049A90126AE8100F08DFE0AACCDE90A01E5 +:103DA4000221204600F09AF9A949204600F0B0F912 +:103DB400954908F10300C1F880020720C1F8840284 +:103DC4008C480146D0F8FC0140F00200C1F8FC0127 +:103DD4008E64FFF70DBB00F06DFE0AACCDE90A015D +:103DE4000221204600F07AF99A49204600F090F921 +:103DF40008F103000721DCE0B9F1000F00F0B58001 +:103E0400887848453FF4F4AA012081F8029048706C +:103E140000F050FE0AACCDE90A010221204600F070 +:103E24005DF99B49FFF7E1BAB9F1000F99D0B9F1F7 +:103E3400010F40F0A88070480546867800F03AFEED +:103E44000AACCDE90A0102214FF00209204600F034 +:103E540045F98849204600F05BF96B494FF00108A9 +:103E64000F2085F80380AE7085F801900E46C1F8E6 +:103E740090000920C1F894000020C86200F01AFEE6 +:103E84000AACCDE90A010221204600F027F97A495B +:103E9400204600F03DF90A2021460A2500F036FAB2 +:103EA4007648C6F894015348C6F89851C0F804807F +:103EB40057E7B9F1000F3FF49BAA012081F8029063 +:103EC400487000F0F7FD0AACCDE90A010221204652 +:103ED40000F004F97049FFF788BA00F0EBFD0AAC72 +:103EE400CDE90A010021204600F0F8F8654954E0C4 +:103EF40000F0E0FD0AACCDE90A010021204600F003 +:103F0400EDF8694949E000F0D5FD0AACCDE90A01B4 +:103F14000221204600F0E2F86549204600F0F8F856 +:103F2400B8F1120F28BF4FF01208624840E000F0C9 +:103F3400C1FD0AACCDE90A010121204600F0CEF80A +:103F44005A492AE00646857800F0B4FD0AACCDE96A +:103F54000A010221204600F0C1F84549204600F03C +:103F6400D7F80120B5707070FBE60020487000F0AF +:103F7400A1FD0AACCDE90A010221204600F0AEF809 +:103F84004449FFF732BA00F095FD0AACCDE90A01C5 +:103F94000021204600F0A2F83949204600F0B8F884 +:103FA400FFF7CCB84648B8F16B0F28BF4FF06B0849 +:103FB400414613B0BDE8000FBDE8F04000F0ACB9D5 +:103FC40003210220FFF7E6BB00F074FD0AACCDE943 +:103FD4000A010021204600F081F83A49204600F009 +:103FE40097F800F07DF9FEDE30000000310000009B +:103FF4003B000000047002409AF10320ACF103205E +:104004000700000005000000807402400600000064 +:1040140034000000350000003600000037000000C6 +:1040240038000000390000002B0000002E000000C2 +:104034002D0000002C00000041F2032024000000A9 +:104044002A000000250000002600000028000000CF +:1040540029000000270000000900000023000000E0 +:1040640022000000210000001600000019000000DA +:104074001C0000001A0000001B00000034F20320A2 +:1040840018000000170000001100000012000000DA +:1040940015000000140000001300000020000000C0 +:1040A4001F0000000A000000100000000D000000C6 +:1040B4000C000000B4F103200E0000000F0000000B +:1040C400C6F103200B0000001E00000040F2032094 +:1040D4001D0000003200000033000000F0B503AF03 +:1040E4004DF804BD094A1268D0E9003425889209C4 +:1040F4006E1C6FF31F3559552680D0E900311846E0 +:104104005DF804BBBDE8F04000F082B9041000E0A3 +:10411400F0B503AF4DF804BD8AB27F2A0AD3D0E9C3 +:10412400003441F0800125886E1C6FF31F3559550A +:10413400D1092680D0E9002003885C1C6FF31F336B +:10414400D15404805DF804BBF0BDD4D4E0B502AF13 +:1041540000F07AF900F0AEFC6C46CDE9000120468F +:104164000021FFF7BBFF03492046FFF7D1FF00F012 +:1041740053FDFEDE44000000F0B503AF4DF8048D9E +:1041840084B016480468046000F094FC0DF104083F +:104194000546CDE901010E4640460321FFF79EFF87 +:1041A4000F494046FFF7B4FF30880A22411C6FF3E1 +:1041B4001F302A54404631800A49FFF7A9FFDDE940 +:1041C4000101A7F11202022327F8124C00F084FC2B +:1041D400204604B05DF8048BF0BD00BF00740240BB +:1041E4004300000064000000DCB504AF084801216E +:1041F400016000F05FFC6C46CDE90001204602211D +:10420400FFF76CFF03492046FFF782FFDCBD00BFC8 +:104214000475024042000000F0B503AF2DE9C00769 +:10422400DFF8A4A0BAF80450BAF80600401B010451 +:104234001CD084B23F2C28BF3F2454FA85F081B2AD +:10424400E8B2B1F5807F13D9DAF80090C0F5807632 +:10425400DFF8788009EB00013246404600F0E5FCC7 +:10426400A11B08EB06008AB2494606E0012625E0B8 +:10427400DAF8001022460144144800F0D6FC28194C +:10428400AAF8040020064FF0010617D000F012FC33 +:104294006D46CDE9000128460221FFF71FFF0C49B6 +:1042A4002846FFF735FF2046294600F02FF8094835 +:1042B4000649016044600848066002260748067003 +:1042C400BDE80C07F0BD00BFACF1032000C0032023 +:1042D40041000000287602400C7002409AF103204D +:1042E400E0B502AF00F0B0F800F0E4FB6C46CDE9B5 +:1042F400000120460021FFF7F1FE03492046FFF7A5 +:1043040007FF00F089FCFEDE3E000000C0B200F0B2 +:1043140069B880B200F066B8F0B503AF4DF8048D0B +:1043240082B0234E8046B08988BB234C88B20D46A8 +:1043340040280AD9206820F004002060A5F140003C +:10434400F08102204025B08103E000F043F8022010 +:10435400F06000F0AFFB6E46CDE90001304602216B +:10436400FFF7BCFE15493046FFF7D2FE284631461A +:10437400FFF7CCFF124905F07F0048601148C1F8EF +:1043840000800121215002B05DF8048BF0BD00F0E3 +:1043940091FB6C46CDE9000120460021FFF79EFE0B +:1043A40004492046FFF7B4FE00F036FCFEDE00BFF1 +:1043B4009AF103203C000000007202403D0000001E +:1043C4000076024004FEFFFF0148012101607047AE +:1043D400507002400248016841F0040101607047D6 +:1043E40000720240F0B503AF4DF804BD0246D1E9B6 +:1043F40000031C880626651C6FF31F3406551D80B8 +:10440400D1E900015DF804BBBDE8F04000F000B85C +:10441400F0B503AF4DF804BD0C880023661C42F0D0 +:1044240080056FF31F34B3EBD21F08BF02F07F0582 +:10443400B3EBD21F05554FEAD21534462A460E80F7 +:10444400ECD15DF804BBF0BDDCB504AF0848002135 +:10445400016000F02FFB6C46CDE9000120460221EB +:10446400FFF73CFE03492046FFF752FEDCBD00BFC8 +:104474000475024040000000E0B502AF00F01AFBF2 +:104484006C46CDE9000120460021FFF727FE0349D1 +:104494002046FFF73DFE00F0BFFBFEDE45000000B6 +:1044A400DCB504AF00F006FB6C46CDE90001204604 +:1044B4000421FFF713FE0D492046FFF729FE0C489F +:1044C4000168090611D00021016000F0F3FA6C467E +:1044D400CDE9000120460221FFF700FE05492046F0 +:1044E400FFF716FE044801210170DCBD54000000F2 +:1044F400000100405500000098F10320F0B503AF1F +:104504002DE9C00B00F0D6FA6C46CDE90001204637 +:104514000421FFF7E3FD5D492046FFF7F9FD5C4800 +:104524004FF000080168090602D04FF000090FE0BF +:10453400014651F8042F120603D04FF00109084632 +:1045440006E050F8081F090600F095804FF00209B4 +:10455400C0F8008000F0AEFA6E460446CDE90001D2 +:104564000D4630460321FFF7B9FD4A493046FFF7AF +:10457400CFFD28880C22411C6FF31F302254304693 +:1045840029804549FFF7C4FDDDE900010A88531C71 +:104594006FF31F3200F802900B80404DA878811E03 +:1045A400CAB2032A28BF0121C9B271B1012967D156 +:1045B4002A78002A114618BF01217ABB98F001021B +:1045C4002CD101212970002144E0B8F1000F4FD112 +:1045D400B9F1000F57D1334849F275310322016014 +:1045E400C0F81421016001212F48016000F062FA33 +:1045F4006C46CDE9000120460221FFF76FFD2B49EF +:104604002046FFF785FD2A4800210078A5F801100F +:10461400C0B2002818BF0120287029E0687890BB38 +:1046240018EA010024D1B9F1020F2CD101206870DD +:1046340000F040FA6C46CDE9000120460221FFF764 +:104644004DFD17492046FFF763FD2978A878B1FA94 +:1046540081F1490960B159B9687848B10420A8705A +:1046640000202880BDE80C0BBDE8F040FFF7BCBD7E +:10467400BDE80C0BF0BD4FF003094FF001088CE7C7 +:10468400FFF72EFEFEDEFFF761FDFEDE50000000A8 +:104694001C010040030000005300000062F20320EC +:1046A4005200000000EC064000750240510000007A +:1046B40098F1032007484FF4803101604FF4805192 +:1046C400C0F83C124FF4807103480160034800F0C5 +:1046D40007B800BF04B300400C0500509E1300004F +:1046E400D0B502AF002201230021012A05D0845C49 +:1046F400013203FA04F42143F7E709B101480160E8 +:10470400D0BD00BF00E100E0B0B502AF154D0024FC +:10471400B4F5C67F04D0281900F036F88434F7E7DE +:1047240011480F2101234160082101600F49816074 +:104734008121C1600E490A6863F302020A6040F2F3 +:1047440002214FF4822281620A49C162002101637D +:104754000949425009490A4A42500A48BDE8B04052 +:10476400FFF7BEBF40C103200C150040080000063F +:104774006C16004021100100F4FCFFFFF8FDFFFF60 +:10478400094004089F13000009490A68026051E8BF +:10479400003F934207D141E80002002A1A4608BFAD +:1047A40000F03FBAF2E7BFF32F8F1A46EEE700BFDF +:1047B40004F00320BCB504AF4FF080400125056030 +:1047C40000F078F96C46CDE9000120460221FFF79C +:1047D40085FC05492046FFF79BFC04480560044816 +:1047E400BDE8BC40FFF77CBF560000000403004056 +:1047F400A0130000B0B502AF0C4D0024B4F5C67F81 +:1048040004D02819FFF7C0FF8434F7E708480121D2 +:1048140001604FF460710160064807490160074870 +:10482400FFF75EFF064880210160B0BD08F0032059 +:1048340004030040047302402194C001A01300004B +:1048440004E100E0FFF7A0BF007800F07F02052A32 +:104854001ED00A281ED00F281ED014281ED01928B6 +:104864001ED01E281ED023281ED028281ED02D2856 +:104874001ED032281ED037281ED03C281ED04128F6 +:104884001ED046281ED04B280CBF134A114A1AE0EA +:104894001F4A18E01D4A16E01B4A14E0194A12E0A8 +:1048A400174A10E0154A0EE0134A0CE0114A0AE0D8 +:1048B4000F4A08E00D4A06E00B4A04E0094A02E008 +:1048C400074A00E0054AD1E90601CB6811460222F5 +:1048D400184700BFBF130000A1130000A31300007A +:1048E400A5130000A7130000A9130000AB130000D8 +:1048F400AD130000AF130000B1130000B3130000A8 +:10490400B5130000B7130000B9130000BB13000077 +:10491400BD130000014801210160704704100040EC +:10492400BCB504AF0A48046800F0C4F86D46CDE98C +:10493400000128460321FFF7D1FB06492846FFF76B +:10494400E7FB2046294600F007F8204602B0B0BD38 +:104954005015004061000000F0B503AF4DF804BDF0 +:104964000C460546D1E900010C260A88531C6FF356 +:104974001F32865420460B801449FFF7C9FB05F00B +:104984000F010820DFE801F0070D0F09152121218F +:1049940021110B13160000200CE003200AE006206E +:1049A40008E0012006E0022004E0052002E00720E0 +:1049B40000E00420D4E9001213885C1C6FF31F3359 +:1049C400C85414805DF804BBF0BDFEDE6000000036 +:1049D400E0B502AF00F06EF86C46CDE90001204668 +:1049E4000021FFF77BFB03492046FFF791FB00F012 +:1049F40013F9FEDE3F000000E1B3F0B503AF2DE98B +:104A04000007DFF8749082460C46B9F80650B9F8EE +:104A14000400401B00F58070010424D080B2A04241 +:104A240038BF044654FA85F0E9B280B2B0F5807F0D +:104A34000FD9D9F80080C1F5807608EB0100514602 +:104A4400324600F0F2F8A01B0AEB060182B240469F +:104A540004E0D9F8000022460844514600F0E5F885 +:104A64002819A9F80600054880210160BDE800075F +:104A7400BDE8F040704700BFACF1032004E200E061 +:104A84000849086860B1026851E8003F834204D1D4 +:104A940041E80023002BF4D103E0BFF32F8FF0E7AC +:104AA4000020704704F0032080B56F4600F0B4F88E +:104AB400FEDED4D4064905480968C9B2002905496F +:104AC40018BF00F5805018BF0231704700D0032092 +:104AD40004ED00E094F10320F0B503AF2DE90007E5 +:104AE400B1F800A0064688461C46914650466FF32E +:104AF4001F30C11889B2B1F5805F0CD9C0F580555B +:104B0400311848462A4600F012F8611B09EB0500EB +:104B14008AB2314602E03118A2B2484600F007F8E2 +:104B24000AEB0400A8F80000BDE80007F0BD2AB1B4 +:104B340010F8013B013A01F8013BF8E77047F0B582 +:104B440003AF4DF804BDD6B201F00104C1F307452B +:104B5400D7E90212062E11D00A2E20D1012D08BF4A +:104B6400002C1CD112041AD18AB2FF2A17D8017161 +:104B7400002183700170190A417014E0012D0ED1D7 +:104B84006CB18CB2FF2C0AD803F47F44B4F5085FEF +:104B940005D10171012142804370017003E00021BD +:104BA4008180022101605DF804BBF0BD024680B241 +:104BB400FF2801D9002107E0C2F30310002128B126 +:104BC400082801D1012002E002207047002002F0F1 +:104BD4000F0170474FF0FF3151FA80F10C200A2980 +:104BE40018D8DFE801F006080A0C0E101214171783 +:104BF40016000120704702207047032070470420EC +:104C0400704705207047062070470720704708202A +:104C140070470B207047FFBEAABE62B6704772B6DB +:104C2400704740BF704720BF704700F0A3B8042A04 +:104C340038BFFFF7FABFB0B502AFA2F1040C0123ED +:104C440003EB9C0313F003030ED08E4604465EF878 +:104C5400045B012B44F8045B1FD163462046714674 +:104C6400BCF10C0F04D212E01346BCF10C0F0ED3AE +:104C74000D68103B0560032B4D6845608D688560A9 +:104C8400CD6801F11001C56000F11000F0D802F008 +:104C94000302BDE8B040FFF7C8BF4D68022B456072 +:104CA40007D1A2F1080308310830BCF10C0FDFD2A0 +:104CB400EDE78B680C318360A2F10C030C30BCF17E +:104CC4000C0FD5D2E3E70B4611461A4600F08FB815 +:104CD4001346D2B2042938BFFFF7F5BFD0B502AFEF +:104CE400A1F1040E42EA0363012443EA024304EB04 +:104CF4009E0443EA022314F0030410D08446012CDA +:104D04004CF8043B10D174466046BEF10C0F1ED221 +:104D140001F00301BDE8D0406046FFF7D4BF0C4664 +:104D2400BEF10C0F13D2F3E7022C436007D1083015 +:104D3400A1F108048446BEF10C0F08D2E8E78360B1 +:104D44000C30A1F10C048446BEF10C0FE0D3C0E991 +:104D54000033103CC0E902331030032CF7D88446EA +:104D640001F00301BDE8D0406046FFF7ACBF00226C +:104D7400FFF7AEBFF0B503AF4DF8048DA2B3531ED9 +:104D840002F0030C032B14D20022BCF1000F2BD031 +:104D94008B5CBCF1010F835426D0531CBCF1020F71 +:104DA400CE5CC65420D00232895C81545DF8048BF9 +:104DB400F0BDACEB020E01F10108441C6FF00302DC +:104DC40008EB0206A5180432F378EB7033792B71E3 +:104DD40073796B71B379AB710EEB02030433EFD1CA +:104DE4000432BCF1000FD3D15DF8048BF0BDD0B513 +:104DF40002AF12B3531E02F0030C032B01D20022A4 +:104E04000FE0ACEB020E421C6FF00303D418043322 +:104E1400A17161712171E1700EEB03040434F5D1C9 +:104E24001A1DBCF1000F1ABF8154BCF1010FD0BD93 +:104E34000244BCF1020F517000D1D0BD9170D0BDBD +:104E4400F9470000B94700000D470000B9460000CB +:104E540040C003200000000012010002EF020140E4 +:104E64002020090300010000000109026B00030176 +:104E74000080FA080B00020202010009040000018C +:104E84000202010005240010010524010301042489 +:104E940002020524060001070581034000200904DD +:104EA4000100020A00000007050202400000070595 +:104EB40082024000000904020002030000000921EC +:104EC400000100012221000705030340000107053A +:104ED4008303400001000000A12000000000020044 +:104EE40003000000010600FF0901A101150026FFCF +:104EF40000750895400901810295400901910295C8 +:104F0400010901B102C00000028025000000000870 +:0400000300002AC906 :00000001FF diff --git a/boards/dongle/loopback.rs b/boards/dongle/loopback.rs index cc82c9c..65a886c 100644 --- a/boards/dongle/loopback.rs +++ b/boards/dongle/loopback.rs @@ -1,12 +1,12 @@ -// f6c27c0a5af464795d1a64c45fa1b3039f44a62a #![deny(unused_must_use)] #![no_main] #![no_std] -use core::fmt::Write as _; +use core::{convert::TryFrom, fmt::Write as _}; +use async_core::unsync::Mutex; use hal::{ - radio::{self, Channel, Packet}, + radio::{self, Channel}, usbd, }; use heapless::{consts, String}; @@ -14,17 +14,67 @@ use panic_abort as _; #[no_mangle] fn main() -> ! { - let mut stx = usbd::serial(); - let (mut rtx, mut rrx) = radio::claim(Channel::_20); - let mut output = String::::new(); + let stx = Mutex::new(usbd::serial()); + let (mut hidout, _) = usbd::hid(); + let (rtx, mut rrx) = radio::claim(Channel::_20); + + let mut output = String::::new(); output.push_str("deviceid=").ok(); write!(output, "{:08x}{:08x}", hal::deviceid1(), hal::deviceid0()).ok(); - write!(output, " channel={} TxPower=+8dBm app=loopback.hex\n", rtx.channel()).ok(); + write!( + output, + " channel={} TxPower=+8dBm app=loopback.hex\n", + rtx.channel() + ) + .ok(); - let task = async { - let mut packet = Packet::new().await; - stx.write(output.as_bytes()); + let rtx = Mutex::new(rtx); + + let t1 = async { + let mut output = String::::new(); + let mut hidbuf = usbd::Packet::new().await; + let zlp = radio::Packet::new().await; + + loop { + hidout.recv(&mut hidbuf).await; + semidap::info!("HID: {}", *hidbuf); + + let arg = if hidbuf.len() == 1 { + // Linux / macOS + Some(hidbuf[0]) + } else if hidbuf.len() == 64 { + // Windows (it zero pads the packet) + Some(hidbuf[0]) + } else { + None + }; + + if let Some(arg) = arg { + if let Ok(chan) = Channel::try_from(arg) { + let mut rtx = rtx.lock().await; + rtx.set_channel(chan); + // send a zero-length packet to force the radio to listen on the new channel + rtx.write(&zlp).await.ok(); + drop(rtx); + + output.clear(); + writeln!(output, "now listening on channel {}", chan).ok(); + stx.lock().await.write(output.as_bytes()); + } else { + stx.lock() + .await + .write(b"requested channel is out of range (11-26)\n"); + } + } else { + stx.lock().await.write(b"invalid HID packet\n"); + } + } + }; + + let t2 = async { + let mut packet = radio::Packet::new().await; + stx.lock().await.write(output.as_bytes()); loop { let crcres = rrx.read(&mut packet).await; @@ -39,7 +89,7 @@ fn main() -> ! { let mut busy = false; if crcres.is_ok() { packet.reverse(); - busy = rtx.write(&packet).await.is_err(); + busy = rtx.lock().await.write(&packet).await.is_err(); } output.clear(); @@ -64,12 +114,12 @@ fn main() -> ! { if busy { output.push_str("didn't reply -- channel was busy\n").ok(); - stx.write(output.as_bytes()); + stx.lock().await.write(output.as_bytes()); } - stx.write(output.as_bytes()); + stx.lock().await.write(output.as_bytes()); } }; - executor::run!(task) + executor::run!(t1, t2) } diff --git a/boards/dongle/puzzle.hex b/boards/dongle/puzzle.hex old mode 100755 new mode 100644 index b463352..4cdae4a --- a/boards/dongle/puzzle.hex +++ b/boards/dongle/puzzle.hex @@ -1,21 +1,21 @@ -:10100000F0BE03207D270000634800006348000015 -:1010100063480000634800006348000000000000CF -:101020000000000000000000000000006348000015 -:1010300063480000000000006348000063480000AF -:10104000252800003528000063480000592A0000C8 -:1010500063480000634800006348000063480000E4 -:10106000634800006348000063480000892A0000CC -:1010700063480000634800006348000063480000C4 -:1010800063480000634800006348000063480000B4 -:1010900063480000634800006348000063480000A4 -:1010A0006348000063480000634800006348000094 -:1010B00063480000634800000000000000000000DA -:1010C0006348000063480000634800006348000074 -:1010D000634800006348000063480000652B00007F -:1010E00063480000634800006348000000000000FF -:1010F000000000006348000000000000634800009A -:10110000111900000400000004000000D7190000BD -:1011100013190000B1190000525B5D4D446657770A +:10100000B0BE0320CD2C00001F4E00001F4E00007C +:101010001F4E00001F4E00001F4E00000000000089 +:101020000000000000000000000000001F4E000053 +:101030001F4E0000000000001F4E00001F4E000069 +:10104000752D0000852D00001F4E0000A92F000007 +:101050001F4E00001F4E00001F4E00001F4E0000DC +:101060001F4E00001F4E00001F4E0000D92F000031 +:101070001F4E00001F4E00001F4E00001F4E0000BC +:101080001F4E00001F4E00001F4E00001F4E0000AC +:101090001F4E00001F4E00001F4E00001F4E00009C +:1010A0001F4E00001F4E00001F4E00001F4E00008C +:1010B0001F4E00001F4E0000000000000000000056 +:1010C0001F4E00001F4E00001F4E00001F4E00006C +:1010D0001F4E00001F4E00001F4E0000B5300000E4 +:1010E0001F4E00001F4E00001F4E000000000000B9 +:1010F000000000001F4E0000000000001F4E000016 +:10110000791900000400000004000000791A0000B2 +:10111000B5190000531A0000525B5D4D44665777C5 :101120007E636A21313A3B6473622E347156424ABF :101130005C3C7B2225292A4C494758362327375EB9 :101140004041515F6972793E7C28657D596F356EEB @@ -31,8 +31,8 @@ :1011E000277D445F627D432651265F624326653733 :1011F00044266544434B58447A2B264F26285844AE :101200005B3527496235446E277D7E6A4B275F2C0C -:1012100064657669636569643D00000070130000D1 -:10122000000000007013000000000000000000003B +:1012100064657669636569643D000000D813000069 +:1012200000000000D81300000000000000000000D3 :101230002000000008000000020000000000000084 :101240000000000008000000030000000100000092 :101250002000000008000000020000000000000064 @@ -40,916 +40,1012 @@ :101270006E6E656C3D205478506F7765723D2B38EB :1012800064426D206170703D70757A7A6C652E686D :1012900065780A006C120000090000007512000059 -:1012A0001E000000636F7272656374696E636F7213 -:1012B000726563747265636569766564202062791E -:1012C00074650000B412000009000000BD120000A7 -:1012D00005000000734572724F6B20284352433D56 -:1012E00028290000DA12000006000000E0120000C9 -:1012F00001000000E11200000100000000000000F9 -:1013000020000000000000000200000000000000BB -:1013100002000000000000000300000001000000C7 -:10132000200000000C00000002000000000000008F -:101330000000000006000000030000002C204C51BB -:10134000493D00003C13000006000000290A6469C2 -:10135000646E2774207265706C79202D2D2063686F -:10136000616E6E656C2077617320627573790A0017 -:101370003030303130323033303430353036303751 -:101380003038303931303131313231333134313537 -:10139000313631373138313932303231323232331D -:1013A0003234323532363237323832393330333103 -:1013B00033323333333433353336333733383339E9 -:1013C00034303431343234333434343534363437E1 -:1013D00034383439353035313532353335343535C7 -:1013E00035363537353835393630363136323633AD -:1013F0003634363536363637363836393730373193 -:101400003732373337343735373637373738373978 -:101410003830383138323833383438353836383770 -:101420003838383939303931393239333934393556 -:10143000393639373938393930780B01003235329D -:10144000343233323232313230313931383137316E -:1014500036313531343133313231313236000000FA -:10146000F0B503AF2DE9E00F8B688A460969D0E932 -:101470000069012B02D1012903D077E0012940F056 -:10148000D480B9F1000F53D0DAF8141006EB090E2E -:10149000019300224B1C3146344602960D4615F945 -:1014A000010BB0F1FF3FC6B229DC754505D0487885 -:1014B0008D1C00F03F0C294602E04FF0000C7146F5 -:1014C00006F01F0BDF2E07D9714508D011F8010B6C -:1014D00000F03F080D4605E04CEA8B160FE04FF098 -:1014E0000008714648EA8C1CF02E06D371450FD0D7 -:1014F00011F8010B00F03F060CE04CEA0B362946D0 -:10150000013B17D0121B8E450A440C46C6D10BE096 -:10151000002629464FF4E01000EA8B4040EA8C1088 -:101520000644B6F5881FEBD14A46DDE901361AE0DC -:10153000002218E0019BB6F5881F02D14A46029EA0 -:1015400011E0029E3AB14A4505D04A4505D2B0564F -:1015500010F1400F01DB304601E00020002200289E -:101560000CBF4A460646012B0CD19146B9F1000F3B -:101570000BD0A9F1010009F0030C032807D20020C9 -:10158000324625E0DAE9060154E000203BE0ACEB0E -:1015900009030020B64632461478557804F0C0049A -:1015A0009678D178802C05F0C00408BF0130802CDB -:1015B00006F0C00408BF0130802C01F0C00108BF54 -:1015C0000130802908BF013004320433E4D176466B -:1015D000BCF1000F17D0117801F0C001802908BFBD -:1015E0000130BCF1010F0ED0517801F0C00180290B -:1015F00008BF0130BCF1020F05D0917801F0C001A5 -:10160000802908BF0130DAF80CE0A9EB0001714530 -:101610000BD2B9F1000F15D0A9F1010109F0030CAB -:10162000032911D2002133462FE0DAF81C104A4674 -:10163000DAF81800CB68314603B0BDE8000FBDE80A -:10164000F040184700213BE0ACEB09040021B04614 -:1016500033461D785E789A7805F0C005D878802DDD -:1016600006F0C00508BF0131802D02F0C00208BF9E -:101670000131802A00F0C00008BF0131802808BF76 -:10168000013104330434E4D14646BCF1000F17D0D5 -:10169000187800F0C000802808BF0131BCF1010FAC -:1016A0000ED0587800F0C000802808BF0131BCF18E -:1016B000020F05D0987800F0C000802808BF0131E3 -:1016C0009AF82000C21E18BF0246A1EB090000EBE9 -:1016D0000E0100200C46DFE802F00802050200249B -:1016E000084602E0480801314C08451C013D08D07D -:1016F000DAE90602DAF80410126990470028F5D0FA -:1017000013E0DAE906014A46CB683146DAF804B05C -:10171000984750B9DAE906650134013C09D02A69D5 -:101720003046594690470028F7D00120BDE80E0FFB -:10173000F0BD0020FAE7D4D4F0B503AF2DE9000FD7 -:101740008DB0D1E9023BD1E900A6D1E9045C0321C7 -:101750008DF830102021059100216B4A04910B92E5 -:1017600003AA0A920891039006910293C3B1B3456C -:1017700088BFB346BBF1000F2DD0DAF80410026821 -:101780005318802B00F2B280DAF80030A1B3024483 -:1017900013F8014B01391471026801320260F5E758 -:1017A000B44588BFB446BCF1000F14D0DAF8041079 -:1017B00002685318802B00F29980DAF80030E34673 -:1017C000002978D0024413F8014B013914710268E2 -:1017D00001320260F4E74FF0000846450AD90AEBEF -:1017E000C8005AF838104268DDE90A03DB689847F8 -:1017F00000287BD100207AE00298544601964FF0F1 -:10180000010800F110094FF0000A6646029800EB4B -:101810008A0148680590087F8DF830008868049038 -:10182000D1E9052062B1022A0CD0B04268D205EBA2 -:10183000C002364B52689A4204D155F83000006815 -:10184000012200E00022CDE90620C968D9F8000095 -:1018500061B102290CD0B04252D205EBC0012B4A33 -:101860004968914204D155F830000068012100E038 -:101870000021CDE9081059F8100CB04240D255F8BB -:10188000301005EBC0004268084604A9904768BBC9 -:10189000D84530D204EB0A00D0E90212DDE90A0390 -:1018A000DB6898470AF1080A09F1200908F10108E4 -:1018B0000028ABD01AE00DF110093446002605EBE4 -:1018C000C60155F836004A684946904770B906F196 -:1018D0000108D84512D20AEBC600D0E90212DDE9B0 -:1018E0000A03DB68984700284646E8D001200DB07F -:1018F000BDE8000FF0BDA246019E6EE726466CE7EC -:10190000314600F0DAFCFEDE00110000AD220000DE -:101910007047E0B502AF0068802909D202687F2ACB -:1019200018D80244117101680131016000203DE0C6 -:101930000022B1F5006F01924FF002020CD28B0928 -:1019400062F39F118DF80510062161F35F138DF886 -:10195000043028E0012029E00B46B1F5803F62F316 -:101960009F130ED28DF806308B0962F39F13090B7B -:101970000E228DF8053062F31F118DF8041003223A -:1019800011E08DF80730F02343EA91438DF80430DD -:101990008B09090B62F39F1362F39F1104228DF8E8 -:1019A00006308DF8051001A900F02AF802B080BDBC -:1019B000F0B503AF4DF8048D86B00068EC4691E8B1 -:1019C00074416346614683E87441FFF7B5FE06B093 -:1019D0005DF8048BF0BD006800F012B804C8C9B20D -:1019E00052003AB110F8023B023A8B42F9D1411E43 -:1019F000023801E00020002100B9002108467047AC -:101A0000D0B502AF03689C18802C01D90120D0BD4D -:101A100042B1034411F8014B013A1C7103680133D0 -:101A20000360F5E70020D0BD80B56F46017839B17D -:101A3000032902D14178012904D100F039FCFEDEEE -:101A400000214170064901220978C9B2002908BF66 -:101A5000032202704270B1FA81F0400980BD00BFDC -:101A600094F1032080B56F46ADF50A7DD248402140 -:101A7000DFF89CA701600AF105000121D0E84F2F93 -:101A8000002A40F0A683C0E8421F002AF6D10AF1DE -:101A900004000121D0E84F2F002A40F0A783C0E8BE -:101AA000421F002AF6D1C5494B20DFF874C7DFF882 -:101AB00074E7C1F8FC002AA901F10408002009908C -:101AC0002A905F2820D02A9D41461CF800401EF82D -:101AD000006001306A003AB111F8023B023AB342A9 -:101AE000F9D14A1E023901E00021002209B1147027 -:101AF000E7E77F2DE5D808EB450108F815604C7045 -:101B00002A9901312A91DCE70DF12408DFF8181732 -:101B100009224046FFF774FFA9487FAE0DF504790E -:101B2000022541687C9100687F90DFF80407DFF8A8 -:101B3000FC168791CDE985167CA984916BA97095D7 -:101B4000CDE96E59CDE96C50DFF8E8066B90404660 -:101B5000FFF7F2FD994C4FF0010BDFF8DC16D4F8DB -:101B6000FC000024CDE96F9B6E9400F07F00CDE96E -:101B70006C546BADCDE98461DFF8C0166B912946DA -:101B80008DF8FC014046FFF7D7FD2AA88DF8C84123 -:101B9000CDF8BC916E9005F12E00029005F12D005C -:101BA000019005F12800039005F13800059005F13A -:101BB0003000CDE96C89B0460026069005F114008E -:101BC000079005F12000CDF8AC9104909DF8C80174 -:101BD000DFE810F00600D502D50222003B00090024 -:101BE0008DF8CC611DE09DF8E001DFE810F0780190 -:101BF000C902C8027E01070051004B009DF8E801B0 -:101C0000810700F07B81032840F0BA829DF8E9014A -:101C1000012840F07581B3E29DF8CC01012800F065 -:101C2000AF82DAF8100060B101685AE8042F8242EE -:101C300004D14AE80412002AF3D117E0BFF32F8F32 -:101C4000EFE703208DF8CC0194E29DF8D801DFE89E -:101C500010F03900970296023D00060013009DF82F -:101C6000E40181071FD0032844D089E20221C1701A -:101C700070908DF8CCB11AE09DF8EC0180B103288A -:101C800073D07DE29DF8E401012840F0C68177E23F -:101C90009DF8EC0148B1032840F072827A9D43E13F -:101CA000DDE977015FE0779823E0799D3BE16C986F -:101CB00050F8041B02F004FD07988DF8D861749069 -:101CC0006D987390ADF8DC61749875900698FFF785 -:101CD000ABFE18B103208DF8D80193E04FF480706B -:101CE000ADF8D9010120000650D003988DF8E461C9 -:101CF000779078909AF80600C0B218B1022800F0E8 -:101D000079804FE202F070FC5FFA80F8B8F1000FC2 -:101D100061D0B8F1010F6DD0B8F1020F40F03382FD -:101D200078982649006800680330C1F8F800254813 -:101D30008AF807B0C0F800B002F00CFDCDE98401CC -:101D40004846022102F018F8DFF8F814484602F07D -:101D50002DF801990DF5FE7802988DF8E4B18DF813 -:101D6000EC6178917790CDE979019AF8070000F05D -:101D70000300DFE810F0170204001400290005201A -:101D80008DF8D80103208DF8EC013BE00B48016889 -:101D90008DF8D8B19DF8D90180F0010034E08AF8BF -:101DA0000760799806700748D0F8F8037A9900F030 -:101DB000010008700AE000BF0C0500500C14004040 -:101DC00060000010081000408AF807608DF8ECB140 -:101DD0009DF8DA0187E702F001FC02F0BBFCCDE9D7 -:101DE00084014846022101F0C7FFDFF85C14484631 -:101DF00001F0DCFF04200DF5FE788DF8D8010320FA -:101E00008DF8E4010021022082B2022A01D10420CF -:101E1000B0E1ADF8C401ADF8C611709BDA78023AB2 -:101E20008DF8CC21D2B2032A08D3DA78023A53FAD9 -:101E300082F212798DF8CE21012200E00022000406 -:101E40008DF8CD2101D00020FDE0D878032807D0FF -:101E5000DFF8FC13022813D13A203822D87034E07E -:101E600019796E988DF81012FFF7B8FD002808BF99 -:101E70004846709903220078CA707099087128E06A -:101E800002381C1DC5B25DB126466E9816F8011BBE -:101E9000FFF7A4FD08B100782070013D3446F2E759 -:101EA000709D0026E8783A2808D1DFF8A413281D91 -:101EB000884206D0382202F044FD10B1E6490922DA -:101EC00001E00722E349901CE8707098043002F0AA -:101ED0006FFD07988DF8E06175906F987490DDE95B -:101EE00074017690ADF8E46177910598FFF79CFD59 -:101EF00008B103203BE17A96769879908DF8E961F4 -:101F00009AF808000121C0B2022808BF0321022864 -:101F10008DF8E8118DF8E91101D1042027E1069D23 -:101F20008DF8EC6179957A95002100208DF810B23A -:101F3000012906D019F8012001310BFA02F21043F1 -:101F4000F6E708B1C54908609AF8060000F00300FA -:101F5000012800F00381B0BB02208AF8060002F0DD -:101F6000F9FBCDE984014846022101F005FFBC4997 -:101F7000484601F01BFF2868A84900680330C1F8F3 -:101F8000F800AF4801464FF48040C1F80003D1F893 -:101F9000F80140F48010C1F8F8019AF80700C0B2C7 -:101FA000012810D103208AF80700A548C0F804B022 -:101FB00002F0D0FBCDE984014846022101F0DCFEAD -:101FC0004846A849C8E002F00FFBC5B2002D00F05A -:101FD000B780012D00F0C280022D40F0E6809848C5 -:101FE0004FF000618AF808B0C0F8FC12C0F824B0C5 -:101FF00002F0B0FBCDE984014846022101F0BCFEAD -:102000009949484601F0D2FE48468DF810B202F0D8 -:10201000CDF98DF8ECB18DF8E4619AF80800012251 -:10202000C1B2012908BF032201298DF8E42101D1A1 -:1020300006209CE06FF0030151FA80F0B0FA80F0C6 -:102040008DF8E0B1400908906C98016801394A1C8C -:1020500001D00160FAE70224002189944546CDE9C8 -:1020600087187CAECDE9854180498491DFF80082F4 -:102070008049CDF808828196809104997F919DF8DE -:10208000CC116C984A1E18BF012201297B497D9210 -:10209000794A08BF11467C914946FFF74DFBBDF8D0 -:1020A000C401774A01284FF0020008BF03207D9049 -:1020B000BDF8C611734808BF104627F82E1C724998 -:1020C0008994CDE987458691032185916F49849153 -:1020D0006F497C908291A7F12E016C98CDE98081A7 -:1020E00049467F96A846634C0026FFF725FB9DF8DE -:1020F000CD0190B19DF8CE0187A981E8400907F88C -:10210000190C6C986349CDE985B68491A7F1190142 -:1021100080947F914946FFF70FFB6C9802225E493D -:10212000FFF76EFC089800283FF4C1AD6C9821229F -:102130005A49FFF765FC6C9802C802F0C1FAB6E58F -:1021400002F04CFA02F006FBCDE984014846022178 -:1021500001F012FE5249484601F028FE48468DF82B -:1021600010B202F023F903208DF8EC0105208DF860 -:10217000E00105208DF8C80102F07BFB26E5FEDEBC -:1021800000F096F8FEDE02F0E5FA84ACCDE98401B9 -:102190000021204601F0F0FD2C49204601F006FE0A -:1021A000404610E001F0CEFFFEDE02F0D3FA84AC30 -:1021B000CDE984010021204601F0DEFD39492046A9 -:1021C00001F0F4FD2846214602F02AFA02F064FAF2 -:1021D000FEDEBFF32F8F02F0BDFA2AACCDE92A0153 -:1021E0000021204601F0C8FD0A490BE0BFF32F8F04 -:1021F00002F0B0FA2AACCDE92A010021204601F014 -:10220000BBFD0549204601F0D1FD02F02BFBFEDEAF -:1022100098F1032061000000560000000C140040FB -:10222000771100001811000010120000AB2600000A -:102230002C1200001C120000114500009412000036 -:10224000081000405800000057000000590000002E -:10225000D8110000A4120000AB12000080E100E0E1 -:102260005A0000005B0000005D000000C412000086 -:10227000611400002F26000070130000D41200002B -:10228000D5120000D8120000FC120000E412000079 -:1022900081250000441300004C1300004E13000081 -:1022A0005C0000005E00000002F0DDBA0068FEE79E -:1022B00080B56F4600F006F8FEDE80B56F4600F090 -:1022C00001F8FEDE80B56F4602F03EFAFEDED4D4A1 -:1022D000F0B503AF2DE9000F83B0D0F800E09246CF -:1022E000BD680A461EF001014FF02B0B01EB0506FD -:1022F00008BF4FF4881B1C4680465FEA4E7103D42A -:102300004FF0000A002254E0BAF1000F0BD0AAF1FE -:1023100001010AF0030C032907D200211346BCF186 -:10232000000F2BD142E0002140E08DE87000ACEBC3 -:102330000A060021914613461A785D78987802F0D3 -:10234000C002DC78802A05F0C00208BF0131802A73 -:1023500000F0C00008BF0131802804F0C00008BFB1 -:102360000131802808BF013104330436E4D1DDE9AE -:1023700000454A46029EBCF1000F17D0187800F0C5 -:10238000C000802808BF0131BCF1010F0ED0587881 -:1023900000F0C000802808BF0131BCF1020F05D059 -:1023A000987800F0C000802808BF013106EB0A00D1 -:1023B000461AD8F80800012818D1D8F80C90B14571 -:1023C00014D95FEA0E702AD40292A9EB060198F89C -:1023D000202000208946032A08BF0122DFE802F0FE -:1023E000490245024FF00009084642E0404659467E -:1023F000534600F09EF828B10126304603B0BDE8F0 -:10240000000FF0BDD8F81C102A46D8F81800CB6889 -:10241000214603B0BDE8000FBDE8F0401847D8F8EA -:10242000040059460296012601903020C8F80400A5 -:10243000534698F820000090404688F8206000F04D -:1024400078F80028D9D198F82020AA460298032AC3 -:1024500008BF0122A9EB000100200D46DFE802F0D1 -:102460003A0237020025084634E0480801314FEAB5 -:102470005109461C013E08D0D8E90602D8F80410DC -:10248000126990470028F5D0B6E7029A40465946AF -:102490005346D8F8046000F04CF80028ACD1D8E9D5 -:1024A00006012A46CB68214698470028A4D109F1A5 -:1024B0000105D8E9069834460126013D2FD0D8F809 -:1024C00010204846214690470028F6D095E7480856 -:1024D00001314D08461C013E08D0D8E90602D8F863 -:1024E0000410126990470028F5D085E7D8E9060264 -:1024F0002146D3685246D8F80440984700287FF414 -:102500007BAFD8E9069A01350126013D09D0DAF8FA -:1025100010204846214690470028F6D06DE7002657 -:102520006BE70098002688F820000198C8F804009E -:1025300063E7F0B503AF4DF804BD1C4615460646EB -:10254000B1F5881F08D0D6E906021269904718B184 -:1025500001205DF804BBF0BD4DB1D6E9060122466D -:10256000CB6829465DF804BBBDE8F0401847002061 -:102570005DF804BBF0BD80B56F46FFF7A3FEFEDE3D -:10258000F0B503AF4DF804BDA2B0068802AD0C460D -:10259000802106F00F0000F157020A2838BF00F131 -:1025A0003002284602F057FA0020B0EB161F28D060 -:1025B000310901F00F0101F157020A2938BF01F179 -:1025C0003002B0EB162F8DF886201DD0300A00F0B7 -:1025D0000F0000F157010A2838BF00F13001002038 -:1025E000B0EB163F8DF8851011D0300B00F157017C -:1025F0000A2838BF00F130018DF884107C200421B6 -:1026000007E07F20012104E07E20022101E07D20FF -:102610000321009141F238412B18C0F200012046FD -:102620000222FFF755FE22B05DF804BBF0BD80B575 -:102630006F468CB00A460178642915D348F21F50C2 -:10264000C5F2EB10A1FB00036FF063005B0903FB15 -:10265000001041F27031C0F20001C0B231F8100038 -:10266000ADF82D00242003E00A2906D226200B46CF -:1026700003F1300102AB195408E041F27030C0F2AE -:10268000000030F81100ADF82D002520C0F1270121 -:10269000009102A90B1841F270311046C0F20001FE -:1026A0000022FFF715FE0CB080BDB0B502AFA2B09E -:1026B00000680DF1080E8C468123002200F00F0106 -:1026C00001F157040A2938BF01F130040EEB030170 -:1026D000B2EB101F01F8024C30D0040904F00F04D3 -:1026E00004F157050A2C38BF04F13005B2EB102F66 -:1026F00001F8035C27D0040A04F00F0404F1570525 -:102700000A2C38BF04F13005B2EB103F01F8045C2D -:102710001ED0040B043B04F00F0404F157050A2CEF -:1027200038BF04F1300501F8055C010CB2EB104F25 -:102730000846C3D1581E81280ED31CE0981E013BC9 -:10274000812809D317E0D81E023B812804D312E068 -:10275000181F033B81280ED2C3F18101009141F281 -:1027600038410EEB0003C0F2000160460222FFF781 -:10277000AFFD22B0B0BDFFF7FEFEFEDE80B56F46B6 -:102780001B481D4A016841F0807101601948002111 -:102790004160016811400131016018480121C0F811 -:1027A0001015016016488160016016481649091A23 -:1027B00021F0030102F09EF914481549091A21F08D -:1027C0000302144902F0F6F802F04FF812484FF4F1 -:1027D0008A51124C124D01600161AC4202D201CC0F -:1027E0008047FAE7FFF760FDFFF73CF9FEDE00BF28 -:1027F000FCED00E0001000E0FEFFFF0008000040DC -:1028000000B0004000F00320ACF10320ACF1032045 -:102810002CF203200C4B000008050050FC4A00007D -:102820000C4B000080B56F4601F0A0FCBDE8804075 -:1028300001F0CABCF0B503AF2DE9C00B01F08AFF6F -:102840006C46CDE900012046042101F095FA794952 -:10285000204601F0ABFA784A906B000605D00020C4 -:102860009063D2F80402400406D41068000607D032 -:102870004FF0040810461BE091464FF002081AE0A2 -:10288000104650F8481F090602D04FF000080FE02C -:10289000104650F80C1F090602D04FF0010807E05F -:1028A000104650F86C1F090600F0C0804FF0030876 -:1028B00091460021016001F04DFF6E460446CDE9CE -:1028C00000010D463046032101F056FA5B493046BF -:1028D00001F06CFA28880C22411C6FF31F3022543F -:1028E00030462980564901F061FADFE808F00372AA -:1028F0002B482100DDE9000100250A88531C6FF3F5 -:102900001F3285540B8001F025FF6C46CDE9000194 -:102910002046022101F030FA4E49204601F046FAE5 -:102920004FF000600421C9F808024648857161E053 -:10293000DDE9000104240A88531C6FF31F3284541C -:102940000B8070E0DDE9000102240A883D4D531C34 -:102950006FF31F3284540B80A879000666D101F012 -:10296000F9FE6C46CDE900012046022101F004FA8F -:102970003649204601F01AFA0120A87153E0DDE93A -:102980000012032013885C1C6FF31F33C8542D49B9 -:1029900014808A79D2B2022A48D14FF48042C9F811 -:1029A0000422D9F8002122F48012C9F800214FF046 -:1029B0000062C9F8082200228A71087201F0CAFE7A -:1029C0006C46CDE900012046022101F0D5F91E49EF -:1029D00026E0DDE9000101240A88531C6FF31F3251 -:1029E000845418480B808179C9B2012904D0022986 -:1029F0001CD10221017216E0C179C9B2012915D199 -:102A00000021C9F86C1081710221C17101F0A2FE90 -:102A10006C46CDE900012046022101F0ADF90C49D8 -:102A2000204601F0C3F9BDE80C0BF0BD01F08AFBB4 -:102A3000FEDE00BF48000000001100404900000019 -:102A40004E00000098F103204D0000004B000000F4 -:102A50004C0000004A000000DCB504AF01F07AFE33 -:102A60006C46CDE900012046042101F085F90449B6 -:102A7000204601F09BF9034800210160DCBD00BF46 -:102A80004700000018310040DCB504AF2F48016852 -:102A9000C90741D1C16BC90722D000212F4CC163A6 -:102AA0002D490A88931C013204EA03332C4C23601D -:102AB0000A8091B20C22B1FBF2F202EB4202A1EBCE -:102AC000820103290CD8DFE801F00207020721493F -:102AD0004FF480724A6003E01E494FF480720A602E -:102AE000016CC9071FBF002101644FF40031C0F819 -:102AF0000412416CC9071FBF002141644FF48021BB -:102B0000C0F80412816CC9071FBF002181644FF413 -:102B10000021C0F80412DCBD01F01CFE6C46CDE9BA -:102B200000012046002101F027F90949204601F063 -:102B30003DF908484FF480510160402101604FF495 -:102B40008071416001F08EFEFEDE00BF04B10040E6 -:102B5000460000000805005000F0032000F0FF00D0 -:102B600040B50040F0B503AF2DE9000F93B001F080 -:102B7000F1FD0AACCDE90A010421204601F0FCF880 -:102B8000DFF82C1E204601F011F9D84AD2F8540182 -:102B9000000604D002F5AA704FF007093DE0104688 -:102BA00050F8FC1F090602D04FF0080935E0D2F8B2 -:102BB0002401000604D002F592704FF003092CE0C6 -:102BC000D2F85801000604D002F5AC704FF00409A9 -:102BD00023E0D2F85C01000604D002F5AE704FF09D -:102BE00005091AE0D2F82C01000604D002F596700F -:102BF0004FF0000911E0D2F83801000604D002F5C8 -:102C00009C704FF0010908E0D2F81001000600F0B6 -:102C10006B8402F588704FF0020900219246016032 -:102C200001F098FD0AAE0446CDE90A010D46304692 -:102C3000032101F0A1F8DFF87C1D304601F0B6F861 -:102C400028880C22411C6FF31F3022543046298003 -:102C5000DFF8641D01F0AAF80820DFE809F0050993 -:102C60000B070F110D13140000200CE003200AE0E5 -:102C7000012008E0022006E0062004E0042002E033 -:102C8000052000E00720DDE90A121388DFF82C8D0B -:102C90005C1C6FF31F33C854148098F80200811E27 -:102CA000CAB2032A28BF0121C9B2012911D00229C1 -:102CB00014D1DFE819F009000E01AE00BA00470098 -:102CC0001F01A401F500AB01DFF8F40C00214181E4 -:102CD000E0E1B9F1070F08BF002802D001F084F845 -:102CE000FEDE01F097F80005F8D5012088F8020013 -:102CF00001F030FD0AACCDE90A010221204601F0C5 -:102D00003BF8DFF8C01C204601F050F898F80000AE -:102D1000002800F0BF8198F80100002800F0BA8177 -:102D200098F80200002800F0B581042088F802001D -:102D30000020A8F8000013B0BDE8000FBDE8F04087 -:102D400001F0B8B8DFF8780C40890028C6D1684E89 -:102D500001220025D6F800905FFA89F0C109B2EB94 -:102D6000D01F0C4618BF0224B5EBD01F08BF0C467D -:102D7000D6F804A0B368022CF068D9B241EA002169 -:102D80000991D6F810E07169B269F6695FFA8EFCB4 -:102D90004CEA012BD2B242EA06220892CDF81C90EE -:102DA00040F04B818DF83050CDE90A555546DDE9AC -:102DB000089601F0CFFC0DACCDE90D0100212046B5 -:102DC00000F0DAFFDFF8001C204600F0EFFF079864 -:102DD000214601F001F92846214601F0FDF8DFF80F -:102DE000EC5B30462146A84758462146A84748464E -:102DF0002146A8473D490120086501F0ABFC0AAC1B -:102E0000CDE90A010221204600F0B6FFDFF8701E6E -:102E10003DE101F09FFC0AACCDE90A010221204608 -:102E200000F0AAFFDFF85C1E31E1DFF86C6E7089FC -:102E3000012800F0218102287FF450AFD14601F033 -:102E400089FC0AACCDE90A010221204600F094FF7A -:102E5000DFF8341E204600F0A9FFB089002800F0FA -:102E60001D81234DD5F880014030C5F88001B4891B -:102E7000412CC0F0168101F06DFC0AACCDE90A01CD -:102E80000221204600F078FFDFF8001E204600F007 -:102E90008DFF4020214601F09FF8B08940381AE1AB -:102EA00000F0B8FFC10500F1D480800540F1E5864F -:102EB00001F050FC0AACCDE90A010221204600F0E5 -:102EC0005BFFDFF8E81D204600F070FF0848002196 -:102ED000CFE001F03FFC0AACCDE90A010221204617 -:102EE00000F04AFFDFF8A81DD1E000BF04700240E7 -:102EF00080740240DAF86854CAF8685415F0040681 -:102F000008D0DFF8940D0078C0B202287FF4E6AE56 -:102F100000F0E8FFA8072AD501F01CFC0AACCDE9B7 -:102F20000A010221204600F027FFDFF8841D204619 -:102F300000F03CFF01F00EFC0AACCDE90A010221D1 -:102F4000204600F019FFDFF86C1D204600F02EFF30 -:102F5000DFF8440D01210170DFF8400D8188C08841 -:102F600089B280B288421EBFD348802101606EB111 -:102F700001F0F0FB0AACCDE90A010221204600F085 -:102F8000FBFEDFF8341D204600F010FF680318D563 -:102F9000CA48866A804601F0DDFB0AACCDE90A0129 -:102FA0000221204600F0E8FEDFF8101D204600F068 -:102FB000FDFE06F07F00214601F00EF80020C8F863 -:102FC000280028030DD501F0C5FB0AACCDE90A01A4 -:102FD0000221204600F0D0FEDFF8E41C204600F07D -:102FE000E5FE280756D501F0B5FB0AACCDE90A018C -:102FF0000221204600F0C0FEDFF8C81C47E013B0F5 -:10300000BDE8000FBDE8F04000F06CBF01F0A2FB8E -:103010000AACCDE90A010221204600F0ADFEDFF83E -:10302000801C204600F0C2FEDFF86C0C41780229BB -:1030300080F02386002141702CE0C9F34112002A60 -:1030400051D0022A4CD0012A7FF4ACAE4FF48072EA -:103050004AE001F07FFB0AACCDE90A0102212046DB -:1030600000F08AFEDFF83C1C204600F09FFE9348EB -:103070000121C0F8AC100DE001F06CFB0AACCDE909 -:103080000A010221204600F077FEDFF8E81C204606 -:1030900000F08CFE13B0BDE8000FF0BD0020708181 -:1030A000F8E701F057FB0DF12808CDE90A010221EC -:1030B000404600F061FEDFF8B81C404600F076FEA6 -:1030C0002046414600F088FF00F0EAFF04F07F0050 -:1030D000C5F884010020B0810120C9F80000D9E7BB -:1030E0004FF4007200E0002209F00F06032E3FF6B5 -:1030F00059AE04F00104049306940023DFE806F0BF -:103100000A0205084FF4803304E04FF4003301E075 -:103110004FF4403342EA0304C4F30122260A1C0C94 -:10312000012A059337D00396002A069E7FF43AAE13 -:103130005FFA8AF255460C2ACDF808B000F25382A5 -:10314000DFE812F00D0035015102190151020601AC -:10315000BE00E70052016401AB019801A100002EFE -:1031600000F041820998000402BF089880B202284A -:1031700040F03982022C00F01182012C00F01B82F9 -:10318000002C40F030820298000440F02C824FF076 -:10319000000E04204EE106995FFA8AF0049A554623 -:1031A00022283AD0DDF82090212821D0202808BFFD -:1031B000002948D0059A002406F00300ADF84040ED -:1031C0000F94CDE900B940EA1220099E2A4641EA4F -:1031D000002111A8334601F0D7FA9DF844000228D7 -:1031E00040F022828DF830400320CDE90A4429E2E4 -:1031F0000029DFD0012CDDD10998000404BF1FFA9B -:1032000089F00728D6D11FFA8BF0B0F5807F28BF50 -:103210004FF0000CCED2022027E0DDF820900029EC -:10322000C8D1012C08BF5FEA0940C3D1099880B218 -:1032300003289CBF1FFA8BF0FF28BBD862F3082C31 -:10324000C2F3400011E0012CB4D10998000404BF7E -:103250001FFA89F00728ADD11FFA8BF0B0F5807FF7 -:1032600028BF4FF0000CA5D203208DF82A000F983C -:10327000ADF828C0CDF82B00BDF84000ADF82F0008 -:103280000120099EDEE1002E00F0AD81022C40F00D -:10329000AA810998000402BF089880B2022840F071 -:1032A000A281029801F0A7FAC2B2022A00F09B8123 -:1032B00000F0010E0A20BDE004E200E0807402404C -:1032C000002E00F09081002C40F08D8101F0A8FAD2 -:1032D000C1B20C2900F087814FF0FF3151FA80F222 -:1032E000062A00F2808104210220DFE812F00700A4 -:1032F0005201A3007C017C016E0178010498000654 -:1033000004BF02985FEA004040F06D81012100F0A7 -:10331000A4BC56EA040140F0668101F081FAC0B213 -:103320000C2800F06081032800F02981022800F0B9 -:103330002881069E0128554640F0558104980006D4 -:1033400004BF02985FEA004040F04D8101211EE178 -:10335000002E40F04881099880B27F2800F2438116 -:10336000002C40F04081089802990843000440F086 -:103370003A8105205CE0002E40F035810898000479 -:1033800040F03181099880B2002800F0DD800228E9 -:1033900000F0BF80012808BF002C40F02481029873 -:1033A000000440F020814FF0000E082042E0002E83 -:1033B00040F01981032C00F016810898000440F0B9 -:1033C0001281099880B2002800F0CD80012808BF42 -:1033D000002C40F008810298000440F004814FF076 -:1033E000020E0020002125E0002E00F0FC8008984D -:1033F00080B2012808BF002C40F0F580099802999E -:103400000843000440F0EF80012013E0002E40F05C -:10341000EA80099880B2FF2800F2E580002C40F095 -:10342000E280089802990843000440F0DC800620FE -:10343000DDF810E0049AC9B2120642EA01415FFACF -:103440008EF241EA02210844CDF8290000200299B9 -:103450008DF828000898C1EA0040CDF82D009DF8AD -:103460002A00BDF82810BDF82F80DDF82B4041EA76 -:10347000004632E1002E40F0B680012C40F0B380CF -:10348000089A120401BF0002090208435FEA0040E3 -:1034900040F0A98009200499CCE7002E00F0A38019 -:1034A000029884F00103002180B2B0F5807F4FF0D4 -:1034B000000038BF0120099A92B21A43089B9BB2C0 -:1034C00083F001031A43B2FA82F25209104008BF96 -:1034D0008646002800F08780002203200492002204 -:1034E000029200220892A5E7DFF8AC070078C0B28C -:1034F00001287FF4CFADDFF8A4078188C08889B2A6 -:1035000080B288423FF4C6AD92464FF00609FFF7FD -:1035100087BB44EA0E00000665D16FF0020050FA46 -:1035200081F24FF0020E0820032AFFF483AF069EBB -:10353000CAB2012A3FF47EAF5546022A53D14FF05A -:10354000020E0820022175E7022C4CD1029801F0EE -:1035500052F90491C1B2022945D000F001014FF0A7 -:10356000010E082066E7022C3DD1029801F043F9D4 -:10357000C2B2022A37D000F0010E00205AE7022121 -:1035800005E0069E5FEA0B4055462CD1002107203E -:1035900064E30298000426D100215EE3029801F062 -:1035A0002AF90491C1B202291DD000F001014FF0A7 -:1035B000010E04203EE7029880B2B0F5807F12D25F -:1035C000714604204FF0020E34E70498000604BF51 -:1035D00002985FEA004006D1022002212AE7029801 -:1035E000000400F0398303982A460599DDF808B0F5 -:1035F00000F00300CDF800B040EA1120DDF8209083 -:10360000CDF8049046EA0021099E11A8334601F046 -:10361000BBF89DF84400022806D100208DF8300048 -:10362000CDE90A0003200DE01198CDF83500BDF872 -:103630004800ADF839000D980A90DDF83700CDF854 -:103640002B00022003283FF4B4AB9DF82A10BDF8EC -:103650002820DDF82B4042EA0146E0B3DFF8385677 -:10366000012827D06878022858D104F47F00C6F3D7 -:103670000745B0F5003F69D106F47F40B0F5807F83 -:1036800040F0A68101F066F80AAECDE90A010221F8 -:10369000304600F071FBDFF83C16304600F086FB48 -:1036A0002846314600F098FC2046314600F097FC51 -:1036B000FFF7A0BB687802283CD1300652D001F059 -:1036C00049F80AACCDE90A010021204600F054FB7C -:1036D000DFF80816ADE2BDF82F8026F07F404FEAF4 -:1036E000142A4FEA1049C0F30720DFE810F00B005E -:1036F000E2008B00CA007300F8001E01D6004B01E7 -:103700007F00560101F026F80AACCDE90A0100213C -:10371000204600F031FBDFF854168AE201F01AF877 -:103720000AACCDE90A010021204600F025FBDFF8B4 -:1037300098157EE201F00EF80AACCDE90A010021ED -:10374000204600F019FBDFF8901572E201F002F854 -:103750000AACCDE90A010021204600F00DFBDFF89C -:103760006C1566E26FF0010050FAA6F0C1B20229B2 -:1037700028BF0220C6F30744C0B2002800F07781BA -:10378000012800F0418100F0E5FF0AADCDE90A0112 -:103790000221284600F0F0FADFF84415284600F030 -:1037A00005FB04F00100294600F016FCC6F30020DA -:1037B000294600F011FC00F0CDFF0AACCDE90A016A -:1037C0000221204600F0D8FADFF81815204600F054 -:1037D000EDFA12E100F0BEFF0AACCDE90A010021CA -:1037E000204600F0C9FADFF8501522E200F0B2FFDF -:1037F0000AACCDE90A010021204600F0BDFADFF84D -:10380000F81416E200F0A6FF0AADCDE90A01022184 -:10381000284600F0B1FADFF82815284600F0C6FA6D -:103820004046294600F0D8FBE0B2042800F2188296 -:10383000DFE810F00500B501C9011602AA0100F089 -:1038400089FF0AACCDE90A010221204600F094FA72 -:10385000DFF80015204600F0A9FA5046214600F096 -:10386000BBFB5FEA0A6000F0E98100F073FF0AAC7D -:10387000CDE90A010021204600F07EFADFF8D814D5 -:10388000D7E100F067FF0AACCDE90A01002120462C -:1038900000F072FADFF8A414CBE100F05BFF0AAC91 -:1038A000CDE90A010021204600F066FADFF8501445 -:1038B000BFE100F04FFF0AACCDE90A01022120462A -:1038C00000F05AFADFF89C14204600F06FFA01204D -:1038D000214600F081FBDFF890040121B5E100F002 -:1038E00039FF0AACCDE90A010221204600F044FA72 -:1038F000DFF83014204600F059FA4846214600F01F -:103900006BFBE5494878002800F01F81012800F092 -:10391000BF8000F01FFF0AACCDE90A01002120465C -:1039200000F02AFADFF8001483E100F013FF0AAC7C -:10393000CDE90A010221204600F01EFADFF8C41387 -:10394000204600F033FA4846214600F045FBD248B5 -:103950004078002800F00D81012800F0B180CE48A9 -:10396000B9F1000F00F03A81C078484545D000F029 -:10397000F1FE0AACCDE90A010021204600F0FCF975 -:10398000E14956E100F0E6FE0AACCDE90A0100216A -:10399000204600F0F1F9D9494BE100F0DBFE0AAC1A -:1039A000CDE90A010021204600F0E6F9D14940E1C5 -:1039B00000000000010000004500000022F203208A -:1039C00098F103200300000007000000DF3F000023 -:1039D00000F0C0FE0AAECDE90A010221304600F037 -:1039E000CBF9BB49304600F0E1F92846314600F0FA -:1039F000F3FA2046314600F0EFFA13B0BDE8000FAD -:103A0000BDE8F04000F046BB00F0A4FE0AACCDE9F2 -:103A10000A010221204600F0AFF9B349204600F028 -:103A2000C5F9688900287FF459A901266E8100F044 -:103A300091FE0AACCDE90A010221204600F09CF972 -:103A4000AA49204600F0B2F9974908F10300C1F8ED -:103A500080020720C1F884028E480146D0F8FC019C -:103A600040F00200C1F8FC018E64FFF713BB00F0C8 -:103A700071FE0AACCDE90A010221204600F07CF972 -:103A80009B49204600F092F908F103000721DCE091 -:103A9000B9F1000F00F0B580887848453FF4FAAAE4 -:103AA000012081F80290487000F054FE0AACCDE984 -:103AB0000A010221204600F05FF99C49FFF7E7BAAE -:103AC000B9F1000F99D0B9F1010F40F0A880724808 -:103AD0000546867800F03EFE0AACCDE90A010221D7 -:103AE0004FF00209204600F047F98949204600F0CE -:103AF0005DF96D494FF001080F2085F80380AE7025 -:103B000085F801900E46C1F890000920C1F8940094 -:103B10000020C86200F01EFE0AACCDE90A010221B5 -:103B2000204600F029F97B49204600F03FF90A20A1 -:103B300021460A2500F050FA7748C6F89401554806 -:103B4000C6F89851C0F8048057E7B9F1000F3FF468 -:103B5000A1AA012081F80290487000F0FBFD0AAC98 -:103B6000CDE90A010221204600F006F97149FFF76C -:103B70008EBA00F0EFFD0AACCDE90A010021204623 -:103B800000F0FAF8664954E000F0E4FD0AACCDE933 -:103B90000A010021204600F0EFF86A4949E000F0F0 -:103BA000D9FD0AACCDE90A010221204600F0E4F873 -:103BB0006649204600F0FAF8B8F1120F28BF4FF01E -:103BC0001208634840E000F0C5FD0AACCDE90A01E7 -:103BD0000121204600F0D0F85B492AE006468578AE -:103BE00000F0B8FD0AACCDE90A010221204600F040 -:103BF000C3F84649204600F0D9F80120B57070702E -:103C0000FBE60020487000F0A5FD0AACCDE90A01F2 -:103C10000221204600F0B0F84549FFF738BA00F01D -:103C200099FD0AACCDE90A010021204600F0A4F874 -:103C30003A49204600F0BAF8FFF7DCB84748B8F137 -:103C40004B0F28BF4FF04B08414613B0BDE8000FA3 -:103C5000BDE8F04000F0C6B903210220FFF7EABB3F -:103C600000F078FD0AACCDE90A010021204600F001 -:103C700083F83B49204600F099F800F097F9FEDE02 -:103C80002E000000390000002F000000300000006E -:103C90003A0000000470024098F10320ACF10320C8 -:103CA00006000000040000008074024005000000CF -:103CB0003300000034000000350000003600000032 -:103CC00037000000380000002A0000002B00000030 -:103CD0002D0000002C00000023000000290000003F -:103CE000240000002500000027000000280000003C -:103CF0002600000008000000220000002100000053 -:103D00002000000015000000180000001B0000004B -:103D1000190000001A00000014F203201700000030 -:103D20001600000010000000110000001400000048 -:103D300013000000120000001F0000001E00000021 -:103D4000090000000F0000000C0000000B00000044 -:103D5000B4F103200D0000000E000000C6F10320A6 -:103D60000A0000001D00000020F203201C000000DB -:103D70003100000032000000F0B503AF4DF804BD83 -:103D8000094A1268D0E90034258892096E1C6FF345 -:103D90001F3559552680D0E9003118465DF804BB1F -:103DA000BDE8F04000F09AB9041000E0F0B503AFB0 -:103DB0004DF804BD8AB27F2A0AD3D0E9003441F01D -:103DC000800125886E1C6FF31F355955D109268057 -:103DD000D0E9002003885C1C6FF31F33D1540480AA -:103DE0005DF804BBF0BDD4D4E0B502AF00F092F9A9 -:103DF00000F0B0FC6C46CDE9000120460021FFF741 -:103E0000BBFF03492046FFF7D1FF00F02BFDFEDE8C -:103E100043000000F0B503AF2DE9F00B2248D0F8C5 -:103E20000080C0F8008000F095FC01AC0546CDE9AB -:103E300001010E4620460321FFF79EFF1B49204645 -:103E4000FFF7B4FF30880A22411C6FF31F302A5459 -:103E5000204631801649FFF7A9FF029E40F6FF7108 -:103E600027F81A8C358828466FF31F3088420DD109 -:103E7000019CA7F11A09012204F6FF71484600F0DF -:103E80007BFC09F101002146012204E00199022294 -:103E90000144A7F11A0000F06FFCA81C30804046D6 -:103EA00004B0BDE8000BF0BD007402404200000009 -:103EB00062000000DCB504AF08480121016000F099 -:103EC00049FC6C46CDE9000120460221FFF754FF72 -:103ED00003492046FFF76AFFDCBD00BF04750240BE -:103EE00041000000F0B503AF2DE9C007DFF8A4A042 -:103EF000BAF80450BAF80600401B01041CD084B282 -:103F00003F2C28BF3F2454FA85F081B2E8B2B1F5C6 -:103F1000807F13D9DAF80090C0F58076DFF87880DA -:103F200009EB00013246404600F042FDA11B08EBC0 -:103F300006008AB2494606E0012625E0DAF80010BC -:103F400022460144144800F033FD2819AAF8040061 -:103F500020064FF0010617D000F0FCFB6D46CDE9BE -:103F6000000128460221FFF707FF0C492846FFF70A -:103F70001DFF2046294600F02FF809480649016038 -:103F8000446008480660022607480670BDE80C0732 -:103F9000F0BD00BFACF1032000C0032040000000D2 -:103FA000287602400C70024098F10320E0B502AF81 -:103FB00000F0B0F800F0CEFB6C46CDE900012046E1 -:103FC0000021FFF7D9FE03492046FFF7EFFE00F07E -:103FD00049FCFEDE3D000000C0B200F069B880B2CE -:103FE00000F066B8F0B503AF4DF8048D82B0234EF3 -:103FF0008046708990BB234C88B20D4640280AD970 -:10400000206820F004002060A5F14000B08102206B -:104010004025708104E000F043F80220C6F80A0051 -:1040200000F098FB6E46CDE9000130460221FFF713 -:10403000A3FE15493046FFF7B9FE28463146FFF783 -:10404000CBFF124905F07F0048601148C1F800809D -:104050000121215002B05DF8048BF0BD00F07AFB25 -:104060006C46CDE9000120460021FFF785FE04499A -:104070002046FFF79BFE00F0F5FBFEDE98F10320E3 -:104080003B000000007202403C000000007602404D -:1040900004FEFFFF0148012101607047507002409B -:1040A0000248016841F0040101607047007202405B -:1040B000F0B503AF4DF804BD0246D1E900031C88FA -:1040C0000626651C6FF31F3406551D80D1E90001DB -:1040D0005DF804BBBDE8F04000F000B8F0B503AFF8 -:1040E0004DF804BD0C880023661C42F080056FF378 -:1040F0001F34B3EBD21F08BF02F07F05B3EBD21F12 -:1041000005554FEAD21534462A460E80ECD15DF8AB -:1041100004BBF0BDDCB504AF08480021016000F02D -:1041200019FB6C46CDE9000120460221FFF724FE71 -:1041300003492046FFF73AFEDCBD00BF047502408C -:104140003F000000E0B502AF00F004FB6C46CDE993 -:10415000000120460021FFF70FFE03492046FFF72C -:1041600025FE00F07FFBFEDE44000000DCB504AF5E -:1041700000F0F0FA6C46CDE9000120460421FFF77B -:10418000FBFD0D492046FFF711FE0C4801680906AA -:1041900011D00021016000F0DDFA6C46CDE900018C -:1041A00020460221FFF7E8FD05492046FFF7FEFD06 -:1041B000044801210170DCBD5300000000010040F3 -:1041C0005400000094F10320F0B503AF2DE9C00BBB -:1041D00000F0C0FA6C46CDE9000120460421FFF74B -:1041E000CBFD5D492046FFF7E1FD5C484FF000083C -:1041F0000168090602D04FF000090FE0014651F8AE -:10420000042F120603D04FF00109084606E050F8CB -:10421000081F090600F095804FF00209C0F80080E1 -:1042200000F098FA6E460446CDE900010D4630468E -:104230000321FFF7A1FD4A493046FFF7B7FD288863 -:104240000C22411C6FF31F3022543046298045490F -:10425000FFF7ACFDDDE900010A88531C6FF31F3244 -:1042600000F802900B80404DA878811ECAB2032A44 -:1042700028BF0121C9B271B1012967D12A78002A6A -:10428000114618BF01217ABB98F001022CD10121FF -:104290002970002144E0B8F1000F4FD1B9F1000FAF -:1042A00057D1334849F2753103220160C0F8142117 -:1042B000016001212F48016000F04CFA6C46CDE905 -:1042C000000120460221FFF757FD2B492046FFF74A -:1042D0006DFD2A4800210078A5F80110C0B2002821 -:1042E00018BF0120287029E0687890BB18EA010007 -:1042F00024D1B9F1020F2CD10120687000F02AFA04 -:104300006C46CDE9000120460221FFF735FD174933 -:104310002046FFF74BFD2978A878B1FA81F14909C9 -:1043200060B159B9687848B10420A870002028808D -:10433000BDE80C0BBDE8F040FFF7BCBDBDE80C0BC1 -:10434000F0BD4FF003094FF001088CE7FFF72EFE98 -:10435000FEDEFFF749FDFEDE4F0000001C010040BD -:10436000020000005200000022F203205100000071 -:1043700000EC0640007502405000000094F103205C -:1043800007484FF4803101604FF48051C0F83C126F -:104390004FF4807103480160034800F007B800BF84 -:1043A00004B300400C0500503A140000D0B502AF31 -:1043B000002201230021012A05D0845C013203FA86 -:1043C00004F42143F7E709B101480160D0BD00BF03 -:1043D00000E100E0B0B502AF154D0024B4F5C67F92 -:1043E00004D0281900F036F88434F7E711480F217B -:1043F00001234160082101600F4981608121C16072 -:104400000E490A6863F302020A6040F202214FF487 -:10441000822281620A49C162002101630949425036 -:1044200009490A4A42500A48BDE8B040FFF7BEBFFA -:1044300040C103200C150040080000066C16004027 -:1044400021100100F4FCFFFFF8FDFFFF0940040804 -:104450003B14000009490A69026051E8043F934295 -:1044600007D141E80402002A1A4608BF00F0FFB94C -:10447000F2E7BFF32F8F1A46EEE700BF98F1032053 -:10448000BCB504AF4FF080400125056000F062F933 -:104490006C46CDE9000120460221FFF76DFC05497D -:1044A0002046FFF783FC044805600448BDE8BC4093 -:1044B000FFF77CBF55000000040300403C140000DF -:1044C000B0B502AF0C4D0024B4F5C67F04D0281956 -:1044D000FFF7C0FF8434F7E70848012101604FF47B -:1044E000607101600648074901600748FFF75EFFF9 -:1044F000064880210160B0BD04F0032004030040A1 -:10450000047302402194C0013C14000004E100E067 -:10451000007800F07F02052A1ED00A281ED00F283E -:104520001ED014281ED019281ED01E281ED02328C5 -:104530001ED028281ED02D281ED032281ED0372865 -:104540001ED03C281ED041281ED046281ED04B2805 -:104550000CBF134A114A1AE01F4A18E01D4A16E020 -:104560001B4A14E0194A12E0174A10E0154A0EE0FF -:10457000134A0CE0114A0AE00F4A08E00D4A06E02F -:104580000B4A04E0094A02E0074A00E0054AD1E983 -:104590000601CB6811460222184700BF5B140000D9 -:1045A0003D1400003F1400004114000043140000BB -:1045B0004514000047140000491400004B1400008B -:1045C0004D1400004F14000051140000531400005B -:1045D000551400005714000059140000014801212F -:1045E0000160704704100040BCB504AF0A4804687D -:1045F00000F0B0F86D46CDE9000128460321FFF731 -:10460000BBFB06492846FFF7D1FB2046294600F0B0 -:1046100007F8204602B0B0BD501500406000000011 -:10462000F0B503AF4DF804BD0C460546D1E90001D5 -:104630000C260A88531C6FF31F32865420460B80C9 -:104640001449FFF7B3FB05F00F010820DFE801F084 -:10465000070D0F091521212121110B131600002030 -:104660000CE003200AE0062008E0012006E002201A -:1046700004E0052002E0072000E00420D4E9001255 -:1046800013885C1C6FF31F33C85414805DF804BB9F -:10469000F0BDFEDE5F000000E0B502AF00F05AF8AA -:1046A0006C46CDE9000120460021FFF765FB034978 -:1046B0002046FFF77BFB00F0D5F8FEDE3E00000051 -:1046C000E1B3F0B503AF2DE90007DFF8749082463F -:1046D0000C46B9F80650B9F80400401B00F580708C -:1046E000010424D080B2A04238BF044654FA85F0B9 -:1046F000E9B280B2B0F5807F0FD9D9F80080C1F55A -:10470000807608EB01005146324600F051F9A01BBB -:104710000AEB060182B2404604E0D9F800002246C6 -:104720000844514600F044F92819A9F80600054844 -:1047300080210160BDE80007BDE8F040704700BF80 -:10474000ACF1032004E200E080B56F4600F08AF887 -:10475000FEDED4D4064905480968C9B200290549D6 -:1047600018BF00F5805018BF0231704700D00320F9 -:1047700004ED00E090F103202AB110F8013B013A6A -:1047800001F8013BF8E77047F0B503AF4DF804BD01 -:10479000D6B201F00104C1F30745D7E90212062E93 -:1047A00011D00A2E20D1012D08BF002C1CD11204DB -:1047B0001AD18AB2FF2A17D80171002183700170C3 -:1047C000190A417014E0012D0ED16CB18CB2FF2C8E -:1047D0000AD803F47F44B4F5085F05D101710121C3 -:1047E00042804370017003E000218180022101605A -:1047F0005DF804BBF0BD024680B2FF2801D900215C -:1048000007E0C2F30310002128B1082801D10120DC -:1048100002E002207047002002F00F017047D4D45C -:104820004FF0FF3151FA80F10C200A2918D8DFE847 -:1048300001F006080A0C0E101214171716000120BA -:1048400070470220704703207047042070470520FE -:1048500070470620704707207047082070470B20DC -:104860007047FFBEAABE62B6704772B6704740BFBF -:10487000704720BF7047F0B503AF4DF8048DA2B369 -:10488000531E02F0030C032B14D20022BCF1000FC4 -:104890002BD08B5CBCF1010F835426D0531CBCF190 -:1048A000020FCE5CC65420D00232895C81545DF880 -:1048B000048BF0BDACEB020E01F10108441C6FF05B -:1048C000030208EB0206A5180432F378EB70337983 -:1048D0002B7173796B71B379AB710EEB02030433F7 -:1048E000EFD10432BCF1000FD3D15DF8048BF0BDE1 -:1048F000D0B502AF12B3531E02F0030C032B01D24A -:1049000000220FE0ACEB020E421C6FF00303D41840 -:104910000433A17161712171E1700EEB0304043461 -:10492000F5D11A1DBCF1000F1ABF8154BCF1010F63 -:10493000D0BD0244BCF1020F517000D1D0BD9170C6 -:10494000D0BDF0B503AF2DE9000B4AB3A2F1010EC3 -:10495000C2F1000C0023CC5CC55CA54224D19E456D -:104960001ED001EB030800EB030998F8014099F809 -:104970000150A54218D10CEB0306B41C10D098F8D6 -:10498000024099F80250A5420ED1F41C08D098F8C4 -:10499000034099F80350A54206D104339A42DAD174 -:1049A0000020BDE8000BF0BD281BBDE8000BF0BDEA -:1049B000FFF761BF042A38BFFFF7FABFB0B502AFF7 -:1049C000A2F1040C012303EB9C0313F003030ED0AC -:1049D0008E4604465EF8045B012B44F8045B1FD14D -:1049E000634620467146BCF10C0F04D212E0134618 -:1049F000BCF10C0F0ED30D68103B0560032B4D6806 -:104A000045608D688560CD6801F11001C56000F1D9 -:104A10001000F0D802F00302BDE8B040FFF7C8BFB5 -:104A20004D68022B456007D1A2F108030831083018 -:104A3000BCF10C0FDFD2EDE78B680C318360A2F183 -:104A40000C030C30BCF10C0FD5D2E3E70B4611463A -:104A50001A46FFF74DBF1346D2B2042938BFFFF7FD -:104A6000F5BFD0B502AFA1F1040E42EA0363012401 -:104A700043EA024304EB9E0443EA022314F00304D6 -:104A800010D08446012C4CF8043B10D1744660468B -:104A9000BEF10C0F1ED201F00301BDE8D04060460C -:104AA000FFF7D4BF0C46BEF10C0F13D2F3E7022C74 -:104AB000436007D10830A1F108048446BEF10C0F11 -:104AC00008D2E8E783600C30A1F10C048446BEF103 -:104AD0000C0FE0D3C0E90033103CC0E902331030C2 -:104AE000032CF7D8844601F00301BDE8D0406046AE -:0A4AF000FFF7ACBF0022FFF7AEBFD6 -:104AFC00C144000081440000D54300008143000004 -:104B0C0040C003200000000012010002EF0201402F -:104B1C002020100300010000000109024B000201DB -:104B2C000080FA080B0002020201000904000001D7 -:104B3C0002020100052400100105240103010424D4 -:104B4C000202052406000107058103400020090428 -:104B5C000100020A000000070502024000000705E0 -:104B6C008202400000000000A120000000000200B2 -:104B7C000300000001000000028025000000000876 -:040000030000277D55 +:1012A0001E000000696E76616C6964204849442024 +:1012B0007061636B65740A726571756573746564DA +:1012C000206368616E6E656C206973206F75742091 +:1012D0006F662072616E6765202831312D323629A4 +:1012E0000A6E6F77206C697374656E696E67206F24 +:1012F0006E206368616E6E656C200A00E11200006A +:1013000019000000FA12000001000000636F727201 +:10131000656374696E636F72726563747265636529 +:101320006976656420206279746500001C130000F2 +:1013300009000000251300000500000073457272CB +:101340004F6B20284352433D2829000042130000E0 +:1013500006000000481300000100000049130000CF +:10136000010000000000000020000000000000005C +:101370000200000000000000020000000000000069 +:101380000300000001000000200000000C0000002D +:101390000200000000000000000000000600000045 +:1013A000030000002C204C51493D0000A413000014 +:1013B00006000000290A6469646E27742072657053 +:1013C0006C79202D2D206368616E6E656C207761CD +:1013D0007320627573790A00303030313032303327 +:1013E00030343035303630373038303931303131D3 +:1013F00031323133313431353136313731383139B9 +:1014000032303231323232333234323532363237B0 +:101410003238323933303331333233333334333596 +:10142000333633373338333934303431343234337C +:101430003434343534363437343834393530353162 +:101440003532353335343535353635373538353948 +:101450003630363136323633363436353636363740 +:101460003638363937303731373237333734373526 +:10147000373637373738373938303831383238330C +:1014800038343835383638373838383939303931F2 +:1014900039323933393439353936393739383939D8 +:1014A00030780B010032353234323332323231325D +:1014B00030313931383137313631353134313331FA +:0814C000323131323600000028 +:1014C800F0B503AF2DE9E00F8B688A460969D0E9CA +:1014D8000069012B02D1012903D077E0012940F0EE +:1014E800D480B9F1000F53D0DAF8141006EB090EC6 +:1014F800019300224B1C3146344602960D4615F9DD +:10150800010BB0F1FF3FC6B229DC754505D048781C +:101518008D1C00F03F0C294602E04FF0000C71468C +:1015280006F01F0BDF2E07D9714508D011F8010B03 +:1015380000F03F080D4605E04CEA8B160FE04FF02F +:101548000008714648EA8C1CF02E06D371450FD06E +:1015580011F8010B00F03F060CE04CEA0B36294667 +:10156800013B17D0121B8E450A440C46C6D10BE02E +:10157800002629464FF4E01000EA8B4040EA8C1020 +:101588000644B6F5881FEBD14A46DDE901361AE074 +:10159800002218E0019BB6F5881F02D14A46029E38 +:1015A80011E0029E3AB14A4505D04A4505D2B056E7 +:1015B80010F1400F01DB304601E000200022002836 +:1015C8000CBF4A460646012B0CD19146B9F1000FD3 +:1015D8000BD0A9F1010009F0030C032807D2002061 +:1015E800324625E0DAE9060154E000203BE0ACEBA6 +:1015F80009030020B64632461478557804F0C00432 +:101608009678D178802C05F0C00408BF0130802C72 +:1016180006F0C00408BF0130802C01F0C00108BFEB +:101628000130802908BF013004320433E4D1764602 +:10163800BCF1000F17D0117801F0C001802908BF54 +:101648000130BCF1010F0ED0517801F0C0018029A2 +:1016580008BF0130BCF1020F05D0917801F0C0013C +:10166800802908BF0130DAF80CE0A9EB00017145C8 +:101678000BD2B9F1000F15D0A9F1010109F0030C43 +:10168800032911D2002133462FE0DAF81C104A460C +:10169800DAF81800CB68314603B0BDE8000FBDE8A2 +:1016A800F040184700213BE0ACEB09040021B046AC +:1016B80033461D785E789A7805F0C005D878802D75 +:1016C80006F0C00508BF0131802D02F0C00208BF36 +:1016D8000131802A00F0C00008BF0131802808BF0E +:1016E800013104330434E4D14646BCF1000F17D06D +:1016F800187800F0C000802808BF0131BCF1010F44 +:101708000ED0587800F0C000802808BF0131BCF125 +:10171800020F05D0987800F0C000802808BF01317A +:101728009AF82000C21E18BF0246A1EB090000EB80 +:101738000E0100200C46DFE802F008020502002432 +:10174800084602E0480801314C08451C013D08D014 +:10175800DAE90602DAF80410126990470028F5D091 +:1017680013E0DAE906014A46CB683146DAF804B0F4 +:10177800984750B9DAE906650134013C09D02A696D +:101788003046594690470028F7D00120BDE80E0F93 +:10179800F0BD0020FAE7D4D4F0B503AF2DE9000F6F +:1017A8008DB0D1E9023BD1E900A6D1E9045C03215F +:1017B8008DF830102021059100216B4A04910B927D +:1017C80003AA0A920891039006910293C3B1B34504 +:1017D80088BFB346BBF1000F2DD0DAF804100268B9 +:1017E8005318802B00F2B280DAF80030A1B302441B +:1017F80013F8014B01391471026801320260F5E7F0 +:10180800B44588BFB446BCF1000F14D0DAF8041010 +:1018180002685318802B00F29980DAF80030E3460A +:10182800002978D0024413F8014B01391471026879 +:1018380001320260F4E74FF0000846450AD90AEB86 +:10184800C8005AF838104268DDE90A03DB6898478F +:1018580000287BD100207AE00298544601964FF088 +:10186800010800F110094FF0000A6646029800EBE3 +:101878008A0148680590087F8DF8300088680490D0 +:10188800D1E9052062B1022A0CD0B04268D205EB3A +:10189800C002364B52689A4204D155F830000068AD +:1018A800012200E00022CDE90620C968D9F800002D +:1018B80061B102290CD0B04252D205EBC0012B4ACB +:1018C8004968914204D155F830000068012100E0D0 +:1018D8000021CDE9081059F8100CB04240D255F853 +:1018E800301005EBC0004268084604A9904768BB61 +:1018F800D84530D204EB0A00D0E90212DDE90A0328 +:10190800DB6898470AF1080A09F1200908F101087B +:101918000028ABD01AE00DF110093446002605EB7B +:10192800C60155F836004A684946904770B906F12D +:101938000108D84512D20AEBC600D0E90212DDE947 +:101948000A03DB68984700284646E8D001200DB016 +:10195800BDE8000FF0BDA246019E6EE726466CE783 +:10196800314600F04EFFFEDE00110000FD270000AA +:1019780070470021017003F054BA006818B10021C3 +:10198800017003F04EBA70470068002818BF03F0D2 +:1019980059B870470068002818BF03F053B870475B +:1019A8000068002818BFFFF7E4BF7047E0B502AF32 +:1019B8000068802909D202687F2A18D80244117168 +:1019C80001680131016000203DE00022B1F5006F9F +:1019D80001924FF002020CD28B0962F39F118DF82D +:1019E8000510062161F35F138DF8043028E001200B +:1019F80029E00B46B1F5803F62F39F130ED28DF8B4 +:101A080006308B0962F39F13090B0E228DF80530FF +:101A180062F31F118DF80410032211E08DF80730CE +:101A2800F02343EA91438DF804308B09090B62F3E4 +:101A38009F1362F39F1104228DF806308DF805106C +:101A480001A900F02AF802B080BDF0B503AF4DF847 +:101A5800048D86B00068EC4691E87441634661469F +:101A680083E87441FFF798FE06B05DF8048BF0BD7B +:101A7800006800F012B804C8C9B252003AB110F8B0 +:101A8800023B023A8B42F9D1411E023801E00020A4 +:101A9800002100B9002108467047D0B502AF03689D +:101AA8009C18802C01D90120D0BD42B1034411F803 +:101AB800014B013A1C71036801330360F5E700200C +:101AC800D0BD016801394A1C08BF70470160F9E7B9 +:101AD800F0B503AF2DE9E00F0446007CDFE810F015 +:101AE800070009010B010D0015004A004300002002 +:101AF800A082D4E90001C4E9020104F1140000F055 +:101B08001FF978B102200321EFE0204610F8181FD2 +:101B1800061F8A070ED0032940F0EB80717901294E +:101B28000AD1E6E0A068264646F8140F00213046A0 +:101B380040F8041F0021717179490122497AC9B21C +:101B4800022908BF032202297271027002D1022001 +:101B58000421CAE00020A04604F10C0BC6F800B02E +:101B680008F81C0F14E0264616F8140F012840F058 +:101B78008C80BEE0A04618F81C0FA8F1080628B112 +:101B8800032840F0B680D4F818B003E0D6F800B0C7 +:101B9800C4F818B001AB0121002200208DF8041010 +:101BA800012A05D09D5C013201FA05F52843F7E7C3 +:101BB80008B15C490860DFF868A19AF8070000F0EE +:101BC8000300012800F08680B0BB02208AF80700D5 +:101BD80003F070F80DF10409CDE90101022148462E +:101BE80002F07CFB5049484602F092FBDBF800000B +:101BF8000068C11C4D48C0F8F8144FF48041C0F883 +:101C0800FC12D0F8F41141F48011C0F8F4119AF8DC +:101C18000810C9B201290FD103218AF8081001213F +:101C2800016003F047F801ADCDE901010221284622 +:101C380002F054FB3E494AE002F072FFC5B2D5B348 +:101C4800012D47D0022D57D138484FF001094FF0E8 +:101C580000618AF80990C0F8F812C0F8209003F0E3 +:101C680029F801ADCDE901010221284602F036FB31 +:101C78003049284602F04CFB01A88DF8049002F088 +:101C88002FFE002088F80090307025480122407A05 +:101C9800C1B2012908BF03220129327002D10220F2 +:101CA800062122E06FF0030151FA80F0B0FA80F0CB +:101CB8000121400919E002F02DFF02F0FBFF01AD00 +:101CC800CDE901010221284602F008FB1A492846FD +:101CD80002F01EFB01208DF8040001A802F000FEAE +:101CE8000320052188F8000002202174BDE80E0FAA +:101CF800F0BD00F081FDFEDE02F0DCFF01ACCDE9B5 +:101D080001010021204602F0E9FA0C49204602F0C0 +:101D1800FFFA2846214602F01FFF02F059FFFEDEB7 +:101D28009AF1032080E100E05B0000000C10004005 +:101D38005C0000005E0000005D0000005F00000025 +:101D480080B56F46017839B1032902D1417801295C +:101D580004D100F051FDFEDE002141700649012248 +:101D68000978C9B2002908BF032202704270B1FA8B +:101D780081F0400980BD00BF98F10320DCB504AFB5 +:101D880004460078012810D002F07AFF009020B1B4 +:101D980002210190C170012104E06846FFF7FAFDB5 +:101DA80000200321217002B0D0BD00F025FDFEDE29 +:101DB80080B56F46ADF54E7DAC484021DFF89C39C3 +:101DC8000160581D0121D0E84F2F002A40F0998466 +:101DD800C0E8421F002AF6D1002001218DF84B00EF +:101DE800981DD0E84F2F002A40F09884C0E8421F81 +:101DF800002AF6D1181D0121D0E84F2F002A40F003 +:101E08009A84C0E8421F002AF6D199494B20DFF88E +:101E180060C9DFF860E9C1F8FC0034A901F10408E1 +:101E28000020139034905F2820D0349E41461CF83F +:101E380000501EF80040013072003AB111F8023B20 +:101E4800023AA342F9D14A1E023901E000210022D8 +:101E580009B11570E7E77F2EE5D808EB460108F8C9 +:101E680016404D70349901313491DCE713ADDFF839 +:101E7800081909222846FFF710FE7E480DF5487B11 +:101E8800A7AE02244168C4910068C890DFF8F00842 +:101E9800DFF8E818AA91CDE9A81BC4A9A79176A9EB +:101EA8007B94CDE97946CDE97740DFF8D80876907C +:101EB8002846FFF771FC6E480DF5EC78DFF8C81876 +:101EC8004FF0010A4FF00009D0F8FC00CDE9A7B1A6 +:101ED80000F07F00DFF8B418CDE97A6ACDF8E49114 +:101EE800CDE97749769141468DF820032846FFF7DA +:101EF80053FC0DF2D7118DF8C6928DF878920DF13A +:101F08004B007890CDE976B1AB9134A9AA91A7A9F5 +:101F180081E8210806F14100059006F128000C909F +:101F280006F11C000B9006F13E00029006F13D0000 +:101F3800019006F13800089006F140000D9006F176 +:101F48001400099006F130000E9008F1100004907A +:101F580008F19800039008F19000109008F10C0027 +:101F6800DFF8F857079008F1A4000F9006F12B004E +:101F78000A9008F1A1008DF8D79106909DF8780293 +:101F88000DF54478DFE810F00B00A203A203390036 +:101F980047002B001D0033011F00120021008DF89F +:101FA8007C92CDF8E4918DF87A922BE09F9C207872 +:101FB800002849D05846CDF82093FFF7DEFC0920C9 +:101FC80045E19F98FBE09F9C38E19F9C2078A8B34F +:101FD8005846CDF82093FFF7D0FC0A2037E19DF84A +:101FE8008802DFE810F04F008B03730305003D0003 +:101FF8009DF88C02012849D180E39DF87C020128D4 +:1020080000F07C8302F03CFEC89080B18DF87C9291 +:102018008DF86C929A900F98FFF7B0FEC89008B1AF +:102028009C9029E05846FFF7AFFC04200FE1584682 +:10203800FFF7B0FC03208DF87C0208E184F800A0CB +:102048001321DFF85C0704E0DFF850072A2184F841 +:1020580000A002F0D1FD84F8009002F0E2FE0BE04F +:102068009DF88C0201282CD148E300BF0C050050D4 +:102078000C1400406000001010988DF88892A09011 +:1020880076989F908DF88C92A098A190A87AC0B26B +:10209800012818BF03208DF88C0260D1C348412461 +:1020A8000346D0F87804A19900F07F000A6804324A +:1020B800C3F80827BE4A1460C3F800A008718DF859 +:1020C8008C92A87AC0B202284BD18DF888A28DF8DC +:1020D8008CA202F0EFFD0546CDE9C8010E46584630 +:1020E800022102F0FBF8DFF8AC165846DDF86882EA +:1020F8009DF86C4202F00CF930880B22411C6FF3FA +:102108001F302A5422463180DDE9C8563146284618 +:1021180002F07EFA08F1040228463146234602F00E +:10212800DBFD9DF86C020DF54478012818BF4028A6 +:1021380021D19A980079A0F10B010F2900F2E380D0 +:102148000520DFF81856DFE801F0360825291F2D8D +:10215800312B3523331D212F1B270A202BE0032089 +:1021680005E003200DF544788DF88C0204208DF8E5 +:10217800880205206BE0789C9F94DFF8E05525E7FE +:102188004B2018E03C2016E0192014E0412012E012 +:10219800322010E00F200EE050200CE014200AE05E +:1021A800282008E01E2006E0462004E0232002E064 +:1021B800372000E02D208DF8790277989F900178DC +:1021C80031B15846CDF82093FFF7EAFB06203EE0F0 +:1021D800784A80F800A09D908DF87AA29DF879122F +:1021E800C2F8FC1003998DF88C92CDE99F010F98E5 +:1021F800FFF76EFCC0B2022801D1072027E08DF856 +:102208007A929D9880F8009002F00BFE079C204679 +:10221800FFF757FC0220CDE9CC8ACDE9CA99594687 +:10222800C990DFF87405C890DFF85C05C59006987A +:10223800C4902046FFF7B0FA789C9F942078002835 +:1022480048D05846CDF82093FFF797FB08208DF823 +:1022580078029DF8C602DFE810F00A003902390258 +:102268000C001500260022001301240020008DF820 +:10227800CC920E98FFF782FDC89030B3AC90A79C23 +:10228800B39400E0B39C2078002846D05846CDF897 +:102298002093FFF772FB04203AE0B39C8FE1B398D8 +:1022A800D4E0B39C76E19DF8D802DFE810F0460050 +:1022B80027020F024A00060020009DF8E402810769 +:1022C8001FD0032800F08D8118E25846FFF75CFB09 +:1022D80003201DE084F800A07999049802F08CFC92 +:1022E80084F8009002F09DFD8DF87A92C4E69DF87E +:1022F800EC0218B1032800F0A981FFE1DDE9B7017C +:10230800A2E1B7986CE1789C9F94DFF850544EE6B0 +:102318008DF8C60202F087FD30E684F800A0A89880 +:1023280002C802F069FC84F8009002F07AFD09986E +:102338008DF8D892B490A998B390ADF8DC92B4987F +:10234800B5900D98FFF7FCFC18B103208DF8D80262 +:1023580005E04FF48070ADF8D90201203AE1002180 +:10236800022082B2022A01D10520D1E7ADF8C002CD +:10237800ADF8C212AC99CA78023A8DF8C722D2B227 +:10238800032A08D3CA78023A51FA82F212798DF8F0 +:10239800C922012200E000220DF5447800048DF8DE +:1023A800C82209D000202C467CE000BF34700240CF +:1023B800407702400C140040C878032808D002284F +:1023C80016D13A203822C870AC98DFF8E41338E008 +:1023D8000979AA988DF82013FFF74DFB002808BF4C +:1023E8005846AC9903220078CA70AC9908712BE062 +:1023F80002380D1DC4B2DFF8B8135CB12E46AA9896 +:1024080016F8011BFFF737FB08B100782870013C6C +:102418003546F0E7AC9CD14DE0783A2808D1201D2C +:10242800884209D0DFF88813382202F064FD18B119 +:10243800DFF88413092201E00722DE49901CE070CE +:10244800AC98043002F08EFDAB98B390017831B1AE +:102458005846CDF82093FFF7A3FA062058E70999C4 +:102468000F2280F800A0AD90CDE9B301DDE9C001ED +:102478008DF8DC92CDE9B501BCA9059802F072FD92 +:102488000E98FFF725FB0546C0B2022802D10720A7 +:10249800B24D3DE7AD9880F8009002F0C2FCAF4C19 +:1024A80005F001001190A898FFF70BFB0226C3491D +:1024B800CD960DF5487BCDE9CB98CDE9C9690DF5E9 +:1024C8004279C891DFF8F8A2BE4D0A99CDF81CA34D +:1024D800CDF81893C595C4919DF8C712A8984A1EBF +:1024E80018BF01220129B949C392B74A08BF11464A +:1024F800C2915946FFF750F9BDF8C202ADF8C402BF +:10250800BDF8C002B24901284FF0020008BF0320FD +:10251800AF90B04808BF0846AF49CD96CDE9CB6823 +:102528004E46CA910321C9914FF00009AB49C891A1 +:10253800AB49C7910C99AE90A898CDE9C5A10B9964 +:10254800C4915946FFF728F99DF8C8024FF0010ACF +:1025580088B19DF8C9028DF80803A898A149CDF85B +:1025680034A3CDE9CB98CDE9C9A9C8915946CDE99D +:10257800C465FFF711F9A89802229B49FFF78DFA65 +:1025880011982546C8B1A89821229849FFF785FADD +:10259800A79CB394207830B15846CDF82093FFF724 +:1025A800ECF90820B4E684F800A0A89802C802F064 +:1025B80023FB84F8009002F034FCA79CB3942078A5 +:1025C80000283FF4AAAE5846CDF82093FFF7D5F976 +:1025D80009209DE6000647D008988DF8E492B79048 +:1025E800B890E879C0B210B1022868D083E002F050 +:1025F80097FA5FFA80F8B8F1000F52D0B8F1010FDE +:102608005DD0B8F1020F62D1B898584900680068E7 +:102618000330C1F8F8005E4885F808A0C0F800A0AB +:1026280002F048FBCDE9C8015846022101F056FEE8 +:102638005C49584601F06CFE019902988DF8E4A2B5 +:102648008DF8EC92B891B790CDE9B901287A00F0ED +:102658000300DFE800F05002121F05208DF8D802B1 +:1026680003208DF8EC027AE6404801688DF8D8A27C +:102678009DF8D90280F0010073E685F80890B998B2 +:1026880080F800904248D0F8F803BA9900F00100A9 +:10269800087001E085F808908DF8ECA29DF8DA0240 +:1026A80098E702F037FA02F005FBCDE9C801584671 +:1026B800022101F013FE3C49584601F029FE04208E +:1026C8008DF8D80203208DF8E40248E6FEDE02F019 +:1026D800F1FAC8ACCDE9C8010021204601F0FEFDA1 +:1026E8003249204601F014FE4046214602F034FAF1 +:1026F80002F06EFAFEDE01F0BFFFFEDE00F07CF8AD +:10270800FEDEBFF32F8F02F0D5FA34ACCDE93401E9 +:102718000021204601F0E2FD114918E0BFF32F8F98 +:1027280002F0C8FA34ACCDE934010021204601F0AA +:10273800D5FD0C490BE0BFF32F8F02F0BBFA34AC88 +:10274800CDE934010021204601F0C8FD06492046A4 +:1027580001F0DEFD02F060FBFEDE00BF9AF103200F +:102768006200000063000000570000000C140040E5 +:10277800771100001811000010120000FB2B000058 +:102788002C1200001C120000514A00009412000094 +:102798000810004000000000FC120000B712000002 +:1027A800A412000059000000580000005A00000060 +:1027B800D81100000C130000131300002C130000A4 +:1027C800C91400007F2B0000D81300003C13000040 +:1027D8003D13000040130000641300004C13000078 +:1027E800D12A0000AC130000B4130000B613000097 +:1027F80002F013BB0068FEE780B56F4600F006F8EC +:10280800FEDE80B56F4600F001F8FEDE80B56F464B +:1028180002F04AFAFEDED4D4F0B503AF2DE9000F7A +:1028280083B0D0F800E09246BD680A461EF0010168 +:102838004FF02B0B01EB050608BF4FF4881B1C4615 +:1028480080465FEA4E7103D44FF0000A002254E03C +:10285800BAF1000F0BD0AAF101010AF0030C032909 +:1028680007D200211346BCF1000F2BD142E0002112 +:1028780040E08DE87000ACEB0A0600219146134653 +:102888001A785D78987802F0C002DC78802A05F022 +:10289800C00208BF0131802A00F0C00008BF013122 +:1028A800802804F0C00008BF0131802808BF01312A +:1028B80004330436E4D1DDE900454A46029EBCF102 +:1028C800000F17D0187800F0C000802808BF013129 +:1028D800BCF1010F0ED0587800F0C000802808BF66 +:1028E8000131BCF1020F05D0987800F0C0008028B3 +:1028F80008BF013106EB0A00461AD8F8080001287B +:1029080018D1D8F80C90B14514D95FEA0E702AD4C2 +:102918000292A9EB060198F8202000208946032A94 +:1029280008BF0122DFE802F0490245024FF0000922 +:10293800084642E040465946534600F09EF828B102 +:102948000126304603B0BDE8000FF0BDD8F81C10D2 +:102958002A46D8F81800CB68214603B0BDE8000F16 +:10296800BDE8F0401847D8F80400594602960126F9 +:1029780001903020C8F80400534698F820000090D1 +:10298800404688F8206000F078F80028D9D198F8F7 +:102998002020AA460298032A08BF0122A9EB0001B9 +:1029A80000200D46DFE802F03A023702002508460B +:1029B80034E0480801314FEA5109461C013E08D06D +:1029C800D8E90602D8F80410126990470028F5D013 +:1029D800B6E7029A404659465346D8F8046000F0D4 +:1029E8004CF80028ACD1D8E906012A46CB68214624 +:1029F80098470028A4D109F10105D8E9069834467A +:102A08000126013D2FD0D8F810204846214690478E +:102A18000028F6D095E7480801314D08461C013ECC +:102A280008D0D8E90602D8F804101269904700289F +:102A3800F5D085E7D8E906022146D3685246D8F88A +:102A48000440984700287FF47BAFD8E9069A0135FF +:102A58000126013D09D0DAF8102048462146904762 +:102A68000028F6D06DE700266BE70098002688F866 +:102A780020000198C8F8040063E7F0B503AF4DF8EB +:102A880004BD1C4615460646B1F5881F08D0D6E990 +:102A980006021269904718B101205DF804BBF0BD29 +:102AA8004DB1D6E906012246CB6829465DF804BB3C +:102AB800BDE8F040184700205DF804BBF0BD80B5C4 +:102AC8006F46FFF7A3FEFEDEF0B503AF4DF804BD79 +:102AD800A2B0068802AD0C46802106F00F0000F176 +:102AE80057020A2838BF00F13002284602F08DFA52 +:102AF8000020B0EB161F28D0310901F00F0101F1B9 +:102B080057020A2938BF01F13002B0EB162F8DF8B1 +:102B180086201DD0300A00F00F0000F157010A2866 +:102B280038BF00F130010020B0EB163F8DF885105A +:102B380011D0300B00F157010A2838BF00F13001DD +:102B48008DF884107C20042107E07F20012104E017 +:102B58007E20022101E07D200321009141F2A04165 +:102B68002B18C0F2000120460222FFF755FE22B0C2 +:102B78005DF804BBF0BD80B56F468CB00A4601789D +:102B8800642915D348F21F50C5F2EB10A1FB0003CE +:102B98006FF063005B0903FB001041F2D831C0F20B +:102BA8000001C0B231F81000ADF82D00242003E078 +:102BB8000A2906D226200B4603F1300102AB19542C +:102BC80008E041F2D830C0F2000030F81100ADF84A +:102BD8002D002520C0F12701009102A90B1841F210 +:102BE800D8311046C0F200010022FFF715FE0CB0E4 +:102BF80080BDB0B502AFA2B000680DF1080E8C46DA +:102C08008123002200F00F0101F157040A2938BF7F +:102C180001F130040EEB0301B2EB101F01F8024C76 +:102C280030D0040904F00F0404F157050A2C38BF0A +:102C380004F13005B2EB102F01F8035C27D0040A29 +:102C480004F00F0404F157050A2C38BF04F13005CD +:102C5800B2EB103F01F8045C1ED0040B043B04F0F7 +:102C68000F0404F157050A2C38BF04F1300501F8A8 +:102C7800055C010CB2EB104F0846C3D1581E8128E1 +:102C88000ED31CE0981E013B812809D317E0D81EFB +:102C9800023B812804D312E0181F033B81280ED27F +:102CA800C3F18101009141F2A0410EEB0003C0F293 +:102CB800000160460222FFF7AFFD22B0B0BDFFF76A +:102CC800FEFEFEDE80B56F461B481D4A016841F0D6 +:102CD800807101601948002141600168114001318B +:102CE800016018480121C0F810150160164881607C +:102CF800016016481649091A21F0030102F0D4F9B7 +:102D080014481549091A21F00302144902F02CF954 +:102D180002F085F812484FF48A51124C124D0160A6 +:102D28000161AC4202D201CC8047FAE7FFF760FDAF +:102D3800FFF73EF8FEDE00BFFCED00E0001000E00B +:102D4800FEFFFF000800004000B0004000F0032034 +:102D5800ACF10320ACF103206CF20320C850000052 +:102D680008050050B8500000C850000080B56F46F4 +:102D780001F096FCBDE8804001F0C0BCF0B503AF9F +:102D88002DE9C00B01F096FF6C46CDE90001204605 +:102D9800042101F0A3FA7949204601F0B9FA784AEA +:102DA800906B000605D000209063D2F8040240041E +:102DB80006D41068000607D04FF0040810461BE040 +:102DC80091464FF002081AE0104650F8481F0906CD +:102DD80002D04FF000080FE0104650F80C1F09060B +:102DE80002D04FF0010807E0104650F86C1F0906A2 +:102DF80000F0C0804FF0030891460021016001F007 +:102E080059FF6E460446CDE900010D4630460321C0 +:102E180001F064FA5B49304601F07AFA28880C22FE +:102E2800411C6FF31F30225430462980564901F067 +:102E38006FFADFE808F003722B482100DDE9000192 +:102E480000250A88531C6FF31F3285540B8001F04C +:102E580031FF6C46CDE900012046022101F03EFA1F +:102E68004E49204601F054FA4FF000600421C9F899 +:102E780008024648C57161E0DDE9000104240A88BA +:102E8800531C6FF31F3284540B8070E0DDE900019E +:102E980002240A883D4D531C6FF31F3284540B8063 +:102EA800E879000666D101F005FF6C46CDE900011E +:102EB8002046022101F012FA3649204601F028FA8C +:102EC8000120E87153E0DDE90012032013885C1C3F +:102ED8006FF31F33C8542D491480CA79D2B2022A1D +:102EE80048D14FF48042C9F80422D9F8002122F4CD +:102EF8008012C9F800214FF00062C9F808220022A8 +:102F0800CA71487201F0D6FE6C46CDE90001204630 +:102F1800022101F0E3F91E4926E0DDE90001012460 +:102F28000A88531C6FF31F32845418480B80C179E8 +:102F3800C9B2012904D002291CD10221417216E02C +:102F4800017AC9B2012915D10021C9F86C10C171E3 +:102F58000221017201F0AEFE6C46CDE90001204667 +:102F6800022101F0BBF90C49204601F0D1F9BDE876 +:102F78000C0BF0BD01F080FBFEDE00BF4900000035 +:102F8800001100404A0000004F0000009AF10320A1 +:102F98004E0000004C0000004D0000004B000000F7 +:102FA800DCB504AF01F086FE6C46CDE90001204691 +:102FB800042101F093F90449204601F0A9F90348D6 +:102FC80000210160DCBD00BF48000000183100404E +:102FD800DCB504AF2F480168C90741D1C16BC907E7 +:102FE80022D000212F4CC1632D490A88931C01323D +:102FF80004EA03332C4C23600A8091B20C22B1FB03 +:10300800F2F202EB4202A1EB820103290CD8DFE8BD +:1030180001F00207020721494FF480724A6003E079 +:103028001E494FF480720A60016CC9071FBF002156 +:1030380001644FF40031C0F80412416CC9071FBF86 +:10304800002141644FF48021C0F80412816CC90743 +:103058001FBF002181644FF40021C0F80412DCBDB9 +:1030680001F028FE6C46CDE900012046002101F060 +:1030780035F90949204601F04BF908484FF48051C9 +:103088000160402101604FF48071416001F0C4FE8D +:10309800FEDE00BF04B100404700000008050050F4 +:1030A80000F0032000F0FF0040B50040F0B503AF8A +:1030B8002DE9000F93B001F0FDFD0AACCDE90A013E +:1030C8000421204601F00AF9DFF85017204601F0E4 +:1030D8001FF9DB4AD2F85401000604D002F5AA70A1 +:1030E8004FF007093DE0104650F8FC1F090602D0D2 +:1030F8004FF0080935E0D2F82401000604D002F5A3 +:1031080092704FF003092CE0D2F85801000604D061 +:1031180002F5AC704FF0040923E0D2F85C01000618 +:1031280004D002F5AE704FF005091AE0D2F82C0170 +:10313800000604D002F596704FF0000911E0D2F8AD +:103148003801000604D002F59C704FF0010908E030 +:10315800D2F81001000600F0778402F588704FF06D +:10316800020900219246016001F0A4FD0AAE04465E +:10317800CDE90A010D463046032101F0AFF8DFF82A +:10318800941D304601F0C4F828880C22411C6FF3C6 +:103198001F30225430462980DFF87C1D01F0B8F832 +:1031A8000820DFE809F005090B070F110D131400BB +:1031B80000200CE003200AE0012008E0022006E0DD +:1031C800062004E0042002E0052000E00720DDE9F5 +:1031D8000A121388DFF8448D5C1C6FF31F33C85440 +:1031E800148098F80200811ECAB2032A28BF012160 +:1031F800C9B2012911D0022914D1DFE819F0090058 +:103208000E01AE00BA0047002501AE01F500B50178 +:10321800DFF80C0D00218181EAE1B9F1070F08BF41 +:10322800002802D001F092F8FEDE01F0A5F80005B2 +:10323800F8D5012088F8020001F03CFD0AACCDE980 +:103248000A010221204601F049F8DFF8D81C20467F +:1032580001F05EF898F80000002800F0C98198F89D +:103268000100002800F0C48198F80200002800F04E +:10327800BF81042088F802000020A8F8000013B0DD +:10328800BDE8000FBDE8F04001F0AEB8DFF8900CE3 +:1032980080890028C6D16B4E01220025D6F80090FF +:1032A8005FFA89F0C109B2EBD01F0C4618BF02249F +:1032B800B5EBD01F08BF0C46D6F804A0B368022CA3 +:1032C800F068D9B241EA00210991D6F810E0716995 +:1032D800B269F6695FFA8EFC4CEA012BD2B242EA77 +:1032E80006220892CDF81C9040F055818DF8305098 +:1032F800CDE90A555546DDE9089601F0DBFC0DAC31 +:10330800CDE90D010021204600F0E8FFDFF8181C88 +:10331800204600F0FDFF0798214601F0F7F82846FF +:10332800214601F0F3F8DFF8045C30462146A8474F +:1033380058462146A84748462146A8474049012003 +:10334800086501F0B7FC0AACCDE90A010221204664 +:1033580000F0C4FFDFF8D81B47E101F0ABFC0AAC72 +:10336800CDE90A010221204600F0B8FFDFF8C41BAE +:103378003BE1DFF8AC6BB089012800F02B81022813 +:103388007FF450AFD14601F095FC0AACCDE90A01B3 +:103398000221204600F0A2FFDFF84C1E204600F074 +:1033A800B7FFF089002800F02781264DD5F8800165 +:1033B8004030C5F88001F489412CC0F0208101F02B +:1033C80079FC0AACCDE90A010221204600F086FF0B +:1033D800DFF8181E204600F09BFF4020214601F030 +:1033E80095F8F089403824E100F0C6FFC10500F1E6 +:1033F800DE80800540F1F58601F05CFC0AACCDE981 +:103408000A010221204600F069FFDFF8001E20466D +:1034180000F07EFF0B480021D9E001F04BFC0AAC1C +:10342800CDE90A0102210225204600F057FFDFF806 +:10343800C01D204600F06CFFDFF8BC0D8572D7E098 +:103448000470024080740240DAF86854CAF868547C +:1034580015F0040608D0DFF8A00D0078C0B20228E5 +:103468007FF4E0AE00F0D8FFA8072AD501F022FCCF +:103478000AACCDE90A010221204600F02FFFDFF84F +:10348800901D204600F044FF01F014FC0AACCDE981 +:103498000A010221204600F021FFDFF8781D2046AE +:1034A80000F036FFDFF8500D01210170DFF84C0DF8 +:1034B8008188C08889B280B288421EBFD5488021E1 +:1034C80001606EB101F0F6FB0AACCDE90A010221F8 +:1034D800204600F003FFDFF8401D204600F018FFEB +:1034E800680318D5CC48866A804601F0E3FB0AAC2D +:1034F800CDE90A010221204600F0F0FEDFF81C1D8C +:10350800204600F005FF06F07F00214600F0FEFF90 +:103518000020C8F82800280311D501F0CBFB0AAC1D +:10352800CDE90A010221204600F0D8FEDFF8F01CA0 +:10353800204600F0EDFEDFF8C00C0121817228075B +:1035480056D501F0B7FB0AACCDE90A0102212046A5 +:1035580000F0C4FEDFF8CC1C47E013B0BDE8000F54 +:10356800BDE8F04000F058BF01F0A4FB0AACCDE97B +:103578000A010221204600F0B1FEDFF8841C204633 +:1035880000F0C6FEDFF8700C4178022980F0298629 +:10359800002141702CE0C9F34112002A51D0022ABF +:1035A8004CD0012A7FF4A2AE4FF480724AE001F0B9 +:1035B80081FB0AACCDE90A010221204600F08EFE0B +:1035C800DFF8401C204600F0A3FE93480121C0F814 +:1035D800AC100DE001F06EFB0AACCDE90A01022146 +:1035E800204600F07BFEDFF8F01C204600F090FE3D +:1035F80013B0BDE8000FF0BD0020B081F8E701F07E +:1036080059FB0DF12808CDE90A010221404600F0D6 +:1036180065FEDFF8C01C404600F07AFE20464146B1 +:1036280000F074FF00F0D6FF04F07F00C5F88401B5 +:103638000020F0810120C9F80000D9E74FF400729A +:1036480000E0002209F00F06032E3FF64FAE04F00B +:103658000104049306940023DFE806F00A02050833 +:103668004FF4803304E04FF4003301E04FF440336B +:1036780042EA0304C4F30122260A1C0C012A05931A +:1036880037D00396002A069E7FF430AE5FFA8AF29E +:1036980055460C2ACDF808B000F25582DFE812F042 +:1036A8000D00370153021B0153020801C000E90055 +:1036B80054016601AD019A01A100002E00F0438279 +:1036C8000998000402BF089880B2022840F03B82A3 +:1036D800022C00F01382012C00F01D82002C40F017 +:1036E80032820298000440F02E824FF0000E04202F +:1036F80050E106995FFA8AF0049A554622283AD092 +:10370800DDF82090212821D0202808BF002948D0A2 +:10371800059A002406F00300ADF840400F94CDE967 +:1037280000B940EA1220099E2A4641EA002111A860 +:10373800334601F004FB9DF84400022840F024823F +:103748008DF830400320CDE90A442BE20029DFD070 +:10375800012CDDD10998000404BF1FFA89F007285D +:10376800D6D11FFA8BF0B0F5807F28BF4FF0000C40 +:10377800CED2022027E0DDF820900029C8D1012C04 +:1037880008BF5FEA0940C3D1099880B203289CBFEB +:103798001FFA8BF0FF28BBD862F3082CC2F3400055 +:1037A80011E0012CB4D10998000404BF1FFA89F074 +:1037B8000728ADD11FFA8BF0B0F5807F28BF4FF0F6 +:1037C800000CA5D203208DF82A000F98ADF828C068 +:1037D800CDF82B00BDF84000ADF82F000120099E60 +:1037E800E0E1002E00F0AF81022C40F0AC81099896 +:1037F800000402BF089880B2022840F0A481029811 +:1038080001F0D4FAC2B2022A00F09D8100F0010E44 +:103818000A20BFE004E200E08074024001000000DA +:10382800002E00F09081002C40F08D8101F0D2FA3A +:10383800C1B20C2900F087814FF0FF3151FA80F2B4 +:10384800062A00F2808104210220DFE812F0070036 +:103858005201A3007C017C016E01780104980006E6 +:1038680004BF02985FEA004040F06D81012100F03A +:10387800A8BC56EA040140F0668101F0ABFAC0B278 +:103888000C2800F06081032800F02981022800F04C +:103898002881069E0128554640F055810498000667 +:1038A80004BF02985FEA004040F04D8101211EE10B +:1038B800002E40F04881099880B27F2800F24381A9 +:1038C800002C40F04081089802990843000440F019 +:1038D8003A8105205CE0002E40F03581089800040C +:1038E80040F03181099880B2002800F0DD8002287C +:1038F80000F0BF80012808BF002C40F02481029806 +:10390800000440F020814FF0000E082042E0002E15 +:1039180040F01981032C00F016810898000440F04B +:103928001281099880B2002800F0CD80012808BFD4 +:10393800002C40F008810298000440F004814FF008 +:10394800020E0020002125E0002E00F0FC800898DF +:1039580080B2012808BF002C40F0F5800998029930 +:103968000843000440F0EF80012013E0002E40F0EF +:10397800EA80099880B2FF2800F2E580002C40F028 +:10398800E280089802990843000440F0DC80062091 +:10399800DDF810E0049AC9B2120642EA01415FFA62 +:1039A8008EF241EA02210844CDF82900002002994C +:1039B8008DF828000898C1EA0040CDF82D009DF840 +:1039C8002A00BDF82810BDF82F80DDF82B4041EA09 +:1039D800004634E1002E40F0B680012C40F0B38060 +:1039E800089A120401BF0002090208435FEA004076 +:1039F80040F0A98009200499CCE7002E00F0A380AC +:103A0800029884F00103002180B2B0F5807F4FF066 +:103A1800000038BF0120099A92B21A43089B9BB252 +:103A280083F001031A43B2FA82F25209104008BF28 +:103A38008646002800F08780002203200492002296 +:103A4800029200220892A5E7DFF8AC070078C0B21E +:103A580001287FF4CDADDFF8A4078188C08889B23A +:103A680080B288423FF4C4AD92464FF00609FFF792 +:103A78007BBB44EA0E00000665D16FF0020050FAE5 +:103A880081F24FF0020E0820032AFFF483AF069E4E +:103A9800CAB2012A3FF47EAF5546022A53D14FF0ED +:103AA800020E0820022175E7022C4CD1029801F081 +:103AB8007DF90491C1B2022945D000F001014FF00F +:103AC800010E082066E7022C3DD1029801F06EF93C +:103AD800C2B2022A37D000F0010E00205AE70221B4 +:103AE80005E0069E5FEA0B4055462CD100210720D1 +:103AF80068E30298000426D1002162E3029801F0ED +:103B080055F90491C1B202291DD000F001014FF00E +:103B1800010E04203EE7029880B2B0F5807F12D2F1 +:103B2800714604204FF0020E34E70498000604BFE3 +:103B380002985FEA004006D1022002212AE7029893 +:103B4800000400F03D8303982A460599DDF808B083 +:103B580000F00300CDF800B040EA1120DDF8209015 +:103B6800CDF8049046EA0021099E11A8334601F0D9 +:103B7800E6F89DF84400022806D100208DF83000B0 +:103B8800CDE90A0003200DE01198CDF83500BDF805 +:103B98004800ADF839000D980A90DDF83700CDF8E7 +:103BA8002B00022003283FF4A8AB9DF82A10BDF88B +:103BB8002820DDF82B4042EA0146F0B3DFF83856FA +:103BC800012829D0687802285AD104F47F00C6F366 +:103BD8000745B0F5003F6BD106F47F40B0F5807F14 +:103BE80040F0AA8101F066F80AAECDE90A01022187 +:103BF800304600F073FBDFF83C16304600F088FBD7 +:103C08002846314600F082FC2046314600F081FC0F +:103C1800DFF824062121CCE2687802283CD130065E +:103C280052D001F047F80AACCDE90A01002120463C +:103C380000F054FBDFF80816AFE2BDF82F8026F03D +:103C48007F404FEA142A4FEA1049C0F30720DFE803 +:103C580010F00B00E2008B00CA007300F8001E0190 +:103C6800D6004B017F00560101F024F80AACCDE9DB +:103C78000A010021204600F031FBDFF854168CE2DF +:103C880001F018F80AACCDE90A010021204600F03D +:103C980025FBDFF8941580E201F00CF80AACCDE9B9 +:103CA8000A010021204600F019FBDFF8901574E2A4 +:103CB80001F000F80AACCDE90A010021204600F025 +:103CC8000DFBDFF8681568E26FF0010050FAA6F006 +:103CD800C1B2022928BF0220C6F30744C0B2002897 +:103CE80000F07981012800F0438100F0E3FF0AAD7C +:103CF800CDE90A010221284600F0F0FADFF8441560 +:103D0800284600F005FB04F00100294600F0FEFB00 +:103D1800C6F30020294600F0F9FB00F0CBFF0AACFF +:103D2800CDE90A010221204600F0D8FADFF818157B +:103D3800204600F0EDFA14E100F0BCFF0AACCDE932 +:103D48000A010021204600F0C9FADFF8501524E2E4 +:103D580000F0B0FF0AACCDE90A010021204600F0CE +:103D6800BDFADFF8F81418E200F0A4FF0AADCDE9B7 +:103D78000A010221284600F0B1FADFF82815284682 +:103D880000F0C6FA4046294600F0C0FBE0B204281D +:103D980000F21A82DFE810F00500B701CB01180223 +:103DA800AC0100F087FF0AACCDE90A0102212046E8 +:103DB80000F094FADFF80015204600F0A9FA504602 +:103DC800214600F0A3FB5FEA0A6000F0EB8100F0F7 +:103DD80071FF0AACCDE90A010021204600F07EFA05 +:103DE800DFF8D814D9E100F065FF0AACCDE90A0183 +:103DF8000021204600F072FADFF8A414CDE100F0AB +:103E080059FF0AACCDE90A010021204600F066FA04 +:103E1800DFF85014C1E100F04DFF0AACCDE90A010A +:103E28000221204600F05AFADFF89C14204600F0E0 +:103E38006FFA0120214600F069FBDFF890040121A8 +:103E4800B7E100F037FF0AACCDE90A0102212046AC +:103E580000F044FADFF83014204600F059FA4846DA +:103E6800214600F053FBE4494878002800F02181FE +:103E7800012800F0C18000F01DFF0AACCDE90A015D +:103E88000021204600F02AFADFF8001485E100F04E +:103E980011FF0AACCDE90A010221204600F01EFA02 +:103EA800DFF8C413204600F033FA4846214600F0F4 +:103EB8002DFBD1484078002800F00F81012800F040 +:103EC800B380CD48B9F1000F00F03C81C078484577 +:103ED80047D000F0EFFE0AACCDE90A0100212046E8 +:103EE80000F0FCF9E14958E100F0E4FE0AACCDE944 +:103EF8000A010021204600F0F1F9D9494DE100F00E +:103F0800D9FE0AACCDE90A010021204600F0E6F905 +:103F1800D14942E1020000004600000062F203209D +:103F28009AF1032004000000080000001B4500006F +:103F38002F0000003A00000000F0BCFE0AAECDE9F8 +:103F48000A010221304600F0C9F9B949304600F0AB +:103F5800DFF92846314600F0D9FA2046314600F00C +:103F6800D5FA13B0BDE8000FBDE8F04000F02CBB57 +:103F780000F0A0FE0AACCDE90A010221204600F0BB +:103F8800ADF9B249204600F0C3F9A88900287FF4AA +:103F980049A90126AE8100F08DFE0AACCDE90A01DF +:103FA8000221204600F09AF9A949204600F0B0F90C +:103FB800954908F10300C1F880020720C1F884027E +:103FC8008C480146D0F8FC0140F00200C1F8FC0121 +:103FD8008E64FFF70DBB00F06DFE0AACCDE90A0157 +:103FE8000221204600F07AF99A49204600F090F91B +:103FF80008F103000721DCE0B9F1000F00F0B580FB +:10400800887848453FF4F4AA012081F80290487066 +:1040180000F050FE0AACCDE90A010221204600F06A +:104028005DF99B49FFF7E1BAB9F1000F99D0B9F1F1 +:10403800010F40F0A88070480546867800F03AFEE7 +:104048000AACCDE90A0102214FF00209204600F02E +:1040580045F98849204600F05BF96B494FF00108A3 +:104068000F2085F80380AE7085F801900E46C1F8E0 +:1040780090000920C1F894000020C86200F01AFEE0 +:104088000AACCDE90A010221204600F027F97A4955 +:10409800204600F03DF90A2021460A2500F036FAAC +:1040A8007648C6F894015348C6F89851C0F8048079 +:1040B80057E7B9F1000F3FF49BAA012081F802905D +:1040C800487000F0F7FD0AACCDE90A01022120464C +:1040D80000F004F97049FFF788BA00F0EBFD0AAC6C +:1040E800CDE90A010021204600F0F8F8654954E0BE +:1040F80000F0E0FD0AACCDE90A010021204600F0FD +:10410800EDF8694949E000F0D5FD0AACCDE90A01AE +:104118000221204600F0E2F86549204600F0F8F850 +:10412800B8F1120F28BF4FF01208624840E000F0C3 +:10413800C1FD0AACCDE90A010121204600F0CEF804 +:104148005A492AE00646857800F0B4FD0AACCDE964 +:104158000A010221204600F0C1F84549204600F036 +:10416800D7F80120B5707070FBE60020487000F0A9 +:10417800A1FD0AACCDE90A010221204600F0AEF803 +:104188004449FFF732BA00F095FD0AACCDE90A01BF +:104198000021204600F0A2F83949204600F0B8F87E +:1041A800FFF7CCB84648B8F16B0F28BF4FF06B0843 +:1041B800414613B0BDE8000FBDE8F04000F0ACB9CF +:1041C80003210220FFF7E6BB00F074FD0AACCDE93D +:1041D8000A010021204600F081F83A49204600F003 +:1041E80097F800F07DF9FEDE300000003100000095 +:1041F8003B000000047002409AF10320ACF1032058 +:10420800070000000500000080740240060000005E +:1042180034000000350000003600000037000000C0 +:1042280038000000390000002B0000002E000000BC +:104238002D0000002C00000041F2032024000000A3 +:104248002A000000250000002600000028000000C9 +:1042580029000000270000000900000023000000DA +:1042680022000000210000001600000019000000D4 +:104278001C0000001A0000001B00000034F203209C +:1042880018000000170000001100000012000000D4 +:1042980015000000140000001300000020000000BA +:1042A8001F0000000A000000100000000D000000C0 +:1042B8000C000000B4F103200E0000000F00000005 +:1042C800C6F103200B0000001E00000040F203208E +:1042D8001D0000003200000033000000F0B503AFFD +:1042E8004DF804BD094A1268D0E9003425889209BE +:1042F8006E1C6FF31F3559552680D0E900311846DA +:104308005DF804BBBDE8F04000F082B9041000E09D +:10431800F0B503AF4DF804BD8AB27F2A0AD3D0E9BD +:10432800003441F0800125886E1C6FF31F35595504 +:10433800D1092680D0E9002003885C1C6FF31F3365 +:10434800D15404805DF804BBF0BDD4D4E0B502AF0D +:1043580000F07AF900F0AEFC6C46CDE90001204689 +:104368000021FFF7BBFF03492046FFF7D1FF00F00C +:1043780053FDFEDE44000000F0B503AF4DF8048D98 +:1043880084B016480468046000F094FC0DF1040839 +:104398000546CDE901010E4640460321FFF79EFF81 +:1043A8000F494046FFF7B4FF30880A22411C6FF3DB +:1043B8001F302A54404631800A49FFF7A9FFDDE93A +:1043C8000101A7F11202022327F8124C00F084FC25 +:1043D800204604B05DF8048BF0BD00BF00740240B5 +:1043E8004300000064000000DCB504AF0848012168 +:1043F800016000F05FFC6C46CDE900012046022117 +:10440800FFF76CFF03492046FFF782FFDCBD00BFC2 +:104418000475024042000000F0B503AF2DE9C00763 +:10442800DFF8A4A0BAF80450BAF80600401B01044B +:104438001CD084B23F2C28BF3F2454FA85F081B2A7 +:10444800E8B2B1F5807F13D9DAF80090C0F580762C +:10445800DFF8788009EB00013246404600F082FD23 +:10446800A11B08EB06008AB2494606E0012625E0B2 +:10447800DAF8001022460144144800F073FD2819A8 +:10448800AAF8040020064FF0010617D000F012FC2D +:104498006D46CDE9000128460221FFF71FFF0C49B0 +:1044A8002846FFF735FF2046294600F02FF809482F +:1044B80006490160446008480660022607480670FD +:1044C800BDE80C07F0BD00BFACF1032000C003201D +:1044D80041000000287602400C7002409AF1032047 +:1044E800E0B502AF00F0B0F800F0E4FB6C46CDE9AF +:1044F800000120460021FFF7F1FE03492046FFF79F +:1045080007FF00F089FCFEDE3E000000C0B200F0AC +:1045180069B880B200F066B8F0B503AF4DF8048D05 +:1045280082B0234E8046B08988BB234C88B20D46A2 +:1045380040280AD9206820F004002060A5F1400036 +:10454800F08102204025B08103E000F043F802200A +:10455800F06000F0AFFB6E46CDE900013046022165 +:10456800FFF7BCFE15493046FFF7D2FE2846314614 +:10457800FFF7CCFF124905F07F0048601148C1F8E9 +:1045880000800121215002B05DF8048BF0BD00F0DD +:1045980091FB6C46CDE9000120460021FFF79EFE05 +:1045A80004492046FFF7B4FE00F036FCFEDE00BFEB +:1045B8009AF103203C000000007202403D00000018 +:1045C8000076024004FEFFFF0148012101607047A8 +:1045D800507002400248016841F0040101607047D0 +:1045E80000720240F0B503AF4DF804BD0246D1E9B0 +:1045F80000031C880626651C6FF31F3406551D80B2 +:10460800D1E900015DF804BBBDE8F04000F000B856 +:10461800F0B503AF4DF804BD0C880023661C42F0CA +:1046280080056FF31F34B3EBD21F08BF02F07F057C +:10463800B3EBD21F05554FEAD21534462A460E80F1 +:10464800ECD15DF804BBF0BDDCB504AF084800212F +:10465800016000F02FFB6C46CDE9000120460221E5 +:10466800FFF73CFE03492046FFF752FEDCBD00BFC2 +:104678000475024040000000E0B502AF00F01AFBEC +:104688006C46CDE9000120460021FFF727FE0349CB +:104698002046FFF73DFE00F0BFFBFEDE45000000B0 +:1046A800DCB504AF00F006FB6C46CDE900012046FE +:1046B8000421FFF713FE0D492046FFF729FE0C4899 +:1046C8000168090611D00021016000F0F3FA6C4678 +:1046D800CDE9000120460221FFF700FE05492046EA +:1046E800FFF716FE044801210170DCBD54000000EC +:1046F800000100405500000098F10320F0B503AF19 +:104708002DE9C00B00F0D6FA6C46CDE90001204631 +:104718000421FFF7E3FD5D492046FFF7F9FD5C48FA +:104728004FF000080168090602D04FF000090FE0B9 +:10473800014651F8042F120603D04FF0010908462C +:1047480006E050F8081F090600F095804FF00209AE +:10475800C0F8008000F0AEFA6E460446CDE90001CC +:104768000D4630460321FFF7B9FD4A493046FFF7A9 +:10477800CFFD28880C22411C6FF31F30225430468D +:1047880029804549FFF7C4FDDDE900010A88531C6B +:104798006FF31F3200F802900B80404DA878811EFD +:1047A800CAB2032A28BF0121C9B271B1012967D150 +:1047B8002A78002A114618BF01217ABB98F0010215 +:1047C8002CD101212970002144E0B8F1000F4FD10C +:1047D800B9F1000F57D1334849F27531032201600E +:1047E800C0F81421016001212F48016000F062FA2D +:1047F8006C46CDE9000120460221FFF76FFD2B49E9 +:104808002046FFF785FD2A4800210078A5F8011009 +:10481800C0B2002818BF0120287029E0687890BB32 +:1048280018EA010024D1B9F1020F2CD101206870D7 +:1048380000F040FA6C46CDE9000120460221FFF75E +:104848004DFD17492046FFF763FD2978A878B1FA8E +:1048580081F1490960B159B9687848B10420A87054 +:1048680000202880BDE80C0BBDE8F040FFF7BCBD78 +:10487800BDE80C0BF0BD4FF003094FF001088CE7C1 +:10488800FFF72EFEFEDEFFF761FDFEDE50000000A2 +:104898001C010040030000005300000062F20320E6 +:1048A8005200000000EC0640007502405100000074 +:1048B80098F1032007484FF4803101604FF480518C +:1048C800C0F83C124FF4807103480160034800F0BF +:1048D80007B800BF04B300400C050050A214000044 +:1048E800D0B502AF002201230021012A05D0845C43 +:1048F800013203FA04F42143F7E709B101480160E2 +:10490800D0BD00BF00E100E0B0B502AF154D0024F6 +:10491800B4F5C67F04D0281900F036F88434F7E7D8 +:1049280011480F2101234160082101600F4981606E +:104938008121C1600E490A6863F302020A6040F2ED +:1049480002214FF4822281620A49C1620021016377 +:104958000949425009490A4A42500A48BDE8B0404C +:10496800FFF7BEBF40C103200C1500400800000639 +:104978006C16004021100100F4FCFFFFF8FDFFFF5A +:1049880009400408A314000009490A68026051E8B4 +:10499800003F934207D141E80002002A1A4608BFA7 +:1049A80000F03FBAF2E7BFF32F8F1A46EEE700BFD9 +:1049B80004F00320BCB504AF4FF08040012505602A +:1049C80000F078F96C46CDE9000120460221FFF796 +:1049D80085FC05492046FFF79BFC04480560044810 +:1049E800BDE8BC40FFF77CBF560000000403004050 +:1049F800A4140000B0B502AF0C4D0024B4F5C67F76 +:104A080004D02819FFF7C0FF8434F7E708480121CC +:104A180001604FF46071016006480749016007486A +:104A2800FFF75EFF064880210160B0BD08F0032053 +:104A380004030040047302402194C001A414000040 +:104A480004E100E0FFF7A0BF007800F07F02052A2C +:104A58001ED00A281ED00F281ED014281ED01928B0 +:104A68001ED01E281ED023281ED028281ED02D2850 +:104A78001ED032281ED037281ED03C281ED04128F0 +:104A88001ED046281ED04B280CBF134A114A1AE0E4 +:104A98001F4A18E01D4A16E01B4A14E0194A12E0A2 +:104AA800174A10E0154A0EE0134A0CE0114A0AE0D2 +:104AB8000F4A08E00D4A06E00B4A04E0094A02E002 +:104AC800074A00E0054AD1E90601CB6811460222EF +:104AD800184700BFC3140000A5140000A714000065 +:104AE800A9140000AB140000AD140000AF140000BE +:104AF800B1140000B3140000B5140000B71400008E +:104B0800B9140000BB140000BD140000BF1400005D +:104B1800C1140000014801210160704704100040E1 +:104B2800BCB504AF0A48046800F0C4F86D46CDE986 +:104B3800000128460321FFF7D1FB06492846FFF765 +:104B4800E7FB2046294600F007F8204602B0B0BD32 +:104B58005015004061000000F0B503AF4DF804BDEA +:104B68000C460546D1E900010C260A88531C6FF350 +:104B78001F32865420460B801449FFF7C9FB05F005 +:104B88000F010820DFE801F0070D0F091521212189 +:104B980021110B13160000200CE003200AE0062068 +:104BA80008E0012006E0022004E0052002E00720DA +:104BB80000E00420D4E9001213885C1C6FF31F3353 +:104BC800C85414805DF804BBF0BDFEDE6000000030 +:104BD800E0B502AF00F06EF86C46CDE90001204662 +:104BE8000021FFF77BFB03492046FFF791FB00F00C +:104BF80013F9FEDE3F000000E1B3F0B503AF2DE985 +:104C08000007DFF8749082460C46B9F80650B9F8E8 +:104C18000400401B00F58070010424D080B2A0423B +:104C280038BF044654FA85F0E9B280B2B0F5807F07 +:104C38000FD9D9F80080C1F5807608EB01005146FC +:104C4800324600F08FF9A01B0AEB060182B24046FB +:104C580004E0D9F8000022460844514600F082F9E1 +:104C68002819A9F80600054880210160BDE8000759 +:104C7800BDE8F040704700BFACF1032004E200E05B +:104C88000849086860B1026851E8003F834204D1CE +:104C980041E80023002BF4D103E0BFF32F8FF0E7A6 +:104CA8000020704704F0032080B56F4600F0B4F888 +:104CB800FEDED4D4064905480968C9B20029054969 +:104CC80018BF00F5805018BF0231704700D003208C +:104CD80004ED00E094F10320F0B503AF2DE90007DF +:104CE800B1F800A0064688461C46914650466FF328 +:104CF8001F30C11889B2B1F5805F0CD9C0F5805555 +:104D0800311848462A4600F012F8611B09EB0500E5 +:104D18008AB2314602E03118A2B2484600F007F8DC +:104D28000AEB0400A8F80000BDE80007F0BD2AB1AE +:104D380010F8013B013A01F8013BF8E77047F0B57C +:104D480003AF4DF804BDD6B201F00104C1F3074525 +:104D5800D7E90212062E11D00A2E20D1012D08BF44 +:104D6800002C1CD112041AD18AB2FF2A17D801715B +:104D7800002183700170190A417014E0012D0ED1D1 +:104D88006CB18CB2FF2C0AD803F47F44B4F5085FE9 +:104D980005D10171012142804370017003E00021B7 +:104DA8008180022101605DF804BBF0BD024680B23B +:104DB800FF2801D9002107E0C2F30310002128B120 +:104DC800082801D1012002E002207047002002F0EB +:104DD8000F0170474FF0FF3151FA80F10C200A297A +:104DE80018D8DFE801F006080A0C0E10121417177D +:104DF80016000120704702207047032070470420E6 +:104E08007047052070470620704707207047082024 +:104E180070470B207047FFBEAABE62B6704772B6D5 +:104E2800704740BF704720BF7047F0B503AF4DF8DB +:104E3800048DA2B3531E02F0030C032B14D20022DC +:104E4800BCF1000F2BD08B5CBCF1010F835426D032 +:104E5800531CBCF1020FCE5CC65420D00232895CD0 +:104E680081545DF8048BF0BDACEB020E01F1010832 +:104E7800441C6FF0030208EB0206A5180432F3780D +:104E8800EB7033792B7173796B71B379AB710EEB6E +:104E980002030433EFD10432BCF1000FD3D15DF823 +:104EA800048BF0BDD0B502AF12B3531E02F0030C51 +:104EB800032B01D200220FE0ACEB020E421C6FF074 +:104EC8000303D4180433A17161712171E1700EEBF1 +:104ED80003040434F5D11A1DBCF1000F1ABF815424 +:104EE800BCF1010FD0BD0244BCF1020F517000D1DA +:104EF800D0BD9170D0BDF0B503AF2DE9000B4AB31A +:104F0800A2F1010EC2F1000C0023CC5CC55CA542E5 +:104F180024D19E451ED001EB030800EB030998F845 +:104F2800014099F80150A54218D10CEB0306B41CB6 +:104F380010D098F8024099F80250A5420ED1F41CFE +:104F480008D098F8034099F80350A54206D10433D5 +:104F58009A42DAD10020BDE8000BF0BD281BBDE85D +:104F6800000BF0BDFFF761BF042A38BFFFF7FABF97 +:104F7800B0B502AFA2F1040C012303EB9C0313F0BC +:104F880003030ED08E4604465EF8045B012B44F8FA +:104F9800045B1FD1634620467146BCF10C0F04D256 +:104FA80012E01346BCF10C0F0ED30D68103B0560E0 +:104FB800032B4D6845608D688560CD6801F110014F +:104FC800C56000F11000F0D802F00302BDE8B0405F +:104FD800FFF7C8BF4D68022B456007D1A2F108034F +:104FE80008310830BCF10C0FDFD2EDE78B680C31CB +:104FF8008360A2F10C030C30BCF10C0FD5D2E3E7AF +:105008000B4611461A46FFF74DBF1346D2B2042984 +:1050180038BFFFF7F5BFD0B502AFA1F1040E42EAE1 +:105028000363012443EA024304EB9E0443EA022398 +:1050380014F0030410D08446012C4CF8043B10D122 +:1050480074466046BEF10C0F1ED201F00301BDE8A4 +:10505800D0406046FFF7D4BF0C46BEF10C0F13D208 +:10506800F3E7022C436007D10830A1F10804844615 +:10507800BEF10C0F08D2E8E783600C30A1F10C04F4 +:105088008446BEF10C0FE0D3C0E90033103CC0E900 +:1050980002331030032CF7D8844601F00301BDE831 +:0E50A800D0406046FFF7ACBF0022FFF7AEBF5E +:1050B800FD490000BD49000011490000BD4800003D +:1050C80040C003200000000012010002EF0201406E +:1050D8002020100300010000000109026B000301F9 +:1050E8000080FA080B000202020100090400000116 +:1050F8000202010005240010010524010301042413 +:105108000202052406000107058103400020090466 +:105118000100020A0000000705020240000007051E +:105128008202400000090402000203000000092175 +:1051380000010001222100070503034000010705C3 +:105148008303400001000000A120000000000200CD +:1051580003000000010600FF0901A101150026FF58 +:105168000075089540090181029540090191029551 +:10517800010901B102C000000280250000000008FA +:0400000300002CCD00 :00000001FF diff --git a/boards/dongle/puzzle.rs b/boards/dongle/puzzle.rs index ac79f35..c2b9727 100644 --- a/boards/dongle/puzzle.rs +++ b/boards/dongle/puzzle.rs @@ -1,10 +1,10 @@ -// f6c27c0a5af464795d1a64c45fa1b3039f44a62a #![deny(unused_must_use)] #![no_main] #![no_std] -use core::fmt::Write as _; +use core::{fmt::Write as _, convert::TryFrom}; +use async_core::unsync::Mutex; use hal::{radio::{self, Packet, Channel}, usbd, led}; use heapless::{consts, LinearMap, String}; use panic_abort as _; @@ -25,8 +25,9 @@ fn main() -> ! { // so we can visually differentiate this one from `loopback.hex` led::Green.on(); - let mut stx = usbd::serial(); - let (mut rtx, mut rrx) = radio::claim(Channel::_25); + let stx = Mutex::new(usbd::serial()); + let (mut hidout, _) = usbd::hid(); + let (rtx, mut rrx) = radio::claim(Channel::_25); let mut output = String::::new(); let mut dict = LinearMap::<_, _, consts::U128>::new(); @@ -38,9 +39,52 @@ fn main() -> ! { write!(output, "{:08x}{:08x}", hal::deviceid1(), hal::deviceid0()).ok(); write!(output, " channel={} TxPower=+8dBm app=puzzle.hex\n", rtx.channel()).ok(); - let task = async { + let rtx = Mutex::new(rtx); + + let t1 = async { + let mut output = String::::new(); + let mut hidbuf = usbd::Packet::new().await; + let zlp = radio::Packet::new().await; + + loop { + hidout.recv(&mut hidbuf).await; + semidap::info!("HID: {}", *hidbuf); + + let arg = if hidbuf.len() == 1 { + // Linux / macOS + Some(hidbuf[0]) + } else if hidbuf.len() == 64 { + // Windows (it zero pads the packet) + Some(hidbuf[0]) + } else { + None + }; + + if let Some(arg) = arg { + if let Ok(chan) = Channel::try_from(arg) { + let mut rtx = rtx.lock().await; + rtx.set_channel(chan); + // send a zero-length packet to force the radio to listen on the new channel + rtx.write(&zlp).await.ok(); + drop(rtx); + + output.clear(); + writeln!(output, "now listening on channel {}", chan).ok(); + stx.lock().await.write(output.as_bytes()); + } else { + stx.lock() + .await + .write(b"requested channel is out of range (11-26)\n"); + } + } else { + stx.lock().await.write(b"invalid HID packet\n"); + } + } + }; + + let t2 = async { let mut packet = Packet::new().await; - stx.write(output.as_bytes()); + stx.lock().await.write(output.as_bytes()); loop { let crcres = rrx.read(&mut packet).await; @@ -76,7 +120,7 @@ fn main() -> ! { }); } - busy = rtx.write(&packet).await.is_err(); + busy = rtx.lock().await.write(&packet).await.is_err(); } output.clear(); @@ -101,12 +145,12 @@ fn main() -> ! { if busy { output.push_str("didn't reply -- channel was busy\n").ok(); - stx.write(output.as_bytes()); + stx.lock().await.write(output.as_bytes()); } - stx.write(output.as_bytes()); + stx.lock().await.write(output.as_bytes()); } }; - executor::run!(task) + executor::run!(t1, t2) } From 657ecc9a9a59a2311b13ceb13b199542acd9a271 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Mon, 13 Jul 2020 17:12:01 +0200 Subject: [PATCH 04/10] document change-channel --- embedded-workshop-book/src/dongle.md | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/embedded-workshop-book/src/dongle.md b/embedded-workshop-book/src/dongle.md index 70c1b6a..52285a1 100644 --- a/embedded-workshop-book/src/dongle.md +++ b/embedded-workshop-book/src/dongle.md @@ -57,9 +57,33 @@ If you run the `serial-term` application you should see the following output: ``` console $ serial-term deviceid=588c06af0877c8f2 channel=20 TxPower=+8dBm -(..) ``` This line is printed by the `loopback` app on boot. It contains the device ID of the dongle, a 64-bit unique identifier (so everyone will see a different number); the radio channel that the device will use to communicate; and the transmission power of the radio in dBm. +At this point you should *not* get more output from `serial-term`. If you get "received N bytes" lines in output like this: + +``` console +$ serial-term +deviceid=588c06af0877c8f2 channel=20 TxPower=+8dBm +received 7 bytes (CRC=Ok(0x2459), LQI=0) +received 5 bytes (CRC=Ok(0xdad9), LQI=0) +received 6 bytes (CRC=Ok(0x72bb), LQI=0) +``` + +That means the device is observing interference traffic, likely from 2.4 GHz WiFi or Bluetooth. In this scenario you should switch the listening channel to one where you don't observe interference. Use the `tools/change-channel` tool to do this. The tool takes a single argument: the new listening channel which must be in the range 11-26. + +``` console +$ change-channel 11 +requested channel change to channel 11 +``` + +Then you should see new output from `serial-term`: + +``` console +deviceid=588c06af0877c8f2 channel=20 TxPower=+8dBm +(..) +now listening on channel 11 +``` + Leave the Dongle connected and the `serial-term` application running. Now we'll switch back to the Development Kit. From 0e51a0a05201b043369344ff2c3ff1bc518c775c Mon Sep 17 00:00:00 2001 From: Mirabellensaft Date: Mon, 13 Jul 2020 17:20:20 +0200 Subject: [PATCH 05/10] didactic changes --- embedded-workshop-book/src/binary-size.md | 17 +++++++++--- .../src/building-program.md | 19 +++++++------ .../src/flashing-program.md | 6 +++-- .../src/parts-embedded-program.md | 27 ++++++++++++------- 4 files changed, 47 insertions(+), 22 deletions(-) diff --git a/embedded-workshop-book/src/binary-size.md b/embedded-workshop-book/src/binary-size.md index cda6ef1..f1bf9bc 100644 --- a/embedded-workshop-book/src/binary-size.md +++ b/embedded-workshop-book/src/binary-size.md @@ -2,10 +2,18 @@ ELF files contain metadata like debug information so their size on disk is not a good indication of the amount of Flash the program will use once it's loaded on the target device's memory. -To display the amount of Flash the program will occupy on the target device use the `cargo-size` tool (part of the `cargo-binutils` package): +To display the amount of Flash the program will occupy on the target device use the `cargo-size` tool, which is part of the `cargo-binutils` package. + +โœ… Use the following command to print the binary's size in system V format. ``` console $ cargo size --bin hello -- -A +``` + +Expected output: +The breakdown of the program's static memory usage per *linker section*. + +``` console hello : section size addr .vector_table 256 0x0 @@ -16,9 +24,12 @@ section size addr .uninit 0 0x20000854 ``` -This gives you a breakdown of the program's static memory usage per *linker section*. +**๐Ÿ”Ž More details about each linker section:** -The `.vector_table` section contains the *vector table*, a data structure required by the Cortex-M ISA. The `.text` section contains the instructions the program will execute. The `.rodata` section contains constants like strings literals. These three sections are contiguously located in Flash memory -- Flash memory spans from address `0x0000_0000` to `0x0010_0000` (1 MB). +The first three sections are contiguously located in Flash memory -- Flash memory spans from address `0x0000_0000` to `0x0010_0000` (1 MB). +* The `.vector_table` section contains the *vector table*, a data structure required by the Cortex-M ISA. +* The `.text` section contains the instructions the program will execute. +* The `.rodata` section contains constants like strings literals. The next three sections, `.data`, `.bss` and `.uninit`, are located in RAM -- RAM memory spans the address range `0x2000_0000` - `0x2004_0000` (256 KB). These sections contain statically allocated variables (`static` variables). diff --git a/embedded-workshop-book/src/building-program.md b/embedded-workshop-book/src/building-program.md index bcc1ae2..02a4b86 100644 --- a/embedded-workshop-book/src/building-program.md +++ b/embedded-workshop-book/src/building-program.md @@ -1,12 +1,6 @@ # Building an Embedded Program -The following command cross compiles the program to the ARM Cortex-M4 architecture. - -``` console -$ cargo build --bin hello -``` - -The default in a Cargo project is to compile for the host (native compilation) but the `beginner/apps` project has been configured for cross compilation. This configuration can be seen in the Cargo configuration file (`.cargo/config`): +The default in a Cargo project is to compile for the host (native compilation). The `beginner/apps` project has been configured for cross compilation to the ARM Cortex-M4 architecture. This configuration can be seen in the Cargo configuration file (`.cargo/config`): ``` text # .cargo/config @@ -14,9 +8,18 @@ The default in a Cargo project is to compile for the host (native compilation) b target = "thumbv7em-none-eabi" # = ARM Cortex-M4 ``` +โœ… Inside the folder `beginner/apps`, use the following command to cross compile the program to the ARM Cortex-M4 architecture. + +``` console +$ cargo build --bin hello +``` + The output of the compilation process will be an ELF (Executable and Linkable Format) file. The file will be placed in the `target/thumbv7em-none-eabi` directory. +โœ… Run `$ file target/thumbv7em-none-eabi/debug/hello` and compare if your output is as expected. + +Expected output: ``` console $ file target/thumbv7em-none-eabi/debug/hello hello: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, with debug_info, not stripped -``` +``` \ No newline at end of file diff --git a/embedded-workshop-book/src/flashing-program.md b/embedded-workshop-book/src/flashing-program.md index 031e68b..2b99d85 100644 --- a/embedded-workshop-book/src/flashing-program.md +++ b/embedded-workshop-book/src/flashing-program.md @@ -1,12 +1,12 @@ # Flashing the Program -The following command will flash the ELF file to the device. +โœ… Use the following command to flash the ELF file to the device. ``` console $ cargo flash --chip nRF52840_xxAA --elf target/thumbv7em-none-eabi/debug/hello ``` -> NOTE if you run into an error along the lines of "Debug power request failed" retry the operation and the error should disappear +> NOTE: If you run into an error along the lines of "Debug power request failed" retry the operation and the error should disappear. Alternatively you can run this command, which builds the application before flashing it. @@ -16,4 +16,6 @@ $ cargo flash --chip nRF52840_xxAA --bin hello The `cargo-flash` subcommand flashes and runs the program but won't display logs. It is a deployment tool. +**๐Ÿ”Ž How does flashing work?** + The flashing process consists of the PC communicating with a second microcontroller on the nRF52840 DK over USB (J2 port). This second microcontroller, named J-Link, is connected to the nRF52840 through a electrical interface known as JTAG. The JTAG protocol specifies procedures for reading memory, writing to memory, halting the target processor, reading the target processor registers, etc. diff --git a/embedded-workshop-book/src/parts-embedded-program.md b/embedded-workshop-book/src/parts-embedded-program.md index 6468997..ecaaf9f 100644 --- a/embedded-workshop-book/src/parts-embedded-program.md +++ b/embedded-workshop-book/src/parts-embedded-program.md @@ -1,26 +1,35 @@ # Parts of an Embedded Program -[โ—๏ธIntro ] -Open the `beginner/apps` folder in VS Code. +We will look at the elements that distinguish an embedded Rust program from a desktop program. + + +โœ… Open the `beginner/apps` folder in VS Code. ``` console $ # or use "File > Open Folder" in VS Code $ code beginner/apps ``` -Then open the `src/bin/hello.rs` file. +โœ… Then open the `src/bin/hello.rs` file. -If you find it more convenient to open the repository at the root then please also add the `beginner/apps` folder to the VS Code workspace: right click the left side panel, select "Add folder to workspace" and add the `beginner/apps` folder. -[โ—๏ธNo optional way of doing things here] -Note the differences between this embedded program and a desktop program: -[โ—๏ธHave a non embedded program up to compare] +> NOTE: If you find it more convenient to open the repository at the root then please also add the `beginner/apps` folder to the VS Code workspace: right click the left side panel, select "Add folder to workspace" and add the `beginner/apps` folder. - The `#![no_std]` attribute indicates that the program will not make use of the standard library, `std` crate. Instead it will use the `core` library, a subset of the standard library that does depend not on a underlying operating system (OS). + + +## In the file, you will find the following attributes: + +### `#![no_std]` + + The `#![no_std]` attribute indicates that the program will not make use of the standard library, the `std` crate. Instead it will use the `core` library, a subset of the standard library that does not depend on an underlying operating system (OS). + +### `#![no_main]` The `#![no_main]` attribute indicates that the program will use a custom entry point instead of the default `fn main() { .. }` one. -The `#[entry]` attribute declares the custom entry point of the program. The entry point must be a divergent function; note that the return type is the never type `!`. The function is not allowed to return; therefore the program is not allowed to terminate. +### `#[entry]` + +The `#[entry]` attribute declares the custom entry point of the program. The entry point must be a divergent function whose return type is the never type `!`. The function is not allowed to return; therefore the program is not allowed to terminate. From 1ca2b4db16f93fed1896cd04eecb8f60e7d6ae02 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Mon, 13 Jul 2020 17:41:37 +0200 Subject: [PATCH 06/10] add troubleshooting section --- embedded-workshop-book/src/SUMMARY.md | 8 +++- .../src/troubleshoot-cargo-build.md | 3 ++ .../src/troubleshoot-cargo-flash.md | 45 +++++++++++++++++++ .../src/troubleshoot-cargo-size.md | 9 ++++ .../src/troubleshoot-dongle-flash.md | 9 ++++ .../src/troubleshoot-rust-analyzer.md | 9 ++++ embedded-workshop-book/src/troubleshooting.md | 3 ++ 7 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 embedded-workshop-book/src/troubleshoot-cargo-build.md create mode 100644 embedded-workshop-book/src/troubleshoot-cargo-flash.md create mode 100644 embedded-workshop-book/src/troubleshoot-cargo-size.md create mode 100644 embedded-workshop-book/src/troubleshoot-dongle-flash.md create mode 100644 embedded-workshop-book/src/troubleshoot-rust-analyzer.md create mode 100644 embedded-workshop-book/src/troubleshooting.md diff --git a/embedded-workshop-book/src/SUMMARY.md b/embedded-workshop-book/src/SUMMARY.md index 57d06d9..449510c 100644 --- a/embedded-workshop-book/src/SUMMARY.md +++ b/embedded-workshop-book/src/SUMMARY.md @@ -46,4 +46,10 @@ - [Next Steps](./next-steps.md) - [String Descriptors](./string-descriptors.md) - [Custom Control Transfers](./custom-control-transfers.md) -- [References and Resources](./references-resources.md) \ No newline at end of file +- [References and Resources](./references-resources.md) +- [Troubleshooting](./troubleshooting.md) + - [`cargo-size` is not working](./troubleshoot-cargo-size.md) + - [`cargo-flash` is not working](./troubleshoot-cargo-flash.md) + - [Rust analyzer is not working](./troubleshoot-rust-analyzer.md) + - [`cargo-build` fails to link](./troubleshoot-cargo-build.md) + - [`dongle-flash` is not working](./troubleshoot-dongle-flash.md) diff --git a/embedded-workshop-book/src/troubleshoot-cargo-build.md b/embedded-workshop-book/src/troubleshoot-cargo-build.md new file mode 100644 index 0000000..06a8266 --- /dev/null +++ b/embedded-workshop-book/src/troubleshoot-cargo-build.md @@ -0,0 +1,3 @@ +# `cargo-build` fails to link + +If you have configured Cargo to use sscache then you'll need to disable sscache support. Unset the `RUSTC_WRAPPER` variable in your environment *before* opening VS code. Run `cargo clean` from the Cargo workspace you are working from (`beginner/apps` or `advanced/firmware`). Then open VS code. diff --git a/embedded-workshop-book/src/troubleshoot-cargo-flash.md b/embedded-workshop-book/src/troubleshoot-cargo-flash.md new file mode 100644 index 0000000..ca01290 --- /dev/null +++ b/embedded-workshop-book/src/troubleshoot-cargo-flash.md @@ -0,0 +1,45 @@ +# `cargo-flash` is not working + +## Debug power request failed + +``` console +$ cargo flash --chip nRF52840_xxAA --bin hello + ERROR probe_rs::architecture::arm::communication_interface > Debug power request failed +Error processing command: An error specific to the selected architecture occured +``` + +This is a spurious error that occurs only once on a new development kit. Running the command again should make the error go away. If you still get the error run `RUST_LOG=probe_rs=debug cargo flash --chip nRF52840_xxAA --bin hello ` once. + +## 'erase_sector' failed with code 1 + +``` console +$ cargo flash --chip nRF52840_xxAA --bin hello +(..) +Error failed to flash app: The execution of 'erase_sector' failed with code 1 +``` + +flash write protection is enabled in the device. To disable it use the `nrf-recover` tool. Instructions can be found in the [setup page](https://oxidizeconf.com/oxidize-global-setup/) and in the top-level README of this repository. + +## Linux permissions + +``` console +$ cargo flash --chip nRF52840_xxAA --bin hello +Error: An error specific to a probe type occured: USB error while opening USB device: Access denied (insufficient permissions) + +Caused by: + USB error while opening USB device: Access denied (insufficient permissions) +``` + +udev rules need to be changed to allow non-root access. Instructions can be found in the [setup page](https://oxidizeconf.com/oxidize-global-setup/) and in the top-level README of this repository. + +## Wrong Windows Driver + +``` console +$ cargo flash --chip nRF52840_xxAA --bin hello +Error: An error specific to a probe type occured: USB error while opening USB device: Entity not found + +Caused by: + USB error while opening USB device: Entity not found +``` + +You need to bind the BULK interface of the J-Link USB device to the WinUSB driver using the Zadig tool. Instructions can be found in the [setup page](https://oxidizeconf.com/oxidize-global-setup/) and in the top-level README of this repository. diff --git a/embedded-workshop-book/src/troubleshoot-cargo-size.md b/embedded-workshop-book/src/troubleshoot-cargo-size.md new file mode 100644 index 0000000..7817b9e --- /dev/null +++ b/embedded-workshop-book/src/troubleshoot-cargo-size.md @@ -0,0 +1,9 @@ +# `cargo-size` is not working + +``` +$ cargo size --bin hello +Failed to execute tool: size +No such file or directory (os error 2) +``` + +`llvm-tools-preview` is not installed. Install it with `rustup component add llvm-tools-preview` diff --git a/embedded-workshop-book/src/troubleshoot-dongle-flash.md b/embedded-workshop-book/src/troubleshoot-dongle-flash.md new file mode 100644 index 0000000..a9f6127 --- /dev/null +++ b/embedded-workshop-book/src/troubleshoot-dongle-flash.md @@ -0,0 +1,9 @@ +# `dongle-flash` not working + +``` console +$ dongle-flash loopback.hex +packaging iHex using nrfutil ... +Error: No such file or directory (os error 2) +``` + +this indicates that `nrfutil`, the Python tool, is not installed or not available in your PATH. Instructions on how to install `nrfutil` can be found in the [setup page](https://oxidizeconf.com/oxidize-global-setup/) and in the top-level README of this repository. If you install `nrfutil` in a virtual environment you'll need to activate the environment; the `nrfutil` binary must be available in your PATH. diff --git a/embedded-workshop-book/src/troubleshoot-rust-analyzer.md b/embedded-workshop-book/src/troubleshoot-rust-analyzer.md new file mode 100644 index 0000000..5a6593b --- /dev/null +++ b/embedded-workshop-book/src/troubleshoot-rust-analyzer.md @@ -0,0 +1,9 @@ +# Rust-Analyzer is not working + +If Rust-Analyzer is not analyzing your code, that is you get no type annotations, no "Run" button and no syntax hightlighting then: + +- check that you have a single folder open in VS code; this is different from a single-folder VS code workspace. First close all the currently open folders then open a single folder using the 'File > Open Folder' menu. The open folder should be the `beginner/apps` folder for the beginner workshop or the `advanced/firmware` folder for the advanced workshop. + +- use the latest version of the Rust-Analyzer plugin. If you get a prompt to update the Rust-Analyzer extension hen you start VS code accept it. You may also get a prompt about updating the Rust-Analayzer binary; accept that one too. The extension should restart automatically after the update. If it doesn't then close and re-open VS code. + +- You may need to wait a little while Rust-Analyzer analyzes all the crates in the dependency graph. Then you may need to modify and save the currently open file to force Rust-Analyzer to analyze it. diff --git a/embedded-workshop-book/src/troubleshooting.md b/embedded-workshop-book/src/troubleshooting.md new file mode 100644 index 0000000..65d139a --- /dev/null +++ b/embedded-workshop-book/src/troubleshooting.md @@ -0,0 +1,3 @@ +# Troubleshooting + +If you have issues with any of the tools used in this workshop check out the sections in this chapter. From 43619ea87fee21d1a8134f56ea72c1b53ddb87ae Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Mon, 13 Jul 2020 15:54:00 +0000 Subject: [PATCH 07/10] Update embedded-workshop-book/src/troubleshoot-rust-analyzer.md Co-authored-by: Jonas Schievink --- embedded-workshop-book/src/troubleshoot-rust-analyzer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/embedded-workshop-book/src/troubleshoot-rust-analyzer.md b/embedded-workshop-book/src/troubleshoot-rust-analyzer.md index 5a6593b..0ec3ccc 100644 --- a/embedded-workshop-book/src/troubleshoot-rust-analyzer.md +++ b/embedded-workshop-book/src/troubleshoot-rust-analyzer.md @@ -4,6 +4,6 @@ If Rust-Analyzer is not analyzing your code, that is you get no type annotations - check that you have a single folder open in VS code; this is different from a single-folder VS code workspace. First close all the currently open folders then open a single folder using the 'File > Open Folder' menu. The open folder should be the `beginner/apps` folder for the beginner workshop or the `advanced/firmware` folder for the advanced workshop. -- use the latest version of the Rust-Analyzer plugin. If you get a prompt to update the Rust-Analyzer extension hen you start VS code accept it. You may also get a prompt about updating the Rust-Analayzer binary; accept that one too. The extension should restart automatically after the update. If it doesn't then close and re-open VS code. +- use the latest version of the Rust-Analyzer plugin. If you get a prompt to update the Rust-Analyzer extension when you start VS code accept it. You may also get a prompt about updating the Rust-Analayzer binary; accept that one too. The extension should restart automatically after the update. If it doesn't then close and re-open VS code. - You may need to wait a little while Rust-Analyzer analyzes all the crates in the dependency graph. Then you may need to modify and save the currently open file to force Rust-Analyzer to analyze it. From ad734d65306cb0ffabe29922cf046cdbf3865943 Mon Sep 17 00:00:00 2001 From: Mirabellensaft Date: Mon, 13 Jul 2020 17:56:57 +0200 Subject: [PATCH 08/10] rm note --- embedded-workshop-book/src/parts-embedded-program.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/embedded-workshop-book/src/parts-embedded-program.md b/embedded-workshop-book/src/parts-embedded-program.md index ecaaf9f..6d5a162 100644 --- a/embedded-workshop-book/src/parts-embedded-program.md +++ b/embedded-workshop-book/src/parts-embedded-program.md @@ -13,11 +13,6 @@ $ code beginner/apps โœ… Then open the `src/bin/hello.rs` file. - -> NOTE: If you find it more convenient to open the repository at the root then please also add the `beginner/apps` folder to the VS Code workspace: right click the left side panel, select "Add folder to workspace" and add the `beginner/apps` folder. - - - ## In the file, you will find the following attributes: ### `#![no_std]` From 21bf89090aedad3c9e1a1c67e49856cae01d7084 Mon Sep 17 00:00:00 2001 From: Florian Gilcher Date: Mon, 13 Jul 2020 19:02:12 +0200 Subject: [PATCH 09/10] Fix unclarity in USB-3 USB-2 already implements GET_DESCRIPTOR, make clear that it must be extended --- embedded-workshop-book/src/data-stage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/embedded-workshop-book/src/data-stage.md b/embedded-workshop-book/src/data-stage.md index 572b0f9..6ffb3ac 100644 --- a/embedded-workshop-book/src/data-stage.md +++ b/embedded-workshop-book/src/data-stage.md @@ -8,7 +8,7 @@ The `Ep0In` API has two methods: `start` and `end` (also see their API documenta To implement responding to a GET_DESCRIPTOR request, do the following: -1. **Extend the parser implementation to handle a GET_DESCRIPTOR request:** make the `common/usb/lib.rs::get_descriptor_configuration()` test run successfully. +1. **Extend the GET_DESCRIPTOR parser implementation to handle a CONFIGURATION request:** make the `common/usb/lib.rs::get_descriptor_configuration()` test run successfully. 2. **Answer the Descriptor Request:** extend `usb-3.rs` so that it uses `Ep0In` to respond to the `GET_DESCRIPTOR Device` request (and only to that request). The response must be a device descriptor with its fields set to these values: - `bDeviceClass = bDeviceSubClass = bDeviceProtocol = 0`, these are unimportant for enumeration From cf2b5db798fcd51b12bdce23c9074f0000582b8b Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Tue, 14 Jul 2020 08:52:37 +0000 Subject: [PATCH 10/10] Update embedded-workshop-book/src/troubleshoot-cargo-build.md Co-authored-by: James Munns --- embedded-workshop-book/src/troubleshoot-cargo-build.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/embedded-workshop-book/src/troubleshoot-cargo-build.md b/embedded-workshop-book/src/troubleshoot-cargo-build.md index 06a8266..6499a3c 100644 --- a/embedded-workshop-book/src/troubleshoot-cargo-build.md +++ b/embedded-workshop-book/src/troubleshoot-cargo-build.md @@ -1,3 +1,3 @@ # `cargo-build` fails to link -If you have configured Cargo to use sscache then you'll need to disable sscache support. Unset the `RUSTC_WRAPPER` variable in your environment *before* opening VS code. Run `cargo clean` from the Cargo workspace you are working from (`beginner/apps` or `advanced/firmware`). Then open VS code. +If you have configured Cargo to use sccache then you'll need to disable sccache support. Unset the `RUSTC_WRAPPER` variable in your environment *before* opening VS code. Run `cargo clean` from the Cargo workspace you are working from (`beginner/apps` or `advanced/firmware`). Then open VS code.