diff options
author | NIIBE Yutaka <gniibe@fsij.org> | 2014-08-04 11:23:43 +0900 |
---|---|---|
committer | NIIBE Yutaka <gniibe@fsij.org> | 2014-12-10 18:50:10 +0900 |
commit | dffcf2d4bf9bf3e78a85fde704659be2b8384d40 (patch) | |
tree | a6af246bb1b2487ac88895f3095a0a792666b8f9 /example-fsm-55 | |
parent | b05e4030d20d3b595fe9953a669ddf6991fd3874 (diff) |
fix col/row.
Diffstat (limited to 'example-fsm-55')
-rw-r--r-- | example-fsm-55/gnu.txt | 179 | ||||
-rw-r--r-- | example-fsm-55/hacker-emblem.c | 149 | ||||
-rw-r--r-- | example-fsm-55/hh.txt | 59 | ||||
-rw-r--r-- | example-fsm-55/hiroshi-ayumi.c | 217 | ||||
-rw-r--r-- | example-fsm-55/l55.txt | 119 | ||||
-rw-r--r-- | example-fsm-55/name.txt | 287 |
6 files changed, 961 insertions, 49 deletions
diff --git a/example-fsm-55/gnu.txt b/example-fsm-55/gnu.txt new file mode 100644 index 0000000..feb789a --- /dev/null +++ b/example-fsm-55/gnu.txt @@ -0,0 +1,179 @@ +_____ 00 +_____ 00 +_____ 00 +_____ 00 +_____ 00 + +_____ 00 +____* 01 +____* 01 +____* 01 +_____ 00 + +____* 01 +___*_ 02 +___*_ 02 +___*_ 02 +____* 01 + +___** 03 +__*__ 04 +__*__ 04 +__*__ 04 +___** 03 + +__*** 07 +_*___ 08 +_*__* 09 +_*___ 08 +__*** 07 + +_***_ 0e +*____ 10 +*__** 13 +*___* 11 +_***_ 0e + +***__ 1c +_____ 00 +__**_ 06 +___*_ 02 +***__ 1c + +**__* 19 +____* 01 +_**_* 0d +__*_* 05 +**__* 19 + +*__*_ 12 + __** 03 +**_*_ 1a +_*_*_ 0a +*__*_ 12 + +__*__ 04 + _**_ 06 +*_*_* 15 +*_*__ 14 +__*__ 04 + +_*___ 08 +_**__ 0c +_*_*_ 0a +_*__* 09 +_*___ 08 + +*___* 11 +**__* 19 +*_*_* 15 +*__** 13 +*___* 11 + +___*_ 02 +*__*_ 12 +_*_*_ 0a +__**_ 06 +___*_ 02 + +__*_* 05 +__*_* 05 +*_*_* 15 +_**_* 0d +__*__ 04 + +_*_*_ 0a +_*_*_ 0a +_*_*_ 0a +**_*_ 1a +_*__* 09 + +*_*__ 14 +*_*__ 14 +*_*__ 14 +*_*__ 14 +*__** 13 + +_*___ 08 +_*___ 08 +_*___ 08 +_*___ 08 +__*** 07 + +*___* 11 +*___* 11 +*___* 11 +*___* 11 +_***_ 0e + +___*_ 02 +___*_ 02 +___*_ 02 +___*_ 02 +***__ 1c + +__*__ 04 +__*__ 04 +__*__ 04 +__*__ 04 +**___ 18 + +_*___ 08 +_*___ 08 +_*___ 08 +_*___ 08 +*____ 10 + +*___* 11 +*___* 11 +*___* 11 +*____ 10 +____* 01 + +___** 03 +___** 03 +___** 03 +_____ 00 +___*_ 02 + +__**_ 06 +__**_ 06 +__**_ 06 +_____ 00 +__*__ 04 + +_**__ 0c +_**__ 0c +_**__ 0c +_____ 00 +_*___ 08 + +**___ 18 +**___ 18 +**___ 18 +_____ 00 +*____ 10 + +*____ 10 +*____ 10 +*____ 10 +_____ 00 +_____ 00 + +_____ 00 +_____ 00 +_____ 00 +_____ 00 +_____ 00 + +_____ 00 +_____ 00 +_____ 00 +_____ 00 +_____ 00 + +_____ 00 +_____ 00 +_____ 00 +_____ 00 +_____ 00 diff --git a/example-fsm-55/hacker-emblem.c b/example-fsm-55/hacker-emblem.c index b66fe26..ddf83db 100644 --- a/example-fsm-55/hacker-emblem.c +++ b/example-fsm-55/hacker-emblem.c @@ -33,26 +33,27 @@ struct GPIO { #define GPIOF ((struct GPIO *) GPIOF_BASE) static struct GPIO *const GPIO_LED = ((struct GPIO *const) GPIO_LED_BASE); - +static struct GPIO *const GPIO_OTHER = ((struct GPIO *const) GPIO_OTHER_BASE); + static chopstx_mutex_t mtx; static chopstx_cond_t cnd0; -static chopstx_cond_t cnd1; -static uint8_t u; +static uint8_t +user_button (void) +{ + return (GPIO_OTHER->IDR & 1) == 0; +} static uint8_t l_data[5]; static void set_led_display (uint32_t data) { - if (data) - { - l_data[0] = l_data[1] = l_data[2] = l_data[3] = l_data[4] = 0x1f; - } - else - { - l_data[0] = l_data[1] = l_data[2] = l_data[3] = l_data[4] = 0x00; - } + l_data[0] = (data >> 0) & 0x1f; + l_data[1] = (data >> 5) & 0x1f; + l_data[2] = (data >> 10) & 0x1f; + l_data[3] = (data >> 15) & 0x1f; + l_data[4] = (data >> 20) & 0x1f; } @@ -63,17 +64,22 @@ wait_for (uint32_t usec) } static void -led_prepare_column (uint8_t data) +led_prepare_row (uint8_t col) { + uint16_t data = 0x1f; + + data |= ((l_data[0] & (1 << col)) ? 1 : 0) << 5; + data |= ((l_data[1] & (1 << col)) ? 1 : 0) << 6; + data |= ((l_data[2] & (1 << col)) ? 1 : 0) << 7; + data |= ((l_data[3] & (1 << col)) ? 1 : 0) << 9; + data |= ((l_data[4] & (1 << col)) ? 1 : 0) << 10; GPIO_LED->ODR = data; } static void -led_enable_row (uint8_t row) +led_enable_column (uint8_t col) { - static const uint8_t row_to_pin[5] = { 5, 6, 7, 9, 10 }; - - GPIO_LED->BSRR = (1 << row_to_pin[row]); + GPIO_LED->BRR = (1 << col); } static void * @@ -91,8 +97,8 @@ led (void *arg) for (i = 0; i < 5; i++) { - led_prepare_column (l_data [i]); - led_enable_row (i); + led_prepare_row (i); + led_enable_column (i); wait_for (1000); } } @@ -100,65 +106,110 @@ led (void *arg) return NULL; } -static void * -blk (void *arg) -{ - (void)arg; - - chopstx_mutex_lock (&mtx); - chopstx_cond_wait (&cnd1, &mtx); - chopstx_mutex_unlock (&mtx); - - while (1) - { - set_led_display (0); - wait_for (200*1000); - set_led_display (u); - wait_for (200*1000); - } - - return NULL; -} - #define PRIO_LED 3 -#define PRIO_BLK 2 extern uint8_t __process1_stack_base__, __process1_stack_size__; -extern uint8_t __process2_stack_base__, __process2_stack_size__; -extern uint8_t __process3_stack_base__, __process3_stack_size__; const uint32_t __stackaddr_led = (uint32_t)&__process1_stack_base__; const size_t __stacksize_led = (size_t)&__process1_stack_size__; -const uint32_t __stackaddr_blk = (uint32_t)&__process2_stack_base__; -const size_t __stacksize_blk = (size_t)&__process2_stack_size__; - +#define DATA55(x0,x1,x2,x3,x4) (x0<<20)|(x1<<15)|(x2<<10)|(x3<< 5)|(x4<< 0) + +static uint32_t l55[20] = { + DATA55 (0x08, 0x04, 0x1c, 0x00, 0x00), + DATA55 (0x00, 0x14, 0x0c, 0x08, 0x00), + DATA55 (0x00, 0x04, 0x14, 0x0c, 0x00), + DATA55 (0x00, 0x08, 0x06, 0x0c, 0x00), + DATA55 (0x00, 0x04, 0x02, 0x0e, 0x00), + DATA55 (0x00, 0x00, 0x0a, 0x06, 0x04), + DATA55 (0x00, 0x00, 0x02, 0x0a, 0x06), + DATA55 (0x00, 0x00, 0x04, 0x03, 0x06), + DATA55 (0x00, 0x00, 0x02, 0x01, 0x07), + DATA55 (0x02, 0x00, 0x00, 0x05, 0x03), + DATA55 (0x03, 0x00, 0x00, 0x01, 0x05), + DATA55 (0x03, 0x00, 0x00, 0x02, 0x11), + DATA55 (0x13, 0x00, 0x00, 0x01, 0x10), + DATA55 (0x11, 0x01, 0x00, 0x00, 0x12), + DATA55 (0x12, 0x11, 0x00, 0x00, 0x10), + DATA55 (0x18, 0x11, 0x00, 0x00, 0x01), + DATA55 (0x08, 0x19, 0x00, 0x00, 0x10), + DATA55 (0x09, 0x18, 0x10, 0x00, 0x00), + DATA55 (0x08, 0x09, 0x18, 0x00, 0x00), + DATA55 (0x10, 0x0c, 0x18, 0x00, 0x00), +}; +static uint32_t gnu[30] = { + DATA55 (0x00, 0x00, 0x00, 0x00, 0x00), + DATA55 (0x00, 0x01, 0x01, 0x01, 0x00), + DATA55 (0x01, 0x02, 0x02, 0x02, 0x01), + DATA55 (0x03, 0x04, 0x04, 0x04, 0x03), + DATA55 (0x07, 0x08, 0x09, 0x08, 0x07), + DATA55 (0x0e, 0x10, 0x13, 0x11, 0x0e), + DATA55 (0x1c, 0x00, 0x06, 0x02, 0x1c), + DATA55 (0x19, 0x01, 0x0d, 0x05, 0x19), + DATA55 (0x12, 0x03, 0x1a, 0x0a, 0x12), + DATA55 (0x04, 0x06, 0x15, 0x14, 0x04), + DATA55 (0x08, 0x0c, 0x0a, 0x09, 0x08), + DATA55 (0x11, 0x19, 0x15, 0x13, 0x11), + DATA55 (0x02, 0x12, 0x0a, 0x06, 0x02), + DATA55 (0x05, 0x05, 0x15, 0x0d, 0x04), + DATA55 (0x0a, 0x0a, 0x0a, 0x1a, 0x09), + DATA55 (0x14, 0x14, 0x14, 0x14, 0x13), + DATA55 (0x08, 0x08, 0x08, 0x08, 0x07), + DATA55 (0x11, 0x11, 0x11, 0x11, 0x0e), + DATA55 (0x02, 0x02, 0x02, 0x02, 0x1c), + DATA55 (0x04, 0x04, 0x04, 0x04, 0x18), + DATA55 (0x08, 0x08, 0x08, 0x08, 0x10), + DATA55 (0x11, 0x11, 0x11, 0x10, 0x01), + DATA55 (0x03, 0x03, 0x03, 0x00, 0x02), + DATA55 (0x06, 0x06, 0x06, 0x00, 0x04), + DATA55 (0x0c, 0x0c, 0x0c, 0x00, 0x08), + DATA55 (0x18, 0x18, 0x18, 0x00, 0x10), + DATA55 (0x10, 0x10, 0x10, 0x00, 0x00), + DATA55 (0x00, 0x00, 0x00, 0x00, 0x00), + DATA55 (0x00, 0x00, 0x00, 0x00, 0x00), + DATA55 (0x00, 0x00, 0x00, 0x00, 0x00), +}; int main (int argc, const char *argv[]) { + uint8_t state = 0; + (void)argc; (void)argv; chopstx_mutex_init (&mtx); chopstx_cond_init (&cnd0); - chopstx_cond_init (&cnd1); chopstx_create (PRIO_LED, __stackaddr_led, __stacksize_led, led, NULL); - chopstx_create (PRIO_BLK, __stackaddr_blk, __stacksize_blk, blk, NULL); chopstx_usec_wait (200*1000); chopstx_mutex_lock (&mtx); chopstx_cond_signal (&cnd0); - chopstx_cond_signal (&cnd1); chopstx_mutex_unlock (&mtx); while (1) { - u ^= 1; - wait_for (200*1000*6); + int i; + + if (state) + for (i = 0; i < 20; i++) + { + if (user_button ()) + state = 0; + set_led_display (l55[i]); + wait_for (500*1000); + } + else + for (i = 0; i < 30; i++) + { + if (user_button ()) + state = 1; + set_led_display (gnu[i]); + wait_for (200*1000); + } } return 0; diff --git a/example-fsm-55/hh.txt b/example-fsm-55/hh.txt new file mode 100644 index 0000000..72f51e4 --- /dev/null +++ b/example-fsm-55/hh.txt @@ -0,0 +1,59 @@ +o...o +o...o +ooooo +o...o +o...o + +..o. +.o.o. +o...o +ooooo +o...o + +ooooo +o...o +oooo. +o.... +o.... + +o...o +o...o +.ooo. +..o.. +..o.. + +.ooo. +o.... +o.... +o...o +.ooo. + +o..o. +o.o.. +ooo.. +o..o. +o...o + +ooo +.o. +.o. +.o. +ooo + +o...o 11 +oo..o 19 +o.o.o 15 +o..oo 13 +o...o 11 + +.ooo. 0e +o.... 10 +o..oo 13 +o...o 11 +.ooo. 0e + +oo +oo +oo +.. +o. diff --git a/example-fsm-55/hiroshi-ayumi.c b/example-fsm-55/hiroshi-ayumi.c new file mode 100644 index 0000000..8c47d54 --- /dev/null +++ b/example-fsm-55/hiroshi-ayumi.c @@ -0,0 +1,217 @@ +#include <stdint.h> +#include <stdlib.h> +#include <chopstx.h> + +#include "board.h" + +#define PERIPH_BASE 0x40000000 +#define APBPERIPH_BASE PERIPH_BASE +#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000) +#define AHBPERIPH_BASE (PERIPH_BASE + 0x20000) +#define AHB2PERIPH_BASE (PERIPH_BASE + 0x08000000) + +struct GPIO { + volatile uint32_t MODER; + volatile uint16_t OTYPER; + uint16_t dummy0; + volatile uint32_t OSPEEDR; + volatile uint32_t PUPDR; + volatile uint16_t IDR; + uint16_t dummy1; + volatile uint16_t ODR; + uint16_t dummy2; + volatile uint16_t BSRR; + uint16_t dummy3; + volatile uint32_t LCKR; + volatile uint32_t AFR[2]; + volatile uint16_t BRR; + uint16_t dummy4; +}; +#define GPIOA_BASE (AHB2PERIPH_BASE + 0x0000) +#define GPIOA ((struct GPIO *) GPIOA_BASE) +#define GPIOF_BASE (AHB2PERIPH_BASE + 0x1400) +#define GPIOF ((struct GPIO *) GPIOF_BASE) + +static struct GPIO *const GPIO_LED = ((struct GPIO *const) GPIO_LED_BASE); +static struct GPIO *const GPIO_OTHER = ((struct GPIO *const) GPIO_OTHER_BASE); + +static chopstx_mutex_t mtx; +static chopstx_cond_t cnd0; + +static uint8_t +user_button (void) +{ + return (GPIO_OTHER->IDR & 1) == 0; +} + +static uint8_t l_data[5]; + +static void +set_led_display (uint32_t data) +{ + l_data[0] = (data >> 0) & 0x1f; + l_data[1] = (data >> 5) & 0x1f; + l_data[2] = (data >> 10) & 0x1f; + l_data[3] = (data >> 15) & 0x1f; + l_data[4] = (data >> 20) & 0x1f; +} + + +static void +wait_for (uint32_t usec) +{ + chopstx_usec_wait (usec); +} + +static void +led_prepare_row (uint8_t col) +{ + uint16_t data = 0x1f; + + data |= ((l_data[0] & (1 << col)) ? 1 : 0) << 5; + data |= ((l_data[1] & (1 << col)) ? 1 : 0) << 6; + data |= ((l_data[2] & (1 << col)) ? 1 : 0) << 7; + data |= ((l_data[3] & (1 << col)) ? 1 : 0) << 9; + data |= ((l_data[4] & (1 << col)) ? 1 : 0) << 10; + GPIO_LED->ODR = data; +} + +static void +led_enable_column (uint8_t col) +{ + GPIO_LED->BRR = (1 << col); +} + +static void * +led (void *arg) +{ + (void)arg; + + chopstx_mutex_lock (&mtx); + chopstx_cond_wait (&cnd0, &mtx); + chopstx_mutex_unlock (&mtx); + + while (1) + { + int i; + + for (i = 0; i < 5; i++) + { + led_prepare_row (i); + led_enable_column (i); + wait_for (1000); + } + } + + return NULL; +} + +#define PRIO_LED 3 + +extern uint8_t __process1_stack_base__, __process1_stack_size__; + +const uint32_t __stackaddr_led = (uint32_t)&__process1_stack_base__; +const size_t __stacksize_led = (size_t)&__process1_stack_size__; + +#define DATA55(x0,x1,x2,x3,x4) (x0<<20)|(x1<<15)|(x2<<10)|(x3<< 5)|(x4<< 0) +#define SIZE55(img) (sizeof (img) / sizeof (uint32_t)) + +static uint32_t image0[] = { + DATA55 (0x00,0x00,0x00,0x00,0x00), + DATA55 (0x00,0x01,0x00,0x00,0x00), + DATA55 (0x01,0x03,0x01,0x01,0x00), + DATA55 (0x02,0x06,0x02,0x02,0x01), + DATA55 (0x05,0x0d,0x05,0x05,0x03), + DATA55 (0x0b,0x1a,0x0a,0x0a,0x06), + DATA55 (0x16,0x14,0x14,0x14,0x0c), + DATA55 (0x0d,0x08,0x09,0x08,0x19), + DATA55 (0x1b,0x11,0x12,0x10,0x13), + DATA55 (0x17,0x03,0x04,0x00,0x07), + DATA55 (0x0f,0x06,0x09,0x01,0x0e), + DATA55 (0x1e,0x0c,0x12,0x02,0x1c), + DATA55 (0x1d,0x19,0x05,0x05,0x18), + DATA55 (0x1a,0x12,0x0a,0x0a,0x11), + DATA55 (0x14,0x04,0x14,0x14,0x03), + DATA55 (0x08,0x08,0x08,0x09,0x06), + DATA55 (0x10,0x10,0x10,0x12,0x0c), + DATA55 (0x00,0x00,0x00,0x04,0x18), + DATA55 (0x00,0x00,0x00,0x08,0x10), + DATA55 (0x00,0x00,0x00,0x10,0x00), + DATA55 (0x00,0x00,0x00,0x00,0x00), + DATA55 (0x00,0x00,0x00,0x00,0x00), + DATA55 (0x00,0x00,0x00,0x00,0x00), + DATA55 (0x00,0x00,0x00,0x00,0x00), + DATA55 (0x00,0x00,0x00,0x00,0x00), +}; + +static uint32_t image1[] = { + DATA55 (0x00,0x00,0x00,0x00,0x00), + DATA55 (0x01,0x00,0x00,0x00,0x01), + DATA55 (0x03,0x00,0x00,0x01,0x03), + DATA55 (0x07,0x01,0x01,0x03,0x06), + DATA55 (0x0f,0x02,0x02,0x06,0x0c), + DATA55 (0x1f,0x05,0x05,0x0c,0x18), + DATA55 (0x1e,0x0a,0x0a,0x18,0x11), + DATA55 (0x1d,0x14,0x14,0x10,0x03), + DATA55 (0x1b,0x08,0x08,0x00,0x07), + DATA55 (0x17,0x11,0x11,0x01,0x0f), + DATA55 (0x0e,0x02,0x02,0x02,0x1f), + DATA55 (0x1c,0x04,0x04,0x04,0x1e), + DATA55 (0x19,0x08,0x09,0x08,0x1d), + DATA55 (0x13,0x10,0x13,0x10,0x1b), + DATA55 (0x07,0x00,0x07,0x00,0x17), + DATA55 (0x0f,0x00,0x0f,0x00,0x0f), + DATA55 (0x1e,0x00,0x1e,0x00,0x1e), + DATA55 (0x1c,0x00,0x1c,0x00,0x1c), + DATA55 (0x18,0x00,0x18,0x00,0x18), + DATA55 (0x10,0x00,0x10,0x00,0x10), + DATA55 (0x00,0x00,0x00,0x00,0x00), + DATA55 (0x00,0x00,0x00,0x00,0x00), + DATA55 (0x00,0x00,0x00,0x00,0x00), + DATA55 (0x00,0x00,0x00,0x00,0x00), + DATA55 (0x00,0x00,0x00,0x00,0x00), +}; + +int +main (int argc, const char *argv[]) +{ + uint8_t state = 0; + + (void)argc; + (void)argv; + + chopstx_mutex_init (&mtx); + chopstx_cond_init (&cnd0); + + chopstx_create (PRIO_LED, __stackaddr_led, __stacksize_led, led, NULL); + + chopstx_usec_wait (200*1000); + + chopstx_mutex_lock (&mtx); + chopstx_cond_signal (&cnd0); + chopstx_mutex_unlock (&mtx); + + while (1) + { + unsigned int i; + + if (state) + for (i = 0; i < SIZE55 (image0); i++) + { + if (user_button ()) + state = 0; + set_led_display (image0[i]); + wait_for (200*1000); + } + else + for (i = 0; i < SIZE55 (image1); i++) + { + if (user_button ()) + state = 1; + set_led_display (image1[i]); + wait_for (200*1000); + } + } + + return 0; +} diff --git a/example-fsm-55/l55.txt b/example-fsm-55/l55.txt new file mode 100644 index 0000000..701248e --- /dev/null +++ b/example-fsm-55/l55.txt @@ -0,0 +1,119 @@ +_*___ 08 +__*__ 04 +***__ 1c +_____ 00 +_____ 00 + +_____ 00 +*_*__ 14 +_**__ 0c +_*___ 08 +_____ 00 + +_____ 00 +__*__ 04 +*_*__ 14 +_**__ 0c +_____ 00 + +_____ 00 +_*__ 08 +__**_ 06 +_**__ 0c +_____ 00 + +_____ 00 +__*__ 04 +___*_ 02 +_***_ 0e +_____ 00 + +_____ 00 +_____ 00 +_*_*_ 0a +__**_ 06 +__*__ 04 + +_____ 00 +_____ 00 +___*_ 02 +_*_*_ 0a +__**_ 06 + +_____ 00 +_____ 00 +__*__ 04 +___** 03 +__**_ 06 + +_____ 00 +_____ 00 + __*_ 02 +____* 01 +__*** 07 + +___*_ 02 +_____ 00 +_____ 00 +__*_* 05 +___** 03 + +___** 03 +_____ 00 +_____ 00 +____* 01 +__*_* 05 + +___** 03 +_____ 00 +_____ 00 +_ _*_ 02 +*___* 11 + +*__** 13 +_____ 00 +_____ 00 +____* 01 +*____ 10 + +*___* 11 +____* 01 +_____ 00 +_____ 00 +*__*_ 12 + +*__*_ 12 +*___* 11 +_____ 00 +_____ 00 +*____ 10 + +**___ 18 +*___* 11 +_____ 00 +_____ 00 +____* 01 + +_*___ 08 +**__* 19 +_____ 00 +_____ 00 +*____ 10 + +_*__* 09 +**___ 18 +*____ 10 +_____ 00 +_____ 00 + +_*___ 08 +_*__* 09 +**___ 18 +_____ 00 +_____ 00 + +*____ 10 +_**__ 0c +**___ 18 +_____ 00 +_____ 00 diff --git a/example-fsm-55/name.txt b/example-fsm-55/name.txt new file mode 100644 index 0000000..e54ee58 --- /dev/null +++ b/example-fsm-55/name.txt @@ -0,0 +1,287 @@ +_____ 00 +_____ 00 +_____ 00 +_____ 00 +_____ 00 + +_____ 00 +____* 01 +_____ 00 +_____ 00 +_____ 00 + +____* 01 +___** 03 +____* 01 +____* 01 +_____ 00 + +___*_ 02 +__**_ 06 +___*_ 02 +___*_ 02 +____* 01 + +__*_* 05 +_**_* 0d +__*_* 05 +__*_* 05 +___** 03 + +_*_** 0b +**_*_ 1a +_*_*_ 0a +_*_*_ 0a +__**_ 06 + +*_**_ 16 +*_*__ 14 +*_*__ 14 +*_*__ 14 +_**__ 0c + +_**_* 0d +_*___ 08 +_*__* 09 +_*___ 08 +**__* 19 + +**_** 1b +*___* 11 +*__*_ 12 +*____ 10 +*__** 13 + +*_*** 17 +___** 03 +__*__ 04 +_____ 00 +__*** 07 + +_**** 0f +__**_ 06 +_*__* 09 +____* 01 +_***_ 0e + +****_ 1e +_**__ 0c +*__*_ 12 +___*_ 02 +***__ 1c + +***_* 1d +**__* 19 +__*_* 05 +__*_* 05 +**___ 18 + +**_*_ 1a +*__*_ 12 +_*_*_ 0a +_*_*_ 0a +*___* 11 + +*_*__ 14 +__*__ 04 +*_*__ 14 +*_*__ 14 +___** 03 + +_*___ 08 +_*___ 08 +_*___ 08 +_*__* 09 +__**_ 06 + +*____ 10 +*____ 10 +*____ 10 +*__*_ 12 +_**__ 0c + +_____ 00 +_____ 00 +_____ 00 +__*__ 04 +**___ 18 + +_____ 00 +_____ 00 +_____ 00 +_*___ 08 +*____ 10 + +_____ 00 +_____ 00 +_____ 00 +*____ 10 +_____ 00 + +_____ 00 +_____ 00 +_____ 00 +_____ 00 +_____ 00 + +_____ 00 +_____ 00 +_____ 00 +_____ 00 +_____ 00 + +_____ 00 +_____ 00 +_____ 00 +_____ 00 +_____ 00 + +_____ 00 +_____ 00 +_____ 00 +_____ 00 +_____ 00 + +_____ 00 +_____ 00 +_____ 00 +_____ 00 +_____ 00 + +_____ 00 +_____ 00 +_____ 00 +_____ 00 +_____ 00 + +____* 01 +_____ 00 +_____ 00 +_____ 00 +____* 01 + +___** 03 +_____ 00 +_____ 00 +____* 01 +___** 03 + +__*** 07 +____* 01 +____* 01 +___** 03 +__**_ 06 + +_**** 0f +___*_ 02 +___*_ 02 +__**_ 06 +_**__ 0c + +***** 1f +__*_* 05 +__*_* 05 +_**__ 0c +**___ 18 + +****_ 1e +_*_*_ 0a +_*_*_ 0a +**___ 18 +*___* 11 + +***_* 1d +*_*__ 14 +*_*__ 14 +*____ 10 +___** 03 + +**_** 1b +_*___ 08 +_*___ 08 +_____ 00 +__*** 07 + +*_*** 17 +*___* 11 +*___* 11 +____* 01 +_**** 0f + +_***_ 0e +___*_ 02 +___*_ 02 +___*_ 02 +***** 1f + +***__ 1c +__*__ 04 +__*__ 04 +__*__ 04 +****_ 1e + +**__* 19 +_*___ 08 +_*__* 09 +_*___ 08 +***_* 1d + +*__** 13 +*____ 10 +*__** 13 +*____ 10 +**_** 1b + +__*** 07 +_____ 00 +__*** 07 +_____ 00 +*_*** 17 + +_**** 0f +_____ 00 +_**** 0f +_____ 00 +_**** 0f + +****_ 1e +_____ 00 +****_ 1e +_____ 00 +****_ 1e + +***__ 1c +_____ 00 +***__ 1c +_____ 00 +***__ 1c + +**___ 18 +_____ 00 +**___ 18 +_____ 00 +**___ 18 + +*____ 10 +_____ 00 +*____ 10 +_____ 00 +*____ 10 + +_____ 00 +_____ 00 +_____ 00 +_____ 00 +_____ 00 + +_____ 00 +_____ 00 +_____ 00 +_____ 00 +_____ 00 + +_____ 00 +_____ 00 +_____ 00 +_____ 00 +_____ 00 |